1. 消息完整性检测方法
消息完整性( 报文认证) 的目标:
1. 证明报文确实来自声称的发送方;
2. 验证报文在传输过程中没有被篡改;
3. 预防报文的时间、 顺序被篡改;
4. 预防报文持有期被篡改;
5. 预防抵赖;
消息完整性检测方法:散列函数。主要有以下两种:
1. MD5:128位散列值;
2. SHA-1:160位散列值;
散列函数的特性:
1. 散列函数算法公开;
2. 快速计算;
3. 对任意长度报文进行散列产生定长输出;
4. 对于任意报文无法预知其散列值;
5. 不同报文不产生相同的散列值;
6. 单向性;
2. 报文认证
报文认证: 消息的接收者能够检验收到的消息是否是真实的方法。
报文认证要完成 消息源的认证 和 消息的认证。
报文认证术语:
报文摘要: 对报文m应用散列函数H, 得到固定长度的散列码。
报文认证的方式:
1. 简单报文验证。
(1). 发送方对报文m应用散列函数, 得到固定长度的散列码, 获得报文摘要h, 将扩展报文(m,h)发送给接收方;
(2). 接收方收到扩展报文后, 提取出报文m和报文摘要h, 同样对报文m应用散列函数H获得新的报文摘要H(m), 将H(m)和 h 比较;
(3). 若相同, 报文认证成功,否则报文认证失败。
简单报文验证的不足: 无法达到对消息源认证。
2. 报文认证码MAC( Message Authentication Code)
(1). 发送方和接收方共享一个认证密钥s, 发送方对报文m和认证密钥s应用散列函数H得到报文认证码h, 将扩展报文(m,h)发送给接收方;
(2). 接收方收到扩展报文后, 提取出报文m和报文认证码h, 对报文m和认证密钥s应用散列函数H获得新的报文认证码H(m s), 将H(m s)与h比较;
(3). 若相等, 则报文认证成功,否则失败。
报文认证码MAC不足: 无法保证消息在接收方没有被篡改。
3. 数字签名
数字签名: 在公开密码体制中, 一个主体使用自己的私钥加密消息, 得到的密文。 密文可以使用该主体的公钥解密, 恢复成原来的消息。 如此生成的 "密文" 对该消息提供认证服务。
数字签名应满足:
1. 接收方能够确认发送方的签名, 但不能伪造;
2. 发送方发出签名的消息给接收方后, 就不能再否认他所签发的消息;
3. 接收方对已收到的签名消息不能否认, 有收报认证;
4. 第三者可以确认收发双方之间的消息传送, 但不能伪造这一过程;
数字签名的方式:
1. 简单数字签名
(1). Bob利用自己的私钥对报文m加密, 创建签名报文,将扩展报文(报文, 签名报文)发送给Alice;
(2). Alice收到扩展报文, 利用Bob的公钥解密签名报文, 并检验解密后的签名报文和报文m是否一致;
(3). 若一致, 则签名m的一定是Bob的私钥。
2. 签名报文摘要
(1). Bob对报文m应用散列函数H生成报文摘要H(m), 然后Bob通过其私钥对报文摘要进行加密生成加密的报文摘要, 将扩展报文(报文, 加密的报文摘要)发送给Alice;
(2). Alice收到报文m以及加密的报文摘要, Alice利用Bob的公钥解密加密的报文摘要, 并对m应用散列函数生成新的报文摘要;
(3). 如果两者一致, 则签名报文m的一定是Bob的私钥。