Network Module (hierachain/network/*)
Tổng quan
Module Network là lớp xương sống cho phép các nút (Nodes) trong mạng lưới HieraChain giao tiếp với nhau. Được thiết kế với triết lý "Bảo mật đa tầng" (Defense-in-Depth), module này kết hợp sức mạnh truyền tải của ZeroMQ với các thuật toán mật mã hiện đại để đảm bảo mọi thông điệp đều được mã hóa, xác thực và chống giả mạo.
Kiến trúc Bảo mật Đa tầng (Layered Security)
HieraChain không chỉ dựa vào một lớp bảo mật duy nhất mà kết hợp ba lớp bảo vệ độc lập:
-
Lớp 1: CurveZMQ (Transport)
Công nghệ: Curve25519
- Mã hóa toàn bộ đường truyền giữa các Socket ZeroMQ.
- Đảm bảo tính riêng tư (Privacy) và chống nghe lén trên mạng Web2.
- Sử dụng khóa ephemeral để đảm bảo Forward Secrecy.
-
Lớp 2: MSP Handshake (Identity)
Công nghệ: Ed25519 + Certificates
- Xác thực danh tính nút thông qua chứng chỉ MSP (Membership Service Provider).
- Chỉ cho phép các nút thuộc tổ chức (Organization) hợp lệ tham gia mạng lưới.
- Quy trình Handshake 2 bước:
INITvàACK.
-
Lớp 3: Integrity & Replay Protection
Công nghệ: Ed25519 + Nonce + Timestamp
- Mọi thông điệp P2P đều được ký số (Digital Signature).
- Chống tấn công lặp lại (Replay Attacks) bằng cách kiểm tra Nonce duy nhất và Timestamp trong cửa sổ cho phép (60s).
Các thành phần cốt lõi
1. ZMQ Transport (zmq_transport.py)
Hiện thực hóa mô hình P2P không đồng bộ sử dụng Socket ROUTER (để nhận) và DEALER (để gửi).
- Hiệu năng: Xử lý hàng nghìn thông điệp mỗi giây với độ trễ cực thấp.
- Identity Management: Quản lý định danh các nút ở mức socket để định tuyến chính xác.
2. Secure Connection Manager (secure_connection.py)
Điều phối quy trình thiết lập kết nối an toàn:
- Thiết lập kênh mã hóa Curve25519.
- Thực hiện Handshake để trao đổi và xác thực chứng chỉ MSP.
- Quản lý danh sách các Peer đã được xác thực (
authenticated_peers).
3. Peer Trust Manager (peer_trust_manager.py)
Quản lý độ tin cậy của các nút lân cận:
- Policy Enforcement: Áp dụng các chính sách
strict(chỉ cho phép allowlist) hoặcdiscovery(cho phép tự động khám phá). - Reputation: Đánh dấu và ngắt kết nối với các Peer có hành vi xấu (sai chữ ký, gửi thông điệp rác).
Quy trình Thiết lập Kết nối An toàn (Secure Handshake)
sequenceDiagram
participant NodeA as Node A (Initiator)
participant NodeB as Node B (Responder)
Note over NodeA, NodeB: 1. Curve25519 Encrypted Channel Established
NodeA->>NodeB: HANDSHAKE_INIT (MSP Cert + Ed25519 Sig)
Note right of NodeB: Verify Trust Policy<br/>Verify MSP Certificate<br/>Verify Handshake Signature
NodeB-->>NodeA: HANDSHAKE_ACK (Success + Ed25519 Sig)
Note left of NodeA: Verify ACK Signature
Note over NodeA, NodeB: 2. Authenticated P2P Channel Ready
Ví dụ sử dụng
1. Khởi tạo Node Bảo mật
from hierachain.network.secure_connection import SecureConnectionManager
# Khởi tạo manager tích hợp MSP
secure_node = SecureConnectionManager(
node_id="node_001",
port=5001,
msp=msp_instance,
identity_mgr=identity_instance
)
await secure_node.start()
2. Gửi thông điệp có ký số
# Tự động ký và gửi qua kênh đã mã hóa
payload = {"event": "block_proposal", "data": {...}}
await secure_node.send_secure("peer_002", payload)
Cấu hình P2P (Environment Variables)
| Biến môi trường | Chức năng | Giá trị khuyến nghị (Prod) |
|---|---|---|
HRC_P2P_TRUST_POLICY |
Chính sách tin cậy | strict |
HRC_P2P_REQUIRE_SIGNATURES |
Bắt buộc chữ ký Ed25519 | true |
HRC_P2P_ALLOWLIST |
Danh sách Peer ID tin cậy | (Danh sách ID cụ thể) |