Javascript/浏览器加密:使用Yubiky

Javascript / Browser enryption: Use Yubikey

本文关键字:使用 Yubiky 加密 浏览器 Javascript      更新时间:2023-09-26

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

因此,用户编写一些秘密文本,插入他的YubiKey,按下一些按钮,秘密文本进入YubiKey进行加密(而加密的密钥留在YubiKey上,然后返回加密的文本。解密也是如此。

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

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

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

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

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