

Bài viết này đến từMediumDịch giả Moni
Dịch giả Moni
Biên tập | Lộ Hiểu Minh
Biên tập | Lộ Hiểu Minh
Ghi chú của biên tập viên: Bài viết này là một báo cáo nghiên cứu về "lỗ hổng cạn kiệt tài nguyên" được viết bởi nhóm nghiên cứu của Phòng thí nghiệm hệ thống phi tập trung (Decentralized Systems Lab) thuộc Đại học Illinois tại Urbana-Champaign (UIUC). , Yunqi Li, Yuguang Chen, Joseph Kuo, và cố vấn Andrew Miller. Được biết, những lỗ hổng này đã ảnh hưởng đến tổng cộng hơn 26 loại tiền điện tử dựa trên bằng chứng cổ phần và những kẻ tấn công mạng chỉ cần sử dụng một "cổ phần" (stake) rất nhỏ để đánh sập bất kỳ nút mạng nào đang chạy phần mềm tương ứng. Nhóm nghiên cứu bắt đầu tiết lộ cuộc điều tra vào tháng 10 năm 2018 với mục đích làm cho vấn đề được các nhà phát triển tiền điện tử có khả năng bị ảnh hưởng biết đến, hầu hết trong số đó hiện đã triển khai các biện pháp giảm thiểu.
Các loại tiền điện tử Proof-of-Stake (PoS), đặc biệt là các loại tiền điện tử PoSv3 (Proof-of-Stake version 3: Bằng chứng cổ phần phiên bản 3) tương tự như Bitcoin, về cơ bản sử dụng Mô hình UTXO (Đầu ra giao dịch chưa xác định: Đầu ra giao dịch chưa xác định) và lâu nhất quy tắc đồng thuận chuỗi. Cái gọi là UTXO dùng để chỉ tập hợp số lượng bitcoin được liên kết với địa chỉ bitcoin.Vì không có khái niệm về tài khoản trong hệ thống bitcoin, nên chỉ có các đầu ra giao dịch chưa được sử dụng trên toàn bộ chuỗi khối của toàn bộ mạng, về cơ bản là dữ liệu chứa dữ liệu và mã thực thi.cấu trúc. Đơn vị cơ bản của UTXO là "Satoshi", "Satoshi" là đơn vị đo lường nhỏ nhất của Bitcoin và một Bitcoin bằng 10^8 Satoshi. Sau khi UTXO được tạo, nó không thể được phân chia. Nó chỉ có thể được chi tiêu làm đầu vào của giao dịch. Sau khi chi tiêu, một UTXO mới sẽ được tạo để có thể thực hiện chuyển đổi giá trị của tiền tệ nhiều lần. Do đó, số dư tài khoản mà chúng ta thấy trong ví Bitcoin thực sự là kết quả của việc tính toán tổng hợp các đầu ra giao dịch chưa được sử dụng.
So với "bằng chứng công việc", bằng chứng cổ phần có một số lợi thế tiềm năng, chẳng hạn như tiêu thụ ít năng lượng hơn và không ảnh hưởng đến môi trường cũng như bảo mật tốt hơn trước các cuộc tấn công 51%. Trên thực tế, nhiều loại tiền điện tử trên thị trường hiện nay là các nhánh của cơ sở mã Bitcoin (hoặc các dẫn xuất của Bitcoin) và sau đó được ghép với cơ chế đồng thuận bằng chứng cổ phần, nhưng một số khái niệm thiết kế không được sao chép an toàn, dẫn đến sửa một số lỗi mới không có trong cơ sở mã ban đầu.
Cũng trong phần còn lại của bài viết này, chúng tôi sẽ giải thích chi tiết về các lỗ hổng và các cuộc tấn công cũng như loại hậu quả tinh vi mà chúng có thể gây ra. Mặc dù bản thân lỗ hổng có vẻ không phức tạp trong nhận thức muộn màng, nhưng rất khó để giải quyết đầy đủ và các biện pháp giảm thiểu hiện tại có nguy cơ gây ra các nhánh blockchain (sẽ nói thêm về điều đó sau).
tiêu đề phụ
Trước khi đi sâu vào chi tiết về lỗ hổng “Stake giả”, hãy tìm hiểu cách hoạt động của Proof-of-Stake.
tiêu đề phụ
Bằng chứng khai thác cổ phần:
Tương tự như khai thác bằng chứng công việc, khai thác bằng chứng cổ phần bao gồm giá trị băm tiêu đề khối và mục tiêu độ khó (lưu ý: mục tiêu độ khó là giá trị độ khó cần thiết để cho phép sức mạnh tính toán của toàn bộ mạng tạo ra một khối xấp xỉ mỗi 10 phút). Mục tiêu cấp cao của Proof-of-Stake là đảm bảo rằng mỗi bên liên quan đều có cơ hội khai thác khối tiếp theo tỷ lệ thuận với lượng tiền điện tử mà họ nắm quyền kiểm soát. Để đạt được điều này, trong cơ chế đồng thuận bằng chứng cổ phần, giá trị băm không chỉ phụ thuộc vào tiêu đề khối mà còn phụ thuộc vào số lượng xu có trong giao dịch "coinstake" đặc biệt được bên liên quan chèn vào khối.
"Coinstake" là một giao dịch đặc biệt được thiết kế đặc biệt bởi Sunny King, người sáng lập bằng chứng về quyền và lợi ích. Nó dựa trên thiết kế Coinbase của người sáng lập Bitcoin "Satoshi Nakamoto". Có một số giới hạn cứng đối với đầu vào và đầu ra:
Cấu trúc Coinbase yêu cầu số lượng đầu vào phải bằng 1 và trường Prevout đầu vào (chỉ định đầu ra của giao dịch trước đó) phải trống và số lượng đầu ra phải lớn hơn hoặc bằng 1;
Cấu trúc Coinstake yêu cầu số lượng đầu vào lớn hơn hoặc bằng 1 và trường Prevout của đầu vào đầu tiên không được để trống, nghĩa là Kernel phải tồn tại, số lượng đầu ra lớn hơn hoặc bằng 2 và đầu ra đầu tiên phải trống.
Ngoài ra, hai giao dịch đặc biệt này còn có yêu cầu đặc biệt về vị trí lưu trữ trong blockchain, Satoshi Nakamoto quy định giao dịch đầu tiên của mỗi khối phải được đặt trong Coinbase, điều này cũng có nghĩa là Coinbase không thể xuất hiện ở các vị trí khác trong khối. Sunny King rõ ràng không muốn phá vỡ quy tắc này, nhưng anh ấy đã thêm một quy tắc rằng Coinstake phải được đặt trong giao dịch thứ hai của khối "Proof of Stake", điều đó cũng có nghĩa là Coinstake không thể xuất hiện ở nơi nào khác trên blockchain. Nói cách khác, miễn là giao dịch thứ hai là Coinstake, thì khối này cần được coi là khối bằng chứng cổ phần.
Khai thác bằng chứng cổ phần liên quan đến rất nhiều chi tiết, vì vậy tôi sẽ không đi vào chi tiết ở đây, tạm thời chúng ta sẽ tập trung vào hai khía cạnh sau:
2. UTXO (đầu ra giao dịch chưa tiêu thụ) được sử dụng trong các giao dịch Coinstake.
tiêu đề phụ
Vai trò của Proof-of-Work trong việc đảm bảo tài nguyên xác thực khối
Như chúng ta đã biết, mặc dù bằng chứng công việc đã đóng một vai trò quan trọng trong sự đồng thuận của Bitcoin, nhưng một loạt vấn đề liên quan đến đĩa, băng thông, bộ nhớ và CPU cũng khiến nó không được ưa chuộng cho lắm. Trong một mạng lưới tiền điện tử phi tập trung, tiền đề của các giao dịch không thực sự dựa trên sự tin tưởng, do đó, để ngăn chặn các cuộc tấn công làm cạn kiệt tài nguyên (các cuộc tấn công làm cạn kiệt tài nguyên), các nút Bitcoin gửi nhiều tài nguyên hơn (chẳng hạn như các khối lưu trữ trong RAM hoặc trên đĩa) trước. kiểm tra tất cả các khối nhận giao dịch bằng cơ chế bằng chứng công việc. Tuy nhiên, hóa ra việc sử dụng Proof of Stake để kiểm tra các khối phức tạp hơn nhiều so với Proof of Work và cơ chế đồng thuận này nhạy cảm với ngữ cảnh (hoặc nhạy cảm với ngữ cảnh), vì vậy nhiều Proof of Stake thực sự rất khó xác minh khi triển khai xác minh."keo kiệt".
Trước khi có thể hiểu lỗ hổng cạn kiệt tài nguyên có thể được gây ra như thế nào, trước tiên chúng ta phải giải thích chi tiết cách các khối được lưu trữ trước khi chúng được xác thực. Trên thực tế, các nút chuỗi khối không chỉ cần theo dõi chuỗi dài nhất tại thời điểm hiện tại mà còn cả một cây chuỗi phân nhánh, bởi vì bất kỳ chuỗi nào trong số chúng cũng có thể trở thành chuỗi dài nhất và múi giờ Các nút chuỗi khối cần "tổ chức lại" để chuyển đổi đến chuỗi dài nhất, chẳng hạn như trong trường hợp nâng cấp không chuẩn bị trước, một cuộc tấn công chi tiêu gấp đôi (chẳng hạn như cuộc tấn công 51% vào Ethereum Classic) hoặc một phân vùng mạng tạm thời. "Tổ chức lại" là có thể.
Trong trường hợp này, rất khó để xác minh các khối trên các "chuỗi ngoài chính" này. Nếu bạn muốn xác minh đầy đủ một khối, bạn cần lấy tập hợp tất cả các đầu ra giao dịch chưa sử dụng (UTXO) tại thời điểm hiện tại của khối trước đó. Bitcoin sẽ giữ tập hợp các đầu ra giao dịch chưa được sử dụng ở đầu chuỗi tốt nhất hiện tại, nhưng các khối trên các chuỗi khối phân nhánh có thể không tuân theo cách tiếp cận của Bitcoin. Có hai cách chính để một khối trên ngã ba được xác thực đầy đủ:
1. "Hoàn nguyên" chế độ xem hiện tại (tập hợp các đầu ra giao dịch chưa được sử dụng) về điểm trước ngã ba; hoặc,
2. Lưu trữ các bản sao của bộ sưu tập dữ liệu giao dịch chưa sử dụng của tất cả các khối ban đầu.
Cơ sở mã Bitcoin không hỗ trợ phương pháp thứ hai và ngay cả khi có thể, nó sẽ tăng thêm chi phí lưu trữ (hiệu suất của nút Bitcoin phụ thuộc vào việc "cắt tỉa" liên tục dữ liệu không cần thiết). Cách đầu tiên chính xác là cách cơ sở mã Bitcoin hiện xử lý việc tổ chức lại, nhưng nó có thể rất tốn kém, vì vậy khi số lượng bằng chứng công việc trong chuỗi rẽ nhánh lớn hơn chuỗi khối chính hiện tại, quá trình khôi phục và xác thực đầy đủ sẽ bị hoãn lại cho đến khi khoảnh khắc cuối cùng. Vì vậy, lần đầu tiên một nút nhận được một khối hoặc tiêu đề không phải là một phần của chuỗi dài nhất, nó sẽ bỏ qua xác thực đầy đủ và lưu khối vào bộ nhớ cục bộ.
Trong Proof of Stake, kiểm tra ban đầu tương tự là xác thực giao dịch nhận tiền và kiểm tra xem giao dịch đó có vượt qua mục tiêu độ khó của nhân khối trước đó hay không. Thật dễ dàng để tính toán sức mạnh tính toán của giao dịch coinstake, nhưng thực sự rất khó để kiểm tra xem dữ liệu giao dịch chưa sử dụng được nhập trong giao dịch coinstake có hợp lệ và chưa được tiêu thụ hay không. Như đã đề cập trước đó, vì hoạt động này cần kiểm tra việc thu thập dữ liệu giao dịch chưa được sử dụng nên nó không áp dụng cho các khối trước đó. Do khó xác minh đầy đủ các giao dịch cointake, hầu hết các chuỗi khối dựa trên bằng chứng cổ phần chỉ sử dụng kiểm tra "heuristic" hoặc "gần đúng", hóa ra, thường không đủ và có thể bị khai thác.
tiêu đề phụ
Lỗ hổng #1: "Tôi không tin đó không phải là vốn chủ sở hữu"
Khi chúng tôi điều tra vấn đề này lần đầu tiên, năm loại tiền điện tử—Qtum, Particl, Navcoin, HTMLcoin và Emercoin—được phát hiện có các dạng lỗ hổng khá đơn giản—nghĩa là trước khi các khối được cam kết vào RAM hoặc ổ đĩa, những loại tiền mã hóa này rất có thể là hoàn toàn không kiểm tra bất kỳ giao dịch cointake nào. Điểm chung của năm loại tiền điện tử này là chúng sử dụng tính năng "headers first" của Bitcoin, trong đó việc truyền khối được chia thành hai thông báo riêng biệt, một cho khối và một cho khu vực. Sau khi tiêu đề khối đã vượt qua bằng chứng công việc, nút chỉ hỏi liệu khối đó có phải là chuỗi dài nhất hay không. Vì các giao dịch cointake chỉ xuất hiện trong các khối chứ không phải tiêu đề khối nên các nút không thể tự xác minh tiêu đề khối. Thay vào đó, nó lưu trữ tiêu đề khối trong cấu trúc dữ liệu trong bộ nhớ (mapBlockIndex). Do đó, bất kỳ kẻ tấn công mạng nào, kể cả kẻ tấn công không có bất kỳ cổ phần nào, đều có thể lấp đầy RAM của nút nạn nhân tiềm năng.
Biến thể thứ hai của cuộc tấn công này nhắm vào cơ sở mã, mặc dù nó thực hiện theo cách hơi khác và nhắm vào một tài nguyên khác, mục tiêu không phải là RAM mà là đĩa. Có thể cho rằng, một cuộc tấn công liên quan đến đĩa có hại hơn đối với nút nạn nhân, yêu cầu khởi động lại đơn giản nếu RAM đầy và làm hỏng nút; tuy nhiên, nếu đĩa đầy thì cần phải can thiệp thủ công, chẳng hạn như chạy tập lệnh bên ngoài để xóa các khối lỗi thời từ đĩa.
Việc khai thác bất kỳ lỗ hổng nào trong số này có thể ảnh hưởng đến tiền điện tử mà không có bất kỳ cổ phần nào. Ngược lại, một cuộc tấn công vào RAM có thể ít ảnh hưởng hơn, trong khi một cuộc tấn công vào đĩa cần cẩn thận hơn một chút từ quan điểm kỹ thuật và không có bất kỳ yêu cầu cổ phần nào.
tiêu đề phụ
Lỗ hổng 2: Stake Attack
Bằng cách truy tìm dòng dõi của các cơ sở mã này, chúng tôi nhận thấy rằng một lỗi ban đầu là hợp nhất chức năng "tiêu đề đầu tiên" của Bitcoin vào cơ sở mã PoSv3. Tuy nhiên, cuộc tấn công không hoạt động trên các phiên bản cũ hơn (chẳng hạn như Peercoin), vì vậy cần có thêm hai bước kiểm tra sơ bộ trước khi lưu trữ các khối trên đĩa:
1. Kiểm tra xem tất cả các đầu ra có tồn tại trong chuỗi chính hay không;
2. Kiểm tra xem Proof of Stake Kernel Hash có đáp ứng các yêu cầu mục tiêu về độ khó hay không.
Kiểm tra đầu tiên được thực hiện bằng tra cứu trong cơ sở dữ liệu giao dịch (TxDB), theo dõi tất cả các giao dịch cho đến nay trong chuỗi chính hiện tại. Nói cách khác, xác minh sơ bộ tốt hơn là không xác minh gì cả, nhưng xác minh đầy đủ vẫn không thể thực hiện được, chỉ có thể thực hiện xác minh "heuristic" và "gần đúng". Nếu chúng ta tiếp tục giải thích cách suy nghĩ này, hai câu hỏi khác có thể nảy sinh:
Mối quan tâm A: Lần kiểm tra đầu tiên đảm bảo rằng các mã thông báo tồn tại, nhưng không thể xác định liệu chúng có chưa được sử dụng hay không. Tình huống này ngay lập tức dẫn đến một lỗ hổng khác được thảo luận tiếp theo;
Dựa trên mối quan tâm A, chúng tôi đã tìm ra cách để đánh lừa các séc này bằng cách sử dụng một cuộc tấn công tinh vi hơn mà chúng tôi gọi là "tấn công tiền đặt cọc". Để bỏ qua lần kiểm tra đầu tiên, chúng tôi làm cho nút nhìn thấy một đầu ra đã được sử dụng; và để bỏ qua lần kiểm tra thứ hai, trước tiên chúng tôi cần khai thác một khối hợp lệ vượt qua mục tiêu độ khó, Làm như vậy có thể yêu cầu bạn sở hữu một số lượng đáng kể của vốn chủ sở hữu. Tuy nhiên, hóa ra là chúng ta có thể thực hiện một số giao dịch chưa được xác thực đầy đủ và tạo ra bất kỳ số tiền cổ phần rõ ràng nào bằng cách sử dụng một kỹ thuật gọi là "khuếch đại cổ phần".
tiêu đề phụ
khuếch đại vốn chủ sở hữu
Bạn sẽ thấy rằng ngay cả khi bạn chỉ có 0,01% cổ phần trong hệ thống, kẻ tấn công chỉ cần 5000 giao dịch để khai thác 50% khối cổ phần rõ ràng. Sau khi kẻ tấn công đã thu thập được một lượng lớn cổ phần rõ ràng, chúng bắt đầu khai thác các khối bằng chứng cổ phần bằng cách sử dụng đầu ra cổ phần rõ ràng mới được thu thập. Cuối cùng, kẻ tấn công lấp đầy đĩa của nút nạn nhân bằng các khối không hợp lệ, như thể hiện ở bên phải trong hình trên. Trên thực tế, kẻ tấn công có thể mua một số mã thông báo từ một sàn giao dịch tiền điện tử, mở rộng lợi ích của họ thông qua các phương pháp trên, sau đó bán lại các mã thông báo này cho sàn giao dịch và thực hiện cuộc tấn công sau đó, chi phí duy nhất mà họ phải chịu chỉ là một khoản Phí giao dịch nhỏ.
tiêu đề phụ
Tiết lộ lỗ hổng phối hợp
Trước tiên, chúng tôi đã điều tra xem liệu hai loại tiền điện tử, Particl và Qtum, có "lỗ hổng bảo mật" hay không, nghĩa là liệu các loại tiền điện tử này có kiểm tra bất kỳ giao dịch cointake nào trước khi các khối được cam kết vào RAM hoặc đĩa hay không. Để xác định mức độ của lỗ hổng, chúng tôi đã thu thập danh sách các loại tiền điện tử đã biết theo vốn hóa thị trường từ CoinMarketCap.com vào ngày 9 tháng 8 năm 2018 và lọc chúng theo loại đồng thuận bằng chứng cổ phần dựa trên chuỗi khối. Cần lưu ý rằng chúng tôi chỉ nghiên cứu các loại tiền điện tử có cơ sở mã được tách ra từ Bitcoin.Chúng tôi đã kiểm tra tổng cộng 26 loại tiền điện tử và thấy rằng 5 loại tiền điện tử bị ảnh hưởng bởi lỗ hổng, cụ thể là Qtum, Navcoin, HTMLcoin, Emercoin và Partickl, nhưng cuộc tấn công của chúng tôi dường như không áp dụng cho các loại tiền điện tử khác.
Để xác nhận thêm lỗ hổng bảo mật, chúng tôi đã thực hiện cuộc tấn công trong năm cơ sở mã bổ sung bị ảnh hưởng. Chúng tôi tận dụng bộ thử nghiệm hiện có trong phần mềm Bitcoin - cụ thể là chế độ "regtest", hỗ trợ dấu thời gian mô phỏng và tạo khối dễ dàng. Ngoài ra, chúng tôi cũng xây dựng một nút thử nghiệm dựa trên ngôn ngữ phát triển Python dựa trên Bitcoin TestFramework và cho phép nó được mở rộng bởi hành vi của kẻ tấn công. Chúng tôi đã sử dụng bộ chứa Docker để thử nghiệm, đồng thời đóng gói các phần phụ thuộc và hàm băm cam kết cụ thể bị ảnh hưởng vào một bộ công cụ có thể tái sử dụng như một phần của tiết lộ lỗ hổng, mà chúng tôi có thể dễ dàng chia sẻ thông tin này với tất cả năm nhóm phát triển bị ảnh hưởng.
Tuy nhiên, vẫn còn một vấn đề "rắc rối" hơn ở đây, đó là hầu hết các cơ sở mã không sử dụng chế độ "regtest" nên chúng tôi không thể trình diễn cuộc tấn công một cách trực quan hoặc cung cấp bộ công cụ cho mỗi cơ sở mã có thể được sử dụng nhiều lần. Do đó, chúng tôi chỉ cung cấp bản demo cơ sở mã C++ của stratisX. Dựa trên những điểm tương đồng trong cơ sở mã, chúng tôi đã thông báo cho tất cả 15 nhóm phát triển tiền điện tử có khả năng bị ảnh hưởng rằng chúng tôi tin rằng mã thông báo của họ sẽ bị ảnh hưởng bởi việc khai thác. Trong số đó, 5 nhóm phát triển tiền điện tử đã thừa nhận lỗ hổng, 3 nhóm phát triển tiền điện tử vẫn đang điều tra, 3 nhóm khác không thừa nhận lỗ hổng (và chỉ ra rằng nếu một số thay đổi nâng cấp được thực hiện), 4 nhóm vẫn đang điều tra lỗ hổng. đã được đưa ra. Đối với 4 nhóm không trả lời, chúng tôi đã tìm thấy thông tin liên hệ thông qua trang web của họ và đưa bộ công cụ tái tạo để kiểm tra lỗ hổng vào kho lưu trữ mã GitHub.
tiêu đề phụ
Giảm nhẹ
Hiện tại, chúng tôi đã thấy một số nhóm phát triển tiền điện tử thực hiện một loạt biện pháp giảm thiểu đối với các lỗ hổng được tiết lộ trong bài viết này. Những loại tiền điện tử đã triển khai giảm thiểu không chỉ có thể phát hiện các hành vi khai thác mà còn ngắt kết nối các nhánh vi phạm. Nói một cách đơn giản, các nút có thể giám sát hành vi bất thường, chẳng hạn như gửi một số lượng lớn các tiêu đề khối trên một chuỗi phân nhánh.
Tuy nhiên, vẫn còn một vấn đề khó khăn ở đây, đó là làm thế nào để phân biệt "cổ phần giả" của cuộc tấn công thực tế với nút trung thực của việc tổ chức lại hợp pháp, bởi vì một số biện pháp giảm thiểu có thể có nguy cơ cấm nhầm nút trung thực. Một số biện pháp giảm thiểu mà chúng tôi thấy cho đến nay đã được thực hiện khá tốt, nhưng điều này cần được điều tra và phân tích thêm để xem các tác động tiếp theo.
Ngoài ra còn có các biện pháp giảm thiểu đối với một số loại tiền điện tử xác thực một phần chức năng trong một khoảng thời gian nhất định. Nếu một khối rẽ nhánh được nhận vượt quá độ dài đã chỉ định trên chuỗi chính, thì khối đó sẽ bị loại bỏ. Ví dụ: cơ sở mã ABC của Bitcoin Cash áp dụng phương pháp này, nơi họ đặt các điểm kiểm tra luân phiên ở mỗi khối thứ mười. Nhưng cách tiếp cận này cũng có những nhược điểm khác, đó là khả năng "chia tách chuỗi khối". Bởi vì khi ngày càng có nhiều nút trung thực xuất hiện trên các nhánh khác nhau của chuỗi khối, thì việc phân tách chuỗi khối sẽ xảy ra. Đặc biệt là khi kết nối mạng kém khiến các nút không đồng bộ và không đủ lâu để tạo ra các điểm kiểm tra xung đột, nó cũng có thể dẫn đến "sự phân tách chuỗi khối". Ngay cả khi các nút lấy lại kết nối, chúng không thể đạt được chế độ xem chung của chuỗi.
Nhưng quan trọng hơn, chúng tôi lưu ý rằng ngay cả khi có biện pháp giảm thiểu này, vẫn có nguy cơ "phân tách chuỗi khối", vì một nút tạm thời tìm thấy chính nó trên một ngã ba nếu giao dịch nhận tiền xu được xác thực bằng cách sử dụng đầu ra giao dịch trong chuỗi hiện tại. , có thể không chuyển sang chuỗi chính thực.
Rủi ro "phân tách chuỗi khối" cũng đưa ra các vectơ tấn công mới cho những người khai thác đối thủ, những người có thể cố gắng bí mật khai thác các chuỗi dài và sau đó xuất bản chúng lên một tập hợp con của các nút để gây ra sự phân tách chuỗi khối. Các nút trong lần tải xuống khối ban đầu (Tải xuống khối ban đầu) và các nút đã ngoại tuyến trong một thời gian dài và mới khởi động lại đặc biệt dễ bị tấn công kiểu này và cuộc tấn công này cũng có thể được kết hợp với các cuộc tấn công nhật thực để "giới thiệu" các nút trung thực vào sự kiểm soát của kẻ tấn công trên blockchain.
Vì vậy, bạn sẽ thấy rằng tất cả các biện pháp giảm thiểu này chỉ làm cho cuộc tấn công khó thực hiện hơn, nhưng chúng không thực sự là sự thay thế cho xác thực đầy đủ. Được biết, một số loại tiền điện tử, bao gồm cả Qtum, đang có kế hoạch xác minh đầy đủ các khối trên các chuỗi khối không chính trong các phiên bản tương lai.
tiêu đề phụ
suy nghĩ cuối cùng
suy nghĩ cuối cùng
Mặc dù cuộc tấn công "cổ phần giả" về mặt lý thuyết là đơn giản, nhưng nó cho thấy một vấn đề có thể xảy ra với thiết kế của tiền điện tử bằng chứng cổ phần: một số ý tưởng có ý nghĩa trong bằng chứng công việc đã không được chuyển đổi thành bằng chứng cổ phần một cách an toàn. Cho rằng mã chia sẻ Bitcoin Core rất "thượng nguồn" của tiền điện tử PoSv3, chúng tôi tin rằng các loại tiền điện tử bằng chứng cổ phần này sẽ được xem xét kỹ lưỡng hơn. Trong khi điều tra các lỗ hổng này, chúng tôi cũng tìm thấy một số ví dụ trong công việc được thực hiện trên các cơ sở mã khác nhau và trong mã đã nhận xét. Đối với chúng tôi, điều này cho thấy rằng một số nhà phát triển tiền điện tử bằng chứng cổ phần không hiểu đầy đủ về cơ chế đồng thuận này khi họ thiết kế tiền điện tử của mình.
Một mặt, chúng tôi hy vọng sẽ từ chối các khối không hợp lệ càng sớm càng tốt để cải thiện hiệu quả xử lý của chuỗi khối; nhưng mặt khác, chúng tôi không muốn gặp phải tình trạng tắc nghẽn trên chuỗi khối phân nhánh, điều này sẽ ảnh hưởng và trì hoãn các giao dịch thực tế trên chuỗi chính, xử lý Một giải pháp có hệ thống cho vấn đề này vẫn là một câu hỏi mở trong nhóm làm việc hiện tại.
Mặc dù chúng tôi đã thấy lỗ hổng này ảnh hưởng đến ít nhất hai cơ sở mã gần đây (chẳng hạn như CVE 2018-17144 trong Bitcoin), nhưng theo hiểu biết tốt nhất của chúng tôi thì đã có hơn 20 loại tiền điện tử bị ảnh hưởng, đây không phải là nhiều. Với sự phổ biến của việc sao chép ý tưởng thiết kế và tái sử dụng mã trong tiền điện tử, chúng tôi mong đợi nhiều lỗ hổng như vậy hơn trong tương lai.
