在浏览器中的javascript中进行opensl解密

| 我正在寻找一种方法来在客户端分别解码RSA和openssl编码的消息。 理念: 特殊数据仅使用公共密钥以加密方式存储在服务器上,因此即使服务器被黑客入侵,也没人能看到真实数据。 然后,adminforce中的管理员可以通过将这些文件传输到浏览器来“打开”这些文件,并且一些javascript代码将对数据进行解码,以使其永远不会在服务器上解密,而只会在安全客户端上进行解密。 我确实需要使用自定义JavaScript在浏览器中对其进行解码,因为这些数据随后必须由js中的某些算法客户端使用。 问题: javascript中似乎没有openssl库,或者我还没有找到。尽管有几种纯js的RSA实现,但是它们仅实现纯RSA算法,但是纯RSA不能安全地用作分组密码,并且具有诸如“选择明文攻击”之类的攻击。 有人知道opensl解码的JavaScript实现,还是将firefox / chrome添加到文档中的插件?还是javascript内置的其他任何安全不对称加密?     
已邀请:
        正如我在对您的问题的评论中所指出的那样,您正在设想的攻击向量(服务器受损)意味着JavaScript也可能会遭到破坏,在这种情况下,不应在客户端上运行JavaScript代码无论如何都值得信赖。 (让JavaScript在后台通过异步请求将解密后的数据发送回服务器非常容易:同样,由于服务器将在攻击者的控制下,因此不需要技巧来规避原产地政策。) 我建议您走一个独立的应用程序(例如Java WebStart)的路线,该路线可能已经签名(使用服务器上没有的私钥)。 如果您仍然愿意采用这种架构,请避免不惜一切代价将用户的私钥释放到JavaScript中。这可能会损害用户的私钥,而不仅仅是加密的数据。 当您在浏览器中使用私钥进行SSL / TLS客户端证书身份验证时,私钥不会暴露给服务器使用的任何代码。浏览器使用它进行握手,服务器获得证书(是公开的),但是私钥并没有出现在HTML + JS代码可以看到的地方。 (实际上,在带有Safari的OSX中,私钥由基础SSL / TLS库使用,甚至不公开给用户进程。) 我已经看到,用于RSA的JavaScript库要求直接使用私钥,也就是说,它们需要能够直接使用私钥。如果您无法信任服务器,那显然不好。 要能够在浏览器中使用私钥进行RSA操作,而又不让脚本掌握私有材料本身,则需要与浏览器进行更紧密的集成,尤其是一些用于签名和解密的API,这些API将直接在浏览器中使用这些功能。浏览器的安全机制,而不会暴露私钥材料(总体而言,与PKCS#11提供给使用它的应用程序类似的方法)。 据我所知,当前的Mozilla加密JavaScript API并未提供使用浏览器进行解密/签名的功能(仅用于证书申请和密钥生成)。不过,似乎有计划这样做: https://wiki.mozilla.org/Privacy/Features/DOMCryptAPISpec/Latest http://mozilla.ddahl.com/domcrypt/demos/demo.html 在IE平台上,CAPICOM应该引起了人们的兴趣,但如今似乎已被弃用。     
加密是复杂且昂贵的-特别是不对称加密(在大多数情况下,不对称加密仅用于加密随机生成的对称算法密钥)。 有RSA的实现(可能还有JavaScript中的其他非对称算法),在某些情况下,还有其他语言(通常为C)中的兼容实现-尝试使用google进行详细说明-但我不知道任何处理x509加密的方法。 OTOH编写Java小程序来做到这一点将是微不足道的。 但是为什么要打扰呢?根据我对所写内容的了解,通过使用对称算法,并且永远不会将密钥发送回服务器,您将以更少的工作量获得同样的功能: 允许用户在网页中输入一些数据 允许用户输入加密密钥 使用密钥加密数据 将加密的数据发送回服务器 提供一个解密页面,用户可以在其中检索加密的内容并输入密钥 解密内容     
        考虑一下。如果服务器被黑客入侵,则黑客将有权访问您的加密数据和所有站点源代码。包括用于解密数据的数据。并且可以通过查看页面源代码从纯JavaScript的网站界面中获取这些内容。     

要回复问题请先登录注册