哈希游戏平台第67章 Hash函数
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏
MD5由国际著名密码学家、图灵奖获得者兼公钥加密算 法RSA的创始人Rivest设计
(单向性的准确解释:或许已经知道了许多对 (x*, y*),满足y*=H(x*);或许一个新的y确实存在 一个x满足y=H(x);然而实际找到这样的x却很困 难,在计算上行不通。 无碰撞性的准确解释:或许已经知道了许多对 (x*, y*),满足y*=H(x*);或许确实存在(x1,x2)满 足: x1≠x2,H(x1)= H(x2),实际找到这样的(x1,x2) 却很困难,在计算上行不通。 )
例4:设函数y=H(x),y的固定长度太小。这 样的函数不能作为杂凑函数,因为可以用 穷举的方法进行碰撞攻击。 设y的固定长度为8。注意到不同的y的值的个 数有28=256个。 取257个不同的x,并对每个x计算y=H(x),得 到了257个y。 这257个y必然有两个具有相同的值。
方案分析: Alice发送y1给Bob,Bob发送y2给Alice ,这叫做 承诺。 Alice发送(x1, r1)给Bob,Bob发送(x2, r2)给Alice , 这叫做践诺。 当承诺值确定以后,无法改变践诺值。 当对方发送来了承诺值以后,己方无法计算出对 方的践诺值,因而无法“随机应变地”确定自 己的践诺值,以重合或避开对方的践诺值。 综上所述,杂凑函数阻止了双方作弊。
方案分析: 设攻击者Eve截听到了Alice和Bob之间的证明全过程。 这就是说, Eve知道了随机比特串x1,知道了杂凑函 数值 y=H(x1,x2) ,但不知道Alice的身份密号x2。 根据杂凑函数的性质, Eve不可能由x1和y计算出x2。 那么, Eve在不知道x2的前提下,能否在以后向Bob冒 充Alice呢?如果Bob发送的x1保持不变,则Eve能够 冒充成功。 (见方案)。但每次发送的x1是随机的, 重复发送的概率是微乎其微的。
一个函数f:AB,若它满足: 1o 对所有xA,易于计算f(x)。 2o 对“几乎所有xA”,由f(x)求x“极为困难”,以 至于实际上不可能做到。
步骤1(填充消息): 使消息长度模512=448 如果消息长度模512恰等于448,增加512个填充比特。 即填充的个数为1~512 填充方法:第1比特为1,其余全部为0 步骤2(补足长度): 将消息长度转换为64比特的数值 如果长度超过64比特所能表示的数据长度,值保留最后 64比特(以2^64取模) 添加到填充数据后面,使数据为512比特的整数倍 512比特按32比特分为16组
问题: 信息在传送过程中发生错误怎么办?如何检测是否发生 了错误?----Hash函数(第6章) 攻击者篡改了传输中的信息怎么办?如何确定消息的来 源?----消息认证码MAC(第7章)
SHA-1,美国政府的安全散列编码算法标准。 MD5,由RSA数据安全公司研制的散列编码 算法。(2004年5月,中国山东大学的王小 云教授攻破了MD5 。王小云的攻击算法可以 在几分钟内找到一批碰撞)
用途二:简易的身份识别 设Bob拥有Alice的身份密号x2 。 现在Alice需要向 Bob证明自己的身份,即要向Bob证明自己知道 x2 。但必须通过不安全的公共信道来进行证明。 这就是说,信道上有攻击者Eve在截听。 两人使用一个公开的杂凑函数y=H(x)。方案如下:
由此可见,杂凑函数y=H(x)不能具有任何“整齐” 的性质,并且x的任一个比特影响y的每一个比特, 就像揉面一样,达到充分的混淆和扩散。 此外,y的长度不能太短,一般在128以上,以防止 用穷举的方法进行碰撞攻击。 我们发现,杂凑函数的设计准则颇像分组密码的设 计准则。所不同的是,分组密码不具有压缩功能。
两个问题: 1.消息真的是来自Alice吗? 2.我收到的消息真的是Alice 发送的那个消息吗?
设数据文件是任意长度的比特串x 。在密码应 用中,希望有这样的函数 y=H(x),满足 (1)将x压缩成为固定长度的比特串y。 (2)不同的x一定要生成不同的y。 (3)由y的值无法倒算x的值。 (这就是说,希望y的作用相当于x 的“身份 识别符号”,或者“摘要”。比如人的指 纹、DNA、虹膜等。)
对函数y=H(x)的前两条希望是互不相容的。 这就是说,在要求“将任意长度的比特串x压缩成为固定长度的 比特串y”时,无法做到“不同的x生成不同的y”。
例如: y=H(x),其中设x的长度在128到256之间;设y的固定长度 为128。 (在这里, 比特串x是数据文件,必须假设它“可能是任何一个 长度在128到256之间的比特串”。 ) 一共有212821292130… 2256个不同的x。一共有2128个不同的y。 x的个数多于y的个数,必然有不同的x压缩成相同的y。
(什么样的函数能作为杂凑函数?这个问 题的含义非常广泛。 以下仅举出几个简单的例子说明,什么样 的函数不能作为杂凑函数。)
函数 y=H(x)满足 (1)将任意长度的比特串x压缩成为固定长度的比特 串y。 (2)已知x,计算y=H(x)很容易;已知y,找一个x满 足y=H(x)却很困难。这一性质称为单向性。 (3)找(x1,x2),x1≠x2,H(x1)= H(x2),很困难。这一 性质称为无碰撞性。 这样的函数称为杂凑函数(Hash函数)。
例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的“附近”寻找,搜索量远远低于穷举 搜索。
SHA-1由美国制定密码算法的标准机构—美国国家标准 技术研究院(NIST)与美国国家安全局(NSA)设计
两大算法是数字签名及许多其它密码应用领域的关键技术, 广泛应用于金融、证券等电子商务领域
SHA-1早在1994年便为美国政府采纳,目前是美国政府 广泛应用的Hash函数密码算法
用途一:公平提交方案 Alice猜测了一个号码x1,但不知道中奖号码x2; Bob设置了中奖号码x2,但不知道Alice猜测的号码x1。 Alice希望首先获得x2,然后重新确定x1使得x1=x2。 Bob希望首先获得x1,然后重新确定x2使得x2≠x1。 防止两人作弊的方案称为“公平提交方案”。 两人使用一个公开的杂凑函数y=H(x)。方案如下: