Tạp chí Bitcoin 
Giao thức vận chuyển v2: Lưu lượng truy cập Bitcoin P2P bị gián đoạn.
Trong gần 15 năm, tất cả thông tin liên lạc giữa các nút trên mạng Bitcoin đều được truyền tải hoàn toàn không mã hóa. Điều đó đã thay đổi vào năm 2024 với việc áp dụng Đề xuất cải tiến Bitcoin (BIP) 324, giao thức vận chuyển “v2” được giới thiệu để liên lạc giữa các nút. Giao thức mới này có tính năng mã hóa tùy chọn, khiến lưu lượng truy cập không thể đọc được đối với các đối thủ thụ động có khả năng theo dõi các tin nhắn giữa các nút. Kể từ khi thêm hỗ trợ cho nó trong Bitcoin Core 26.0 và kích hoạt mặc định trong 27.0, nó hiện được sử dụng cho phần lớn lưu lượng P2P Bitcoin toàn cầu.
Nhìn lại, chức năng chính của một node Bitcoin là trao đổi các thông tin về cơ bản là công khai: các khối trong chuỗi khối, các giao dịch trong mempool và địa chỉ IP của các node Bitcoin khác. Vì đây không phải là thông tin bí mật, nên thoạt nhìn không rõ lý do tại sao việc mã hóa chúng lại có lợi. Nhưng khi xem xét kỹ hơn, có rất nhiều siêu dữ liệu liên quan đến lưu lượng Bitcoin đáng được bảo vệ. Nếu một kẻ thù quy mô lớn có thể thấy giao dịch nào được chuyển tiếp khi nào và bởi địa chỉ IP nào, chúng có thể suy ra node nào có khả năng là nguồn gốc – và do đó là người tạo ra – của giao dịch đó. Ngoài ra, việc xem xét các kết nối giữa các node có thể tiết lộ node nào thuộc về ai, cho phép nhắm mục tiêu vào các node của các công ty hoặc Thợ đào cụ thể để tấn công. Và đối với một số người dùng vận hành node trong các chế độ độc tài, việc tiết lộ rằng họ đang vận hành một node Bitcoin có thể là điều không mong muốn.
Trong giao thức P2P do Satoshi (SATS) thiết kế, các nút kết nối với nhau và thông qua các kết nối đó gửi các thông điệp như inv (“Tôi có các khối/giao dịch mới cho bạn”), getdata (“hãy cho tôi Block/giao dịch đó”), addr (“đây là địa chỉ IP của một nút khác”) và nhiều thông điệp khác. Tập hợp các thông điệp và tính năng mà chúng hỗ trợ đã thay đổi đáng kể theo thời gian, bao gồm hỗ trợ cho các máy khách SPV đời đầu với Đề xuất cải tiến Bitcoin (BIP) 37, chuyển tiếp Block nhỏ gọn với Đề xuất cải tiến Bitcoin (BIP) 152, hỗ trợ địa chỉ Tor v3 với Đề xuất cải tiến Bitcoin (BIP) 155 và hàng tá tính năng khác. Nhưng cách các thông điệp đó được mã hóa thành các byte được gửi qua đường truyền – mà chúng ta gọi là giao thức vận chuyển – về cơ bản chưa bao giờ 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. Đề xuất cải tiến Bitcoin (BIP) 324 là thay đổi đầu tiên thuộc loại này kể từ đó.
Cần lưu ý rằng, mặc dù đây là một thay đổi khá cơ bản đối với những gì có thể được mô tả là một phần của "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 cần Consensus và không cần bất kỳ cơ chế phối hợp hoặc kích hoạt nào. Nó chỉ đơn giản được sử dụng giữa các nút riêng lẻ hỗ trợ nó, nhưng khi một nút hỗ trợ Đề xuất cải tiến Bitcoin (BIP) 324 giao tiếp với một nút khác không hỗ trợ, chúng sẽ quay lại sử dụng giao thức vận chuyển cũ ("v1"). Đó là lý do tại sao, không có nhiều thông báo rầm rộ, chỉ chưa đầy hai năm sau khi phát hành phần mềm máy khách cho phép nó theo mặc định, phần lớn giao tiếp giữa các nút Bitcoin cuối cùng lại sử dụng giao thức vận chuyển v2 được mã hóa.
Ý tưởng mã hóa lưu lượng 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 Đề xuất cải tiến Bitcoin (BIP) 151, cho phép nâng cấp các kết nối để chuyển chúng sang chế độ mã hóa. Đề xuất này không tiến xa, và vì phương pháp đó không thể che giấu quá trình bắt tay ban đầu giữa hai nút khỏi những con mắt tò mò, nên Đề xuất cải tiến Bitcoin (BIP) 324 đã được đề xuất vào năm 2019 để thay đổi hoàn toàn giao thức vận chuyển. Phương pháp hiện đại hơn này đã giới thiệu một loại kết nối hoàn toàn mới được mã hóa ngay từ đầu. Tiến độ phát triển được đẩy nhanh khi Dhruv Mehta tiếp nhận dự án vào năm 2021, và cùng với Tim Ruffing và tôi, đã biến nó thành một đề xuất hoàn chỉnh bao gồ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 và các phần mở rộng tùy chọn. Chúng tôi đã thông báo về điều này trên danh sách gửi thư bitcoin-dev vào năm 2022, và sau khi nhận được một số phản hồi, chúng tôi đã triển khai nó trong suốt năm 2022 và 2023. Tính năng đầy đủ đã được hợp nhất vào Bitcoin Core 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ới các peer hỗ trợ) vào năm 2024.
Tính năng luồng byte hoàn toàn giả ngẫu nhiên được cung cấp bởi giao thức mới có nghĩa là nó không thể hiện bất kỳ mẫu nào có thể nhận dạng được trong các byte được gửi qua đường truyền. Ví dụ, TLS, được sử dụng để liên lạc với các trang web an toàn (URL “https://”), mã hóa nội dung của các trang web, nhưng không mã hóa việc TLS đang được sử dụng, hoặc (cho đến năm 2020 với Encrypted Client Hello, “ECH”) tên máy chủ mà trang web đang được yêu cầu từ đó. Giao thức truyền tải v1 được sử dụng trước Đề xuất cải tiến Bitcoin (BIP) 324 gửi 16 byte đầu tiên cố định rất dễ nhận dạng trên mỗi kết nối, khiến cho các tường lửa kiểm duyệt dễ dàng Block bất kỳ kết nối nào có mẫu đó. Ngược lại, giao thức truyền tải v2 hoàn toàn không có mẫu như vậy; mỗi byte đều ngẫu nhiên đồng nhất từ góc nhìn của bên thứ ba, và do đó hoàn toàn không thể dự đoán được. Bất kỳ thực thể nào có ý định Block lưu lượng Bitcoin sử dụng nó sẽ cần phải Block bất cứ thứ gì trông có vẻ 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ỉ chặn hẹp lưu lượng truy cập giống Bitcoin. Phần khó nhất trong việc tạo ra toàn bộ giao thức giả ngẫu nhiên là ở chỗ trong quá trình bắt tay – trước khi thiết lập mã hóa – các nút cần trao đổi khóa công khai, và khóa công khai không chỉ là các byte ngẫu nhiên. Chỉ nhờ một kỹ thuật mật mã khá hiện đại gọi là Elligator (2013), và cụ thể là một biến thể gọi là ElligatorSwift (2022) cho phép mã hóa các khóa công khai đường cong elliptic thành các byte trông có vẻ ngẫu nhiên, mà người ta mới có thể tránh được ngay cả mô hình này.
Cần lưu ý rằng do tính chất công khai của mạng Bitcoin, có những hạn chế đáng kể đối với việc bảo vệ quyền riêng tư mà lớp truyền tải mã hóa giữa các nút có thể cung cấp. Các nút Bitcoin không đặt niềm tin vào các nút khác, và do đó thực sự không quan tâm đến việc chúng đang nói chuyện với ai. Các nút Bitcoin không có khóa công khai đã biết, đó là lý do tại sao mã hóa được cung cấp bởi lớp truyền tải v2 mang tính cơ hội và không được xác thực; cả hai phía chỉ tạo ra 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à các đối thủ chủ động (ví dụ: nhà cung cấp dịch vụ Internet của bạn) có thể thực hiện tấn công trung gian: nói chuyện bằng v2 với cả hai phía của kết nối, nhưng giải mã và mã hóa lại tất cả thông tin liên lạc giữa chúng, vẫn cho phép theo dõi, và có thể can thiệp hoặc kiểm duyệt trong quá trình đó. Tuy nhiên, vấn đề là việc này tốn kém hơn đáng kể khi thực hiện trên quy mô lớn, so với việc chỉ đơn giản là kiểm tra các tin nhắn riêng lẻ không được mã hóa như có thể thực hiện trong lớp truyền tải v1. Và dĩ nhiên, vì hầu hết các kết nối Bitcoin được thực hiện một cách tùy ý đến các nút không đáng tin cậy ngẫu nhiên, nên kẻ thù muốn do thám các nút khác trên quy mô lớn luôn có lựa chọn là tự tạo ra một lượng lớn các nút và khiến một phần lớn mạng lưới kết nối với chúng. Giống như các cuộc tấn công trung gian (man-in-the-middle), việc này tốn kém hơn nhiều so với việc chỉ đơn giản là kiểm tra các gói v1.
Do đó, Đề xuất cải tiến Bitcoin (BIP) 324 không nên được xem là một cải tiến về quyền riêng tư tự thân, mà là một phần của nỗ lực lớn hơn nhằm tăng chi phí cho việc giám sát quy mô lớn mạng Bitcoin, mà không cần dựa vào các mạng thay thế như Tor hoặc I2P, vốn có những đánh đổi riêng như độ trễ cao hơn và rủi ro từ chối dịch vụ mà không thể chấp nhận được đối với tất cả các nút trên mạng. Đề xuất cải tiến Bitcoin (BIP) 324 cũng cung cấp một số tính năng chưa được triển khai, chẳng hạn như định hình lưu lượng để tránh tiết lộ thông tin về các giao dịch được chuyển tiếp chỉ bằng cách quan sát kích thước của các gói được mã hóa. Hy vọng rằng, những tính năng này sẽ được tận dụng nhiều hơn trong những năm tới.

Đừng bỏ lỡ cơ hội sở hữu ấn phẩm The Core Issue — với các bài viết được chấp bút bởi nhiều lập trình viên cốt lõi, giải thích chi tiết về các dự án mà họ đang thực hiện!
Bài viết này là Thư của Biên tập viên đăng trong ấn bản in mới nhất của Tạp chí Bitcoin, Số cốt lõi. Chúng tôi chia sẻ bài viết này ở đây như một cái nhìn sơ lược về những ý tưởng được khai thác xuyên suốt toàn bộ số báo.
Bài viết này, "Giao dịch v2: Lưu lượng truy cập Bitcoin P2P bị gián đoạn", lần đầu tiên xuất hiện trên Bitcoin Magazine và được viết bởi Pieter Wuille .



