求离散对数非常困难
RSA是Ron Rivest/Adi Shamir/Leonard Adleman的姓氏首字母组成。
RSA可以被用于公钥密码和数字签名。
RSA加密:密文=明文EmodN(E和N为公钥)
RSA解密:明文=密文DmodN(D和N为私钥)
对RSA的破解:
暴力破解:暴力破解的难度会随着D的长度增加而变大,当D足够长时,就不可能在现实的时间内通过暴力破解找出D。
混合密码系统:用对称密码提高速度,用公钥密码保护会话密钥
混合密码系统的组成机制:
用对称密码加密消息
通过伪随机数生成器生成对称密码加密中使用的会话密钥
用公钥密码加密会话密钥
从混合密码系统外部赋予公钥密码加密时使用的密钥
单向散列函数-指纹
单向散列函数是为了保证消息的完整性,也称为一致性。
碰撞:两个不同的消息产生同一个散列值的情况称为碰撞。
抗碰撞性:难以发现碰撞的性质称为抗碰撞性。
弱抗碰撞性:要找到和该条消息具有相同散列值的另外一条消息是非常困难的。
强抗碰撞性:要找到散列值相同的两条不同的消息是非常困难的。
单向性:无法通过散列值反算出消息的性质。
单向散列函数也称为消息摘要函数(message digest function)、哈希函数
单向散列函数输出的散列值也称为消息摘要(message digest)或者指纹(fingerprint)
MD4能够产生128比特的散列值,
MD5能够产生128比特的散列值。强抗碰撞性已经被攻破,因此它也不安全了。
SHA-1:160比特的散列值,消息上限为264比特,在实际使用中没有问题。强抗碰撞性已于2005年被攻破。
SHA-2代-SHA-256:256比特,消息上限为264比特,还未被攻破。
SHA-2代-SHA-384:384比特,消息上限为2128比特,还未被攻破。
SHA-2代-SHA-512:512比特,消息上限为2128比特,还未被攻破。
对单向散列函数的攻击
暴力破解:试图破解单向散列函数的“弱抗碰撞性”的攻击。
生日攻击:这是一种试图破解单向散列函数的“强抗碰撞性”的攻击。
单向散列函数能够辨别出“篡改”,但无法辨别出“伪装”。
用于认证的技术包括消息验证码和数字签名。
消息认证码(MAC,message authentication code)
是一种确认完整性并进行认证的技术。
消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据。