CN114626537B - 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 - Google Patents
一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 Download PDFInfo
- Publication number
- CN114626537B CN114626537B CN202210531900.3A CN202210531900A CN114626537B CN 114626537 B CN114626537 B CN 114626537B CN 202210531900 A CN202210531900 A CN 202210531900A CN 114626537 B CN114626537 B CN 114626537B
- Authority
- CN
- China
- Prior art keywords
- value
- bit
- binary
- random number
- matrix
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Error Detection And Correction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法,其能够基于x86平台SIMD去计算不可约多项式,不可约多项式计算过程中二进制的平方运算采用交错法实现平方运算,相较于传统循环移位的实现,使得效率得到大幅提升;而在量子哈希计算过程中,采用异或乘操作或与判断操作进行哈希运算,也使得哈希计算的效率也得到了提升。
Description
技术领域
本发明涉及量子安全技术领域,具体涉及一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法。
背景技术
早期,我们在传输信息时,由于信道不安全可能会出现信息错乱,接收方需要反复多次确认来判断收发信息的一致性,而来回多次传送确认是效率极低的一种通信方式。如果利用哈希算法则可很好地解决这一问题,哈希算法是区块链中使用最多的一种算法,它被广泛地用于构建区块和确认交易的完整性上。例如,使用哈希算法把交易生成数据摘要,当前区块中包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值,就这样一个接一个地连接起来,形成一个不可逆向篡改的链表。
哈希值和哈希函数的概念对安全性来说特别关键。哈希是一种数学计算机程序,它接收任何一组任意长度的输入信息,通过哈希算法变换成固定长度的数据指纹输出形式,如字母和数字的组合,该输出就是“哈希值”。总体而言,哈希算法可以理解为一种消息摘要算法,将消息或数据压缩变小并拥有固定的格式。由于其单向运算具有一定的不可逆性,哈希算法已成为加密算法中一个构成部分。目前常见的哈希算法包括国际上的MD系列和SHA系列算法,以及国内的 SM3 算法。
而哈希算法计算哈希值的时候,最主要的就是哈希函数的生成,哈希函数的生成大部分都基于不可约多项式。专利号为CN202111360079.5,专利名称为的一种基于LFSR哈希的无条件安全的认证加密方法,该专利中提出了一种计算不可约多项式的方法,但其是一种数学思路,不能在x86平台SIMD上进行运用,而且根据此不可约多项式生成哈希函数计算哈希的方法在计算过程中效率低下,工程实践效果差。因此一种适用于x86平台SIMD且高效的不可约多项式计算方法和哈希计算方法的提出就显得尤为重要。
发明内容
发明目的:本发明目的是提供一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法,解决了目前计算不可约多项式的方法不能在x86平台SIMD上进行运用的问题,而且解决了根据此不可约多项式生成哈希函数计算哈希的方法在计算过程中效率低下,会耗费大量的资源的问题。本发明基于x86平台SIMD去计算不可约多项式,并在此基础上得到最终的哈希值,整个技术方案在时间和空间效率方面都有大幅的提升。
技术方案:本发明一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法,其特征在于,包括以下步骤:
步骤1:将输入计算机的待处理明文C均分为N份,每份为128位的数据;
步骤2:取一个128位的随机数r,将随机数r的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m1,将数m1中的每一位二进制数值依次进行异或得到一位的数t1,然后将随机数r的最高位左边补上数t1,并删除随机数r的最低位二进制数值,得到一个新的128位的随机数r1;
将随机数r1的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m2,将数m2中的每一位二进制数值依次进行异或得到一位的数t2,然后将随机数r1的最高位左边补上数t2,并删除随机数r1的最低位二进制数值,得到一个新的128位的随机数r2;
以此类推,直至将随机数r127的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m128,将数m128中的每一位二进制数值依次进行异或得到一位的数t128,然后将随机数r127的最高位左边补上数t128,并删除随机数r127的最低位二进制数值,得到一个新的128位的随机数r128;
步骤3:构建128×128的矩阵,该矩阵的第一列数值为随机数r1且随机数r1的最高位位于矩阵的第128行,第二列数值为随机数r2且随机数r2的最高位位于矩阵的第128行,以此类推,第一百二十八列数值为随机数r128且随机数r128的最高位位于矩阵的第128行,从而形成矩阵Q1;
步骤4:将随机数r128作为新的随机数r代替步骤2中的随机数r,重复步骤2和步骤3得到矩阵Q2;以此类推,直至得到矩阵QM,M与N相同;
步骤5:将矩阵Q1和明文C中的第一份128位数据对应的列向量进行异或乘操作或与判断操作得到第一哈希值h1,将矩阵Q2和明文C中的第二份128位数据对应的列向量进行异或乘操作或与判断操作得到第二哈希值h2,以此类推,将矩阵QM和明文C中的第N份128位数据对应的列向量进行异或乘操作或与判断操作得到第N哈希值hx;
步骤6:最后将第一哈希值h1、第二哈希值h2直至第N哈希值hx依次进行异或得到哈希值F,哈希值F即为明文C的量子哈希值;
其中,所述不可约多项式的生成具体过程步骤如下:
(1)初始化一个128位的数g,该数g分为前64位和后64位两部分,前64位的最后一位数值为1,其他位数值为0;后64位的每一位数值均为0;
(2)取一个128位的随机数,并在随机数的最低位右边增加一位从而形成一个129位的随机数,将129位随机数的最高位数值和最低位数值改为1,得到新的随机数p;
以此类推,
以此类推,
若,则计算,如果,则随机数p为不可约多项式中每一项系数组成的字符串;如果,则随机数p不是不可约多项式中每一项系数组成的字符串,此时将随机数p的二进制数值与二进制数值10相加形成新的随机数p,再利用数g和新的随机数p返回步骤1)重新计算;
进一步的,所述异或乘操作具体过程步骤如下:
A5:将第一个二进制数值Z1、第二个二进制数值Z2直至第一百二十八个二进制数值Z128按顺序组成数值串,则得到对应的哈希值。
进一步的,所述与判断操作具体过程步骤如下:
B2:取矩阵的第一行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W1,即,再判断数W1中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z1;
B3:取矩阵的第二行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W2,即,再判断数W2中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z2;
B4:以此类推,直至取矩阵的第一百二十八行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W128,再判断数W128中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z128;
B5:将第一个二进制数值Z1、第二个二进制数值Z2直至第一百二十八个二进制数值Z128按顺序组成数值串,则得到对应的哈希值。
(c)64位交错:将数G均分为4部分,并使其中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G1;
(d)32位交错:将数G1均分为2组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G2;
(e)16位交错:将数G2均分为4组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G3;
(f)8位交错:将数G3均分为8组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G4;
(g)4位交错:将数G4均分为16组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G5;
(h)2位交错:将数G5均分为32组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G6;
(i)1位交错:将数G6均分为64组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G7;
S2 将p的二进制数值左移uLenG - uLenB位,并在低位补0得到p1;
S4 比较新的uLenG与uLenB,若新的uLenG大于或等于uLenB,则将步骤S3中新的返回步骤S1,继续重复步骤S1至S3,直至新的uLenG小于uLenB,则输出步骤S3中的,即为输出结果。
本发明的有益效果:本发明相较于现有技术,能够基于x86平台SIMD去计算不可约多项式,并在此基础上得到最终的哈希值,整个技术方案在时间和空间效率方面均有大幅的提升;而且在二进制的平方运算过程中,采用交错法实现平方运算,相较于传统循环移位的实现,效率提升4倍以上;在量子哈希计算过程中,采用异或乘操作或与判断操作进行哈希运算,其中与判断操作运算效率高,使得哈希计算的效率也得到了提升。
附图说明
图1为数g的示意图;
图2为随机数p的示意图;
图3为求不可约多项式流程图;
图4为通用寄存器拆分为64bit存储数据示意图;
图5为数组存储多项式示意图;
图6为Packed和Scalar加法运算示意图。
具体实施方式
下面结合附图和实施例对本发明做进一步描述:
本发明在计算哈希值的时候,首先对于给定的随机数,求解一个不可约多项式,然后再用LFSR的方式对一个新的随机数进行变换得到矩阵,然后利用变化出来的矩阵与待哈希的明文一段一段进行异或乘操作或与判断操作,最终将一段一段的128bit的哈希值,互相再进行异或操作,得到最终的哈希。
简单说分成两步:第一步计算不可约多项式;第二步利用LFSR根据第一步得到的不可约多项式计算哈希值。
本发明提出了一种基于x86平台SIMD的不可约多项式计算方法,包括以下步骤:
(1)初始化一个128位的数g,数g的格式要求如图1所示,该数g分为前64位和后64位两部分,前64位的最后一位数值为1,其他位数值为0;后64位的每一位数值均为0;
(2)取一个128位的随机数,并在随机数的最低位右边增加一位从而形成一个129位的随机数,将129位随机数的最高位数值和最低位数值改为1,得到新的随机数p,p的结构如图2所示;
以此类推,
以此类推,
若,即,则计算p与相互取模的结果即计算,如果,则随机数p为不可约多项式中每一项系数组成的字符串;如果,则随机数p不是不可约多项式中每一项系数组成的字符串,此时将随机数p的二进制数值与二进制数值10相加形成新的随机数p,再利用数g和新的随机数p返回步骤1)重新计算;其中,所述数、数至数均存储在寄存器中。
方法一:通用寄存器只能存储64位的数据,所以把128位的数据分成两个64位数据存储。平方操作后128位的数据最大不会超过256位数据,所以需要有四个64位去存储数据,然后再对这个数据进行移位,二进制模等运算,如图4所示;
方法二:把128位的数据存储在一个数组Array里,如图5所示。
以上这两种方法都存在一定的问题。第一种方法,首先由于计算过程中会经常用到256位的数据来求解不可约多项式,因此两个64位的数就会在需要的时候,变成四个64位的数;其次,不管是针对两个64位的数还是四个64位的数,我们需要实现各种移位、二进制模、加法等运算,需要区分高低位运算,同时还涉及到进位、退位等,每实现一个算子,都相当复杂。第二种方法,用数组的方式存储数据进行运算,这种方法的优点就是可以支持更高维的计算,例如如果需要计算512位,甚至1024位,再大都能平行扩展。但是第一种方法存在的问题,在第二种方法上统统都存在,例如加减乘除,需要进位借位,因为是数组中的元素,所以这些操作都是跨字节的,因此在时间和空间上效率更低。
本发明采用一种新的方法,利用SIMD指令集,充分发挥平行计算的优势,结合本发明优化的计算方法,经过测试,性能提升到几乎和硬件计算效率差不多,例:FPGA(注:一种可编程的半定制电路)。求解不可约多项式的性能:采用传统运算的方式,优化前:900ms/个,优化后:约合2.2ms/个;利用LFSR计算哈希,优化前17MB/s,优化后100MB/s。目前支持SSE指令集的CPU,其XMM寄存器是可以存储128位数据,而支持AVX/AVX2指令集的CPU,其YMM寄存器可以一次性装载256位数据,这就为本发明的运算提供了极大的操作空间和效率提升空间。
SIMD指令集的运算指令分为两大类:Packed和Scalar。如图6所示,Packed指令是一次对XMM寄存器中的四个数,即DATA0 ~ DATA3,均进行计算,而Scalar则只对XMM寄存器中的DATA0进行计算。例如对128位数据做算术运算和逻辑运算,用Scalar的方式实现,这里以加法为例,步骤是这样的:先计算A0 + B0;再计算A1 + B1,然后进位;进而计算A2 + B2,然后进位;最后计算A3 + B3,然后进位,才完成一次完整的加法运算。而用Packed方式,则只需要调用诸如:_mm_add_epi32这类加法指令即可完成加法运算。所以Packed方式大量减少了循环和比较,是本发明采取的方式。
在此基础上,由上可知是一个128位的数据,128位的数据平方后得到的结果最大不会超过256位,所以本发明利用SIMD寄存器,并且当前计算机支持AVX指令。使用支持SSE指令集的cpu中的XMM寄存器来存储128位的数据,用AVX指令集的YMM寄存器来存储最大不会超过256位的平方后的结果。知道如何对数据做存储后,我们再来计算。
首先,令数、数至数中任意一个数为,n为1至121中的正整数;将该数中除最低位数值外的每一位数值之后插入0从而形成该数的平方,即,存储在寄存器中。举例说明:举一些常规二进制平方的例子,例如;;;从这些例子中,可以发现一个规律,即二进制的数据平方后就是在原有数值之间插入0。
(c)64位交错:将数G均分为4部分,并使其中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G1;
(d)32位交错:将数G1均分为2组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G2;
(e)16位交错:将数G2均分为4组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G3;
(f)8位交错:将数G3均分为8组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G4;
(g)4位交错:将数G4均分为16组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G5;
(h)2位交错:将数G5均分为32组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G6;
(i)1位交错:将数G6均分为64组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G7;
1、交错:均分为4部分,并使其中的第2部分二进制数值与第3部分二进制数值进行交换;
交错前:abcd efgh ijkl mnop 0000 0000 0000 0000;
交错后:abcd efgh 0000 0000 ijkl mnop 0000 0000;
2、交错:先均分为2组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换;
交错前:abcd efgh 0000 0000 ijkl mnop 0000 0000;
交错后:abcd 0000 efgh 0000 ijkl 0000 mnop 0000;
3、交错:先均分为4组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换;
交错前:abcd 0000 efgh 0000 ijkl 0000 mnop 0000;
交错后:ab00 cd00 ef00 gh00 ij00 kl00 mn00 op00;
4、交错:先均分为8组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换;
交错前:ab00 cd00 ef00 gh00 ij00 kl00 mn00 op00;
然后将最高有效位数左边的所有二进制数值0删除,以及将最低位二进制数值0删除,至此,得到了交错后的结果;完成了16位数据的插0运算,也就是实现了二进制的平方运算,数也是同理,首先将数的二进制数值最高位左边补0,直至形成128位;将128位数的最低位右边补0,直至形成256位的数G,再进行交错直至形成最终的数的平方。经过测算,该算法相较于传统循环移位的实现,效率提升4倍以上,在部分高主频的机器上甚至能达到8倍以上。
S4 比较新的uLenG与uLenB,若新的uLenG大于或等于uLenB,则将步骤S3中新的返回步骤S1,继续重复步骤S1至S3,直至新的uLenG小于uLenB,则输出步骤S3中的,即为输出结果。整个计算过程,简单说就是不停把p进行移位,异或掉最高位,直到新的的最高有效位数小于p的最高有效位数。
量子哈希运算经常会使用到线性反馈移位寄存器来与明文进行运算。线性反馈移位寄存器,下文简称为LFSR,是指将前一状态输出的线性函数再用作输入的移位寄存器。异或运算是最常见的单比特线性函数:对寄存器的某些比特位进行异或操作后作为输入,再对寄存器中的各比特进行整体移位。LFSR在工程实现中大都基于硬件来操作,如果是用软件的方式来计算LFSR,时间和空间上都会很复杂,本发明提出一种基于x86平台SIMD的量子安全哈希值计算方法,包括以下步骤:
步骤1: 将输入计算机的待处理明文C均分为N份,每份为128位的数据;
步骤2:取一个128位的随机数r,将随机数r的二进制数值最高位左边补0(变成129位)再与上述得到的不可约多项式中每一项系数组成的字符串(129位)进行异或操作得到数m1,将数m1中的每一位二进制数值依次进行异或得到一位的数t1,然后将随机数r的最高位左边补上数t1,并删除随机数r的最低位二进制数值,得到一个新的128位的随机数r1;
将随机数r1的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m2,将数m2中的每一位二进制数值依次进行异或得到一位的数t2,然后将随机数r1的最高位左边补上数t2,并删除随机数r1的最低位二进制数值,得到一个新的128位的随机数r2;
以此类推,直至将随机数r127的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m128,将数m128中的每一位二进制数值依次进行异或得到一位的数t128,然后将随机数r127的最高位左边补上数t128,并删除随机数r127的最低位二进制数值,得到一个新的128位的随机数r128;
步骤3:构建128×128的矩阵,该矩阵的第一列数值为随机数r1且随机数r1的最高位位于矩阵的第128行,第二列数值为随机数r2且随机数r2的最高位位于矩阵的第128行,以此类推,第一百二十八列数值为随机数r128且随机数r128的最高位位于矩阵的第128行,从而形成矩阵Q1;
步骤4:将随机数r128作为新的随机数r代替步骤2中的随机数r,重复步骤2和步骤3得到矩阵Q2;以此类推,直至得到矩阵QM,M与N相同;
步骤5:将矩阵Q1和明文C中的第一份128位数据对应的列向量进行异或乘操作或与判断操作得到第一哈希值h1,将矩阵Q2和明文C中的第二份128位数据对应的列向量进行异或乘操作或与判断操作得到第二哈希值h2,以此类推,将矩阵QM和明文C中的第N份128位数据对应的列向量进行异或乘操作或与判断操作得到第N哈希值hx;
步骤6:最后将第一哈希值h1、第二哈希值h2直至第N哈希值hx依次进行异或得到哈希值F,哈希值F即为明文C的量子哈希值。
其中,异或乘操作具体过程步骤如下:
A5:将第一个二进制数值Z1、第二个二进制数值Z2直至第一百二十八个二进制数值Z128按顺序组成数值串,则得到对应的哈希值。
与判断操作具体过程步骤如下:
B2:取矩阵的第一行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W1,即,再判断数W1中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z1;
B3:取矩阵的第二行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W2,即,再判断数W2中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z2;
B4:以此类推,直至取矩阵的第一百二十八行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W128,再判断数W128中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z128;
B5:将第一个二进制数值Z1、第二个二进制数值Z2直至第一百二十八个二进制数值Z128按顺序组成数值串,则得到对应的哈希值。与判断操作运算效率高于异或乘操作的效率。
在计算哈希的时候,这个过程是进行了128次的异或乘,异或乘涉及了大量的乘法运算,,,,刚好逻辑与运算也是这个结果:,,,,由于逻辑与运算效率比乘法运算高,所以这里本发明将乘运算更换为逻辑与运算,提升了效率。
乘法运算之后需要将数据进行异或操作,根据异或规律,,,,,可知0与任何数异或都是这个数本身,1与任何数异或都是这个数的相反数。那么对于求取数据异或的值,就等价于求数据中1的个数,如果个数为奇数,则结果为1。如果个数为偶数,则结果为0。因此,我们可以把求异或,转化为求取1的个数。这样显然效率又得到了提高。
本发明能够基于x86平台SIMD去计算不可约多项式,并在此基础上得到最终的哈希值,整个技术方案在时间和空间效率方面均有大幅的提升;而且在二进制的平方运算过程中,采用交错法实现平方运算,相较于传统循环移位的实现,效率提升4倍以上;在量子哈希计算过程中,采用异或乘操作或与判断操作进行哈希运算,使得哈希计算的效率也得到了提升。
Claims (4)
1.一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法,其特征在于,包括以下步骤:
步骤1:将输入计算机的待处理明文C均分为N份,每份为128位的数据;
步骤2:取一个128位的随机数r,将随机数r的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m1,将数m1中的每一位二进制数值依次进行异或得到一位的数t1,然后将随机数r的最高位左边补上数t1,并删除随机数r的最低位二进制数值,得到一个新的128位的随机数r1;
将随机数r1的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m2,将数m2中的每一位二进制数值依次进行异或得到一位的数t2,然后将随机数r1的最高位左边补上数t2,并删除随机数r1的最低位二进制数值,得到一个新的128位的随机数r2;
以此类推,直至将随机数r127的二进制数值最高位左边补0再与不可约多项式中每一项系数组成的字符串进行异或操作得到数m128,将数m128中的每一位二进制数值依次进行异或得到一位的数t128,然后将随机数r127的最高位左边补上数t128,并删除随机数r127的最低位二进制数值,得到一个新的128位的随机数r128;
步骤3:构建128×128的矩阵,该矩阵的第一列数值为随机数r1且随机数r1的最高位位于矩阵的第128行,第二列数值为随机数r2且随机数r2的最高位位于矩阵的第128行,以此类推,第一百二十八列数值为随机数r128且随机数r128的最高位位于矩阵的第128行,从而形成矩阵Q1;
步骤4:将随机数r128作为新的随机数r代替步骤2中的随机数r,重复步骤2和步骤3得到矩阵Q2;以此类推,直至得到矩阵QM,M与N相同;
步骤5:将矩阵Q1和明文C中的第一份128位数据对应的列向量进行异或乘操作或与判断操作得到第一哈希值h1,将矩阵Q2和明文C中的第二份128位数据对应的列向量进行异或乘操作或与判断操作得到第二哈希值h2,以此类推,将矩阵QM和明文C中的第N份128位数据对应的列向量进行异或乘操作或与判断操作得到第N哈希值hx;
步骤6:最后将第一哈希值h1、第二哈希值h2直至第N哈希值hx依次进行异或得到哈希值F,哈希值F即为明文C的量子哈希值;
其中,所述不可约多项式的生成具体过程步骤如下:
(1)初始化一个128位的数g,该数g分为前64位和后64位两部分,前64位的最后一位数值为1,其他位数值为0;后64位的每一位数值均为0;
(2)取一个128位的随机数,并在随机数的最低位右边增加一位从而形成一个129位的随机数,将129位随机数的最高位数值和最低位数值改为1,得到新的随机数p;
以此类推,
以此类推,
若,则计算,如果,则随机数p为不可约多项式中每一项系数组成的字符串;如果,则随机数p不是不可约多项式中每一项系数组成的字符串,此时将随机数p的二进制数值与二进制数值10相加形成新的随机数p,再利用数g和新的随机数p返回步骤1)重新计算;
(c)64位交错:将数G均分为4部分,并使其中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G1;
(d)32位交错:将数G1均分为2组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G2;
(e)16位交错:将数G2均分为4组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G3;
(f)8位交错:将数G3均分为8组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G4;
(g)4位交错:将数G4均分为16组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G5;
(h)2位交错:将数G5均分为32组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G6;
(i)1位交错:将数G6均分为64组,将每组的二进制数值再均分为4部分,并使每组中的第2部分二进制数值与第3部分二进制数值进行交换,形成数G7;
2.根据权利要求1所述的一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法,其特征在于,所述异或乘操作具体过程步骤如下:
A5:将第一个二进制数值Z1、第二个二进制数值Z2直至第一百二十八个二进制数值Z128按顺序组成数值串,则得到对应的哈希值。
3.根据权利要求1所述的一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法,其特征在于,所述与判断操作具体过程步骤如下:
B2:取矩阵的第一行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W1,即,再判断数W1中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z1;
B3:取矩阵的第二行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W2,即,再判断数W2中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z2;
B4:以此类推,直至取矩阵的第一百二十八行与明文C中的128位数据对应的列向量进行逻辑与运算,得到数W128,再判断数W128中1的个数,如果1的个数为奇数,则输出结果为1;如果1的个数为偶数,则输出结果为0;最终将输出结果记为第一个二进制数值Z128;
B5:将第一个二进制数值Z1、第二个二进制数值Z2直至第一百二十八个二进制数值Z128按顺序组成数值串,则得到对应的哈希值。
S2 将p的二进制数值左移uLenG - uLenB位,并在低位补0得到p1;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210531900.3A CN114626537B (zh) | 2022-05-17 | 2022-05-17 | 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210531900.3A CN114626537B (zh) | 2022-05-17 | 2022-05-17 | 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114626537A CN114626537A (zh) | 2022-06-14 |
CN114626537B true CN114626537B (zh) | 2022-08-16 |
Family
ID=81907053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210531900.3A Active CN114626537B (zh) | 2022-05-17 | 2022-05-17 | 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114626537B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120226731A1 (en) * | 2011-03-01 | 2012-09-06 | Gashkov Sergey B | Low depth combinational finite field multiplier |
CN113779645A (zh) * | 2021-11-12 | 2021-12-10 | 南京大学 | 一种量子数字签名和量子数字签密方法 |
CN114065247A (zh) * | 2021-11-12 | 2022-02-18 | 南京大学 | 一种量子数字混合签密方法 |
-
2022
- 2022-05-17 CN CN202210531900.3A patent/CN114626537B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120226731A1 (en) * | 2011-03-01 | 2012-09-06 | Gashkov Sergey B | Low depth combinational finite field multiplier |
CN113779645A (zh) * | 2021-11-12 | 2021-12-10 | 南京大学 | 一种量子数字签名和量子数字签密方法 |
CN114065247A (zh) * | 2021-11-12 | 2022-02-18 | 南京大学 | 一种量子数字混合签密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114626537A (zh) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8787563B2 (en) | Data converter, data conversion method and program | |
US7219293B2 (en) | High performance CRC calculation method and system with a matrix transformation strategy | |
US20030110196A1 (en) | Galois field multiply/ multiply-add/multiply accumulate | |
US20110153701A1 (en) | Implementation of arbitrary galois field arithmetic on a programmable processor | |
WO2010115371A1 (zh) | 一种循环冗余校验crc码的实现方法和装置 | |
US7343389B2 (en) | Apparatus and method for SIMD modular multiplication | |
US11283464B2 (en) | Compression and decompression engines and compressed domain processors | |
CN114063973B (zh) | 伽罗华域乘法器及纠删编解码系统 | |
Barenghi et al. | Evaluating the trade-offs in the hardware design of the ledacrypt encryption functions | |
US6957243B2 (en) | Block-serial finite field multipliers | |
CN114389752A (zh) | 循环冗余校验码生成方法、装置、设备、介质和程序产品 | |
Bhaskar et al. | Efficient Galois field arithmetic on SIMD architectures | |
CN114626537B (zh) | 一种基于x86平台SIMD的不可约多项式及量子安全哈希值计算方法 | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
US7103180B1 (en) | Method of implementing the data encryption standard with reduced computation | |
US7181009B1 (en) | Generating message digests according to multiple hashing procedures | |
EP1649634B1 (en) | Method and apparatus for fast rc4-like encryption | |
CN115525341A (zh) | 一种md5信息摘要算法的加速方法及指令集处理器 | |
US7539719B2 (en) | Method and apparatus for performing multiplication in finite field GF(2n) | |
CN112819168B (zh) | 一种格密码加解密中的环多项式乘法器电路 | |
CN114553424A (zh) | Zuc-256流密码轻量级硬件系统 | |
CN110247754B (zh) | 一种分组密码fbc的实现方法及装置 | |
CN113741972A (zh) | 一种sm3算法的并行处理方法及电子设备 | |
JP2002251137A (ja) | モジュラ乗算のためのシステム及び方法 | |
KR100473449B1 (ko) | 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |