密码学中的机密性:从加密编码到密钥交换
在密码学领域,保障信息的机密性至关重要。本文将深入探讨加密编码方法以及密钥交换协议,包括PKCS#1、OAEP编码,Diffie - Hellman密钥交换等内容。
1. 加密编码方法
1.1 PKCS#1编码
PKCS#1编码在加密过程中使用特定的值来保证消息的安全性。其中,值0和2在十六进制表示中为0x00和0x02。0x00确保待加密的消息始终小于模数𝑛,而0x02保证消息“足够大”,从而始终应用模运算。随机填充字节使RSA - PKCS#1具有概率性,且填充字节必须非零,这样就可以使用0x00作为分隔符来区分填充和内容。
例如,若要使用2048位RSA加密128位AES密钥𝑘,最后16个字节包含密钥𝑘的值。在此之前,设置一个空字节0x00,前两个字节设置为0x00和0x02。这样就剩下256 - 16 - 1 - 2 = 221个字节用随机非零字节填充。
然而,PKCS#1编码存在理论和实际的弱点。攻击者随机选择的密文进行教科书式RSA解密时,有相对较高的概率得到有效编码的明文。这是因为PKCS#1编码包含的冗余信息相对较少,接收者本质上只能检查前两个字节是否为0x00 0x02,对于随机密文,此检查成功的概率为1/2¹⁶。
1.2 OAEP编码
为了改进PKCS#1编码的不足,提出了最优非对称加密填充(OAEP)方法。OAEP编码同样基于冗余和随机性,但这两个值现在是可扩展的。在加密消息𝑚之前,如图所示,有𝑘₁个零位作为冗余位,𝑘₀个随机位用于随机化。这些值与消息𝑚一起作为两个函数𝐺和𝐻以及异或运算的输入。将值𝑋和𝑌连接后
超级会员免费看
订阅专栏 解锁全文
1133

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



