编辑
我仍然希望对此提供一些建议,我试图澄清我的意图......
当我在我的移动通信框架中遇到设备配对时,我研究了很多关于这个主题的论文,并且还从以前的问题中得到了一些输入。但是,我没有找到一个准备好实现协议的解决方案——所以我发明了一个衍生物,因为我不是加密极客,我不确定最终解决方案的安全警告:
主要问题是
- SHA256 是否足以作为提交功能?
- 在提交字符串中添加共享密钥作为身份验证信息是否安全?
- 1024位组DH的整体安全性如何
- 我假设最多 2^-24 位成功 MITM 攻击的概率(因为 24 位挑战)。这合理吗?
- 什么可能是最有希望的攻击(除了从我麻木、冰冷的手上撕下设备)
这是算法草图
- 对于首次配对,实现了“点对点无线网络中的密钥协议”(DH-SC)中提出的解决方案。我基于以下承诺:
- 通信实体/角色的修复“UUID”(128 位,在协议开始时发送,在提交之前)
- DH 公钥(192 位私钥,基于 1024 位 Oakley 组)
- 24 位随机挑战
- 提交是使用 SHA256 计算的
- c = sha256(UUID || DH 酒吧 || 查尔)
- 双方交换此承诺,开放和传输上述价值的明文内容。
爱丽丝鲍勃 ca = 提交() --------^ 约 cb = 提交() cb ^----------- 打开 ---^ DH pub a, chall a 打开 DH pub b,chall b ^---
- 24位随机显示给用户进行手动认证
计算 DH 会话密钥(128 字节,见上文)
当用户选择持久配对时,会话密钥与远程 UUID 一起存储为共享密钥
下次设备连接时,提交是通过在随机质询之前额外散列先前的 DH 会话密钥来计算的。确保打开时不会转移。
- c = sha256(UUID || DH pub || DH sess || 查尔)
现在,当本地方可以使用他自己的、存储的以前的 DH 会话密钥得出相同的承诺时,用户无需进行身份验证。成功连接后,新的 DH 会话密钥成为新的共享密钥。
由于这并不完全符合我迄今为止发现的协议(以及它们的安全证明),我很想在这里获得更多启用加密的人的意见。顺便提一句。我确实读过“EKE”协议,但我不确定额外的安全级别是什么。