2

我不是安全专家。我正在考虑如何在软件系统中实现信用卡存储,其中信用卡交易通过网络接受,但由内部用户手动执行。我们将使用 HTTPS(我相信)这将消除中间人攻击的风险。现在,我想弄清楚我是否可以做到,以便从客户端接收到的数据可以在到达我们的服务器之前进行加密。

这个想法是他们的浏览器将使用非对称密钥对的公共部分加密数据。内部用户将知道私密部分。然后,当需要手动处理费用时,该用户将转到我们提供的 HTTPS 页面。他们将手动输入私钥(不会传输到我们的服务器),加密的信用卡信息将从我们的系统中检索并由浏览器解密。

通过这种方式,我希望我可以阻止我们的任何服务器看到未加密的信用卡信息。我错过了一些众所周知的安全漏洞吗?我读过似乎解决了另一种安全漏洞。我还阅读了其他一些 SO 问题,但似乎没有一个能清楚地映射到这个特定的设计。

编辑#1:@Pointy 询问为什么不使用行业标准。主要在线零售商使用的解决方案远比我的问题所保证的复杂和昂贵。主要零售商会自动处理他们的交易,因此通常会努力实现 PCI-DSS 合规性。这不是我要解决的问题。我正在开发自动工具以安全地协助手动交易处理。

编辑#2:@Jason Dean 指出我没有很好地描述管理私钥的计划。这个想法实际上是让我们的员工将其保存在办公桌上的一张纸上。我们主要关心的是远程安全违规。我们的物理站点足够安全,我们不担心有人闯入。我们的想法是让私钥远离任何地方任何机器上的任何持久存储,这样就没有纯粹的电子攻击可能同时获取数据和私钥钥匙。

4

2 回答 2

2

他们将手动输入私钥(不会传输到我们的服务器),加密的信用卡信息将从我们的系统中检索并由浏览器解密。

保持安全并输入(或复制/粘贴)私钥比简单地输入信用卡号更难。我认为这是您计划中一个相当明显的错误。请注意,安全协议很难,并且由于您“不是安全专家”,因此我强烈建议您不要尝试想出一个。

于 2012-10-23T21:58:17.693 回答
1

有趣的是,您非常关心服务器看到的未加密数据,但是您愿意将所有重要的解密密钥提供给您决定键入(或更具体地复制和粘贴)非对称的任何 8 美元/小时的猴子一整天的钥匙。

您打算将这些密钥存储在哪里,以便您的猴子可以找到它们进行复制/粘贴?为此,它们需要采用明文形式。

毫无疑问,密钥管理是密码学中最难做的事情,您正在谈论通过向不应该需要它的用户提供密钥以及不安全地存储它来违反最佳实践协议。

SSL 已经负责在数据离开客户端之前对其进行加密,然后,当它到达服务器时,您需要在存储之前再次对其进行加密。如果你真的想的话,你可以使用非对称加密。我不会担心在客户端尝试这样做。

我认为你让事情变得比他们需要的更难,而且对你的努力没有任何好处。

于 2012-10-23T22:06:33.130 回答