密码技术简介之认证

2017-09-25  本文已影响0人  发仔很忙

前言

本文章是对《图解密码技术》一书第二部分的一个总结。

认证

本文章将介绍如何确认消息完整性(单向散列函数)、进行认证(消息认证码)已经防止否认(数字签名)。

单向散列函数

单向散列函数,也称消息摘要函数哈希函数或者杂凑函数,根据消息的内容计算出消息的散列值,通过散列值可以用来检查消息的完整性。

性质

单向散列函数有如下性质:

应用

单向散列函数有如下应用:

散列函数

常用的单向散列函数有:

消息认证码

消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,简称MAC

使用

其使用步骤如下图:


消息认证码使用步骤.PNG
  1. 发送者Alice与接收者Bob事先共享密钥;
  2. 发送者Alice根据汇款请求消息计算MAC值(使用共享密钥);
  3. 发送者Alice将汇款请求和MAC值两者发送给接收者Bob;
  4. 接收者Bob根据接收到的汇款请求消息计算MAC值(使用共享密钥);
  5. 接收者Bob将自己计算得MAC值和从Alice处收到的MAC值进行对比;
  6. 如果两个MAC值一致,则接收者Bob就可以断定汇款请求的确来找Alice(认证成功),如果不一致,则可以断定消息不是来找Alice(认证失败)。

数字签名

数字签名就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明,可以用来识别篡改和伪装,还可以防止否认。数字签名是非对称密钥加密技术与数字摘要技术的应用。

签名生成和验证

数字签名中,包括生成消息签名验证消息签名两部分。

消息发送者使用签名密钥来生成消息的签名,而消息接收者或者验证者则使用验证密钥来验证消息的签名。签名密钥只能由签名的人持有,而验证密钥的则是任意需要验证签名的人都可以持有

实际上,数字签名跟公钥密码有非常紧密的联系,两者非常相似。简而言之,数字签名就是通过将公钥密码“反过来用”而实现的。


数字签名

数字签名方法

有两种生成数字签的方法:

直接对消息签名的方法
签名和验证流程如下图:

直接对消息签名和验证的方法

对消息的散列值签名的方法
签名和验证流程如下图:

对消息的散列值签名和验证的方法.PNG

应用

数字签名有如下一些应用:

RSA实现数字签名

RSA生成签名:

签名 = 消息^D mod N

RSA验证签名:

由签名求得的消息 = 签名^E mod N

验证签名时,将“由签名求得的消息”与“消息”进行对比。

参考

上一篇 下一篇

猜你喜欢

热点阅读