Phiếu truy cập ký mù và thông tin xác thực truy cập ẩn danh
Cách phiếu truy cập VPN của AeroNyx cho phép một nút xác minh việc thanh toán mà không biết tài khoản đã thanh toán, những gì chế độ triển khai reject_invalid vẫn cho phép, những gì nút và backend vẫn có thể thấy, và vì sao cơ chế cấp quyền Blind Vault đã được triển khai trong mã nhưng chưa được đưa vào vận hành.
AeroNyx sử dụng phiếu truy cập được ký mù để một nút VPN có thể kiểm tra rằng một kết nối đã được thanh toán mà không biết tài khoản nào đã thanh toán. Cơ chế này hiện đang hoạt động cho VPN, ở chế độ tương thích vẫn chấp nhận các kết nối không có phiếu truy cập. Một tuyến thông tin xác thực thứ hai, cơ chế cấp quyền Blind Vault, có trong phần mềm nút nhưng chưa được triển khai và không được ứng dụng chính thức sử dụng.
Hai tuyến thông tin xác thực
| Tuyến thông tin xác thực | Trạng thái | Mô hình sử dụng |
|---|---|---|
| Phiếu truy cập trong bắt tay VPN | Đang hoạt động. Chạy ở chế độ tương thích reject_invalid | Nút kiểm tra chữ ký. Nút không theo dõi việc sử dụng một lần |
| Cấp quyền Blind Vault V2 | Đã triển khai trong nút. Chưa được đưa vào vận hành, và không được ứng dụng chính thức sử dụng | Việc sử dụng một lần được ghi lại một cách nguyên tử cùng với việc tạo hợp đồng thuê |
| Cấp quyền Blind Vault V1 | Chỉ để tương thích, trong cùng thành phần đang bị tắt | Sử dụng một lần, nhưng việc phát hành có thể được liên kết với việc sử dụng |
Cách một phiếu truy cập VPN được phát hành
- Ứng dụng tạo một token ngẫu nhiên 32 byte và làm mù nó cục bộ, sử dụng chữ ký mù RSA (RSABSSA-SHA384-PSS-Randomized, RFC 9474).
- Ứng dụng chỉ gửi thông điệp đã làm mù tới backend của AeroNyx tại
/api/voucher/issue/. Backend kiểm tra rằng tài khoản đang đăng nhập có quyền, ký thông điệp đã làm mù và trả về chữ ký. Backend không bao giờ thấy token. - Ứng dụng hoàn tất chữ ký cục bộ. Phiếu truy cập hoàn chỉnh (token, chữ ký, giá trị ngẫu nhiên hóa thông điệp và kỳ khóa) là một thông tin xác thực vô danh (bearer credential) không được liên kết với yêu cầu phát hành.
Các khóa công khai của bên phát hành, được nhóm theo kỳ, được công bố tại:
GET https://api.aeronyx.network/api/voucher/issuer/keys/
Cách một nút kiểm tra phiếu truy cập
Ứng dụng gắn thêm một phần mở rộng phiếu truy cập vào ClientHello của VPN:
ClientHello fixed frame
+ magic: AVCH
+ voucher_length: u16 little-endian
+ voucher JSON (maximum 2048 bytes)
{
"token": "base64-32-byte-token",
"signature": "base64-finalized-blind-signature",
"msg_randomizer": "base64-32-byte-randomizer",
"epoch": "issuer-key-epoch"
}
Nút chỉ phân tích các trường này. Nút lấy các khóa công khai của bên phát hành cho kỳ tương ứng từ điểm cuối nêu trên, lưu đệm chúng trong một giờ và xác minh chữ ký RSA-PSS SHA-384 ngẫu nhiên hóa. Nút không cần bất kỳ định danh ví hay tài khoản nào.
Chế độ triển khai: reject_invalid
- Các phiếu truy cập sai định dạng và không hợp lệ về mặt mật mã bị từ chối trước khi bắt tay được chấp nhận.
- Một kết nối hoàn toàn không có phiếu truy cập vẫn được chấp nhận, để các máy khách cũ hơn tiếp tục hoạt động. Việc sử dụng phiếu truy cập chưa phải là bắt buộc.
- Nút không ghi lại các phiếu truy cập đã sử dụng. Các nút chấp nhận một phiếu truy cập hợp lệ bao nhiêu lần tùy theo số lần nó được xuất trình, miễn là kỳ khóa phát hành của nó vẫn được công bố. Các giới hạn về chia sẻ, phát lại và hạn mức được backend thực thi, không phải nút.
Các nút chỉ báo cáo các kết quả tổng hợp:
mode = reject_invalid
valid | invalid | missing | malformed | total
valid_ratio | invalid_ratio | missing_ratio | malformed_ratio
last_observation | last_error
Nút biết được gì về bạn
Đảm bảo rằng "nút không bao giờ biết danh tính ví của bạn" chỉ đúng với các kết nối dùng phiếu truy cập.
- Kết nối dùng phiếu truy cập (ứng dụng chính thức): ứng dụng kết nối bằng một phiếu truy cập và một khóa bắt tay tạm thời mới. Nút có thể xác minh việc thanh toán nhưng không thể liên kết phiên với ví hoặc danh tính P2P của bạn.
- Kết nối kiểu cũ: một máy khách xác thực bằng khóa danh tính của nó thay vì phiếu truy cập sẽ gửi khóa đó trong quá trình bắt tay.
Trong cả hai trường hợp, nút báo cáo khóa công khai bắt tay của phiên cho backend của AeroNyx trong một trường có tên client_wallet, cùng với thời gian phiên và số byte. Đối với kết nối dùng phiếu truy cập, giá trị đó là khóa tạm thời. Đối với kết nối kiểu cũ, đó là khóa danh tính của máy khách. Nhà vận hành nút có thể thấy lưu lượng theo từng phiên và các khóa này trong Nodeboard.
Phiếu truy cập cũng không che giấu mọi thứ khác. Nút vẫn thấy địa chỉ IP của bạn và, với vai trò điểm thoát, thấy đích đến và DNS của bạn, giống như mọi VPN. Khi ứng dụng giữ chỗ một kết nối hằng ngày, backend cũng ghi lại rằng tài khoản đã kết nối vào thời điểm đó, nhưng không ghi lại nút nào đã được sử dụng. Xem So sánh VPN và Trung tâm Tin cậy.
Cấp quyền Blind Vault (chưa triển khai)
Blind Vault là một thành phần nút dùng để lưu các đối tượng được mã hóa phía máy khách theo các hợp đồng thuê ẩn danh. Thành phần này được mô tả trong MemChain và Blind Vault. Thiết kế cấp quyền của nó:
- V2: máy khách làm mù một thông điệp cấp quyền theo RFC 9474. Một dịch vụ quyền lợi cho phép việc phát hành, và một tiến trình ký riêng biệt (
aeronyx-blind-issuer) chỉ ký các byte đã làm mù. Tiến trình đó không có cơ sở dữ liệu tài khoản, kho lưu trữ hay khả năng nhìn thấy việc sử dụng. Nút xác minh thông tin xác thực đã hoàn tất dựa trên một kỳ khóa công khai được chỉ định cố định và, trong một giao dịch SQLite duy nhất, ghi lại một dấu sử dụng và tạo một hợp đồng thuê ngẫu nhiên, tự xác thực. Một thông tin xác thực đã sử dụng không thể tạo hợp đồng thuê thứ hai. Thử lại đúng cùng một yêu cầu sẽ trả về cùng một hợp đồng thuê. - V1: một vé vô danh với cùng bảng sử dụng một lần. Nút lưu danh tính của vé, vì vậy việc sử dụng có thể được liên kết với việc phát hành. Phiên bản này chỉ được giữ lại để tương thích.
Nút chỉ mở các tuyến này khi cả Blind Vault lẫn API công khai của nó đều được bật. Cả hai đều được tắt theo mặc định.
GET /api/vault/v1/issuers
POST /api/vault/v1/lease
POST /api/vault/v1/put
POST /api/vault/v1/pull
POST /api/vault/v1/delete
Trạng thái hiện tại: Blind Vault chưa được triển khai trên các nút sản xuất, ứng dụng chính thức không gọi các tuyến này, và backend của AeroNyx không có điểm cuối quyền lợi Blind Vault. Blind Vault không phải là sản phẩm sao lưu, lưu trữ dài hạn hay lưu trữ, và không có sản phẩm nào như vậy được cung cấp.
Khả năng quan sát
Các giao diện dành cho nhà vận hành chỉ hiển thị tình trạng thông tin xác thực ở dạng tổng hợp:
- tổng số và tỷ lệ
valid,invalid,missingvàmalformedcủa VPN, cùng chế độ triển khai - tình trạng sẵn có của khóa phát hành và các nhóm lỗi ở mức thô
Chúng không bao giờ hiển thị token, chữ ký, giá trị ngẫu nhiên hóa, thông điệp đã làm mù hay ID sử dụng của phiếu truy cập. Lưu lượng cấp phiên và khóa bắt tay là một chế độ xem riêng dành cho nhà vận hành, như đã mô tả ở trên.
Mô hình mối đe dọa và giới hạn
Chữ ký mù phá vỡ liên kết giữa yêu cầu phát hành và phiếu truy cập. Chữ ký mù không loại bỏ các rủi ro sau:
- đối chiếu thời gian giữa các bản ghi phát hành hoặc giữ chỗ kết nối của backend với các bản ghi phiên của nút, đặc biệt khi một bên có thể thấy cả hai
- nút thấy địa chỉ IP, đích đến và DNS của bạn
- phiếu truy cập bị đánh cắp, chia sẻ hoặc bán lại trong thời gian kỳ khóa của nó còn được công bố, vì các nút không thực thi việc sử dụng một lần
- các kết nối không có phiếu truy cập, vốn vẫn được chấp nhận ở chế độ
reject_invalid - lỗi xoay vòng khóa phát hành hoặc máy khách bị xâm nhập
Sơ đồ mã nguồn
| Tầng | Đường dẫn trong kho mã nút | Vai trò |
|---|---|---|
| Trình xác minh VPN | crates/aeronyx-server/src/voucher_verifier.rs | Phân tích AVCH, lấy khóa theo kỳ, xác minh phiếu truy cập và ghi lại kết quả tổng hợp |
| Bên ký mù | crates/aeronyx-blind-issuer/src/signer.rs, api.rs | Ký mù RSA không cần danh tính cho Blind Vault V2 |
| Hợp đồng định dạng truyền | crates/aeronyx-core/src/protocol/blind_vault.rs | Thông điệp cấp quyền RFC 9474, kỳ khóa và ID sử dụng |
| Dịch vụ và API Blind Vault | crates/aeronyx-server/src/services/blind_vault.rs, api/blind_vault.rs | Cấp quyền, sử dụng và tạo hợp đồng thuê nguyên tử, các tuyến đối tượng |
| Cấu hình Blind Vault | crates/aeronyx-server/src/config_blind_vault.rs | Tắt theo mặc định; quy tắc chỉ định cố định và xoay vòng bên phát hành |
Phần mềm nút là mã nguồn mở theo giấy phép AGPL-3.0 tại github.com/AeroNyxNetwork/AeroNyx. Ứng dụng không phải là mã nguồn mở.
<!-- faq:start -->Câu hỏi thường gặp
Nút VPN của AeroNyx có biết tôi đã thanh toán bằng ví nào không?
Không, đối với các kết nối dùng phiếu truy cập, vốn là loại kết nối mà ứng dụng chính thức sử dụng. Nút xác minh một phiếu truy cập được ký mù và một khóa bắt tay tạm thời, cả hai đều không được liên kết với ví của bạn. Một máy khách kiểu cũ kết nối bằng khóa danh tính của nó thì có để lộ khóa đó cho nút.
Một phiếu truy cập có thể được sử dụng nhiều lần không?
Có. Các nút xác minh chữ ký dựa trên khóa đã công bố cho kỳ của phiếu truy cập nhưng không giữ danh sách các phiếu truy cập đã sử dụng. Hạn mức được backend thực thi.
Có bắt buộc phải có phiếu truy cập để kết nối không?
Chưa. Các nút từ chối phiếu truy cập sai định dạng hoặc không hợp lệ nhưng vẫn chấp nhận các kết nối không có phiếu truy cập nào, để các máy khách cũ hơn tiếp tục hoạt động.
Các khóa phát hành phiếu truy cập được công bố ở đâu?
Các khóa được công bố tại https://api.aeronyx.network/api/voucher/issuer/keys/, được nhóm theo kỳ. Các nút lưu đệm các khóa này trong một giờ.
Blind Vault có khả dụng trong ứng dụng không?
Không. Cơ chế cấp quyền Blind Vault đã được triển khai trong phần mềm nút nhưng bị tắt theo mặc định, chưa được đưa vào vận hành, và không được ứng dụng chính thức sử dụng. AeroNyx không cung cấp sản phẩm sao lưu hay lưu trữ nào.
<!-- faq:end -->