信息安全原理与实践_第二版05_哈希函数和他

合集下载

信息安全原理与实践-第二版05 哈希函数及其他

信息安全原理与实践-第二版05 哈希函数及其他

5
签名的正确方法
• 假设没有碰撞,那么对h(M)签名和对消息M实施签名的效果一样好。 事实上,对哈希值实施签名比起仅仅对消息本身实施签名,实际上会 更加安全。 • 现在数字签名的安全性不仅依赖于公钥系统的安全性,而且也依赖于 哈希函数本身的安全性——如果二者中有任何一个比较弱,签名体制 就可能会被破解。
9
5.4 生日攻击
假设哈希函数h生成一个n位二进制长的输出。Trudy原则上能够发起一次 生日攻击,具体如下:
• Trudy选择一条“恶意”消息E,这是她想让Alice签名的消息,但是Alice并不想对其签 名。 Trudy也创建了一条无害的消息I,她有信心Alice愿意对这条消息签名。 然后,Trudy通过对消息实施较小的编辑性修改,生成2n/2条该无害消息I的变体。这些 无害的消息,我们分别标识为Ii,其中i = 0,1, ... ,2n/2 – 1,所有消息都与I的含义相同, 但是既然消息本身不同,那么它们的哈希值也不一样。 同样,Trudy创建出2n/2个恶意消息E的变体,分别标识为Ei,其中i = 0,1, ... ,2n/2 – 1。 这些消息也都与原始的恶意消息E表达同样的含义,但是它们的哈希值不一样。 Trudy对所有的恶意消息Ei以及所有的无害消息Ii实施哈希运算。根据上述生日问题的讨 论,她就有希望找到一个碰撞,比方说,h(Ej) = h(Ik)。基于这样的一个碰撞,Trudy将Ik 发送给Alice,并请Alice对其进行签名。既然这条消息看起来没有问题,Alice就对其进 行签名,并将Ik和[h(Ik)]Alice返回给Trudy。既然h(Ej) = h(Ik),那么由此可以得出[h(Ej)]Alice = [h(Ik)]Alice,于是,Trudy实际上就已经获得了Alice对恶意消息Ej的签名。

Hash算法实验原理及哈希函数简介

Hash算法实验原理及哈希函数简介

任务一 MD5算法111111*********一.哈希函数简介信息安全的核心技术是应用密码技术。

密码技术的应用远不止局限于提供机密性服务,密码技术也提供数据完整性服务。

密码学上的散列函数(Hash Functions)就是能提供数据完整性保障的一个重要工具。

Hash函数常用来构造数据的短“指纹”:消息的发送者使用所有的消息产生一个附件也就是短“指纹”,并将该短“指纹”与消息一起传输给接收者。

即使数据存储在不安全的地方,接收者重新计算数据的指纹,并验证指纹是否改变,就能够检测数据的完整性。

这是因为一旦数据在中途被破坏,或改变,短指纹就不再正确。

散列函数是一个函数,它以一个变长的报文作为输入,并产生一个定长的散列码,有时也称为报文摘要,作为函数的输出。

散列函数最主要的作用于是用于鉴别,鉴别在网络安全中起到举足轻重的地位。

鉴别的目的有以下两个:第一,验证信息的发送者是真正的,而不是冒充的,同时发信息者也不能抵赖,此为信源识别;第二,验证信息完整性,在传递或存储过程中未被篡改,重放或延迟等。

二.哈希函数特点密码学哈希函数(cryptography hash function,简称为哈希函数)在现代密码学中起着重要的作用,主要用于对数据完整性和消息认证。

哈希函数的基本思想是对数据进行运算得到一个摘要,运算过程满足:z压缩性:任意长度的数据,算出的摘要长度都固定。

z容易计算:从原数据容易算出摘要。

z抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的摘要都有很大区别。

z弱抗碰撞:已知原数据和其摘要,想找到一个具有相同摘要的数据(即伪造数据),在计算上是困难的。

z强抗碰撞:想找到两个不同的数据,使它们具有相同的摘要,在计算上是困难的。

三.针对哈希函数的攻击与传统密码体制的攻击方式相比,对散列函数的攻击方法主要有两种:z穷举攻击:它可以用于任何类型的散列函数的攻击,最典型的方式就是所谓的“生日攻击”。

Hash函数在信息安全中的重要运用

Hash函数在信息安全中的重要运用

封面作者:PanHongliang仅供个人学习Hash函数在信息安全中的重要运用学号:09008010124姓名:罗杨摘要:随着计算机和Internet在各行各业的广泛应用,信息高速化的交互传递过程中,信息安全问题备受关注。

而基于hash函数的各种算法的产生和运用,为信息上一把牢固的安全之锁,md5、sha-1文件校验,加密存储,数字签名,PKI建设等对各种信息有充分的安全保障,能有效地防止攻击,保证真实信息不被修改或者泄露。

关键词:哈希 hash md5 数字签名 PKI 散列校验公钥私钥一、定义Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。

这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做Hash值。

二、算法举例1、MD4MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是Message Digest 的缩写。

它适用在32位字长的处理器上用高速软件实现--它是基于 32 位操作数的位操作来实现的。

MD4散列的例子:MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729dMD4 ("message digest") = d9130a8164549fe818874806e1c7014b2、MD5MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。

哈希函数的工作原理及应用

哈希函数的工作原理及应用

哈希函数的工作原理及应用1. 哈希函数是什么?哈希函数(Hash Function)是一种将任意输入数据映射到固定大小的输出值的算法。

它的主要作用是将任意长度的输入转换为固定长度的哈希值,通常是一个较短的字符串。

哈希函数是一种单向函数,即无法通过哈希值逆向推导出原始输入数据。

2. 哈希函数的工作原理哈希函数的工作原理可以简单概括为以下几个步骤:2.1. 输入处理哈希函数接收一个输入数据,并对其进行处理。

输入数据可以是任意长度的字节流,例如一段文字、文件内容等。

2.2. 算法运算哈希函数使用特定算法对输入数据进行运算,以生成一个固定长度的哈希值。

常用的哈希算法有MD5、SHA-1、SHA-256等。

2.3. 哈希值输出哈希函数将计算得到的哈希值输出,通常是一个较短的字符串。

哈希值具有以下特点:•固定长度:无论输入数据的长度如何,哈希值的长度是固定的。

•唯一性:不同的输入数据经过哈希函数计算得到的哈希值几乎是唯一的。

•高度离散性:输入数据的微小变化会导致哈希值产生较大的变化。

2.4. 校验和与冲突校验和是哈希函数的一个重要应用,用于验证数据的完整性。

通过计算输入数据的哈希值,并与预先计算好的校验和进行比较,可以判断数据是否被篡改。

然而,由于输入数据的长度可能远大于哈希值的长度,哈希函数的输出空间有限,难免会出现哈希冲突的情况,即不同的输入数据计算得到相同的哈希值。

针对哈希冲突,常见的解决方法包括拉链法、开放定址法等。

3. 哈希函数的应用哈希函数在计算机科学和密码学领域有广泛的应用,以下是一些常见的应用场景:3.1. 数据完整性校验哈希函数常用于验证数据的完整性。

发送方计算数据的哈希值,并将其附加到数据中一起发送。

接收方收到数据后,重新计算哈希值,并与发送方传递的哈希值进行比较,从而判断数据是否在传输过程中被篡改。

3.2. 数据加密哈希函数在密码学中被广泛用于数据加密。

将敏感数据通过哈希函数进行加密,可以将数据转化为一串乱码,提供一定的数据保护。

信息安全原理与实践教程第5章

信息安全原理与实践教程第5章
置了。
PPT文档演模板
信息安全原理与实践教程第5章
④ 方法4:DOS下破解。该方法直接在 MS-DOS 环境下 便可完成,在MS-DOS环境下输入:“COPY CON ”后按【回车】键,继续输入如下十个字符: “ALT+176 ALT+17 ALT+230 p ALT+176 ALT+20 ALT+230 q ALT+205”,再按【空格】键,然后按【F6】键,再按【回 车】键保存,运行文件后,重新开机即可。
注:“用户密码”的权限低于“管理员密码”。
PPT文档演模板
信息安全原理与实践教程第5章
2) BIOS密码的破解 如果遗忘了BIOS密码该怎么办呢?有以下几种方法可以 解决这个问题。对于用户设置的这两种密码,破解方法是有 所区别的。
(1) 破解“USER PASSWORD”。 ① 方法1:Debug法。其原理是:通过向CMOS芯片写入 数字导致开机检测时无法通过其奇偶校验,从而CMOS芯片 恢复出厂设置,实现清除BIOS密码的目的。具体操作步骤如 下:
AWI BIOS的通用密码有:AMI、BIOS、PASSWORD、
HEWITT RAND、AMI_SW、LKWPETER、A.M.I。
PPT文档演模板
信息安全原理与实践教程第5章
② 方法2:CMOS 放电。目前的主板大多数使用纽扣电 池为BIOS提供电力,也就是说,如果没有电,其中的信息就 会丢失了。再次通电时,BIOS就会回到未设置的原始状态, 当然BIOS密码也就没有了。
PPT文档演模板
信息安全原理与实践教程第5章
打开电脑机箱,找到主板上银白色的纽扣电池并小心将 它取下,再把机箱尾部电源插头拔掉,用金属片短接电池底 座上的弹簧片,大概30秒后,再将电池装上。此时,CMOS 会因断电而失去内部储存的信息。再开机时,系统就会提示 “CMOS Checksum Error-DeFaults Loaded”,即提示CMOS在 检查时发现了错误,已经载入了系统的默认值,BIOS密码破 解成功。

hash的实现原理

hash的实现原理

hash的实现原理
哈希的实现原理是将输入数据通过特定的算法转换为固定长度的输出,使得输出数据具有唯一性和不可逆性。

其原理如下:
1. 输入数据:哈希算法接收输入数据作为输入。

2. 哈希函数:选择合适的哈希函数,它将输入数据作为输入,并使用复杂的算法对输入数据进行处理。

3. 哈希计算:哈希函数对输入数据进行计算,并生成固定长度的哈希值作为输出。

哈希值是一个字符串或数字,通常是一个较短的字符序列。

4. 唯一性:相同的输入数据将生成相同的哈希值。

不同的输入数据几乎不可能生成相同的哈希值,因此哈希函数具有唯一性,即任意两个不同的输入数据生成的哈希值几乎不会相同。

5. 不可逆性:由哈希值无法还原出输入数据。

即使输入数据只进行了微小的改动,其生成的哈希值也会有很大的差异,因此无法通过逆向运算得到原始数据。

6. 哈希表:哈希值通常作为索引存储在哈希表中。

哈希表是一种数据结构,使用哈希函数将键映射到特定位置,通过哈希值可以快速检索到对应的数据。

需要注意的是,虽然哈希函数具有唯一性,但由于输入数据的长度可以是任意的,因此在极少数情况下可能存在哈希冲突,
即不同的输入数据生成了相同的哈希值。

因此,在选择和设计哈希函数时,需要考虑到其安全性和抗碰撞能力,以降低哈希冲突的概率。

五种哈希函数原理

五种哈希函数原理
哈希函数是一种将任意大小的数据映射为固定大小(通常较小)的值的函数。

它将输入数据(称为键或消息)作为输入,并输出固定大小的哈希值。

哈希函数的原理是基于以下几种常见的方法:
1.消除冲突:当输入的数据较大且哈希值的长度较小,产生冲突(多个数据具有相同的哈希值)是不可避免的。

哈希函数使用不同的技巧来减少冲突的可能性。

最常用的方法是使用“除余法”,即将输入数据与一个大数相除并取余数作为哈希值。

通过选择合适的大数,可以降低冲突的概率。

2.均匀分布:一个好的哈希函数应该能够将输入数据均匀地分散到哈希值空间中。

这意味着每个可能的哈希值都应具有相同的概率被选中。

均匀分布可以避免冲突,提高哈希查找的效率。

为了实现均匀分布,哈希函数使用不同的算法,如乘法哈希、折叠哈希和平方取中哈希等。

3.确定性:哈希函数应该是确定性的,即给定相同的输入,总是会得到相同的哈希值。

这种确定性是很重要的,因为它允许在需要时重复使用相同的哈希值。

4.不可逆性:好的哈希函数应该是不可逆的,即不可能从哈希值推导出原始的输入数据。

这种不可逆性可以保证哈希函数的安全性,使得无法通过观察哈希值来推断原始数据。

5.高效性:哈希函数应该是高效的,即在给定的时间内能够计算出哈希值。

高效性对于处理大量数据和高速的哈希查找非常重要。

哈希函数可以通过使用简单的算法来提高计算效率。

总之,哈希函数的原理是通过将输入数据映射到固定大小的哈希值,
以减少存储空间和提高数据检索的效率。

哈希函数的性能取决于消除冲突、均匀分布、确定性、不可逆性和高效性等因素的综合考虑。

信息安全的原理与实践

信息安全的原理与实践一、信息安全原理信息安全保护的基础是对信息的整个生命周期进行严密保护,包括信息的创建、传输、存储和使用。

信息安全原理主要包括以下几个方面。

1、机密性机密性是指信息只能被授权的用户访问和使用,未经授权者不能知道该信息的内容。

为了实现机密性,我们需要使用一些加密算法,例如对称密钥算法和非对称密钥算法。

其中对称密钥算法是使用同一把密钥对信息进行加密和解密,常用的对称密钥算法有DES、AES和RC4等;而非对称密钥算法则是使用不同的公钥和私钥对信息进行加密和解密,常用的非对称密钥算法有RSA、DSA和ECC等。

2、完整性完整性是指信息在传输和存储过程中不能被篡改。

为了实现信息的完整性,我们可以使用哈希函数来生成一个摘要值,对于每条信息都生成一个唯一的摘要值,一旦信息被篡改,摘要值也会发生变化,从而保证信息完整性。

3、可用性可用性是指信息系统能够满足用户正常使用的需求,确保信息及相关服务能够顺畅地运行。

为了实现可用性,我们需要在设计信息系统的时候充分考虑系统的可扩展性、高可用性、容错能力和故障恢复能力等方面的问题。

4、不可抵赖性不可抵赖性是指在信息交换过程中,发送方不能否认发送的信息;接收方也不能否认收到的信息。

为了实现不可抵赖性,我们可以使用数字签名技术,对发送的信息进行签名,从而确保信息的可信度和完整性。

二、信息安全实践在日常生活中,我们需要注意许多信息安全实践方面的问题,以确保个人信息的安全。

1、密码保护对于每个人来说,设置一个安全的密码至关重要。

密码应该是强度高的,包括字母、数字和符号等混合组成,密码长度也要足够长。

此外,我们还需要定期更改密码,防止密码泄露带来的安全风险。

2、防病毒在日常使用计算机和移动设备时,我们需要安装杀毒软件来保护系统的安全。

杀毒软件可以检测并清除病毒、木马等恶意软件,从而避免这些软件对系统造成损害。

3、加密传输在使用网络进行通信时,需要注意对通信内容进行加密。

信息安全的原理与实践

信息安全的原理与实践信息安全是指在计算机和网络环境中保护信息的机密性、完整性和可用性的过程。

随着互联网的发展和普及,信息安全问题变得愈发重要。

本文将从信息安全的原理和实践两个方面进行论述。

一、信息安全的原理1. 保密性:信息的保密性是信息安全的基本要求之一。

实现信息保密的方法包括加密算法、访问控制和身份验证等。

2. 完整性:信息的完整性指信息在传输和存储过程中不被篡改或损坏。

实现信息完整性的方法包括数据签名、哈希算法和完整性检查等。

3. 可用性:信息的可用性意味着信息在需要时能够及时访问和使用。

实现信息可用性的方法包括备份和恢复策略、容灾机制和访问控制等。

4. 不可抵赖性:信息的不可抵赖性是指发送方不能否认发送过的信息,接收方不能否认接收到的信息。

实现信息不可抵赖性的方法包括数字签名和安全审计等。

二、信息安全的实践1. 加密技术:加密是信息安全的基础。

常见的加密算法有对称加密算法和非对称加密算法。

对称加密算法使用相同的密钥进行加解密,速度快但密钥管理较为复杂;非对称加密算法使用公钥和私钥进行加解密,安全性较高但速度较慢。

在实践中,可以根据需求选择合适的加密算法和密钥长度。

2. 防火墙和入侵检测系统:防火墙和入侵检测系统是保护网络安全的重要手段。

防火墙可以过滤和监控网络流量,阻止潜在的攻击和未经授权的访问;入侵检测系统可以监测和识别网络中的入侵行为,及时发现并阻止攻击。

3. 访问控制和身份验证:访问控制和身份验证是保证信息安全的基本措施。

访问控制通过权限控制和访问策略限制用户对系统和数据的访问;身份验证通过用户名、密码、指纹等方式确认用户的身份。

4. 安全审计和漏洞扫描:安全审计和漏洞扫描是发现和修复系统漏洞的重要手段。

安全审计可以记录和分析系统中的安全事件,发现潜在的安全隐患;漏洞扫描可以主动扫描系统中的漏洞,并提供修复建议和措施。

信息安全的原理与实践是保护信息安全的重要方法和手段。

在实际应用中,我们需要不断更新和提高信息安全的意识,合理选择和配置安全设备和技术,加强网络安全管理,以保障信息的安全性。

信息安全原理与技术ch05-Hash函数和数字签名

m2m1且H(m2)=H(m1)的m2在计算上是不可行的; • 找到任何满足H(m1)=H(m2)且m1 m2的消息对(m1, m2)
在计算上是不可行的。
2021/8/19
Ch5-消息认证与数字签名
16
安全的Hash函数的要求
• H可以应用于任意长度的数据块,产生固定长度的散列 值;
• 对每一个给定的输入m,计算H(m)是很容易的; • 给定Hash函数的描述,对于给定的散列值h,找到满足
• (2) 再根据意图伪造签名的明文,将其分成每 个64位长的明文分组:Q1, Q2,…, QN-2。 Hash函数的压缩算法为:hi=EQi[hi-1],1iN2。
• (3) 任意产生232个不同的X,对每个X计算 EX[hN-2]。同样的,任意产生232个不同的Y,
202对1/8/19每个Y计算DYC[hG5-消]息,认证D与数是字签相名 对应E的解密函数26 。
• (4) 攻击者用第一组中找到的明文提供给签名方要求 签名,这样,这个签名就可以被用来伪造第二组中 找到的明文的数字签名。这样,即使攻击者不知道 签名私钥也能伪造签名。
2021/8/19
Ch5-消息认证与数字签名
25
中间相遇攻击法(Meet in the Middle Attack)
• (1) 根据已知数字签名的明文,先产生散列函 数值h。
• 对于上述问题换种说法:假设一个函数有n个函 数值,且已知一个函数值H(x)。任选k个任意数 作为函数的输入值,则k必须为多大才能保证至 少找到一个输入值y且H(x)=H(y)的概率大于0.5?
2021/8/19
Ch5-消息认证与数字签名
21
生日悖论
• 我们可以如下描述这类问题:k为多大时, 在k个人中至少找到两个人的生日相同的 概率大于0.5?不考虑二月二十九日并且 假定每个生日出现的概率相同。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 单向——给定任意值y,要想找到一个值x,使得h(x) = y,将是计算不可行的 。换一种不同的说法,即对于哈希运算,没有行之有效的逆运算。
• 抗弱碰撞性——给定x和h(x),要想找到任意y,满足y≠x,并且h(y) = h(x),这 是不可能的。
• 抗强碰撞性——要想找到任意的x和y,使得x≠y,并且h(x) = h(y),这是不可 能的。也就是说,我们不能够找到任何两个输入,使得它们经过哈希后会产 生相同的输出值。
6
5.3 生日问题
假如你和其他N个人同在一个房间里。那么,N必须多大,你才有指望找 到至少一个人和你有相同的生日呢?或者说:N必须多大,才会使得“有 某个人与你生日相同”的概率大于1/2呢?
你的生日是在一年中特定的一天。如果一个人和你的生日不同,那么他 或她的生日必定是在其他364天中的一天。假设所有的生日都是概率相等 的,那么“一个随机选择的人不与你的生日相同”的概率就是364/365。 这样,所有的N个人都跟你的生日不同的概率就是(364/365)N,于是,至 少有一个人与你的生日相同的概率就是:
5
签名的正确方法
• 假设没有碰撞,那么对h(M)签名和对消息M实施签名的效果一样好。 事实上,对哈希值实施签名比起仅仅对消息本身实施签名,实际上会 更加安全。
• 现在数字签名的安全性不仅依赖于公钥系统的安全性,而且也依赖于 哈希函数本身的安全性——如果二者中有任何一个比较弱,签名体制 就可能会被破解。
4
哈希函数在数字签名上的应用 • 以前
Alice对一条消息M实施签名,是通过使用她自己的私钥进行“加密”计算得到的,即要计 算S = [M]Alice。如果Alice发送消息M和签名S给Bob,Bob就能够通过执行验证过程M = {S}Alice来验证该签名的有效性。但是,如果消息M很大,[M]Alice就是一个成本很高的计算, 更不用提发送消息M和签名S的带宽需求了,这两者都会很大。相比之下,在计算一个MAC 时,加密的速度会很快,而且在发送时,我们也仅仅需要伴随着消息发送少量附加的校验 位(比如MAC)而已。
Information Security: Principles and Practice, 2nd Edition [美]Mark Stamp 著 张戈 译
1
第5章 哈希函数及其他
2
5.1 引言
本章内容 • 加密哈希函数 • 加密哈希函数的标准应用 • 哈希函数的高级应用 • 加密相关的副作用问题
相比较而言,对于一个密钥长度为N位二进制数的安全对称密钥加密 方案来说,对其强力破解的计算开销的因子是2N-l。
所以,安全哈希函数的输出必须是对称加密密钥二进制位数的大约两 倍长,才能够获得与后者基本相当的安全水平。
9
5.4 生日攻击
假设哈希函数h生成一个n位二进制长的输出。Trudy原则上能够发起一次 生日攻击,具体如下:
1 (364 / 365)N
设置这个表达式等于1/2,并解出N,得到N = 253。
7
• 真正的生日问题
我们给房间里的N个人分别编上号码1,2,3,…,N。编号为1的人的生 日是一年365天中的一天。如果所有人的生日各不相同,那么编号为2的 人必须与编号为1的人的生日不相同,也就是说,编号为2的人的生日只 能是剩余的364天中的任意一天。同样,编号为3的人的生日只能是再剩 余的363天中的任意一天,依此类推。假设所有的生日都是概率相等的, 考虑上述情况的补集,其最后的概 365363/ 365(365 N 1) / 365
设置这个表达式等于1/2,并解出N,我们得到N = 23
生日 悖论
8
• 延伸
对于一个生成N位二进制长度输出的安全哈希函数来说,一个计算开 销大约以2N /2为因子的强力破解方式,就能够对其发起有效的攻击。
3
5.2 什么是加密哈希函数
一个加密哈希函数h(x),必须满足下列所有条件:
• 压缩——对于任何长度的输入值x,输出值y = h(x)的长度都比较小。在实际使 用中,通常输出值是固定长度的(比如160位长度的二进制值),而无论输入值 的长度是多少。
• 高效——对于任何的输入值x,必须能够很容易地计算出h(x)。当然,伴随着 输入值x的长度增加,计算h(x)所需要的计算量也会随之增加,但是,这不能 增长得太快。
• Trudy选择一条“恶意”消息E,这是她想让Alice签名的消息,但是Alice并不想对其签 名。
• Trudy也创建了一条无害的消息I,她有信心Alice愿意对这条消息签名。 • 然后,Trudy通过对消息实施较小的编辑性修改,生成2n/2条该无害消息I的变体。这些
无害的消息,我们分别标识为Ii,其中i = 0,1, ... ,2n/2 – 1,所有消息都与I的含义相同, 但是既然消息本身不同,那么它们的哈希值也不一样。 • 同样,Trudy创建出2n/2个恶意消息E的变体,分别标识为Ei,其中i = 0,1, ... ,2n/2 – 1。 这些消息也都与原始的恶意消息E表达同样的含义,但是它们的哈希值不一样。 • Trudy对所有的恶意消息Ei以及所有的无害消息Ii实施哈希运算。根据上述生日问题的讨 论,她就有希望找到一个碰撞,比方说,h(Ej) = h(Ik)。基于这样的一个碰撞,Trudy将Ik 发送给Alice,并请Alice对其进行签名。既然这条消息看起来没有问题,Alice就对其进 行签名,并将Ik和[h(Ik)]Alice返回给Trudy。既然h(Ej) = h(Ik),那么由此可以得出[h(Ej)]Alice = [h(Ik)]Alice,于是,Trudy实际上就已经获得了Alice对恶意消息Ej的签名。
• 使用哈希函数之后
假设Alice有一个加密哈希函数h。那么,h(M)可以被看做文档M的一个“指纹”,也就是说, h(M)比M小得多,但是它能够标识出M。如果M'不同于M,那么即使仅仅相差一个单独的二 进制位,哈希函数执行的结果也几乎肯定会不同。而且,哈希函数的抗碰撞特性意味着, 想要将消息M替换为任何不同的消息M',使得h(M) = h(M')是不可能的 1. 一旦哈希值发生相 同的情况,该怎么办呢?好的,这说明你已经发现了一个碰撞,也就意味着你已经攻破了 这个哈希函数,于是你就成为一个著名的密码破解专家了。所以,这是个双赢的好事。
相关文档
最新文档