【发布时间】:2014-03-28 21:22:08
【问题描述】:
在Diffie-Hellman Key Exchange 上观看 YouTube 视频后,我想尝试用 JavaScript(阿特伍德定律)实现。
我用以下规则在 Node.js 上勾勒出一个密码:
-
第 1 步:客户端和服务器就共享密钥达成一致:
客户端和服务器以 512 位素数公钥 pK 开始
客户端生成 512 位素数私钥 kC 并发送 powMod(3, kC, pK)
服务器生成 512 位素数私钥 kS 并发送 powMod(3, kS, pK)
Client & Server 使用 powMod(response, privatekey, pK) 作为共享密钥
-
第 2 步:沟通
在客户端发送数据之前,使用斯坦福 Javascript 加密库(256 位 AES、HMAC 身份验证、PBKDF2 密码强化和 CCM 身份验证加密)使用共享密钥对其进行加密。
一旦服务器使用共享密钥解密数据,它就会生成一个新的 512 位素数私钥并将其作为 SJCL 加密响应发送。
客户端和服务器使用 powMod(3, prevSharedKey, newPrivKey) 切换到新的共享密钥
现在我有几个问题..
与 HTTPS 或其他算法相比,这样的系统的安全性如何?这种系统的弱点是什么?
在安全性/实用性方面,使用 1024 位密钥会更好吗? HMAC/PBKDF2/CCM 选项是否矫枉过正?是否值得调制共享密钥?感谢阅读!
【问题讨论】:
标签: javascript node.js encryption aes diffie-hellman