第6章_数据的完整性保护.
–目前应用最为广泛的hash函数是SHA-1和MD5,大多是128位和更 长
hash函数在现实生活中应用十分广泛。很多下载网站都提 供下载文件的MD5码校验,可以用来判别文件是否完整。另外 ,比如在WordPress的数据库,所有密码都是保存的MD5码, 这样即使数据库的管理员也无法知道用户的原始密码,避免隐 私泄露(很多人在不同地方都是用的同一个密码)。 如果两个输入串的hash函数的值一样,则称这两个串是一 个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的 字符串,所以,必有一个输出串对应无穷多个输入串,碰撞是 必然存在的。 一个“优良”的hash函数 f 应当满足以下三个条件: 1. 任意y,找x,使得f(x)=y,非常困难。 2. 给定x1,找x2,使得f(x1)=f(x2),非常困难。 3. 找x1,x2,使得f(x1)=f(x2),非常困难。 上面的“非常困难”的意思是除了枚举外不可能有别的更 快的方法。比如第3条,根据生日定理,要想找到这样的x1, x2,理论上需要大约2^(n/2)的枚举次数。
名称:Hash Function、哈希函数、单向杂凑函数、数据(消息) 摘要函数 单向散列函数 H(M) 作用于一任意长度的消息 M,它返回一固定长 度的散列值 h: h = H(M) 单向散列函数的特性:
给定 M,很容易计算 h。
给定 h,根据 h = H(M) 计算 M 很难。 给定 M,要找到另一消息 M’,并满足 H(M) = H(M’) 很难。 单向散列函数的重要之处就是赋予 M 唯一的“指纹”。 密码学上常用的单向散列函数有RSA公司MD系列中的MD2、MD4、MD5,美 国NIST的SHA、SHA-1,欧盟RIPE项目的RIPEMD、RIPEMD-128、 RIPEMD-160等。
1. 校验码会随数据块的变化而变化
2.根据校验码很难还原出原始数据
本章主要内容
6.1 信息摘要技术 6.2 数字签名
6.1 信息摘要技术
6.1.1 6.1.2 6.1.3 6.1.4 信息摘要技术基本原理 MD5算法 安全散列标准 HMAC
6.1.1 信息摘要技术基本原理
• 杂凑函数H是一公开函数,用于将任意长的消息M映 射为较短的、固定长度的一个值H(M),作为认证符, 称函数值H(M)为杂凑值、杂凑码或消息摘要。简单的 说,hash函数就是把任意长的输入字符串变化成固 定长的输出字符串的一种函数。通俗得说,hash函数 用来生成信息的摘要。输出字符串的长度称为hash函 数的位数。 • 在信息安全技术中,散列(Hash)函数提供了验证 消息的完整性这一服务,它对不同长度的输入消息, 产生固定长度的输出。这个固定长度的输出称为原输 入消息的“散列”或“信息摘要”(Message digest )。
MD5的特点: • 基本思想与MD4相同:相同的信息块长度,相同的信息摘 录初值,相同的填充 • 比MD4更安全,但效率更低 • MD5的安全性弱点在于其压缩函数的冲突已经被找到。 1995年有论文指出,花费 1,000万美元,设计寻找冲突的 特制硬件设备,平均在24天内可以找出一个MD5的冲突。
MD5算法描述:假设有一个b位长度的输入信号,希望产生它的报文摘 要,此处b是一个非负整数,b也可能是0,不一定必须是8的整数倍, 它可能是任意大的长度 (1)补位:MD5算法是对输入的数据进行补位,使得如果数据位长度 LEN对512求余的结果是448。即数据扩展至K*512+448位。即 K*64+56个字节,K为整数。补位操作始终要执行,即使数据长度 LEN对512求余的结果已是448。具体补位操作:补一个1,然后补0 至满足上述要求。总共最少要补一位,最多补512位。 (2)补数据长度 用一个64位的数字表示数据的原始长度b,把b用两个32位数表示。那 么只取B的低64位。当遇到b大于2^64这种极少遇到的情况时,这时 ,数据就被填补成长度为512位的倍数。也就是说,此时的数据长度 是16个字(32位)的整数倍数
第6章 数据的完整性保护
指导教师:李云亮
本章要求
• 数据完整性保护技术,包括信息摘录技术和 数字签名技术 • 了解信息摘录技术的安全散列标准SHS • 了解数字签名技术的一般概念和常见的数 字签名技术 • 掌握数字签名标准DSSຫໍສະໝຸດ 引• 计算机网络系统
入
数 据
储存状态---静态
用户数据和系统 数据 系统的工作主要 依赖于储存状态的 数据 数据系统级的完 整性保护较少
(3)初始化MD缓冲器 用一个四个字的缓冲器(A,B,C,D)来 计算报文摘要,A,B,C,D分别是32位的寄存 器,初始化使用的是十六进制表示的数字 • A=0X01234567 • B=0X89abcdef • C=0Xfedcba98 • D=0X76543210
(4)处理位操作函数 • 首先定义4个辅助函数,每个函数的输入是 三个32位的字,输出是一个32位的字。 • X,Y,Z为32位整数。 • F(X,Y,Z)=XYvnot(X)Z • G(X,Y,Z)=XZvYnot(Z) • H(X,Y,Z)=XxorYxorZ • I(X,Y,Z)=Yxor(Xvnot(Z))
传输状态---动态
用户数据 系统的工作不依 赖于传输状态的数 据 由网络传输机制 提供完整性保护
• 储存状态数据完整性
保证储存状态数据的完整性,可以采取管理方面和技术方面的措施。 口令机制 资源访问机制
数据校验技术 可以对要保护的数据按照一定的 规则产生一些校验码,并且把这些校 验友码记录下来。 数据校验技术即完整性检查 数据校验的要求
6.1.2 MD5算法
• MD系列单向散列函数是Ron Rivest设计的,包括MD2、 MD4和MD5。MD表示消息摘要(Message Digest)
• MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组 。算法的输出由四个32位分组组成,将它们级联形成一个128位散列 值。即产生128位的消息摘要