

Tác giả: Jameson Lopp
Bài đọc liên quan:
Liên kết gốc:
https://blog.lopp.net/bitcoins-security-model-a-deep-dive/
Bài đọc liên quan:tiêu đề cấp đầu tiên
Những hiểu lầm về mô hình bảo mật
Ngoài ra, mọi hệ thống chuỗi khối đều mã hóa khối gốc vào phần mềm nút. Bạn có thể nghĩ về "lịch sử được chia sẻ" (tức là sổ cái) như một loại hợp đồng xã hội - khi một khối đủ tuổi, tất cả những người tham gia trong mạng đều đồng thuận rằng khối đó sẽ không bao giờ bị hủy bỏ. Khi các nhà phát triển lấy một khối đã khai thác trước đó và sử dụng nó để tạo một điểm kiểm tra, thì đó giống như một cuộc kiểm tra độ tỉnh táo được chấp nhận hơn là một mô tả khách quan về lịch sử.
Ngoài điểm kiểm tra, cách các nút thực hiện tự khởi động cũng là một vấn đề. Hiện tại, quy trình bootstrapping cho một nút Bitcoin là để kiểm tra xem nút đó có dữ liệu được lưu trữ cục bộ mà nó đã học được từ các đồng nghiệp trước đó hay không. Nếu không, nút sẽ truy vấn một tập hợp "hạt giống DNS" được mã hóa cứng vào phần mềm. Những hạt giống này chịu trách nhiệm duy trì danh sách các nút Bitcoin được kết nối tốt và trả lại danh sách này cho nút của bạn.
Như chúng ta có thể thấy từ mã, Bitcoin Core 0.13 hiện đang sử dụng hạt giống DNS do Pieter Wuille, Matt Corallo, Luke Dashjr, Christian Decker, Jeff Garzik và Jonas Schnelli điều hành. Bất kỳ ai cũng có thể sử dụng phần mềm tạo hạt giống Bitcoin của Pieter Wuille hoặc phần mềm của Matt Corallo để chạy hạt giống DNS. Tuy nhiên, họ phải thuyết phục nhà phát triển triển khai nút đầy đủ để thêm máy chủ hạt giống DNS của họ vào phần mềm của bên kia.
Quá trình bootstrapping của các nút mới chỉ dựa vào 6 hạt giống DNS, đây dường như là một điểm vấn đề cực kỳ tập trung khác. Nhưng đừng quên rằng mô hình bảo mật của Bitcoin chỉ yêu cầu bạn được kết nối với một nút ngang hàng trung thực, đủ để chống lại các cuộc tấn công của Sybil.
Do đó, một nút mới chỉ cần có khả năng kết nối với hạt giống DNS không thỏa hiệp, vốn sẽ trả về địa chỉ IP của nút trung thực. Tuy nhiên, trong trường hợp tất cả các nút DNS không thể truy cập được vì một lý do nào đó, sẽ có một dự phòng - danh sách các địa chỉ IP của nút đáng tin cậy được mã hóa cứng vào phần mềm và được cập nhật với mỗi bản phát hành mới.
tiêu đề cấp đầu tiên
không có bảo mật tuyệt đối
Ở cấp độ sâu hơn, khi bạn chạy một nút đầy đủ, bạn tin tưởng vào phần cứng và phần mềm mà bạn đang chạy ở một mức độ nhất định.
hình ảnh
tiêu đề cấp đầu tiên
Kiểm tra và số dư phi tập trung của Bitcoin
Khi bạn bắt đầu xem xét mối quan hệ giữa các tác nhân khác nhau trong hệ thống Bitcoin, bạn có thể thấy mình mù mịt.
Mục đích của việc chạy một nút đầy đủ là để bảo vệ chủ quyền tài chính của bạn. Điều này có nghĩa là sau khi bạn cài đặt và chạy một phiên bản phần mềm cụ thể, bạn sẽ ký kết thỏa thuận với phần mềm đó và với tất cả những người tham gia mạng khác — không chỉ bạn sẽ tuân thủ các quy tắc của phần mềm mà cả những người tham gia mạng khác. Các quy tắc này cũng phải tuân theo theo sau.
Vì vậy, nếu mọi người muốn thực hiện các thay đổi không tương thích ngược đối với các quy tắc của phần mềm, thì bạn phải chạy phiên bản mới của phần mềm để thể hiện sự đồng ý rõ ràng của mình với những thay đổi quy tắc đó. Mặt khác, nếu đó là thay đổi quy tắc tương thích ngược, nó có thể được thực thi trong mạng ngay cả khi bạn không đồng ý với nó.
hình ảnh
Ba nhánh chính của quản trị Bitcoin:
Các nút đầy đủ (có thể phủ quyết các nhà khai thác và nhà phát triển)
công cụ khai thác (có thể phủ quyết nhà phát triển)
Nhà phát triển (có thể giúp người khác vượt qua một số quyền phủ quyết nhất định)
Cần lưu ý rằng phần mềm nút đầy đủ sẽ không được cập nhật tự động, đây là do thiết kế. Cập nhật tự động sẽ nghiêng cán cân quyền lực có lợi cho các nhà phát triển, cho phép các nhà phát triển buộc thay đổi quy tắc mà không cần sự cho phép của các nút và người khai thác.
Thật đáng tiếc là mặc dù các thay đổi về quy tắc có thể tương thích ngược ở cấp độ kỹ thuật, nhưng nhiều năm kinh nghiệm cho chúng tôi biết rằng một soft fork đủ sáng tạo cũng có thể thực hiện các thay đổi vi phạm các quy tắc của phiên bản cũ. Ví dụ, Vitalik Buterin đã từng đề cập đến một ý tưởng như vậy: thời gian tạo khối của Bitcoin sẽ được rút ngắn từ 10 phút xuống còn 2 phút thông qua một soft fork, điều này chắc chắn sẽ đẩy nhanh quá trình phát hành Bitcoin.
Đối mặt với những đợt soft fork không thuận lợi, các nút đầy đủ có một con át chủ bài: sử dụng các đợt hard fork để tạo ra một ranh giới rõ ràng với những thợ mỏ khác ủng hộ các đợt soft fork. Điều này (theo thiết kế) khó thực thi và đặt ra nhiều câu hỏi về cách đo lường sự đồng thuận và tìm các nút có trọng lượng kinh tế cao.
Về mặt kỹ thuật, một hard fork như vậy có thể đạt được bằng cách thay đổi thuật toán khai thác từ double SHA256 sang một hàm băm khác. Sau khi thành công, tất cả các công cụ khai thác SHA256 ASIC sẽ không thể khai thác Bitcoin. Do đó, các nhà khai thác nút phải luôn cảnh giác với những thay đổi trong hệ sinh thái Bitcoin và nhắc nhở những người khai thác về nguy cơ bị thay thế nếu vượt quá thẩm quyền của họ.
tiêu đề cấp đầu tiên
Bảo mật SPV
Nhiều người dùng Bitcoin truy cập mạng bằng cách sử dụng các ứng dụng khách nhẹ thay vì các nút đầy đủ vì chúng tiêu thụ ít tài nguyên hơn nhiều trong khi vẫn cung cấp bảo mật mạnh mẽ.
hình ảnh
Satoshi Nakamoto đã viết trong sách trắng rằng ứng dụng khách SPV "không thể tự xác minh giao dịch, nhưng bằng cách liên kết giao dịch với chuỗi khối, nó có thể thấy rằng các nút trong mạng đã chấp nhận giao dịch. Khi ngày càng có nhiều quận Nếu khối được trên chuỗi, nó xác nhận thêm rằng mạng đã chấp nhận giao dịch." SPV giả định rằng việc giả mạo các giao dịch sau khi xác nhận khối X là cực kỳ tốn kém.
SPV dường như an toàn như một nút đầy đủ, nhưng nó đưa ra một giả định bổ sung: miễn là tiêu đề khối và bằng chứng công việc hợp lệ, thì tất cả các giao dịch trong đó cũng hợp lệ. Bởi vì các máy khách SPV không xác minh tất cả các quy tắc đồng thuận được đề cập trong Phần 1 của bài báo này, nên họ cho rằng các nút phản hồi yêu cầu truy vấn giao dịch đã xác minh các quy tắc đồng thuận.
Một khác biệt bảo mật nhỏ khác là khả năng các đồng nghiệp giữ lại thông tin từ bạn. Nếu bạn chạy một nút đầy đủ, các đồng nghiệp có thể ẩn các giao dịch và khối chưa được xác nhận khỏi bạn. Nhưng một khi bạn nhận được một khối từ các đồng nghiệp của mình, không ai có thể che giấu bất kỳ giao dịch nào trong khối đó với bạn. Mặt khác, nếu bạn đang chạy ứng dụng khách SPV, các đồng nghiệp có thể cung cấp cho bạn các tiêu đề khối và sau đó giữ lại các giao dịch trong các khối tương ứng.
Máy khách SPV có thể truy vấn các giao dịch liên quan của một địa chỉ. Mặc dù việc đánh lừa các khách hàng SPV bằng các giao dịch giả (cần khai thác một khối với đủ PoW) sẽ rất tốn kém cho các đồng nghiệp, nhưng họ có thể nói dối về bộ lọc Bloom mà các khách hàng SPV sử dụng để truy vấn các giao dịch (bộ lọc nở) không có kết quả. Một điểm khác cần lưu ý là SPV bị vi phạm quyền riêng tư nghiêm trọng do lỗi trong bộ lọc Bloom.
BitcoinJ có một bài viết xuất sắc về mô hình bảo mật của SPV. Về các giao dịch chưa được xác nhận, họ tuyên bố:
Trong chế độ SPV, miễn là nút mà bạn được kết nối để chuyển tiếp giao dịch cho bạn, bạn chỉ có thể tin rằng giao dịch đó là hợp lệ. Nếu kẻ tấn công có thể đảm bảo rằng các nút mà bạn kết nối đều là của hắn, thì chúng có thể gửi cho bạn một giao dịch hoàn toàn không hợp lệ (tiêu tiền không tồn tại) và bạn sẽ chấp nhận rằng giao dịch này là hợp lệ.
tiêu đề cấp đầu tiên
Mạng bitcoin không có 127.0.0.1
Nếu bạn không chạy một nút đầy đủ (và thực sự sử dụng nó để xác thực các giao dịch), thì ít nhất bạn cũng phần nào tin tưởng vào bên thứ ba, điều này tạo ra sự khác biệt trong mô hình bảo mật. Lưu ý rằng điều này không yêu cầu tất cả người dùng và doanh nghiệp xây dựng phần mềm của họ trực tiếp trên API RPC của Bitcoin Core.
Một số cấu hình cơ sở hạ tầng thay thế bao gồm, nhưng không giới hạn ở:
hình ảnh
2) Xây dựng các ứng dụng trên các thư viện nút SPV (chẳng hạn như BitcoinJ) và đặt các ứng dụng này chỉ kết nối với các nút đầy đủ của riêng bạn. Trong BitcoinJ, điều này có thể đạt được bằng cách xác định SeedPeer của riêng bạn và chuyển nó tới Nhóm ngang hàng của bạn trong quá trình khởi tạo. Với libbitcoin, bạn có thể sử dụng ví dụ này để xác định các kết nối mạng tới các nút cụ thể.
Nút đầy đủ: Vì Tự do
Nút đầy đủ: Vì Tự do
Rõ ràng, chạy nút đầy đủ của riêng bạn là tùy chọn an toàn nhất và yêu cầu ít giả định nhất. Chỉ tốn vài trăm đô la để xây dựng một máy tính có khả năng chạy một nút đầy đủ đáng tin cậy. Bạn cũng có thể tính toán và quyết định xem có đáng để trả tiền để bảo vệ chủ quyền tài chính của mình hay không.
Xin cảm ơn Kristov Atlas, Eric Martindale, Andrew Miller và Kiara Roble đã xem xét và phản hồi về bài viết này.
