gpt4 book ai didi

javascript - 浏览器中javascript中的openssl解密

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:45 26 4
gpt4 key购买 nike

我正在寻找一种方法来在客户端分别对 RSA 和 openssl 编码的消息进行解码。

想法:
特殊数据仅使用公钥加密存储在服务器上,因此任何人都无法看到真实数据 - 即使在服务器被黑客入侵的情况下也是如此。
然后,adminforce 中的管理员可以通过将这些文件传输到浏览器来“打开”这些文件,一些 javascript 代码将解码数据,这样它就永远不会在服务器上解密,只会在安全的客户端上解密。
我真的需要它在浏览器中使用自定义 javascript 直接解码,因为这些数据随后必须由 js 中的某些算法客户端使用。

问题:
javascript 中似乎没有 openssl 库,或者我还没有找到。虽然有几个 RSA 的纯 js 实现,它们只实现了普通的 RSA 算法,但是,普通的 RSA 用作 block 密码并不安全,并且有一些像“选择明文攻击”这样的攻击。<​​br/>有谁知道 openssl 解码的 javascript 实现,或将这些功能添加到文档的 firefox/chrome 插件?还是 javascript 中内置的任何其他安全非对称加密?

最佳答案

正如我在对您的问题的评论中指出的那样,您设想的攻击媒介(受感染的服务器)意味着 JavaScript 也可能受到危害,在这种情况下,在客户端上运行的 JavaScript 代码不应该无论如何都不值得信任。 (让 JavaScript 在后台使用异步请求将解密数据发送回服务器非常容易:同样,由于服务器将处于攻击者的控制之下,因此不需要任何技巧来规避相同的-那里的起源政策。)

我建议沿着独立应用程序(例如 Java WebStart)的路线走下去,也许是签名的(使用不在服务器上的私钥)。

如果您仍然愿意继续使用这种架构,请不惜一切代价避免将用户的私钥释放到 JavaScript 中。这可能会危及用户的私钥,而不仅仅是加密数据。

当您在浏览器中使用私钥进行 SSL/TLS 客户端证书身份验证时,私钥不会暴露给服务器使用的任何代码。浏览器使用它进行握手,服务器获得证书(这是公开的),但私钥并没有接近 HTML+JS 代码可以看到的任何地方。 (事实上​​ ,在带有 Safari 的 OSX 中,私钥由底层 SSL/TLS 库使用,甚至不会暴露给用户进程。)

我见过的用于RSA的JavaScript库需要直接使用私钥,也就是说,它们需要能够直接使用私有(private)指数。如果您处于无法信任服务器的情况下,这显然不太好。

能够在浏览器中使用私钥进行 RSA 操作,而不让脚本获取私有(private) Material 本身将需要与浏览器更紧密地集成,特别是一些 API 来使用这些功能进行签名和解密直接在浏览器的安全机制中,而不公开私钥 Material (总体而言,类似于 PKCS#11 为使用它的应用程序提供的方法)。

据我所知,目前的 Mozilla crypto JavaScript API不提供使用浏览器解密/签名的功能(仅用于证书请求和 key 生成)。不过,似乎有计划这样做:

在IE平台上,CAPICOM应该感兴趣,但似乎是deprecated现在。

关于javascript - 浏览器中javascript中的openssl解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com