1

我们需要对数据客户端进行加密,以确保我们客户的浏览器和供应商之间存在“安全”通道。

基本前提是:Vendor 生成公钥/私钥对:VendorPub 和 VendorPriv

我们的客户输入敏感数据。在提交表单上的 javascript 加密数据的敏感部分,提交到我们服务器的是 VendorPub(SensitiveData)。

我们将该包作为 VendorPub(SensitiveData) 提交给我们的供应商,只有他们可以使用该数据。

无论密钥长度和批准的算法(分别为 RSA 和 4096)如何,当然整个事情都将通过 SSL 连接......

它看起来可行,但我还没有模拟它......有什么建议吗?陷阱?

我们的开发环境是 Visual Studio 2k5/ 2k8 / ASP.net 2.0 或 3.0

谢谢

4

4 回答 4

3

目前其他答案似乎忽略了这一点:“我们将该包作为 VendorPub(SensitiveData) 提交给我们的供应商,只有他们可以使用该数据”。换句话说,您是将数据视为黑匣子的中继。

如果数据量不是很大,您所描述的内容是可行的。请记住,您不能让用户等待您的 JavaScript 快速运行。

顺便说一句, RSA4096非常庞大。2048 目前是高档的,而 3000 则应该可以使用 30 多年。但是,给你更多的权力。绕过公钥费用的一种正常方法是使用 RSA 加密对称 (DSA) 密钥 - 这样您对实际数据的加密速度很快,唯一慢的部分是解密(较短的)密钥。非对称密钥加密比对称加密慢得多

无论您决定实施什么,请确保您在 JS 代码中获得正确的加密。

您还应该注意,这并不是真正保护用户免受侵害的方法;您控制 Web 服务器,因此您可以向用户发送经过修改的 JavaScript,该 JavaScript 使用您控制的密钥将他们的私人数据传递给您。用户不太可能注意到。

于 2010-07-28T16:57:37.617 回答
2

这绝对是可行的;虽然它可能有点迟钝。

这是 JS 中的 RSA 实现:http: //www.ohdave.com/rsa/

于 2010-07-28T16:36:48.213 回答
0

好的,所以最终的答案是:它是可行的、相当快且相当安全的。然而,由于这是一个 PCI 要求,旨在取消我们的环境范围,它失败了,因为我们仍然拥有加密方法,IE 将执行加密的 javascript 将从我们的系统提供。

感谢所有插话的人。

加里

于 2010-07-30T19:34:56.463 回答
0

如果您要使用 SSL 连接(尽管我更喜欢 TLS),似乎没有什么(如果有的话)理由这样做。

如果您决定无论如何都要这样做,PK 加密的最大陷阱是 MITM 攻击——即,您不想只接受服务器的密钥并用它加密数据。这将确保只有服务器可以读取数据,如果您尚未验证服务器的身份,您可能会将其完全发送给其他人。这就是为什么 1) SSL/TLS 连接设置缓慢,以及 2) SSL/TLS 库又大又复杂的主要原因。加密比身份验证容易得多

不过,除了自己进行加密之外,没有更多的理由自己这样做了——SSL/TLS 已经同时进行了身份验证加密。

于 2010-07-28T16:52:12.653 回答