2.1单向散列函数用单向散列函数计算信息的指纹,通过验证指纹判断信息是否被篡改。 称为完整性,或一致性。
单向散列函数单向散列函数有输入和输出。 其中,输入称为消息)消息,输出称为散列值) hash value。 单向散列函数将输入视为纯位串。 散列值的长度与消息的长度无关,单向散列函数始终计算固定长度的散列值。
单向散列函数的性质通过根据任意长度的消息计算固定长度的散列值,将散列值因散列值消息而异、难以发现冲突的性质定义为http://www.Sina.com/http://www.Sina.com /此消息抗碰撞性查找具有相同哈希值的两个不同信息是非常困难的加密技术中使用的单向散列函数。 这两个性质都需要一些具有单向度的术语。
- 弱抗碰撞性:或强抗碰撞性:, 单向散列函数或消息摘要函数
-输入单向散列函数的消息是哈希函数
-单向散列函数输出的http://www.Sina.com/http://www.Sina.com/或http://www.Sina.com /
- 杂凑函数、原像
单向散列函数应用检测完整性、基于密码的加密、消息认证码、数字签名、伪随机数生成器、一次性密码
几种单向散列函数MD4/MD5SHA-1、sha-2(sha-256、SHA-384、SHA-512 ) SHA-1的强抗碰撞能力在2005年RIPEMD-160 RIPEMD的强抗碰撞能力在2004年为了解决这个问题,必须对消息进行认证。 用于身份验证的技术包括消息认证码和数字签名。 消息认证码可以向通信对方保证消息没有被篡改,数字签名不仅可以像通信对方一样保证消息没有被篡改,还可以向第三方保证。
2.2消息认证码消息认证码(Message Authentication Code )是一种确认消息完整性并进行认证的技术,简称MAC。 其散列值任意长度的消息摘要和一个发件人和收件人之间共享的指纹, 完整性固定长度的德
消息认证码共享密钥也存在密钥配送问题。 和对称密码一样,具体用哪种方式配送需要根据情况进行。
实例SWIFTIPsecSSL/TLS实现方法,使用单向散列函数一致性,除了使用组密码之外:流密码和公钥加密认证加密(简称AE或AEAD ) Encrypt-then-MAC (先加密明文,计算密文的MAC值(,Encrypt-and-MAC ),先加密明文,然后与MAC值同时计算明文),MAC-then-Encrypt
GCM和GMAC对消息认证码的攻击再生攻击密钥推测攻击消息认证码可以保证消息的完整性并认证消息源,但是存在无法解决的问题。 例如“对第三方证明”和“防止否定”。
2.3数字签名数字签名不仅可以识别篡改和伪装,还可以防止否认。 数字签名区分签名密钥和验证器密钥,验证器密钥不能生成签名。 签名密钥只能由签名者拥有,任何需要验证签名的人都可以拥有验证密钥。
用签名密钥签名的验证器密钥解密如何直接在消息上签名(很少使用)如何在消息哈希值上签名一些问题数字签名不是为了保证机密性,而是“没有私钥的人实际上不能生成利用该私钥生成的密文” 这表示只有拥有该密钥时才能生成的信息(认证符号)。 为了保证机密性,数字签名必须与密码结合使用。 签名可以复制并不意味着签名没有意义。 重要的是输入这一事实。 数字签名实现的不是防止修改,而是识别修改。 事实上不可能同时修改消息和签名以成功验证签名; 另外,不同消息的签名不同,不存在重复签名。 数字签名真的能代替签名吗? 签名软件可靠吗? 美国于2000年颁布了E-SIGN法案,日本也于2001年颁布了关于电子签名及其认证业务的法律。 数字签名应用安全信息公告软件在下载公钥证书(后一章详细介绍) SSL/TLS )后
续章节会详细介绍)通过RSA实现数字签名用RSA生成签名:D和N就是签名者的私钥
用RSA验证签名:E和N就是签名者的公钥
其他数字签名 EIGamal方式DSAECDSARabin方式对数字签名的攻击 中间人攻击对单向散列函数的攻击利用数字签名攻击公钥密码潜在伪造其他:暴力破解、对RAS的N进行质因数分解数字签名既可以识别出篡改和伪装,还可以防止否认。也就是说,我们同时实现了确认消息完整性、认证以及防止否认。然而要正确地使用签名,一个大前提是用于验证签名的公钥必须属于真正的发送者。这个公钥的验证又必须经过证书——由可信的第三方对其签名后所得到的公钥。
问题是如何构筑一个可信的数字签名链条呢?又由谁来颁发可信的证书呢?
我们需要让公钥和数字签名技术成为一个社会性的基础设施,即公钥基础设施(Public Key Infrastructure,PKI)。
2.4 证书——为公钥加上数字签名