密钥管理
定义助记词、私钥的生成和存储规范
助记词规范
BIP39 标准
- MUST 遵循 BIP39 标准生成助记词
- MUST 支持 12 词(128 bits)和 24 词(256 bits)
- MUST 使用标准英文词库
- MAY 支持其他语言词库
词数与安全性
| 词数 | 熵 (bits) | 安全级别 |
|---|---|---|
| 12 | 128 | 标准 |
| 15 | 160 | 高 |
| 18 | 192 | 很高 |
| 24 | 256 | 最高 |
助记词验证规范
- MUST 验证单词是否在标准词库中
- MUST 验证校验和是否正确
- MUST 验证词数是否符合标准
- SHOULD 提示相似但错误的单词
多链地址派生
派生架构
助记词
│
▼
种子 (Seed)
│
├──────────────────────────────────────┐
│ │
▼ ▼
BIP32/BIP44 Ed25519
(外部链) (BioForest 链)
│ │
├── Ethereum (m/44'/60'/0'/0/x) ├── BFMeta
├── Bitcoin (m/44'/0'/0'/0/x) ├── PMChain
├── Tron (m/44'/195'/0'/0/x) └── CCChain
└── BSC (m/44'/60'/0'/0/x)BIP44 派生规范
| 链类型 | Coin Type | 派生路径 |
|---|---|---|
| Ethereum | 60 | m/44'/60'/0'/0/x |
| Bitcoin | 0 | m/44'/0'/0'/0/x |
| Tron | 195 | m/44'/195'/0'/0/x |
| BSC | 60 | m/44'/60'/0'/0/x |
BioForest 派生规范
BioForest 链使用 Ed25519 曲线:
- MUST 从种子派生 Ed25519 私钥
- MUST 支持链前缀区分不同网络
- SHOULD 使用 SHA256(seed + index) 作为私钥种子
加密存储规范
存储数据结构
| 字段 | 类型 | 加密 | 说明 |
|---|---|---|---|
| id | string | 否 | 钱包唯一标识 |
| name | string | 否 | 钱包名称 |
| encryptedMnemonic | EncryptedData | 是 | 加密的助记词 |
| chainAddresses | ChainAddress[] | 否 | 各链地址 |
| createdAt | number | 否 | 创建时间 |
| isBackedUp | boolean | 否 | 是否已备份 |
加密数据结构
| 字段 | 类型 | 说明 |
|---|---|---|
| ciphertext | string | Base64 编码的密文 |
| iv | string | Base64 编码的初始向量 |
| salt | string | Base64 编码的盐 |
| iterations | number | 密钥派生迭代次数 |
加密算法规范
| 用途 | 算法 | 参数 |
|---|---|---|
| 对称加密 | AES-256-GCM | 256-bit key, 96-bit IV |
| 密钥派生 | PBKDF2 | SHA-256, 100,000+ iterations |
加密要求
- MUST 使用 AES-GCM 模式(提供认证加密)
- MUST 使用随机生成的 IV(每次加密不同)
- MUST 使用随机生成的 Salt(每个钱包不同)
- MUST 使用高迭代次数的 PBKDF2(≥100,000)
- MUST NOT 存储明文助记词或私钥
密钥使用流程
创建钱包流程
用户绘制图案
│
▼
验证图案复杂度(至少4点)
│
▼
生成助记词 (BIP39)
│
▼
显示助记词让用户备份
│
▼
验证用户备份(随机选词确认)
│
▼
加密助记词 (AES-GCM)
│
▼
从助记词派生各链地址
│
▼
存储加密数据到安全存储签名交易流程
用户确认交易
│
▼
绘制图案 / 生物识别验证
│
▼
解密助记词
│
▼
派生对应链的私钥
│
▼
签名交易
│
▼
清除内存中的私钥 ← 关键安全步骤
│
▼
广播交易图案锁规范
图案复杂度要求
| 规则 | 要求 | 说明 |
|---|---|---|
| 最少连接点 | 4 个 | MUST |
| 最多连接点 | 9 个 | 3x3 网格 |
图案验证规范
- MUST 在客户端验证图案复杂度
- MUST NOT 将图案明文发送到服务器
- SHOULD 提供连接点数实时显示
- MAY 支持图案可见性切换
安全最佳实践
内存安全
- MUST 使用后立即清除敏感数据
- MUST 用随机数覆盖内存(不只是置零)
- SHOULD 限制私钥在内存中的存在时间
- SHOULD 使用安全的内存分配(如可用)
清除敏感数据
操作完成
│
▼
用随机数覆盖私钥内存
│
▼
用随机数覆盖助记词内存
│
▼
触发垃圾回收(如可能)防暴力破解
- MUST 使用高迭代次数的 PBKDF2
- SHOULD 连续错误后增加延迟
- SHOULD 错误次数过多时锁定
- MAY 支持远程锁定功能
错误次数限制
| 错误次数 | 响应 |
|---|---|
| 1-3 | 正常提示 |
| 4-5 | 增加 30s 延迟 |
| 6-9 | 增加 5min 延迟 |
| 10+ | 锁定 24 小时 |
备份与恢复
备份验证规范
- MUST 创建钱包时强制显示助记词
- MUST 随机选择 2-3 个词位置让用户确认
- SHOULD 标记钱包是否已完成备份
- SHOULD 未备份钱包显示提醒
恢复流程
用户输入助记词
│
▼
验证助记词格式和校验和
│
▼
用户设置新密码
│
▼
加密助记词
│
▼
重新派生所有链地址
│
▼
创建钱包记录本章小结
- 使用 BIP39 生成标准助记词
- BIP44 派生外部链,Ed25519 派生 BioForest 链
- AES-GCM 加密存储,PBKDF2 派生密钥
- 使用后及时清除内存中的敏感数据
- 高迭代次数防止暴力破解