3

假设我想加密浏览器内的数据(通过 JavaScript,使用 PGP)。由于将密钥存储在浏览器(LocalStorage)中并不保存,因此我希望将它们放在外部设备上,例如提供 PGP 加密/解密的YubiKey 。

因此,用户写了一些秘密文本,插入他的 YubiKey,按下一些按钮,秘密文本进入 YubiKey,后者对其进行加密(而用于加密的密钥保留在 YubiKey 上,然后返回加密文本。解密相同.

这样的事情在技术上可行吗?如果没有,我还能将加密密钥保存在哪里?

4

1 回答 1

0

目前无法使用浏览器访问此类设备。有一些计划会添加这样的功能,但它仍处于编辑草稿阶段,因此可能需要一些时间才能将其作为标准发布。当然,当它成为标准时,并非每个浏览器都可能不支持该功能。

关于您的问题,如果您确实需要良好的保护,我认为您可以尝试将密钥存储在服务器上。

第一次生成密钥时,用户可以使用服务器生成的密码和随机 GUID 创建一种帐户(以确保服务器上不会存在双重 GUID - 我知道几乎没有机会发生这种情况,但它也是一个很好的额外保护层)。您可以将 GUID 存储在客户端(例如在 localStorage 中),这样就不会每次都提示用户。尽管需要将密钥保存在磁盘上的某个位置以防 localStorage 被清除,但用户必须注意。然后在创建帐户时,密钥将安全地(通过 https)传输到服务器,密钥的名称将是生成的 GUID。

一旦创建帐户并且您希望从服务器接收密钥,浏览器将不得不发出 ajax 请求 - 如果 localStorage 中不存在用户必须提供他/她的密码和 keyID (GUID)。一旦服务器将 keyID 与密码匹配,它将返回密钥。您可以使用密码和收到的密钥解密您的文本。

于 2016-05-10T20:13:23.070 回答