发布时间:2025-08-29 17:22:09 点击量:
HASH GAME - Online Skill Game GET 300
用上述方法构造的Hash函数称为迭代 函数称为迭代Hash函数。大多数 函数。 用上述方法构造的 函数称为迭代 函数 实用Hash函数都是迭代 函数都是迭代Hash函数 实用 函数都是迭代 函数 在预处理阶段,必须保证变换x→y是单射。因为如果预 在预处理阶段,必须保证变换 → 是单射。 是单射 处理变换x→ 不是单射 则存在x≠ 使得 不是单射, 使得y=y’,从而 处理变换 →y不是单射,则存在 ≠x’使得 , h(x)=h(x’),即能够找到 的碰撞。 的碰撞。 ,即能够找到h的碰撞 对于任意无碰撞的压缩函数, 对于任意无碰撞的压缩函数,都可以使用迭代技术构造 一个无碰撞的Hash函数。 函数。 一个无碰撞的 函数
计算消息x的散列值 计算消息 的散列值h(x)的步骤 的散列值 的步骤 预处理: 用一个公开算法在消息x右方添加若干比特 右方添加若干比特, 预处理 用一个公开算法在消息 右方添加若干比特, 得到比特串y, 的长度为t的倍数 得到比特串 ,使 得y的长度为 的倍数。即有 的长度为 的倍数。 y= x pad(x) = y1 y 2 … yr , 其中 称为填充函数 其中 yi=t (i =1, 2,…, r),pad(x)称为填充函数。典型的 , 称为填充函数。 填充函数是先添加x长度 x的值,再添加若干比特(例 填充函数是先添加 长度 的值,再添加若干比特( 长度 的值 如0)。 )。 迭代过程: 是一个长度为m的初始比特串 迭代过程 设H0=IV是一个长度为 的初始比特串, 是一个长度为 的初始比特串, 重复使用压缩函数f, 重复使用压缩函数 ,依次计算 Hi= f (Hi−1 yi) (i =1, 2,…, r). − 输出变换: 是一个公开函数, 输出变换 设g: {0,1}m→{0,1}t是一个公开函数,令 h(x)=g(Hr).
抗碰撞性是最难满足的。 抗碰撞性是最难满足的。2004年,山东大学密码学家王小 年 云对流行的散列算法MD4 MD5 HAVAL-128和RIPEMN 云对流行的散列算法 和 找到了许多碰撞的例子。 给出了如何生成X.509证 找到了许多碰撞的例子。Lenstra给出了如何生成 给出了如何生成 证 书的例子,它们的散列值相同。这就意味着, 书的例子,它们的散列值相同。这就意味着,在一个证书 上有效的数字签名在另一个证书上同样有效, 上有效的数字签名在另一个证书上同样有效,因此不可能 确定到底哪一个是由认证授权机构合法签署的。 确定到底哪一个是由认证授权机构合法签署的。 2005年,王小云预测找到 年 王小云预测找到SHA-1的碰撞的计算复杂度大 的碰撞的计算复杂度大 概是2 这比生日攻击的平均计算量2 要好得多。 概是 68,这比生日攻击的平均计算量 80要好得多。她在 60轮的 轮的SHA-1简化版本中找到了碰撞。 简化版本中找到了碰撞。 轮的 简化版本中找到了碰撞 这些结果表明,使用当前流行的散列函数前要再三考虑, 这些结果表明,使用当前流行的散列函数前要再三考虑, 有必要替换掉这些算法。 有必要替换掉这些算法。
Hash函数的作用 函数的作用 1 用于加密,如RAS-OAEP 用于加密, 2 用于数字签名。因为数字签名的长度至少要和签名 用于数字签名。 的文件一样长, 的文件一样长,对文件的散列值而不是整个文件签名 要有效得多。 要有效得多。 3 检查数据的完整性。数据完整性有两种基本的场景。 检查数据的完整性。数据完整性有两种基本的场景。 第一种场景是数据正在传输给另一个人, 第一种场景是数据正在传输给另一个人,有噪声的通 信信道向数据引入了错误。 信信道向数据引入了错误。第二种场景是观察者在接 收者接收到数据之前重新安排了传输方式。 收者接收到数据之前重新安排了传输方式。两种场景 数据都遭到了破坏。 中,数据都遭到了破坏。
生日问题:假设每个人的生日是等概率的,每年有 生日问题:假设每个人的生日是等概率的,每年有365天, 天 个人中至少有两个人的生日相同的概率大于1/2, 在k个人中至少有两个人的生日相同的概率大于 ,问k最小 个人中至少有两个人的生日相同的概率大于 最小 应是多少? 应是多少? k人生日都不同的概率是: 人生日都不同的概率是: 人生日都不同的概率是 1 2 k −1 1 − 1 − ...1 − . 365 365 365
Hash函数的分类 函数的分类 单向Hash函数(one−way) 函数( − 单向 函数 ) 给定一个Hash值y,如果寻找一个消息 ,使得 给定一个 值 ,如果寻找一个消息x,使得y=h (x) 是计算上不可行的,则称h是单向 是单向Hash函数 函数. 是计算上不可行的,则称 是单向 函数 弱抗碰撞Hash函数(weakly collision−free) 函数( 弱抗碰撞 函数 − ) 任给一个消息x,如果寻找另一个不同的消息x’, 任给一个消息 ,如果寻找另一个不同的消息 ,使 是计算上不可行的, 得h(x) =h(x’)是计算上不可行的,则称 是弱抗碰撞 是计算上不可行的 则称h是弱抗碰撞 Hash函数 函数. 函数 强抗碰撞Hash函数 (strongly collision−free) 强抗碰撞 函数 − ) 如果寻找两个不同的消息x和 ,使得h(x)=h(x’)是计 如果寻找两个不同的消息 和x’,使得 是计 算上不可行的,则称h是强抗碰撞 是强抗碰撞Hash函数 函数. 算上不可行的,则称 是强抗碰撞 函数
生日攻击法 生日悖论原理可以用于构造对Hash函数的攻击 生日悖论原理可以用于构造对 函数的攻击 函数值有n个比特 是真消息, 是伪造的假消息 是伪造的假消息, 设Hash函数值有 个比特,m是真消息,M是伪造的假消息, 函数值有 个比特, 是真消息 分别把消息m和 表示成 表示成r和 个变形的消息。 分别把消息 和M表示成 和R个变形的消息。消息与其变形 消息具有不同的形式,但有相同的含义。 消息具有不同的形式,但有相同的含义。将消息表示成变 形消息的方法很多,例如增加空格、使用缩写、 形消息的方法很多,例如增加空格、使用缩写、使用意义 相同的单词、去掉不必要的单词等。 相同的单词、去掉不必要的单词等。