-1

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

我在如何加密/签署文本方面看到了很多关于 WebCrypto 的示例,但问题总是密钥是在页面运行时生成的,这破坏了不可否认性。我相信应该有一种方法可以问用户关于他要使用的私钥。

我认为 Mozilla firefox 中有一种方法可以向用户询问他的密钥,但现在已将其删除: https ://developer.mozilla.org/en-US/docs/Security/Crypto_Sign_Text_Removal

谢谢,

4

2 回答 2

3

不可否认性通常利用数字签名。这是一个名为PKIjs的库,它可以帮助您导入密钥并生成签名:

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

但是,GlobalSign/PKI.js Github 存储库指出:

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

于 2015-06-03T14:59:14.753 回答
2

PKIjs 的作者在这里。有许多基于 PKIjs 构建的生产应用程序,我们包含此安全审查声明以鼓励人们就适用性做出自己的决定。

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

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

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

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

于 2016-12-09T04:02:51.380 回答