尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Stronghold Procedures 完全参考:BIP39、SLIP10、Ed25519 签名等 20+ 密码学操作一览

Stronghold Procedures 完全参考:BIP39、SLIP10、Ed25519 签名等 20+ 密码学操作一览 Stronghold Procedures 完全参考BIP39、SLIP10、Ed25519 签名等 20 密码学操作一览【免费下载链接】stronghold.rsStronghold is a secret management engine written in rust.项目地址: https://gitcode.com/gh_mirrors/st/stronghold.rsStronghold 是一个用 Rust 编写的密钥管理引擎secret management engine它的核心抽象是Procedure过程每一种密码学操作都被封装成一个 Procedure对加密保险库Vault中的秘密执行生成、派生、使用三类动作。本文带你快速扫完内置的全部 22 个 Stronghold Procedures——从 BIP39 助记词生成、SLIP10 密钥派生到 Ed25519 消息签名——并教你按场景挑选最合适的过程。什么是 ProcedureStronghold 密码学操作的统一抽象每个 Procedure 都声明了自己的秘密来源 LocationsourceVault 中的记录位置与写回位置target引擎保证秘密只在受保护的内存缓冲区中流转不会以明文形式暴露给宿主应用。按对秘密的作用源码client/src/procedures/types.rs将过程抽象为三个 traitTrait含义典型场景GenerateSecret生成全新秘密并写入保险库BIP39 助记词生成DeriveSecret用现有秘密派生出新秘密SLIP10 派生、HKDFUseSecret使用秘密只返回公开输出Ed25519 签名、HMAC全部 22 个具体过程集中定义在client/src/procedures/primitives.rs中并统一收敛为StrongholdProcedure枚举第 40~65 行。22 个 Stronghold Procedures 速查表分类过程它做什么 保险库管理WriteVault把任意数据写入指定 LocationRevokeData吊销标记删除一条记录可自动 GCGarbageCollect物理清理已吊销记录CopyRecord将秘密从一个 Location 复制到另一个 助记词与种子BIP39Generate生成 BIP39 助记词种子存入保险库BIP39Recover由助记词恢复种子支持 passphraseSlip10Generate直接生成原始 SLIP10 种子默认 64 字节 密钥派生Slip10Derive从种子或父密钥派生子密钥返回链码HkdfHKDF 密钥扩展SHA-256/384/512ConcatKdfNIST SP 800-56A 5.8.1 拼接 KDF 签名与公钥GenerateKey随机生成 Ed25519 / X25519 密钥PublicKey由私钥计算 32 字节公钥Ed25519Sign用 Ed25519 密钥签名输出 64 字节签名 密钥交换X25519DiffieHellmanECDH 协商共享秘密并写入保险库 对称加密AeadEncryptAES-256-GCM 或 XChaCha20-Poly1305 加密AeadDecrypt对应解密校验认证标签AesKeyWrapEncrypt用库内另一把密钥包裹密钥AES-256-KWAesKeyWrapDecrypt解包裹密钥并写入指定 Location KDF / MACPbkdf2HmacPBKDF2 密码派生HMAC-SHA2/384/512Hmac用库内密钥计算 HMAC 消息认证码✂️ 秘密操作ConcatSecret拼接两个秘密为新的秘密⚠️ 非安全特性CompareSecret比较秘密与期望值仅 insecure 特性BIP39 助记词生成与恢复BIP39Generate生成 32 字节随机熵编码为 24 词助记词支持英文/日文词表64 字节种子存入 Vault助记词作为明文输出交给用户备份可选 passphrase 保护。BIP39Recover由助记词 passphrase 恢复种子并写入保险库用于换设备迁移。实现上对助记词与口令做了zeroize清零避免在内存中残留。SLIP10 派生与 Ed25519 签名工作流Slip10Generate不借助助记词直接生成随机种子默认 64 字节/512 位。注意走这条路后无法再反推出助记词需要助记词请改用BIP39Generate。Slip10Derive输入Slip10DeriveInput::Seed或::Key加派生路径Chain子密钥写入 output Location并返回对应的ChainCode。Ed25519Sign只要私钥记录的前 32 字节是 Ed25519 密钥材料即可直接签名——SLIP10 派生出的密钥完全兼容密钥全程不出保险库。GenerateKey/PublicKey面向非层级化场景直接生成密钥KeyType::Ed25519/KeyType::X25519并计算公钥。加密、密钥交换与密钥包裹X25519DiffieHellman本地 X25519 私钥 × 对端公钥 → 共享秘密写入保险库是 P2P 安全通道的起点。AeadEncrypt/AeadDecryptAEAD 加密AES-256-GCM 或 XChaCha20-Poly1305需 nonce 与 associated_data加密输出为 tag 密文拼接。AesKeyWrapEncrypt/AesKeyWrapDecrypt用库内密钥包裹另一把密钥AES-256-KW是构建密钥层级的常用模式。Pbkdf2Hmac从口令经 PBKDF2指定盐与迭代次数派生密钥。Hmac用库内密钥计算 HMAC-SHA256/384/512 消息认证码。如何选对 Procedure场景速配清单 需要助记词备份→BIP39Generate/BIP39Recover不需要则Slip10Generate更轻量。多账户/多路径派生→Slip10DeriveEd25519Sign。P2P 安全信道→X25519DiffieHellman→ConcatKdf派生会话密钥 →AeadEncrypt加密数据。口令场景→Pbkdf2Hmac密钥层级→AesKeyWrapEncrypt/Decrypt。清理旧密钥→RevokeDatashould_gc true自动清理或单独执行GarbageCollect。⚠️CompareSecret仅编译insecure特性时存在源码明确标注禁止用于生产环境。关键源码与测试位置22 个过程的具体定义client/src/procedures/primitives.rs三大 trait 抽象GenerateSecret / DeriveSecret / UseSecretclient/src/procedures/types.rs引擎桥接实现Runner / ClientRunnerclient/src/procedures/clientrunner.rsLocationVault 路径 记录 ID定义client/src/types/location.rs过程行为测试client/src/tests/procedure_tests.rs快速上手指南client/README.md【免费下载链接】stronghold.rsStronghold is a secret management engine written in rust.项目地址: https://gitcode.com/gh_mirrors/st/stronghold.rs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表