1.RSA
RSA是一种经典的公钥密码体制,可以用来做加密或者签名。设RSA的公私钥对为 (e,n) 和 (d,n) ,在RSA加密过程中,使用公钥对消息m进行加密: c=memod n ;使用私钥对密文c进行解密: m=cdmod n 。在签名过程中公钥和私钥的使用顺序是相反的,即使用私钥进行签名,使用公钥验证签名。
但是,上述RSA加密方案存在着易被篡改的问题,假设敌手在密文 c 的传输过程中将
这种认证可以通过填充机制完成,即通过对消息进行填充使得其满足某种特定的格式。当敌手对密文进行修改时,由于其不知道密文对应的明文,因此修改之后得到的明文符合填充标准的概率是一个很小的数(可以近似看作随机挑选一段字符满足填充格式的概率),这样,填充机制就完成了对消息的验证。
从另一个角度看,在进行RSA加密的过程中需要通过加入随机数使得其满足可证明安全理论中的IND-CPA安全。简单地说,给定两个随机明文
2.OAEP:最优非对称加密填充
OAEP是RSA填充的一种模式,在PKCS#1v2.0(PKCS#1标准现在已经升级到2.2版本)中提出,用于取代原先的PKCS#1v1.5版本中的填充机制,其填充过程如下:
2.1输入
在执行填充之前,需要提供两个函数:一个密码学杂凑函数(记作hash)和一个掩码生成函数( MGF ,mask generation function);填充时的输入主要包括RSA的公钥 (e,n) 、需要被填充的信息(