用途:在 Internet Computer 上实现链上隐私。容器通过 vetKD 系统 API 请求由子网门限密钥派生基础设施生成的密钥,密钥以客户端提供的传输公钥加密返回,只有客户端能本地解密;子网节点看不到原始密钥,标准客户端交付模式下容器也看不到。派生是确定性的:相同(容器、context、input)始终得到相同密钥。
主要能力:对称密钥派生、身份基加密(IBE)与定时锁、门限 BLS 签名、可验证随机数(VRF)、离线公钥派生,以及更高层的加密键值存储(EncryptedMaps/KeyManager)。
使用方式:应使用维护中的库,不要手写密码学或 Candid 接口。Rust 用 ic-vetkeys 0.9,Motoko 用 ic-vetkeys 0.6,前端用 @icp-sdk/vetkeys 0.7(@dfinity/vetkeys 已冻结于 0.4.0)。管理 API 有两个端点:vetkd_public_key(免费)与 vetkd_derive_key(消耗 cycles,key_1 为 26_153_846_153,test_key_1 为 10_000_000_000)。前端流程:生成传输密钥、取回加密密钥与验证公钥、decryptAndVerify 得到 VetKey、再 asDerivedKeyMaterial 派生 AES-GCM 密钥材料。
限制:context 与 input 必须端到端一致,否则解密验证会抛错;input 为明文,只能作标识符,不可放秘密数据;Motoko 库无 IBE、传输密钥、MasterPublicKey/DerivedPublicKey 或 vetKey 解密,需由前端或 Rust 客户端完成;BLS 使用未加密 vetKey;Rust Wasm 的 IBE 需随机数 shim;直接调用派生时须自行做授权校验。部署与 icp.yaml 属 icp-cli 技能范围。