哈希游戏关于HASH函数设计的一些思考
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏
摘要密码HASH函数在密码学应用如消息的数字指印、消息认证和密钥来源中是一
种重要的工具。近几年,一些快速软件HASH函数已经提出,其中大部分的设计是基
一个单向HASH算法是一个确定算法,它压缩—个任意长度的消息为特殊长度的
值。一个HASH算法非常有用的性质是要找到碰撞是难处理的,即发现两个不同消息
有相同的消息压缩值是计算上不可行的。单向HASH算法广泛使用于信息认证,特别
技术已经有许多研究。HASH函数主要的应用是在1980年由Davies和Price提出的·
他们介绍在公钥体制中签名一个消息M用签名H(M)来代替的思想,其中H是压缩
函数。这样的处理大大提高了签名效率,因为如果M很长,计算H(M)并签名计算
结果将比直接签名所有消息M所需时间少的多,注意H可以快速计算而且H(M)可
以比较短。H(M)的值常称为消息M的‘消息摘要’。单向函数作为密码基本组成部
DAMGARD[DAH7.Dam90]提出的,证明了由固定长度的无碰撞压缩函数构造无限长度的
无碰撞压缩函数的可能性。HASH函数至今大体可以分三类:基于分组密码的HASH函
数、使用模算术运算的HASH函数、所谓‘指定设计’的HASH函数。第一类HASH的
设计者是考虑可信赖的分组密码的安全性,例如基于DES的一些HASH算法。第二类
算法的设计者是考虑减少实现的费用,由于HASH一般与数字签名算法—起使用,可
以利用模算术运算,不幸的是此类HASH到目前为止还不够安全。第三类HASH的设计
思想是快速实现。MD4是早期这种思想的设计之一,虽然它不在看作是安全的算法,
但现在许多正在使用的HASH算法使用了MD4的设计思想并做了一定的加强,例如MD5、
广泛认可。特别是MD4的设计思想成为许多HASH函数设计的基础,包括MD5、s}IA—l、
能为0,它不必为8的倍数,可能为任意大。我们把消息记为毗mr”弛一下面五步
消息被填充以便它的比特长度mod512为448,即消息被扩充为加上64比特后长
度为512的倍数。填充总是要实现,即使消息长度已经是nod512为448。填充如下
进行:在消息后填充一比特‘I’和足够多的‘0’,使得被填充的消息长度mod512为
特作为两个32比特字首先填充低阶字。消息长度b一般不超过2“。用64比特足够
作完上述两步后消息的长度是512比特的倍数,即消息长度为16个字的倍数。设M[O,
一个4一字缓冲器(A,B,c,D)用于计算消息摘要。这里A,B,C,D都是32
MD4在第二,三轮使用两个常数,第二轮是√i,第三轮是√i,十六进制分别表示
消息摘要是产生的输出A,B,C,D的级联,低阶为A.高阶为D·这就是MD4的
RIPE-MD为欧洲共同体的RIPE项目研制的[RIPE92],该算法包含两个并行的MD4
结构,设计用以抵抗以知的密码攻击,并产生128一位消息摘要·该算法改进了循环
移位和消息字处理的顺序。另外,该算法的仅常数不同的两个实例是并行的,每一分
组之后,两个实例的输出都加上链接变量,在压缩函数的最后部分相加左右两部分·
HD5相对-m14作了一些改进,增加了第四轮,并对常数、访问消息子分组的次序
摘要。比MD5长。SHA与MI)4非常相似,但它有160-为消息摘要。主要改变是添加了
IIAVAL是一种长度可变的HASH函数,它是MD5的改进版本。HAVAL以1024一位分
组处理消息,是MD5的两倍。它有八个32-位链接变量,也是MD5的两倍。它的轮数
可在三到五轮中变化(每轮16步),并且它能产生长度为128,160,192,224或256
每一函数均能满足严格雪崩准则的要求。每轮使用单个函数,但在每一步对输入进行
了不同的置换。该算法有一个新的消息次序,且每一步使用了不同的加法常数。该算
差分分析和线性分析是不适用的。任何成功的密码分析都需要新技术的发展。B.den
三轮攻击。进一步它介绍了新的技术分析这种函数。在95年秋季H.Dobbertin扩展
这种技术对MD4[H.D095]产生了碰撞,对MI)4扩展版的压缩函数产生了碰撞。对MI)4
攻击仅需要Pc机上不多时间。很显然MD4不能作为抵抗碰撞的函数。可以预见这些
技术可以用于MI)5或RIPEMD产生碰撞,这需要更多的努力而且距离不远了。因此
第一个设计原则是安全:对发现有相同消息摘要的两个消息Ml,地在计算上是不
可行的。这里我们定义‘计算上不可行的’为如果需要超过2“次运算。 第二个设计原则是速度:算法应该尽可能快。除了在主流处理器结构软件上的速
大的程序或置换表。这不仅是从工程的观点上而且是从安全的观点上考虑,因为简单
第四个设计原则是适合大结尾结构:适合工作站的结构及未来需求。 B.块结构的使用
在加族HASH函数中,轮函数中的每一步处理一个消息字,处理后的遗传信息通
过链接变量来传递。i)5中每轮处理的消息字即输入块的16个字,只是不同轮之间
处理消息字的顺序不同,同一轮中不同步使用同一个逻辑函数,因而存在着对称性。
一就是使用了消息扩展,使不同轮的不同步处理的消息字完全不同,而且使得对限制
一些比特的局部变化根难跟踪,即单个消息的比特值变化将影响很多地方的计算值。
得每轮的不同步处理的消息完全不同,且具有很好的混乱性.在消息输入的方式上也
有独特之处:输入的消息字是与中间结果的第一行作模2”加后覆盖在中间结果的第
一行上,在随后的列变换中出现。与以往HASH函数中压缩函数的处理不同,在不同
消息处理的不同步中,不仅有TEMP值的计算和循环复制,而且利用块结构的优势,
增加了行移变换,在这种情况下每步之间的遗传信息大大增加使算法的雪崩效应大大
理,这样将大大提高芯片的运算输出率,使算法在硬件上速度加快。 c.折叠技术的使用
我们的目的是设计一个简单,方便带或不带密钥的密码HASH函数。方法的基本
原则是由胁5的压缩函数得来的.这个压缩函数的运算可以被描述为一个以可逆方式
可以看到3.1中压缩函数碰撞可由简单的可逆的加密而产生。在3.2中采用折叠技术
首先,在不同位置增加不同循环量,是用来抵抗针对MI)5最高位的攻击。其次,
移位量的选择也需要一些策略,如移位选择在5-15之间,每个消息分组循环量不同,
扩展,并且在消息扩展的计算上采用对以前消息字循环处理后的模2”加和加后循环
处理,这样就避免了sH^一0中的缺陷[Cha,Ant98],增加了算法抵抗碰撞的能力。
量上l扮L-g特置换描述需要nl092n比特,因此对描述简单性而言,希望找到一些描述
阿规则性和对称性。典型的比特置换是新的比特位置可以由老的比特位置用简单公式
计算出来。例如,简单的比特循环d位。在专门的硬件执行中比特置换可以不用额外
的增加逻辑门来执行。然而对没有局部特点的比特置换,互相联络对最终形成的芯片
将构成较大面积。在一般目标处理中比特独立移动的比特置换不适用于软件执行。比 特位被连续地移动到希望的位置非常慢,一个快速的方法是使用查表的方法一次处理
k比特。一般情况下这种方法对n个元素比特置换需要2‘个元素的[n/kJ个表。输
入比特的指数倍的这些表限制了这些方法的执行。允许分组方法的比特置换的子集对
软件执行更适合.这包括作用在子块上的向量循环和内部置换。可以通过结合广泛使 用的左右字移位指令及位逻辑运算指令。子块长度的不可回避的选择应支持一个特定
补、逻辑或、逻辑与和异或。它们描述起来非常简单。在专门的硬件执行中,布尔运
算可以以直接的方式用相应的部分执行:用带小的延迟的紧凑逻辑门。在软件中,位 逻辑布尔运算可以直接使用相当有效的位逻辑布尔运算指示执行,这不存在可移植性
的问题。对k比特处理字长。一个作用在长为n的向量上的位逻辑运算可以被分为【n/k]
一个s比特到tl比特替换盒或称s一盒,当给定s一比特组是产生U比特组,这样
的替换盒可以被描述为一个u比特的2。元素的表,因此为了描述的简单性,希望这
些盒较小或可以以简捷方式规定它们的元素。另外一个有用的措施是在一个独立设计
中限制不同替换盒的使用。在专门的硬件执行中,替换盒可以直接作为ROM查表或作
为极小化custom单元执行。因为这种模式的面积是输入s的指数倍增长,较小的盒
是我们所希望的。在软件中,替换盒作为输入s比特索引一组常量来执行,虽然有时
可以被有效执行,替换盒一般有较小的可移植性,因为在使用处理器字长大于替换盒
输入字长度时是不利的。对处理字长为替换盒长度的n倍时,可以用同时处理两个或
映射已建立,这些运算可以象描述位逻辑运算一样紧凑。最重要的算术运算是加、减、
乘和模减。在Boolean水平上,算术运算可以以递归的方式很好描述。加运算由一个
法可以表示为许多加法和移位运算。对专门的硬件,加法和减法执行存在门延迟和和
面积对carry扩散的折中,对最简单连续的执行,这种门延迟和被处理数的长度成比
例。但加和减在硬件上可以有效的执行,成和模减是很复杂的运算,并且要快速执行
将导致大的面积。在软件中,模算术运算普遍利用算术指令。如果在密码体制中的长
度可以按处理器字长改变,这将非常有效。和替换盒的情况一样在大的处理字长时不
利。如果处理器字长比需要的小,运算的执行将是很难处理的,因此模算术运算的可
和blockwise比特置换。但位逻辑运算在密码体制中不是直接可用的,因此建议结合