与WebCrypto的不可否认性

时间:2015-05-13 12:50:39

标签: javascript webcryptoapi

如何使用WebCrypto API实现不可否认性?

我在WebCrypto中看到了很多关于如何加密/签名文本的例子,但问题总是在页面运行期间生成密钥,这打破了不可否认性。我相信应该有一个向用户询问他的私钥的方法。

我认为Mozilla firefox中有一个方法要求用户输入密钥但现在已删除: https://developer.mozilla.org/en-US/docs/Security/Crypto_Sign_Text_Removal

谢谢,

2 个答案:

答案 0 :(得分:3)

Non-Repudiation通常会利用数字签名。这是一个名为PKIjs的库,可以帮助您导入密钥并生成签名:

  

PKIjs是一个实现格式的纯JavaScript库   用于PKI应用程序(签名,加密,证书   请求,OCSP和TSP请求/响应)。它建立在WebCrypto上   (Web Cryptography API)并且不需要插件。

然而,GlobalSign/PKI.js Github回购说明:

  

此时此库应该被认为适合研究   和实验,之前需要进一步的代码和安全审查   在生产应用程序中使用。

答案 1 :(得分:2)

PKIjs的作者在这里。有许多基于PKIjs的生产应用程序,我们包含了这个安全审查声明,以鼓励人们自己决定是否适合。

对于原始问题,使用运行时生成的密钥不会导致不可否认性。不可否认性是一种法律概念而非技术概念,主要是不可否认性的问题是:1)认证实体的身份,2)捕获意图。

要做到这两点,需要一个旨在提供这些属性的解决方案,没有任何一个API可以提供这个。

对于技术问题,没有纯粹的Javascript解决方案允许您在操作系统/浏览器中使用密钥,这样就会逃脱浏览器沙箱。

有多个浏览器插件具有不同程度的可用性和质量,一旦安装,您就可以与智能卡进行交互。从很大程度上讲,由于插件的互操作性和一般可用性,它们的使用不足以被广泛使用。