CN109388955B - 用于实施加密运算的方法和设备及存储介质 - Google Patents

用于实施加密运算的方法和设备及存储介质 Download PDF

Info

Publication number
CN109388955B
CN109388955B CN201810891557.7A CN201810891557A CN109388955B CN 109388955 B CN109388955 B CN 109388955B CN 201810891557 A CN201810891557 A CN 201810891557A CN 109388955 B CN109388955 B CN 109388955B
Authority
CN
China
Prior art keywords
encryption
hardware
coefficients
value
modulo
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
Application number
CN201810891557.7A
Other languages
English (en)
Other versions
CN109388955A (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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of CN109388955A publication Critical patent/CN109388955A/zh
Application granted granted Critical
Publication of CN109388955B publication Critical patent/CN109388955B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3093Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving Lattices or polynomial equations, e.g. NTRU scheme
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/3026Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

提供了一种用于实施运算的方法、设备和存储介质。该方法包括(a)将数据结构的系数从表示模q提升到表示模q’,其中数据结构包括作为减小的模q的值,其中q和q’是整数;(b)对模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到系数中;(c)对被提升且被随机化的系数实施运算;和(d)通过利用模q实施运算来减小被提升且被随机化的系数。

Description

用于实施加密运算的方法和设备及存储介质
技术领域
本发明的实施方式涉及有效地实施加密运算的方法,具体地涉及提高这种运算抗侧信道攻击的鲁棒性。
发明内容
第一实施方式涉及一种用于实施运算的方法,包括:
(a)将数据结构的系数从表示模q提升到表示模q’,其中数据结构包括为减小的模q的值,其中q和q’是整数;
(b)对模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到系数中;
(c)对被提升且被随机化的系数实施运算;
(d)通过利用模q实施运算来减小被提升且被随机化的系数。
第二实施方式涉及一种设备,包括:
-处理单元,
-加密单元,
-将处理单元与加密单元耦合的总线,
-其中,加密单元被布置成:
(a)将数据结构的系数从表示模q提升到表示模q’,其中数据结构包括为减小的模q的值,其中q和q’是整数;
(b)对模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到系数中;
-其中,处理单元被布置成:
(c)对被提升且被随机化的系数实施运算;
-并且其中,加密单元被布置成:
(d)通过利用模q实施运算来减小被提升且被随机化的系数。
第三实施方式涉及一种可直接加载到数字处理设备的存储器中的计算机程序产品,其包括用于执行如本文所述的方法的各步骤的软件代码部分。
附图说明
参照附图示出且说明了各实施方式。附图用于示出基本原理,因此仅示出了用于理解基本原理所必需的方面。附图不是按比例绘制的。在附图中,相同的附图标记表示相同的特征。
图1示出了包括实现抗侧信道攻击的保护的各步骤的示例图;
图2示出了处理设备的示例性布置,包括CPU、RAM、非易失性存储器、加密模块、模拟模块、输入/输出接口和硬件随机数生成器。
具体实施方式
通常存在从经典的非对称密码系统(RSA/ECC)转向无法被量子计算机成功攻击的方案的动机。即使目前量子计算机由于技术复杂性和工程挑战而无法可用,但是它们也能够在多项式时间内破解RSA和ECC。例如,像NIST(美国国家标准与技术研究院)这样的标准化机构正在研究替代的密码系统。
假想抵制量子计算机攻击的一类方案是基于格(lattice)的公共密钥加密、密钥交换或签名方案。它们可能成为RSA和ECC的后继者,并且在大矩阵(标准格)上运算或者在多项式环(理想格)上运算。对于基于格的加密,参考例如https://en.wikipedia.org/wiki/Lattice-based_cryptography。
然而,关于这种签名方案免受实现攻击的保护已知的不多。特别是,当在安全芯片卡控制器上或在任何不利环境中执行这些签名方案时,需要抗侧信道攻击的对策。
基于格的加密是一种密码系统,其安全性基于难度或与格中某些数学上难解的问题的难度相关。格是由基矢量的整数线性组合所创建的结构。因此,格可以被描述为n维空间中的规则结构。在这个n维空间中,某些基本问题,例如找到短基或短矢量,在数学上很难。通常,破解基于格的密码系统的难度可以降低到解决这种基本问题的难度或者与解决这种基本问题的难度相关。
本文使用以下缩写和参考:
q是整数,
q’是整数,
k是整数,
r是(随机选择的)整数,
vi是位置i处的矢量或多项式的系数,
ri是系数vi的随机值,
Zq是整数模q的环,它是整数模q的等同类的商环Z/qZ,
Zq′是整数模q’的环,
Z[x]/(f)是整数多项式模f的环;元素v∈Z[x]/(f)可以通过次数(degree)小于整数n的整数多项式来表示,或者作为系数矢量v∈Zn表示,Zq[x]/(f)是多项式f和整数q两者的整数多项式模的环;元素v∈Zq[x]/(f)可以通过具有系数减小的模q的次数小于n的整数多项式来表示,或者作为系数矢量表示,
x是不确定的,
f是整数n的最大次数的多项式,
n是指示维数(系数的数)的整数,
a是公共多项式,
s是秘密多项式,
i和j是自然数,
FFT快速傅里叶变换,
NTT数论变换,
DPA差分功耗分析,
SPA简单功耗分析,
ALU算术逻辑单元。
商环是抽象代数中的构造;有关详细信息,请参考例如https://en.wikipedia.org/wiki/Quotient_ring。
本文中描述的示例表明,安全性相关的计算在冗余表示中结合逐系数随机化来执行,以特别地实现抗侧信道攻击的保护。
可以以模q执行基于格的加密中的所有主要计算。在一些情况下,可以将整数q选择为某个素数(以例如启用NTT,这是因为NTT仅在参数被选择成某些素数的情况下才会以有效的方式工作)或者可以将整数q选择为2的幂。
本文中描述的解决方案特别提出在环Zq′中执行计算,其中对于给定的整数k,整数
q′=k·q。
例如,如果q=5且k=3,则q’=15。在这种情况下,对于x=10,x mod q’得到0,对于x=15,x mod q’得到0。因此,存在若干值x mod q’,这产生相同的值模q,因此,值x可以存在或者在冗余表示中被处理。
这样,通过随机选择整数r并将r·q加入环Zq′中的值,可以有效地随机化常数或中间值(多项式、矩阵或矢量的系数)。然后可以执行(特别是与安全性相关的)计算,从而在环Zq′中产生中间值。在最后的步骤中,对中间值执行减小模q以获得结果并去除随机化。
注意,在这方面“随机”(例如,随机选择或任何随机值)可以是真随机、伪随机或用于获得值的确定性方法。因此,根据在此提供的提议,这种“随机性”或任何随机效应的特性可能是攻击者不知道该值并且该值对于至少一部分运算是不同的。随机性特别地在“随机”确定(例如,生成或选择)的值之间添加一定水平的熵值。
当对随机值执行计算时,旨在从设备提取秘密密钥或中间值的侵入性和非侵入性攻击变得更加困难。可能的攻击涉及监测设备的功耗(DPA/SPA)或电磁发射。
示例性实现:
目前,存在两种基于格的加密,即基于理想格的加密和基于标准格的加密。只要使用模q的值,本文提出的方法就可以适用于各种基于格的加密。
基于理想格的加密中的基本运算是商环Zq[x]/(f)中的多项式乘法、加法或减法,其中模q是整数,并且维数(系数的数)是整数n。
可以通过减小“模多项式f”来实现多项式的减小。f的示例性值是
f=xn+1或f=xn-1,
但是可以相应地使用其他多项式。
基于标准格的加密中的运算包括矩阵-矩阵乘法、矩阵-矢量乘法、或矢量加法和减法,其中系数是在整数模q的环中的值。
当使用本文描述的方法时,环Zq′中的矩阵或多项式的每个系数具有若干表示,每个表示对应于环Zq中的一个表示。在应用合适的随机化的情况下,攻击者难以区分环Zq′中的表示。
图1示出了包括实现针对侧信道攻击的保护的各步骤的示例图。给定模q。根据所需的保护级别选择整数k。
步骤101提供环Zq[x]/(f)中的秘密多项式s,其中多项式f示例性地定义为f=xn+1。
步骤102包括提升运算,该提升运算将多项式、矩阵或矢量的系数从其表示模q移动到表示模q’。在该示例中,对秘密多项式s进行提升。由于表示模q’与表示模q相比需要更多的存储器,因此该提升运算可能需要为系数分配存储空间。
步骤103包括随机化运算:对于每个系数vi,确定随机值ri。将随机值ri与整数q相乘,并将结果ri·q加到系数vi。系数vi可以是矩阵、矢量或多项式的系数。该步骤103的输出是随机秘密多项式。
步骤104包括可以使用模q’、利用已知的代数、多项式、矩阵和/或矢量算术来执行的计算。该方法尤其可适用于FFT和/或NTT运算。
有利地,观察计算(分析例如功率、定时、电磁发射)的攻击者不能确定由于随机化运算引起的模式。
可选步骤105包括重新随机化运算,其中随机化运算被应用于已经随机化的中间结果。这允许引入额外的随机层。
可选步骤106可以实施与步骤104类似或不同的其他计算。
步骤107包括减小步骤,该步骤通过利用模q执行计算而将环Zq′中的所有值返回到环Zq中。
与秘密多项式s相反,在环Zq[x]/(f)中可能存在公共多项式a,其中f=xn+1(参见步骤108)。在步骤109(类似于步骤102)中,可以对公共多项式a的系数进行提升运算。该步骤109的输出提供在环Zq′中提升的公共多项式。在步骤110中,可以执行与计算104类似或不同的计算。在步骤110之后,执行步骤106和因此的步骤107以进行(可选的)进一步计算并且用于将提升的公共多项式的值从环Zq′返回到环Zq
在该示例中,包括步骤108至步骤110的路径指示可以不必通过引入随机化和可选的重新随机化来保护公共信息(这里是公共多项式a)。这是有益的,因为减少了对不必保密的信息的处理工作量。
其他方面:
这种方法的效果可能受到模q选择的影响。基于格的加密中的模的大小影响方案的性能、安全性和正确性,但是设计者也可以获得一些自由度(例如,平衡模的大小与噪声的大小)。一种可能的选择标准是选择模q使得它们是非稀疏的,即具有大的Hamming(汉明)权重或不规则的二元结构。作为一个示例,对于
q=216=100000000000000002
k=30
10.q=101000000000000000002
(即r=10)仍然是相当规则的,并且当被加到系数时不会影响较低阶。
因此,对于非2的幂模或二进制表示中的非稀疏模,冗余表示的使用明显更有效。
作为示例,当选择具有非稀疏表示的模时,例如,
q=87717=101010110101001012
随机化值,例如,
10.87717=110101100010011100102
影响系数的更多位,这使得攻击者对系数的可预测性降低。
选择模q′的另一个标准是模q′较小,但非常接近由架构或处理器施加的特定限制,例如,微控制器/微处理器的8位、16位、32位或64位或者FPGA的18位或36位(例如,Xilinx)。可以特别地选择模q’,使得它与处理器(例如,数字信号处理器,DSP)和/或嵌入式乘法器的宽度匹配。
可以选择整数k和因此的整数q′,使得寄存器中未使用的和以其他方式浪费的位用于随机化目的。在基于格的加密中,整数q(相当于例如14位)通常小于寄存器的大小,寄存器的大小可以包括例如32位。在硬件中,ALU(乘法器、模减小)和寄存器可以缩放,但是对设计的影响很小。通过对于k选择足够的大小,增加的随机性的强度可以与所需的资源消耗平衡。
在这种情况下,冗余表示技术的额外成本很低。
此外,例如,当模q′导致Barrett减小或Montgomery模乘法的有利常数时,可以以实现有效模减小的方式选择(或通过强力破解发现)模q′。
还可以基于所需的保护在模q′的不同值之间切换,其中较大的模q′值可以用于更灵敏的计算。
出于效率原因,以易于确定随机值的方式选择(q′=kq中的)因子k可能是有益的,例如,在0和k-1之间选择随机值r。示例:如果因子k被设定为20,则可以在0和19之间选择随机值ri
然而,这可能需要昂贵的拒绝性采样或其他步骤,使得对于k选择2的幂是理想的。作为替代,可以在零和小于k的二的幂数值之间对随机值ri进行采样。示例:对于k=64,在0至63之间对随机值ri采样可能很容易,因为它只需要从随机位流中去除不需要的高阶比特而不需要拒绝性采样。
注意,可以从接近均匀分布的分布中对随机值r进行采样。然而,在其他变型中,样本也可以取自其他分布,例如(小)高斯分布或略微偏斜的分布。
在基于格的加密的一些示例中,秘密多项式、矩阵或矢量的系数可以是小的(例如,-1、0、1)和稀疏的(许多零系数)并且这种稀疏性可以被攻击者检测到(例如,与零相乘比与1相乘消耗更少的功率)。通过对稀疏多项式、矩阵或矢量执行提升运算和随机化运算,消除了这种稀疏性并且利用特定形状的攻击将变得更难。
提升运算和随机化运算也可以被并入对随机值的采样,并且不必是不同的或单独的运算。作为示例,通用离散高斯噪声采样器可以直接采样到冗余表示中。这通常意味着采样器可能不输出以整数q为模的噪声,而是输出以采样器在采样过程期间已经对其实施随机化的整数q’为模的噪声。作为示例性实现,采样器可以首先通过选择与整数q相乘的随机值r来随机化将包含噪声样本的寄存器,然后将r·q存储在寄存器中。然后可以将已采样系数直接添加到已经随机化的寄存器中。这样,采样值不以明文或非随机的方式被存储。
所介绍的方法可以在ASIC、微控制器和/或微处理器上实现。它可用于基于格假设来保护公钥加密或签名方案。在[Tim Güneysu,Vadim Lyubashevsky,ThomasPractical Lattice-Based Cryptography:A Signature Scheme for EmbeddedSystems.CHES 2012:530-547]中描述了一种使用q=838349和n=512的签名方案。最关键的秘钥运算是以下多项式的计算
z1=s1·c+y1
z2=s2·c+y2
,其中秘密临时(即,为每个签名采样新的)多项式y1和y2具有在-214与214之间被随机采样的系数,并且其中“·”运算被解释为环Zq[x]/(f)中的多项式乘法并,且“+”运算被解释为环Zq[x]/(f)中的多项式加法。
多项式c是根据散列函数(仅32位被设定为1,其余设定为0)的输出生成的小的稀疏多项式。该散列函数将消息以及多项式a与多项式y1和y2的组合作为输入。这样,消息被绑定到多项式y1和y2以及a.,多项式c作为签名的一部分连同多项式z1和z2一起被返回给用户。然而,为了安全起见,多项式z1和z2在输出之前被处理,使得值与秘钥多项式s1和s2无关。
秘钥多项式s1和s2可以是小的,并且可以包括特别是从-1或0或1中随机选择的系数。为了保护秘钥,可以在涉及秘钥多项式s1,s2或秘密临时多项式y1,y2的每次运算之前实施提升运算和随机化运算,使得在环zq′[x]/(f)中执行“·”运算和“+”运算。示例性选择是k=29,使得q′=4292346368,即q′<232。这样,以q’为模确定的元素仍然适合32位寄存器。
多项式z1的示例性计算可以如下:
z1=减小(随机化(提升(s1))·随机化(提升(c))+随机化(提升(y1)))。
为了附加的安全性,还可以将秘钥多项式s1和s2(或通常的任何值)先存储在冗余表示中(即,提升和随机化)并且在每个秘钥运算之前执行重新随机化运算。
本文描述的方法还可以与掩蔽的实现结合使用,在掩蔽实现中秘钥被分成两个(优选随机的)份额(例如,在[Oscar Reparaz,Sujoy Sinha Roy,Ruan de Clercq,Frederik Vercauteren,Ingrid Verbauwhede:Masking ring-LWE.J.CryptographicEngineering 6(2):139-153(2016)]中提出)。这样,可以利用如本文所述的增强保护来扩展掩蔽的安全性。
示例性实施方式:
以下描述了本文提出的方法的示例性实施方式的细节:
整数模q=12289
整数k=100
整数模q’=k*q=1228900
整数n=8
多项式模f=xn-1
输入v1=[32,4332,41,232,4343,5343,3131,222]
输入v2=[323,121,534,532,4343,132,332,32]
输入v3=[0,1,2,3,1,4,1,3]
作为示例,执行v1·v3+v2的计算。“·”运算被解释为环Zq[x]/(f)中包含减小q的多项式乘法。“+”运算被解释为环Zq[x]/(f)中包含减小模q的多项式加法。该计算的结果为[4277,8482,10560,3584,866,6848,8546,7124],必须对其进行检查(见下文)。
本文描述的方法的示例性步骤:
-使用提升和随机化将v1·v3+v2计算到不同的域中,
-该域中的计算,
-计算后的重新随机化,和
-减小以获得最终结果(等于预期结果)。
提升&随机化:
v1_提升=[786528,28910,331844,270590,913729,840995,1109141,98534]
考虑到v1_提升的第一分量和v1,提升(和随机化)基于值32得到值786528。这通过计算32+64*12289来达到,其中64是随机值r并且12289是模q。
在该示例中,经历运算vi+ri*q以将v1提升到v1_提升的随机值ri是[64,2,27,22,74,68,90,8]。下表总结了v1_提升的分量和v1的此运算:
相应地确定v2_提升和v3_提升得到
v2_提升=[516461,36988,270892,627271,28921,245912,799117,675927]
v3_提升=[270358,725052,995411,3,995410,860234,417827,184338]
接下来,进行中间值的计算:
e1_提升=v1_提升·v3_提升。
当对提升的多项式进行“+”或“·”运算时,这意味着它们将被解释为环Zq′[x]/(f)中的多项式加法或多项式乘法。
这得到:
e1_提升=[348046,1114371,1128325,728103,660129,842368,1101935,818166]
对中间结果e1_提升的可选重新随机化得到:
[298890,291008,10026,838704,475794,350808,868444,486363]
接下来是对另一个中间值e2_提升的计算,如下所示:
e2_提升=e1_提升+v2_提升
e2_提升=[815351,327996,280918,237075,504715,596720,438661,1162290]。
在减小中,从e2_提升中去除冗余表示,从而得到
结果_最终=[4277,8482,10560,3584,866,6848,8546,7124]。
这对应于如上所示的初始运算v1·v3+v2的结果。
出于说明目的:结果_最终的第一个值如下获得:
815351modulo 12289=4277。
相应地确定结果_最终的剩余值。
在下文中,示出了提供上述结果的算法。示例性地使用编程语言Python:
本文中描述的示例可以实现为由诸如个人计算机、微控制器或智能卡的数据处理设备处理的指令。
图2示出了处理设备200,其包括CPU 201、RAM 202、非易失性存储器203(NVM)、加密模块204、模拟模块206、输入/输出接口207和硬件随机数生成器212。
在该示例中,CPU 201可以通过共享总线205访问至少一个加密模块204,每个加密模块204耦合到共享总线205。每个加密模块204可以特别地包括一个或更多个加密核以执行某些加密运算。示例性加密核是:
AES核209,
SHA核210,
ECC核211,和
基于格的加密(LBC)核208。
可以提供基于格的加密核208以加速基于格的加密。
CPU 201、硬件随机数生成器212、NVM 203、加密模块204、RAM 202和输入/输出接口207连接至总线205。输入输出接口207可以具有至可能类似于处理设备200的其他设备的连接214。
加密模块204可以配备或不配备有基于硬件的安全组件。
通过电接触和/或通过电磁场向模拟模块206供应电力213。提供该电力以驱动处理设备200的电路,并且可以特别允许输入/输出接口经由连接214发起和/或维持与其他设备的连接。
总线205本身可以被掩蔽或明示。处理本文描述的各步骤的指令尤其可以被存储在NVM 203中并由CPU 205处理。经处理的数据可以被存储在NVM 203中或RAM 202中。加密模块204可以提供支持功能(例如,伪随机数据的扩展)。随机数由硬件随机数生成器212提供。
本文描述的方法的各步骤可以排他地或至少部分地在加密模块204上进行,例如在基于格的加密核208上。例如,指令可以被存储在基于格的加密核208中,或者它们可以由CPU 201经由总线205提供。数据可以与基于格的加密核208一起被本地存储。还可以选择将数据临时存储在RAM 202或NVM 203中。基于格的加密核208还可以使用其他加密模块来提供支持功能(例如,伪随机数据的扩展)。基于格的加密核208还可以包括硬件随机数生成器212或用于生成物理和/或软件随机数的装置。
处理设备200可以是通过直接电接触供电或通过电磁场供电的芯片卡。处理设备200可以是固定电路或基于可重新配置的硬件(例如,现场可编程门阵列,FPGA)。处理设备200可以耦合到个人计算机、微控制器、FPGA或智能电话。
本文提出的示例尤其可以基于以下解决方案中的至少一种。特别地,可以使用以下特征的组合以达到期望的结果。该方法的特征可以与设备、装置或系统的任何特征组合,反之亦然。
提出了一种用于实施运算的方法,所述方法包括:
(a)将数据结构的系数从表示模q提升到表示模q’,其中数据结构包括为减小的模q的值,其中q和q’是整数;
(b)对模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到系数中;
(c)对被提升且被随机化的系数实施运算;
(d)通过利用模q实施运算来减小被提升且被随机化的系数。
该运算尤其受到保密。它尤其可以是加密运算或作为加密运算的一部分的运算。
注意,(a)和(b)可以组合成单个提升和随机化步骤,即确定提升空间q’中的随机化系数。
还应注意,整数q和q’彼此不同并且q’>q。
还要注意的是,在步骤(b)中,将相乘的结果加到系数,并且将该运算的结果确定为模q’,其对应于已提升的系数被“提升”到表示模q’的事实这一事实。
在一个实施方式中,q’的值大于q的值。
作为一个特别选项,将q与整数k相乘得到q’,即q′=k·q。
在一个实施方式中,数据结构包括以下中的至少一个:多项式、矩阵或矢量。
数据结构尤其可以是环Zq[x]/(f)中的多项式f。多项式f可以被示例性地定义为f=xn+1或f=xn-1。
在一个实施方式中,运算是算术运算。
在一个实施方式中,运算是加密运算。
在一个实施方式中,运算是基于格的运算。
基于格的加密是一种密码系统,其安全性基于格中某些数学上难以解决的问题的难度。格是由基矢量的整数线性组合所创建的结构。因此,格可以被描述为n维空间中的规则结构。在这个n维空间中,像找到短基或短矢量这样的某些基本问题在数学上很难。通常,破解基于格的密码系统的难度可以降低到解决这种基本问题的难度或者与解决这种基本问题的难度相关。
在一个实施方式中,该方法还包括步骤(c):
(c1)在转至步骤(d)之前至少重复步骤(b)和(c)一次。
因此,可以根据步骤(b)实施另一随机化,其中使用另一个随机值与q的值相乘,并且将该相乘的结果加到作为在步骤(c)中实施的运算的结果的每个系数中;然后,实施根据步骤(c)的另一运算,从而产生另一组系数。之后,根据步骤(d)的减小产生表示模q中的(未提升的)系数。
在一个实施方式中,数据结构是秘密数据结构。
在一个实施方式中,q的值和/或q’的值是素数或2的幂。
在一个实施方式中,q’的值被选择成使得它对应于集成处理单元的宽度。
处理单元的宽度可以是总线的宽度。宽度可以特别地定义若干位,这些位经受集成处理单元的单个运算。
集成处理单元可以是处理器、控制器、FPGA、数字信号处理器或嵌入式加法器和/或乘法器。
在一个实施方式中,q’的值变化。
q’的值可以例如根据安全性级别而选自至少两个值。
在一个实施方式中,该方法被用于操作处理设备,尤其是以下处理设备之一:
-FPGA,
-处理单元,
-控制器,
-智能卡。
此外,提供了一种设备,其中该设备包括:
-处理单元,
-加密单元,
-将处理单元与加密单元耦合的总线,
-其中,加密单元被布置成:
(a)将数据结构的系数从表示模q提升到表示模q’,其中数据结构包括为减小的模q的值,其中q和q’是整数;
(b)对模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到系数中;
-其中,处理单元被布置成:
(c)对被提升且被随机化的系数实施运算;
-并且其中,加密单元被布置成:
(d)通过利用模q实施运算来减小被提升且被随机化的系数。
注意,该设备可以是安全设备,其可以特别地是或包括集成电路(IC)、硬件安全模块(HSM)、可信平台模块(TPM)。
加密单元可以是或包括以下之一:加密处理器、安全控制器的加密部分或安全控制器。加密单元还可以包括加密核或加密模块或者是加密核或加密模块。
该设备可以是安全控制器、软件狗(dongle)。
该设备尤其可以包括硬件和软件部分。它尤其可以包括硬件信任根。
还应注意,加密单元可以是HSM或TPM或包括HSM或TPM。还可选择使TPM包括CPU、加密模块和加密核。
在一个实施方式中,该设备是FPGA、处理单元、控制器、智能卡集成电路(智能卡IC)或智能卡。
此外,提出了一种可直接加载到数字处理设备的存储器中的计算机程序产品,包括用于执行如本文所述的方法的各步骤的软件代码部分。
另外,上述问题通过计算机可读介质得以解决,例如具有适于使计算机系统执行本文所述方法的计算机可执行指令的任何类型的存储设备。
此外,上述问题通过包括至少一个如本文所述的设备的通信系统来解决。
在一个或更多个示例中,本文所描述的各功能可至少部分地以硬件(诸如,特定硬件组件或处理器)来实施。更一般地,这些技术可以用硬件、处理器、软件、固件或其任何组合来实现。如果以软件实现,则该功能可以作为一个或更多个指令或代码被存储在计算机可读介质上或者通过计算机可读介质进行传输,并且由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其中,计算机可读存储介质对应于有形介质诸如数据存储介质或包括便于例如根据通信协议将计算机程序从一个地方传送至另一个地方的任何介质的通信介质。以这种方式,计算机可读介质通常可以对应于(1)非暂态有形计算机可读存储介质或(2)通信介质诸如信号或载波。数据存储介质可以是能够由一个或更多个计算机或一个或更多个处理器访问以取回用于实现本公开内容中所描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,这样的计算机可读存储介质可以包括RAM、ROM、EEPROM、CD-ROM或任何其他光盘存储器、磁盘存储器或任何其他磁存储设备、闪存或者可以用于存储呈指令或数据结构形式的期望程序代码并且可以由计算机访问的任何其他介质。另外,任何连接都适当地称为计算机可读介质,即计算机可读传输介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或者无线技术(诸如红外线、无线电以及微波)从网站、服务器或其他远程源处发送指令,那么同轴电缆、光纤电缆、双绞线、DSL或者无线技术(诸如红外线、无线电以及微波)都包括在介质的定义中。然而,应该理解的是,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他暂态介质,而是涉及非暂态、有形存储介质。在本文中使用的磁盘和盘(Disk和disc)包括光盘(CD)、激光盘、光碟片、数字多功能盘(DVD)、软盘以及蓝光光盘,其中,磁盘通常磁性地复制数据,而盘使用激光光学地复制数据。上述项的组合也应当包括在计算机可读介质的范围内。
指令可以由一个或更多个处理器(诸如一个或更多个中央处理单元(CPU)、数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或者其他等效集成或分立逻辑电路系统)来执行。因此,本文中使用的术语“处理器”可以指适用于实现本文中所描述的技术的任何前述结构或任何其他结构。此外,在一些方面,本文中所描述的功能可以设置在配置成用于编码和解码的专用硬件和/或软件模块中或者并入组合的编码译码器中。同样,可以在一个或更多个电路或者逻辑元件中充分实现该技术。
本公开内容的技术可以在包括无线手持机、集成电路(IC)或IC组(例如,芯片组)的各种各样的设备或装置中实现。在本公开内容中描述了各种部件、模块或单元以强调配置成执行所公开技术的设备的功能方面,但是并非必须需要通过不同的硬件单元来实现。此外,如上所述,各种单元可以组合在单个硬件单元中,或者由包括如上所述一个或更多个处理器的一组互配合的硬件单元、结合适当的软件和/或固件来提供。
虽然已经公开了本发明的各种示例性实施方式,但是对于本领域的技术人员来说明显的是,可以在不偏离本发明的精神和范围的情况下进行各种变化和修改,这些改变和修改将实现本发明的一些优点。对于本领域的那些相当熟练的技术人员来说显而易见的是,执行相同功能的其他部件可以被适当地替换。应该提到的是,参考特定附图说明的特征可以与其他附图的特征组合,甚至在未明确提及的情况下也是如此。此外,本发明的方法可以使用适当的处理器指令全部以软件实现方式,或者以利用硬件逻辑和软件逻辑的组合的混合实现方式中来实现,以达到相同的结果。对本发明构思的这些修改旨在由所附权利要求覆盖。

Claims (18)

1.一种用于实施加密运算的方法,所述加密运算在安全设备中被实施以增加所述加密运算抗侧信道攻击的鲁棒性,所述方法包括:
(a)通过被配置成执行加密运算的硬件,将数据结构的系数从表示模q提升到表示模q’,其中所述数据结构包括作为减小的模q的值,其中q和q’是整数;
(b)通过所述硬件,对所述模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到所述系数中;
(c)通过所述硬件,对被提升且被随机化的系数实施所述加密运算;以及
(d)通过所述硬件,通过利用所述模q实施运算来减小所述被提升且被随机化的系数,以提供所述加密运算的结果。
2.根据权利要求1所述的方法,其中,q’的值大于q的值。
3.根据权利要求1或2所述的方法,其中,所述数据结构包括以下中的至少一个:多项式、矩阵和矢量。
4.根据权利要求1或2所述的方法,其中,所述加密运算是算术运算。
5.根据权利要求1或2所述的方法,其中,所述加密运算是基于格的运算。
6.根据权利要求1或2所述的方法,还包括在步骤(c)之后:
(c1)在转至步骤(d)之前重复步骤(b)和(c)至少一次。
7.根据权利要求1或2所述的方法,其中,所述数据结构是秘密数据结构。
8.根据权利要求1或2所述的方法,其中,q的值和/或q’的值是素数或二的幂。
9.根据权利要求1或2所述的方法,其中,q’的值被选择成使得其对应于集成处理单元的宽度。
10.根据权利要求1或2所述的方法,其中,q’的值是变化的。
11.根据权利要求1或2所述的方法,其中,所述安全设备是以下之一:
现场可编程门阵列,
处理单元,
控制器,和
智能卡。
12.一种安全设备,所述安全设备用于用于实施加密运算以增加所述加密运算抗侧信道攻击的鲁棒性,所述安全设备包括:
处理单元,
硬件,其通过总线被耦接至所述处理单元,并且被配置成执行所述加密运算,
其中,所述硬件被布置成:
(a)将数据结构的系数从表示模q提升到表示模q’,其中所述数据结构包括作为减小的模q的值,其中q和q’是整数,
(b)对所述模q’中的系数进行随机化,其中对于每个系数,将随机值与q的值相乘,并且将该相乘的结果加到所述系数中,
其中,所述处理单元被布置成:
(c)对被提升且被随机化的系数实施所述加密运算;
并且其中,所述硬件被布置成:
(d)通过利用所述模q实施运算来减小所述被提升且被随机化的系数,以提供所述加密运算的结果。
13.根据权利要求12所述的安全设备,其中,所述安全设备是现场可编程门阵列、处理单元、控制器或智能卡。
14.根据权利要求12所述的安全设备,其中,所述安全设备包括集成电路、硬件安全模块或可信平台模块。
15.根据权利要求12所述的安全设备,其中,所述硬件包括加密处理器、安全控制器的加密部分、安全控制器、加密核或加密模块。
16.根据权利要求12所述的安全设备,其中,所述硬件包括硬件安全模块或可信平台模块。
17.根据权利要求16所述的安全设备,其中,所述可信平台模块包括中央处理单元、加密模块和加密核。
18.一种存储有计算机程序产品的存储介质,所述计算机程序产品能够直接加载到数字处理设备的存储器中,并且包括用于执行根据权利要求1至11中任一项所述的方法的各步骤的软件代码部分。
CN201810891557.7A 2017-08-07 2018-08-07 用于实施加密运算的方法和设备及存储介质 Active CN109388955B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102017117907.0 2017-08-07
DE102017117907.0A DE102017117907B4 (de) 2017-08-07 2017-08-07 Durchführen einer kryptografischen Operation

Publications (2)

Publication Number Publication Date
CN109388955A CN109388955A (zh) 2019-02-26
CN109388955B true CN109388955B (zh) 2023-11-07

Family

ID=65019813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810891557.7A Active CN109388955B (zh) 2017-08-07 2018-08-07 用于实施加密运算的方法和设备及存储介质

Country Status (3)

Country Link
US (1) US10965462B2 (zh)
CN (1) CN109388955B (zh)
DE (1) DE102017117907B4 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017117899A1 (de) * 2017-08-07 2019-02-07 Infineon Technologies Ag Durchführen einer kryptografischen Operation
US10778407B2 (en) * 2018-03-25 2020-09-15 Nuvoton Technology Corporation Multiplier protected against power analysis attacks
DE102018108313A1 (de) * 2018-04-09 2019-10-10 Infineon Technologies Ag Verfahren und Verarbeitungsvorrichtung zum Ausführen einer kryptografischen Operation auf Gitterbasis
US11032061B2 (en) * 2018-04-27 2021-06-08 Microsoft Technology Licensing, Llc Enabling constant plaintext space in bootstrapping in fully homomorphic encryption
WO2020215146A1 (en) * 2019-04-23 2020-10-29 Quantropi Inc. Enhanced randomness for digital systems
KR20210081471A (ko) 2019-12-23 2021-07-02 삼성전자주식회사 프로그램 코드를 저장하는 비일시적 컴퓨터 판독가능 매체, 복호화 장치, 및 암호화 장치와 복호화 장치를 포함하는 통신 시스템
JP7273753B2 (ja) * 2020-03-06 2023-05-15 株式会社東芝 数論変換処理装置、数論変換処理方法及びプログラム
EP4162355A4 (en) * 2020-06-08 2024-07-24 Cryptography Res Inc TRANSFORMATION PROTECTION THROUGH INTERMEDIATE RANDOMIZATION IN CRYPTOGRAPHIC OPERATIONS
DE102020121229B3 (de) * 2020-08-12 2022-01-27 Infineon Technologies Ag Verfahren zum Überprüfen einer GDFT-Operation und Sicherheitseinrichtung zur Durchführung des Verfahrens
CN113253972A (zh) * 2021-05-13 2021-08-13 南京航空航天大学 一种lac中稀疏多项式乘法加速器的fpga实现方法
EP4199410A1 (en) * 2021-12-17 2023-06-21 Thales Dis France SAS Method secured against side-channel attacks performing a cryptographic algorithm comprising a polynomial operation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200839609A (en) * 2006-11-06 2008-10-01 Atmel Corp Modular multiplication method with precomputation using one known operand
CN101632255A (zh) * 2007-03-12 2010-01-20 爱特梅尔公司 密码方法及系统
CN104509024A (zh) * 2012-07-26 2015-04-08 Nds有限公司 用于使输入同态随机化的方法和系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2263588C (en) * 1996-08-19 2005-01-18 Ntru Cryptosystems, Inc. Public key cryptosystem method and apparatus
FR2824209B1 (fr) * 2001-04-30 2003-08-29 St Microelectronics Sa Brouillage d'un calcul mettant en oeuvre une fonction modulaire
US7995765B2 (en) * 2008-08-28 2011-08-09 Red Hat, Inc. Sharing a secret using hyperplanes over GF(q)
US9281941B2 (en) 2012-02-17 2016-03-08 International Business Machines Corporation Homomorphic evaluation including key switching, modulus switching, and dynamic noise management
EP2667539A1 (en) * 2012-05-21 2013-11-27 Koninklijke Philips N.V. Key sharing methods, device and system for configuration thereof.
FR2995111B1 (fr) 2012-09-04 2015-07-24 Morpho Protection contre canaux auxiliaires
CN105027180B (zh) * 2013-01-17 2017-03-29 日本电信电话株式会社 保密计算系统、运算装置、以及保密计算方法
WO2017008043A1 (en) 2015-07-08 2017-01-12 Brown University Homomorphic encryption
US10153894B2 (en) 2015-11-05 2018-12-11 Microsoft Technology Licensing, Llc Homomorphic encryption with optimized encoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200839609A (en) * 2006-11-06 2008-10-01 Atmel Corp Modular multiplication method with precomputation using one known operand
CN101632255A (zh) * 2007-03-12 2010-01-20 爱特梅尔公司 密码方法及系统
CN104509024A (zh) * 2012-07-26 2015-04-08 Nds有限公司 用于使输入同态随机化的方法和系统

Also Published As

Publication number Publication date
DE102017117907A1 (de) 2019-02-07
US20190044720A1 (en) 2019-02-07
DE102017117907B4 (de) 2023-04-27
US10965462B2 (en) 2021-03-30
CN109388955A (zh) 2019-02-26

Similar Documents

Publication Publication Date Title
CN109388955B (zh) 用于实施加密运算的方法和设备及存储介质
CN110363030B (zh) 用于执行基于格的密码操作的方法和处理设备
US11798435B2 (en) Executing a cryptographic operation
Fritzmann et al. Efficient and flexible low-power NTT for lattice-based cryptography
Hossain et al. High‐performance elliptic curve cryptography processor over NIST prime fields
US20200313886A1 (en) Executing a cryptographic operation
Boorghany et al. On constrained implementation of lattice-based cryptographic primitives and schemes on smart cards
EP3126959B1 (en) Elliptic curve point multiplication procedure resistant to side-channel information leakage
US11139971B2 (en) Conducting a cryptographic operation
WO2009091746A1 (en) Representation change of a point on an elliptic curve
US20220029824A1 (en) Providing a Cryptographic Information
US11627002B2 (en) Cryptographic operation
KR20140046568A (ko) 단순 전력 파형 분석 및 오류 주입 분석을 방지하는 타원곡선 암호화 방법 및 그 시스템
Morales‐Sandoval et al. Scalable GF (p) Montgomery multiplier based on a digit–digit computation approach
Zijlstra et al. FPGA implementation and comparison of protections against SCAs for RLWE
CN107896142B (zh) 一种执行模幂运算的方法及装置、计算机可读存储介质
Kaleel Rahuman et al. Reconfigurable architecture for elliptic curve cryptography using fpga
US11985221B2 (en) Efficient masking of secure data in ladder-type cryptographic computations
Oder Efficient and side-channel resistant implementation of lattice-based cryptography
Ambrose et al. DARNS: A randomized multi-modulo RNS architecture for double-and-add in ECC to prevent power analysis side channel attacks
Knežević et al. Signal processing for cryptography and security applications
Ambrose et al. Randomised multi‐modulo residue number system architecture for double‐and‐add to prevent power analysis side channel attacks
Ambika et al. Data security using serial commutative RSA CORE for multiple FPGA system
US20230412370A1 (en) Processing of Cryptographic Data
Eriksson Implementing and Evaluating the Quantum Resistant Cryptographic Scheme Kyber on a Smart Card

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