我有一个很大的遗留代码。目前,它正在为基于网络的应用程序使用3DES加密。它使用主密钥加密数据包。此密钥用于加密和解密(对称)。为了双重安全,我们用另一个密钥再次加密这个主密钥(这次它使用的是一个在代码本身中硬编码的密钥)。
如果我不使用对你有意义的句子,请原谅,因为我是这个领域的新手。我只有这个遗留代码,使用 3DES 的方式对我来说没有任何意义。这不安全,我们的代码中有一个硬编码的密钥,我不喜欢这里使用 3DES 的方式。因为整个事情都是基于对称加密的。
因此我说我们应该使用 RSA,他们给了我一个设计计划,如何实现 RSA 和 3DES。他们想出了这个设计(他们说他们发明了这个设计,这是做到这一点的唯一方法):
在客户端:
- 每次创建一个随机 3DES 密钥
- 使用此密钥加密数据
- 使用 RSA 加密用于 3DES 的密钥并将其添加到数据块中
在服务器:
- 使用客户端的 RSA 公钥解密前置数据以获得 3DES 密钥
- 使用 3DES 密钥解密剩余的数据块
我已经询问了同时使用两种不同的加密算法(RSA 和 3DES)的含义。我问为什么我们不只是对整个事情使用 RSA,而是使用两种不同的算法并将它们组合起来。
他们说,对整个数据进行加密会花费更多,而且成本很高(就性能而言)。但是,如果我们只是加密密钥本身并将其添加到数据中,那么它不会使用太多性能,因为这一次数据本身很小(在我们加密整个数据之前,但这次我们只加密了密钥)。
现在,新的设计方法是正确的方法吗?或者这是胡说八道,最好的方法是仅实现 RSA。实现安全数据通信的最佳方式是什么?或者我可以通过任何方式修复以前的方式以使其更安全?