news 2026/8/23 13:41:29

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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.rs

Stronghold 是一个用 Rust 编写的密钥管理引擎(secret management engine),它的核心抽象是Procedure(过程):每一种密码学操作都被封装成一个 Procedure,对加密保险库(Vault)中的秘密执行"生成、派生、使用"三类动作。本文带你快速扫完内置的全部 22 个 Stronghold Procedures——从 BIP39 助记词生成、SLIP10 密钥派生到 Ed25519 消息签名——并教你按场景挑选最合适的过程。

什么是 Procedure:Stronghold 密码学操作的统一抽象

每个 Procedure 都声明了自己的秘密来源 Location(source,Vault 中的记录位置)与写回位置(target),引擎保证秘密只在受保护的内存缓冲区中流转,不会以明文形式暴露给宿主应用。

按对秘密的作用,源码client/src/procedures/types.rs将过程抽象为三个 trait:

Trait含义典型场景
GenerateSecret生成全新秘密并写入保险库BIP39 助记词生成
DeriveSecret用现有秘密派生出新秘密SLIP10 派生、HKDF
UseSecret使用秘密,只返回公开输出Ed25519 签名、HMAC

全部 22 个具体过程集中定义在client/src/procedures/primitives.rs中,并统一收敛为StrongholdProcedure枚举(第 40~65 行)。

22 个 Stronghold Procedures 速查表

分类过程它做什么
📦 保险库管理WriteVault把任意数据写入指定 Location
RevokeData吊销(标记删除)一条记录,可自动 GC
GarbageCollect物理清理已吊销记录
CopyRecord将秘密从一个 Location 复制到另一个
🧠 助记词与种子BIP39Generate生成 BIP39 助记词,种子存入保险库
BIP39Recover由助记词恢复种子(支持 passphrase)
Slip10Generate直接生成原始 SLIP10 种子(默认 64 字节)
🔑 密钥派生Slip10Derive从种子或父密钥派生子密钥,返回链码
HkdfHKDF 密钥扩展(SHA-256/384/512)
ConcatKdfNIST 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-KW)
AesKeyWrapDecrypt解包裹密钥并写入指定 Location
🧮 KDF / MACPbkdf2HmacPBKDF2 密码派生(HMAC-SHA2/384/512)
Hmac用库内密钥计算 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/AeadDecrypt:AEAD 加密(AES-256-GCM 或 XChaCha20-Poly1305),需 nonce 与 associated_data;加密输出为 tag + 密文拼接。
  • AesKeyWrapEncrypt/AesKeyWrapDecrypt:用库内密钥"包裹"另一把密钥(AES-256-KW),是构建密钥层级的常用模式。
  • Pbkdf2Hmac:从口令经 PBKDF2(指定盐与迭代次数)派生密钥。
  • Hmac:用库内密钥计算 HMAC-SHA256/384/512 消息认证码。

如何选对 Procedure:场景速配清单 🎯

  1. 需要助记词备份?BIP39Generate/BIP39Recover;不需要则Slip10Generate更轻量。
  2. 多账户/多路径派生Slip10Derive+Ed25519Sign
  3. P2P 安全信道X25519DiffieHellmanConcatKdf派生会话密钥 →AeadEncrypt加密数据。
  4. 口令场景Pbkdf2Hmac密钥层级AesKeyWrapEncrypt/Decrypt
  5. 清理旧密钥RevokeDatashould_gc = true自动清理)或单独执行GarbageCollect
  6. ⚠️CompareSecret仅编译insecure特性时存在,源码明确标注禁止用于生产环境

关键源码与测试位置

  • 22 个过程的具体定义:client/src/procedures/primitives.rs
  • 三大 trait 抽象(GenerateSecret / DeriveSecret / UseSecret):client/src/procedures/types.rs
  • 引擎桥接实现(Runner / ClientRunner):client/src/procedures/clientrunner.rs
  • Location(Vault 路径 + 记录 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 13:39:37

orga分词器源码剖析:基于text-kit读取器的lexer逐行设计解读

orga分词器源码剖析:基于text-kit读取器的lexer逐行设计解读 【免费下载链接】orgajs parse org-mode content into AST 项目地址: https://gitcode.com/gh_mirrors/or/orgajs orga 是 orgajs 中解析 org-mode 文本的核心包,它的分词器&#xff0…

作者头像 李华
网站建设 2026/8/23 13:35:16

流媒体时代,本地音乐播放器如何以“简洁”定义核心价值?

最近在折腾本地音乐库,发现一个挺有意思的现象:很多播放器要么功能堆砌得像个“瑞士军刀”,要么界面复杂得让人无从下手。直到我遇到一个叫“简音”的播放器,它的设计理念让我停下来思考了很久:一个音乐播放器&#xf…

作者头像 李华
网站建设 2026/8/23 13:31:42

工业具身智能落地的工程基石:从概念到实战的系统化底座构建指南

大家好,我是专注于工业自动化与智能制造领域的技术博主。在近期的项目实践中,我发现一个现象:当我们将“工业具身智能”这个听起来很前沿的概念引入到实际的工厂产线时,往往会遇到一个共同的瓶颈——从实验室的“Demo”到产线的“…

作者头像 李华
网站建设 2026/8/23 13:28:00

为什么你的Redis客户端太慢?异步Redis客户端aredis完整概览

为什么你的Redis客户端太慢?异步Redis客户端aredis完整概览 【免费下载链接】aredis redis client for Python asyncio (has support for redis server, sentinel and cluster) 项目地址: https://gitcode.com/gh_mirrors/ar/aredis aredis 是一款高效易用的…

作者头像 李华