我正在考虑实现安全远程密码协议(protocol),以在浏览器和Web应用程序之间进行零知识密码证明。 SRP网站提供了一个示例,但需要Java才能执行计算。我想知道是否可以在不使用Java的情况下使用javascript来实现SRP,因为我不想要求用户安装Java,特别是因为我的读者将是一个具有安全意识的用户,因此可能会考虑拥有Java的风险。与零知识密码证明相比,java插件对其安全性的威胁更大。

这是他们的演示的链接:http://srp.stanford.edu/demo/

最佳答案



如果您正在寻找一种标准化的方法,那么答案是否定的。

WebCrypto Working Group现在正在对某些加密操作进行标准化。但是,工作组已经声明他们将不提供对模块化操作所需的基础BigInt原语的访问,因此您在第一版中就不会拥有所需的原语。您可以在后续版本中获得它。从他们的邮件列表中查看Question on BigInteger operations

更新:WebCrypto Working Group也不会提供Diffie-Hellman作为标准的一部分。 Chrome团队甚至不会提供Diffie-Hellman作为扩展。他们声称对于Diffie-Hellman也没有用例或需求。从他们的邮件列表中查看Diffie-Hellman in WebCrypto

您也许可以在Javascript库中找到它,但我希望它会比较慢(或者比本机实现要慢)。

与此相关,请记住,拒绝您使用BigInts和Diffie-Hellman的人是在浏览器安全模型中宣布“拦截是有效的用例”的人。

他们是破坏RFC 7469 Public Key Pinning Extension for HTTP的人。有关详细的评论,请参见Comments on draft-ietf-websec-key-pinning。更糟糕的是,当他们被要求提供替代信息并破坏安全通道时,他们将草案21中的语言更改为最终语言,以使其更加晦涩并被隐藏起来。

关于javascript - 不带Java的基于浏览器的SRP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22572745/

10-09 22:16