密钥库管理
在 SUBFROST 中,**密钥库(keystore)**是一个安全存储用户所有敏感密码学材料的文件。这包括用户的主密钥(助记词短语)以及他们所参与的任何 FROST 群组密钥的份额。
SUBFROST 密钥库
SUBFROST 密钥库的设计兼顾安全性和可移植性。它是一个 JSON 文件,包含参与 FROST 签名仪式和管理 frBTC 及其他资产所需的所有信息。
以下是 SUBFROST 密钥库的关键组成部分:
- 加密助记词: 用户的助记词短语(主密钥)从不以明文形式存储。它使用用户提供的密码进行加密后存储在密钥库中。
- 公钥和元数据: 密钥库包含用户的公钥、用户所属的任何 FROST 群组的群组公钥,以及密钥派生路径等其他元数据。
- 加密的 FROST 份额: 对于用户所属的每个 FROST 群组,密钥库包含其加密的群组私钥秘密份额。
加密
SUBFROST 密钥库的安全性依赖于一套强大的加密方案,以保护用户的秘密信息免受未经授权的访问。
当用户创建新密钥库时,系统会提示输入密码。然后通过以下流程使用该密码加密用户的助记词和 FROST 份额:
-
密钥派生(PBKDF2): 用户的密码不会直接用作加密密钥。而是将其与随机盐值一起输入 **PBKDF2(基于密码的密钥派生函数 2)**算法。PBKDF2 是一种计算密集型算法,即使攻击者拥有加密后的密钥库,也很难猜测出密码。
-
认证加密(AES-GCM): 从 PBKDF2 派生的密钥随后用于通过 **AES-256-GCM(伽罗瓦/计数器模式高级加密标准)**加密用户的秘密信息。AES-GCM 是一种现代的认证加密算法,同时提供机密性(数据被加密)和完整性(数据无法被篡改)。
PBKDF2 与 AES-GCM 的组合为用户的秘密信息提供了非常高的安全级别。
ASCII 编码
为了使加密数据易于存储和传输,它被进行了 ASCII 编码(ASCII armoring)。这意味着二进制加密数据被编码为人类可读的文本格式。这使得密钥库可以轻松地复制、粘贴和存储在任何基于文本的格式中,例如 JSON 文件。
通过将强加密与用户友好的文件格式相结合,SUBFROST 密钥库为用户提供了一种安全且便捷的方式来管理其密码学密钥并参与 SUBFROST 生态系统。
SUBFROST 中的密钥库管理
subfrost-cli 提供了一组用于管理 SUBFROST 密钥库的命令。这些命令允许您:
- 创建新密钥库:
subfrost-cli keystore new命令创建一个新的密钥库文件,并提示您输入密码进行加密。 - 导入密钥库:
subfrost-cli keystore import命令允许您从文件导入密钥库。 - 导出密钥库:
subfrost-cli keystore export命令允许您将密钥库导出到文件。 - 列出密钥:
subfrost-cli keystore list命令列出密钥库中的密钥。
密钥库文件示例
以下是 SUBFROST 密钥库文件的示例:
{
"crypto": {
"cipher": "aes-128-ctr",
"cipherparams": {
"iv": "83dbcc02d8ccb40e46619102d57e33be"
},
"ciphertext": "d1728d7c6c34c235c893f87b8a0a82a3a2fb23c855884b6b9548547065a0463c",
"kdf": "pbkdf2",
"kdfparams": {
"c": 262144,
"dklen": 32,
"prf": "hmac-sha256",
"salt": "ae3cd4e7013836a3df6bd7241b12db061dbe2c678585344e472434e37146434f"
},
"mac": "517ead924a9d0dc3124507e3393d195ce33377b4737974ac46cc3b529526a7ea"
},
"id": "3a1b7547-d4b4-4612-863f-34354f232a2a",
"version": 3
}