为什么非对称加密针对同一明文会得到不同的密文?
以RSA和ECC举例:
RSA 加密
RSA 加密通常使用如最优非对称加密填充(OAEP)之类的填充方案。OAEP 包含一个随机成分,因此即使使用相同的明文和相同的密钥,每次加密得到的密文也会不同。这种随机性提供了语义安全性,确保多次加密同一消息会产生不同的密文。
ECC 加密
ECC 加密通常使用如椭圆曲线集成加密方案(ECIES)。ECIES 也在加密过程中包含一个随机元素(如随机数或临时密钥),因此每次加密同一明文和密钥时,密文都会不同。
随机加密的好处
- 语义安全性:防止攻击者判断两个密文是否源自同一明文。
- 防重放攻击:确保每次加密操作都是唯一的,有助于防止某些类型的攻击,其中攻击者可能会使用以前的密文来获取信息或在其他情况下重放它们。
技术解释
使用 OAEP 的 RSA:
使用 OAEP 的 RSA 加密过程包括:
- 消息填充:明文消息用随机字节填充。
- 哈希:对部分填充消息应用哈希函数。
- 随机种子:在填充过程中使用随机种子。
由于随机填充和种子,每次加密相同的明文会产生不同的密文。
ECIES:
在 ECIES 方案中:
- 临时密钥对:为每次加密操作生成一个新的临时(临时)密钥对。
- 共享密钥:使用临时私钥和接收者的公钥导出共享密钥。
- 对称加密:使用从共享密钥和一些随机性中导出的密钥对明文进行对称加密。
每次加密时使用新的临时密钥对确保即使相同的明文也会产生不同的密文。
结论
当使用 RSA 或 ECC 加密相同的明文多次时,得到不同密文的原因是加密过程中包含了随机元素。这种随机性是保持加密安全性和完整性的重要特性。
people found this article helpful. What about you?