2

我目前在 CBC 模式下使用 Rijndael 256 位加密一些需要发送到其他地方的数据。为了增强安全性,我采用随机生成的 SHA-256 散列并使用公式将其截断不同部分以使用加密密钥和初始化向量(当然,散列与数据一起发送)。生成密钥和 IV 的公式相当基本,因为代码是用 PHP 编写的,所以它被编码到用户可访问的页面中。我想知道的是:这是否比拥有一个恒定密钥和/或 IV 更安全?

4

2 回答 2

2

这可能不是您想要的方式。从本质上讲,一个好的黑客很快就会找出你的数学公式来操纵 HASH 来生成你的密钥和 IV。因此,您本质上是将钥匙与王国本身一起发送到王国。

通常这种类型的操作完成的方式是生成一个会话密钥(可能和你现在做的一样),但是使用公钥加密方法来加密那个会话密钥。然后您使用公钥加密方法将会话密钥发送到您的数据要发送的位置。接收者拥有公钥并且可以加密通信。通道会话密钥。

现在双方都有通讯了。通道会话密钥和您的真实数据可以使用此密钥加密,因为会话密钥尚未明文发送。

Rijindael 是对称加密算法的一个示例,其中公钥加密算法是非对称的。公钥加密算法的示例有 RSA、ECDSA(加密)等......

于 2012-06-27T15:10:46.530 回答
0

关于生成短期使用密钥。有一个长期密钥。与接收方商定日期格式。每天将您的长期密钥与当天的日期连接起来,并使用 SHA-256 对其进行散列以生成仅在该日期使用的日期密钥:

dayKey <- SHA256("my very secret long term key" + "2012-06-27")

接收者将拥有生成完全相同的密钥所需的所有信息。任何攻击者都会知道日期,但不会知道长期密钥。

您需要同意午夜前后的协议和其他一些细节。

根据您传递的加密数据量,每两个月更改一次长期密钥。您传递的数据越多,您需要更改长期密钥的频率就越高。

于 2012-06-27T22:06:19.917 回答