Tấn công và phòng thủ Bằng chứng cổ phần (PoS) của Ethereum
Những kẻ trộm và phá hoại không ngừng tìm kiếm cơ hội để tấn công phần mềm máy khách của Ethereum. Trang này phác thảo các hướng tấn công đã biết vào lớp đồng thuận của Ethereum và cách phòng thủ trước những cuộc tấn công đó. Thông tin trên trang này được phỏng theo một phiên bản chi tiết hơn (opens in a new tab).
Điều kiện tiên quyết
Yêu cầu một số kiến thức cơ bản về Bằng chứng cổ phần (PoS). Ngoài ra, sẽ rất hữu ích nếu bạn có hiểu biết cơ bản về lớp khuyến khích và thuật toán chọn nhánh của Ethereum, LMD-GHOST.
Kẻ tấn công muốn gì?
Một quan niệm sai lầm phổ biến là kẻ tấn công thành công có thể tạo ra ether mới hoặc rút cạn ether từ các tài khoản bất kỳ. Cả hai điều này đều không thể xảy ra vì tất cả các giao dịch đều được thực thi bởi tất cả các máy khách thực thi trên mạng lưới. Chúng phải thỏa mãn các điều kiện hợp lệ cơ bản (ví dụ: giao dịch được ký bằng khóa riêng tư của người gửi, người gửi có đủ số dư, v.v.) nếu không chúng sẽ đơn giản là hoàn nguyên. Có ba loại kết quả mà kẻ tấn công có thể nhắm tới trong thực tế: tổ chức lại chuỗi, tính chung cuộc kép hoặc trì hoãn tính chung cuộc.
“Tổ chức lại chuỗi” là việc sắp xếp lại các khối theo một thứ tự mới, có thể thêm hoặc bớt một số khối trong chuỗi chính tắc. Một cuộc tổ chức lại chuỗi độc hại có thể đảm bảo các khối cụ thể được đưa vào hoặc loại trừ, cho phép chi tiêu kép hoặc trích xuất giá trị bằng cách chạy trước và chạy sau các giao dịch (MEV). Tổ chức lại chuỗi cũng có thể được sử dụng để ngăn chặn một số giao dịch nhất định được đưa vào chuỗi chính tắc - một hình thức kiểm duyệt. Hình thức cực đoan nhất của tổ chức lại chuỗi là “đảo ngược tính chung cuộc”, loại bỏ hoặc thay thế các khối đã chung cuộc trước đó. Điều này chỉ có thể xảy ra nếu hơn ⅓ tổng số ether đặt cọc bị kẻ tấn công phá hủy - sự đảm bảo này được gọi là “tính chung cuộc kinh tế” - chúng ta sẽ tìm hiểu thêm về điều này sau.
Tính chung cuộc kép là tình trạng khó xảy ra nhưng nghiêm trọng, trong đó hai phân nhánh có thể đạt tính chung cuộc đồng thời, tạo ra sự chia rẽ vĩnh viễn trong Chuỗi. Về mặt lý thuyết, điều này có thể xảy ra đối với một kẻ tấn công sẵn sàng mạo hiểm 34% tổng số ether đặt cọc. Cộng đồng sẽ buộc phải phối hợp ngoài chuỗi và đi đến thống nhất về việc nên theo Chuỗi nào, điều này đòi hỏi sức mạnh ở lớp xã hội.
Một cuộc tấn công trì hoãn tính chung cuộc ngăn mạng lưới đạt được các điều kiện cần thiết để đạt tính chung cuộc cho các phần của Chuỗi. Nếu không có tính chung cuộc, rất khó để tin tưởng các ứng dụng tài chính được xây dựng trên Ethereum. Mục đích của cuộc tấn công trì hoãn tính chung cuộc có thể chỉ đơn giản là phá vỡ Ethereum thay vì thu lợi trực tiếp, trừ khi kẻ tấn công có (các) vị thế bán khống chiến lược.
Một cuộc tấn công vào lớp xã hội có thể nhằm mục đích làm suy yếu niềm tin của công chúng vào Ethereum, làm giảm giá trị của ether, giảm sự chấp nhận hoặc làm suy yếu cộng đồng Ethereum để khiến việc phối hợp ngoài băng tần (out-of-band) trở nên khó khăn hơn.
Sau khi đã xác định lý do tại sao một kẻ thù có thể tấn công Ethereum, các phần tiếp theo sẽ xem xét cách thức chúng có thể thực hiện điều đó.
Các phương thức tấn công
Các cuộc tấn công Lớp 0
Trước hết, những cá nhân không tích cực tham gia vào Ethereum (bằng cách chạy phần mềm máy khách) có thể tấn công bằng cách nhắm mục tiêu vào lớp xã hội (Lớp 0). Lớp 0 là nền tảng mà Ethereum được xây dựng trên đó, và do vậy nó đại diện cho một bề mặt tiềm năng cho các cuộc tấn công với những hậu quả lan rộng qua phần còn lại của ngăn xếp. Một số ví dụ có thể bao gồm:
-
Một chiến dịch thông tin sai lệch có thể làm xói mòn niềm tin của cộng đồng vào lộ trình của Ethereum, các nhóm nhà phát triển, ứng dụng, v.v. Điều này sau đó có thể làm giảm số lượng cá nhân sẵn sàng tham gia bảo mật mạng lưới, làm suy giảm cả sự phi tập trung và an ninh kinh tế tiền mã hóa.
-
Các cuộc tấn công có chủ đích và/hoặc sự đe dọa nhắm vào cộng đồng nhà phát triển. Điều này có thể dẫn đến việc các nhà phát triển tự nguyện thoát và làm chậm tiến độ của Ethereum.
-
Quy định quá mức cũng có thể được coi là một cuộc tấn công vào Lớp 0, vì nó có thể nhanh chóng làm giảm động lực tham gia và áp dụng.
-
Sự xâm nhập của những tác nhân có kiến thức nhưng có ác ý vào cộng đồng nhà phát triển với mục đích làm chậm tiến độ bằng cách sa đà vào các cuộc thảo luận vô bổ (bike-shedding), trì hoãn các quyết định quan trọng, tạo thư rác, v.v.
-
Hối lộ những nhân vật chủ chốt trong hệ sinh thái Ethereum để gây ảnh hưởng đến việc ra quyết định.
Điều làm cho những cuộc tấn công này đặc biệt nguy hiểm là trong nhiều trường hợp, chúng đòi hỏi rất ít vốn hoặc bí quyết kỹ thuật. Một cuộc tấn công Lớp 0 có thể là một hệ số nhân đối với một cuộc tấn công kinh tế tiền mã hóa. Ví dụ: nếu việc kiểm duyệt hoặc đảo ngược tính chung cuộc đạt được bởi một bên liên quan nắm giữ đa số có ác ý, việc làm suy yếu lớp xã hội có thể khiến việc phối hợp phản ứng của cộng đồng ngoài băng tần trở nên khó khăn hơn.
Việc phòng thủ trước các cuộc tấn công Lớp 0 có lẽ không hề đơn giản, nhưng một số nguyên tắc cơ bản có thể được thiết lập. Một là duy trì tỷ lệ tín hiệu trên nhiễu (signal-to-noise ratio) tổng thể cao đối với thông tin công khai về Ethereum, được tạo ra và truyền bá bởi các thành viên trung thực của cộng đồng thông qua blog, máy chủ Discord, thông số kỹ thuật có chú thích, sách, podcast và YouTube. Tại ethereum.org, chúng tôi cố gắng hết sức để duy trì thông tin chính xác và dịch nó sang càng nhiều ngôn ngữ càng tốt. Làm ngập tràn một không gian bằng thông tin chất lượng cao và meme là một cách phòng thủ hiệu quả chống lại thông tin sai lệch.
Một sự củng cố quan trọng khác chống lại các cuộc tấn công lớp xã hội là một tuyên bố sứ mệnh và Giao thức Quản trị rõ ràng. Ethereum đã định vị mình là nhà vô địch về sự phi tập trung và bảo mật trong số các lớp 1 (l1) hợp đồng thông minh, đồng thời cũng đánh giá cao khả năng mở rộng và tính bền vững. Bất kể những bất đồng nào nảy sinh trong cộng đồng Ethereum, những nguyên tắc cốt lõi này đều bị tổn hại ở mức tối thiểu. Việc đánh giá một câu chuyện dựa trên các nguyên tắc cốt lõi này và xem xét chúng qua các vòng đánh giá liên tiếp trong quy trình EIP (Đề xuất Cải tiến Ethereum), có thể giúp cộng đồng phân biệt được tác nhân tốt và xấu, đồng thời hạn chế phạm vi để các tác nhân độc hại ảnh hưởng đến hướng đi tương lai của Ethereum.
Cuối cùng, điều quan trọng là cộng đồng Ethereum vẫn cởi mở và chào đón tất cả những người tham gia. Một cộng đồng có những người gác cổng và tính độc quyền là một cộng đồng đặc biệt dễ bị tấn công xã hội vì rất dễ xây dựng những câu chuyện “chúng ta và bọn họ”. Chủ nghĩa bộ lạc và chủ nghĩa tối đa độc hại làm tổn thương cộng đồng và xói mòn bảo mật Lớp 0. Những người dùng Ethereum có quyền lợi gắn liền với bảo mật của mạng lưới nên xem hành vi của họ trên mạng và trong thế giới thực (meatspace) như một sự đóng góp trực tiếp vào bảo mật Lớp 0 của Ethereum.
Tấn công Giao thức
Bất kỳ ai cũng có thể chạy phần mềm máy khách của Ethereum. Để thêm một trình xác thực vào máy khách, người dùng được yêu cầu đặt cọc 32 ether vào hợp đồng tiền gửi. Một trình xác thực cho phép người dùng tích cực tham gia vào bảo mật mạng lưới của Ethereum bằng cách đề xuất và chứng thực các khối mới. Trình xác thực hiện có tiếng nói mà họ có thể sử dụng để tác động đến nội dung tương lai của Chuỗi khối - họ có thể làm như vậy một cách trung thực và gia tăng lượng ether của mình thông qua phần thưởng hoặc họ có thể cố gắng thao túng quy trình vì lợi ích riêng của mình, gây rủi ro cho khoản đặt cọc của họ. Một cách để tiến hành một cuộc tấn công là tích lũy một tỷ lệ lớn hơn trong tổng số tiền đặt cọc và sau đó sử dụng nó để bỏ phiếu vượt qua các trình xác thực trung thực. Tỷ lệ khoản đặt cọc do kẻ tấn công kiểm soát càng lớn thì quyền bỏ phiếu của chúng càng lớn, đặc biệt là ở một số cột mốc kinh tế nhất định mà chúng ta sẽ khám phá sau. Tuy nhiên, hầu hết những kẻ tấn công sẽ không thể tích lũy đủ ether để tấn công theo cách này, vì vậy thay vào đó, chúng phải sử dụng các kỹ thuật tinh vi để thao túng đa số trung thực hành động theo một cách nhất định.
Về cơ bản, tất cả các cuộc tấn công với khoản đặt cọc nhỏ đều là những biến thể tinh vi của hai loại hành vi sai trái của trình xác thực: hoạt động kém (không chứng thực/đề xuất hoặc làm như vậy muộn) hoặc hoạt động quá mức (đề xuất/chứng thực quá nhiều lần trong một khe). Ở dạng cơ bản nhất, những hành động này dễ dàng được xử lý bởi thuật toán chọn nhánh và lớp khuyến khích, nhưng có những cách thông minh để lợi dụng hệ thống nhằm mang lại lợi thế cho kẻ tấn công.
Các cuộc tấn công sử dụng lượng nhỏ ETH
tổ chức lại chuỗi
Một số bài báo đã giải thích các cuộc tấn công vào Ethereum đạt được việc tổ chức lại chuỗi hoặc trì hoãn tính chung cuộc chỉ với một tỷ lệ nhỏ trong tổng số ether đặt cọc. Các cuộc tấn công này thường dựa vào việc kẻ tấn công giữ lại một số thông tin từ các trình xác thực khác và sau đó tiết lộ nó theo một cách tinh vi nào đó và/hoặc vào một thời điểm thích hợp. Chúng thường nhằm mục đích thay thế (các) khối trung thực khỏi chuỗi chính tắc. Neuder và cộng sự 2020 (opens in a new tab) đã chỉ ra cách một trình xác thực tấn công có thể tạo và chứng thực một khối (B) cho một khe cụ thể n+1 nhưng hạn chế truyền bá nó đến các nút khác trên mạng lưới. Thay vào đó, họ giữ khối đã được chứng thực đó cho đến khe tiếp theo n+2. Một trình xác thực trung thực đề xuất một khối (C) cho khe n+2. Gần như đồng thời, kẻ tấn công có thể tiết lộ khối bị giữ lại của họ (B) và các chứng thực bị giữ lại cho nó, đồng thời cũng chứng thực B là đầu của Chuỗi bằng các phiếu bầu của họ cho khe n+2, từ chối một cách hiệu quả sự tồn tại của khối trung thực C. Khi khối trung thực D được tiết lộ, thuật toán chọn nhánh thấy D xây dựng trên B nặng hơn D xây dựng trên C. Do đó, kẻ tấn công đã xoay sở để loại bỏ khối trung thực C trong khe n+2 khỏi chuỗi chính tắc bằng cách sử dụng tổ chức lại chuỗi 1 khối ex ante (trước sự kiện). Một kẻ tấn công với 34% (opens in a new tab) khoản đặt cọc có cơ hội rất tốt để thành công trong cuộc tấn công này, như được giải thích trong ghi chú này (opens in a new tab). Tuy nhiên, về mặt lý thuyết, cuộc tấn công này có thể được thử nghiệm với các khoản đặt cọc nhỏ hơn. Neuder và cộng sự 2020 (opens in a new tab) đã mô tả cuộc tấn công này hoạt động với 30% khoản đặt cọc, nhưng sau đó nó được chứng minh là khả thi với 2% tổng số tiền đặt cọc (opens in a new tab) và sau đó lại khả thi đối với một trình xác thực duy nhất (opens in a new tab) sử dụng các kỹ thuật cân bằng mà chúng ta sẽ xem xét trong phần tiếp theo.
Sơ đồ khái niệm về cuộc tấn công tổ chức lại chuỗi một khối được mô tả ở trên (phỏng theo https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair (opens in a new tab))
Một cuộc tấn công tinh vi hơn có thể chia tập hợp trình xác thực trung thực thành các nhóm rời rạc có quan điểm khác nhau về đầu của Chuỗi. Đây được gọi là cuộc tấn công cân bằng. Kẻ tấn công chờ đợi cơ hội để đề xuất một khối, và khi cơ hội đến, chúng xác nhận nước đôi và đề xuất hai khối. Chúng gửi một khối cho một nửa tập hợp trình xác thực trung thực và khối kia cho nửa còn lại. Việc xác nhận nước đôi sẽ bị phát hiện bởi thuật toán chọn nhánh và người đề xuất khối sẽ bị phạt cắt giảm và bị đẩy khỏi mạng lưới, nhưng hai khối vẫn sẽ tồn tại và sẽ có khoảng một nửa tập hợp trình xác thực chứng thực cho mỗi phân nhánh. Trong khi đó, các trình xác thực độc hại còn lại giữ lại các chứng thực của họ. Sau đó, bằng cách tiết lộ có chọn lọc các chứng thực ủng hộ phân nhánh này hay phân nhánh khác cho vừa đủ số lượng trình xác thực ngay khi thuật toán chọn nhánh thực thi, chúng làm nghiêng trọng lượng tích lũy của các chứng thực có lợi cho phân nhánh này hay phân nhánh khác. Điều này có thể tiếp tục vô thời hạn, với các trình xác thực tấn công duy trì sự phân chia đồng đều các trình xác thực trên hai phân nhánh. Vì không phân nhánh nào có thể thu hút được đa số tuyệt đối 2/3, mạng lưới sẽ không đạt tính chung cuộc.
Các cuộc tấn công nảy (Bouncing attacks) cũng tương tự. Các phiếu bầu lại bị giữ lại bởi các trình xác thực tấn công. Thay vì tiết lộ các phiếu bầu để giữ sự phân chia đồng đều giữa hai phân nhánh, chúng sử dụng phiếu bầu của mình vào những thời điểm thích hợp để chứng minh hợp lệ các điểm kiểm tra luân phiên giữa phân nhánh A và phân nhánh B. Sự lật lọng trong việc chứng minh hợp lệ giữa hai phân nhánh này ngăn cản việc có các cặp điểm kiểm tra nguồn và đích đã được chứng minh hợp lệ có thể đạt tính chung cuộc trên một trong hai Chuỗi, làm đình trệ tính chung cuộc.
Cả hai cuộc tấn công nảy và cân bằng đều dựa vào việc kẻ tấn công có khả năng kiểm soát rất tinh vi thời gian thông điệp trên toàn mạng lưới, điều này khó có thể xảy ra. Tuy nhiên, các biện pháp phòng thủ được tích hợp vào Giao thức dưới dạng trọng số bổ sung được trao cho các thông điệp nhanh chóng so với các thông điệp chậm. Điều này được gọi là tăng cường trọng số người đề xuất (opens in a new tab). Để phòng thủ trước các cuộc tấn công nảy, thuật toán chọn nhánh đã được cập nhật để điểm kiểm tra đã được chứng minh hợp lệ mới nhất chỉ có thể chuyển sang điểm kiểm tra của một Chuỗi thay thế trong 1/3 số khe đầu tiên trong mỗi Kỷ nguyên (opens in a new tab). Điều kiện này ngăn kẻ tấn công tiết kiệm phiếu bầu để triển khai sau - thuật toán chọn nhánh chỉ đơn giản là trung thành với điểm kiểm tra mà nó đã chọn trong 1/3 đầu tiên của Kỷ nguyên, trong thời gian đó hầu hết các trình xác thực trung thực đã bỏ phiếu.
Kết hợp lại, các biện pháp này tạo ra một kịch bản trong đó một người đề xuất khối trung thực phát ra khối của họ rất nhanh sau khi bắt đầu khe, sau đó có một khoảng thời gian ~1/3 khe (4 giây) mà khối mới đó có thể khiến thuật toán chọn nhánh chuyển sang một Chuỗi khác. Sau cùng thời hạn đó, các chứng thực đến từ các trình xác thực chậm sẽ bị giảm trọng số so với những chứng thực đến sớm hơn. Điều này đặc biệt ưu ái những người đề xuất và trình xác thực nhanh chóng trong việc xác định đầu của Chuỗi và làm giảm đáng kể khả năng thành công của một cuộc tấn công cân bằng hoặc nảy.
Điều đáng chú ý là, chỉ riêng việc tăng cường người đề xuất chỉ phòng thủ trước các “cuộc tổ chức lại chuỗi rẻ tiền”, tức là những cuộc tấn công được thử nghiệm bởi một kẻ tấn công có khoản đặt cọc nhỏ. Trên thực tế, bản thân việc tăng cường người đề xuất có thể bị lợi dụng bởi các bên liên quan lớn hơn. Các tác giả của bài đăng này (opens in a new tab) mô tả cách một kẻ tấn công với 7% khoản đặt cọc có thể triển khai phiếu bầu của họ một cách có chiến lược để lừa các trình xác thực trung thực xây dựng trên phân nhánh của họ, tổ chức lại chuỗi để loại bỏ một khối trung thực. Cuộc tấn công này được nghĩ ra với giả định các điều kiện độ trễ lý tưởng rất khó xảy ra. Tỷ lệ cược vẫn rất thấp đối với kẻ tấn công, và khoản đặt cọc lớn hơn cũng có nghĩa là nhiều vốn gặp rủi ro hơn và một sự răn đe kinh tế mạnh mẽ hơn.
Một cuộc tấn công cân bằng nhắm mục tiêu cụ thể vào quy tắc LMD (opens in a new tab) cũng đã được đề xuất, được cho là khả thi bất chấp việc tăng cường người đề xuất. Kẻ tấn công thiết lập hai Chuỗi cạnh tranh bằng cách xác nhận nước đôi đề xuất khối của họ và truyền bá mỗi khối đến khoảng một nửa mạng lưới, thiết lập sự cân bằng xấp xỉ giữa các phân nhánh. Sau đó, các trình xác thực thông đồng xác nhận nước đôi phiếu bầu của họ, căn thời gian sao cho một nửa mạng lưới nhận được phiếu bầu của họ cho Phân nhánh A trước và nửa còn lại nhận được phiếu bầu của họ cho Phân nhánh B trước. Vì quy tắc LMD loại bỏ chứng thực thứ hai và chỉ giữ lại chứng thực đầu tiên cho mỗi trình xác thực, một nửa mạng lưới thấy phiếu bầu cho A và không có phiếu nào cho B, nửa còn lại thấy phiếu bầu cho B và không có phiếu nào cho A. Các tác giả mô tả quy tắc LMD mang lại cho kẻ thù “sức mạnh đáng kể” để tiến hành một cuộc tấn công cân bằng.
Hướng tấn công LMD này đã bị đóng lại bằng cách cập nhật thuật toán chọn nhánh (opens in a new tab) để nó loại bỏ hoàn toàn các trình xác thực xác nhận nước đôi khỏi việc xem xét chọn nhánh. Các trình xác thực xác nhận nước đôi cũng bị thuật toán chọn nhánh giảm bớt ảnh hưởng trong tương lai. Điều này ngăn chặn cuộc tấn công cân bằng được phác thảo ở trên đồng thời duy trì khả năng phục hồi trước các cuộc tấn công tuyết lở (avalanche attacks).
Một loại tấn công khác, được gọi là các cuộc tấn công tuyết lở (opens in a new tab), đã được mô tả trong một bài báo tháng 3 năm 2022 (opens in a new tab). Để tiến hành một cuộc tấn công tuyết lở, kẻ tấn công cần kiểm soát một số người đề xuất khối liên tiếp. Trong mỗi khe đề xuất khối, kẻ tấn công giữ lại khối của họ, thu thập chúng cho đến khi Chuỗi trung thực đạt được trọng lượng cây con bằng với các khối bị giữ lại. Sau đó, các khối bị giữ lại được tiết lộ để chúng xác nhận nước đôi ở mức tối đa. Các tác giả cho rằng việc tăng cường người đề xuất - biện pháp phòng thủ chính chống lại các cuộc tấn công cân bằng và nảy - không bảo vệ khỏi một số biến thể của cuộc tấn công tuyết lở. Tuy nhiên, các tác giả cũng chỉ chứng minh cuộc tấn công trên một phiên bản lý tưởng hóa cao của thuật toán chọn nhánh của Ethereum (họ đã sử dụng GHOST mà không có LMD).
Cuộc tấn công tuyết lở được giảm thiểu bởi phần LMD của thuật toán chọn nhánh LMD-GHOST. LMD có nghĩa là “được thúc đẩy bởi thông điệp mới nhất” (latest-message-driven) và nó đề cập đến một bảng được giữ bởi mỗi trình xác thực chứa thông điệp mới nhất nhận được từ các trình xác thực khác. Trường đó chỉ được cập nhật nếu thông điệp mới đến từ một khe muộn hơn khe đã có trong bảng cho một trình xác thực cụ thể. Trong thực tế, điều này có nghĩa là trong mỗi khe, thông điệp đầu tiên nhận được là thông điệp mà nó chấp nhận và bất kỳ thông điệp bổ sung nào đều là xác nhận nước đôi cần bị bỏ qua. Nói cách khác, các máy khách đồng thuận không tính các xác nhận nước đôi - chúng sử dụng thông điệp đến đầu tiên từ mỗi trình xác thực và các xác nhận nước đôi đơn giản là bị loại bỏ, ngăn chặn các cuộc tấn công tuyết lở.
Có một số nâng cấp tiềm năng khác trong tương lai đối với quy tắc chọn nhánh có thể bổ sung vào bảo mật do tăng cường người đề xuất cung cấp. Một là hợp nhất chế độ xem (view-merge) (opens in a new tab), trong đó những người chứng thực đóng băng chế độ xem của họ về lựa chọn nhánh n giây trước khi bắt đầu một khe và người đề xuất sau đó giúp đồng bộ hóa chế độ xem của Chuỗi trên toàn mạng lưới. Một nâng cấp tiềm năng khác là tính chung cuộc một khe (single-slot finality) (opens in a new tab), bảo vệ chống lại các cuộc tấn công dựa trên thời gian thông điệp bằng cách đạt tính chung cuộc cho Chuỗi chỉ sau một khe.
Trì hoãn tính chung cuộc
Cùng một bài báo (opens in a new tab) lần đầu tiên mô tả cuộc tấn công tổ chức lại chuỗi một khối chi phí thấp cũng mô tả một cuộc tấn công trì hoãn tính chung cuộc (còn gọi là “lỗi tính sống động”) dựa vào việc kẻ tấn công là người đề xuất khối cho một khối ranh giới Kỷ nguyên. Điều này rất quan trọng vì các khối ranh giới Kỷ nguyên này trở thành các điểm kiểm tra mà Casper FFG sử dụng để đạt tính chung cuộc cho các phần của Chuỗi. Kẻ tấn công chỉ đơn giản là giữ lại khối của họ cho đến khi đủ số lượng trình xác thực trung thực sử dụng phiếu bầu FFG của họ ủng hộ khối ranh giới Kỷ nguyên trước đó làm mục tiêu chung cuộc hiện tại. Sau đó, chúng tiết lộ khối bị giữ lại của mình. Chúng chứng thực cho khối của mình và các trình xác thực trung thực còn lại cũng làm như vậy, tạo ra các phân nhánh với các điểm kiểm tra mục tiêu khác nhau. Nếu chúng căn thời gian vừa đúng, chúng sẽ ngăn chặn tính chung cuộc vì sẽ không có đa số tuyệt đối 2/3 chứng thực cho một trong hai phân nhánh. Khoản đặt cọc càng nhỏ, thời gian càng cần phải chính xác vì kẻ tấn công kiểm soát trực tiếp ít chứng thực hơn và tỷ lệ kẻ tấn công kiểm soát trình xác thực đề xuất một khối ranh giới Kỷ nguyên nhất định càng thấp.
Các cuộc tấn công tầm xa
Cũng có một loại tấn công đặc trưng cho các Chuỗi khối Bằng chứng cổ phần (PoS) liên quan đến một trình xác thực đã tham gia vào khối nguyên thủy duy trì một phân nhánh riêng biệt của Chuỗi khối cùng với phân nhánh trung thực, cuối cùng thuyết phục tập hợp trình xác thực trung thực chuyển sang nó vào một thời điểm thích hợp muộn hơn nhiều. Loại tấn công này không thể xảy ra trên Ethereum do công cụ tính chung cuộc đảm bảo tất cả các trình xác thực đồng ý về trạng thái của Chuỗi trung thực theo các khoảng thời gian đều đặn (“điểm kiểm tra”). Cơ chế đơn giản này vô hiệu hóa những kẻ tấn công tầm xa vì các máy khách Ethereum đơn giản là sẽ không tổ chức lại chuỗi các khối đã chung cuộc. Các nút mới tham gia mạng lưới thực hiện điều này bằng cách tìm một Mã băm trạng thái gần đây đáng tin cậy (một điểm kiểm tra “tính chủ quan yếu (opens in a new tab)”) và sử dụng nó như một khối nguyên thủy giả để xây dựng trên đó. Điều này tạo ra một ‘cổng tin cậy’ cho một nút mới tham gia mạng lưới trước khi nó có thể bắt đầu tự xác minh thông tin.
Từ chối dịch vụ
Cơ chế PoS của Ethereum chọn một trình xác thực duy nhất từ tổng số tập hợp trình xác thực làm người đề xuất khối trong mỗi khe. Điều này có thể được tính toán bằng cách sử dụng một hàm được biết đến công khai và kẻ thù có thể xác định người đề xuất khối tiếp theo trước một chút so với đề xuất khối của họ. Sau đó, kẻ tấn công có thể gửi thư rác (spam) cho người đề xuất khối để ngăn họ trao đổi thông tin với các đồng đẳng của mình. Đối với phần còn lại của mạng lưới, có vẻ như người đề xuất khối đã ngoại tuyến và khe sẽ đơn giản là bị trống. Đây có thể là một hình thức kiểm duyệt đối với các trình xác thực cụ thể, ngăn họ thêm thông tin vào Chuỗi khối. Việc triển khai bầu cử lãnh đạo bí mật duy nhất (SSLE) hoặc bầu cử lãnh đạo bí mật không duy nhất sẽ giảm thiểu rủi ro DoS vì chỉ người đề xuất khối mới biết họ đã được chọn và việc lựa chọn không thể biết trước. Điều này chưa được triển khai, nhưng là một lĩnh vực nghiên cứu và phát triển (opens in a new tab) tích cực.
Tất cả những điều này chỉ ra một thực tế là rất khó để tấn công thành công Ethereum với một khoản đặt cọc nhỏ. Các cuộc tấn công khả thi đã được mô tả ở đây yêu cầu một thuật toán chọn nhánh lý tưởng hóa, các điều kiện mạng lưới khó xảy ra hoặc các hướng tấn công đã bị đóng lại bằng các bản vá tương đối nhỏ cho phần mềm máy khách. Tất nhiên, điều này không loại trừ khả năng tồn tại các lỗ hổng zero-day trong thực tế, nhưng nó chứng minh rào cản cực kỳ cao về năng lực kỹ thuật, kiến thức lớp đồng thuận và sự may mắn cần thiết để một kẻ tấn công có khoản đặt cọc thiểu số có thể đạt hiệu quả. Từ góc độ của kẻ tấn công, đặt cược tốt nhất của chúng có thể là tích lũy càng nhiều ether càng tốt và quay lại với một tỷ lệ lớn hơn trong tổng số tiền đặt cọc.
Kẻ tấn công sử dụng >= 33% tổng số tiền đặt cọc
Tất cả các cuộc tấn công được đề cập trước đó trong bài viết này trở nên có nhiều khả năng thành công hơn khi kẻ tấn công có nhiều ether đặt cọc hơn để bỏ phiếu và nhiều trình xác thực hơn có thể được chọn để đề xuất khối trong mỗi khe. Do đó, một trình xác thực độc hại có thể nhằm mục đích kiểm soát càng nhiều ether đặt cọc càng tốt.
33% số ether đặt cọc là một tiêu chuẩn cho kẻ tấn công vì với bất kỳ số lượng nào lớn hơn mức này, chúng có khả năng ngăn Chuỗi đạt tính chung cuộc mà không cần phải kiểm soát tinh vi hành động của các trình xác thực khác. Chúng có thể đơn giản là cùng nhau biến mất. Nếu 1/3 hoặc nhiều hơn số ether đặt cọc đang chứng thực một cách ác ý hoặc không chứng thực, thì đa số tuyệt đối 2/3 không thể tồn tại và Chuỗi không thể đạt tính chung cuộc. Biện pháp phòng thủ chống lại điều này là rò rỉ do không hoạt động. Rò rỉ do không hoạt động xác định những trình xác thực không chứng thực hoặc chứng thực trái với đa số. Số ether đặt cọc thuộc sở hữu của các trình xác thực không chứng thực này dần dần bị rút cạn cho đến khi cuối cùng chúng đại diện chung cho ít hơn 1/3 tổng số để Chuỗi có thể đạt tính chung cuộc trở lại.
Mục đích của rò rỉ do không hoạt động là để Chuỗi đạt tính chung cuộc trở lại. Tuy nhiên, kẻ tấn công cũng mất một phần ether đặt cọc của chúng. Sự không hoạt động dai dẳng trên các trình xác thực đại diện cho 33% tổng số ether đặt cọc là rất tốn kém mặc dù các trình xác thực không bị phạt cắt giảm.
Giả sử rằng mạng lưới Ethereum là không đồng bộ (tức là có sự chậm trễ giữa các thông điệp được gửi và nhận), một kẻ tấn công kiểm soát 34% tổng số tiền đặt cọc có thể gây ra tính chung cuộc kép. Điều này là do kẻ tấn công có thể xác nhận nước đôi khi chúng được chọn làm người sản xuất khối, sau đó bỏ phiếu kép với tất cả các trình xác thực của chúng. Điều này tạo ra một tình huống trong đó tồn tại một phân nhánh của Chuỗi khối, mỗi phân nhánh có 34% số ether đặt cọc bỏ phiếu cho nó. Mỗi phân nhánh chỉ yêu cầu 50% số trình xác thực còn lại bỏ phiếu ủng hộ để cả hai phân nhánh được hỗ trợ bởi đa số tuyệt đối, trong trường hợp đó cả hai Chuỗi đều có thể đạt tính chung cuộc (vì 34% trình xác thực của kẻ tấn công + một nửa của 66% còn lại = 67% trên mỗi phân nhánh). Mỗi khối cạnh tranh sẽ phải được nhận bởi khoảng 50% các trình xác thực trung thực, vì vậy cuộc tấn công này chỉ khả thi khi kẻ tấn công có một mức độ kiểm soát nhất định đối với thời gian truyền thông điệp trên mạng lưới để chúng có thể đẩy một nửa số trình xác thực trung thực vào mỗi Chuỗi. Kẻ tấn công nhất thiết sẽ phá hủy toàn bộ khoản đặt cọc của chúng (34% của ~10 triệu ether với tập hợp trình xác thực ngày nay) để đạt được tính chung cuộc kép này vì 34% trình xác thực của chúng sẽ bỏ phiếu kép đồng thời - một hành vi vi phạm có thể bị phạt cắt giảm với hình phạt tương quan tối đa. Biện pháp phòng thủ chống lại cuộc tấn công này là chi phí rất lớn để phá hủy 34% tổng số ether đặt cọc. Việc phục hồi sau cuộc tấn công này sẽ yêu cầu cộng đồng Ethereum phối hợp “ngoài băng tần” và đồng ý theo một trong hai phân nhánh và bỏ qua phân nhánh kia.
Kẻ tấn công sử dụng ~50% tổng số tiền đặt cọc
Ở mức 50% số ether đặt cọc, một nhóm trình xác thực tinh quái về mặt lý thuyết có thể chia Chuỗi thành hai phân nhánh có kích thước bằng nhau và sau đó chỉ cần sử dụng toàn bộ 50% khoản đặt cọc của họ để bỏ phiếu trái ngược với tập hợp trình xác thực trung thực, qua đó duy trì hai phân nhánh và ngăn chặn tính chung cuộc. Rò rỉ do không hoạt động trên cả hai phân nhánh cuối cùng sẽ dẫn đến việc cả hai Chuỗi đạt tính chung cuộc. Tại thời điểm này, lựa chọn duy nhất là dựa vào khôi phục xã hội.
Rất khó có khả năng một nhóm trình xác thực thù địch có thể liên tục kiểm soát chính xác 50% tổng số tiền đặt cọc do mức độ biến động về số lượng trình xác thực trung thực, độ trễ mạng lưới, v.v. - chi phí khổng lồ để tiến hành một cuộc tấn công như vậy kết hợp với khả năng thành công thấp dường như là một sự răn đe mạnh mẽ đối với một kẻ tấn công hợp lý, đặc biệt là khi một khoản đầu tư bổ sung nhỏ để có được hơn 50% sẽ mở khóa nhiều sức mạnh hơn.
Ở mức >50% tổng số tiền đặt cọc, kẻ tấn công có thể thống trị thuật toán chọn nhánh. Trong trường hợp này, kẻ tấn công sẽ có thể chứng thực với đa số phiếu bầu, mang lại cho chúng đủ quyền kiểm soát để thực hiện các cuộc tổ chức lại chuỗi ngắn mà không cần phải đánh lừa các máy khách trung thực. Các trình xác thực trung thực sẽ làm theo vì thuật toán chọn nhánh của họ cũng sẽ thấy Chuỗi được kẻ tấn công ưu ái là nặng nhất, vì vậy Chuỗi có thể đạt tính chung cuộc. Điều này cho phép kẻ tấn công kiểm duyệt một số giao dịch nhất định, thực hiện các cuộc tổ chức lại chuỗi tầm ngắn và trích xuất MEV tối đa bằng cách sắp xếp lại các khối theo hướng có lợi cho chúng. Biện pháp phòng thủ chống lại điều này là chi phí khổng lồ của một khoản đặt cọc đa số (hiện tại chỉ dưới 19 tỷ USD) bị kẻ tấn công đặt vào rủi ro vì lớp xã hội có khả năng sẽ can thiệp và áp dụng một phân nhánh thiểu số trung thực, làm giảm đáng kể giá trị khoản đặt cọc của kẻ tấn công.
Kẻ tấn công sử dụng >=66% tổng số tiền đặt cọc
Một kẻ tấn công với 66% hoặc nhiều hơn tổng số ether đặt cọc có thể đạt tính chung cuộc cho Chuỗi ưa thích của chúng mà không cần phải ép buộc bất kỳ trình xác thực trung thực nào. Kẻ tấn công có thể đơn giản là bỏ phiếu cho phân nhánh ưa thích của chúng và sau đó đạt tính chung cuộc cho nó, đơn giản vì chúng có thể bỏ phiếu với một đa số tuyệt đối không trung thực. Là bên liên quan nắm giữ đa số tuyệt đối, kẻ tấn công sẽ luôn kiểm soát nội dung của các khối đã chung cuộc, với quyền chi tiêu, tua lại và chi tiêu lại, kiểm duyệt một số giao dịch nhất định và tổ chức lại chuỗi theo ý muốn. Bằng cách mua thêm ether để kiểm soát 66% thay vì 51%, kẻ tấn công đang thực sự mua khả năng thực hiện các cuộc tổ chức lại chuỗi ex post (sau sự kiện) và đảo ngược tính chung cuộc (tức là thay đổi quá khứ cũng như kiểm soát tương lai). Các biện pháp phòng thủ thực sự duy nhất ở đây là chi phí khổng lồ của 66% tổng số ether đặt cọc và tùy chọn dựa vào lớp xã hội để phối hợp áp dụng một phân nhánh thay thế. Chúng ta có thể khám phá điều này chi tiết hơn trong phần tiếp theo.
Con người: phòng tuyến cuối cùng
Nếu các trình xác thực không trung thực xoay sở để đạt tính chung cuộc cho phiên bản Chuỗi ưa thích của họ, cộng đồng Ethereum sẽ bị đặt vào một tình huống khó khăn. Chuỗi chính tắc bao gồm một phần không trung thực được nướng vào lịch sử của nó, trong khi các trình xác thực trung thực có thể bị trừng phạt vì chứng thực cho một Chuỗi (trung thực) thay thế. Lưu ý rằng một Chuỗi đã chung cuộc nhưng không chính xác cũng có thể phát sinh từ một lỗi trong một máy khách đa số. Cuối cùng, phương án dự phòng cuối cùng là dựa vào lớp xã hội - Lớp 0 - để giải quyết tình hình.
Một trong những điểm mạnh của đồng thuận PoS của Ethereum là có một loạt các chiến lược phòng thủ (opens in a new tab) mà cộng đồng có thể sử dụng khi đối mặt với một cuộc tấn công. Một phản ứng tối thiểu có thể là buộc các trình xác thực của kẻ tấn công thoát khỏi mạng lưới mà không có bất kỳ hình phạt bổ sung nào. Để tham gia lại mạng lưới, kẻ tấn công sẽ phải tham gia vào một hàng đợi sự kích hoạt đảm bảo tập hợp trình xác thực phát triển dần dần. Ví dụ: việc thêm đủ trình xác thực để tăng gấp đôi số lượng ether đặt cọc mất khoảng 200 ngày, thực sự mua cho các trình xác thực trung thực 200 ngày trước khi kẻ tấn công có thể thử một cuộc tấn công 51% khác. Tuy nhiên, cộng đồng cũng có thể quyết định trừng phạt kẻ tấn công khắc nghiệt hơn, bằng cách thu hồi các phần thưởng trong quá khứ hoặc đốt một phần (lên đến 100%) vốn đặt cọc của chúng.
Bất kể hình phạt áp dụng cho kẻ tấn công là gì, cộng đồng cũng phải cùng nhau quyết định xem Chuỗi không trung thực, mặc dù là Chuỗi được thuật toán chọn nhánh được mã hóa trong các máy khách Ethereum ưu ái, trên thực tế có không hợp lệ hay không và cộng đồng nên xây dựng trên Chuỗi trung thực thay thế. Các trình xác thực trung thực có thể cùng nhau đồng ý xây dựng trên một phân nhánh được cộng đồng chấp nhận của Chuỗi khối Ethereum, ví dụ, có thể đã phân nhánh khỏi chuỗi chính tắc trước khi cuộc tấn công bắt đầu hoặc đã buộc loại bỏ các trình xác thực của kẻ tấn công. Các trình xác thực trung thực sẽ được khuyến khích xây dựng trên Chuỗi này vì họ sẽ tránh được các hình phạt áp dụng cho họ do không (một cách đúng đắn) chứng thực cho Chuỗi của kẻ tấn công. Các sàn giao dịch, cổng nạp tiền (on-ramp) và các ứng dụng được xây dựng trên Ethereum có lẽ sẽ thích ở trên Chuỗi trung thực hơn và sẽ theo các trình xác thực trung thực đến Chuỗi khối trung thực.
Tuy nhiên, đây sẽ là một thách thức Quản trị đáng kể. Một số người dùng và trình xác thực chắc chắn sẽ bị thiệt thòi do việc chuyển trở lại Chuỗi trung thực, các giao dịch trong các khối được xác thực sau cuộc tấn công có khả năng bị đảo ngược, làm gián đoạn lớp ứng dụng và nó đơn giản là làm suy yếu đạo đức của một số người dùng có xu hướng tin rằng “mã là luật” (code is law). Các sàn giao dịch và ứng dụng rất có thể đã liên kết các hành động ngoài chuỗi với các giao dịch trên chuỗi mà hiện có thể bị đảo ngược, bắt đầu một loạt các sự rút lại và sửa đổi sẽ khó có thể gỡ rối một cách công bằng, đặc biệt nếu những khoản lợi bất chính đã được trộn lẫn, gửi vào tài chính phi tập trung (DeFi) hoặc các công cụ phái sinh khác với các tác động thứ cấp đối với người dùng trung thực. Chắc chắn một số người dùng, có lẽ cả những người dùng tổ chức, đã được hưởng lợi từ Chuỗi không trung thực do sự khôn ngoan hoặc do tình cờ, và có thể phản đối một phân nhánh để bảo vệ lợi ích của họ. Đã có những lời kêu gọi diễn tập phản ứng của cộng đồng đối với các cuộc tấn công >51% để có thể thực hiện nhanh chóng một biện pháp giảm thiểu phối hợp hợp lý. Có một số cuộc thảo luận hữu ích của Vitalik trên ethresear.ch tại đây (opens in a new tab) và tại đây (opens in a new tab) và trên Twitter tại đây (opens in a new tab). Mục đích của một phản ứng xã hội phối hợp nên là rất có mục tiêu và cụ thể về việc trừng phạt kẻ tấn công và giảm thiểu tác động đối với những người dùng khác.
Quản trị vốn đã là một chủ đề phức tạp. Việc quản lý phản ứng khẩn cấp Lớp 0 đối với một Chuỗi đạt tính chung cuộc không trung thực chắc chắn sẽ là một thách thức đối với cộng đồng Ethereum, nhưng nó đã xảy ra - hai lần - trong lịch sử của Ethereum).
Tuy nhiên, có một điều gì đó khá thỏa mãn khi phương án dự phòng cuối cùng nằm ở thế giới thực (meatspace). Cuối cùng, ngay cả với ngăn xếp công nghệ phi thường này ở trên chúng ta, nếu điều tồi tệ nhất xảy ra, những con người thực sự sẽ phải phối hợp để tìm lối thoát.
Tóm tắt
Trang này đã khám phá một số cách mà những kẻ tấn công có thể cố gắng khai thác Giao thức đồng thuận Bằng chứng cổ phần (PoS) của Ethereum. Tổ chức lại chuỗi và trì hoãn tính chung cuộc đã được khám phá đối với những kẻ tấn công với tỷ lệ ngày càng tăng trong tổng số ether đặt cọc. Nhìn chung, một kẻ tấn công giàu có hơn có nhiều cơ hội thành công hơn vì khoản đặt cọc của chúng chuyển thành quyền bỏ phiếu mà chúng có thể sử dụng để tác động đến nội dung của các khối trong tương lai. Ở một số ngưỡng ether đặt cọc nhất định, sức mạnh của kẻ tấn công sẽ tăng lên:
33%: trì hoãn tính chung cuộc
34%: trì hoãn tính chung cuộc, tính chung cuộc kép
51%: trì hoãn tính chung cuộc, tính chung cuộc kép, kiểm duyệt, kiểm soát tương lai của Chuỗi khối
66%: trì hoãn tính chung cuộc, tính chung cuộc kép, kiểm duyệt, kiểm soát tương lai và quá khứ của Chuỗi khối
Cũng có một loạt các cuộc tấn công tinh vi hơn đòi hỏi một lượng nhỏ ether đặt cọc nhưng dựa vào một kẻ tấn công rất tinh vi có khả năng kiểm soát tinh vi thời gian thông điệp để làm lung lay tập hợp trình xác thực trung thực theo hướng có lợi cho chúng.
Nhìn chung, bất chấp những hướng tấn công tiềm năng này, rủi ro của một cuộc tấn công thành công là thấp, chắc chắn thấp hơn so với các hệ thống Bằng chứng công việc (PoW) tương đương. Điều này là do chi phí khổng lồ của ether đặt cọc bị đặt vào rủi ro bởi một kẻ tấn công nhằm mục đích áp đảo các trình xác thực trung thực bằng quyền bỏ phiếu của chúng. Lớp khuyến khích “cây gậy và củ cà rốt” được tích hợp sẵn bảo vệ chống lại hầu hết các hành vi sai trái, đặc biệt là đối với những kẻ tấn công có khoản đặt cọc thấp. Các cuộc tấn công nảy và cân bằng tinh vi hơn cũng khó có khả năng thành công vì các điều kiện mạng lưới thực tế khiến việc kiểm soát tinh vi việc gửi thông điệp đến các tập hợp con trình xác thực cụ thể rất khó đạt được và các nhóm máy khách đã nhanh chóng đóng các hướng tấn công nảy, cân bằng và tuyết lở đã biết bằng các bản vá đơn giản.
Các cuộc tấn công 34%, 51% hoặc 66% có thể sẽ yêu cầu sự phối hợp xã hội ngoài băng tần để giải quyết. Mặc dù điều này có thể sẽ gây đau đớn cho cộng đồng, nhưng khả năng cộng đồng phản ứng ngoài băng tần là một sự răn đe mạnh mẽ đối với kẻ tấn công. Lớp xã hội Ethereum là chốt chặn cuối cùng - một cuộc tấn công thành công về mặt kỹ thuật vẫn có thể bị vô hiệu hóa bởi cộng đồng đồng ý áp dụng một phân nhánh trung thực. Sẽ có một cuộc chạy đua giữa kẻ tấn công và cộng đồng Ethereum - hàng tỷ đô la chi cho một cuộc tấn công 66% có thể sẽ bị xóa sổ bởi một cuộc tấn công phối hợp xã hội thành công nếu nó được đưa ra đủ nhanh, để lại cho kẻ tấn công những túi ether đặt cọc kém thanh khoản nặng nề trên một Chuỗi không trung thực đã biết bị cộng đồng Ethereum phớt lờ. Khả năng điều này cuối cùng sẽ mang lại lợi nhuận cho kẻ tấn công là đủ thấp để trở thành một biện pháp răn đe hiệu quả. Đây là lý do tại sao việc đầu tư vào việc duy trì một lớp xã hội gắn kết với các giá trị được liên kết chặt chẽ lại quan trọng đến vậy.
Đọc thêm
- Phiên bản chi tiết hơn của trang này (opens in a new tab)
- Vitalik về tính chung cuộc quyết toán (opens in a new tab)
- Bài báo về LMD-GHOST (opens in a new tab)
- Bài báo về Casper FFG (opens in a new tab)
- Bài báo về Gasper (opens in a new tab)
- Thông số kỹ thuật đồng thuận về tăng cường trọng số người đề xuất (opens in a new tab)
- Các cuộc tấn công nảy trên ethresear.ch (opens in a new tab)
- Nghiên cứu về SSLE (opens in a new tab)
Cập nhật trang lần cuối: 13 tháng 4, 2026
