【问题标题】:JavaScript based cryptographic signing?基于 JavaScript 的加密签名?
【发布时间】:2009-10-11 16:19:22
【问题描述】:

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

虽然我可以向他们展示“sn-p”以将其复制并粘贴到他们的 GPG 工具中,但让浏览器执行此操作肯定会更好。随着最近浏览器的 JS 性能,我不确定这个请求是否像听起来那样愚蠢。

对此是否有现成的解决方案,或者您能说出一般反对这种方法的充分理由吗?

【问题讨论】:

    标签: javascript browser cryptography signing


    【解决方案1】:

    【讨论】:

    • 另请参阅 JavaScrypt (fourmilab.ch/javascrypt) 以了解对称算法。
    • 这是一个相当不完整的实现:没有签名、没有填充、没有密钥管理。使用 GPG 很难做到这一点。
    【解决方案2】:

    反对的理由

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

    原因

    没有,想不出来。

    【讨论】:

    • CSP 解决了数字 2 和 4。另外,数字 1 无效。
    • 如果他想与 GPG 集成,那么 javascript 不会与 GPG 对话。 Mozilla 的解决方案仅适用于 mozilla,而 symmetric 不适用于希望获得自己的密钥的偏执用户,并且对于这类事情来说不够安全。
    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多