Mã hóa và khóa
Lớp bảo mật này quản lý secret của hệ thống. Bao gồm khóa mã hóa, cặp khóa ký và chứng chỉ định danh.
Key manager và key provider
File: hierachain/security/key_manager.py, key_provider.py
Đoạn code này tạo và sử dụng cặp khóa:
- Hỗ trợ Ed25519 cho chữ ký số nhanh và an toàn.
-
Provider có thể thay thế hỗ trợ nhiều nguồn khóa:
LocalKeyProvidergiữ khóa trong bộ nhớ cục bộ.FileVaultProvidergiữ dữ liệu mã hóa trên đĩa bằng Fernet, dùng AES-128-CBC với HMAC.
-
KeyManager.revoke_key()của API server lưu bền vững API key đã thu hồi qua SQLite hoặc Redis dùng chung đã cấu hình. Kiểm tra thu hồi không dùng kết quả permission trong cache.
Chứng chỉ và định danh (MSP)
File: hierachain/security/msp.py (Certificate, CertificateAuthority, HierarchicalMSP)
Đoạn code này quản lý định danh nội bộ nhẹ, không phải X.509:
- Chứng chỉ nội bộ là dataclass
Certificatevớicert_id,subject,public_key,signature(ký Ed25519 qua_sign_certificate) và kiểm tra thời hạnis_valid(). Không có ASN.1 X.509 và không có mTLS. - CA có các thao tác
CertificateAuthority.issue_certificate(),revoke_certificate()vàverify_certificate(), với dictionaryissued_certificatesvà setrevoked_certificatestrong bộ nhớ.HierarchicalMSPdùng chúng khi đăng ký tổ chức và thực thể. - Hạn chế: thu hồi chứng chỉ MSP chỉ tồn tại trong bộ nhớ. Không có phân phối CRL, không có xác thực chuỗi X.509 và không có mutual TLS giữa các component. TLS được đặt ở reverse proxy theo quy tắc kiến trúc.
Sao lưu và khôi phục khóa
File: hierachain/cli/key.py, hierachain/security/key_provider.py (FileVaultProvider)
Operator quản lý sao lưu bằng công cụ bên ngoài. Các cơ chế file khóa hiện có gồm:
- Chạy
hrc key generate --output validator_key.json(CLI) để tạo cặp Ed25519 bằngEd25519PrivateKey.generate()và ghi JSON hex{private_key, public_key}. File mới có mode0600trên POSIX; lệnh từ chối ghi đè file đã tồn tại. Các lệnhshowvàverifykiểm tra kết quả. - Vault mã hóa (chỉ cho dev và test) dùng
FileVaultProviderđể mã hóa file vault bằngPBKDF2HMAC(SHA256, 310_000 iter)vàFernet(AES-128-CBC+HMAC). Password được truyền vào constructor. Hỗ trợ HSM hoặc KMS ở production cần mộtKeyProviderriêng cho ứng dụng; runtime không có master-key provider dựng sẵn.HRC_VAULT_TOKENvàHRC_VAULT_PATHcấu hình backend Vault riêng củaSecretManager. - Không có sao lưu đa vị trí, không có kiểm tra toàn vẹn SHA-512 và không có tự động phân phối hay dọn dẹp. Operator phải tự sao chép
validator_key.jsonhoặc.vaultbằng công cụ sao lưu ngoài.
Phạm vi khóa
- Việc ký block nạp node identity đầy đủ qua
HRC_VALIDATOR_IDENTITY, gồm cặp khóa ký Ed25519 và khóa transport. File CLI chỉ chứaprivate_keyvàpublic_keylà file provider, không phải identity đầy đủ này. Sao lưu identity cùngHRC_BLOCK_TRUSTED_KEYS_FILE; xem Sao lưu khóa.HRC_MASTER_KEY_SOURCE=envchỉ là alias tương thích; giá trị khác vàHRC_MASTER_KEY_FILEkhông rỗng bị từ chối vì chưa có master-key provider. - API key được quản lý bởi
KeyManager(tạo, thu hồi, phân quyền, cache quaKeyStorage/KeyCacheManager), không phải khóa ký cho từng entity. - Không có phân cấp sẵn như Master tới Domain tới Entity. Cách ly domain dựa trên việc tách Sub-Chain và role của MSP.
Luồng khởi tạo chứng chỉ
graph LR
A[Generate Ed25519 Key Pair<br/>cli/key.py] --> B[HierarchicalMSP.register_entity<br/>msp.py]
B --> C[CA.issue_certificate<br/>Ed25519 sign]
C --> D[Store in issued_certificates]
D --> E[verify_certificate / revoke_certificate]