Wallet SSS Architecture 安全问题共享者
使用安全问题作为一个恢复密钥的因素
看上去是使用用户的输入作为一个共享者, okx-threshold-lib 中 共享者 ui

是的,图片中的内容提到了一种使用确定性共享(Deterministic Share)进行密钥生成的方法,这种方法可以作为支持用户恢复密钥的一个因素。具体来说,这里提到的确定性共享涉及到使用用户输入(例如安全问题的答案)来预先确定秘密共享方案(SSS)多项式中的一个共享。这种方法的主要目的是在密钥恢复过程中增加安全性和可靠性。
详细解释
-
用户输入和确定性共享:
- 用户提供一个输入(例如答案),这个输入可以用来预先确定 SSS 多项式中的一个共享。
- 通过使用一个加密安全的哈希函数,我们可以将用户输入映射到一个共享值。
- 例如,给定,我们可以选择一个并求解。
-
秘密重新共享中的确定性生成:
- 在秘密重新共享的过程中,也可以使用给定的和用户输入来确定性地生成新的多项式。
- 这种方法允许我们将个给定的值绑定到密钥或共享,只要,其中是 SSS 多项式的度。
-
确保输入的熵:
- 为了保证输入具有足够的熵,可以使用多个安全问题(例如三个问题)的答案来生成输入。
- 例如,使用答案来派生输入。
- 这些问题和答案的顺序和索引可以在元数据中定义。
-
合适的问题类型:
- 建议使用具有确定性答案的问题(例如“你父母的生日”或“你出生的城市”),而不是“你最喜欢的歌手是谁”这样的问题。
- 为了适应用户可能会忘记答案的情况,可以将答案本身通过 SSS 分割,使用户可以回答 3/5 个问题,从而提供冗余。
具体步骤示例
假设用户使用安全问题的答案来生成确定性共享:
-
选择安全问题:
- 选择三个具有确定性答案的安全问题,例如:
- 你父母的生日是什么?
- 你出生的城市是哪里?
- 你的第一辆车的品牌是什么?
- 选择三个具有确定性答案的安全问题,例如:
-
用户提供答案:
- 用户提供答案。
-
生成输入:
- 将答案组合生成输入。
-
生成确定性共享:
- 使用哈希函数生成共享值。
- 选择一个并求解。
-
使用确定性共享进行密钥恢复:
- 在密钥恢复过程中,用户可以再次提供相同的答案来生成相同的共享,从而恢复密钥。
总结
通过使用确定性共享的方法,可以在用户恢复密钥的过程中增加一个安全因素。这种方法利用用户的输入(例如安全问题的答案)来生成预先确定的共享,从而在密钥恢复过程中提供额外的安全性和可靠性。这种方法特别适用于需要高安全性和用户友好的密钥管理系统。