Tác giả: Pieter Wuille
Nguồn: https://bitcoinmagazine.com/print/the-v2-transport-bitcoin-p2p-traffic-goes-dark
Trong gần 15 năm, tất cả thông tin liên lạc giữa nút trên mạng Bitcoin đều được truyền tải hoàn toàn minh bạch, không crypto. Điều này đã thay đổi vào năm 2024 với việc áp dụng BIP 324, giới thiệu giao thức vận chuyển "V2" để liên lạc giữa nút. Giao thức mới này triển khai crypto tùy chọn, khiến cho các đối thủ không có khả năng giám sát các tin nhắn nút không thể đọc được lưu lượng truy cập của chúng. Kể từ khi Bitcoin Core 26.0 bổ sung hỗ trợ cho nó và kích hoạt mặc định trong phiên bản 27.0, nó đã được sử dụng trong phần lớn lưu lượng truy cập ngang hàng trên mạng Bitcoin .
Tuy nhiên, ngay cả khi giả định chức năng chính của một nút Bitcoin là trao đổi thông tin công khai: các khối trên blockchain , các giao dịch trong nhóm giao dịch và địa chỉ IP của nút Bitcoin khác. Vì đây không phải là thông tin bí mật, lợi ích của crypto lưu lượng truy cập có vẻ không rõ ràng. Nhưng khi xem xét kỹ hơn, ta thấy rằng lượng lớndữ liệu liên quan đến lưu lượng Bitcoin rất đáng được bảo vệ. Nếu một kẻ thù có thể biết khi nào một giao dịch được chuyển tiếp và thông qua địa chỉ IP nào, chúng có thể suy ra nút nào có thể là nguồn gốc của sự lan truyền—và do đó, là người khởi xướng giao dịch. Hơn nữa, việc nhìn thấy các kết nối giữa nút có thể tiết lộ nút nào thuộc về cá nhân nào, cho phép kẻ tấn công nhắm mục tiêu vào một công ty hoặc nút của một thợ đào cụ thể. Đối với người dùng sống dưới chế độ độc tài, việc tiết lộ rằng họ đang vận hành một nút Bitcoin có thể gây bất lợi.
Trong giao thức P2P của Satoshi Nakamoto Nakamoto, nút kết nối với nhau, gửi các thông điệp qua các kết nối này như " inv " ("Tôi có một khối/giao dịch mới mà bạn chưa biết"), " addr " ("Đây là địa chỉ IP của một nút khác"), v.v. Các thông điệp này, và tập hợp các tính năng được hỗ trợ bởi mỗi nút, đã thay đổi đáng kể, chẳng hạn như hỗ trợ cho máy trạm SPV đời đầu (BIP 37), chuyển tiếp khối dày đặc (BIP 152), địa chỉ Tor v3 (BIP 155), v.v. Nhưng cách các thông điệp này được mã hóa thành byte và truyền qua các kết nối này—cái mà chúng ta gọi là "giao thức truyền tải"—về cơ bản vẫn không thay đổi kể từ năm 2009. Ngoại lệ duy nhất là việc giới thiệu mã kiểm tra (checksum) vào giao thức vào tháng 5 năm 2010. BIP 324 là thay đổi đầu tiên như vậy kể từ đó.
Cần lưu ý rằng, mặc dù điều này có thể được coi là một thay đổi cơ bản đối với "giao thức Bitcoin", nhưng nó hoàn toàn là tùy chọn. Đây không phải là một thay đổi dựa trên sự đồng thuận và không yêu cầu bất kỳ cơ chế phối hợp hoặc kích hoạt nào. Nó chỉ được sử dụng giữa hai nút cùng hỗ trợ tính năng này, nhưng khi một nút hỗ trợ BIP 324 giao tiếp với một nút không hỗ trợ, chúng sẽ quay trở lại giao thức vận chuyển cũ (tức là "v1"). Đó là lý do tại sao, trong hai năm sau khi máy trạm hỗ trợ và bật tính năng này theo mặc định được phát hành, phần lớn lưu lượng truy cập giữa nút Bitcoin vẫn âm thầm sử dụng giao thức vận chuyển v2 crypto này.
Ý tưởng crypto lưu lượng truy cập nút Bitcoin không phải là mới. Quay trở lại năm 2016, nhà phát triển Bitcoin Core, Jonas Schnelli, đã đề xuất BIP 151, cho phép các kết nối nút nâng cấp chuyển sang chế độ crypto. Đề án này không tiến xa lắm, và vì phương pháp này không thể che giấu quá trình bắt tay ban đầu giữa hai nút, nên BIP 324, được phát hành vào năm 2019, nhằm mục đích cải tiến hoàn toàn giao thức truyền tải. Phương pháp mới mẻ hơn này đã giới thiệu một tập hợp các kết nối hoàn toàn mới, crypto ngay từ đầu. Quá trình phát triển tiếp tục cho đến năm 2021 khi Dhruv Mehta tiếp tục và cùng với Tim Ruffing và tôi, đã biến nó thành một Đề án hoàn chỉnh, bổ sung thêm một vài tính năng mới như luồng byte giả ngẫu nhiên hoàn toàn, khả năng định hình lưu lượng truy cập và plug-in tùy chọn. Vào năm 2022, chúng tôi đã thông báo về điều này trên danh sách gửi thư bitcoin-dev, và sau khi nhận được một số phản hồi, chúng tôi đã triển khai nó trong khoảng thời gian từ năm 2022 đến năm 2023. Toàn bộ tính năng đã được hợp nhất vào Bitcoin Core vào năm 2023. Sau khi thử nghiệm thêm, tính năng này đã được bật mặc định cho tất cả các kết nối vào năm 2024 (với điều kiện nút ngang hàng hỗ trợ).
Đặc tính luồng byte hoàn toàn ngẫu nhiên do giao thức mới cung cấp có nghĩa là các byte được gửi qua giao thức vận chuyển này không có bất kỳ mẫu nào có thể nhận dạng được. Ví dụ, giao thức TLS, được sử dụng trong giao tiếp với các trang web bảo mật ("trang web https://"), crypto nội dung của trang web nhưng không che giấu việc sử dụng TLS, cũng như yêu cầu tên máy chủ của trang web (ít nhất là trước khi sử dụng Crypto Máy trạm Greeting (ECH) vào năm 2020). Trước khi triển khai BIP 324, giao thức vận chuyển v1 gửi 16 byte cố định ở đầu mỗi kết nối, điều này cực kỳ dễ nhận dạng, vì vậy các tường lửa cố gắng kiểm duyệt có thể dễ dàng chặn bất kỳ kết nối nào sử dụng mẫu này. Ngược lại, giao thức vận chuyển v2 hoàn toàn không có mẫu như vậy; mỗi byte, từ góc nhìn của bên thứ ba, là ngẫu nhiên đồng nhất và do đó hoàn toàn không thể dự đoán được. Bất kỳ thực thể nào cố gắng chặn lưu lượng Bitcoin dựa trên các mẫu lưu lượng sẽ cần phải chặn tất cả lưu lượng dường như ngẫu nhiên, điều này có thể khó khăn hơn về mặt chính trị (so với việc chỉ đơn giản là chặn lưu lượng từ phần mềm như Bitcoin). Phần khó khăn nhất trong việc làm cho toàn bộ giao thức trở nên giả ngẫu nhiên nằm ở quá trình bắt tay—trước khi crypto được thiết lập, nút cần trao đổi khóa công khai, vốn không phải là các byte ngẫu nhiên. Nhờ một kỹ thuật mật mã rất mới có tên là "Elligator" (2013) và một biến thể của nó có tên là "ElligatorSwift" (2022), có thể mã hóa các khóa công khai đường cong elliptic thành các byte dường như ngẫu nhiên, nên các mẫu có thể nhận dạng được xuất hiện trong quá trình bắt tay.
Cần lưu ý rằng do tính chất công khai của mạng Bitcoin , việc bảo vệ quyền riêng tư được cung cấp bởi lớp vận chuyển crypto giữa nút phải đối mặt với những hạn chế đáng kể. Nút Bitcoin không tin tưởng nút của chúng và do đó không đặc biệt quan tâm đến việc nút đó là ai. Nút Bitcoin cũng không có khóa công khai, đó là lý do tại sao crypto được cung cấp bởi giao thức vận chuyển v2 mang tính cơ hội và không được xác minh; cả hai bên đều sử dụng một khóa tạm thời mới cho mỗi kết nối. Điều này có nghĩa là một kẻ thù chủ động (chẳng hạn như nhà cung cấp dịch vụ internet của bạn) có thể thực hiện một "cuộc tấn công trung gian": sử dụng giao thức vận chuyển v2 với cả hai nút cố gắng thiết lập kết nối, sau đó giải mã một tin nhắn từ một bên, crypto và gửi cho bên kia; nói cách khác, hoạt động gián điệp vẫn có thể xảy ra, và có thể đồng thời can thiệp hoặc kiểm duyệt thông tin. Tuy nhiên, điểm mấu chốt là việc thực hiện một cuộc tấn công trung gian quy mô lớn như vậy tốn kém hơn nhiều so với việc có thể trực tiếp kiểm tra một tin nhắn đơn crypto (như được cho phép bởi giao thức vận chuyển v1). Và dĩ nhiên, vì phần lớn các kết nối giữa nút Bitcoin được khởi tạo một cách tùy ý đến nút ngẫu nhiên, không đáng tin cậy, nên kẻ thù muốn dò xét nút khác trên quy mô lớn luôn có thể khởi chạy lượng lớn nút và sau đó cho phép lượng lớn nút khác kết nối với nút này. Giống như một cuộc tấn công trung gian (man-in-the-middle attack), việc này tốn kém hơn so với việc trực tiếp kiểm tra gói v1.
Do đó, tốt nhất là không nên xem BIP 324 như một biện pháp tăng cường quyền riêng tư, mà nên xem nó như một phần của nỗ lực lớn hơn: tăng chi phí giám sát hàng loạt mạng Bitcoin trong khi tránh phụ thuộc vào các mạng thay thế (như Tor và I2P, vốn có những hạn chế riêng, chẳng hạn như độ trễ tăng hoặc rủi ro tấn công từ chối dịch vụ, rủi ro mà không phải tất cả nút trong mạng đều có thể chấp nhận). Một số tính năng của BIP 324 tính đến chưa được triển khai, chẳng hạn như định hình lưu lượng, có thể ngăn chặn người khác phát hiện thông tin về các giao dịch được chuyển tiếp bằng cách quan sát kích thước của các gói crypto. Hy vọng rằng, những tính năng này sẽ được sử dụng trong những năm tới.
(qua)




