第5章散列函数和消息鉴别

合集下载

05、消息认证与数字签名

05、消息认证与数字签名

消息认证与数字签名
21
5.2.2 散列函数旳使用方式
❖ 散列函数旳基本使用方法(a、b)
Provides confidentiality -- only A and B share K Provides authentication -- H(M) is cryptographically protected
❖ 问题:经过加密得到信息真实性?
保密性与真实性是两个不同旳概念。根本上,信息加密提供旳是保密 性而非真实性。
加密代价大(公钥算法代价更大)。 鉴别函数与保密函数旳分离能提供功能上旳灵活性。
广播旳信息难以使用加密(信息量大) 某些信息只需要真实性,不需要保密性
消息认证与数字签名
12
5.1.2 消息认证码
散列函数H是公开旳,散列值在信源处被附加在消息上,接受方经过 重新计算散列值来确保消息未被篡改。
因为函数本身公开,传送过程中对散列值需要另外旳加密保护(假如 没有对散列值旳保护,篡改者能够在修改消息旳同步修改散列值, 从而使散列值旳认证功能失效)。
消息认证与数字签名
19Biblioteka 5.2 散列(Hash)函数
息验证码 MAC=CK(M) 。发送给接受方B时,将它附加在报文中。
❖ 接受方收到报文使用相同旳密钥K执行相同旳计算,得到新旳MAC。接受
方将收到旳MAC与计算得到MAC进行比较,假如相匹配,那么能够确保报
文在传播过程中维持了完整性:

(1)报文未被更改正

(2)接受者确信报文来自真实旳发送者。(无人知晓密钥)
因为收发双方共享相同旳密钥,上述过程只提供认证而不提供保密, 也不能提供数字署名
消息认证与数字签名
14

散列函数与消息认证码

散列函数与消息认证码

第七讲散列函数与消息认证码马春光machunguang@计算机科学与技术学院哈尔滨工程大学1 /•网络安全威胁:–被动攻击(Passive Attack):敌手通过侦听和截获等手段获取数据;–主动攻击(Active Attack):敌手通过伪造、重放、篡改、乱序等手段改变数据;图1 无线网络中的四种通信安全威胁(a)监听;(b)篡改;(c)伪造;(d)阻断2 /•消息认证(Message Authentication)的目的:–验证消息的完整性,确认数据在传送和存储过程中未受到主动攻击。

•消息认证的方式:–消息加密函数:加密整个消息,以消息的密文文件作为认证,可使用对称密码或公钥密码体制进行加密;–散列函数(Hash):将任意长度的消息变换为定长的消息摘要,并加以认证;–消息认证码(MAC):依赖公开的函数(密钥控制下)对消息处理,生成定长的认证标识,并加以认证;3 /提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5•2 消息认证码–2.1 MAC函数–2.2 MAC的安全性–2.3 CBC-MAC•作业4 /提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5• 2 消息认证码•作业5 /散列函数的定义•散列函数H 是一个公开的函数,它将任意长度的消息M变换为固定长度的散列码h 。

•h=H (M)–M:变长消息,H(M):定长的散列值•散列函数是一种算法,算法的输出内容称为散列码或者消息摘要。

•消息摘要要唯一地对应原始消息,如果原始消息改变并且再次通过散列函数,它将生成不同的消息摘要,因此散列函数能用来检测消息地完整性,保证消息从建立开始到收到为止没有被改变和破坏。

•运行相同算法的接受者应该收到系统的消息摘要,否则保温是不可信的。

•散列函数又称为:哈希(Hash )函数、数字指纹(Digital fingerprint)、压缩(Compression)函数、数据认证码(DataAuthentication Code)等6 /散列函数的要求•H 能用于任意大小的分组;•H 能产生定长的输出;•对任何给定的x,H(x)要相对易于计算,使得硬件和软件实现成为实际可能;•对任何给定的码h ,寻找x 使得H(x)=h 在计算上是不可行的,即单向性(one-way);•对任意给定的分组x,寻找不等于x 的y,使得H(x)=H(y)在计算上是不可行的,即弱抗冲突性(Weak Collision-free);•寻找对任意的(x, y) 对使得H(x)=H (y) 在计算上是不可行的,即强抗冲突性(Strong Collision-free);7 /提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5• 2 消息认证码•作业8 /2.2 Hash函数的通用结构•由Ron Rivest于1990年提出MD4•几乎被所有Hash函数使用•具体做法:–把原始消息M分成一些固定长度的块Y i–最后一块padding 并使其包含消息M长度–设定初始值CV0–压缩函数f, CV i=f(CV i-1, Y i-1)–最后一个CV i为Hash值9 //提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5• 2 消息认证码•作业11 /MD5 描述•1989年,Merkle提出Hash function模型•1990年,Ron Rivest提出MD4•1992年, Ron Rivest完成MD5 (RFC 1321) –/rfcs/rfc1321.html•在最近数年之前,MD5是最主要的Hash算法•现行美国标准SHA-1以MD5的前身MD4为基础•MD5(Message Digest)–输入:任意长度的消息–输入分组长度:512 bit–输出:128 bit 消息12 /(4)(3)13 /14/MD5 描述-(1)•消息填充•对消息进行填充,使其比特数与448模512同余,即填充长度为512的整数倍减去64,留出64比特在(2)中使用:•填充方法:填充比特串的最高位为1,其余各位均为0。

信息安全概论第五章消息认证与数字签名

信息安全概论第五章消息认证与数字签名
6
5.1.1 信息加密认证
信息加密函数分两种,一种是常规的对称密钥加密函数, 另一种是公开密钥的双密钥加密函数。下图的通信双方 是,用户A为发信方,用户B为接收方。用户B接收到信 息后,通过解密来判决信息是否来自A, 信息是否是完 整的,有无窜扰。
1.对称密码体制加密: 对称加密:具有机密性,可认证,不提供签名
通常b>n
24
5.2.3
MD5算法
Ron Rivest于1990年提出了一个称为MD4的散列函数。 他的设计没有基于任何假设和密码体制,不久,他的 一些缺点也被提出。为了增强安全性和克服MD4的缺 陷, Rivest于1991年对MD4作了六点改进,并将改进 后的算法称为MD5. MD5算法:将明文按512比特进行分组,即MD5中的 b=512bit,经填充后信息长度为512的倍数(包括64 比特的消息长度)。 填充:首位为1,其余补0至满足要求,即填充后的比 特数为512的整数倍减去64,或使得填充后的数据长 度与448模512同余。
18
通过以下方式使用散列函数常提供消息认证
(1)使用对称加密算法对附加消息摘要的报文进行加密 A B: EK(M||H(M)) 提供保密、认证 (2)使用对称加密方法对消息摘要加密 A B: M||EK(H(M)) 提供认证 (3)使用发方的私钥对消息摘要进行加密 A B: M||EKRa(H(M)) 提供数字签名、认证 (4)在(3)的基础上,使用对称加密方法进行加密 A B: EK(M||EKa(H(M)) ) 提供数字签名、认证和保密 (5)假定双方共享一个秘密值S,与消息M串接,计算散 列值 A B: M||(H(M||S)) 提供认证 (6)假定双方共享一个秘密值S,使用散列函数,对称加 密方法 A B: EK(M||H(M||S)) 提供数字签名、认证和保密19

清华大学出版社 密码学PPT课件

清华大学出版社  密码学PPT课件
✓ 二十世纪末的AES算法征集活动使密码学界又掀起了一次分组密码研究的 高潮。同时,在公钥密码领域,椭圆曲线密码体制由于其安全性高、计算 速度快等优点引起了人们的普遍关注和研究,并在公钥密码技术中取得重 大进展。
✓ 在密码应用方面,各种有实用价值的密码体制的快速实现受到高度重视, 许多密码标准、应用软件和产品被开发和应用,美国、德国、日本和我国 等许多国家已经颁布了数字签名法,使数字签名在电子商务和电子政务等
同时在公钥密码领域椭囿曲线密码体制由于其安全性高计算速度快等优点引起了人们的普遍关注和研究幵在公钥密码技术中叏得重在密码应用斱面各种有实用价值的密码体制的快速实现叐到高度重视许多密码标准应用软件和产品被开収和应用美国德国日本和我国等许多国家巫经颁布了数字签名法使数字签名在电子商务和电子政务等领域得到了法律的认可推劢了密码学研究和应用的収展
可以对用该密钥加密的任何新的消息进行解密。
④ 选择密文攻击(Chosen—ciphenext attack)
选择密文攻击是指密码分析者可以选择一些密文,并得到相应的明文
1.3.3 对密码系统的攻击
密码分析者破译或攻击密码的方法主要有穷举攻击法、统计分析法和数学分 析攻击法。
(1)穷举攻击法
穷举攻击法又称为强力或蛮力(Brute force)攻击。这种攻击方法是 对截获到的密文尝试遍历所有可能的密钥,直到获得了一种从密文到明文的 可理解的转换;或使用不变的密钥对所有可能的明文加密直到得到与截获到 的密文一致为止。
1.3.1密码学的主要任务(续)
③ 鉴别
这是一种与数据来源和身份鉴别有关的安全服务。鉴别服务包括对身份 的鉴别和对数据源的鉴别。对于一次通信,必须确信通信的对端是预期的实 体,这就涉及到身份的鉴别。

第18讲 消息认证和散列函数

第18讲 消息认证和散列函数

发送方和接收方共享两对密钥k1和k2 发送方: M先被加密再与MAC链接后发送。 接收方:解密后进行比较。
15
避免使用加密方法产生MAC码

生成MAC没有必要对整个报文加密

速度、进出口障碍 不需要能恢复原文 MAC的计算过程只需体现明文的特征唯一 Key是必要的 先计算特征,再把特征加密的思想 把散列函数和Key结合得MAC
12
消息认证码:使用方式之一

特点: MAC函数无需可逆 收发双方使用相同的密钥 只提供消息认证,不能提供机密性
13
消息认证码:使用方式之二
发送方和接收方共享两对密钥k1和k2 发送方:在计算MAC后,对M‖MAC进行整体加密再发送 接收方:解密后进行比较 提供保密性和认证性
14
消息认证码:使用方式三
25
散列函数的使用方式之六
⑥ 将消息与杂凑值链接以后再增加单钥加密运算 功能:提供认证性和保密性.
26
散列函数的使用方式选择
由于加密运算的速度较慢,代价较高, 而且很多加密算法还受到专利保护,在不要 求保密性的情况下,方式②和③将比其他方 式更具优势。
2
27
散列函数应满足的条件
散列函数应满足以下条件: ① 函数的输入可以是任意长。 ② 函数的输出是固定长。 ③ 已知x,求H(x)较为容易,可用硬件或软件实现。 这三个条件是散列函数能用于消息认证的基本要求。

不能够察觉的举例

rc4加密中,对密文部分比特的窜改导致明 文对应部分解密错误 另外,精心伪造的密文可能恰好解密为有 效的明文


结论:加密并不能完全抵抗篡改或假冒
教训:对密文的保护

在加密之前,给明文添加结构特征

消息鉴别和散列函数

消息鉴别和散列函数

网络与信息安全第七讲消息鉴别与散列函数陈钟教授北京大学信息科学技术学院软件研究所--信息安全研究室chen@2008-2009年度北京大学研究生课程2009/03/30 NISC-07 ©CZ@PKU回顾与总结•对称密码算法–运算速度快、密钥短、多种用途(随机数产生、Hash函数)、历史悠久–密钥管理困难(分发、更换)•非对称密码算法–只需保管私钥、可以相当长的时间保持不变、需要的数目较小–运算速度慢、密钥尺寸大、历史短信息安全的需求•保密性(Confidentiality)•完整性(Integrity)–数据完整性,未被未授权篡改或者损坏–系统完整性,系统未被非授权操纵,按既定的功能运行•可用性(Availability)•鉴别(Authenticity)–实体身份的鉴别,适用于用户、进程、系统、信息等•不可否认性(Non-repudiation)–防止源点或终点的抵赖•……讨论议题•消息鉴别(Message Authentication)•散列函数(Hash Functions)定义•消息鉴别(Message Authentication):是一个证实收到的消息来自可信的源点且未被篡改的过程。

•散列函数(Hash Functions):一个散列函数以一个变长的报文作为输入,并产生一个定长的散列码,有时也称报文摘要,作为输出。

•数字签名(Digital Signature)是一种防止源点或终点抵赖的鉴别技术。

通信系统典型攻击1)窃听2)业务流分析3)消息篡改内容修改:消息内容被插入、删除、修改。

顺序修改:插入、删除或重组消息序列。

时间修改:消息延迟或重放。

4)冒充:从一个假冒信息源向网络中插入消息5)抵赖:接受者否认收到消息;发送者否认发送过消息。

两个概念•鉴别(Authentication):真伪性•认证(Certification)资格审查消息鉴别•鉴别的目的•鉴别模型•鉴别函数鉴别的目的•鉴别的主要目的有二:第一,验证信息的发送者是真正的,而不是冒充的,此为信源识别;第二,验证信息的完整性,在传送或存储过程中未被篡改,重放或延迟等。

网络安全--消息鉴别

网络安全--消息鉴别
核心是类似于加密算法的鉴别码生成算法 MAC被附加在消息中,用于消息的合法性鉴别
功能
接收者可以确信消息M未被改变 接收者可以确信消息来自所声称的发送者
消息鉴别码的基本原理
发送方
接收方MLeabharlann 信道MMAC
f() 密钥K
M MAC
比较
f() 密钥K
认证结果
双方共享鉴别密钥 k
MAC函数的特点
消息篡改 内容篡改:插入、删除、修改等 序号篡改:在依赖序号的协议如TCP中,对消息序号 进行篡改,包括插入、删除、重排等 时间篡改:对消息进行延迟或重放
消息鉴别的作用
保护双方的数据交换不被其他人侵犯
基于双方共享的秘密 但是消息鉴别无法解决双方之间可能存在的争议
B伪造一个消息,声称是A发送的 B否认发送过某个消息,而A无法证明B撒谎
单纯鉴别系统的模型
攻击者
信源
鉴别 编码器
信道 安全信道
鉴别 密钥源
需要鉴别密钥,而且此密 钥一般不同于加密密钥
鉴别 解码器
信宿
消息鉴别系统的构成
认证算法:底层实现的一项基本功能
认证功能要求底层必须实现某种能生成认证标识的算 法
认证标识(鉴别符)是一个用于消息鉴别的特征值 认证标识的生成算法用一个生成函数f来实现,称为鉴
网络安全
消息鉴别
安全的信息交换应满足的性质
机密性( Confidentiality) 完整性(Integrity) 可用性(Availability) 不可否认性( Non-repudiation) ……
消息鉴别的概念
消息鉴别(Message Authentication)

清华大学出版社 密码学PPT课件

清华大学出版社  密码学PPT课件
应用密码学
清华大学出版社 2008年9月
课程主要内容
第1章 密码学概述 第2章 古典密码技术 第3章 分组密码 第4章 公钥密码体制 第5章 散列函数与消息鉴别 第6章 数字签名技术 第7章 密钥管理技术 第8章 身份鉴别技术 第9章 序列密码 第10章 密码技术应用
第1章 密码学概述
✓ 二十世纪末的AES算法征集活动使密码学界又掀起了一次分组密码研究的 高潮。同时,在公钥密码领域,椭圆曲线密码体制由于其安全性高、计算 速度快等优点引起了人们的普遍关注和研究,并在公钥密码技术中取得重 大进展。
✓ 在密码应用方面,各种有实用价值的密码体制的快速实现受到高度重视, 许多密码标准、应用软件和产品被开发和应用,美国、德国、日本和我国 等许多国家已经颁布了数字签名法,使数字签名在电子商务和电子政务等
图1.4(a) ENIGMA密码机
图1.4(b) TYPEX密码机
近代密码时期可以看作是科学密码学的前夜,这阶段的密码技术可以
说是一种艺术,是一种技巧和经验的综合体,但还不是一种科学,密码专 家常常是凭直觉和信念来进行密码设计. 和分析,而不是推理和证明。
6/31
第1章 密码学概述
• 现代密码时期
本章主要内容
• 信息安全与密码技术 • 密码技术发展简介 • 密码学基本概念
➢ 密码学的主要任务 ➢ 密码系统的概念 ➢ 对密码系统的攻击 ➢ 密码系统的安全性 ➢ 密码体制的分类 ➢ 对称与非对称密码体. 制的主要特点
3/31
Байду номын сангаас
第1章 密码学概述
1.1 信息安全与密码技术
• 密码技术是一门古老的技术;
④ 抗抵赖性
是一种用于阻止通信实体抵赖先前的通信行为及相关内容的安全特性 。密码学通过对称加密或非对称加密,以及数字签名等技术,并借助可信机 构或证书机构的辅助来提供这种服务。

清华大学出版社第5章 散列函数和消息鉴别

清华大学出版社第5章 散列函数和消息鉴别
第一类称为穷举攻击(或暴力攻击),它能对任何类型的散列函数进行 攻击,其中最典型的方法就是“生日攻击”。 第二类称为密码分析法,这类攻击方法依赖于对散列函数的结构和代数 性质分析,采用针对散列函数弱性质的方法进行攻击。这类攻击方法有中 间相遇攻击、修正分组攻击和差分分析等等。

生日悖论
我们来考虑这样一个有趣的问题:在一个教室中最少应有多少学 生才使得至少有两个学生的生日在同一天的概率大于0.5?计算与此 相关的概率被称为生日悖论问题。
3/27
第5章 散列函数与消息鉴别
• 散列函数的应用
散列函数的主要应用有以下三个方面: 1)保证数据的完整性 2)单向数据加密 3)数字签名 应用散列函数实现数据完整性保护的模型:
注:实际应用中,未必一定是如h(m‖k)的计算方式,明文与密钥k的 组合方式因不同的实现可以不同。
4/27
第5章 散列函数与消息鉴别
20/27
第5章 散列函数与消息鉴别 (4)结合使用公钥密码体制和对称密码体制,这种方法用发送方的私钥 对散列值进行数字签名,用对称密码体制加密消息M和得到的数字签名, 如图5.16(d)。 (5)这种方法使用了散列算法,但未使用加密算法。 (6)在方法(5)的基础上,使用对称密码体制对消息M和生成的散列值 进行保护,如图5.16(f)。
Ⅲ.SHA-1的压缩操作 SHA-1压缩函数操作过程,如图5.9所示(下页),是处理一个512位 分组的4次循环中每一循环的基本压缩操作流程。 Ⅳ.示例 【例5.1】计算字符串“abc”的SHA-1散列值。 字符串“abc”的二进制表示为:01100001 01100010 01100011,共 有24位的长度。按照SHA-1的填充要求,应该填充一个“1”(界符)和423 个“0”,最后有两个字“00000000 00000018”(十六进制),表明原始消 息的长度为24位。本例中共只有一个分组。

应用密码学 5 单向散列函数和消息认证

应用密码学 5 单向散列函数和消息认证

Hash函数按是否需要密钥可分为以下两类:
(1)不带密钥的Hash函数,它只有一个被通常称为消息的输入参数。 (2)带密钥的Hash函数,它有两个不同的输入,分别称为消息和密钥。
5.1 单向散列函数基础
按设计结构,散列算法可以分为三大类:标准Hash、基于分组
加密Hash、基于模数运算Hash。 标准Hash函数有两大类:MD系列的MD4,MDS,HAVAL, RIPEMD,RIPEMD-160等;SHA系列的SHA-l,SHA-256, SHA-384,SHA-512等,这些Hash函数体现了目前主要的Hash 函数设计技术。
5.1 单向散列函数基础
5.1.2 Hash函数的性质 H 必须满足以下性质。 从应用需求上来说,Hash函数 (1) H 能够应用到任何大小的数据块上。 (2) H 能够生成大小固定的输出。 (3)对任意给定的 x , H ( x ) 的计算相对简单,使得硬件和软件的实现可行。 从安全意义上来说,Hash函数H应满足以下特性: (1)对任意给定的散列值h ,找到满足 H ( x) h 的 x 在计算上是不可行的。 (2)对任意给定的 x ,找到满足H ( x) H ( y)而 x y 的 y 在计算上是不可行 的。 (3)要发现满足 H ( x) H ( y) 而 x y的对 ( x, y )是计算上不可行的。
第 5章 单向散列函数和消息认证
Logo
5.单向散列函数和消息认证

5.1 单向散列函数基础


5.2 MD5算法
5.3 SHA-1算法
5.4 SM3算法
5.5 消息认证
5.1 单向散列函数基础
所谓的单向散列函数(Hash Function,又称哈希函数、杂凑函数) , 是将任意长度的消息映射成一个固定长度散列值 (设长度为 )的函数 : 散列函数要具有单向性,则必须满足如下特性: (1)给定 M,很容易计算 h 。

《分组密码》PPT课件

《分组密码》PPT课件
课程主要内容
第1章 密码学概述 第2章 古典密码技术 第3章 分组密码 第4章 公钥密码体制 第5章 散列函数与消息鉴别 第6章 数字签名技术 第7章 密钥管理技术 第8章 身份鉴别技术 第9章 序列密码 第10章 密码技术应用
第3章 分组密码
本章主要内容
• 概述 • 分组密码的设计原则与评估 • 分组密码的设计方法 • 数据加密标准-DES • 高级加密标准-AES • 分组密码的工作模式 • 其它分组密码
精选课件ppt 5/37
第3章 分组密码
3.3 分组密码常见的设计方法 3.3.1 Feistel结构
Li-1
Ri-1
Ki
F
Li = Ri-1
Ri = Li-1 F(Ri-1, Ki)
Feistel结构是典型的迭代密码.Feistel结构的解 密与加密是完全一样的,除了所使用的子密钥的顺序 正好相反。
一、有限域GF(28) 可以把出b7b6b5b4b3b2b1b0构成的一个字节看成是系数在(0, 1) 中取值的多项式:
DES加密
加密
DES解密
DES加密
明文M
K1
K2
K3
密文C
DES解密
DES加密
DES解密
精选课件ppt
17/37
第3章 分组密码
3.5 高级加密标准-AES AES是DES的替代者。1997年9月12日,NIST发布了
征集算法的正式公告,要求AES具有128比特的分组长 度,并支持128、192和256比特的密钥长度,而且要 求AES要能在全世界范围内免费使用。
第3章 分组密码
3.4 数据加密标准-DES DES是一种明文分组为64比特,有效密钥56比特,

信息安全实际原理及具体应用第5章消息认证

信息安全实际原理及具体应用第5章消息认证
• 因此,认证函数比加密函数更不易被攻破,因为即 便攻破也无法验证其正确性。关键就在于加密函数 是一对一的,而认证函数是多对一的。
消息认证码的基本用途
• 只提供消息认证,不提供保密性。(见前) • 提供消息认证和保密性:
A
B
MKC||KE KDCM KC 比较 1
2 2 EK2[M || CK1 (M )]
– 与消息认证码不同的是, hash码的产生过程中并不使用 密钥。
– Hash码是所有消息的函数,改变消息的任何一位或多位, 都会导致hash码的改变。
– Hash算法通常是公开的。 – 又称为:哈希函数、数字指纹(Digital finger print)、压
缩(Compression)函数、紧缩(Contraction )函数、 数据鉴别码DAC(Data authentication code)、篡改 检验码MDC(Manipulation detection code)
• 平均来讲,若k=x*n,则需x次循环才能找到正确的密钥。 • 所以,用穷举法攻破MAC比攻破加密算法要困难得多。
对MAC的攻击—攻击算法
• 考虑下面的算法:
消息M=(X1‖X2‖…‖Xm)是由64比特长的分组Xi(i=1,…,m)链接而成 MAC算法是:
(M ) X1 X2 Xm
CK (M ) EK (M )
消息认证码用于认证
MMCKA比C 较
• A和B共享密钥K • A计算MAC=Ck(M),
• M和MAC一起发送
到B
• B对收到的M,计算 MAC,比较两个 MAC是否相同。
如果两个MAC相等,则:
1. 接收方可以相信消息未被修改,因为如果攻击者改变了消 息,由于不知道k,无法生成正确的MAC。

散列函数、消息摘要与数字签名

散列函数、消息摘要与数字签名

散列函数、消息摘要与数字签名⼀,散列函数(Hash function)散列函数:任何⼀种能将任意⼤⼩数据映射为固定⼤⼩数据的函数,都能被称为散列函数。

散列函数的返回值称为散列值、散列码,摘要或者简单散列。

也就是说散列函数能将任意长度的输⼊变换成固定长度的输出,该输出就是散列值。

散列值空间通常远⼩于输⼊的空间。

散列函数的⼀些特性:消息的长度不受限制确定性:对于相同的输⼊(根据同⼀函数),它必须始终⽣成相同的散列值,如果两个散列值是不相同的,那么这两个散列值的原始输⼊也是不相同的,但是对于不同的输⼊可能会散列成相同的输出(哈希碰撞),所以不可能从散列值来确定唯⼀的输⼊值。

均匀性:良好的散列函数应该输⼊尽可能均匀的映射到输出范围上。

单向性:在加密应⽤程序中,通常期望散列函数实际上是不可逆的。

⼆,散列函数的应⽤1. 散列表散列函数通常与散列表(hash table)结合使⽤,使⽤散列表能够快速的按照关键字查找数据记录。

具体地,散列函数会先将关键字映射到地址集合中的某⼀个位置,然后通过这个地址来查找数据记录(也就是将关键字通过散列函数转换的地址来查找表中的数据)2. 加密散列函数由于散列函数的多样性,它们经常是专门为某⼀应⽤⽽设计的,⽐如为加密和验证信息完整性⽽设计的散列函数(⼜被称为单向散列函数、杂凑函数或者消息摘要函数),这种散列函数是⼀个“单向”操作:对于给定的散列值,没有实⽤的⽅法可以计算出⼀个原始输⼊,也就是说很难伪造,⽐如 MD5 这种散列函数,被⼴泛⽤作检测⽂件的完整性。

2.1 验证消息的完整性安全hash的⼀个重要应⽤就是验证消息的完整性:发送者将原⽂与摘要⼀起发送给接受者,然后接收者⽤同⼀个hash函数对收到的原⽂产⽣⼀个摘要,与发送者的摘要信息对⽐,如果相同,则说明收到的信息是完整的。

验证流程如下:在上述流程中,信息收发双发在通信前已经商定了具体的散列算法,并且该算法是公开的,如果消息在传递过程中被篡改,则该消息不能与已获得的数字指纹相匹配。

第5章 散列函数与消息鉴别

第5章 散列函数与消息鉴别
特点: (1)简单、对输入为随机数据的完整性检查有效; 存在的问题:
容易产生碰撞
四川大学电子信息学院
5/40
若H( M ) = X1 ⊕ X2 ⊕ …… ⊕ XN
,有报文篡改方案:
原报文:M = X1|| X2|| …… || XN ,传送报文M || Ek[H(M)]被攻 击者截获. ( 将Ek[H(M)] 作为报文鉴别码) 伪报文:M’ = Y1|| Y2|| …… || YN-1 || YN ;( 显然M’不等于M) 其中, Y1 、 Y2 、 …… YN-1可为任意报文分组。 而YN则按以下方式构造, 计算: H( M ) = X1 ⊕ X2 ⊕ …… ⊕ XN 使 YN = Y1 ⊕ Y2 ⊕ …… ⊕ YN-1 ⊕ H( M ) 攻击者传送报文 : M’ || Ek[H(M)] ;报文鉴别码不变 接收方解密Ek[H(M)]得报文摘要: H( M ) 接收方验证: H( M’ ) 问题原因: = Y1 ⊕ Y2 ⊕ …… ⊕ YN-1 ⊕ YN (1) M 为明文; = Y1⊕Y2⊕ …… ⊕ YN-1 ⊕Y1⊕Y2⊕……⊕YN-1⊕H(M) (2) 算法太简单。 = H( M ) ∴接收者不能发现报文已被篡改。
设报文 M = M0||M1|| … ||ML-1
M0 M1 ML-1 b n f 散列函数输出 n CVL=MD (160bit)
IV=CV0
CV1
n
b
f n
CVL-1 …
b f
图中:b=512 n=160 对每个分组使用四次循环,每次循环20步,共80步。
四川大学电子信息学院 14/40
1. 基本算法
第5 章
散列函数与消息鉴别
鉴别服务是用来提供对通信中实体和数据原发(数据源)的鉴别。 鉴别协议是能使通信各方证实对方身份或消息来源的通信协议。 (ISO/IEC 7498-2)

《现代密码学》散列函数与消息鉴别_OK

《现代密码学》散列函数与消息鉴别_OK
20/66
MD5算法的逻辑程序
1.初始化MD5缓冲区 初始化用于计算消息摘要的128位缓冲区。这 个缓冲区由四个32位寄存器A、B、C、D表示。 寄存器的初始化值为(按低位字节在前的顺序存 放): A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10
4. 攻击者提供一个对A签名有效的变种。该签名被 附加在这个带有欺诈性报文上发往原来的接收 者。因为这两个报文变种具有相同的散列码, 故它们能产生相同的签名;即使不知道加密密 钥,攻击者也肯定获得成功
15/66
对散列函数的生日攻击
• 假定其输出为m比特,那么寻找一个消息,使其 散列值与给定散列值相同则需要计算2m次;而寻 找两个消息具有相同的散列值仅需要试验2m/2个随 机的消息。
8/66
散列函数的应用
• 数字签名 将散列函数应用于数字签名,一般方法是不 直接对消息m签名,而对m对应的散列码h 进行签名,这样可以提高签名的速度 (|h|<|m|),且不泄露签名所对应的信息,因 此散列函数在数字签名中应用广泛。
9/66
散列函数的一般结构
• 目前使用的大多数散列函数,其结构都是迭代 型的。将输入的消息m分成t个分组 ( m1 ,,m2,…,mt),每组固定长度为b位。如 果最后一个分组的长度不够,需要对其进行填 充。通常的填充方法是保证最后一个分组的最 后64位为m的总长度,然后在中间填充。
26/66
MD5的安全性
• 山东大学的王小云教授在2004年美洲密码年 会上做了攻击MD5等四个算法的报告,并 给出了一个具体的MD5的碰撞的例子。这 清楚表明了MD5不是强抗碰撞的,MD5的 安全性受到了严重的威胁。

05 消息鉴别

05 消息鉴别

512 bit YL-1 512 HMD5
1) 附加填充位 2) 附加长度 3) 初始化MD缓冲区 4) 按512位的分组处理 5) 输出
128
128位消息摘要
安全散列函数(SHA)
SHA是美国NIST和NSA共同设计的安全散列算法(Secure Hash Algorithm),用于数字签名标准DSS(Digital Signature Standard)。 修改版SHA–1于1995年作为美国联邦信息处理标准公告 发布。 SHA–1的输入: 长度小于264位的消息 输出: 160位的消息摘要。 NIST协会隶属于美国商务部,负责发放密码规程的标准。
算法 MD5对输入的任意长度消息产生128位散列 值:
填充位 L× 512 bit=N× bit 32 K bit 消息 100…0
MD5算法五个步骤:
64 消息长度(K mod 2 )
512 bit Y0 512 IV HMD5 CV 1 128
512 bit Y1 512 HMD5 … CV L-1 128 …
源端A M K Ⅱ
目的端B M C 比较 K CK(M)
C
图3-6 MAC应用于消息认证
IP安全协议强制实现的MAC,由RFC2104定义的HMAC,全称为KeyedHash Message Authentication Code。
MAC(text) = HMAC(K, text)= H((K0+opad )|| H((K0+ipad) || text))
‘ 如果M=M ,S是M的签名,否则是伪造的
RSA数字签名安全性分析


安全性依赖于大整数因子分解的困难性。 存在性伪造1:选定一S,直接由验证式 得到消息M=Se mod n,从而消息M的签 名为S,但这个消息M是随机数,没有实 际意义 存在性伪造2:消息M1,M2的签名为S1, S2,可以伪造消息M1M2的签名S1 S2

消息认证和散列(Hash)函数

消息认证和散列(Hash)函数

消息认证和散列(Hash)函数1 散列函数1.1散列函数的概念1.2 简单散列函数的构造1.3 作为消息认证的散列函数应具有的特性2 基于散列函数的消息认证方式2.1 对称密钥加密方式2.2 公开密钥与对称密钥结合的加密方式2.3公共秘密值方式在网络通信环境中,可能存在下述攻击:1.泄密:将消息透露给没有合法密钥的任何人或程序。

2.传输分析:分析通信双方的通信模式。

在面向连接的应用中,确定连接的频率和持续时间;在面向业务或无连接的环境中,确定双方的消息数量和长度。

3.伪装:欺诈源向网络中插入一条消息,如攻击者产生一条消息并声称这条消息是来自某合法实体,或者非消息接受方发送的关于收到或未收到消息的欺诈应答。

4.内容修改:对消息内容的修改,包括插入、删除、转换和修改。

5.顺序修改:对通信双方消息顺序的修改,包括插入、删除和重新排序。

6.计时修改:对消息的延时和重放。

7.发送方否认:发送方否认发送过某消息。

8.接收方否认:接收方否认接收到某消息。

其中,对付前两种攻击的方法属于消息保密性范畴;对付第3种至第6种攻击的方法一般称为消息认证;对如第7种攻击的方法属于数字签名;对付第8种攻击需要使用数字签名和为抗此种攻击而涉及的协议。

这样归纳起来,消息认证就是验证所收到的消息确实来自真正的发送方且未被修改的消息,它也可验证消息的顺序和及时性。

任何消息认证在功能上基本可看做有两层。

下层中一定有某种产生认证符的函数,认证符是一个用来认证消息的值;上层协议中将该函数作为原语使接收方可以验证消息的真实性。

产生认证符的函数类型通常可以分为以下三类:1.消息加密:整个消息的密文作为认证符。

2.Hash函数:它是将任意长的消息映射为定长的hash值得公开函数,以该hash 值作为认证符。

3.消息认证码(MAC):它是消息和密钥的公开函数,它产生定长的值,以该值作为认证符。

实际上消息认证码也属于Hash函数的范畴,它是带密钥的Hash函数。

散列函数在报文鉴别中的应用

散列函数在报文鉴别中的应用

散列函数在报文鉴别中的应用
散列函数是一种常见的加密技术,它将任意长度的消息压缩成固定长度的散列值。

在报文鉴别中,散列函数可以用来验证报文的完整性和真实性。

具体地讲,发送方可以先将报文通过散列函数进行处理,得到一个散列值,然后将该散列值附加到报文中一起发送。

接收方在接收到报文后,也将报文进行散列处理,得到一个散列值,并与发送方附加的散列值进行比对,如果两个散列值相同,则说明报文没有被篡改过。

散列函数在报文鉴别中的应用还可以通过添加一个密钥来增强
其安全性。

发送方和接收方都必须共享同一个密钥,才能保证报文的安全性。

总之,散列函数在报文鉴别中的应用可以有效地保护报文的完整性和真实性,以及防止报文被篡改或伪造。

- 1 -。

散列函数与消息认证

散列函数与消息认证

认证:认证函数 认证函数
认证系统的工作原理 发送方利用底层的认证函数产生一个用来认证的认证标识; 消息接收方利用上层的认证协议基于认证标识验证真实性。 认证函数的分类 加密函数:用整个消息的密文作为消息认证的认证标识; 加密函数 消息认证码(MAC):指消息被一密钥控制的公开函数作用后产 消息认证码 生的、用作认证符的、固定长度的数值,也称为密码校验和 密码校验和; 密码校验和 散列函数:一个不需要密钥的公开函数,将任意长度的输入消 散列函数 息映射成一个固定长度的输出值,并以此值作为认证标识别。
Page: 17 2010-12-16
HASH函数:生日攻击 生日攻击
攻击过程(Alice发送消息给 发送消息给Bob) 攻击过程 发送消息给 Alice用自己的私钥对消息的HASH值加密,加密结果作为对消息 的签名连同明文消息一起发送给接收者; 敌手对Alice发送的消息m以及一个假冒的消息m‘产生出2|m|/2 个变 形的消息,每个变形的消息本质上的含义与原消息相同; 敌手在产生的两个消息集中找出HASH值相同的一对消息m,m’, 直到成功为止(由上述讨论可知敌手成功的概率大于0.5); 敌手将m’提交给Alice签名,由于m和m’的HASH值相同,所以可 将Alice对m’的签名当成m的签名,将签名m’与一起发给接收者。
Page: 19
2010-12-16
HASH函数:迭代型 迭代型HASH函数 迭代型 函数
迭代型HASH函数的设计思想 函数的设计思想 迭代型 将输入M分为L个分组:Y0, Y1, …, YL-1。每一个分组的长度为b比 特,最后一个分组不足则填充,且最后一个分组还包括整个输 入的长度值; 重复使用一个压缩函数 (两个输入一个输出,算法指定初值 压缩函数f 两个输入一个输出 算法指定初值IV) 压缩函数 两个输入一个输出,

散列函数和哈希函数的区别

散列函数和哈希函数的区别

散列函数和哈希函数的区别
散列函数和哈希函数都是用来对数据进行加密和保护的算法,但两者有一些明显的区别。

首先,散列函数是一种将任意长度的数据映射到固定长度的数据的算法。

它将输入数据转换成一串数字串(通常由 0 和 1 组成),并且这个数字串的长度是固定的。

散列函数通常是不可逆的,这意味着很难从输出数据得到原始输入数据。

散列函数通常用于检查数据完整性和验证。

例如,当你从一个网站下载文件时,它会显示文件的散列值,你可以使用散列函数来验证你下载的文件是否与原始文件相同。

相比之下,哈希函数是一种将任意长度的数据映射到固定长度的数据的算法,但哈希函数可以被用于数据的加密和解密。

哈希函数的输出数据相对不容易被破解,但与散列函数不同的是,哈希函数可以使用密钥(称为“盐”)来加密数据。

这种技术可以增加数据的安全性,因为即使攻击者得到了哈希函数的输出数据,但如果他们没有密钥,他们就无法解密数据。

总之,散列函数和哈希函数都是用于数据加密和保护的算法,但它们有一些不同之处。

散列函数通常用于检查数据完整性和验证,而哈希函数可以用于数据的加密和解密,并且可以使用密钥来增加数据的安全性。

- 1 -。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章 散列函数与 消息鉴别
(4)结合使用公钥密码体制和对称密码体制,这种方法用发送方的私钥 对散列值进行数字签名,用对称密码体制加密消息M和得到的数字签名, 如图5.16(d)。 (5)这种方法使用了散列算法,但未使用加密算法。 (6)在方法(5)的基础上,使用对称密码体制对消息M和生成的散列值 进行保护,如图5.16(f)。
第5章 散列函数与 消息鉴别

生日攻击
与散列函数相关的类似问题可表述如下:给定一个散列函数h的输出 长度为m位,共有2m个可能的散列值输出,如果让散列函数h接收k个随 机输入产生集合X,再使用另外k个随机输入产生集合Y,问k必须为多 大才能使两个集合产生相同散列值输出的概率大于0.5? 这种寻找散列函数h的具有相同输出的两个任意输入的攻击方式称为 生日攻击。
SHA-1,SHA-256,SHA-384,SHA-512的比较 表5.4是它们基本参数的比较:
第5章 散列函数与 消息鉴别
5.4 对散列函数的攻击
对散列函数的攻击是指攻击者寻找一对产生碰撞的消息的过程。评价 散列函数的有效方法就是看一个攻击者找到一对产生碰撞的消息所花的代 价有多高。 目前对于散列函数的攻击方法可以分为两类:
第5章 散列函数与 消息鉴别
Ⅱ.SHA的散列过程 (1) 消息分割与填充 (2) 初始化缓冲区 (3) 处理第i个数据块xi (4) 4轮循环,80步操作完成后,保存散列中间结果,再与第一轮的输 入相加(模232) (5) 然后,以H0(i) ,H1(i) ,H2(i) ,H3(i) ,H4(i)作为寄存器初值,用 于对分组xi+1进行散列处理。
Ⅲ.SHA-1的压缩操作 SHA-1压缩函数操作过程,如图5.9所示(下页),是处理一个512位 分组的4次循环中每一循环的基本压缩操作流程。 Ⅳ.示例 【例5.1】计算字符串“abc”的SHA-1散列值。 字符串“abc”的二进制表示为:01100001 01100010 01100011,共 有24位的长度。按照SHA-1的填充要求,应该填充一个“1”(界符)和423 个“0”,最后有两个字“00000000 00000018”(十六进制),表明原始消 息的长度为24位。本例中共只有一个分组。
第5章 散列函数与 消息鉴别
3.直接设计散列函数 这类散列函数并不基于任何假设和密码体制,它是通过直接构造复 杂的非线性关系达到单向性要求来设计单向散列函数。这类散列算法典 型的有:MD2、MD4、MD5、SHA-1等算法。
5.3 安全散列算法SHA
1. SHA-1 SHA-1是数字签名标准DSS(Digtial Signature Standard)中使用 的散列算法。它能够处理最大长度为264位的输入数据,输出为160位的 散列函数值,SHA-1的输出正好适合作为数字签名算法DSA(Digtial Signature Algorithm)的输入。 Ⅰ.基本操作和元素: (1)逐位逻辑运算 (2) 加法运算 (3) 移位操作
第5章 散列函数与 消息鉴别
这种方法的特点是:能实现数字签名的功能,可以抗抵赖,并提供鉴别。 ②提供消息鉴别和机密性保护 如图5.12所示,在发送方A用自己的私钥SKA进行加密运算(实现数字 签名)之后,还要用接收方B的公钥PKB进行加密,从而实现机密性。
缺点:一次完整的通信需要执行公钥算法的加密、解密操作各两次。 优点:提供机密性、数字签名和鉴别。
第5章 散列函数与 消息鉴别

基于散列函数的消息鉴别 (1)消息鉴别码的概念 消息鉴别码(MAC,Message Authentication Code)或报文鉴别码,是 用于提供数据原发鉴别和数据完整性的密码校验值。MAC是使用一个特定 的密钥将消息通过一种鉴别算法处理所得出的一串代码。 一个MAC算法是由一个秘密密钥k和参数化的一簇函数hk构成。这簇函 数具有如下特性: a)容易计算—— 对于一个已知函数h,给定一个值k和一个输入x, hk(x)是容易计算的。这个计算的结果被称为消息鉴别 码值或消息鉴别码。 b) 压缩—— hk把任意具有有限长度(比特数)的一个输入x映射 成一个具有固定长度的输出hk(x)。 c) 强抗碰撞性—— 要找到两个不同消息x和y,使得hk(x)=hk(y)是计 算上不可行的。
第5章 散列函数与 消息鉴别
基于加密技术的消息鉴别 从消息鉴别的目的出发,无论是对称密码体制,还是公钥密码体制 ,对于消息本身的加密都可以看作是一种鉴别的手段。

(1)利用对称加密体制实现消息鉴别 如图5.10所示,发送方A和接收方B共享密钥k。A用密钥k对消息M加密后 通过公开信道传送给B。B接收到密文消息之后,通过是否能用密钥k将其恢 复成合法明文,来判断消息是否来自A,信息是否完整。
第5章 散列函数与 消息鉴别
Ⅴ.其他SHA算法 2002年,NIST在FIPS l80-1的基础上做了修改,发布了推荐的修订版 本FIPS 180-2。在这个标准中,除了SHA-1外,还新增了SHA-256、SHA-398 和SHA-512三个散列算法标准,它们的消息摘要长度分别为256位、398位和 512位,以便与AES的使用相匹配。SHA系列散列算法的基本运算结构有很大 的相似性。 SHA-1,SHA-256的数据分组都是512位。 SHA-384,SHA-512的数据分组则是1024位。
• 散列函数的概念
• 散列函数的构造与设计
• 安全散列算法SHA
• 对散列函数的攻击
• 消息鉴别
第5章 散列函数与 消息鉴别
5.1 散列函数的概念

密码学中的散列函数又称为哈希函数(Hash函数)、杂凑函 数,它是一种单向密码体制,是一个从明文到密文的不可逆映射 ,只有加密过程,不能解密。 散列函数的性质 设散列函数为h(m),具有以下基本特性: (1)h(m)算法公开,不需要密钥。 (2)具有数据压缩功能,可将任意长度的输入数据转换成一 个固定长度的输出。 (3)对任何给定的m,h(m)易于计算。 散列函数必须满足以下安全性要求: (1)具有单向性。给定消息的散列值h(m),要得到消息m在计算 上不可行; (2)具有弱抗碰撞性(Weak collision resistance)。对任何 给定的消息m,寻找与m不同的消息m’,使得它们的散列值相同,即 h(m’)=h (m),在计算上不可行。 (3)具有强抗碰撞性(Strong collision resistance) 。寻找 任意两个不同的消息m和m’, 使得h(m)=h (m’) 在计算上不可行。
第5章 散列函数与 消息鉴别
• 散列函数的设计方法 散列函数的基本设计方法有:基于公开密钥密码算法的设计、基于对 称分组密码算法的设计以及直接设计法。
1.基于公开密钥密码算法设计散列函数
以CBC模式利用公开密钥算法,使用公钥PK以及初始变量IV对消息分 组进行加密,并输出最后一个密文分组ct作为散列函数输出值,如图5.3 所示。
5.2 散列函数的构造与设计

迭代型散列函数的一般结构
算法中重复使用一个函数f 。函数f的输入有两项,一项是上 一轮(第i-1轮)的输出CVi-1,称为链接变量,另一项是算法在本 轮(第i轮)b位的输入分组mi。 整个散列函数的逻辑关系可表示为: CV0 =IV; CVi = f(CVi-1,mi);1≤i≤t; h(M)= CVt
5.5 消息鉴别
消息鉴别对于开放的网络中的各种信息系统的安全性具有重要作用。 消息鉴别是一个过程,用以验证接收消息的真实性(的确是由它所 声称的实体发来的)和完整性(未被篡改、插入、删除),同时还用于 验证消息的顺序性和时间性(未被重排、重放、延迟等)。 大体来说,实现消息鉴别的手段可以分为两类:基于加密技术的 消息鉴别和基于散列函数的消息鉴别。
第一类称为穷举攻击(或暴力攻击),它能对任何类型的散列函数进行 攻击,其中最典型的方法就是“生日攻击”。 第二类称为密码分析法,这类攻击方法依赖于对散列函数的结构和代数 性质分析,采用针对散列函数弱性质的方法进行攻击。这类攻击方法有中 间相遇攻击、修正分组攻击和差分分析等等。

生日悖论
我们来考虑这样一个有趣的问题:在一个教室中最少应有多少学 生才使得至少有两个学生的生日在同一天的概率大于0.5?计算与此 相关的概率被称为生日悖论问题。
第5章 散列函数与 消息鉴别
该方法的特点是: 1)它能提供机密性:只有A和B知道密钥k; 2)提供鉴别:只能发自A,传输中未被改变; 3)不能提供数字签名:接收方可以伪造消息,发送方可以抵赖消息 的发送。
(2)利用公钥密码体制实现消息鉴别 ① 提供消息鉴别 如图5.11所示,发送方A用自己的私钥SKA对消息进行加密运算(但并 不能提供机密性保护,请思考为什么?),再通过公开信道传送给接收 方B。接收方B用A的公钥PKA对得到的消息进行解密运算并完成鉴别。
第5章 散列函数与 消息鉴别
第5章 散列函数与 消息鉴别
课程主要内容




第1章 密码学概述 第2章 古典密码技术 第3章 分组密码 第4章 公钥密码体制 第5章 散列函数与消息鉴别 第6章 数字签名技术 第7章 密钥管理技术 第8章 身份鉴别技术 第9章 序列密码 第10章 密码技术应用
第5章 散列函数与 消息鉴别
本章主要内容
第5章 散列函数与 消息鉴别
• 散列函数的应用
散列函数的主要应用有以下三个方面: 1)保证数据的完整性 2)单向数据加密 3)数字签名 应用散列函数实现数据完整性保护的模型:
注:实际应用中,未必一定是如h(m‖k)的计算方式,明文与密钥k的 组合方式因不同的实现可以不同。
第5章 散列函数与 消息鉴别
虽然在合理的假设下,可以证明这类散列函数是安全的,由于它 的计算效率太低,所以这一类散列函数并没有什么实用价值。
第5章 散列函数与 消息鉴别
2.基于对称分组密码算法设计散列函数 通常,可以使用对称密钥分组密码算法的CBC模式或CFB模式来产 生散列值,如图5.4、图5.5所示。
相关文档
最新文档