基于JavaScript的加密签名?

基于JavaScript的加密签名?,javascript,browser,cryptography,signing,Javascript,Browser,Cryptography,Signing,我正在处理一个特别偏执的用户群体,他们可能希望在提交之前对他们对我的网站的贡献进行签名(例如,使用GPG密钥) 虽然我可以向他们展示一个“片段”来复制并粘贴到他们的GPG工具中,但让浏览器这样做肯定会更好。考虑到最近浏览器的JS性能,我不确定这个请求是否像听起来那么愚蠢 有没有一个现有的解决方案,或者你能说出反对这种方法的理由吗 反对的理由 您需要解锁私钥-JavaScript无法做到这一点 然后需要将私钥加载到浏览器中。即使可以,这也会带来巨大的风险,因为JavaScript可能会将其发送到其

我正在处理一个特别偏执的用户群体,他们可能希望在提交之前对他们对我的网站的贡献进行签名(例如,使用GPG密钥)

虽然我可以向他们展示一个“片段”来复制并粘贴到他们的GPG工具中,但让浏览器这样做肯定会更好。考虑到最近浏览器的JS性能,我不确定这个请求是否像听起来那么愚蠢

有没有一个现有的解决方案,或者你能说出反对这种方法的理由吗

反对的理由

  • 您需要解锁私钥-JavaScript无法做到这一点
  • 然后需要将私钥加载到浏览器中。即使可以,这也会带来巨大的风险,因为JavaScript可能会将其发送到其他地方
  • 加密的计算量很大。JavaScript已经足够慢了
  • 跨站点脚本和JSON注入意味着,如果您的网站中存在漏洞,您的JavaScript可能会被替换——因此,即使您的代码本身运行正常,攻击者也可能会注入不正常的脚本
  • 原因


    不,我想不出任何方法。

    另请参见JavaScrypt()中的对称算法。这是一个非常不完整的实现:没有签名、没有填充、没有密钥管理。使用GPG很难实现这一点。解数字2和4。而且,数字1是无效的。如果他想要与GPG集成,那么javascript不会与GPG对话。Mozilla的解决方案只适用于Mozilla,而symmetric不适用于那些希望自己的密钥被发布的偏执用户,并且对于这种类型的事情来说,它不够安全。