CN113971015A - Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 - Google Patents

Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 Download PDF

Info

Publication number
CN113971015A
CN113971015A CN202111328426.6A CN202111328426A CN113971015A CN 113971015 A CN113971015 A CN 113971015A CN 202111328426 A CN202111328426 A CN 202111328426A CN 113971015 A CN113971015 A CN 113971015A
Authority
CN
China
Prior art keywords
data
ith
result
bit
sequence
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.)
Granted
Application number
CN202111328426.6A
Other languages
English (en)
Other versions
CN113971015B (zh
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.)
Zeku Technology Beijing Corp Ltd
Original Assignee
Zeku Technology Beijing Corp 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 Zeku Technology Beijing Corp Ltd filed Critical Zeku Technology Beijing Corp Ltd
Priority to CN202111328426.6A priority Critical patent/CN113971015B/zh
Publication of CN113971015A publication Critical patent/CN113971015A/zh
Application granted granted Critical
Publication of CN113971015B publication Critical patent/CN113971015B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Logic Circuits (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请公开了一种UIA2计算电路及其数据处理方法、芯片、电子设备及存储介质,涉及信息安全技术领域,该UIA2计算电路包括64级MUL单元,以及与所述64级MUL单元分别对应连接的64级混合运算单元,其中:第i级MUL单元,用于接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果,i为整数且i的取值从0遍历至63;第i级混合运算单元分别与第i‑1级混合运算单元和所述第i级MUL单元连接,用于接收第i‑1级运算单元的第i‑1级混合运算结果和所述第i级MUL运算结果,并基于所述第i‑1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。本申请可以实现UIA2I算法的并行计算。

Description

UIA2计算电路及其数据处理方法、芯片、电子设备及存储介质
技术领域
本申请涉及信息安全技术领域,更具体地,涉及一种UIA2计算电路及其数据处理方法、芯片、电子设备及存储介质。
背景技术
随着移动通信技术的发展,基于网络协议(Internet Protocol,IP)的开放式网络架构以及无线传播的特性,安全问题成为移动通信装置的核心问题之一。目前安全性通常涉及机密性和完整性两个方面,因此网络安全架构协议中有许多标准化的加密算法与完整性保护算法。例如,在3GPP安全架构中存在一种基于SNOW-3G的UIA2消息完整性保护算法,该UIA2完整性保护算法会根据输入的消息计算一个32位的消息认证码MAC,从而可以根据该消息认证码MAC实现消息的完整性保护。
然而,计算消息认证码MAC时,通常会包含MULxPOW(V,i,C)的计算,而计算公式又为MULxPOW(V,i,C)=MULx(MULxPOW(V,i-1,C),C),即第i次的计算依赖于第i-1次的结果(i为大于1的整数),从而在实现消息认证码MAC计算的硬件电路中,会包括多级组合电路,且每一级的输入都取决于上一级结果的输出,从而造成较长的组合逻辑链,对***的时钟频率和吞吐量造成较大的影响。
发明内容
鉴于上述问题,本申请提出了一种UIA2计算电路及其数据处理方法、芯片、电子设备及存储介质。
第一方面,本申请实施例提供了一种UIA2计算电路,该UIA2计算电路包括64级MUL单元,以及与所述64级MUL单元分别对应连接的64级混合运算单元,其中:第i级MUL单元,用于接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果,i为整数且i的取值从0遍历至63;第i级混合运算单元分别与第i-1级混合运算单元和所述第i级MUL单元连接,用于接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。
第二方面,本申请实施例提供了一种如第一方面所述的UIA2计算电路的数据处理方法,方法包括:第i级MUL单元接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果;第i级混合运算单元接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。
第三方面,本申请实施例提供了一种芯片,包括上述第一方面提供的UIA2计算电路。
第四方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个程序代码,其中所述一个或多个程序代码被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序代码配置用于执行上述第二方面提供的数据处理方法。
第五方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述第二方面提供的数据处理方法,或调用执行上述第一方面提供的数据处理方法。
本申请提供的方案,UIA2计算电路包括64级MUL单元,以及与所述64级MUL单元分别对应连接的64级混合运算单元,其中第i级MUL单元,用于接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果,i为整数且i的取值从0遍历至63;第i级混合运算单元分别与第i-1级混合运算单元和所述第i级MUL单元连接,用于接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。由此,本申请中MUL单元的每一级的计算可以只依赖于输入的64位的第一数据序列,无需依赖上一级MUL单元的输出,使得可以将原有的MUL单元的串行计算方式,改变为并行计算方式,提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种MULxPOW(V,i,C)函数的计算电路结构示意图。
图2示出了一种MULx(V,C)函数的计算电路结构示意图。
图3示出了一种MUL(V,P,C)函数的计算电路结构示意图。
图4示出了本申请提供的一种
Figure BDA0003347995520000021
的按位计算电路示意图。
图5示出了本申请提供的一种
Figure BDA0003347995520000022
的按位计算电路示意图。
图6示出了本申请提供的一种
Figure BDA0003347995520000023
的按位计算电路示意图。
图7示出了本申请提供的一种
Figure BDA0003347995520000024
的按位计算电路示意图。
图8示出了根据本申请一个实施例的数据处理方法的一种示意图。
图9示出了根据本申请另一个实施例的数据处理方法的一种示意图。
图10示出了根据本申请又一个实施例的数据处理方法的一种示意图。
图11示出了本申请提供的一种
Figure BDA0003347995520000025
的按位计算电路示意图。
图12示出了本申请提供的一种
Figure BDA0003347995520000026
的按位计算电路示意图。
图13示出了本申请提供的一种
Figure BDA0003347995520000027
的按位计算电路示意图。
图14示出了根据本申请再一个实施例的数据处理电路的一种框图。
图15示出了本申请提供的一种MUL(V,P,C)函数的计算电路结构示意图。
图16是本申请实施例的用于执行根据本申请实施例的数据处理方法的电子设备的框图。
图17是本申请实施例的用于保存或者携带实现根据本申请实施例的数据处理方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
相关技术中,以UIA2完整性保护算法为例,其计算消息认证码MAC的过程通常包括以下步骤:
第一步,设LENGTH是用于计算MAC数据的比特长度,MESSAGE是数据本身。
第二步,设D=LENGTH/64向上取整+1,LENGTH为消息的长度,以比特为单位,即根据MESSAGE的长度,将MESSAGE划分为D个64位消息。
第三步,使用Snow-3G密钥生成器生成5个32位字构成的密钥,以此设为Z1,Z2,Z3,Z4,Z5。Z1是第一次输出的密钥,Z5是最后一次生成的密钥。
第四步,设P=Z1并上Z2,Q=Z3并上Z4。
第五步,令Z5=OTP[0]并上OTP[1]并上OTP[2]并上…并上OTP[31],其中OTP[0]是最高有效位,OTP[31]是最低有效位。
第六步,对于i=0到D-3,设M[i]=MESSAGE[64*i]并上MESSAGE[64*i+1]并上…并上MESSAGE[64*i+32];对于i=D-2,设M[D-2]=MESSAGE[64*(D-2)]并上…并上MESSAGE[LENGTH-1]并上0并上...并上0;对于i=D-1,设M[D-1]=LENGTH[0]并上LENGTH[1]并上…并上LENGTH[63]
第七步,令64位宽的EVAL=0,即定义估计值(EVAL)的初始值为0。
第八步,对于i=0到D-2,EVAL=MUL(EVAL xor M[i],P,0x0000 0000 0000 001B)
第九步,EVAL=EVAL xor M[D-1]。
第十步,EVAL=MUL(EVAL,Q,0x0000 0000 0000 001B)。
第十一步,令EVAL=e[0]并上e[1]并上…并上e[63],其中e[0]是最高有效位,e[63]是最低有效位
第十二步,对i=0到31,MAC[i]=e[i]xor OTP[i],即截取e的前32位并与OTP进行异或,生成应用UIA2完整性保护算法的MESSAGE的消息认证码MAC。
其中,UIA2完整性保护算法计算MAC的过程中用到的函数伪代码说明如下:
V,P,C均为64位的数据时,MUL(V,P,C)函数的伪代码可以为:
Figure BDA0003347995520000031
其中,MULxPOW(V,i,C)函数的伪代码可以为:
Figure BDA0003347995520000032
其中,MULx(V,C)函数的伪代码可以为:
Figure BDA0003347995520000033
进一步地,将MUL(V,P,C)函数伪代码进行展开,可以得到:
result=0;
result=p[0]==1?result xor MULxPOW(V,0,C):result;
result=p[1]==1?result xor MULxPOW(V,1,C):result;
result=p[2]==1?result xor MULxPOW(V,2,C):result;
……
result=p[63]==1?result xor MULxPOW(V,63,C):result;
从MULxPOW(V,P,C)的伪代码中可见,当i=0时,MULXPOW(V,0,C)=V,相当于给定了一个计算MUL(V,P,C)函数的初始条件,从而可以得到MUL(V,P,C)函数展开伪代码中第2步的结果,即:
result=p[0]==1?result xor V:result;
然后对于MULxPOW(V,P,C)伪代码中第3步,又需要得到MULxPOW(V,1,C)的结果,而从MULxPOW(V,P,C)的伪代码中可见,当i=1时,MULxPOW(V,1,C)=MULx(MULxPOW(V,0,C),C),从而将MULxPOW(V,1,C)变换为以MULxPOW(V,0,C)为变量的函数。
以此类推,我们可以将MULxPOW(V,i,C)变换为以MULxPOW(V,i-1,C)为变量的函数,计算过程如下所示:
MULxPOW(V,0,C)=V
MULxPOW(V,1,C)=MULx(MULxPOW(V,0,C),C)
MULxPOW(V,2,C)=MULx(MULxPOW(V,1,C),C)
……
MULxPOW(V,63,C)=MULx(MULxPOW(V,62,C),C)
可以看出,每一行的计算依赖于上一行的结果,因此,相关技术中在进行MULxPOW(V,i,C)的硬件电路设计时,常用一种串行电路来计算MULxPOW(V,i,C)的结果。示例性地,请参阅图1,图1示出了一种MULxPOW(V,i,C)函数的计算电路结构,可以看出在该串行电路中,除了首级方框的电路是一个常数V以外,其余方框中的电路均为MULx(V,C)电路,且每一级的输入都取决于上一级MULx(V,C)结果的输出。而从MULx(V,C)的伪代码中,可以看出MULx(V,C)电路由判断、选择与异或等几个操作组成,实现比较简单。示例性地,请参阅图2,图2示出了一种MULx(V,C)函数的计算电路结构。
而对于MUL(V,P,C)函数的硬件电路实现,从MUL(V,P,c)的伪代码中可以看出,在得到上述MULxPOW(V,i,C)计算电路后,只需要引入关于P的选择电路与MULxPOW(V,i,C)结果的异或电路即可。示例性地,请参阅图3,图3示出了一种MUL(V,P,C)函数的计算电路结构。
结合图3可以发现,MUL(V,P,C)的计算是多级异或与选择的串行结果,每一级的输入都取决于上一级MULxPOW(V,i,C)结果的输出,这样的实现方法必然造成较长的组合逻辑链,在芯片综合时很难将上述电路在要求的时钟频率下由一级流水实现。即便能够实现,综合工具也会相当吃力,使用快速逻辑单元对该路径进行优化,提升了速度但同时也增加了功耗。还有一种可能性是在要求的时钟频率下,综合工具根本不能在一级流水中实现,这样就需要对计算进行打拍,将其拆分为两级组合逻辑,由两个甚至更多的时钟周期来完成一次计算,这样无疑降低了***计算的吞吐量。
为了改善上述问题,发明人经过长时间的研究发现,在UIA2完整性保护算法中,MUL(V,P,C)的输出结果是64位的数据,而V、P、C也都是64位的数据,因此,可该函数可以理解为将一个192位的输入(64+64+64)映射到了一个64位的输出。且结合UIA2算法计算MAC的过程,发明人还发现,需要用到MUL(V,P,C)函数的第八步“对于i=0到D-2,EVAL=MUL(EVALxor M[i],P,0x0000 0000 0000 001B)”,以及第十步“EVAL=MUL(EVAL,Q,0x0000 00000000 001B)”的地方,参数C都是一个常数,即C=0x0000 0000 0000 001B。
由于MUL(V,P,C)函数的计算过程可以先抛开P不计,只关心MULxPOW(V,i,C),因此此时可以将MUL(V,P,C)看成以V为变量的函数,由于此时MUL(V,P,C)为单一变量的函数,必然存在一个一对一的映射关系,从而可以利用该映射关系,使得每级电路的实现只依赖于输出V,无需依赖上一级的输出,进而简化了电路的实现。
具体地,发明人提出了一种数据处理方法、电路、芯片、电子设备及存储介质,可以参数C为常量的特点,来确定输入V和函数输出的映射关系,以使MULxPOW(V,i,C)函数的每一级的计算可以只依赖于输入V,无需依赖上一级的输出,从而可以将原有的MULxPOW(V,i,C)函数的串行计算方式,改变为并行计算方式,提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
下面先对输入V和函数输出的映射关系的确定过程进行描述。
以UIA2完整性保护算法为例,MUL(V,P,C)函数中V,P,C均为64位数据,且C=0x0000 0000 0000 001B。由于MUL(V,P,C)函数的计算过程可以先抛开P不计,只关心MULxPOW(V,i,C),而根据图1所示的电路结构,MULxPOW(V,i,C)除了首级方框的电路是一个常数V以外,其余方框中的电路均为MULx(V,C)电路。因此,为了便于描述,可以先对MUL(V,P,C)函数进行化简:
Figure BDA0003347995520000041
并将f(f(v))=MULx(MULx(V,C),C)记作
Figure BDA0003347995520000042
那么MULx(V,C)的n级嵌套可以写作
Figure BDA0003347995520000043
由于MULxPOW(V,0,C)=V,因此,
Figure BDA0003347995520000044
MULxPOW(V,2,C)=MULx(MULxPOW(V,1,C),C)=MULx(MULx(
Figure BDA0003347995520000045
以此类推,可以得到:
Figure BDA0003347995520000046
从而
Figure BDA0003347995520000051
基于上述定义,利用C=0x0000 0000 0000 001B(下述用0x1B)的条件对MULxPOW(V,1,C)=MULx(MULxPOW(V,0,C),C)进行简化,可以得到:
Figure BDA0003347995520000052
而根据MULx(V,C)函数的伪代码,可以知道,当参数V的最高位V[63]为1时,MULx(V,C)=(V<<1)xor C,当参数V的最高位V[63]不为1时,MULx(V,C)=(V<<1),其中,xor为一个逻辑运算符,意为按位异或,其数学符号为
Figure BDA0003347995520000053
Figure BDA0003347995520000054
的运算法则为:如果a、b两个值不相同,则异或结果为1;如果a、b两个值相同,异或结果为0。
因此,
Figure BDA0003347995520000055
可以简写为:
Figure BDA0003347995520000056
然而,发明人经过研究发现,由于0x1B的64位的二进制数为0000 0000 0000 00000000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 1011,即左半部分由59个0组成,而当某个值a与0进行异或时,异或结果均与值a相同(即
Figure BDA0003347995520000057
Figure BDA0003347995520000058
),因此,当
Figure BDA0003347995520000059
与0x1B进行按位异或计算时,左半部分59个0对应的输出,可以直接是
Figure BDA00033479955200000510
的左半部分的59位数值,而对于值为1的比特位,由于
Figure BDA00033479955200000511
与0x1B的异或操作,是在
Figure BDA00033479955200000512
为1时才进行,因此,在
Figure BDA00033479955200000513
时,
Figure BDA00033479955200000514
为1,从而可以将0x1B的64位的二进制数中值为1的比特位,用
Figure BDA00033479955200000515
代替1。从而,
Figure BDA00033479955200000516
可以继续简写为:
Figure BDA00033479955200000517
由于
Figure BDA00033479955200000518
所以也可以简写为
Figure BDA00033479955200000519
Figure BDA00033479955200000520
其中{0,0,…,0,V[63],V[63],0,V[63],V[63]}左半部分有59个0组成,对应64位0x1B中左半部分59个比特位的0。
可以理解的是,当最高位V[63]不为1即为0时,
Figure BDA00033479955200000521
其可以相当于,(V<<1)与64位均为0的数据进行异或,异或结果仍然为(V<<1)。因此当V[63]=0时,仍可以使
Figure BDA00033479955200000522
Figure BDA00033479955200000523
由于此时V[63]=0,因此可以相当于
Figure BDA00033479955200000524
Figure BDA00033479955200000525
从而可以相当于
Figure BDA00033479955200000526
因此,最高位V[63]无论是否为1,
Figure BDA00033479955200000527
都可以直接简写为:
Figure BDA00033479955200000528
其中,<<为左移运算符,表示按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。从而V<<1可以理解为,将V的64位数据V[63]~V[0]向左移动1位,从而高位V[63]移出,低位的空位补上0。
从而可以看出,
Figure BDA00033479955200000529
的结果,可以是通过将输入参数V左移1位后,将移位后的结果在指定比特位与V[63]进行按位异或运算后得到,也就是说
Figure BDA0003347995520000061
能够直接根据输入参数V得到,也即得到了
Figure BDA0003347995520000062
与输入参数V的映射关系。
基于上述分析,进而可以实现
Figure BDA0003347995520000063
的计算电路设计。示例性地,请参阅图4,图4示出了一种
Figure BDA0003347995520000064
的按位计算电路示意图。其中,M的64位数据M[63]~M[0]对应的是V的64位数据V[63]~V[0]向左移动1位后的移位结果,相当于V<<1。由于M与{0,0,…,0,V[63],V[63],0,V[63],V[63]}中值为0的比特位进行异或时,异或结果仍是对应的M值,因此,可以仅对非0值的比特位进行异或电路的设计。即如图4所示,由于{0,0,…,0,V[63],V[63],0,V[63],V[63]}中仅在比特位为0、1、3、4处为非0值V[63],因此,可以仅在M[0]、M[1]、M[3]、M[4]处增加与V[63]的按位异或电路。可以看出,本申请
Figure BDA0003347995520000065
的硬件电路实现,仅依赖于输入参数V。
同理,基于上述定义,对MULxPOW(V,2,C)=MULx(MULxPOW(V,1,C),C)进行简化时,可以得到:
Figure BDA0003347995520000066
而根据MULx(V,C)函数的伪代码,可以知道,当参数V的最高位V[63]为1时,MULx(V,C)=(V<<1)xor C,当参数V的最高位V[63]不为1时,MULx(V,C)=(V<<1)。由于此时参数V为
Figure BDA0003347995520000067
则参数V的最高位V[63]为
Figure BDA0003347995520000068
因此,
Figure BDA0003347995520000069
可以简写为:
Figure BDA00033479955200000610
首先确定
Figure BDA00033479955200000611
的值,具体地:
由于
Figure BDA00033479955200000612
因此,
Figure BDA00033479955200000613
由于
Figure BDA00033479955200000614
而C的最高位C[63]为0,因此,
Figure BDA00033479955200000615
可以继续简写为:
Figure BDA00033479955200000616
由于某个值a与0进行异或时,异或结果均与值a相同,因此(V<<1)[63]xor 0的异或结果仍为(V<<1)[63]。从而可以看出,无论V[63]是否为1,
Figure BDA00033479955200000617
均为(V<<1)[63]。所以
Figure BDA00033479955200000618
可以直接简写为:
Figure BDA00033479955200000619
其中,(V<<1)[63]可以理解为将V左移1位后新的最高比特位的值,由于V<<1是将V的64位数据V[63]~V[0]向左移动1位,从而高位V[63]移出,新的最高比特位的值为V[62]。进而可以得到,
Figure BDA00033479955200000620
基于此,
Figure BDA00033479955200000621
可以继续简写为:
Figure BDA00033479955200000622
同理,由于0x1B的64位的二进制数的左半部分由59个0组成,因此,当
Figure BDA0003347995520000071
与0x1B进行按位异或计算时,左半部分59个0对应的输出,可以直接是
Figure BDA0003347995520000072
的左半部分的59位数值,而对于值为1的比特位,由于
Figure BDA0003347995520000073
与0x1B的异或操作,是在V[62]为1时才进行,因此,在
Figure BDA0003347995520000074
xor 0x1B时,V[62]为1,从而可以将0x1B的64位的二进制数中值为1的比特位,用V[62]代替1。从而,
Figure BDA0003347995520000075
可以继续简写为:
Figure BDA0003347995520000076
基于上述公式,可以看出,当V[62]不为1即为0时,
Figure BDA0003347995520000077
其可以相当于,
Figure BDA0003347995520000078
与64位均为0的数据进行异或,异或结果仍然为
Figure BDA0003347995520000079
因此当V[62]=0时,仍可以使
Figure BDA00033479955200000710
Figure BDA00033479955200000711
由于此时V[62]=0,因此可以相当于
Figure BDA00033479955200000712
Figure BDA00033479955200000713
从而可以相当于
Figure BDA00033479955200000714
因此,V[62]无论是否为1,
Figure BDA00033479955200000715
都可以直接简写为:
Figure BDA00033479955200000716
从而可以看出,
Figure BDA00033479955200000717
的结果,可以是通过将
Figure BDA00033479955200000718
移位1位后,将移位后的结果在指定比特位与V[62]进行按位异或运算后得到。由于前述已确定
Figure BDA00033479955200000719
能够直接根据输入参数V得到,而
Figure BDA00033479955200000720
除了
Figure BDA00033479955200000721
外,也只与V[62]有关,因此
Figure BDA00033479955200000722
实质上也能够直接根据输入参数V得到,也即得到了
Figure BDA00033479955200000723
与输入参数V的映射关系。
基于上述分析,在得到前述
Figure BDA00033479955200000724
的计算电路后,也可以实现
Figure BDA00033479955200000725
的计算电路设计。示例性地,请参阅图5,图5示出了一种
Figure BDA00033479955200000726
的按位计算电路示意图。如图5所示,
Figure BDA00033479955200000727
的计算电路包含了
Figure BDA00033479955200000728
大部分的计算电路外,还新增了4个与V[62]的按位异或电路。从图5可以看出,本申请
Figure BDA00033479955200000729
的硬件电路实现,也仅依赖于输入参数V。
具体地,M的64位数据M[63]~M[0]对应的是
Figure BDA00033479955200000730
的64位数据向左移动1位后的移位结果,如图5所示的虚线框中所展示的
Figure BDA00033479955200000731
的计算电路向左移动1位后的计算电路,相当于
Figure BDA00033479955200000732
由于M与{0,0,…,0,V[62],V[62],0,V[62],V[62]}中值为0的比特位进行异或时,异或结果仍是对应的M值,因此,可以仅对非0值的比特位进行异或电路的设计。即如图5所示,由于{0,0,…,0,V[62],V[62],0,V[62],V[62]}中仅在比特位为0、1、3、4处为非0值V[62],因此,可以仅在M[0]、M[1]、M[3]、M[4]处增加与V[62]的按位异或电路。
如此,从图5可以看出,本申请
Figure BDA00033479955200000733
的硬件电路实现,实质上是将V的64位数据V[63]~V[0]向左移动2位后,将移位后的结果在指定比特位与V[62]、V[63]进行按位异或运算后得到。也即
Figure BDA0003347995520000081
能够直接根据输入参数V得到,即得到了
Figure BDA0003347995520000082
与输入参数V的映射关系。
同理,基于上述定义,对MULxPOW(V,3,C)=MULx(MULxPOW(V,2,C),C)进行简化时,可以得到:
Figure BDA0003347995520000083
同样地,
Figure BDA0003347995520000084
可以简写为:
Figure BDA0003347995520000085
首先确定
Figure BDA0003347995520000086
的值,具体地:
Figure BDA0003347995520000087
由于C=0x1B,而C的最高位C[63]为0,因此,同样地,
Figure BDA0003347995520000088
可以继续简写为:
Figure BDA0003347995520000089
其中,
Figure BDA00033479955200000810
可以理解为将
Figure BDA00033479955200000811
左移1位后新的最高比特位的值,即原始最高位
Figure BDA00033479955200000812
移出,新的最高比特位的值为
Figure BDA00033479955200000813
进而可以得到:
Figure BDA00033479955200000814
由于C=0x1B,而C[62]为0,因此,
Figure BDA00033479955200000815
可以继续简写为:
Figure BDA00033479955200000816
其中,(V<<1)[62]可以理解为将V左移1位后新的次高位的值,即原始最高位V[63]移出,新的最高位的值为V[62],则新的次高位的值为V[61]。进而可以得到,
Figure BDA00033479955200000817
基于此,
Figure BDA00033479955200000818
可以继续简写为:
Figure BDA00033479955200000819
同理,由于0x1B的64位的二进制数中左半部分由59个0组成,因此,当
Figure BDA00033479955200000820
与0x1B进行按位异或计算时,左半部分59个0对应的输出,可以直接是
Figure BDA00033479955200000821
的左半部分的59位数值,而对于值为1的比特位,由于
Figure BDA00033479955200000822
与0x1B的异或操作,是在V[61]为1时才进行,因此,在
Figure BDA00033479955200000823
时,V[61]为1,从而可以将0x1B的64位的二进制数中值为1的比特位,用V[61]代替1。从而,
Figure BDA00033479955200000824
可以继续简写为:
Figure BDA0003347995520000091
同理,V[61]无论是否为1,
Figure BDA0003347995520000092
都可以直接简写为:
Figure BDA0003347995520000093
从而可以看出,
Figure BDA0003347995520000094
的结果,可以是通过将
Figure BDA0003347995520000095
移位1位后,将移位后的结果在指定比特位与V[61]进行按位异或运算后得到。由于前述已确定
Figure BDA0003347995520000096
能够直接根据输入参数V得到,而
Figure BDA0003347995520000097
除了
Figure BDA0003347995520000098
外,也只与V[61]有关,因此
Figure BDA0003347995520000099
实质上也能够直接根据输入参数V得到,也即得到了
Figure BDA00033479955200000910
与输入参数V的映射关系。
基于上述分析,在得到前述
Figure BDA00033479955200000911
的计算电路后,也可以实现
Figure BDA00033479955200000912
的计算电路设计。示例性地,请参阅图6,图6示出了一种
Figure BDA00033479955200000913
的按位计算电路示意图。如图6所示,
Figure BDA00033479955200000914
的计算电路包含了
Figure BDA00033479955200000915
大部分的计算电路外,还新增了4个与V[61]的按位异或电路。从图5可以看出,本申请
Figure BDA00033479955200000916
的硬件电路实现,也仅依赖于输入参数V。
具体地,M的64位数据M[63]~M[0]对应的是
Figure BDA00033479955200000917
的64位数据向左移动1位后的移位结果,如图6所示的虚线框中所展示的
Figure BDA00033479955200000918
的计算电路向左移动1位后的计算电路,相当于
Figure BDA00033479955200000919
由于M与{0,0,…,0,V[61],V[61],0,V[61],V[61]}中值为0的比特位进行异或时,异或结果仍是对应的M值,因此,可以仅对非0值的比特位进行异或电路的设计。即如图6所示,由于{0,0,…,0,V[61],V[61],0,V[61],V[61]}中仅在比特位为0、1、3、4处为非0值V[61],因此,可以仅在M[0]、M[1]、M[3]、M[4]处增加与V[61]的按位异或电路。
如此,从图6可以看出,本申请
Figure BDA00033479955200000920
的硬件电路实现,实质上是将V的64位数据V[63]~V[0]向左移动3位后,将移位后的结果在指定比特位与V[61]、V[62]、V[63]进行按位异或运算后得到。也即
Figure BDA00033479955200000921
能够直接根据输入参数V得到,即得到了
Figure BDA00033479955200000922
与输入参数V的映射关系。
以此类推,对MULxPOW(V,60,C)=MULx(MULxPOW(V,59,C),C)进行简化时,可以得到:
Figure BDA00033479955200000923
其中,
Figure BDA00033479955200000924
Figure BDA00033479955200000925
Figure BDA0003347995520000101
由于
Figure BDA0003347995520000102
而C[5]为0,因此,
Figure BDA0003347995520000103
可以继续简写为:
Figure BDA0003347995520000104
所以,
Figure BDA0003347995520000105
同理,由于0x1B的64位的二进制数中左半部分由59个0组成,因此,当
Figure BDA0003347995520000106
与0x1B进行按位异或计算时,左半部分59个0对应的输出,可以直接是
Figure BDA0003347995520000107
的左半部分的59位数值,而对于值为1的比特位,由于
Figure BDA0003347995520000108
与0x1B的异或操作,是在V[4]为1时才进行,因此,在
Figure BDA0003347995520000109
时,V[4]为1,从而可以将0x1B的64位的二进制数中值为1的比特位,用V[4]代替1。从而,
Figure BDA00033479955200001010
可以继续简写为:
Figure BDA00033479955200001011
同理,V[4]无论是否为1,
Figure BDA00033479955200001012
都可以直接简写为:
Figure BDA00033479955200001013
从而可以看出,
Figure BDA00033479955200001014
的结果,可以是通过将
Figure BDA00033479955200001015
移位1位后,将移位后的结果在指定比特位与V[4]进行按位异或运算后得到。由于按照前述推导,可确定
Figure BDA00033479955200001016
能够直接根据输入参数V得到,而
Figure BDA00033479955200001017
除了
Figure BDA00033479955200001018
外,也只与V[4]有关,因此
Figure BDA00033479955200001019
实质上也能够直接根据输入参数V得到,也即得到了
Figure BDA00033479955200001020
与输入参数V的映射关系。
同理,也可以实现
Figure BDA00033479955200001021
的计算电路设计。示例性地,请参阅图7,图7示出了一种
Figure BDA00033479955200001022
的按位计算电路示意图。具体地,M的64位数据M[63]~M[0]对应的是
Figure BDA00033479955200001023
的64位数据向左移动1位后的移位结果,如图7所示的虚线框中所展示的
Figure BDA00033479955200001024
的计算电路向左移动1位后的计算电路,相当于
Figure BDA00033479955200001025
同理由于{0,0,…,0,V[4],V[4],0,V[4],V[4]}中仅在比特位为0、1、3、4处为非0值V[4],因此,可以仅在M[0]、M[1]、M[3]、M[4]处增加与V[4]的按位异或电路。
同理,从图7可以看出,本申请
Figure BDA00033479955200001026
的硬件电路实现,实质上也是将V的64位数据V[63]~V[0]向左移动60位后,将移位后的结果在指定比特位与V[4]…V[61]、V[62]、V[63]进行按位异或运算后得到。也即
Figure BDA00033479955200001027
能够直接根据输入参数V得到,即得到了
Figure BDA00033479955200001028
与输入参数V的映射关系。
需要说明的是,由于
Figure BDA00033479955200001029
而基于前述分析,
Figure BDA0003347995520000111
可以看出它的计算最终依赖于C[5]=0,从而
Figure BDA0003347995520000112
才可以继续简写为:
Figure BDA0003347995520000113
从而
Figure BDA0003347995520000114
由于C[5]是参数C中左边59个0中最靠右的一个0对应的位置,即C[4]的值已经为1。因此,
Figure BDA0003347995520000115
是最后一个可以通过上述规律计算出的嵌套函数。
基于上述
Figure BDA0003347995520000116
各自与输入参数V的映射关系,发明人经过研究进一步发现,每次与移位后的结果进行异或的V值为输入参数V左移时移出的值,每个异或的V值,均与参数C=0x1B的64位的二进制数中值为1所在的比特位0、1、3、4对应。
具体地,基于前述分析并结合图4~图7可以看出:
Figure BDA0003347995520000117
进而,发明人经过研究发现,对于
Figure BDA0003347995520000118
的结果,可以是将输入参数V左移i位后,将V移位后的结果M中的M[0+j]、M[1+j]、M[3+j]、M[4+j]与V[N-i+j]进行按位异或运算得到。其中,j为0~i-1之间的整数。其中,N为V参数的位数64,M[0+j]、M[1+j]、M[3+j]、M[4+j]中涉及到的0、1、3、4为参数C=0x1B的N位的二进制数中值为1所在的比特位。从而得到了输入V和函数输出的映射关系的确定方式。并基于此,发明人提出了一种数据处理方法、电路、芯片、电子设备及存储介质,以基于参数C为常量且其大部分比特为0的特性,来确定输入V和函数输出的映射关系。
因此,对于相关技术中需要先计算上一个i的输出后才能计算下一个i的输出的MULxPOW(V,i,C)函数,可以直接根据输入参数V计算得到,无需依赖上一级i的输出,从而可以改变相关技术中的串行计算方式,而是采用并行计算方式,使得可以在一个时钟周期里同时计算出MULxPOW(V,i,C)每个i对应的输出,提高了***计算的吞吐量。
请参阅图8,图8示出了本申请一个实施例提供的数据处理方法的流程示意图。在具体的实施例中,该数据处理方法可应用于如图13所示的数据处理装置800以及配置有所述数据处理装置800的电子设备(图15)。下面将针对图8所示的流程进行详细的阐述,所示数据处理方法具体可以包括以下步骤:
步骤S110:确定第一数据序列左移i位后得到的第二数据序列。
基于前述推理,可以知道,对于
Figure BDA0003347995520000121
的结果,需要先将参数V左移i位后,将V移位后的结果M中的M[0+j]、M[1+j]、M[3+j]、M[4+j]与V[64-i+j]进行按位异或运算得到。因此,本申请在确定参数V和
Figure BDA0003347995520000122
函数输出的映射关系时,需要先确定确定第一数据序列左移i位后得到的第二数据序列。
其中,所述第一数据序列为MULxPOW(V,i,C)函数中参数V的N位二进制序列V[0]~V[N-1],所述第二数据序列为所述N位二进制序列V[0]~V[N-1]移位后得到的新的N位二进制序列M[0]~M[N-1],所述i为0~N-1之间的整数。
在一些实施例中,参数V可是以二进制数表示的值,也可以是以其他进制数表示的值,当参数V以其他进制数表示时(如十六进制),可以将其转换为N位的二进制序列,从而得到上述第一数据序列。作为一种具体实施方式,N可以是64,可以基于参数V,得到64位的二进制序列,从而第一数据序列可以是64位的以二进制值0或1分布的二进制序列V[0]~V[63]。然后可以将第一数据序列V[0]~V[63]左移i位后,得到的新的64位二进制序列M[0]~M[63],作为第二数据序列。
步骤S120:当1≤i≤N-Z时,将所述第一数据序列中的第一数据V[N-i+j]与所述第二数据序列中的第二数据M[k+j]进行异或运算,得到所述第二数据M[k+j]对应的异或结果。
其中,所述j为0~i-1之间的整数,所述k为所述MULxPOW(V,i,C)函数中参数C的N位二进制序列中二进制1值所在的比特位,所述k的个数为至少一个,所述Z为所述k的最高比特位。
基于前述推理,可以知道,对于
Figure BDA0003347995520000123
的结果,在将参数V左移i位后,需要将V移位后的结果M中的M[0+j]、M[1+j]、M[3+j]、M[4+j]与V[N-i+j]进行按位异或运算得到。且M[0+j]、M[1+j]、M[3+j]、M[4+j]中涉及到的0、1、3、4为参数C=0x1B的N位的二进制数中值为1所在的比特位。因此,本申请在确定第一数据序列左移i位后得到的第二数据序列后,可以确定MULxPOW(V,i,C)函数中参数C的N位二进制序列中二进制1值所在的比特位,以根据该比特位确定第二数据序列中待进行按位异或的M值。其中,MULxPOW(V,i,C)函数中的参数C为常量。
在一些实施例中,MULxPOW(V,i,C)函数中参数C可是以二进制数表示的值,从而可以直接根据参数C,确定其N位二进制序列中二进制1值所在的比特位k。参数C也可以是以其他进制数表示的值,当参数C以其他进制数表示时(如十六进制),可以将其转换为N位的二进制序列后,再确定该N位二进制序列中二进制1值所在的比特位k。其中,k的个数为至少一个。
需要说明的是,基于前述分析,
Figure BDA0003347995520000124
之所以是最后一个可以通过前述规律计算出的嵌套函数,是因为C[5]是参数C=0x1B中左边59个0中最靠右的一个0对应的位置,即C[4]的值已经为1。因此,在本申请实施例中,可以先确定MULxPOW(V,i,C)函数中参数C的N位二进制序列中二进制1值所在的最高比特位Z,从而可以确定通过前述规律所实现的最大嵌套函数MULxPOW(V,i,C)即
Figure BDA0003347995520000125
其中,i=N-Z。在一些实施例中,由于已经确定参数C的N位二进制序列中二进制1值所在的比特位k,因此,可以直接从比特位k中确定最高比特位Z,从而可以确定通过前述规律所实现的最大嵌套函数MULxPOW(V,i,C)即
Figure BDA0003347995520000126
其中,i=N-Z。也就是说,当1≤i≤N-Z时,可以按照前述规律,将所述第一数据序列中的第一数据V[N-i+j]与所述第二数据序列中的第二数据M[k+j]进行异或运算,得到所述第二数据M[k+j]对应的异或结果。
作为一种具体实施方式,N可以是64,参数C可以是常量0x1B,由于0x1B的64位的二进制数为0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000001 1011,因此,可以确定其中二进制1值所在的比特位为第0比特位、第1比特位、第3比特位、第4比特位。也即上述比特位k为0、1、3、4。其中,最高比特位Z为4。从而当1≤i≤N-Z时,上述将所述第一数据序列中的第一数据V[N-i+j]与所述第二数据序列中的第二数据M[k+j]进行异或运算,得到所述第二数据M[k+j]对应的异或结果,可以是当1≤i≤60时,将所述第一数据序列中的第一数据V[N-i+j]与所述第二数据序列中的第二数据M[0+j]、M[1+j]、M[3+j]、M[4+j]进行异或运算,得到所述第二数据M[0+j]、M[1+j]、M[3+j]、M[4+j]各自对应的异或结果。
步骤S130:根据所述第二数据M[k+j]对应的异或结果,对所述第二数据序列中的所述第二数据M[k+j]进行对应更新,得到N位的第三数据序列作为第i输出结果。
其中,所述第i输出结果用于表征所述MULxPOW(V,i,C)函数即
Figure BDA0003347995520000131
函数的输出结果。
可以理解的是,由于第二数据序列中的第二数据M[k+j]需要与第一数据V[N-i+j]进行异或运算,因此,可以获取每个第二数据与第一数据异或运算后的最终异或结果,并与第二数据序列中的其他未参与异或运算的的数据重新拼接,得到新的N位的第三数据序列,该结果即为MULxPOW(V,i,C)函数即
Figure BDA0003347995520000132
函数的输出结果。从而MULxPOW(V,i,C)函数可以仅根据输入参数V计算得到,无需依赖上一级i的输出。
步骤S140:基于所述第i输出结果,生成信息认证码,所述信息认证码用于校验信息的完整性。
在本申请实施例中,在得到MULxPOW(V,i,C)函数的第i输出结果后,可以根据MULxPOW函数的各个第i输出结果,生成信息认证码,所述信息认证码用于校验信息的完整性。
在一些实施例中,当信息认证码是根据UIA2完整性保护算法生成时,可以是具体将MULxPOW函数的各个第i输出结果带入到MUL(V,P,C)函数中,以基于MUL(V,P,C)函数,确定EVAL值,然后基于EVAL值,生成信息认证码MAC。例如,前述UIA2完整性保护算法计算消息认证码MAC的过程中的第十步~第十二步。
可以理解的是,V,P,C均为N位(如64位)的数据时,根据前述MUL(V,P,C)函数展开后伪代码,可以看出需要计算MULxPOW(V,i,C),i分别取0~N-1(如0~63)之间的整数时各自对应的结果。而相关技术由于是串行计算方式,即需要先计算上一个i的输出后才能计算下一个i的输出,导致需要比较多的时钟周期来计算,降低了***计算的吞吐量。因此,在本申请实施例中,对于MULxPOW(V,i,C)中1≤i≤N-Z的每个i对应的输出,可以直接根据输入参数V计算得到,无需依赖上一级i的输出,从而可以改变相关技术中的串行计算方式,而是采用并行计算方式,使得可以在一个时钟周期里同时计算出MULxPOW(V,i,C)中1≤i≤N-Z的每个i对应的输出,提高了***计算的吞吐量。
在一些实施例中,由于MULxPOW(V,0,C)的输出结果直接就是参数V,因此,对于i=0的情况下,MULxPOW(V,0,C)实质上也能仅根据参数V直接计算得到。从而对应0≤i≤N-Z时,MULxPOW(V,i,C)的硬件电路实现可以是并行计算的方式,而当i>N-Z时,可以采用原有的串行计算方式。具体地,可以直接根据第i=N-Z输出结果,采用相关技术中的串行计算方式,计算下一级的第i=N-Z+1输出结果,然后依次计算到第i=N-1输出结果。从而实现将相关技术中的整体串行计算方式改进为局部串行计算,其余都采用并行计算方式,进而提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
本申请实施例提供的数据处理方法,通过确定第一数据序列左移i位后得到的第二数据序列,其中,第一数据序列为MULxPOW(V,i,C)函数中参数V的N位二进制序列V[0]~V[N-1],第二数据序列为N位二进制序列V[0]~V[N-1]移位后得到的新的N位二进制序列M[0]~M[N-1],i为0~N-1之间的整数,以在1≤i≤N-Z时,将第一数据序列中的第一数据V[N-i+j]与第二数据序列中的第二数据M[k+j]进行异或运算,得到第二数据M[k+j]对应的异或结果,其中,j为0~i-1之间的整数,k为MULxPOW(V,i,C)函数中参数C的N位二进制序列中二进制1值所在的比特位,k的个数为至少一个,Z为所述k的最高比特位,从而根据第二数据M[k+j]对应的异或结果,对第二数据序列中的第二数据M[k+j]进行对应更新,得到N位的第三数据序列作为第i输出结果,该第i输出结果用于表征MULxPOW(V,i,C)函数的输出结果,然而基于第i输出结果,生成信息认证码,所述信息认证码用于校验信息的完整性。由此,本申请中MULxPOW(V,i,C)函数的每一级的计算可以只依赖于输入V,无需依赖上一级的输出,使得可以将原有的MULxPOW(V,i,C)函数的串行计算方式,改变为并行计算方式,提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
请参阅图9,图9示出了本申请另一个实施例提供的数据处理方法的流程示意图。下面将针对图9所示的流程进行详细的阐述,具体是对前述实施例中的N和C进行限定:所述N=64,所述i为0~63之间的整数,所述参数C=0x0000 0000 0000 001B。所示数据处理方法具体可以包括以下步骤:
步骤S210:确定第一数据序列左移i位后得到的第二数据序列。
在本申请实施例中,步骤S210可以参阅前述实施例的描述,此处不再赘述。
步骤S220:当1≤i≤60时,将所述第一数据序列中的第一数据V[N-i+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]各自对应的异或结果。
可以理解的是,当N为64,参数C为常量0x1B时,由于0x1B的64位的二进制数为00000000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001 1011,因此,前述的二进制1值所在的比特位k为0、1、3、4。其中,最高比特位Z为4。从而第二数据序列中的需要进行异或运算的第二数据M[k+j]为第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]。
在一些实施例中,当i=1时,j=0,此时相当于获取MULxPOW(V,1,C)函数即
Figure BDA0003347995520000141
的输出结果,从而第一数据序列中需要进行异或运算的第一数据V[N-i+j]只有一个,即第一数据V[63],第二数据序列中的需要进行异或运算的第二数据M[k+j]为第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]。此时,步骤S220可以具体包括:
将所述第一数据V[63]分别与所述第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]进行异或运算,得到所述第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]各自对应的异或结果。
在一些实施例中,第一数据序列中需要进行异或运算的第一数据V[N-i+j]可以为多个,此时,步骤S220可以具体包括:
根据每个所述第一数据V[N-i+j]对应的所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],将同一第二数据对应的所有第一数据与所述同一第二数据进行异或运算,得到每个第二数据对应的异或结果。
可以理解的是,由于每个所述第一数据V[N-i+j],都有其需要对应异或运算的所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],而不同第一数据可能会与相同的第二数据进行异或运算,因此,可以先根据每个所述第一数据V[N-i+j]对应的所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],确定与同一第二数据进行异或运算的所有第一数据,从而可以将同一第二数据对应的所有第一数据与所述同一第二数据进行多项的异或运算,得到每个第二数据对应的异或结果。
作为一种实施方式,当i=2时,j为0~1之间的整数,此时相当于获取MULxPOW(V,2,C)函数即
Figure BDA0003347995520000142
的输出结果,从而第一数据序列中需要进行异或运算的第一数据V[N-i+j]包括第一数据V[62]、第一数据V[63],第二数据序列中的需要进行异或运算的所述第二数据M[k+j]包括与所述第一数据V[62]对应的第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及与所述第一数据V[63]对应的第二数据M[1]、第二数据M[2]、第二数据M[4]、第二数据M[5]。
可以看出,与第二数据M[0]进行异或的第一数据仅有V[62],与第二数据M[1]进行异或的第一数据有V[62]和V[63],与第二数据M[2]进行异或的第一数据仅有V[63],与第二数据M[3]进行异或的第一数据仅有V[62],与第二数据M[4]进行异或的第一数据有V[62]和V[63],与第二数据M[5]进行异或的第一数据仅有V[63],因此结合图5,步骤S220可以具体包括:
将所述第二数据M[0]对应的所述第一数据V[62],与所述第二数据M[0]进行异或运算,得到所述第二数据M[0]对应的异或结果;
将所述第二数据M[1]对应的所述第一数据V[62]和所述第一数据V[63],与所述第二数据M[1]进行异或运算,得到所述第二数据M[1]对应的异或结果;
将所述第二数据M[2]对应的所述第一数据V[63],与所述第二数据M[2]进行异或运算,得到所述第二数据M[2]对应的异或结果;
将所述第二数据M[3]对应的所述第一数据V[62],与所述第二数据M[3]进行异或运算,得到所述第二数据M[3]对应的异或结果;
将所述第二数据M[4]对应的所述第一数据V[62]和所述第一数据V[63],与所述第二数据M[4]进行异或运算,得到所述第二数据M[4]对应的异或结果;
将所述第二数据M[5]对应的所述第一数据V[63],与所述第二数据M[5]进行异或运算,得到所述第二数据M[5]对应的异或结果。
步骤S230:根据所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]各自对应的异或结果,对所述第二数据序列中的所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行对应更新,得到64位的第三数据序列作为第i输出结果。
所述第i输出结果用于表征所述MULxPOW(V,i,C)函数的输出结果。
可以理解的是,当N为64,参数C为常量0x1B时,由于第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]需要与第一数据V[N-i+j]进行异或运算,因此,可以获取每个第二数据与第一数据异或运算后的最终异或结果,并与第二数据序列中的其他未参与异或运算的的数据重新拼接,得到新的N位的第三数据序列,该结果即为MULxPOW(V,i,C)函数即
Figure BDA0003347995520000151
函数的输出结果。从而MULxPOW(V,i,C)函数可以仅根据输入参数V计算得到,无需依赖上一级i的输出。
步骤S240:基于所述第i输出结果,生成信息认证码,所述信息认证码用于校验信息的完整性。
可以理解的是,V,P,C均为64位的数据时,根据前述MUL(V,P,C)函数展开后伪代码,可以看出需要计算MULxPOW(V,i,C),i分别取0~63之间的整数时各自对应的结果。而相关技术由于是串行计算方式,即需要先计算上一个i的输出后才能计算下一个i的输出,导致需要比较多的时钟周期来计算,降低了***计算的吞吐量。因此,在本申请实施例中,对于MULxPOW(V,i,C)中1≤i≤60的每个i对应的输出,可以直接根据输入参数V计算得到,无需依赖上一级i的输出,从而可以改变相关技术中的串行计算方式,而是采用并行计算方式,使得可以在一个时钟周期里同时计算出MULxPOW(V,i,C)中1≤i≤60的每个i对应的输出,提高了***计算的吞吐量。
在一些实施例中,由于MULxPOW(V,0,C)的输出结果直接就是参数V,因此,对于i=0的情况下,MULxPOW(V,0,C)实质上也能仅根据参数V直接计算得到。从而对应0≤i≤60时,MULxPOW(V,i,C)的硬件电路实现可以是并行计算的方式,而当i>60时,可以采用原有的串行计算方式。具体地,可以直接根据第i=60输出结果,采用相关技术中的串行计算方式,计算下一级的第i=61输出结果,然后依次计算到第i=63输出结果。从而实现将相关技术中的整体串行计算方式改进为局部串行计算,其余都采用并行计算方式,进而提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
本申请实施例提供的数据处理方法,N=64,MULxPOW(V,i,C)函数中参数C=0x0000 0000 0000 001B,k为0、1、3、4,Z为4,从而可以通过确定第一数据序列左移i位后得到的第二数据序列,其中,第一数据序列为MULxPOW(V,i,C)函数中参数V的64位二进制序列V[0]~V[63],第二数据序列为64位二进制序列V[0]~V[63]移位后得到的新的64位二进制序列M[0]~M[63],i为0~63之间的整数,以在1≤i≤60时,将第一数据序列中的第一数据V[64-i+j]与第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]各自对应的异或结果,其中,j为0~i-1之间的整数,从而根据第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]各自对应的异或结果,对第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行对应更新,得到64位的第三数据序列作为第i输出结果,该第i输出结果用于表征MULxPOW(V,i,C)函数的输出结果,然而基于第i输出结果,生成信息认证码,所述信息认证码用于校验信息的完整性。由此,本申请中MULxPOW(V,i,C)函数的每一级的计算可以只依赖于输入V,无需依赖上一级的输出,使得可以将原有的MULxPOW(V,i,C)函数的串行计算方式,改变为并行计算方式,提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
请参阅图10,图10示出了本申请又一个实施例提供的数据处理方法的流程示意图。下面将针对图10所示的流程进行详细的阐述,在基于前述实施例的基础上,也能实现i=61~64的并行计算。
所示数据处理方法具体可以包括以下步骤:
步骤S310:确定第一数据序列左移i位后得到的第二数据序列。
步骤S320:当1≤i≤60时,将所述第一数据序列中的第一数据V[N-i+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]各自对应的异或结果。
步骤S330:根据所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]各自对应的异或结果,对所述第二数据序列中的所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行对应更新,得到64位的第三数据序列作为第i输出结果。
步骤S340:当i=61时,将所述第一数据序列中的第一数据V[3+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]进行异或运算,得到每个第二数据对应的异或结果。
需要说明的是,当N为64,参数C为常量0x1B时,基于前述分析,
Figure BDA0003347995520000161
之所以是最后一个可以通过前述规律计算出的嵌套函数,是因为它的计算最终依赖于C[5],而C[5]是参数C=0x1B中左边59个0中最靠右的一个0对应的位置,即C[4]的值已经为1。而发明人经过研究进一步发现,在
Figure BDA0003347995520000162
之后的嵌套函数的计算,
Figure BDA0003347995520000163
依赖于C[i](2≤i<5),虽然计算比较复杂,但仍可以确定出输入V和函数输出的映射关系。
下面先对
Figure BDA0003347995520000164
的输入V和函数输出的映射关系的确定过程进行描述。
具体地,对MULxPOW(V,61,C)=MULx(MULxPOW(V,60,C),C)进行简化时,可以得到:
Figure BDA0003347995520000165
其中,
Figure BDA0003347995520000166
Figure BDA0003347995520000167
由于
Figure BDA0003347995520000168
而C[4]为1,因此,
Figure BDA0003347995520000169
可以继续简写为:
Figure BDA0003347995520000171
基于上述公式,可以看出,由于(V<<1)[4]与1的异或操作,是在V[63]为1时才进行,因此,在(V<<1)[4]xor 1时,V[63]为1,从而可以用V[63]代替1与(V<<1)[4]进行异或。从而
Figure BDA0003347995520000172
可以继续简写为:
Figure BDA0003347995520000173
又由于V[63]不为1即为0时,
Figure BDA0003347995520000174
其可以相当于,(V<<1)[4]与0进行异或,异或结果仍然为(V<<1)[4]。因此当V[63]=0时,仍可以使
Figure BDA0003347995520000175
由于此时V[63]=0,因此可以相当于
Figure BDA0003347995520000176
从而可以相当于
Figure BDA0003347995520000177
因此,V[63]无论是否为1,
Figure BDA0003347995520000178
都可以直接简写为:
Figure BDA0003347995520000179
所以,
Figure BDA00033479955200001710
同理,由于0x1B的64位的二进制数中左半部分由59个0组成,因此,当
Figure BDA00033479955200001711
与0x1B进行按位异或计算时,左半部分59个0对应的输出,可以直接是
Figure BDA00033479955200001712
的左半部分的59位数值,而对于值为1的比特位,由于
Figure BDA00033479955200001713
与0x1B的异或操作,是在V[3]xor V[63]为1时才进行,因此,在
Figure BDA00033479955200001714
Figure BDA00033479955200001715
时,V[3]xor V[63]为1,从而可以将0x1B的64位的二进制数中值为1的比特位,用V[3]xor V[63]代替1。从而,
Figure BDA00033479955200001716
可以继续简写为:
Figure BDA00033479955200001717
同理,基于上述公式,可以看出,V[3]xor V[63]无论是否为1,
Figure BDA00033479955200001718
都可以直接简写为:
Figure BDA00033479955200001719
从而可以看出,
Figure BDA00033479955200001720
的结果,可以是通过将
Figure BDA00033479955200001721
移位1位后,将移位后的结果在指定比特位与V[3]和V[63]进行按位异或运算后得到。由于按照前述推导,可确定
Figure BDA00033479955200001722
能够直接根据输入参数V得到,而
Figure BDA00033479955200001723
除了
Figure BDA00033479955200001724
外,也只与V[3]和V[63]有关,因此
Figure BDA00033479955200001725
实质上也能够直接根据输入参数V得到,也即得到了
Figure BDA00033479955200001726
与输入参数V的映射关系。
同理,也可以实现
Figure BDA0003347995520000181
的计算电路设计。示例性地,请参阅图11,图11示出了一种
Figure BDA0003347995520000182
的按位计算电路示意图。具体地,M的64位数据M[63]~M[0]对应的是
Figure BDA0003347995520000183
的64位数据向左移动1位后的移位结果,如图11所示的虚线框中所展示的
Figure BDA0003347995520000184
的计算电路向左移动1位后的计算电路,相当于
Figure BDA0003347995520000185
同理由于{0,0,…,0,V[3]xor V[63],V[3]xor V[63],0,V[3]xor V[63],V[3]xor V[63]}中仅在比特位为0、1、3、4处为非0值V[3]xor V[63],因此,可以仅在M[0]、M[1]、M[3]、M[4]处增加与V[3]和V[63]的按位异或电路。
同理,从图11可以看出,本申请
Figure BDA0003347995520000186
的硬件电路实现,实质上也是将V的64位数据V[63]~V[0]向左移动61位后,将移位后的结果在指定比特位与V[3]、V[4]…V[61]、V[62]、V[63]进行按位异或运算后得到。也即
Figure BDA0003347995520000187
能够直接根据输入参数V得到,即得到了
Figure BDA0003347995520000188
与输入参数V的映射关系。
发明人经过研究进一步发现,对于
Figure BDA0003347995520000189
的结果,大部分是遵循前述
Figure BDA00033479955200001810
的映射规律,仅有小部分是特殊规律,因此,可以仅针对这部分特殊规律部分的映射进行确定。具体地,基于前述分析并结合图11可以看出:
Figure BDA00033479955200001811
也即,对于
Figure BDA00033479955200001812
的结果,V[3]~V[62]与移位后的结果M中进行异或的M值的规律,是遵循前述
Figure BDA00033479955200001813
的映射规律,即将输入参数V左移i位后,将V移位后的结果M中的M[0+j]、M[1+j]、M[3+j]、M[4+j]与V[N-i+j]即V[3+j]进行按位异或运算。仅有V[63]比较特殊,其需与移位后的结果M中的M[0]、M[1]、M[3]、M[4]、M[60]、M[61]、M[63]与进行异或。
基于前述分析,可以得到,当i=61时,此时相当于获取MULxPOW(V,61,C)函数即
Figure BDA00033479955200001814
的输出结果,第一数据序列中需要进行异或运算的第一数据包括第一数据V[3+j]和第一数据V[63],第二数据序列中的需要进行异或运算的所述第二数据包括与所述第一数据V[3+j]对应的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及与所述第一数据V[63]对应的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]。其中,j为0~59之间的整数。
因此,在本申请实施例中,当i=61时,在确定输入V和函数输出的映射关系时,可以将所述第一数据序列中的第一数据V[3+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]进行异或运算,得到每个第二数据对应的异或结果。
步骤S350:根据所述每个第二数据对应的异或结果,对所述第二数据序列中的所述每个第二数据进行对应更新,得到N位的第三数据序列作为第61输出结果,所述第61输出结果用于表征所述MULxPOW(V,61,C)函数的输出结果。
可以理解的是,当N为64,参数C为常量0x1B时,对于i=61的情况,由于第二数据序列中的部分第二数据需要与第一数据进行异或运算,因此,可以获取每个第二数据与第一数据异或运算后的最终异或结果,并与第二数据序列中的其他未参与异或运算的的数据重新拼接,得到新的N位的第三数据序列,该结果即为MULxPOW(V,61,C)函数即
Figure BDA0003347995520000191
函数的输出结果。从而MULxPOW(V,61,C)函数也可以仅根据输入参数V计算得到,无需依赖上一级i=60的输出。
步骤S360:当i=62时,将所述第一数据序列中的第一数据V[2+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]进行异或运算,得到每个第二数据对应的异或结果。
同理,也可以确认
Figure BDA0003347995520000192
的输入V和函数输出的映射关系。下面先对
Figure BDA0003347995520000193
的输入V和函数输出的映射关系的确定过程进行描述。
具体地,对MULxPOW(V,62,C)=MULx(MULxPOW(V,61,C),C)进行简化时,可以得到:
Figure BDA0003347995520000194
其中,
Figure BDA0003347995520000195
Figure BDA0003347995520000196
所以,
Figure BDA0003347995520000197
可以简写为:
Figure BDA0003347995520000198
从而可以看出,
Figure BDA0003347995520000199
的结果,可以是通过将
Figure BDA00033479955200001910
移位1位后,将移位后的结果在指定比特位与V[2]、V[62]和V[63]进行按位异或运算后得到。由于按照前述推导,可确定
Figure BDA00033479955200001911
能够直接根据输入参数V得到,而
Figure BDA00033479955200001912
除了
Figure BDA00033479955200001913
外,也只与V[3]、V[62]和V[63]有关,因此
Figure BDA00033479955200001914
实质上也能够直接根据输入参数V得到,也即得到了
Figure BDA0003347995520000201
与输入参数V的映射关系。
同理,也可以实现
Figure BDA0003347995520000202
的计算电路设计。示例性地,请参阅图12,图12示出了一种
Figure BDA0003347995520000203
的按位计算电路示意图。具体地,M的64位数据M[63]~M[0]对应的是
Figure BDA0003347995520000204
的64位数据向左移动1位后的移位结果,如图12所示的虚线框中所展示的
Figure BDA0003347995520000205
的计算电路向左移动1位后的计算电路,相当于
Figure BDA0003347995520000206
由于{0,0,…,0,V[2]xorV[63]xorV[62],V[2]xorV[63]xorV[62],0,V[2]xorV[63]xorV[62],V[2]xorV[63]xorV[62]}中仅在比特位为0、1、3、4处为非0值V[2]xorV[63]xorV[62],因此,可仅在M[0]、M[1]、M[3]、M[4]处增加与V[2]、V[62]和V[63]的按位异或电路。
同理,从图12可以看出,本申请
Figure BDA0003347995520000207
的硬件电路实现,实质上也是将V的64位数据V[63]~V[0]向左移动62位后,将移位后的结果在指定比特位与V[2]、V[3]…V[61]、V[62]、V[63]进行按位异或运算后得到。也即
Figure BDA0003347995520000208
能够直接根据输入参数V得到,即得到了
Figure BDA0003347995520000209
与输入参数V的映射关系。
同理,结合图12可以看出,对于
Figure BDA00033479955200002010
的结果,V[2]~V[61]与移位后的结果M中进行异或的M值的规律,是遵循前述
Figure BDA00033479955200002011
的映射规律,即将输入参数V左移i位后,将V移位后的结果M中的M[0+j]、M[1+j]、M[3+j]、M[4+j]与V[N-i+j]即V[2+j]进行按位异或运算。只有V[62]、V[63]比较特殊,V[62]需与移位后的结果M中的M[0]、M[1]、M[3]、M[4]、M[60]、M[61]、M[63]与进行异或,V[63]需与移位后的结果M中的M[0]、M[1]、M[2]、M[3]、M[4]、M[5]、M[61]、M[62]与进行异或。且M[1]和M[4]均需与V[63]异或两次。
基于前述分析,可以得到,当i=62时,此时相当于获取MULxPOW(V,62,C)函数即
Figure BDA00033479955200002012
的输出结果,第一数据序列中需要进行异或运算的第一数据包括第一数据V[2+j]、第一数据V[62]和第一数据V[63],第二数据序列中的需要进行异或运算的所述第二数据包括与所述第一数据V[2+j]对应的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及与所述第一数据V[62]对应的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及与所述第一数据V[63]对应的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]。其中,第二数据M[1]和第二数据M[4]均需与第一数据V[63]异或两次,j为0~59之间的整数。
因此,在本申请实施例中,当i=62时,在确定输入V和函数输出的映射关系时,可以将所述第一数据序列中的第一数据V[2+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]进行异或运算,得到每个第二数据对应的异或结果。其中,第二数据M[1]和第二数据M[4]均需与第一数据V[63]进行两次异或运算,j为0~59之间的整数。
步骤S370:根据所述每个第二数据对应的异或结果,对所述第二数据序列中的所述每个第二数据进行对应更新,得到N位的第三数据序列作为第62输出结果,所述第62输出结果用于表征所述MULxPOW(V,62,C)函数的输出结果。
步骤S380:当i=63时,将所述第一数据序列中的第一数据V[1+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[61]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]进行异或运算,得到每个第二数据对应的异或结果。
同理,也可以确认
Figure BDA0003347995520000211
的输入V和函数输出的映射关系。下面先对
Figure BDA0003347995520000212
的输入V和函数输出的映射关系的确定过程进行描述。
具体地,对MULxPOW(V,63,C)=MULx(MULxPOW(V,62,C),C)进行简化时,可以得到:
Figure BDA0003347995520000213
其中,
Figure BDA0003347995520000214
Figure BDA0003347995520000215
所以,
Figure BDA0003347995520000216
可以简写为:
Figure BDA0003347995520000217
从而可以看出,
Figure BDA0003347995520000218
的结果,可以是通过将
Figure BDA0003347995520000219
移位1位后,将移位后的结果在指定比特位与V[1]、V[61]和V[62]进行按位异或运算后得到。由于按照前述推导,可确定
Figure BDA00033479955200002110
能够直接根据输入参数V得到,而
Figure BDA00033479955200002111
除了
Figure BDA00033479955200002112
外,也只与V[1]、V[61]和V[62]有关,因此
Figure BDA00033479955200002113
实质上也能够直接根据输入参数V得到,也即得到了
Figure BDA00033479955200002114
与输入参数V的映射关系。
同理,也可以实现
Figure BDA00033479955200002115
的计算电路设计。示例性地,请参阅图13,图13示出了一种
Figure BDA00033479955200002116
的按位计算电路示意图。具体地,M的64位数据M[63]~M[0]对应的是
Figure BDA00033479955200002117
的64位数据向左移动1位后的移位结果,如图13所示的虚线框中所展示的
Figure BDA0003347995520000221
的计算电路向左移动1位后的计算电路,相当于
Figure BDA0003347995520000222
由于{0,0,…,0,V[1]xorV[62]xorV[61],V[1]xorV[62]xorV[61],0,V[1]xorV[62]xorV[61],V[1]xorV[62]xorV[61]}中仅在比特位为0、1、3、4处为非0值V[1]xorV[62]xorV[61],因此,可仅在M[0]、M[1]、M[3]、M[4]处增加与V[1]、V[61]和V[62]的按位异或电路。
同理,从图13可以看出,本申请
Figure BDA0003347995520000223
的硬件电路实现,实质上也是将V的64位数据V[63]~V[0]向左移动63位后,将移位后的结果在指定比特位与V[1]、V[2]…V[61]、V[62]、V[63]进行按位异或运算后得到。也即
Figure BDA0003347995520000224
能够直接根据输入参数V得到,即得到了
Figure BDA0003347995520000225
与输入参数V的映射关系。
同理,结合图13可以看出,对于
Figure BDA0003347995520000226
的结果,V[1]~V[60]与移位后的结果M中进行异或的M值的规律,是遵循前述
Figure BDA0003347995520000227
的映射规律,即将输入参数V左移i位后,将V移位后的结果M中的M[0+j]、M[1+j]、M[3+j]、M[4+j]与V[N-i+j]即V[1+j]进行按位异或运算。只有V[61]、V[62]、V[63]比较特殊,V[61]需与移位后的结果M中的M[0]、M[1]、M[3]、M[4]、M[60]、M[61]、M[63]与进行异或,V[62]需与移位后的结果M中的M[0]、M[1]、M[2]、M[3]、M[4]、M[5]、M[61]、M[62]与进行异或,V[63]需与移位后的结果M中的M[1]、M[2]、M[3]、M[4]、M[5]、M[6]、M[62]、M[63]与进行异或。且M[2]和M[5]均需与V[63]异或两次,M[1]和M[4]均需与V[62]异或两次。
基于前述分析,可以得到,当i=63时,此时相当于获取MULxPOW(V,63,C)函数即
Figure BDA0003347995520000228
的输出结果,第一数据序列中需要进行异或运算的第一数据包括第一数据V[1+j]、第一数据V[61]、第一数据V[62]和第一数据V[63],第二数据序列中的需要进行异或运算的所述第二数据包括与所述第一数据V[1+j]对应的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及与所述第一数据V[61]对应的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及与所述第一数据V[62]对应的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及与所述第一数据V[63]对应的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]。其中,第二数据M[1]和第二数据M[4]均需与第一数据V[62]异或两次,第二数据M[2]和第二数据M[5]均需与第一数据V[63]异或两次,j为0~59之间的整数。
因此,在本申请实施例中,当i=63时,在确定输入V和函数输出的映射关系时,可以将所述第一数据序列中的第一数据V[1+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[61]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]进行异或运算,得到每个第二数据对应的异或结果。其中,第二数据M[1]和第二数据M[4]均需与第一数据V[62]进行两次异或运算,第二数据M[2]和第二数据M[5]均需与第一数据V[63]进行两次异或运算,j为0~59之间的整数。
步骤S390:根据所述每个第二数据对应的异或结果,对所述第二数据序列中的所述每个第二数据进行对应更新,得到N位的第三数据序列作为第63输出结果,所述第63输出结果用于表征所述MULxPOW(V,63,C)函数的输出结果。
步骤S400:基于所述第i输出结果,生成信息认证码,所述信息认证码用于校验信息的完整性。所述i为0~N-1之间的整数。
在本申请实施例中,
Figure BDA0003347995520000231
均可以确定各自与输入参数V的映射关系,从而可以直接根据输入参数V计算得到,无需依赖上一级i的输出,从而可以改变相关技术中的串行计算方式,而是采用并行计算方式,使得可以在一个时钟周期里同时计算出MULxPOW(V,i,C)每个i对应的输出,提高了***计算的吞吐量。
在一些实施例中,可以具体是先根据接收到的N位的密钥序列,从所述第i输出结果中确定目标输出结果,其中,所述i为0~N-1之间的整数。然后将所述目标输出结果与预设初始值进行异或运算,得到目标异或结果,最后基于所述目标异或结果,生成信息认证码,所述信息认证码用于校验信息的完整性。
其中,N位的密钥序列可以是MUL(V,P,C)中参数P的N位的二进制序列。可以根据该N位的密钥序列中每一位密钥的0或1值,对应选择是否将第i输出结果作为加入到后续的异或过程的目标输出结果。示例性地,请参阅图3,可以根据参数P的N位的二进制序列中每一位二进制0或1值,选择是将对应级的MULxPOW(V,i,C)函数的输出结果与其他级输出结果进行异或,还是选择不将对应级的MULxPOW(V,i,C)函数的输出结果加入到后续的异或过程。
其中,预设初始值可以是用户自定值,在UIA2完整性保护算法中其被设为0。示例性地,请参阅图3中的result=0即为预设初始值。
可以理解的是,在根据接收到的N位的密钥序列,从所述第i输出结果中确定目标输出结果后,可以得到被选择为用于进行异或运算的MULxPOW(V,i,C)函数的输出结果,从而可以将目标输出结果与预设初始值进行异或运算,得到目标异或结果,该目标异或结果可以理解为MUL(V,P,C)函数的最终输出结果。
在本申请实施例中,在得到目标异或结果即MUL(V,P,C)函数的最终输出结果后,可以基于目标异或结果,生成信息认证码,所述信息认证码用于校验信息的完整性。例如,前述UIA2完整性保护算法计算消息认证码MAC的过程中的第十步~第十二步。
本申请实施例提供的数据处理方法,N=64,MULxPOW(V,i,C)函数中参数C=0x0000 0000 0000001B,k为0、1、3、4,Z为4,通过确定64级中每一级的计算与输出V的映射关系,可以使得本申请中MULxPOW(V,i,C)函数的每一级的计算可以只依赖于输入V,无需依赖上一级的输出,使得可以将原有的MULxPOW(V,i,C)函数的串行计算方式,改变为并行计算方式,提高了消息认证码MAC计算的硬件电路的速度的同时,也提高了时钟频率、满足吞吐量的需求。
基于前述的数据处理方法得到的每一级的按位计算电路,可以重新设计UIA2计算电路,以将其中MULxPOW(V,i,C)函数的并行计算电路更改为串行计算电路。具体地,请参阅图14,图14示出了本申请再一个实施例提供的UIA2计算电路的示意图。用于实现MULxPOW(V,i,C)函数的计算输出。该UIA2计算电路500包括64级MUL单元510以及与所述64级MUL单元分别对应连接的64级混合运算单元520,其中:所述64级MUL单元510的各级MUL单元独立运行。具体地,对于所述64级MUL单元510中的第i级MUL单元,用于接收N64位的第一数据序列,并对所述64N位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果,i为整数且i的取值从0遍历至63i和N皆为大于1的整数,且i的取值从1遍历至N;
对于所述64级混合运算单元520中的第i级混合运算单元,分别与第i-1级混合运算单元和所述第i级MUL单元连接,用于接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。
从而,基于前述UIA2计算电路,第i级MUL单元可以接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果;第i级混合运算单元可以接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。
在一些实施例中,i大于0时,所述第i级MUL单元包括第i移位电路,以及与所述第i移位电路连接的第i异或电路。其中:所述第i移位电路,用于接收所述64位的第一数据序列,并对所述64位的第一数据序列进行第i级移位运算,得到第i级移位结果;所述第i异或电路,用于接收所述第i级移位结果和所述64位的第一数据序列,并基于所述第i级移位结果和所述64位的第一数据序列进行第i级异或运算,得到第i级MUL运算结果。
在一些实施例中,所述第i移位电路,用于对所述64位的第一数据序列V[0]~V[63]左移位i位,得到移位后的64位的第二数据序列M[0]~M[63]作为第i级移位结果。所述第i异或电路,用于输出所述64位的第一数据序列中的第一数据V[64-i+j]与所述64位的第二数据序列中的第二数据M[k+j]的异或结果,并基于该异或结果对所述第二数据序列中的所述第二数据M[k+j]进行对应更新,得到64位的第三数据序列作为第i级MUL运算结果,其中,j为整数且j的取值从0遍历至i-1,所述k为指定比特位,所述k的个数为至少一个。
基于此,当i大于0时,所述第i移位电路可以接收所述64位的第一数据序列,并对所述64位的第一数据序列V[0]~V[63]左移位i位,得到移位后的64位的第二数据序列M[0]~M[63]作为第i级移位结果,并可以向所述第i异或电路输入所述第i级移位结果。然后所述第i异或电路可以接收所述64位的第一数据序列和所述第i移位电路输入的所述第i移位电路,并对所述64位的第一数据序列中的第一数据V[64-i+j]与所述64位的第二数据序列中的第二数据M[k+j]进行异或运算,得到异或结果,然后基于所述异或结果对所述第二数据序列中的所述第二数据M[k+j]进行对应更新,得到64位的第三数据序列作为第i级MUL运算结果,其中,j为整数且j的取值从0遍历至i-1,所述k为指定比特位,所述k的个数为至少一个。
在一些实施例中,所述k可以为0、1、3、4,i的取值从1遍历至60时,所述第二数据M[k+j]为第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],其中:所述第i异或电路包括4i个异或门,所述4i个异或门用于输出所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]的异或结果。
也就是说,第1级MUL单元至第60级MUL单元中各级的异或电路,都是通过对应将所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到异或结果。然后基于所述异或结果对所述第二数据序列中的所述第二数据M[k+j]进行对应更新,得到64位的第三数据序列作为各级MUL运算结果,其中,j为整数且j的取值从0遍历至i-1,所述k为指定比特位,所述k的个数为至少一个。
示例性地,在一些实施例中,当i=1时,j=0,所述第一数据V[64-i+j]为第一数据V[63],所述第二数据M[k+j]为第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],其中:
第1级子逻辑电路对应的第1异或电路包括4个异或门,所述4个异或门用于输出所述第一数据V[63]分别与所述第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]的异或结果。
示例性地,请参阅图4,第1级子逻辑电路中包括第一数据V[63]与所述第二数据M[0]进行异或的第一异或门、第一数据V[63]与所述第二数据M[1]进行异或的第二异或门、第一数据V[63]与所述第二数据M[3]进行异或的第三异或门以及第一数据V[63]与所述第二数据M[4]进行异或的第四异或门。从而可以得到MULxPOW(V,1,C)函数的输出结果。
也就是说,对于第1级MUL单元中的第1异或电路,可以实现所述第一数据V[63]分别与所述第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]的异或运算,得到异或结果。然后基于所述异或结果,更新替换至所述第二数据序列中的所述第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],得到新的64位的第三数据序列作为第1级MUL单元的MUL运算结果。
在一些实施例中,当i=2时,j的取值从0遍历至1,所述第一数据V[N-i+j]包括第一数据V[62]、第一数据V[63],所述第二数据M[k+j]包括与所述第一数据V[62]对应的第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及与所述第一数据V[63]对应的第二数据M[1]、第二数据M[2]、第二数据M[4]、第二数据M[5],其中:
所述第2异或电路包括8个异或门,所述8个异或门用于输出所述第二数据M[0]与第一数据V[62]、第二数据M[1]与第一数据V[62]和第一数据V[63]、第二数据M[2]与第一数据V[63]、第二数据M[3]与第一数据V[62]、第二数据M[4]与第一数据V[62]和第一数据V[63]、第二数据M[5]与第一数据V[63]的异或结果。示例性地,如图5所示。
也就是说,对于第2级MUL单元中的第2异或电路,可以实现对所述第二数据M[0]与第一数据V[62]、第二数据M[1]与第一数据V[62]和第一数据V[63]、第二数据M[2]与第一数据V[63]、第二数据M[3]与第一数据V[62]、第二数据M[4]与第一数据V[62]和第一数据V[63]、第二数据M[5]与第一数据V[63]分别进行异或运算,得到异或结果。然后基于所述异或结果,更新替换至所述第二数据序列中的所述第二数据M[0]~M[5],得到新的64位的第三数据序列作为第2级MUL单元的MUL运算结果。
同理可以得到第3~60级MUL单元中各级异或电路的实现。
在一些实施例中,i的取值为61时,j的取值从0遍历至59,所述第61异或电路包括247个异或门,所述247个异或门用于输出所述第一数据序列中的第一数据V[3+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]的异或结果,该异或结果用于对所述新的N位的数据序列M[0]~M[N-1]中对应的第二数据进行更新,更新后的N位的数据序列作为第61输出结果,其中,j为0~59之间的整数。示例性地,如图11所示。
也就是说,对于第61级MUL单元中的第61异或电路,其可以实现所述第一数据序列中的第一数据V[3+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]的异或运算,其中,j的取值从0遍历至59,以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]的异或运算,得到异或结果。然后基于所述异或结果,对应更新替换至所述第二数据序列中的所述第二数据,得到新的64位的第三数据序列作为第61级MUL单元的MUL运算结果。
在一些实施例中,i的取值为62时,j的取值从0遍历至59,所述第62异或电路包括257个异或门,所述257个异或门用于输出所述第一数据序列中的第一数据V[2+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]的异或结果,该异或结果用于对所述新的N位的数据序列M[0]~M[N-1]中对应的第二数据进行更新,更新后的N位的数据序列作为第62输出结果,其中,j为0~59之间的整数。示例性地,如图12所示。需注意的是,第二数据M[1]和第二数据M[4]均需与第一数据V[63]进行两次异或运算。
也就是说,对于第62级MUL单元中的第62异或电路,其可以实现所述第一数据序列中的第一数据V[2+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],其中,j的取值从0遍历至59,
所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及
所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]进行异或运算,其中,第二数据M[1]和第二数据M[4]均需与第一数据V[63]进行两次异或运算,得到异或结果。然后基于所述异或结果,对应更新替换至所述第二数据序列中的所述第二数据,得到新的64位的第三数据序列作为第62级MUL单元的MUL运算结果。
在一些实施例中,i的取值为63时,j的取值从0遍历至59,所述第63异或电路包括267个异或门,所述267个异或门用于输出所述第一数据序列中的第一数据V[1+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[61]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]的异或结果,该异或结果用于对所述新的N位的数据序列M[0]~M[N-1]中对应的第二数据进行更新,更新后的N位的数据序列作为第63输出结果,其中,j为0~59之间的整数。示例性地,如图13所示。需注意的是,第二数据M[1]和第二数据M[4]均需与第一数据V[62]异或两次,第二数据M[2]和第二数据M[5]均需与第一数据V[63]异或两次。
也就是说,对于第63级MUL单元中的第63异或电路,其可以实现将所述第一数据序列中的第一数据V[1+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],其中,j的取值从0遍历至59,
所述第一数据序列中的第一数据V[61]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],
所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及
所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]进行异或运算,得到异或结果。其中,第二数据M[1]和第二数据M[4]均需与第一数据V[62]异或两次,第二数据M[2]和第二数据M[5]均需与第一数据V[63]异或两次。然后基于所述异或结果,对应更新替换至所述第二数据序列中的所述第二数据,得到新的64位的第三数据序列作为第63级MUL单元的MUL运算结果。
在一些实施例中,所述第i级混合运算单元还用于接收64位的密钥序列中的第i位密钥,并基于所述第i位密钥,输出所述第i-1级混合运算结果和所述第i级MUL运算结果的异或结果,或者输出所述第i-1级混合运算结果作为第i级混合运算结果。
示例性地,请参阅图15,图15示出了本申请提供的一种MUL(V,P,C)函数的计算电路结构。可以看出,本申请相对于相关技术方案,将MULxPOW(V,i,C)的串行计算改变成了并行计算,也即本申请中MULxPOW(V,i,C)每一级的计算只依赖于输入V,从而对MULxPOW(V,i,C)的计算进行了大幅度的时序化简,使得MULxPOW(V,i,C)可以使用并行的方式进行计算,从而提高了MUL(V,P,C)函数计算电路的速度,提高了UIA2运算吞吐量。
可以理解的是,UIA2在3G通信协议中使用,在4G和5G协议改算法改名为128-EIA1与128-NIA1,因此本申请的方案也可以在3G、4G与5G通信协议的硬件实现中共用。
本申请实施例提供一种芯片,包括上述数据处理电路。具有与前述一种数据处理电路相同的解释。说明和有益效果,在此不再赘述。
请参考图16,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备100可以是智能手机等能够运行应用程序的电子设备。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个程序代码,其中,一个或多个程序代码可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序代码配置用于执行如前述方法实施例所描述的数据处理方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子标签100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子标签100的各种功能和处理数据。可选地,处理器110可以采用数字数据处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、数据处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理数据处理。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子标签100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
可以理解,图16所示结构仅为示例,电子设备100还可以包括比图16所示更多或更少的组件,或是具有与图16所示完全不同的配置。本申请实施例对此没有限制。
请参考图17,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质800可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (22)

1.一种UIA2计算电路,其特征在于,包括64级MUL单元,以及与所述64级MUL单元分别对应连接的64级混合运算单元,其中:
第i级MUL单元,用于接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果,i为整数且i的取值从0遍历至63;
第i级混合运算单元分别与第i-1级混合运算单元和所述第i级MUL单元连接,用于接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;
其中,第N级混合运算结果为所述第一数据序列对应的运算结果。
2.如权利要求1所述的UIA2计算电路,其特征在于,i大于0时,所述第i级MUL单元包括第i移位电路,以及与所述第i移位电路连接的第i异或电路,其中:
所述第i移位电路,用于接收所述64位的第一数据序列,并对所述64位的第一数据序列进行第i级移位运算,得到第i级移位结果;
所述第i异或电路,用于接收所述第i级移位结果和所述64位的第一数据序列,并基于所述第i级移位结果和所述64位的第一数据序列进行第i级异或运算,得到第i级MUL运算结果。
3.如权利要求2所述的UIA2计算电路,其特征在于,所述第i移位电路,用于对所述64位的第一数据序列V[0]~V[63]左移位i位,得到移位后的64位的第二数据序列M[0]~M[63]作为第i级移位结果。
4.如权利要求3所述的UIA2计算电路,其特征在于,所述第i异或电路,用于输出所述64位的第一数据序列中的第一数据V[64-i+j]与所述64位的第二数据序列中的第二数据M[k+j]的异或结果,并基于该异或结果对所述第二数据序列中的所述第二数据M[k+j]进行对应更新,得到64位的第三数据序列作为第i级MUL运算结果,其中,j为整数且j的取值从0遍历至i-1,所述k为指定比特位,所述k的个数为至少一个。
5.如权利要求4所述的UIA2计算电路,其特征在于,k为0、1、3、4,i的取值从1遍历至60时,所述第二数据M[k+j]为第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],其中:
所述第i异或电路包括4i个异或门,所述4i个异或门用于输出所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]的异或结果。
6.如权利要求5所述的UIA2计算电路,当i=1时,j=0,所述第一数据V[64-i+j]为第一数据V[63],所述第二数据M[k+j]为第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],其中:
第1异或电路包括4个异或门,所述4个异或门用于输出所述第一数据V[63]分别与所述第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]的异或结果。
7.如权利要求5所述的UIA2计算电路,其特征在于,当i=2时,j的取值从0遍历至1,所述第一数据V[64-i+j]包括第一数据V[62]、第一数据V[63],所述第二数据M[k+j]包括与所述第一数据V[62]对应的第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及与所述第一数据V[63]对应的第二数据M[1]、第二数据M[2]、第二数据M[4]、第二数据M[5],其中:
所述第2异或电路包括8个异或门,所述8个异或门用于输出所述第二数据M[0]与第一数据V[62]、第二数据M[1]与第一数据V[62]和第一数据V[63]、第二数据M[2]与第一数据V[63]、第二数据M[3]与第一数据V[62]、第二数据M[4]与第一数据V[62]和第一数据V[63]、第二数据M[5]与第一数据V[63]的异或结果。
8.如权利要求5所述的UIA2计算电路,其特征在于,i的取值为61时,j的取值从0遍历至59,其中:
所述第61异或电路包括247个异或门,所述247个异或门用于输出所述第一数据序列中的第一数据V[3+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]的异或结果。
9.如权利要求5所述的UIA2计算电路,其特征在于,i的取值为62时,j的取值从0遍历至59,其中:
所述第62异或电路包括257个异或门,所述257个异或门用于输出所述第一数据序列中的第一数据V[2+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]的异或结果。
10.如权利要求5所述的UIA2计算电路,其特征在于,i的取值为63时,j的取值从0遍历至59,其中:
所述第63异或电路包括267个异或门,所述267个异或门用于输出所述第一数据序列中的第一数据V[1+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],所述第一数据序列中的第一数据V[61]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]的异或结果。
11.如权利要求1-10任一项所述的UIA2计算电路,其特征在于,所述第i级混合运算单元还用于接收64位的密钥序列中的第i位密钥,并基于所述第i位密钥,输出所述第i-1级混合运算结果和所述第i级MUL运算结果的异或结果,或者输出所述第i-1级混合运算结果作为第i级混合运算结果。
12.一种如权利要求1-11任一项所述的UIA2计算电路的数据处理方法,其特征在于,所述方法包括:
第i级MUL单元接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果;
第i级混合运算单元接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果;其中,第N级混合运算结果为所述第一数据序列对应的运算结果。
13.根据权利要求12所述的方法,其特征在于,所述第i级MUL单元包括第i移位电路,以及与所述第i移位电路连接的第i异或电路,所述第i级MUL单元接收64位的第一数据序列,并对所述64位的第一数据序列进行第i级MUL运算,得到第i级MUL运算结果,包括:
当i大于0时,所述第i移位电路接收所述64位的第一数据序列,并对所述64位的第一数据序列V[0]~V[63]左移位i位,得到移位后的64位的第二数据序列M[0]~M[63]作为第i级移位结果;
所述第i移位电路向所述第i异或电路输入所述第i级移位结果;
所述第i异或电路接收所述64位的第一数据序列和所述第i移位电路输入的所述第i移位电路,并对所述64位的第一数据序列中的第一数据V[64-i+j]与所述64位的第二数据序列中的第二数据M[k+j]进行异或运算,得到异或结果;
基于所述异或结果对所述第二数据序列中的所述第二数据M[k+j]进行对应更新,得到64位的第三数据序列作为第i级MUL运算结果,其中,j为整数且j的取值从0遍历至i-1,所述k为指定比特位,所述k的个数为至少一个。
14.根据权利要求13所述的方法,其特征在于,k为0、1、3、4,i的取值从1遍历至60时,所述对所述64位的第一数据序列中的第一数据V[64-i+j]与所述64位的第二数据序列中的第二数据M[k+j]进行异或运算,得到异或结果,包括:
将所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到异或结果。
15.根据权利要求14所述的方法,其特征在于,当i=2时,j的取值从0遍历至1,所述将所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到异或结果,包括:
对所述第二数据M[0]与第一数据V[62]、第二数据M[1]与第一数据V[62]和第一数据V[63]、第二数据M[2]与第一数据V[63]、第二数据M[3]与第一数据V[62]、第二数据M[4]与第一数据V[62]和第一数据V[63]、第二数据M[5]与第一数据V[63]分别进行异或运算,得到异或结果。
16.根据权利要求14所述的方法,其特征在于,当i=61时,j的取值从0遍历至59,所述将所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到异或结果,包括:
将所述第一数据序列中的第一数据V[3+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],以及
所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4]进行异或运算,得到异或结果。
17.根据权利要求14所述的方法,其特征在于,当i=62时,j的取值从0遍历至59,所述将所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到异或结果,包括:
将所述第一数据序列中的第一数据V[2+j]分别与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],
所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],以及
所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]进行异或运算,得到异或结果。
18.根据权利要求14所述的方法,其特征在于,当i=63时,j的取值从0遍历至59,所述将所述第一数据V[64-i+j]与所述第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j]进行异或运算,得到异或结果,包括:
将所述第一数据序列中的第一数据V[1+j]与所述第二数据序列中的第二数据M[j]、第二数据M[1+j]、第二数据M[3+j]、第二数据M[4+j],
所述第一数据序列中的第一数据V[61]分别与所述第二数据序列中的第二数据M[60]、第二数据M[61]、第二数据M[63]、第二数据M[0]、第二数据M[1]、第二数据M[3]、第二数据M[4],
所述第一数据序列中的第一数据V[62]分别与所述第二数据序列中的第二数据M[61]、第二数据M[62]、第二数据M[0]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5],以及
所述第一数据序列中的第一数据V[63]分别与所述第二数据序列中的第二数据M[62]、第二数据M[63]、第二数据M[1]、第二数据M[2]、第二数据M[3]、第二数据M[4]、第二数据M[5]、第二数据M[6]进行异或运算,得到异或结果。
19.根据权利要求11-18任一项所述的方法,其特征在于,所述第i级混合运算单元接收第i-1级运算单元的第i-1级混合运算结果和所述第i级MUL运算结果,并基于所述第i-1级混合运算结果和所述第i级MUL运算结果,得到第i级混合运算结果,包括:
所述第i级混合运算单元接收64位的密钥序列中的第i位密钥,并基于所述第i位密钥,输出所述第i-1级混合运算结果和所述第i级MUL运算结果的异或结果,或者输出所述第i-1级混合运算结果作为第i级混合运算结果。
20.一种芯片,其特征在于,包括权利要求1-11任一所述的数据处理电路。
21.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序代码,其中所述一个或多个程序代码被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序代码配置用于执行如权利要求12-19任一项所述的方法。
22.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求12-19任一项所述的方法。
CN202111328426.6A 2021-11-10 2021-11-10 Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质 Active CN113971015B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111328426.6A CN113971015B (zh) 2021-11-10 2021-11-10 Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111328426.6A CN113971015B (zh) 2021-11-10 2021-11-10 Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113971015A true CN113971015A (zh) 2022-01-25
CN113971015B CN113971015B (zh) 2023-09-08

Family

ID=79589648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111328426.6A Active CN113971015B (zh) 2021-11-10 2021-11-10 Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113971015B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6043036A (en) * 1996-04-23 2000-03-28 Aclara Biosciences Method of sequencing nucleic acids by shift registering
US20020031775A1 (en) * 1999-12-21 2002-03-14 Erikson Glen H. Parallel or antiparallel, homologous or complementary binding of nucleic acids or analogues thereof to form duplex, triplex or quadruplex complexes
CN101997680A (zh) * 2009-08-10 2011-03-30 北京多思科技发展有限公司 一种直接支持证书管理的安全芯片
CN103339891A (zh) * 2011-02-03 2013-10-02 华为技术有限公司 具有有限资源的优良通用散列函数的设计
CN108008932A (zh) * 2016-10-28 2018-05-08 畅想科技有限公司 除法合成
CN109459615A (zh) * 2018-10-19 2019-03-12 湖南大学 基于级联型多电平变换器的高压阻抗测量装置及控制方法
CN110147249A (zh) * 2018-02-12 2019-08-20 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN111898148A (zh) * 2018-05-11 2020-11-06 创新先进技术有限公司 一种基于区块链的信息监管方法及装置
CN112114776A (zh) * 2020-09-30 2020-12-22 合肥本源量子计算科技有限责任公司 一种量子乘法运算方法、装置、电子装置及存储介质
CN112152607A (zh) * 2020-09-15 2020-12-29 Oppo广东移动通信有限公司 完整性保护电路及其数据处理方法和原始数据校验装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6043036A (en) * 1996-04-23 2000-03-28 Aclara Biosciences Method of sequencing nucleic acids by shift registering
US20020031775A1 (en) * 1999-12-21 2002-03-14 Erikson Glen H. Parallel or antiparallel, homologous or complementary binding of nucleic acids or analogues thereof to form duplex, triplex or quadruplex complexes
CN101997680A (zh) * 2009-08-10 2011-03-30 北京多思科技发展有限公司 一种直接支持证书管理的安全芯片
CN103339891A (zh) * 2011-02-03 2013-10-02 华为技术有限公司 具有有限资源的优良通用散列函数的设计
CN108008932A (zh) * 2016-10-28 2018-05-08 畅想科技有限公司 除法合成
CN110147249A (zh) * 2018-02-12 2019-08-20 上海寒武纪信息科技有限公司 一种网络模型的计算方法及装置
CN111898148A (zh) * 2018-05-11 2020-11-06 创新先进技术有限公司 一种基于区块链的信息监管方法及装置
CN109459615A (zh) * 2018-10-19 2019-03-12 湖南大学 基于级联型多电平变换器的高压阻抗测量装置及控制方法
CN112152607A (zh) * 2020-09-15 2020-12-29 Oppo广东移动通信有限公司 完整性保护电路及其数据处理方法和原始数据校验装置
CN112114776A (zh) * 2020-09-30 2020-12-22 合肥本源量子计算科技有限责任公司 一种量子乘法运算方法、装置、电子装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ARPACI R H: "The interaction of parallel and sequential workloads on a network of workstations", 《ACM SIGMETRICS PERFORMANCE EVALUATION REVIEW》 *
潘威: "面向Cilk的并行递归程序优化技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Also Published As

Publication number Publication date
CN113971015B (zh) 2023-09-08

Similar Documents

Publication Publication Date Title
JP4700051B2 (ja) 暗号装置及び暗号方法
US7543011B2 (en) Montgomery modular multiplier and method thereof using carry save addition
JP2005215688A (ja) S−box演算を用いるハードウェア暗号化/復号化装置及び、その方法
CN112114776A (zh) 一种量子乘法运算方法、装置、电子装置及存储介质
US8495116B2 (en) Circuit and method converting boolean and arithmetic masks
US7849125B2 (en) Efficient computation of the modulo operation based on divisor (2n-1)
CN113193962B (zh) 基于轻量级模乘的sm2数字签名生成与验证器
WO2023124371A1 (zh) 数据处理装置、方法、芯片、计算机设备及存储介质
CN113971015A (zh) Uia2计算电路及其数据处理方法、芯片、电子设备及存储介质
JP2009169316A (ja) ハッシュ関数演算装置及び署名装置及びプログラム及びハッシュ関数演算方法
WO2005114802A2 (en) Optimal signed-digit recoding for elliptic curve cryptography
Hussain et al. A hybrid soft bit flipping decoder algorithm for effective signal transmission and reception
CN112054808B (zh) Polar码的编码方法及装置
US11843689B2 (en) Methods and systems for reducing propagation delays in hardware implementation of ZUC cryptographic algorithms
KR102498133B1 (ko) 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법
RU2140716C1 (ru) Способ криптографического преобразования блоков цифровых данных
CN112054889B (zh) 消息认证码的生成方法及生成装置、计算机可读存储介质
US7472154B2 (en) Multiplication remainder calculator
JP2009301265A (ja) 倍数判定方法、倍数判定装置および倍数判定プログラム
JP2007234005A (ja) リダクションアレイの装置および方法
US9870201B1 (en) Method and apparatus for modulo arithmetic
CN116932444A (zh) 并行crc计算方法、装置及电路
CN116483313A (zh) 信息处理方法、装置、电子设备及计算机可读存储介质
CN115268840A (zh) 基于同态加密的快速模乘运算方法和模乘器
CN114826548A (zh) 一种基于同态加密的图像处理硬件加速器及图像处理方法

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