CN115378575A - 一种通用轻量哈希处理方法、系统及可储存介质 - Google Patents

一种通用轻量哈希处理方法、系统及可储存介质 Download PDF

Info

Publication number
CN115378575A
CN115378575A CN202210787320.0A CN202210787320A CN115378575A CN 115378575 A CN115378575 A CN 115378575A CN 202210787320 A CN202210787320 A CN 202210787320A CN 115378575 A CN115378575 A CN 115378575A
Authority
CN
China
Prior art keywords
hash
algorithm
data
state
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210787320.0A
Other languages
English (en)
Inventor
郑建良
郑伊文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangxi Bohan Technology Co ltd
Original Assignee
Guangxi Bohan Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangxi Bohan Technology Co ltd filed Critical Guangxi Bohan Technology Co ltd
Priority to CN202210787320.0A priority Critical patent/CN115378575A/zh
Priority to PCT/CN2022/131905 priority patent/WO2024007506A1/zh
Publication of CN115378575A publication Critical patent/CN115378575A/zh
Priority to US18/348,872 priority patent/US20240007269A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/30Compression, e.g. Merkle-Damgard construction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种通用轻量哈希处理方法、系统及可储存介质,通过选用线性反馈移位寄存器,并需利用寄存器状态转换函数对线性反馈移位寄存器进行状态转换;利用线性反馈移位寄存器的输出,结合初始化算法对哈希算法的内部状态进行初始化;输入需要计算哈希值的数据,利用更新算法更新所述初始化后的内部状态,所述需要计算哈希值的数据为填充后的数据;利用确定算法对更新后的内部状态进行后处理,生成最终的哈希值。解决了现有哈希处理的速度、安全问题,并且实现简单,可以灵活调节长度和起始点,利于平行快速计算,且所需存储空间小,在发生哈希碰撞时可以动态追加计算哈希字来消除碰撞,提高安全性。

Description

一种通用轻量哈希处理方法、系统及可储存介质
技术领域
本发明涉及信息技术的技术领域,尤其涉及一种通用轻量哈希处理方法、系统及可储存介质。
背景技术
哈希函数将任意大小定义域中的数据压缩到固定大小值域范围内。函数的输出称为输入数据的哈希值,或简称为哈希,多个不同的输入数据产生相同的哈希值这一现象称之为碰撞,对于某一哈希函数,如果从定义域中找出两个不同的输入数据以产生碰撞在计算上是不可行的,那我们说该哈希函数是抗碰撞的,值得注意的是,抗碰撞并不意味着没有碰撞,因为对于一个压缩函数而言,碰撞在理论上是不可避免的。
目前大多数哈希算法是基于
Figure BDA0003729218400000011
结构(以下简称MD结构)设计的,包括最流行的MD5、SHA-1、以及SHA-2。由于基于MD结构的哈希函数所使用的内部状态和最终的哈希值大小一样,两者之间有比较简单和直接的联系,因此比较容易受到攻击。MD结构的安全性产生很大的问题,目前解决哈希安全的方法包括修改MD结构以产生更安全的MD变种算法以及开发基于非MD结构的新算法,例如宽管结构和基于海绵函数的新算法,然而宽管结构一般会使性能下降。目前基于海绵函数的算法被认为是比较先进和安全的算法,包括最新的SHA-3标准也是基于海绵函数设计的,但也有研究指出基于海绵函数的算法可用会遭受滑动攻击。另外,虽然SHA-3比SHA-2更高效,但仍然不够轻量,其速度也比MD5和SHA-1要慢。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分、说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述信息技术领域中现有存在问题,提出了本发明。
因此,本发明解决的技术问题是:现有哈希处理算法结构复杂、性能低下以及易受攻击,安全性不高的问题。
为解决上述技术问题,第一方面,本发明提供了一种通用轻量哈希处理方法,应用于通用轻量哈希处理系统,所述方法包括:选用线性反馈移位寄存器,并需利用寄存器状态转换函数对所述线性反馈移位寄存器进行状态转换;利用所述线性反馈移位寄存器的输出,结合初始化算法对哈希算法的内部状态进行初始化;输入需要计算哈希值的数据,利用更新算法更新所述初始化后的内部状态,所述需要计算哈希值的数据为填充后的数据;利用确定算法对所述更新后的内部状态进行后处理,生成最终的哈希值。
作为本发明所述的通用轻量哈希处理方法的一种优选方案,其中:所述初始化算法的公式表示为:
Figure BDA0003729218400000021
所述内部矩阵M的第i行Si=[ai,bi,ci,di]直接被设置为从第i×68个状态开始的四个寄存器状态值,而所述切换掩膜m则用作所述寄存器的第一个状态值,另外所述s、t和x也被初始化,所述s和t被设置为(a0+b0+c0+d0),x则被设置为0。
作为本发明所述的通用轻量哈希处理方法的一种优选方案,其中:所述更新算法表示为:
Figure BDA0003729218400000031
其中,
Figure BDA0003729218400000032
为“异或”位运算,<<<为“向左旋转”位运算,■+为“点加”运算,■
Figure BDA0003729218400000033
为“点异或”位运算;所述更新算法使用所述输入数据的每个64位字来更新内部状态,所述输入数据被填充到包含一个或多个完整的64位字的长度,所述更新函数的输入为所述寄存器中的一个64位状态字、所述填充后的数据的一个64位字以及当前内部状态,所述更新函数的输出为每次所述更新函数调用所返回的新的内部状态。
作为本发明所述的通用轻量哈希处理方法的一种优选方案,其中:所述填充后的数据所使用的数据填充方法包括,自由后缀填充和自由前缀填充。
作为本发明所述的通用轻量哈希处理方法的一种优选方案,其中:所述自由前缀填充在于,
数据填充包含以下步骤:
第一步:简单地附加足够的0(如果原始数据正好包含一个或多个完整的64位字,则不需要附加0),
第二步:附加一个64位字w,这个w由数据长度(数据包含的字节数)z和字s计算得出,即:
s←lfsr(s)
Figure BDA0003729218400000041
作为本发明所述的通用轻量哈希处理方法的一种优选方案,其中:所述确定算法将S0=[a0,b0,c0,d0]与其余每个集合Si=[ai,bi,ci,di]进行混合,然后将混合结果压缩以生成哈希字hi,其中i=1,2,…,n,所述确定算法表示为:
Figure BDA0003729218400000042
Figure BDA0003729218400000051
其中,>>>为“向右旋转”位运算。
作为本发明所述的通用轻量哈希处理方法的一种优选方案,其中:所述更新算法和确定算法为双层结构设计,其中上层为所述更新算法,下层为所述确定算法。
第二方面,提供了一种通用轻量哈希处理系统,所述系统包括:处理器,网络模块以及存储器;其中,所述处理器和所述存储器通过所述网络模块通信,所述处理器从所述存储器中读取计算机程序并运行;
其中,状态转换模块用于:对寄存器进行状态转换,利用寄存器状态转换函数作为转换的工具,所述寄存器选用线性反馈移位寄存器;初始化模块用于:对哈希算法的内部状态进行初始化,根据所述状态转换模块中寄存器的输出,并使用初始化算法作为初始化的工具;更新模块用于:利用所述状态转换模块和初始化模块的输出,并结合填充数据,使用更新算法更新所述初始化后的哈希算法内部状态;确定模块用于:对所述更新后的内部状态进行后处理,生成最终的哈希值。
第三方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述通用轻量哈希处理方法。
本发明的有益效果:本申请实施例提供的通用轻量哈希处理方法、系统及可储存介质,通过利用平衡最大长度线性反馈移位寄存器,使用单一算法独立地计算每一个哈希字,解决了哈希处理的速度问题和安全问题,并且本申请的通用轻量哈希处理方法实现简单,可以灵活调节长度和起始点,利于平行快速计算,且所需存储空间小,在发生哈希碰撞时可以动态追加计算哈希字来消除碰撞,提高哈希处理方法的安全性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。其中:
图1为本申请实施例所述的一种通用轻量哈希处理系统的框图;
图2为本申请实施例所述的一种通用轻量哈希处理方法的流程示意图;
图3为本申请实施例所述的一种通用轻量哈希处理方法的整体结构示意图;
图4为本申请实施例所述的Galois线性反馈移位寄存器示意图;
图5为本申请实施例所述的一种通用轻量哈希处理方法的计算结构化分组数据哈希值的构造示意图;
图6为本申请实施例所述的一种通用轻量哈希处理系统处理器的方框流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明,显然所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明的保护的范围。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
本发明结合示意图进行详细描述,在详述本发明实施例时,所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度、宽度及深度的三维空间尺寸。
同时在本发明的描述中,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一、第二或第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
本发明中除非另有明确的规定和限定,术语“安装、相连、连接”应做广义理解,例如:可以是固定连接、可拆卸连接或一体式连接;同样可以是机械连接、电连接或直接连接,也可以通过中间媒介间接相连,也可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
图1出示了本申请实施例所提供的一种通用轻量哈希处理系统的框图。本申请实施例中的通用轻量哈希处理系统可以为具有数据存储、传输和处理功能的服务端,如图1所示,通用轻量哈希处理系统100包括:处理器110,网络模块120以及存储器130。
存储器110、处理器120和网络模块130之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件互相之间可以通过一条或多条通讯总线或信号线实现电性连接。存储器110中存储处理器120处理过程中产生的数据,处理器120通过运行存储在存储器110内的软件程序以及模块,从而执行各种功能应用以及通用轻量哈希处理。
其中,存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAMD),只读存储器(Read OnlyMemory,ROMD,可编程只读存储器(Programmable Read-0nlyMemory,PROMD),可擦除只读存储器(Erasable Programmable Read-0nly Memory,EPROMND,电可擦除只读存储器Electric Erasable Programmable Read-0nly Memory,EEPROMD等。其中,存储器110用于存储程序和处理器120的处理数据,处理器120在接收到执行指令后,执行程序。
网络模块130用于通过网络建立处理器120与其他通信终端设备之间的通信连接,实现网络信号及数据的收发操作。上述网络信号可包括无线信号或者有线信号。
可以理解,图1所示的结构仅为示意,通用轻量哈希处理系统100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其合并实现。
本申请实施例还提供了一种计算机可存储介质,计算机可存储介质存储有计算机程序,计算机程序在运行时实现上述的方法。
参照图2~4,为申请本实施例提供的一种通用轻量哈希处理方法的示意图。方法有关的流程所定义的方法步骤应用于通用轻量哈希处理系统100,可以由处理器120实现,由图2~3可知,该方法包括以下步骤S1~S4:
S1:选用线性反馈移位寄存器,并需利用寄存器状态转换函数对线性反馈移位寄存器进行状态转换;
请参照图4,寄存器的64位比特被依次编号,从高到低为64、63、…、1,每位可取二进制值0或1,在图4中,寄存器当前状态为01101110…11001001。影响下一个状态的比特位叫做抽头,图中抽头序列为[64,61,59,57,…,8,6,5,3],可以等效地用特征多项式x64+x61+x59+x57+…+x8+x6+x5+x3+1来表示。在多项式中常数“1”并不代表某一个抽头,它所指的是一个比特位的输入,最右端的比特为输出比特,其所生成的序列被称为输出流。在数学运算时,抽头序列用切换掩膜的数值来表示,例如抽头序列[64,61,59,57,…,8,6,5,3]对应于二进制值10010101…10110101或16进制值0x95…b5(这里前缀0x表示后面跟着的是16进制值),即切换掩膜为0x95…b5,有了切换掩膜,就可以从寄存器的当前状态计算出下一个状态,例如:假定当前状态为y,切换掩膜为m,则状态更新可以通过以下简单计算进行:
i←y&1
y←y>>1
如果i≠0
Figure BDA0003729218400000081
其中,&为“与”位运算,>>为“逻辑右移”位运算,
Figure BDA0003729218400000083
为“异或”位运算。
可选的,在具体实现中,线性反馈移位寄存器可选用一个64位的平衡最大长度线性反馈移位寄存器,其对应的切换掩膜为m=0x95ac9329ac4bc9b5,将其作为常量,将当前寄存器状态y输入至函数中得到新寄存器状态y,其函数为:
Figure BDA0003729218400000082
Figure BDA0003729218400000091
经过计算后,最后的y值就是新的状态,在计算时,寄存器的初始状态不能为零,否则其状态不会改变,将永远为零。
获得哈希值需要通过三个步骤进行计算,初始化、更新和确定,所获得的哈希值为可变长度的哈希值,且每个哈希值包含一个或多个64位的无符号整数,为方便起见,在接下来的描述中我们将64位的无符号整数称为64位的字或简单称为字,除了初始化阶段,哈希值的每个字都是互不相关和独立计算的,使Si=[ai,bi,ci,di](i=0、1、2、...、n)表示包含四个字ai、bi、ci和di的集合,哈希算法的内部状态可以表示为一个(n+1)×4的内部矩阵M,其中M:
Figure BDA0003729218400000092
第一组集合S0参与计算每个哈希字,其他集合S1,S2,…,Sn仅用于计算相应的哈希字h1,h2,…,hn
S2:利用线性反馈移位寄存器的输出,结合初始化算法对哈希算法的内部状态进行初始化。
可选的,在本实施例中,初始化算法的公式表示为:
Figure BDA0003729218400000093
Figure BDA0003729218400000101
内部矩阵M的第i行Si=[ai,bi,ci,di]直接被设置为从第i×68个状态开始的四个寄存器状态值,而切换掩膜m则用作寄存器的第一个状态值,另外字s、t和x也被初始化,字s和t被设置为(a0+b0+c0+d0),x则被设置为0。
初始化过程确保所有字a0、b0、c0、d0、a1、b1、c1、d1、...为非零值且各不相同,任意两个集合Si和Sj(i≠j)不重叠,即一个集合中的任何字与另一个集合中的任何字相距超过64个寄存器状态,例如:集合S1中的第一个词a1与集合S0中最后一个字d0相距65个寄存器状态。
S3:输入需要计算哈希值的数据,利用更新算法更新初始化后的内部状态,需要计算哈希值的数据为填充后的数据。
可选的是,在本实施例中,更新算法表示为:
Figure BDA0003729218400000102
Figure BDA0003729218400000111
其中,<<<为“向左旋转”位运算,·+为“点加”运算,·
Figure BDA0003729218400000112
为“点异或”位运算,两个点运算符“■+”和“■”对两个复合操作数(或一个复合操作数和一个常规操作数)的各个组成元素逐一进行运算。例如,如果S1=[a1,b1,c1,d1]以及S0=[a0,b0,c0,d0],则
Figure BDA0003729218400000113
如果x是一个常规操作数,则S1■+x=[a1+x,b1+x,c1+x,d1+x]。在本申请中,复合变量用大写字母表示,常规变量用小写字母表示。
更新算法使用输入数据的每个64位字来更新内部状态,输入数据被填充到包含一个或多个完整的64位字的长度,更新函数的输入为寄存器中的一个64位状态字、所述填充后的数据的一个64位字以及当前内部状态,更新函数的输出为每次更新函数调用所返回的新的内部状态。
进一步的是,使用的数据填充方法包括,自由后缀填充和自由前缀填充,以自由前缀填充为例,上述填充数据的过程包括两步,
第一步:简单地附加足够的0(如果原始数据正好包含一个或多个完整的64位字,则不需要附加0);
第二步:附加一个64位字w,这个w由数据长度(数据包含的字节数)z和字s计算得出,即:
s←lfsr(s)
Figure BDA0003729218400000114
以上第二步调用了一次状态转换函数,从而额外消耗掉一个线性寄存器内部状态。从图3中可以看出,填充过的数据的最后一个字设置为
Figure BDA0003729218400000115
其中z是未填充过的数据中包含的字节数,这会从寄存器中额外消耗掉一个字,在效果上会在最后两个寄存器输入Sk-1和Sk+1之间产生一个间隙,而这一缺口是实现自由前缀填充的关键。
在第一组集合S0中四个字a0、b0、c0和d0的值在整个更新过程中始终保持各不相同,并且任何其他集合Si(i>0)中四个字ai、bi、ci和di的值在更新步骤中不能保证各不相同,但任何两个字,例如ai和bi都不能连续两次相等,因为一旦相等,下一次更新时它们将和两个值不相等的字a0和b0分别进行异或操作,产生的运算结果必定不相等。
在更新算法内的数据输入中,内部状态字s可以看作是一个特殊的计数器,它不像普通计数器那样每次增加1,而只是保证每次取不同的值,这个字实际上作为除了正常的数据输入之外的第二个(自动生成的)输入,有唯一标识每个正常数据字的作用,它增强了哈希算法的安全性,并且是使算法具有自由前缀填充属性的关键。
S4:通用轻量哈希处理系统利用确定算法对更新后的内部状态进行后处理,生成最终的哈希值。
可选的是,本实施例中所使用的的确定算法将S0=[a0,b0,c0,d0]与其余每个集合Si=[ai,bi,ci,di]进行混合,然后将混合结果压缩以生成哈希字hi,其中i=1,2,…,n,确定算法表示为:
Figure BDA0003729218400000121
Figure BDA0003729218400000131
其中,>>>为“向右旋转”位运算。
最终的哈希值H是每个哈希字hi的串联,也就是说,对于一个包含n个字的哈希值:H=h1h2…hi,是可变长度的哈希值。
进一步的是,更新算法和确定算法为双层结构设计,其中上层为所述更新算法,下层为所述确定算法。其中上层利用更新算法吸收数据并在该过程中更新内部状态,这一层使用简单高效且可以平行运算的算法来实现高速运行。下层利用确定算法对吸收完数据后的内部状态进行充分的混合,然后以高压缩比压缩生成最终的哈希值,从而增强函数的抗碰撞性和单向性。上下两层使用不同的压缩函数,不仅可以防止滑动攻击,还可以针对不同要求对每一层分别进行优化。
在本实施例中,初始化后的字s被加载在线性反馈移位寄存器中,之后字s被不断更新,字t被用来存储在更新步骤期间字s各种值的累加值,在更新时需要反复调用更新算法。字s只通过状态转换函数更新,不受任何输入数据的影响,它不被视为内部状态的一部分,字t是字s值的累积,也不被视为内部状态的一部分。字x同时受到输入数据和字s的影响,它是内部状态的一部分。
采用双层设计以兼顾速度和安全。
本申请所计算的哈希值可以从任意哈希字的任意字节开始,也可以在任何字节处结束,让Bij代表第i个哈希字hi的第j个字节,则H=h1h2...hn=B11B12...B18B21B22...B28...Bn1Bn2...Bn8,例如:应用程序可以选择在哈希值开头丢弃11个字节,在结尾丢弃5个字节,从而得到一个新的哈希值H=B24B25B26B27B28...Bn1Bn2Bn3,当以十六进制字符串表示哈希值时,开头丢弃的字节数(例如11,或十六进制的b)会作为哈希值的前缀一起显示。
本申请实施例利用最大长度线性反馈移位寄存器生成长周期不重复伪随机数系列,长周期不重复伪随机数系列能够实现:初始化常量、自动生成除数据外的额外输入、标识数据块以及产生缺口以实现自由前缀填充的功能。
另外本申请中最终输出的为可变长度哈希值,可以解决哈希值碰撞问题,在一个典型的应用场景中,应用程序预先确定一个哈希值长度,然后开始计算哈希值,最初所有的哈希值都从第一个哈希字开始,即没有字节在任何哈希值的开头处被丢弃,之后,如果出现哈希值碰撞,所有涉及碰撞的哈希值都将被调整以消除碰撞,调整可以通过将一个额外的哈希字添加到相关的哈希值来完成。这样做有一个小问题,即不同哈希值将会有不同的长度。本实施例提供的解决方案是通过同时在哈希值开头处丢弃一个哈希字来保持整个哈希值长度不变,在极少数情况下,可能需要多次重复此调整过程来解决碰撞,也就是说,如果第一次调整没有解决碰撞或带进了新的碰撞,则会继续不断调整,直到所有的碰撞被消除,另外注意,虽然通过添加和删除整数个哈希字来调整哈希值既简单又高效,但这不是必要的,调整也可以根据需要在字节的层面上完成。例如:如果发生碰撞,两个不同文件的哈希值都是h1h2h3h4,则会追加计算一个哈希字,使两个哈希值变成h1h2h3h4h5和h1h2h3h4h5’,为了保持哈希值长度不变,都丢弃开头的h1就变成了h2h3h4h5和h2h3h4h5’。如果追加计算的h5和h5’不同,则重新计算后的两个哈希值也不同,它们之间的碰撞就会消除(但它们还有可能和其他哈希值碰撞――如果发生这种情况,则需要对所有相关哈希值追加计算哈希字);如果h5和h5’一样,则继续追加计算哈希字(同时丢弃开头处哈希字以保持哈希值长度不变),直到没有碰撞为止。
并且本申请实施例中设计的哈希算法是面向单指令多数据(Single InstructionMultiple Data,SIMD)内在指令优化设计的,SIMD内在指令在当今大多数CPU上和所有GPU上得到支持,可大幅提高计算速度。
参照图5,本申请实施例还提供了一种通用轻量哈希处理方法计算结构化分组数据哈希值的构造示意图。
由图5可以看出,对于结构化分组数据,填充数据的每个分组,然后串联所有填充过的分组,最后计算整个串联数据的哈希值,这种先填充后串联处理方法不同于传统的先串联后填充处理方法,传统的先串联后填充处理方法无法保留数据的结构信息,因为没有分组边界信息反映在最终的填充数据中,而先填充后串联处理方法,能够实现为整个数据计算单一哈希值的目的,在采用自由后缀填充或自由前缀填充的情况下,可以保留数据的结构信息,先填充后串联处理方法更适合于计算结构化分组数据,例如一对键和值、文件夹中的文件列表、记账本中的交易列表等等。
另外通过使用结构化分组数据,本实施例中的哈希算法可以被当做一个键控哈希函数来使用,即将键和数据当做结构化数据的两个分组来计算哈希值。
在上述的两个实施例的基本算法中,每个集合Si=[ai,bi,ci,di]由4个64位字组成,在更通用的设计中,每个集合Si中包含的64位字的个数是可以根据需要增加的,增加字的个数会提高安全性,但也会降低运行速度,虽然字的个数可以是不小于4的任何值,但建议使用偶数或2的指数,以利用SIMD内在指令的优势:很容易修改基本算法来实现在每个集合Si中使用更多的字,更新算法第二个循环的循环次数设置为每个集合Si中字的个数和每个字中的位数,即4+64=68,因此,这个循环次数在一般算法中应改为通用值q+64,其中q是每个集合Si中字的个数,除此之外,需要将每个集合Si中的增加的字以对待原先4个字一样的方式添加到代码中,当每个集合Si中字的个数不是4时,每个哈希值的十六进制表达式必须以这个个数加上一个冒号开始,例如,如果前面举例给的哈希值b-40b9442506...3d627a是在每个Si中字的个数设置为6的情况下计算所得,那么它的完整形式应为6:b-40b9442506...3d627a。
因此本申请的哈希算法能够在不改变基本算法的情况下,只通过调节每个集合Si=[ai,bi,ci,di,…]中包含的字的个数来动态调整LHA算法的安全性,通过动态调整哈希算法的安全性,以最小的代价有效应对各种新的和未知的攻击。
另外,虽然本申请的哈希算法只对64位的运算作了描述,但基本算法可以几乎原封不动地应用到其他位数,比如在一些不支持64位运算的资源紧缺的小型设备上,可以用32、16、或8位运算来代替64位运算。
参照图6,基于上述同样的发明构思,处理器120包括:状态转换模块121、初始化模块122、更新模块123和确定模块124;
状态转换模块121用于:对寄存器进行状态转换,利用寄存器状态转换函数作为转换的工具,寄存器选用线性反馈移位寄存器;
初始化模块122用于:对哈希算法的内部状态进行初始化,根据状态转换模块中寄存器的输出,并使用初始化算法作为初始化的工具;
更新模块123用于:利用状态转换模块和初始化模块的输出,并结合填充数据,使用更新算法更新初始化后的哈希算法内部状态;
确定模块124用于:对更新后的内部状态进行后处理,生成最终的哈希值。可以理解的是,关于上述模块的描述可以参阅对图2~5所示的方法的说明,在此不再赘述。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,通用轻量哈希处理系统100,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-0nly.Memory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括--系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一....”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种通用轻量哈希处理方法,其特征在于,应用于通用轻量哈希处理系统:所述方法包括,
选用线性反馈移位寄存器,并需利用寄存器状态转换函数对所述线性反馈移位寄存器进行状态转换;
利用所述线性反馈移位寄存器的输出,结合初始化算法对哈希算法的内部状态进行初始化;
输入需要计算哈希值的数据,利用更新算法更新所述初始化后的内部状态,所述需要计算哈希值的数据为填充后的数据;
利用确定算法对所述更新后的内部状态进行后处理,生成最终的哈希值。
2.如权利要求1所述的通用轻量哈希处理方法,其特征在于:所述初始化算法的公式表示为:
常量:切换掩膜m
输入:未初始化的内部矩阵M=[S0;S1;…;Sn]和三个64位的字s,t,x
返回:初始化后的M,s,t,x
1 a0←m
2 b0←lfsr(a0)
3 c0←lfsr(b0)
4 d0←lfsr(c0)
5 s←a0+b0+c0+d0
6 t←s
7 x←0
8遍历i从1到n
9 ai←ai-1
10 遍历j从1到68
11 ai←lfsr(ai)
12 bi←lfsr(ai)
13 ci←lfsr(bi)
14 di←lfsr(ci)
所述内部矩阵M的第i行Si=[ai,bi,ci,di]直接被设置为从第i×68个状态开始的四个寄存器状态值,而所述切换掩膜m则用作所述寄存器的第一个状态值,另外所述s、t和x也被初始化,所述s和t被设置为(a0+b0+c0+d0),x则被设置为0。
3.如权利要求2所述的通用轻量哈希处理方法,其特征在于:所述更新算法表示为:
输入:需要计算哈希值的数据data
结果:更新后的内部矩阵M=[S0;S1;…;Sn]和三个64位的字s,t,x
1函数update(data):
2遍历data中的每一个64位的字w并执行以下操作
3
Figure FDA0003729218390000021
4S0←S0■+x
5
Figure FDA0003729218390000022
6 s←lfsr(s)
7 t←t+s
8 x←x+(x<<<31)
9 x←x+(x<<<15)
10 x←x+(x<<<7)
11
Figure FDA0003729218390000023
12遍历i从1到n
13
Figure FDA0003729218390000024
14 Si←Si■+x
其中,
Figure FDA0003729218390000025
为“异或”位运算,<<<为“向左旋转”位运算,■+为“点加”运算,
Figure FDA0003729218390000026
为“点异或”位运算;所述更新算法使用所述输入数据的每个64位字来更新内部状态,所述输入数据被填充到包含一个或多个完整的64位字的长度,所述更新函数的输入为所述寄存器中的一个64位状态字、所述填充后的数据的一个64位字以及当前内部状态,所述更新函数的输出为每次所述更新函数调用所返回的新的内部状态。
4.如权利要求1~3任一所述的通用轻量哈希处理方法,其特征在于:所述填充后的数据所使用的数据填充方法包括,
自由后缀填充和自由前缀填充。
5.如权利要求4所述的通用轻量哈希处理方法,其特征在于:所述自由前缀填充在于,
数据填充包含以下步骤:
第一步:简单地附加足够的0(如果原始数据正好包含一个或多个完整的64位字,则不需要附加0),
第二步:附加一个64位字w,这个w由数据长度(数据包含的字节数)z和字s计算得出,即:
s←lfsr(s)
Figure FDA0003729218390000031
6.如权利要求5所述的通用轻量哈希处理方法,其特征在于:所述确定算法将S0=[a0,b0,c0,d0]与其余每个集合Si=[ai,bi,ci,di]进行混合,然后将混合结果压缩以生成哈希字hi,其中i=1,2,…,n,所述确定算法表示为:
输入:内部矩阵M=[S0;S1;…;Sn]
结果:哈希值H=h1h2…hn
1遍历i从1到n
2 a←a0
3 b←b0
4 c←c0
5 d←d0
6遍历j从1到9
7 a←a+(a<<<31)
8
Figure FDA0003729218390000032
9 b←b+(b<<<15)
10
Figure FDA0003729218390000033
11 c←c+(c<<<7)
12
Figure FDA0003729218390000034
13 d←d+(d<<<3)
14
Figure FDA0003729218390000035
15 ai←ai+(ai>>>31)
16
Figure FDA0003729218390000036
17 bi←bi+(bi>>>15)
18
Figure FDA0003729218390000041
19 ci←ci+(ci>>>7)
20
Figure FDA0003729218390000042
21 di←di+(di>>>3)
22
Figure FDA0003729218390000043
23 hi←a
其中,>>>为“向右旋转”位运算。
7.如权利要求1~3、5~6任一所述的通用轻量哈希处理方法,其特征在于:所述更新算法和确定算法为双层结构设计,其中上层为所述更新算法,下层为所述确定算法。
8.一种通用轻量哈希处理系统,其特征还在于:包括,
处理器,
网络模块以及
存储器;
其中,所述处理器和所述存储器通过所述网络模块通信,所述处理器从所述存储器中读取计算机程序并运行,以执行权利要求1~7任一项所述的方法。
9.如权利要求8所述的通用轻量哈希处理系统,其特征还在于:所述处理器包括,
状态转换模块用于:对寄存器进行状态转换,利用寄存器状态转换函数作为转换的工具,所述寄存器选用线性反馈移位寄存器;
初始化模块用于:对哈希算法的内部状态进行初始化,根据所述状态转换模块中寄存器的输出,并使用初始化算法作为初始化的工具;
更新模块用于:利用所述状态转换模块和初始化模块的输出,并结合填充数据,使用更新算法更新所述初始化后的哈希算法内部状态;
确定模块用于:对所述更新后的内部状态进行后处理,生成最终的哈希值。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一所述的通用轻量哈希处理方法。
CN202210787320.0A 2022-07-04 2022-07-04 一种通用轻量哈希处理方法、系统及可储存介质 Pending CN115378575A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202210787320.0A CN115378575A (zh) 2022-07-04 2022-07-04 一种通用轻量哈希处理方法、系统及可储存介质
PCT/CN2022/131905 WO2024007506A1 (zh) 2022-07-04 2022-11-15 一种通用轻量哈希处理方法、系统及可储存介质
US18/348,872 US20240007269A1 (en) 2022-07-04 2023-07-07 General-Purpose Lightweight Hash Processing Method and System and Storable Medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210787320.0A CN115378575A (zh) 2022-07-04 2022-07-04 一种通用轻量哈希处理方法、系统及可储存介质

Publications (1)

Publication Number Publication Date
CN115378575A true CN115378575A (zh) 2022-11-22

Family

ID=84062277

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210787320.0A Pending CN115378575A (zh) 2022-07-04 2022-07-04 一种通用轻量哈希处理方法、系统及可储存介质

Country Status (2)

Country Link
CN (1) CN115378575A (zh)
WO (1) WO2024007506A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116186745A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 哈希加密方法、非易失性可读存储介质及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010128392A (ja) * 2008-11-28 2010-06-10 Canon Inc ハッシュ処理装置及びその方法
JP2017058501A (ja) * 2015-09-16 2017-03-23 日本電信電話株式会社 ハッシュ関数計算装置および方法
CN109088718A (zh) * 2018-07-11 2018-12-25 上海循态信息科技有限公司 基于线性反馈移位寄存器的保密增强方法及系统
CN111464308B (zh) * 2020-03-12 2022-07-01 烽火通信科技股份有限公司 一种实现多种哈希算法可重构的方法和系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116186745A (zh) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 哈希加密方法、非易失性可读存储介质及电子设备

Also Published As

Publication number Publication date
WO2024007506A1 (zh) 2024-01-11

Similar Documents

Publication Publication Date Title
CN111427891A (zh) 区块挖掘装置
Aumasson et al. NORX: parallel and scalable AEAD
TW201918926A (zh) 用於自位元混合器建構安全雜湊函數之方法
Lemire et al. Strongly universal string hashing is fast
US20180248687A1 (en) Cryptographic hash generated using data parallel instructions
Bernstein et al. Really fast syndrome-based hashing
Shi et al. Hardware implementation of hash functions
Wang et al. Hash function with variable output length
Ye et al. A further study of the linear complexity of new binary cyclotomic sequence of length p^ r pr
CN115378575A (zh) 一种通用轻量哈希处理方法、系统及可储存介质
Tang et al. Binary linear codes from vectorial Boolean functions and their weight distribution
US8225100B2 (en) Hash functions using recurrency and arithmetic
US20240007269A1 (en) General-Purpose Lightweight Hash Processing Method and System and Storable Medium
Leurent et al. Simd is a message digest
Maitin-Shepard et al. Elliptic curve multiset hash
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
JP2009169316A (ja) ハッシュ関数演算装置及び署名装置及びプログラム及びハッシュ関数演算方法
Knudsen et al. Preimage and collision attacks on MD2
US20080063189A1 (en) Optimal signed-digit recoding for elliptic curve cryptography
JP4914381B2 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、プログラム、および記録媒体
Sun et al. Several classes of even-variable 1-resilient rotation symmetric Boolean functions with high algebraic degree and nonlinearity
Ivanchykhin et al. Regular and almost universal hashing: an efficient implementation
Paar et al. Sha-3 and the hash function keccak
Rohit et al. Practical Forgery attacks on Limdolen and HERN
Sarkar Domain extender for collision resistant hash functions: Improving upon Merkle–Damgård iteration

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination