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