使用 RSA 和 3DES 而不是普通的 3DES。是否有意义?

信息安全 加密 网络 密钥管理
2021-08-22 16:19:24

我有一个很大的遗留代码。目前,它正在为基于网络的应用程序使用3DES加密。它使用主密钥加密数据包。此密钥用于加密和解密(对称)。为了双重安全,我们用另一个密钥再次加密这个主密钥(这次它使用的是一个在代码本身中硬编码的密钥)。

如果我不使用对你有意义的句子,请原谅,因为我是这个领域的新手。我只有这个遗留代码,使用 3DES 的方式对我来说没有任何意义。这不安全,我们的代码中有一个硬编码的密钥,我不喜欢这里使用 3DES 的方式。因为整个事情都是基于对称加密的。

因此我说我们应该使用 RSA,他们给了我一个设计计划,如何实现 RSA 和 3DES。他们想出了这个设计(他们说他们发明了这个设计,这是做到这一点的唯一方法):

在客户端:

  • 每次创建一个随机 3DES 密钥
  • 使用此密钥加密数据
  • 使用 RSA 加密用于 3DES 的密钥并将其添加到数据块中

在服务器:

  • 使用客户端的 RSA 公钥解密前置数据以获得 3DES 密钥
  • 使用 3DES 密钥解密剩余的数据块

我已经询问了同时使用两种不同的加密算法(RSA 和 3DES)的含义。我问为什么我们不只是对整个事情使用 RSA,而是使用两种不同的算法并将它们组合起来。

他们说,对整个数据进行加密会花费更多,而且成本很高(就性能而言)。但是,如果我们只是加密密钥本身并将其添加到数据中,那么它不会使用太多性能,因为这一次数据本身很小(在我们加密整个数据之前,但这次我们只加密了密钥)。

现在,新的设计方法是正确的方法吗?或者这是胡说八道,最好的方法是仅实现 RSA。实现安全数据通信的最佳方式是什么?或者我可以通过任何方式修复以前的方式以使其更安全?

2个回答

他们说,对整个数据进行加密会花费更多,而且成本很高(就性能而言)。

这是对的。与 DES/3DES 等对称密钥算法相比,非对称密钥算法 RSA 需要更多的计算能力/时间来加密/解密数据。

非对称密钥算法通常用作传递密钥的一种手段,以便在另一个对称密钥算法中用于数据传输。

有关详细信息,请参阅:http ://en.wikipedia.org/wiki/Hybrid_cryptosystem

来自维基百科的基本示例:

为了在混合密码系统中加密发给 Alice 的消息,Bob 执行以下操作:

1) 获得 Alice 的公钥。

2) 为数据封装方案生成一个新的对称密钥。

3) 在数据封装方案下加密消息,使用刚刚生成的对称密钥。

4) 在密钥封装方案下,使用 Alice 的公钥对对称密钥进行加密。将这两种加密都发送给 Alice。

为了解密这个混合密文,Alice 执行以下操作:

1) 使用她的私钥解密密钥封装段中包含的对称密钥。

2) 使用此对称密钥解密数据封装段中包含的消息。

也许作为一种改进,贵公司会考虑使用 AES 而不是 3DES?

Terry Chia 给出了一个很好的答案,关于如何以及为什么将 RSA 与对称密钥加密方案结合起来,我同意你应该这样做。

但是,您在问题中所说的另一件事对我来说很突出,所以我想解决这个问题。您说“它使用由某人提供(输入)到机器(解密发生的地方)的公钥解密数据包。” 我不确定你的意思是什么,但我会回答,好像你的意思是改变“正确”答案的意思。

所有加密系统最棘手的问题之一是保持密钥安全。用于高安全性应用的最佳解决方案是将密钥存储在具有电子和物理安全性的专用加密/解密单元中,以便无法从设备中提取密钥。密钥要么在设备内由加密安全的随机数生成器生成,要么以安全的方式编程到设备中。之后,需要使用该密钥完成的所有加密和解密都由设备本身完成,然后通过物理保护设备来管理密钥的安全性。

因此,如果您使用这样的设备来管理 RSA 公钥和私钥,那么这将决定您如何处理整个加密系统的其他方面。如果该设备还可以管理 3DES 密钥和加密,那么这也会改变事情。此外,您可能处于规定以某些方式使用 3DES 的监管和/或系统集成环境中。所有这些因素在设计解决方案时都需要考虑,因此如果其中任何一个因素适用于使特里的解决方案有点不适用于您的情况,请填写我们。

不过,一般来说,使用 RSA 交换 256 位 AES 密钥的混合加密系统是一个很好的解决方案,该密钥是由加密安全的随机数生成器为每次通信新生成的,然后使用 AES 使用该密钥对通信的其余部分进行加密将是一个很好的解决方案。不过,请务必确保您的密钥生成机制在密码学上是安全的。很多很多的密钥生成方案都被破坏了,通常是由于随机数生成器的弱点。您需要使用经过审计和认证的加密用途。