散列函数(1).

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

杂凑函数
例1:设函数y=H(x)具有可加性:对任意的 x1,x2, H(x1)+H(x2)=H(x1+x2)。这样的函数不能作为杂凑函数。 取x1并计算y1=H(x1);取x2并计算y2=H(x2)。 记y=y1+y2。求一个x使得y=H(x),可以取x=x1+x2。 例2:设函数y=H(x)具有线性:对任意的 x,a,aH(x)=H(ax)。 这样的函数不能作为杂凑函数。 取x1并计算y1=H(x1)。 记y=ay1。求一个x使得y=H(x),可以取x=ax1。
杂凑函数
例3:设函数y=H(x)具有局部置换性: x的第一个比特总等于y的 第三个比特,无论x为何值。这样的函数不能作为杂凑函数。 取x1并计算y1=H(x1)。 取y为将y1改变第三个比特。求一个x使得y=H(x),可以取为将x1 改变第一个比特。 例4:设函数y=H(x)具有某种连续性:当 y1与y2 “距离很近”时, 存在 x1与x2 “距离很近” ,且y1=H(x1), y2=H(x2) 。这样的函 数不能作为杂凑函数。 取x1并计算y1=H(x1)。取y2与y1“距离很近”。 寻找一个x2使 y2=H(x2),只需要在x1的“附近”寻找,搜索量远远低于穷举 搜索。
杂凑函数
散列编码的用途
用途一:公平提交方案 Alice猜测了一个号码x1,但不知道中奖号码x2; Bob设置了中奖号码x2,但不知道Alice猜测的号码x1。 Alice希望首先获得x2,然后重新确定x1使得x1=x2。 Bob希望首先获得x1,然后重新确定x2使得x2≠x1。 防止两人作弊的方案称为“公平提交方案”。 两人使用一个公开的杂凑函数y=H(x)。方案如下:
杂凑函数
例5:设函数y=H(x),y的固定长度太小。这样的函数不能作为 杂凑函数,因为可以用穷举的方法进行碰撞攻击。 设y的固定长度为8。注意到不同的y的值的个数有28=256个。 取257个不同的x,并对每个x计算y=H(x),得到了257个y。
这257个y必然有两个具有相同的值。
杂凑函数 由此可见,杂凑函数y=H(x)不能具有任何 “整齐”的性质,并且x的任一个比特影响y的 每一个比特,就像揉面一样,达到充分的混淆 和扩散。 此外,y的长度不能太短,一般在128以上,以防 止用穷举的方法进行碰撞攻击。 我们发现,杂凑函数的设计准则颇像分组密码的 设计准则。所不同的是,分组密码不具有压缩 功能。
能用于任何大小的消息;
能产生定长输出; 寻找任意的M和M’,会满足H(M)=H(M’)很难。
实现:
单向散列函数是建立在压缩函数之上的:
消息分组 1
消息分组 2

消息分组 n
填充位
IV
压缩 函数
压缩 函数

压缩 函数
函数值
杂凑函数
(什么样的函数能作为杂凑函数?这个问题的含义非 常广泛。 以下仅举出几个简单的例子说明,什么样的函数不能 作为杂凑函数。)
中奖号码。
(6)Bob收到x1后,检验是否y1=H(x1),若是则x1是Alice的 真实的猜测号码。
杂凑函数
(1):y1=H(x1) Alice (5): 验证 是否 y2=H(x2) (2):y2=H(x2) (3):x1 (4):x2 Bob (6): 验证 是否 y1=H(x1)
单向散列函数
单向散列函数: Hash Function,哈希函数、杂凑函数
将任意长度的消息 M 映射成一个固定长度散列值 h 的函数:
h=H(M) 其中,h的长度为m。 用途: 消息认证、数字签名。 MESSAGE password 哈希算法
散列函数要具有单向性,则必须满足如下特性:
● 给定M,很容易计算h,便于软硬件实现。 ● 给定h,根据H(M)=h反推M很难。 (单向性) ● 给定M,找到另一M’满足H(M)=H(M’)很难。
公钥
私钥
解密 加密
发送
HASH 发送 HASH
加密 私钥
数字签名
数字签名
解密
公钥
数字签名
比较两个消息摘要, 证明消息未被篡改
简单散列函数
每个分组按比特异或(简单奇偶校验):
Ci bi1 bi2 ... bim
改进: 针对可预测数据,每次循环左移一位将数据和散列值 再异或。 结果: 随机化、去格式化
(弱抗攻击性)
在某些应用中,单向散列函数还需要满足抗碰撞 (Collision) 的 条 件 : 要 找 到 两 个 随 机 的 消 息 M 和 M’ , 使 H(M)=H(M’)满足很难。 (强抗攻击性) 找(x1,x2),x1≠x2,H(x1)= H(x2),很困难。这一性质称为无
碰撞性。
还要求:
Baidu Nhomakorabea
杂凑函数
(1)Alice计算y1=H(x1),并将y1发送给Bob。
(2)Bob计算y2=H(x2),并将y2发送给Alice 。 (3)Alice收到y2后,将x1发送给Bob。 (4)Bob收到y1后,将x2发送给Alice 。 (5)Alice收到x2后,检验是否y2=H(x2),若是则x2是真实的
广东工业大学
散 列 函 数
CA是电子商务的安全基础设施
银行
网上服务商
INTERNET
证书中心CA 客户/消费者
杂凑函数
杂凑函数又称为:
(1) Hash编码; (2) Hash函数; (3)散列编码: (4)散列函数;
(5)单向压缩函数。
HASH函数:
也称消息摘要(Message Digest)、哈希函数 其输入为一个可变长x,返回一固定长度串,该串h称为输入x的 HASH值(消息摘要),计作h=H(x)。HASH函数H一般满足以下几 个基要求: 输入x可以为任意长度。 输出数据串长度固定。 易计算,给定任何x,容易算出H(x)。 单向函数,即给出一个HASH值h,很难反向计算出一个一 特定输入x,使h=H(x)。 惟一性,任意两条消息x、y,使H(x)=H(y)是计算不可行 的。

所有的HASH算法都是单向的,也就是说不能从HASH值来获取原 始消息,即使是原始消息的很少一部分信息都不可能获得。
数字信封:
Digital Envelope 信息的加密采用对称密钥加密法。但密钥 不先由双方约定,而是在加密前由发送 方随机产生,用此随机产生的对称密钥 对信息进行加密,然后将此对称密钥用 接收方的公开密钥加密,就好比用信封 封装起来,所以称作数字信封。
相关文档
最新文档