CN115698938A - 密码操作中通过中间随机化对变换的保护 - Google Patents
密码操作中通过中间随机化对变换的保护 Download PDFInfo
- Publication number
- CN115698938A CN115698938A CN202180041128.0A CN202180041128A CN115698938A CN 115698938 A CN115698938 A CN 115698938A CN 202180041128 A CN202180041128 A CN 202180041128A CN 115698938 A CN115698938 A CN 115698938A
- Authority
- CN
- China
- Prior art keywords
- iterations
- vector
- iteration
- randomization
- components
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- 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/544—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 for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
- H04L9/003—Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/72—Indexing scheme relating to groups G06F7/72 - G06F7/729
- G06F2207/7219—Countermeasures against side channel or fault attacks
- G06F2207/7223—Randomisation as countermeasure against side channel attacks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Algebra (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Discrete Mathematics (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本公开的各方面涉及一种执行密码操作的方法和系统,该密码操作涉及第一向量到第二向量的数论变换,其步骤包括:通过获得第一向量的分量,执行多次迭代,其中每次迭代包括确定多个输出值,其中多个输出值中的每个输出值是两个或更多个输入值的线性组合,输第一迭代中的输入值是第一向量的分量,最后迭代的输出值表示第二向量的分量,并且其中通过将至少一个输入值乘以随机数来来随机化至少一次迭代的输出值中的一个或多个,并且基于多次迭代中的最后迭代的输出值来确定第二向量的分量。
Description
技术领域
本公开涉及密码计算应用,更具体地,涉及对密码操作(诸如包含秘密信息的变换的计算)的保护以免受侧信道攻击。
附图说明
通过下面给出的详细描述和本公开的各种实现的附图,将更全面地理解本公开。
图1是图示根据本公开的一个或多个方面的、能够保护作为使用中间随机化的加密操作的一部分在其中执行的变换的示例系统架构的框图。
图2是根据本公开的一个或多个方面的使用中间随机化来保护安全信息免受侧信道攻击的数论变换(或数字傅里叶变换)过程的示例性图示。
图3是根据本公开的一个或多个方面的使用中间随机化来保护安全信息免受侧信道攻击的数论变换(或数字傅里叶变换)过程的另一示例性图示。
图4描绘了根据本公开的一个或多个方面的通过中间随机化在数论变换(或数字傅里叶变换)计算期间保护安全信息免受侧信道攻击的方法的说明性示例的流程图。
图5描绘了根据本公开的一个或多个方面操作的示例计算机系统的框图。
具体实施方式
本公开的各方面涉及通过使用数据和/或数据流的随机化来保护采用线性变换的密码操作,以保护数据免受侧信道攻击。
在公钥密码系统中,处理设备可以具有用于对输入消息进行密码操作的各种部件/模块。此类操作中使用的输入消息通常是大的正整数。密码操作的示例包括但不限于涉及Rivest Shamir Adelman(RSA)和椭圆曲线Diffie–Hellman(ECDH)密钥的操作、数字签名算法(DSA)、用于认证公钥加密系统的节点之间传输的消息的椭圆曲线数字签名算法(ECDSA)。密码算法通常涉及模数为p的模算术运算,其中所有整数Z的集合被包裹在长度为p的圆(集合Zp)周围,因此任何相差p(或p的任何其他整数倍)的两个数字都被视为相同的数字。预量子密码应用经常利用这样一个事实,即从涉及私钥乘数的公钥乘积(模p)中提取私钥乘数在经典计算机上可能是非常困难的操作。量子计算机的发展已经使一些常规算法(RSA、DSA、ECDH、EDCDSA)陷入危险,并推动了许多后量子密码算法的发展,诸如基于哈希的算法、基于代码的算法、多变量算法、基于格点的算法、密钥算法、对称密钥算法和其他算法。一些后量子算法基于最短向量问题,即在已知基础上确定向量空间中最短(非零)向量的难度。例如,Kyber和NewHope密钥封装算法是基于解决模块格上的带误差学习问题的难度。
密码应用采用各种方案和算法来使用密钥保护数据。在计算操作中使用密钥和其他秘密信息可能会使秘密信息暴露于侧信道攻击。侧信道攻击可以通过监视目标的(受害者的)计算机的电子电路产生的发射(信号)来执行。这些信号可以是声、电、磁、光、热等。通过记录发射,硬件特洛伊木马和/或恶意软件可能够将特定处理器(和/或存储器)活动与处理器执行的操作相关联。简单功率分析(SPA)侧信道攻击可以涉及检查设备所使用的电力作为时间的函数。由于噪声的存在掩盖了处理器的信号,更复杂的差分功率分析(DPA)攻击可能涉及对在多个密码操作(或单个密码操作的多次迭代)上执行的功率测量值进行统计分析。采用DPA的攻击者可能够过滤掉功率信号的噪声分量(利用噪声分量在不同操作或迭代之间可能不相关的事实),以提取表示实际处理器操作的信号分量,并从该信号推断私钥的值。
作为国家标准与技术研究所的一项举措的一部分,已经开发了用于密钥封装算法(例如,Kyber、NewHope)和数字签名(例如,Dilithium)的若干后量子密码方案。这种密码应用利用多项式环中的有效乘法并使用数论变换(NTT)。NTT是离散傅里叶变换(DFT)的模拟,它应用于N分量输入向量x(m),m=0,1,2,...N-1,使用作为第N单位根的数字WN的多项式将输入向量变换为输出向量X(k),k=0,1,2,...N-1:
在DFT的情况下,数字WN可以是半径为1的复环上的复数,例如,WN=exp(-2πi/N)。在NTT的情况下,数字WN可以为环Zp内的自然数,其N次幂为1的模p运算:例如,如果将变换应用于8分量向量(N=8),并且选择了p=17,则第N单位根可以选择为WN=2,从而使得实际上,环Z17上的等于单元(256-17×15=1)。
在安全密码应用中,分量N的数目通常很大。根据上述定义直接计算NTT导致N2乘法(DFT情况下的4N2实数乘法)。快速傅里叶变换(FFT)的技术减少了对N log N所需运算的数目,并基于有效使用单元的根的某些对称性,诸如等。FFT技术也适用于NTT,在本文中称为快速NTT。快速NTT(类似于FFT)相当于首先计算N/2 2点(2-point)变换(第一迭代),然后计算N/4 4点变换(第二迭代)等等,直到获得最终的N点变换的最后一次迭代(log2 N次迭代),如下面参考图2和图3更详细说明的。可以使用Cooley-Tukey蝶形运算来执行快速NTT以及FFT,其中,输入到特定迭代A和B的两个输入值可以根据以下公式变换为输出值:A,B→A+B·WN,A-B·WN。在使用Gentleman-Sande蝶形运算的替代实现中,输入值可以根据A,B→A+B、(A-B)·WN变换为输出值。在一些实现中,为了增强密码保护,至少一些快速NTT迭代可以涉及双(2N)阶W2N的单位根。
包含在输入向量x(m)和输出向量X(k)中的秘密信息可能容易受到侧信道攻击,其中攻击者可以通过测量来自执行变换的处理器(和/或存储器设备)的放射(发射)来使用单个跟踪放射操作。可以开发各种对策来随机化计算操作并减少来自处理器/存储器设备的确定性发射。例如,可以使用NTT的线性性质来遮蔽变换(在整个本公开中,每当引用NTT时,应当理解类似的技术也适用于DFT)。遮蔽处理可以使用随机向量y(m)来遮蔽输入x(m)。例如,可以将第一变换应用于输入向量x(m)+y(m)的和,并且可以将第二变换应用于随机的输入向量y(m)。随后,可以从第一变换X(k)+Y(k)的输出向量中减去第二变换Y(k)的输出向量,以确定目标变换X(k)。由于到第一变换和第二变换中的输入之间的相关性仍然可以由侧信道攻击者跟踪,因此这种遮蔽可提供额外但仍次优的保护。对于快速NTT算法的每一次迭代,可以分别执行类似的重新遮蔽(例如,使用针对各种迭代生成的不同随机向量y),但这可能导致存储器和处理器运算方面的显著成本。其他保护措施可以包括按随机化顺序执行NTT计算,但这种随机化可能难以实现。
本公开的各方面通过描述在快速NTT过程的各种迭代期间执行的中间随机化来解决常规NTT实现的这一缺点和其他缺点。连续快速NTT迭代可包括执行一个或多个乘法运算,该乘法运算涉及将先前迭代的输出值乘以单位根A·WN。在一个实现中,此类运算可通过随机数α的附加乘法来保护:WN→A·WN·α。在另一实现中,可以通过用另一随机选择的相同阶的单位根或随机选择的双(2N)阶的单位根来替换该单位根来保护这种操作。这种随机化可以在一些或所有快速NTT迭代中执行。在快速NTT结束时(或开始时),可以调整最后一次迭代的输出值(或第一迭代的输入值),以补偿快速NTT迭代期间带来的随机化因素。结果,仍然可以计算正确的(目标)输出向量,同时减少来自系统硬件的确定性发射,并屏蔽潜在侧信道攻击的计算。引入随机化会增加计算的熵,并使攻击者更难收集一组足以发现秘密信息的统计数据。所公开的实现可以与NTT以及与DFT(实数或复数)一起使用。
图1是图示根据本公开的一个或多个方面的、能够保护作为使用中间随机化的加密操作的一部分在其中执行的变换的示例系统架构100的框图。示例系统架构100可以是台式计算机、平板电脑、智能手机、服务器(本地或远程)、薄/瘦客户端等。示例系统架构100可以是智能卡读取器、无线传感器节点、专用于一个或多个特定应用(例如,密码应用110)的嵌入式系统等。系统架构100可以包括但不限于计算机系统102,该计算机系统102具有能够执行二进制指令的一个或多个处理器120(例如,中央处理单元(CPU))和一个或多个存储器设备130。“处理器”是指能够执行编码算术、逻辑或I/O操作的指令的设备。在一个说明性示例中,处理器可以遵循冯〃诺依曼体系结构模型,并且可以包括算术逻辑单元(ALU)、控制单元和多个寄存器。“处理设备”是指能够执行编码算术、逻辑或I/O操作的指令的设备。在一个说明性示例中,处理设备可以遵循冯〃诺依曼体系结构模型,并且可以包括算术逻辑单元(ALU)、控制单元和多个寄存器。在另一方面,处理设备可以是通常能够一次执行一个指令(或处理单个指令流水线)的单核处理器,或者可以同时执行多个指令的多核处理器。在另一方面,处理设备可以被实现为单个集成电路、两个或更多个集成电路,或者可以是多芯片模块的部件。
系统架构100可以包括输入/输出(I/O)接口104,以便于将计算机系统102连接到外围硬件设备106,诸如读卡器、终端、打印机、扫描仪、物联网设备等。系统架构100可以还包括互联网接口108以便于各种网络(互联网、无线局域网、个人局域网(PAN)、公共网络、私有网络等)的连接,并且可以包括无线电前端模块和其他设备(放大器、数模和模数转换器、专用逻辑单元等),以实现到/来自计算机系统102的数据传输。计算机系统102的各种硬件部件可以经由总线112连接,总线112可以具有其自己的逻辑电路,例如总线接口逻辑单元。
计算机系统102可以支持一个或多个密码应用110,诸如嵌入式密码应用110-1和/或外部密码应用110-2。密码应用110可以是安全认证应用、公钥签名应用、密钥封装应用、密钥解封装应用、加密应用、解密应用、安全存储应用等。外部密码应用110-2可以在同一计算机系统102上实例化,例如,由处理器120执行并驻留在存储器设备130中的操作系统来实例化。可替代地,外部密码应用110-2可以由由处理器120执行的虚拟机监视器(管理程序)支持的客户操作系统实例化。在一些实现中,外部密码应用110-2可以驻留在远程访问客户端设备或远程服务器(未示出)上,计算机系统102为客户端设备和/或远程服务器提供密码支持。
处理器120可以包括一个或多个处理器内核122,其具有对高速缓存124(单级或多级高速缓存)和一个或多个硬件寄存器126的访问权。在各种实现中,每个处理器内核122可以执行指令以运行多个硬件线程,也称为逻辑处理器。各种逻辑处理器(或处理器内核)可以被分配给一个或多个密码应用110,尽管可以将不止一个处理器分配给单个密码应用以用于进行并行处理。多核处理器120可以同时执行多个指令。单核处理器120通常可以一次执行一条指令(或处理单个指令流水线)。处理器120可以被实现为单个集成电路、两个或更多个集成电路,或者可以是多芯片模块的部件。
存储器设备130可以指易失性或非易失性存储器,并且可以包括只读存储器(ROM)132、随机存取存储器(RAM)134以及(未示出)电可擦除可编程只读存储器(EEPROM)、闪存、触发器存储器或能够存储数据的任何其他设备。RAM 134可以是动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、静态存储器(诸如静态随机存取存储器)等。
存储器设备130可以包括一个或多个寄存器,诸如存储输入向量x(m)的一个或多个输入寄存器136,存储输出向量X(k)的一个或多个输出寄存器138,以及存储在各种快速NTT迭代期间生成的中间值的一或多个工作寄存器140。存储器设备130可以还包括一个或多个控制寄存器142,该控制寄存器用于存储关于操作节点的信息、选择密钥封装/数字签名算法(例如,Kyber、NewHope、Dilithium)、初始化NTT程序的操作、选择初始化的NTT程序的实现(诸如,Cooley-Tukey蝶形运算或Gentleman-Sander蝶形运算)。控制寄存器142可以与一个或多个处理器内核122和时钟128通信,时钟128可以跟踪正在执行的迭代。寄存器136-142可以被实现为RAM 134的一部分。在一些实现中,寄存器136-142中的一些或全部可以与RAM134分开实现。寄存器136-142中的一些或全部可以被实现为处理器120的一部分(例如,作为硬件寄存器126的一部分)。在一些实现中,处理器120和存储器设备130可以被实现为单个现场可编程门阵列(FPGA)。
根据本公开的实现,计算机系统102可以包括随机化模块150,以向处理器120提供指令以执行抗DPA密码操作。随机化模块150可以以软件、硬件(例如,作为处理器120的一部分)、固件或其任何组合来实现。随机化模块150可以包括输出调整模块152,以补偿随机化操作并确保确定正确的目标向量。在一些实现中,随机化模块150可以访问寄存器136-142函数的内容,以在快速NTT迭代期间检索和存储数据。
图2是根据本公开的一个或多个方面的使用中间随机化来保护安全信息免受侧信道攻击的NTT(或DFT)过程200的示例性图示。示出了基于将输入向量202x(0),x(2),..x(N-2)的偶数分量和输入向量202x(1),x(3),..x(N-1)中的奇数分量分组为单独的N/2点NTT并继续类似分组直到达到2点NTT(基2实现)的N/2的Cooley-Tukey(CT)蝶形实现(时间抽取FFT)。因此,NTT被实现为范围增大的log2N阶段,直到获得输出向量204X(k)。示出了用于N=8的示例性实现,但如果W8用一般WN替换,则可以对是2的整数幂的任何N执行类似的操作。
在所描绘的N=8实现中,2点变换迭代210涉及四个CT蝶形运算,以从分组为x(m),x(m+N/2)的每对输入值计算两个中间值。线指示在计算相应的中间值时使用哪些输入值,并且数字和字母指示与每条线相关联的权重(旋转因子)。例如,第一CT蝶形运算计算
对其他迭代执行类似的操作。例如,可以根据以下公式计算4点变换迭代220的F1(1)和F1(3)中间值:
并且可以根据以下公式计算8点变换(最后)迭代230的X(3)和X(7)输出值:
为了保护NTT过程200免受侧信道攻击,一些或所有中间阶段(迭代)可以包括随机化操作206。在一些实现中,随机化操作可以包括将单位根乘以随机数。在一些实现中,可以使用相同的随机数随机化相同迭代的所有操作,但是不同迭代的随机数可以彼此不同。例如,所有2点变换迭代210的可以乘以第一随机数α1,而所有4点变换迭代220的和可以乘以第二随机数α2,而所有8点变换迭代230的所有和可以乘以第三随机数α3。因此,上面列出的利用随机化的示例性操作可以执行如下:
随机数αj的存在修改了输出值X(m),并使其与正确的(目标)输出值(如果未执行随机化操作则会获得的输出值)不同。例如,NTT过程200的输出分量X(5)可以是:
为了补偿最后的表达式中随机化因子的出现,可以根据以下调度来调整输入向量202分量x(m)(例如,在第一迭代210之前)。第一输入对x(0),x(4)可以调整为x(0)→x(0),x(4)→x(4)÷α1。第二输入对x(2),x(6)可以通过除以α2,等进行调整,如下所示(所示为除数):
奇数对的调整与偶数对的调整相差等于最后迭代的随机值的额外除数(例如,在N=8的情况下,为α3)。
而通过对称性固定的和保持不变。可以使用将每个根映射到另一根的任何此类随机重映射。具体而言,可能存在N/2个可接受的重映射方案(重映射方案是不可接受的,因为它们将偶数和奇数序根映射到偶数序根上)。可以为整个NTT过程选择重映射方案之一,并为该过程的所有迭代保持该重映射方案。在完成NTT过程之后,可以利用反向重映射来检索输出向量204的正确分量。在上述示例中,可以如下执行最终读出:
而X(0)和X(4)直接从对应的输出中读出。在一些实现中,为了额外的保护,可以组合两种随机化方法:可以为整个NTT过程随机选择全局重映射方案,并且可以为log2N迭代的每一个内的乘法随机化额外选择log2N随机数αj。在一些实现中,所选的单位根可以从2N阶的单位根中随机选择,使得
图3是根据本公开的一个或多个方面的使用中间随机化来保护安全信息免受侧信道攻击的NTT(或DFT)过程300的另一示例性图示。示出了基于将输入向量202x(0),x(1),..x(N/2-1)的先前半分量和输入向量202x(N/2-1),x(N/2-2),..x(N-1)中的后一半分量分组为单独的N/2点NTT并继续这种分组直到达到2点NTT(基2实现)的N/2的Gentleman-Sande蝶形实现方案(频率抽取FFT)。因此,NTT被实现为范围增大的log2N阶段,直到获得输出向量304X(k)。示出了N=8的示例性实现,但是在W8用更一般的WN替换的情况下,可以对2的整数幂的任何N执行类似的操作。
在所描绘的N=8实现中,2点变换迭代310(最后执行)涉及四个GS蝶形运算,以计算输出向量304X(k)的分量,这些分量根据相应的一对中间值(G和H))分组为X(m),X(m+N/2)。线指示在计算相应的中间值时使用哪些输入值,数字和字母指示与每条线相关联的权重(旋转因子)。例如,2点变换迭代310的第三GS蝶形运算包括计算
对其他迭代执行类似的操作。例如,可以根据以下公式计算4点变换迭代320的G1(1)和G2(1)中间值:
并且可以根据以下公式从输入向量302的分量x(3),x(7)计算8点变换迭代330(首先执行)的F1(3)和F2(3)中间值:
为了保护NTT过程200免受侧信道攻击,一些或所有中间阶段可以包括随机化操作306。在一些实现中,随机化操作可以包括将单位根乘以随机数。在一些实现中,可以使用相同的随机数随机化相同迭代的所有操作,但是不同迭代的随机数可以彼此不同。例如,所有2点变换迭代310的可以乘以第一随机数α1,而所有4点变换迭代320的和可以乘以第二随机数α2,而所有8点变换迭代310的所有和可以乘以第三随机数α3。因此,上面列出的利用随机化的示例性操作可以执行如下:
随机数αj的存在修改了输出值X(m),并使其不同于(目标)正确的输出值(如在没有随机化操作的情况下所确定的)。例如,NTT过程300的输出分量X(6)可以是:
为了补偿最后的表达式中随机化因子的出现,可以根据以下调度来调整输出向量304分量X(k)(例如,在2点变换迭代310之后)。第一输出对X(0),X(4)可以调整为X(0)→X(0),X(4)→X(4)÷α1。第二输出对X(2),X(6)可以通过除以α2,等进行调整,如下所示(所示为除数):
奇数对的调整与偶数对的调整相差等于2点变换迭代的随机值的额外除数(例如,在N=8的情况下,为α3)。
在另一实现中,可以通过用相同阶的另一单位根替换第N个单位根并随后以与关于图2和CT蝶形迭代所描述的相同的方式重映射输出来执行随机化。在一些实现中,为了额外的保护,可以组合两种随机化方法(例如,GS蝶形运算的随机化和根重映射):可以为NTT过程随机选择全局重映射方案,并且可以为log2N迭代的每一个内的乘法随机化附加地选择log2N随机数αj。
图2和图3描绘了基2(radix-2)实现,其中每次迭代的输出值被确定为2个输入值的线性组合。在一些实现中,基4(基6、基8等)可以类似地随机化。例如,在基4实现中,每次迭代的输出值被确定为4个输入值的线性组合。类似地,可以随机化更一般的基R变换。在一些实现中,可以在不同的迭代中使用不同的基数值。例如,第一迭代可以是基4迭代,而随后的迭代可以是基2迭代。
图4描绘了根据本公开的一个或多个方面的通过中间随机化在NTT(或FFT)计算期间保护安全信息免受侧信道攻击的方法400的说明性示例的流程图。方法400和/或其各个函数、例程、子例程或操作中的每一个可以由实现该方法的计算机系统的一个或多个处理单元执行。在某些实现中,方法400可以由单个处理线程执行。备选地,方法400可以由两个或更多个处理线程执行,每个线程执行该方法的一个或更多个个体函数、例程、子例程或操作。在一个说明性示例中,实现方法400的处理线程可以被同步(例如,使用信号量、关键部分和/或其他线程同步机制)。可选地,实现方法400的处理线程可以彼此异步地执行。与图4所示的顺序相比,可以以不同的顺序执行方法400的各个框。一些框可以与其他框同时执行。一些框可以是可选的。
方法400可以由处理器/ALU(例如,图1的处理器120)执行密码操作来实现,密码操作可以涉及公钥号码和私钥号码、两个私钥号码、数字签名等。密码操作可以是涉及多个私钥号码和/或多个公钥号码的较大计算运算的一部分。密码操作可以涉及后量子密钥封装算法(例如,Kyber、NewHope)和/或后量子数字签名(例如,Dilithium)。密码操作可以包括将第一向量(例如,输入向量202或302)变换为第二向量。第一向量到第二向量的变换可以将第二向量中的分量表示为作为单位根的数字的多项式(在NTT的情况下取某个数的模,或者在DFT的情况下,取复平面的模)。多项式的系数可以由第一向量的分量确定。在一些实现中,该变换是具有N分量x(m)的第一向量到具有N分量X(k)的第二向量的NTT变换。在一些实现中,该变换是DFT变换。该变换可以是直接变换(NTT或DFT)或逆变换(NTT或者DFT)。
在框410处,执行方法400的处理设备(例如,图1的处理器120)可以获得第一向量的分量。例如,处理设备可以获得存储第一向量的分量的输入寄存器136的标识(例如,地址)。在框420处,方法400可以继续获得一个或多个随机数。在一些实现中,一个或多个随机数可以由随机化模块152的随机数发生器生成。在一些实现中,随机数可以在获得第一向量之前存储在输入寄存器136或工作寄存器140中。在一些实现中,当需要时,例如在执行要使用随机数的NTT(或DFT)的相应迭代之前,逐个生成随机数。
在框430处,方法400可以继续执行多次迭代以处理第一向量的分量。作为框440的一部分,第一迭代可以使用第一向量的分量作为输入值,并产生作为输入值的线性组合的输出值,例如,在每个输出值是两个输入值(基2计算)的组合、4个输入值的组合(基4计算)或任何其他数目的输入值的一些其他组合。第二迭代可以使用第一迭代的输出值作为输入值,并且可以执行类似的计算。这样的迭代过程可以继续,直到所有的迭代都以先前迭代的输出值作为后续迭代的输入值来执行。最后一次迭代的输出值可以表示第二向量的分量。在一些实现中,最后一次迭代的输出值可能仍然不同于第二向量的分量,并且可能经历额外的调整以使其等于第二向量的分量。
在一些实现中,所有迭代可以是相同的基数迭代,例如,所有迭代都可以是基2(或基4等)迭代。在这样的实现中,迭代次数可以是log2N(或log4N等)。在一些实现中,一些迭代可以是基m迭代,而其他操作可以是基n迭代,其中m≠n。在一些实现中,多次迭代的每一次迭代可以包括Cooley-Tukey蝶形变换(参见图2)或Gentleman-Sande蝶形变换参见图3)。在一些实现中,多次迭代中的每一次可以包括对素数进行模运算的加法和乘法运算(例如,在NTT的实例中)。在一些实现中,多次迭代中的每一次可以包括涉及复数的操作(例如,在DFT的实例中)。
作为框450的一部分,执行方法400的处理设备可以结合迭代中的一个(“第一随机化迭代”)执行第一随机化操作。随机化操作可以由计算机系统102的随机化模块150执行。在一些实现中,第一随机化迭代可以与第一迭代相同。在一些实现中,第一随机化迭代可以是第r次迭代(第一r-1次迭代未被随机化)。第一随机化操作可以包括将第一随机化迭代中的至少一个输入值乘以一个或多个随机数(α1,α2...αN中的第一随机数(α1)。例如,在CT蝶形迭代的实例中,输入到第一随机化操作A和B中的两个输入值可以根据以下公式变换为第一随机化操作的输出值:A,B→A+B·α1·WN,A-B·α1·WN。类似地,在GS蝶形迭代的实例中,输入到第一随机化操作A和B中的两个输入值可以根据以下公式变换为第一随机化操作的输出值:A,B→A+B,(A-B)·α1·WN。在CT蝶形实现和GS蝶形实现中,第一随机化操作包括将至少一个输入值(A或B或A和B两者)乘以第一单位根WN。
在一些实现中,在第一随机化迭代中使用的第一随机数是随机选择的单位根(例如,N阶或2N阶的单位根)。例如,在CT蝶形迭代的实例中,输入到第一随机化操作A和B中的两个输入值可以根据以下公式进行变换:而在GS蝶形迭代的实例中,输入值可根据以下公式进行变换:A,B→A+B,随机单位根可以从多个单位根中选择,多个单位根可以是N阶所有单位根的子集(例如,奇数单位根WN,....的子集)或2N阶单位根的子集。
作为框460的一部分,执行方法400的处理设备可以结合迭代中的一个(“第二随机化迭代”)执行第二随机化操作。通过将第二随机化迭代的至少一个输入值乘以一个或多个随机数(α1,α2...αN)中的第二随机数(α2)并乘以第二单位根(例如,...),第二单位根可以不同于用于第一随机化迭代中的第一单位根(但也可以与第一单位根相同,例如,WN)。在一些实现中,第二随机化迭代可以紧跟在第一随机化迭代之后。然而,在一些实现中,第二随机化迭代可以是最后一次的迭代(使得在第一随机化迭代和第二随机化迭代之间存在s个非随机化迭代)。在一些实现中,使用多个随机数(α3,α4...αN)中的相应随机数随机化所有后续迭代(例如,第三、第四等)。在一些实现中,只有一些迭代是随机化的。在一些实现中,只有第一迭代是随机化的。例如,在第一随机化迭代期间(或之前),选择随机单位根以用于第一随机化迭代,然后在所有后续迭代(不经历任何附加随机化)中使用相同的(一旦选择)单位根在一些实现中,在第一随机化迭代期间(或之前)选择随机单位根并且一个或多个随机数(α1,α2...αN)仍然在一些(或所有)迭代中使用(包括已经通过的随机选择随机化的第一随机化迭代),以增加数据的安全性和保护。
在框460处,执行方法400的处理设备可以基于最后一次迭代的输出值来确定第二向量的分量。由于在框450和460处执行的随机化,最后一次迭代的输出值可以与第二向量的(目标)分量不同。因此,处理设备可以执行多个调整操作以补偿第一(第二、第三等)随机化操作。调整操作可以由计算机系统102的随机化模块150的输出调整模块152执行。例如,调整操作可以涉及除法运算(在模p运算中,可以经由使用适当确定的乘法器的乘法运算来执行,例如使用蒙哥马利乘法)。除法运算可以取决于被调整的特定输出值,并且可以涉及(在GS实现的情况下)将最后一次迭代的输出值除以一个或多个随机数(α1,α2...αN),如关于图3更详细描述的。这种除法将最后一次迭代的输出值变换为第二向量的实际分量。
在一些实现中,在选择了随机单位根的实例中,多个调整操作可以包括重映射(重组)最后一次迭代的输出,以获得第二向量的分量的正确序列。在一些实现中,可以执行两组调整操作。例如,如果在第一随机化迭代之前选择了随机单位根然后使用随机数α1,α2...αN进行随机化乘法,则可以以相反的顺序执行调整操作。首先,执行除以一个或多个随机数α1,α2...αN的调整除法,然后重映射(重组)得到的输出值,以获得第二向量的分量。
在一些实现中(例如,在CT迭代的情况下),调整操作可以调整第一(即,输入)向量的相应分量的值,而不是最后一次迭代的输出值。例如,调整操作可以涉及将输入向量的分量除以一个或多个随机数(α1,α2...αN),如关于图2更详细描述的。在这种情况下,在执行第一迭代之前执行调整操作,并且最后一次迭代的输出值是第二向量的实际分量。在一些实现中,在选择了随机单位根的实例中,多个调整操作可以包括重映射(重组)最后一次迭代的输出,以获得第二向量的分量的正确序列。在这样的实现中,在第一迭代之前执行第一向量的分量除以一个或多个随机数α1,α2...αN,而在最后一次迭代之后执行输出值的重映射(重组)以获得第二向量的分量。
图5描绘了根据本公开的一个或多个方面操作的示例计算机系统500的框图。在各种说明性示例中,计算机系统500可以表示图1所示的计算机系统102。
示例计算机系统500可以连接到LAN、内部网、外部网和/或互联网中的其他计算机系统。计算机系统500可以在客户端-服务器网络环境中以服务器的能力操作。计算机系统500可以是个人计算机(PC)、机顶盒(STB)、服务器、网络路由器、交换机或网桥,或者能够执行指定该设备要采取的动作的一组指令(顺序或其他)的任何设备。此外,虽然仅图示了单个示例计算机系统,但术语“计算机”也应被视为包括单独或联合执行一组(或多组)指令以执行本文讨论的任何一个或多个方法的任何计算机集合。
示例计算机系统500可以包括处理设备502(也称为处理器或CPU)、主存储器504(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)的动态随机存取存储器(DRAM)等)、静态存储器506(例如,闪存、静态随机存取存储器(SDRAM)等),以及副存储器,上述装置可以经由总线530彼此通信。
处理设备502表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地,处理设备502可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现其他指令集的处理器或实现指令集组合的处理器。处理设备502还可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。根据本公开的一个或多个方面,处理设备502可以被配置为执行实现在NTT(或FFT)计算期间通过中间随机化保护安全信息免受侧信道攻击的方法400的指令。
示例计算机系统500可以还包括网络接口设备508,其可以通信地耦合到网络520。示例计算机系统500可以还包括视频显示器510(例如,液晶显示器(LCD)、触摸屏或阴极射线管(CRT))、字母数字输入设备512(例如,键盘)、光标控制设备514(例如,鼠标)和声信号生成设备516(例如,扬声器)。
数据存储设备518可以包括计算机可读存储介质(或者更具体地,非暂态计算机可读存储介质)528,其上存储有一组或多组可执行指令522。根据本公开的一个或多个方面,可执行指令522可以包括实现在NTT(或FFT)计算期间通过中间随机化保护安全信息免受侧信道攻击的方法400的可执行指令。
可执行指令522也可以在由示例计算机系统500执行期间完全或至少部分地驻留在主存储器504内和/或处理设备502内,主存储器504和处理设备502也构成计算机可读存储介质。可执行指令522可以进一步经由网络接口设备508在网络上发送或接收。
虽然计算机可读存储介质528在图5中被示为单个介质,但术语“计算机可读存储介质”应被理解为包括存储一组或多组操作指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应被视为包括能够存储或编码一组指令以供机器执行促使机器执行本文所述的任何一种或多种方法的任何介质。因此,术语“计算机可读存储介质”应被视为包括但不限于固态存储器、光学和磁性介质。
以上详细描述的一些部分是根据对计算机存储器内的数据位的操作的算法和符号表示来呈现的。这些算法描述和表示是数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域的其他技术人员的手段。这里的算法通常被认为是导致期望结果的自一致的步骤序列。这些步骤是需要物理量的物理操纵的步骤。通常,尽管不一定,这些量采取能够存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。事实证明,将这些信号称为位、值、元素、符号、字符、术语、数字等有时是方便的,主要是出于通用的原因。
然而,应该记住,所有这些和类似的术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非另有特别说明,如从以下讨论中显而易见的,利用诸如“识别”、“确定”、“存储”、“调整”、“促使”、“返回”、“比较”、“创建”、“停止”、“加载”、“复制”、“投掷”、“替换”、“执行”等术语的讨论指的是计算机系统或类似电子计算设备的动作和过程,该动作和过程操纵计算机系统的寄存器和存储器内表示为物理(电子)量的数据并将其变换为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
本公开的示例还涉及用于执行本文所述方法的装置。该装置可以专门为所需目的而构造,或者它可以是由存储在计算机系统中的计算机程序选择性地编程的通用计算机系统。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘中,该介质包括光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁盘存储介质、光存储介质、闪存设备、其他类型的机器可访问存储介质,或者适合于存储电子指令的任何类型的介质,每一个都耦合到计算机系统总线。
本文所呈现的方法和显示器不固有地与任何特定计算机或其他装置相关。根据本文的教导,各种通用系统可以与程序一起使用,或者可以证明构造更专门的装置以执行所需的方法步骤是方便的。各种这些系统所需的结构将如下所述。此外,本公开的范围不限于任何特定的编程语言。应当理解,可以使用各种编程语言来实现本公开的教导。
应当理解,以上描述旨在是说明性的而非限制性的。在阅读和理解上述描述后,本领域技术人员将清楚许多其他实现示例。尽管本公开描述了具体的示例,但是应当认识到,本公开的系统和方法不限于本文描述的示例,而是可以在所附权利要求的范围内进行修改来实践。因此,说明书和附图应被视为说明性意义而非限制性意义。因此,本公开的范围应该参考所附权利要求以及这些权利要求所赋予的等同物的全部范围来确定。
Claims (20)
1.一种执行包括第一向量到第二向量的数论变换(NTT)的密码操作的方法,所述方法包括:
由处理设备获得所述第一向量的分量;
由所述处理设备获得一个或多个随机数;
由所述处理设备执行多次迭代,其中所述多次迭代中的每次迭代包括:
确定多个输出值,其中所述多个输出值中的每个输出值是两个或更多个输入值的线性组合;
其中,(1)到所述多次迭代中的第一迭代的所述输入值是所述第一向量的所述分量,(2)到所述多次迭代中的每个随后迭代中的所述输入值是所述多次迭代中的先前迭代的所述输出值,(3)所述多次迭代中的最后迭代的所述输出值表示所述第二向量的分量,并且其中所述多次迭代中的第一随机化迭代的所述输出值中的一个或多个输出值使用第一随机化操作而被随机化,所述第一随机化操作包括将到所述第一随机化迭代中的至少一个输入值乘以所述一个或多个随机数中的第一随机数;以及
由所述处理设备基于所述多次迭代中的所述最后迭代的所述输出值,确定所述第二向量的所述分量。
2.根据权利要求1所述的方法,还包括:
执行多个调整操作,其中所述多个调整操作中的每个调整操作要调整所述多次迭代中的所述最后迭代的相应输出值,以补偿所述第一随机化操作,并且要使所述多次迭代中的所述最后迭代的所述输出值等于所述第二向量的所述分量。
3.根据权利要求1所述的方法,还包括:
执行多个调整操作,其中所述多个调整操作中的每个调整操作要调整所述第一向量的相应分量的值,以补偿所述第一随机化操作,并且要使所述多次迭代中的所述最后迭代的所述输出值等于所述第二向量的所述分量。
4.根据权利要求1所述的方法,其中所述多次迭代的迭代次数等于所述第一向量的分量的数目对基数2的对数,并且其中所述第一向量的分量的所述数目等于所述第二向量的分量的数目。
5.根据权利要求1所述的方法,其中所述多次迭代中的每次迭代包括Cooley-Tukey蝶形变换的多个并行实例或Gentleman-Sande蝶形变换的多个并行实例。
6.根据权利要求1所述的方法,其中所述第一随机化操作还包括将到所述第一随机化迭代中的所述至少一个输入值乘以第一单位根。
7.根据权利要求6所述的方法,其中所述多次迭代中的第二随机化迭代的所述输出值中的一个或多个输出值使用第二随机化操作而被随机化,所述第二随机化操作包括将到所述第二随机化迭代中的至少一个输入值乘以所述一个或多个随机数中的第二随机数并且乘以作为第二单位根的第二数。
8.根据权利要求1所述的方法,其中所述第一随机数是从多个N阶单位根或从多个2N阶单位根被随机选择的第一单位根,其中N是所述第一向量的所述分量的数目。
9.根据权利要求1所述的方法,其中所述多次迭代中的每次迭代的所述输出值中的每个输出值基于所述先前迭代的两个输出值而被确定。
10.一种非暂态计算机可读介质,所述非暂态计算机可读介质上存储有指令,其中所述指令在由执行包括第一向量到第二向量的数论变换(NTT)的密码操作的处理设备执行所述指令时,使所述处理设备:
获得所述第一向量的分量;
获得一个或多个随机数;
执行多次迭代,其中在所述多次迭代中的每次迭代中,所述处理设备用于:
确定多个输出值,其中所述多个输出值中的每个输出值是两个或更多个输入值的线性组合;
其中,(1)到所述多次迭代中的第一迭代的所述输入值是所述第一向量的所述分量,(2)到所述多次迭代中的每个随后迭代中的所述输入值是所述多次迭代中的先前迭代的所述输出值,(3)所述多次迭代中的最后迭代的所述输出值表示所述第二向量的分量,并且其中所述多次迭代中的第一随机化迭代的所述输出值中的一个或多个输出值使用第一随机化操作而被随机化,所述第一随机化操作包括将到所述第一随机化迭代中的至少一个输入值乘以所述一个或多个随机数中的第一随机数;以及
基于所述多次迭代中的所述最后迭代的所述输出值,确定所述第二向量的所述分量。
11.根据权利要求10所述的计算机可读介质,其中所述指令还用于使所述处理设备:
执行多个调整操作,其中所述多个调整操作中的每个调整操作要调整所述多次迭代中的所述最后迭代的相应输出值,以补偿所述第一随机化操作,并且要使所述多次迭代中的所述最后迭代的所述输出值等于所述第二向量的所述分量。
12.根据权利要求10所述的计算机可读介质,其中所述指令还用于使所述处理设备:
执行多个调整操作,其中所述多个调整操作中的每个调整操作要调整所述第一向量的相应分量的值,以补偿所述第一随机化操作,并且要使所述多次迭代中的所述最后迭代的所述输出值等于所述第二向量的所述分量。
13.根据权利要求10所述的计算机可读介质,其中所述多次迭代的迭代次数等于所述第一向量的分量的数目对基数2的对数,并且其中所述第一向量的分量的所述数目等于所述第二向量的分量的数目。
14.根据权利要求10所述的计算机可读介质,其中所述多次迭代中的每次迭代包括Cooley-Tukey蝶形变换的多个并行实例或Gentleman-Sande蝶形变换的多个并行实例。
15.根据权利要求10所述的计算机可读介质,其中所述第一随机化操作还包括将到所述第一随机化迭代中的所述至少一个输入值乘以第一单位根。
16.根据权利要求15所述的计算机可读介质,其中所述多次迭代中的第二随机化迭代的所述输出值中的一个或多个输出值使用第二随机化操作而被随机化,所述第二随机化操作包括将到所述第二随机化迭代中的至少一个输入值乘以所述一个或多个随机数中的第二随机数并且乘以作为第二单位根的第二数。
17.根据权利要求10所述的计算机可读介质,其中所述第一随机数是从多个N阶单位根或从多个2N阶单位根被随机选择的第一单位根,其中N是所述第一向量的所述分量的数目。
18.根据权利要求10所述的计算机可读介质,其中所述多次迭代中的每次迭代的所述输出值中的每个输出值基于所述先前迭代的两个输出值而被确定。
19.一种用于执行包括第一向量到第二向量的数论变换(NTT)的密码操作的系统,所述系统包括:
存储器设备,用于存储第一向量和第二向量;以及
处理设备,被耦合到所述存储器设备,所述处理设备用于:
获得所述第一向量的分量;
获得一个或多个随机数;
执行多次迭代,其中在所述多次迭代中的每次迭代中,所述处理设备要用于:
确定多个输出值,其中所述多个输出值中的每个输出值是两个或更多个输入值的线性组合;
其中,(1)到所述多次迭代中的第一迭代的所述输入值是所述第一向量的所述分量,(2)到所述多次迭代中的每个随后迭代中的所述输入值是所述多次迭代中的先前迭代的所述输出值,(3)所述多次迭代中的最后迭代的所述输出值表示所述第二向量的分量,并且其中所述多次迭代中的第一随机化迭代的所述输出值中的一个或多个输出值使用第一随机化操作而被随机化,所述第一随机化操作包括将到所述第一随机化迭代中的至少一个输入值乘以所述一个或多个随机数中的第一随机数;以及
基于所述多次迭代中的所述最后迭代的所述输出值,确定所述第二向量的所述分量。
20.根据权利要求19所述的系统,其中所述处理设备还用于:
执行多个调整操作,其中所述多个调整操作中的每个调整操作要调整所述多次迭代中的所述最后迭代的相应输出值,以补偿所述第一随机化操作,并且要使所述多次迭代中的所述最后迭代的所述输出值等于所述第二向量的所述分量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062705027P | 2020-06-08 | 2020-06-08 | |
US62/705,027 | 2020-06-08 | ||
PCT/US2021/036005 WO2021252294A1 (en) | 2020-06-08 | 2021-06-04 | Protection of transformations by intermediate randomization in cryptographic operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115698938A true CN115698938A (zh) | 2023-02-03 |
Family
ID=78846444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180041128.0A Pending CN115698938A (zh) | 2020-06-08 | 2021-06-04 | 密码操作中通过中间随机化对变换的保护 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230254115A1 (zh) |
EP (1) | EP4162355A1 (zh) |
CN (1) | CN115698938A (zh) |
WO (1) | WO2021252294A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022260672A1 (en) * | 2021-06-10 | 2022-12-15 | Pqsecure Technologies, Llc | A low footprint resource sharing hardware architecture for crystals-dilithium and crystals-kyber |
WO2023055377A1 (en) * | 2021-09-30 | 2023-04-06 | Pqsecure Technologies, Llc | An area efficient architecture for lattice based key encapsulation and digital signature generation |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8139763B2 (en) * | 2007-10-10 | 2012-03-20 | Spansion Llc | Randomized RSA-based cryptographic exponentiation resistant to side channel and fault attacks |
US9942039B1 (en) * | 2016-09-16 | 2018-04-10 | ISARA Corporation | Applying modular reductions in cryptographic protocols |
DE102017117907B4 (de) * | 2017-08-07 | 2023-04-27 | Infineon Technologies Ag | Durchführen einer kryptografischen Operation |
-
2021
- 2021-06-04 US US18/008,602 patent/US20230254115A1/en active Pending
- 2021-06-04 CN CN202180041128.0A patent/CN115698938A/zh active Pending
- 2021-06-04 EP EP21821387.4A patent/EP4162355A1/en active Pending
- 2021-06-04 WO PCT/US2021/036005 patent/WO2021252294A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021252294A1 (en) | 2021-12-16 |
US20230254115A1 (en) | 2023-08-10 |
EP4162355A1 (en) | 2023-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10467389B2 (en) | Secret shared random access machine | |
US11983280B2 (en) | Protection of cryptographic operations by intermediate randomization | |
Antão et al. | RNS-based elliptic curve point multiplication for massive parallel architectures | |
US11424907B2 (en) | Countermeasures for side-channel attacks on protected sign and key exchange operations | |
Jiang et al. | Matcha: A fast and energy-efficient accelerator for fully homomorphic encryption over the torus | |
CN109388955A (zh) | 用于实施加密运算的方法和设备及存储介质 | |
US11902432B2 (en) | System and method to optimize generation of coprime numbers in cryptographic applications | |
US20230254115A1 (en) | Protection of transformations by intermediate randomization in cryptographic operations | |
US20220014363A1 (en) | Combined post-quantum security utilizing redefined polynomial calculation | |
US11995184B2 (en) | Low-latency digital signature processing with side-channel security | |
US20190229904A1 (en) | Secure computation system, secure computation device, secure computation method, and program | |
US20230318829A1 (en) | Cryptographic processor device and data processing apparatus employing the same | |
Bos | Low-latency elliptic curve scalar multiplication | |
Hu et al. | The analysis and investigation of multiplicative inverse searching methods in the ring of integers modulo m | |
Livesay et al. | Accelerating finite field arithmetic for homomorphic encryption on GPUs | |
CN114095149A (zh) | 信息加密方法、装置、设备及存储介质 | |
Park et al. | Efficient Parallel Implementation of Matrix Multiplication for Lattice‐Based Cryptography on Modern ARM Processor | |
Keliris et al. | Investigating large integer arithmetic on Intel Xeon Phi SIMD extensions | |
US11985221B2 (en) | Efficient masking of secure data in ladder-type cryptographic computations | |
JP6367959B2 (ja) | 部分文字列位置検出装置、部分文字列位置検出方法及びプログラム | |
CN116488788A (zh) | 全同态加密算法的硬件加速器、同态加密方法及电子设备 | |
Lapworth | Parallel encryption of input and output data for HPC applications | |
EP3972187A1 (en) | Protection of authentication tag computation against power and electromagnetic side-channel attacks | |
CN115840936A (zh) | 数论变换的低开销侧信道保护 | |
US11924320B2 (en) | Devices and methods for protecting cryptographic programs |
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 |