Browser 如何保密RSA-浏览器中的私钥-使用非对称密钥实现占有证明

Browser 如何保密RSA-浏览器中的私钥-使用非对称密钥实现占有证明,browser,rsa,jwt,Browser,Rsa,Jwt,我想用非对称密钥实现占有证明 我想将RSA存储在浏览器中的安全位置-我将能够使用私钥和公钥对请求部分进行签名,作为JWT验证请求的一部分 我不知道如何将RSA导入我的浏览器-我可以在浏览器中将RSA私钥安全存储在哪里?也许您可以创建一个用于保存密钥的扩展。考虑到如果需要在浏览器中存储私钥,则只允许在默认情况下存储加密密钥,此外,如果需要/需要存储更多密钥,则不允许在不同密钥文件上使用相同的密码。 也考虑使用主密钥和/或OTPs来解密存储。 在这些东西可用的地方寻找一个扩展可以节省一些工作也许您可

我想用非对称密钥实现
占有证明

我想将RSA存储在浏览器中的安全位置-我将能够使用私钥和公钥对请求部分进行签名,作为JWT验证请求的一部分


我不知道如何将RSA导入我的浏览器-我可以在浏览器中将RSA私钥安全存储在哪里?

也许您可以创建一个用于保存密钥的扩展。考虑到如果需要在浏览器中存储私钥,则只允许在默认情况下存储加密密钥,此外,如果需要/需要存储更多密钥,则不允许在不同密钥文件上使用相同的密码。

也考虑使用主密钥和/或OTPs来解密存储。


在这些东西可用的地方寻找一个扩展可以节省一些工作

也许您可以创建一个用于保存密钥的扩展。考虑到如果需要在浏览器中存储私钥,则只允许在默认情况下存储加密密钥,此外,如果需要/需要存储更多密钥,则不允许在不同密钥文件上使用相同的密码。

也考虑使用主密钥和/或OTPs来解密存储。


寻找这些东西可用的扩展可以节省一些工作

查看WebCryptoAPI和IndexedDB。这里有一些WebCrypto示例-

这将允许您以无法提取的方式导入密钥-仅用于签名和验证签名。但是,当清除浏览器数据并勾选“清除应用程序数据”(/similor-取决于浏览器)标志时,这将被清除

例如,导入密钥并将其存储在IndexedDB中(此代码尚未测试/\u openDb必须实现)-

然后把它读出来-

let tx = _db_handle.transaction("KeyStore", "readwrite");
let store = tx.objectStore("KeyStore");

let getKey = store.get("Key 1");

getKey.onsuccess = function() {
    resolve(getKey.result ? getKey.result.key : null);
};

getKey.onerror = function() {
    reject(getKey.error);
};

查看WebCryptoAPI和IndexedDB。这里有一些WebCrypto示例-

这将允许您以无法提取的方式导入密钥-仅用于签名和验证签名。但是,当清除浏览器数据并勾选“清除应用程序数据”(/similor-取决于浏览器)标志时,这将被清除

例如,导入密钥并将其存储在IndexedDB中(此代码尚未测试/\u openDb必须实现)-

然后把它读出来-

let tx = _db_handle.transaction("KeyStore", "readwrite");
let store = tx.objectStore("KeyStore");

let getKey = store.get("Key 1");

getKey.onsuccess = function() {
    resolve(getKey.result ? getKey.result.key : null);
};

getKey.onerror = function() {
    reject(getKey.error);
};

你说分机是什么意思?您认为如何将密钥存储到cookie中?你能提供一些你提到的你的概念的URL吗?我指的是一个浏览器扩展并在Cookie中存储一个私钥文件。。。听起来不是很好的做法。。。作为一个用户,你更喜欢什么?隐藏密钥处理还是可见密钥处理?cookies可以被删除、捕获等等。。。我认为这不是个好主意。。。。OTP是一个一次性密码,您可以从goolge authentifiactor或双向登录信息中了解它。也许您可以将您的密钥存储在浏览器密码保险库中,也可能是一个很好的解决方案,它已在alreadyOK中实现,您可以发送有关MasterKey概念的规范吗?这可能也是一个很好的观点。你说的扩展是什么意思?您认为如何将密钥存储到cookie中?你能提供一些你提到的你的概念的URL吗?我指的是一个浏览器扩展并在Cookie中存储一个私钥文件。。。听起来不是很好的做法。。。作为一个用户,你更喜欢什么?隐藏密钥处理还是可见密钥处理?cookies可以被删除、捕获等等。。。我认为这不是个好主意。。。。OTP是一个一次性密码,您可以从goolge authentifiactor或双向登录信息中了解它。也许您可以将您的密钥存储在浏览器密码保险库中,也可能是一个很好的解决方案,它已在alreadyOK中实现,您可以发送有关MasterKey概念的规范吗?这可能也是一个很好的观点。旧浏览器中的Web加密支持如何?对于特定于安全性的应用程序,我反对支持过时的浏览器。它在最新的Chrome浏览器上工作,即Opera和Firefox afaik。这将是值得一看的狩猎。chrome自2014年就开始使用了,按照浏览器标准,chrome已经很古老了。对于旧浏览器中的WebCrypto,您可以使用。这在JS中实现了算法,因此您的应用程序可以在底层工作,但是JS crypto的安全属性不同,如果可能的话,鼓励用户升级到更现代的浏览器。最新的Safari支持WebCrypto。您可以通过以下内容测试各种WebCrypto实现所支持的内容:旧浏览器中的Web加密支持如何?对于特定于安全的应用程序,我反对支持过时的浏览器。它在最新的Chrome浏览器上工作,即Opera和Firefox afaik。这将是值得一看的狩猎。chrome自2014年就开始使用了,按照浏览器标准,chrome已经很古老了。对于旧浏览器中的WebCrypto,您可以使用。这在JS中实现了算法,因此您的应用程序可以在底层工作,但是JS crypto的安全属性不同,如果可能的话,鼓励用户升级到更现代的浏览器。最新的Safari支持WebCrypto。您可以使用此工具测试各种WebCrypto实现所支持的内容