公钥加密:原理、实现与安全挑战
解密算法中的错误情况
在某些解密算法中,存在两种可能出现错误的情况。以特定的构造为例,要么 $\hat{m} \in Z_N^*$ 过大,要么 $m’ \in {0, 1}^{\ell + k}$ 末尾的 0 数量不足。在标准构造里,接收方在这两种情况下应返回相同的错误(记为 $\perp$)。然而,在一些实现中,接收方会根据出错步骤的不同输出不同的错误信息。这额外的一位信息可能会被攻击者利用,发起选择密文攻击。攻击者只需向泄露解密错误类型的预言机发起约 $\approx |N|$ 次查询,就能从对应的密文中完整恢复出消息 $m$。这充分显示了严格按照规范实现密码学方案的重要性,因为一旦方案的某些方面被更改,原有的证明和分析可能就不再适用。
此外,即使在两种错误情况下返回相同的错误信息,若返回错误的时间不同,攻击者仍有可能判断出错误发生的位置。这表明攻击者不仅会关注算法的输入输出,还会利用旁道信息来攻击加密方案。因此,在实现时应确保在两种情况下返回错误的时间一致。
随机预言模型下的 CCA 安全 KEM
这里介绍一种基于 RSA 的密钥封装机制(KEM),它在随机预言模型下是 CCA 安全的,并且该方案被纳入了 ISO/IEC 18033 - 2 公钥加密标准。与上一节的 RSA - OAEP 方案相比,其主要优点是构造和安全性证明都较为简单。不过,在加密短消息时,它会产生更长的密文,因为它需要 KEM/DEM 范式,而 RSA - OAEP 则不需要。但在加密长消息时,RSA - OAEP 也会作为混合加密方案的一部分使用,此时其效率与这里展示的 KEM 方案相近。
该方案的公钥包含 $\langle
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



