求剧情
算法的乐趣 · 第五十七节

《算法的乐趣》第五十七节

本节先介绍针对RSA的选择密文攻击:攻击者已知A的公钥和密文,自行选一个r算出Y1,再构造Y2与Y1的乘积求逆元t,然后以验证身份为名骗A对Y2签名,利用签名结果反推出明文X。

本节先介绍针对RSA的选择密文攻击:攻击者已知A的公钥和密文,自行选一个r算出Y1,再构造Y2与Y1的乘积求逆元t,然后以验证身份为名骗A对Y2签名,利用签名结果反推出明文X。防御办法是用户不直接对来历不明的数据签名,实际RSA签名会先填充随机数。

接着讲数据分组加密。RSA分组的有效载荷大小取决于密钥长度和填充模式,常用PKCS#1.5与OAEP两种:PKCS#1.5需11字节填充、兼容性好,OAEP需42字节、随机性更强更安全。字节流与大整数的转换只需逐字节填入CBigInt的位数组,注意最高位不能为0。PKCS#1.5填充由前导0、标志字节T、随机数据和截断0构成;OAEP则用哈希、随机种子和掩码生成函数多次异或,加密与解密步骤互逆。最后以PKCS#1.5为例说明分组加密实现:填充后转成大整数做模幂运算,再把密文大数转回字节串存储。

‹ 上一章目录下一章 ›

全部 76 章