报文鉴别与数字签名
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字签名技术
•消息鉴别与散列函数•数字签名
消息鉴别与散列函数
•消息鉴别
•散列函数
消息鉴别
9定义
•消息鉴别(Message Authentication):是一个证实收到的消息来自可信的源点且未被篡改的过程。
•散列函数(Hash Functions):一个散列函数以一个变长的报文作为输入,并产生一个定长的散列码,有时也称报文摘要,作为输出。
•数字签名(Digital Signature):是一种防止源点或终点抵赖的鉴别技术。
消息鉴别
?为什么需要消息鉴别
•内容修改:消息内容被插入、删除、修改。•顺序修改:插入、删除或重组消息序列。•时间修改:消息延迟或重放
•冒充:从一个假冒信息源向网络中插入消息
消息鉴别
9鉴别的目的
•鉴别的主要目的有二:
第一,验证信息的发送者是真正的,而不是冒充的,此为信源识别;
第二,验证信息的完整性,在传送或存储过程中未被篡改,重放或延迟等。
消息鉴别
9鉴别函数
可用来做鉴别的函数分为三类:
(1) 加密:以整个报文的密文作为它的鉴别符。
(2) 消息鉴别码MAC(Message Authentication Code):公
开函数+密钥产生一个固定长度的值作为鉴别标识
(3) 散列函数(Hash Function)是一个公开的函数,它将任意
长的信息映射成一个固定长度的信息。
消息加密
9消息的自身加密可以作为一个鉴别的量。9对称密钥模式
9公开密钥模式
消息鉴别
散列函数Hash Function
•H(M): 输入为任意长度的消息M; 输出为一个固定长度的散列值,称为消息摘要(Message Digest)。
•这个散列值是消息M的所有位的函数并提供错误检测能力:消息中的任何一位或多位的变化都将导致该散列值的变化。
•又称为:哈希函数、数字指纹(Digital finger print)、压缩(Compression)函数、紧缩(Contraction )函数、数据鉴别码DAC(Data authentication code)、篡改检验码MDC(Manipulation detection code)
散列函数
9HASH函数是将一个任意长的输入变成固定长度的输出的函数,一般输出的长度为128位或160位。
9单向Hash的输出不依赖于输入
9Hash主要用于完整性校验和身份认证
9常见的Hash函数算法有:MD5,SHA
消息鉴别
•消息鉴别码MAC
使用一个密钥生成一个固定大小的小数据块,并加入到消息中,称MAC (Message Authentication Code),或密码校验和(cryptographic checksum)
MAC = CK(M)
1、接收者可以确信消息M未被改变。
2、接收者可以确信消息来自所声称的发送者;
3、如果消息中包含顺序码(如HDLC,X.25,TCP),则接收
者可以保证消息的正常顺序;
MAC函数类似于加密函数,但不需要可逆性。因此在数学上比加密算法被攻击的弱点要少。
散列函数
MD5算法
安全散列函数(SHA)
消息认证码(MAC)
散列函数
单向散列函数是将任意长度的消息M映射成一个固定长度散列值h的函数:
h=H(M)
其中,h的长度为m。
散列函数
•散列函数要具有单向性,则必须满足如下特性:
9给定M,很容易计算h。
9给定h,根据H(M)=h反推M很难。
9给定M,要找到另一消息M'并满足H(M)=H(M')很难。
单向散列函数工作模式
消息分组1 消息分组2压缩
函数压缩函数IV …… 消息分组n 填充位
压缩
函数函数值
散列函数
•给定一任意长度的消息输入,单向函数输出长为m 的散列值。
•压缩函数的输入是消息分组和前一分组的输出(对第一个压缩函数,其输入为消息分组1和初始化向量IV);输出是到该点的所有分组的散列,即分组M i 的散列为
•h i =f (M i , h i −1)
•该最后一分组的散列就是整个消息的散列。
MD5 算法
9MD算法(Message Digest Algorithm信息摘要算法)由Rivest从二十世纪八十年代末开发的系列散列算法的合称。
9MD算法是让大容量信息在用数字签名软件签系统署积重难返人密匙前被”压缩”成一种保密的格式,即把一个任意长度的字节串变成一个定长的大整数。
91990年开发出MD4算法,1991年推出MD5算法9MD5以512位分组来处理输入的信息,每一分组又被划分为16个32位子分组,经过一系列的处理后,算法的输出由四个32位分组组成,最后级联后生成一个128位散列值
MD5算法
L ×512 bit =N ×32 bit
消息K bit
100…0填充位
消息长度(K mod 264)
Y 0
512 bit
512
H MD5Y 1512H MD5CV 1128128IV
512 bit ……Y L£-1512H MD5128位消息摘要
128512 bit CV L -1
MD5 算法