电子商务安全 密码学 第四章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子商务安全 西南石油大学经济管理学院
第4章 Hash函数
Hash函数H必须具备的性质: (1) H能够用于任何大小的数据分组; (2) H产生定长的输出; (3) 对任意给定的x,H(x)要易于计算,便于软件和硬件实现;
(4) 对任意给定的消息摘要y,寻找x使得y=H(x)在计算上是不
可行的(单向性、抗原像); (5) 对任意给定的消息x,寻找x′,x′≠x,使得H(x)=H(x′)在计
电子商务安全
西南石油大学经济管理学院
一个生日攻击的例子
假设一个要进行哈希运算的消息是下面形式的支 付授权语句: M = Price,Goods_Description,R 其中R是一个 随机数,使得该协议消息随机化(总是希望协 议消息是随机化的 一个有趣的生日攻击可以是: m = Price_1,Goods_Description,r m’ = Price_2,Goods_Description,r’
电子商务安全 西南石油大学经济管理学院
接收者可以确信消息M未被改变 接收者可以确信消息来自所声称的发送者 如果消息中含有序列号,则可以保证正确的消息顺序
MAC函数类似于加密函数,但不需要可逆性。因此 在数学上比加密算法被攻击的弱点要少
电子商务安全 西南石油大学经济管理学院
电子商务安全
西南石油大学经济管理学院
ANSI标准(X9.17) 该方法适用于其他加密算法
• 其中Price_1≠ Price_2和Goods_Description是固定 的消息部分,随机数r≠r’可以不断变化
如果H(m)的输出长度是n位,当计算大约n1/2个 哈希值, H(m)和H(m’)发生碰撞的概率约为0.5
电子商务安全 西南石油大学经济管理学院
4.1.2 随机预言模型
由Bellare和Rogaway提出的随机预言模型(Random Oracle Model)是一种 “理想化”的Hash函数数 学模型 对于任意的输入,哈希函数输出值的分布是输 出空间上的均匀分布 具有下面三种性质
电子商务安全
西南石油大学经济管理学院
4.1 Hash函数与随机预言模型
4.1.1 Hash函数 数据的完整性:指数据从发送方产生,经过传输或 存储以后,未被以未授权的方式修改的性质 Hash函数
是一个将任意长度的消息序列映射为较短的、固定长度 的一个值的函数 密码学上的Hash函数能够保障数据的完整性,它通常被 用来构造数据的“指纹”(即函数值) 当被检验的数据发生改变的时候,对应的“指纹”信息 也将发生变化 即使数据存储在不安全的地方,也可以通过数据的“指 纹”信息来检测数据的完整性 保护一个大消息的完整性问题就简化为保护一个小的固 定大小的Hash函数值 密码学中的Hash函数不同于计算机应用领域中的Hash 函数,本书中所讲的都是密码学中的Hash函数。
第一个问题的答案是约有183个学生,第二个问题 的答案是23
电子商务安全 西南石油大学经济管理学院
•Hash函数的弱无碰撞性(抗第二原像)可防止第Ⅰ 类生日攻击
电子商务安全 西南石油大学经济管理学院
第Ⅱ类生日攻击
•对一个输出空间大小为n比特的哈希函数,只需要 计算大约n1/2个哈希值,发生碰撞的概率约为0.5 •Hash函数的强无碰撞性可防止第Ⅱ类生日攻击
电子商务安全
西南石油大学经济管理学院
Message Authentication Code
使用一个双方共享的秘密密钥生成一个固定大小 的小数据块,并加入到消息中,称MAC,或密码校 验和(cryptographic checksum) 用户A和用户B,共享密钥K,对于消息M, MAC=CK(M) 如果接收方计算的MAC与收到的MAC匹配,则
消息认证:对收到的消息进行验证,证明确实是 来自声称的发送方,并且没有被修改过。
如果在消息中加入时间及顺序信息,则可以完成对时间 和顺序的认证
电子商务安全
西南石油大学经济管理学院
消息认证的三种方式
Message encryption:用整个消息的密文作为认 证标识 接收方必须能够识别错误 Hash function:一个公开函数将任意长度的消 息映射到一个固定长度的散列值,作为认证标识 MAC:一个公开函数,加上一个密钥产生一个固 定长度的值作为认证标识
电子商务安全
西南石油大学经济管理学院
电子商务安全
西南石油大学经济管理学院
MD5 算法
作者:Ron Rivest 算法 输入:任意长度的消息 输出:128位消息摘要 处理:以512位输入数据块为单位
电子商务安全
西南石油大学经济管理学院
MD5步骤
第一步:padding 补长到512的倍数 最后64位为消息长度的低64位 一定要补长(64+1~64+512),内容为100…0 第二步 把结果分割为512位的块:Y0,Y1,…YL-1 第三步 初始化MD buffer,128位常量(4个字),进入循环迭代,共L次 每次:一个输入128位,另一个输入512位,结果输出128位,用 于下一轮输入 第四步 最后一步的输出即为散列结果128位
第4章 Hash函数 4.1 Hash函数与随机预言模型
4.2 迭代Hash函数
4.3 MD
4.4 SHA-1
4.5 MBiblioteka Baidu5与SHA-1的比较
*4.6 消息认证码(MAC)
习题
消息认证
在网络通信中,有一些针对消息内容的主动攻击 方法
伪造消息 窜改消息内容 改变消息顺序 消息重放或者延迟
第四步
最后的输出为SHA-1的结果
电子商务安全 西南石油大学经济管理学院
电子商务安全
西南石油大学经济管理学院
消息认证的三种方式
Message encryption:用整个消息的密文作为认 证标识 接收方必须能够识别错误 Hash function:一个公开函数将任意长度的消息 映射到一个固定长度的散列值,作为认证标识 MAC:一个公开函数,加上一个密钥产生一个固定 长度的值作为认证标识
电子商务安全 西南石油大学经济管理学院
哈希(Hash)
“我们的五年计划是…” “B*U@9374392l;qHUHW”
Hash
密码学中哈希的几个基本要求

电子商务安全
输入可为任意长度 输出定长 函数单向 足够小的碰撞可能性(多对一映射, 碰撞不可避免!)
西南石油大学经济管理学院
设H是一个Hash函数,x是消息,即为一任意长度 的二元序列,相应的“指纹” 定义为y=H(x) Hash函数值通常也称为消息摘要(Message Digest)、数字指纹 一般要求消息摘要是相当短的二元序列,常用的 消息摘要是160位 如果消息x被修改为x′ 则可以通过计算消息摘要y′=H(x′)并且验证y′=y 是否成立来确认数据x是否被修改的事实 如果y′≠y,则说明消息x被修改,从而达到了检 验消息完整性的目的 但单独使用哈希函数无法确保完整性!
电子商务安全
西南石油大学经济管理学院
MD5: 示意图
电子商务安全
西南石油大学经济管理学院
MD5算法有以下性质
Hash函数的每一位均是输入消息序列中每一位的函数。 该性质保证了在Hash函数计算过程中产生基于消息x的混 合,从而使得生成的Hash函数结果混合得非常理想,也 就是说,随机选取两个有着相似规律性的两组消息序列, 也很难产生相同的Hash函数值。
从密码分析的角度上看,MD5仍然被认为是一种易 受到攻击的算法 2004年,我国学者王小云给出了一种产生MD5碰撞 问题的算法 因此,有必要用一个具有更长消息摘要和更能抵御 已知密码分析攻击的Hash函数来代替目前被广泛使 用的MD5算法。下面介绍的安全Hash算法——SHA-1 就是这样一个算法。
电子商务安全 西南石油大学经济管理学院
电子商务安全
西南石油大学经济管理学院
电子商务安全
西南石油大学经济管理学院
SHA-1算法
结构与MD5类似 第一步:pading
与MD5相同,补齐到512的倍数
第二步
分块
第三步
初始化MD buffer,160位常量(5个字) 进入循环,160输入+512输入-〉160输出
算上是不可行的(弱无碰撞性、抗第二原像);
(6) 寻找任意的(x,x′),使得H(x)=H(x′)在计算上是不可行的 (强无碰撞性)。
生日问题和Hash函数 第Ⅰ类生日问题 一个班级中至少要有多少个学生才能够 使得班上存在和某一指定学生的生日相 同的同学的概率大于1/2 第Ⅱ类生日问题 一个班级中至少要有多少个学生才能够 使得至少有两个学生生日相同的概率大 于1/2
电子商务安全 西南石油大学经济管理学院
生日攻击和哈希函数
基于生日问题的生日攻击意味着要保证消息摘要 对碰撞问题是安全的,则安全消息摘要的长度就 有一个下界。
例如,长度为40比特的消息摘要是非常不安全的,因 为仅仅在220(大约为一百万)个随机Hash函数值中就有 50%的概率发现一个碰撞 所以对于安全的消息摘要,现在通常建议可接受的最 小长度为128比特(此时生日攻击需要超过264个Hash函 数值) 实际使用的消息摘要一般为160比特甚至更长。
• 确定性 • 有效性 • 均匀输出
电子商务安全
西南石油大学经济管理学院
4.2 迭代哈希(杂凑)函数通用模型
由Merkle于1989年提出 几乎被所有hash算法采用 具体做法: 把原始消息M分成一些固定长度的块Yi 最后一块padding并使其包含消息M的长度 设定初始值CV0 压缩函数f, CVi=f(CVi-1,Yi-1) 最后一个CVi为hash值
相关文档
最新文档