本公开内容涉及用于执行基于格的密码操作的方法和处理设备。
背景技术:
最近,美国政府宣布将从如rsa(rivestshamiradleman)和ecc(椭圆曲线密码术)的传统非对称密码系统转向不能被量子计算机攻击的方案。目前,由于技术复杂性和工程挑战,量子计算机不可用,但量子计算机一旦建成,它们就能够在多项式时间内破坏rsa和ecc。因此,如nist(美国国家标准与技术研究院)的标准化机构现在也在积极研究替代的密码系统。因此,替代方案被研究。料想会抵制量子计算机攻击的一类方案是基于格的公共(public)密钥加密、密钥交换或签名方案。它们可以变为rsa和ecc的继承者,并且可以在大矩阵(标准格)或多项式环(理想格)上运行。因此,期望用于安全地实现基于格的公共密钥加密的方法。
技术实现要素:
根据各种实施方式,提供了一种用于执行基于格的密码操作的方法,该方法包括:获得噪声多项式、秘密多项式和公共多项式;通过将噪声多项式、秘密多项式和公共多项式中的至少一个与随机盲多项式相乘来伪装噪声多项式、秘密多项式和公共多项式中的至少一个;基于所伪装的多项式(或所伪装的多个多项式)来计算公共多项式和秘密多项式的乘积与噪声多项式之和;以及基于所计算的公共多项式和秘密多项式的乘积与噪声多项式之和来确定基于格的密码操作的结果。
附图说明
在附图中,相同的附图标记通常在不同视图中指代相同的部件。附图不一定按比例绘制,而是通常将重点放在说明本发明的原理上。在下面的描述中,参照以下附图描述了各个方面,在附图中:
图1示出了具有用于执行密码操作的各种部件的处理设备。
图2示出了处理设备的另一示例。
图3示出了说明上述过程的实现的处理电路。
图4示出了说明用于执行基于格的密码操作的方法的流程图。
图5示出了用于执行基于格的密码操作的处理设备。
具体实施方式
以下详细描述参考了附图,附图通过图示的方式示出了可以实践本发明的本公开内容的具体细节和方面。可以利用其他方面,并且可以在不脱离本发明的范围的情况下进行结构、逻辑和电气变化。本公开内容的各个方面不一定是相互排斥的,原因是本公开内容的一些方面可以与本公开内容的一个或更多个其他方面组合以形成新的方面。
在下文中,描述了用于随机化基于格的密码系统的执行以防止诸如故障和侧信道攻击的物理攻击的实施方式。具体地,描述了用于基于格的密码系统的盲方法,其对抗侧信道攻击。在随机多项式与其逆之间的关系的使用中结合数论变换的特征可以看出基本思想。
本文中描述的示例可以被实现为由如个人计算机、微控制器、智能卡、安全微控制器、硬件信任根、(嵌入式)安全元件(ese)、可信平台模块(tpm)或硬件安全模块(hsm)的处理设备处理的指令。
图1示出了处理设备100的示例,该处理设备100包括cpu101、ram102、非易失性存储器103(nvm)、密码模块104、模拟模块106、输入/输出接口107和硬件随机数字发生器112。
在该示例中,cpu101可以通过共享总线105访问至少一个密码模块104,每个密码模块104耦接至共享总线105。每个密码模块104可以特别地包括一个或更多个密码核,以执行某些密码操作。示例性密码核是:
-aes核109,
-sha核110,
-ecc核111,以及
-基于格的密码(lbc)核108。
可以提供基于格的密码核108,以加速基于格的密码术。
cpu101、硬件随机数发生器112、nvm103、密码模块104、ram102和输入/输出接口107连接至总线105。输入/输出接口107可以具有至可以类似于处理设备100的其他设备的连接件。
模拟模块106经由电气接触和/或经由电磁场被提供电力。该电力被提供以驱动处理设备100的电路系统,并且可以特别地允许输入/输出接口经由连接件启动和/或保持与其他设备的连接。
总线105本身可以是隐蔽的或普通的。用于执行下面描述的处理和算法的指令可以特别地存储在nvm103中并且由cpu105进行处理。处理的数据可以存储在nvm103或ram102中。支持功能可以由密码模块104(例如,伪随机数据的扩展)提供。随机数由硬件随机数发生器112提供。
以下描述的处理和算法可以排他地或至少部分地在密码模块104上进行,例如在基于格的密码核108上进行。密码模块104可以配备有或可以不配备有基于硬件的安全特征。这种基于硬件的安全特征可以是实现针对侧信道功率分析或故障注入(例如,使用激光)的对策的电路。可以通过使用随机性、冗余硬件或冗余处理来实现这种对策。一般而言,对策的目标是向攻击者伪装经内部处理的值,该攻击者能够观察到对这些值的处理的物理效应。
为了执行下面描述的过程,指令可以存储在基于格的密码核108中,或者它们可以由cpu101经由总线105来提供。数据可以本地地存储在基于格的密码核108内。还可以选择将数据临时存储在ram102或nvm103中。基于格的密码核108还可以使用其他密码模块来提供支持功能(例如,伪随机数据的扩展)。基于格的密码核108还可以包括硬件随机数发生器112或用于生成物理和/或软件随机数的装置。
基于格的密码核108可以支持如对如系数阵列的数据结构的多项式加法或多项式乘法、随机多项式的采样的操作。在另一实例中,本文中描述的过程可以至少部分地被实现为基于格的密码核108中的固定cmos电路,该固定cmos电路不直接由cpu101控制,并且其中,在密码核108的外部没有可用的中间值。另外,加速器可以实现如文献中描述的特定方案,如newhope密钥交换、kyber公共密钥封装、glp签名方案或frodo公共密钥加密。在这种情况下,对cpu101而言,只有高级功能可用。例如,签名可以被生成,其中消息和私钥通过总线105被发送到基于格的密码核108,然后glp签名被计算,cpu101使用总线105检索glp签名以用于进一步处理。
处理设备100的部件可以例如在单个芯片上实现。处理设备100可以是通过直接电气接触或通过电磁场被供电的芯片卡(或芯片卡模块)。处理设备100可以是固定电路或基于可重新配置的硬件(例如,现场可编程门阵列,fpga)。处理设备100可以耦接至个人计算机、微控制器、fpga或智能电话片上系统(soc)或智能电话的其他部件。处理设备100可以是充当可信平台模块(tpm)的芯片,其根据到计算机、智能电话、物联网(iot)设备或汽车的标准化接口来提供密码功能(安全存储、安全时间、签名生成和验证、认证)。
图2示出了处理设备200的另一示例。
处理设备200包括硬件安全模块201、非易失性存储器(nvm)208、应用处理器207、随机存取存储器(ram)209、用于与其他设备进行通信的接口210以及与硬件安全模块(hsm)201、ram209和接口210耦接的应用处理器207。
hsm201包括控制器202、硬件随机数发生器(hrng)206和密码模块203,该密码模块203包括aes核204和lbc核205作为示例性核。
根据一个实施方式,硬件安全模块(hsm)201和应用处理器207可以紧密耦接地在同一物理芯片上制造。在应用处理器执行计算密集型任务(例如,图像识别、通信、电机控制)时,hsm201递送密码服务和安全密钥存储。hsm201的定义属性是它仅可由限定的接口访问并且被认为以如下方式独立于系统的其余部分:应用处理器207的安全性妥协仅对hsm201的安全性具有有限的影响。hsm201可以或可以不通过使用由示例性aes204和hrng206支持的控制器202、lbc205来执行关于处理设备200描述的所有任务或任务的子集。它可以执行在下面描述的(至少部分地)由内部控制器控制或作为cmos电路的过程。此外,应用处理器207还可以执行以下描述的过程(至少部分地,例如,与hsm201协作)。具有应用处理器和hsm的处理设备200可以用作汽车或其他车辆中的中央通信网关或(电)电机控制单元。
本文中描述的示例特别地可以基于以下方法中的至少一个。特别地,可以利用以下特征的组合以达到期望的结果。方法的特征可以与设备、装置或系统的任何特征组合,反之亦然。
在下文中,描述了基于格的密码术的背景,并且引入了以下使用的符号。
基于格的密码术
各种因特网和行业标准使用基于rsa或椭圆曲线密码术(ecc)的非对称密码术来保护智能卡、智能电话、计算机、服务器或工业控制系统之间的数据通信。作为示例,利用rsa算法,可以实现公共密钥加密(pke)方案,其允许用户将加密的电子邮件(例如,利用pgp/gpg或s/mime)发送至接收者而无需首先交换安全信道上的对称密钥——接收者的公共密钥足以实现机密性。非对称密码术的其他应用是数字签名,也基于rsa或ecc。它们可以用于签名和验证数据,其中使用公共密钥来检查签名的有效性。如果签名后修改了数字签名的合同或长期档案,即使修改了一位,数字签名检查也将失败。
同时,pke和数字签名在传输层安全(tls)协议中都是至关重要的,tls协议是因特网中安全通信的支柱,并且被浏览器、智能电话以及越来越多的iot(物联网)设备使用。tls在通信被加密、检查以用于操纵并且使用通过公共密钥基础结构(pki)提供的数字证书来验证参与者的身份的两个设备之间建立安全信道。当使用https而不是http连接到网站(例如,银行之一)时,浏览器使用tls。通常,绿锁(greenlock)和进一步的信息被显示,以显示通信实际上是利用银行的网站执行的并且防止了所谓的中间人进行的攻击。在没有这种基于pki的身份检查与强数据加密相结合的情况下,攻击者就有可能操纵通信并冒充被访问的网站。
然而,自1994年petershor的开创性工作以来,众所周知,rsa和ecc容易受到量子计算机的攻击。另外,该算法还可能被修改以破坏基于ecc的公共密钥。量子计算机可以被描述为直接使用量子力学现象来加速处理的计算机。建造量子计算机的关键构思是用于将状态存储在量子寄存器中的所谓的量子比特或量子位。目前,没有足够强大(例如,具有足够的量子位)以实现shor的量子计算机。
然而,仍然存在从传统的非对称密码系统(rsa/ecc)转向不能被量子计算机成功攻击的方案的一般动机。即使目前量子计算机由于其技术复杂性和工程挑战而需要更多工作,它们也许能够在未来(可能是15到20年)在多项式时间内破坏rsa和ecc。因此,需要用于签名方案、密钥交换和公共密钥加密的新方法,该新方法不基于与rsa和ecc相同的基础(即,离散对数问题或因子分解)。如nist(美国国家标准与技术研究院)的标准化机构已经认识到对新技术方案的这种需求,nist目前正在研究替代的密码系统。
密码系统可以被理解为指代密码公共密钥加密、密钥交换或签名方案,但也可以是高级方案,如同态加密或基于属性的加密。在公共密钥加密中,非秘密公共密钥用于加密只能利用相关联的秘密密钥解密的数据。在签名方案中,秘密密钥用于对消息进行签名,并且可以利用相关联的公共密钥将秘密密钥验证为签名者拥有秘密密钥并因此被授权产生签名。密钥交换、密钥建立机制(kem)或密钥传输方案被认为是交互式协议,其中双方建立被动的或有时是主动的对手或窃听者不知道的秘密密钥。各种对称密钥密码术(例如,aes)、哈希函数(例如,sha2)、公共密钥加密、密钥交换或签名方案可以被组合成如传输层安全性(tls)、因特网密钥交换(ike)、因特网协议安全性(ipsec)或kerberos的协议。
一类方案或者料想会抵制量子计算机攻击的方案是基于格的密码系统。基于格的密码系统可能变为rsa和ecc的继承者,并且通常在大矩阵(标准格)或多项式环(理想格)上运行。然而,最近还引入了两种方法的混合(例如,在方案kyber或dilithium中),其基于所谓的模块化格。
格是由基向量的整数线性组合创建的结构。因此,格可以被描述为n维空间中的规则结构。更确切地说,格在本文中被限定为具有规则结构的欧几里得空间中的点的排列。给定n个线性独立向量
几十年来,格已经被用于构建密码系统。最近,基于格的密码术也由于用户友好的错误学习(lwe)问题和环-lwe(rlwe)问题的引入而备受关注。在这种情况下,问题是指被推测难以解决(即,没有多项式时间算法可用)但是也允许构建密码方案(例如,像用于rsa的因子分解问题或用于ecc的离散对数)的数学问题(例如,找到某事物)。通常,为了解决lwe问题,当关于
然而,当试图解决lwe或rlwe问题的实例时,可以使用格算法,原因是找到
基于格的密码术的突出示例是所谓的ntru和ntru签名方案以及所谓的ggh方案。基于格的(短暂的)密钥交换或公共密钥加密方案的示例是kyber、newhope、newhope-simple、hila5、threebears和frodo方案。应该注意,对于大多数方案,密钥交换和公共密钥加密之间的转换是微不足道的。另外,对于pke,可以使用标准转换(例如,fujisaki-okamoto)来实现各种安全级别,如关于自适应选择明文(cpa)的语义安全或关于自适应选择密文攻击(cca)的语义安全。对于newhope方案,这已经示例性地被示出,其也可以被实例化为cpa安全或cca安全pke。注意,newhope-simple和其他方案是对被称为lpr10的方案的简单改编。基于格的签名方案的示例是dilithium、bliss、glp12、flacon和tesla。
关于基于格的密码术的技术挑战
当在计算机、微控制器或如硬件-软件协同设计方法中的集成电路或如固定电路上实现基于格的密码术和基于格的密码系统(例如,newhope、dilithium、ntru)时,在执行密码操作(例如,签名、加密、解密、验证、密钥生成)时出现多个技术挑战。该领域中出现的此类技术挑战的示例如下:
1.通过使用专门优化的算法执行密码系统的某些步骤并且通过使用可用目标硬件的所有特征(特殊的寄存器或指令、在不标准的硬件中实现的特殊功能,如协处理器)来实现最佳性能。
2.使用最少量的易失性或非易失性存储器来执行密码操作。
3.给定性能目标,利用最少量的逻辑电路和存储器单元(例如,通过cmos工艺形成)来实现密码操作或其部分。
4.考虑挑战1至3或者与挑战1至3相结合或不与挑战1至3相结合,有效且全面的防范实施攻击(也被称为物理攻击、观察性攻击、侵入性和半侵入性攻击)。
应当注意,当在安全控制器上或在任何不利环境中(例如,在硬件安全模块上)执行密码系统时,需要针对实施攻击/物理攻击的保护。可能的攻击是侧信道攻击,其中攻击者试图通过观察设备的物理行为——如功耗(例如,简单和差分功率分析(spa/dpa))、电子发射或温度——来获得秘密信息。此外,在攻击者试图在执行流或数据中引入干扰(例如,利用激光)以获得秘密信息或影响设备行为的情况下,故障攻击是可能发生的。
实施攻击的显著特征在于:这种攻击不利用方案的数学描述中的弱点(这将被认为是密码分析),而是利用在特定设备上实现该方案的方式。通常,对手在执行实施攻击时被认为可以访问设备。通常,像智能卡的设备以如下方式被构造:物理效应(例如,功耗或辐射)被伪装,以使它难以获得安全关键资产。对抗物理攻击的常用方法针对随机化的值来执行以防止侵入性和非侵入性攻击,其目的是从设备中提取秘密密钥或中间值变得更加困难。然而,以有效方式实现这种随机化或冗余并且不开放进一步的攻击可能性是技术挑战。
在下文中,描述了关于基于格的密码术的实现的细节。
符号和数学背景
在本文中以下符号、缩写和附图标记被全局地使用,而其他对象如变量和多项式可以局部地定义:
q是整数,
k是整数,
n是整数,
modq是对在整数上定义的q取模的取模运算,其结果在[0,q-1]的范
围内,
zq是对
度小于整数
减去模
v[i]是向量或多项式
随机的,
fft快速傅里叶变换,
ntt数论变换,
dpa差分功率分析,
spa简单功率分析,
alu算术逻辑单元。
理想格与多项式运算
目前,存在两种基于格的密码术:基于理想格的密码术和基于标准格的密码术。中间地带是所谓的基于模块化格的密码术,它混合了理想格和标准格的构思。
基于理想格的密码术中的基本操作是商环中的多项式乘法、加法或减法
rq=zq[x]/(f),
其中,模
对于商环,可以定义如加法、减法、乘法和倒置的操作,这些是累积和关联的。关于
其中,
还可以计算多项式
如果如上所述实现或执行算法,则有时也将其称为“教科书”乘法算法,并且在zq中需要大约
其中,
稀疏乘法
通过利用多项式的特定属性的算法可以获得多项式运算的一些效率。作为示例,多项式
ntt
如上所述,遵循用于多项式乘法的教科书公式的实现将需要n2个模乘法,即,zq中的乘法,因此(在计算上)相当昂贵。快速多项式乘法的另一种方法是数论变换(ntt)。ntt可以被看作在有限域或环上定义的快速傅里叶变换(fft)。因此,fft的所有复数单位根被交换用于整数单位根,并且计算在对整数q取模的整数的环中执行。使用ntt的
ntt的优点在于:当使用有效算法时,操作仅需要大约nlog2n个模乘法,并且减模f=xn+1(所谓的循环卷积属性)或f=xn-1可以集成到ntt算法中。因此,n点ntt足以与n系数多项式一同起作用。然而,ntt也可以用于对f的任意值执行有效乘法。在这种情况下,使用2n点ntt,然后执行减模f。
为了正式地引入ntt,参数的选择受到限制,并且f=xn+1和素数整数q≡1mod2n被设置,使得ntt存在。对于多项式
被定义,其中ω是
逆变换类似于正向变换。对于多项式
按照先前给出的定义直接计算ntt将具有二次复杂度,并且不会比教科书方法更有效。因此,为了使用卷积定理实现快速多项式乘法,需要用于计算ntt的快速算法。在zq中具有o(nlogn)运算的ntt的最直接实现是cooley-tukey基二时间抽取(dit)算法或频率抽取(dif)算法。ditntt算法递归地将计算分成ntt的偶数输入上的子问题和奇数输入上的子问题。
多项式逆的计算
在签名算法或密钥生成中经常需要多项式逆的计算。这意味着一些算法需要针对
随机性和随机采样
通过a←$s,表示从某个集合s或特定分布s独立地且随机均匀地选择变量
采样意味着生成遵循特定指定分布的随机数据。采样器被定义为一段代码或一组指令或执行生成的硬件电路。通常,采样器可以访问(均匀)随机的源,或者利用从中生成伪随机数据的种子来启动。秘密噪声或误差向量的采样是基于格的公共密钥加密(pke)、密钥交换、签名方案和其他方案(例如,同态加密)中的基本任务。这种噪声或误差向量的特定属性是它们通常很小(即,具有接近零的系数)。在整数上具有均值0和标准偏差σ>0的离散高斯分布dz,σ将概率ρσ(x)/pσ(z)与x∈z相关联,其中
由于高斯采样在计算工作量方面仍然是昂贵的,因此可以使用比离散高斯更容易采样的噪声分布。这可能很重要,原因是密码方案的执行通常需要来自噪声或错误分布的512到4096个样本。更简单的要使用的分布是二项分布ψk。来自ψk的样本可以通过计算
可以在假设访问随机比特的源的情况下实现二项分布的采样器。一种方法是获得两个长度为k的随机比特串v1、v2,以计算整数汉明权重h1=hw(v1)和h2=hw(v2),然后输出h1-h2作为采样器的输出。
关于格的数学问题
基于格的密码系统的安全性可以基于或可以与某些问题及其变型相关。本领域技术人员已知的这些具体问题是:
带错误学习问题(lwe)
带错误环学习问题(rlwe)
短整数解问题(sis)
环短整数解问题(rsis)
ntru问题
在下文中,给出了rlwe问题的非正式定义。
对于作为2的整数幂的n和整数q,令r表示环rq=zq[x]/(xn+1)。对于m>0个样本、模q和具有z上的误差分布θ,rlwe问题被定义如下:
对于n、q的适当值、适当选择的θ、秘密的
zq中具有均匀系数,假设整数m个样本的形式
rlwe问题将众所周知的lwe问题转换为环设置。rlwe的难度可以基于关于理想格的短向量问题的最坏情况难度,理想格是标准格的子类。rlwe问题还具有决策版本(决定在给定多项式
基于标准格的密码术中的操作包括矩阵-矩阵乘法、矩阵-向量乘法或向量加法和减法,其中系数是对q取模的整数的环中的值。
公共密钥加密和密钥交换方案
rlwe问题的属性可以用于实现语义上安全的公共密钥加密方案,其具有对决策rlwe的减少。因此,在普通版本中,仅针对选择明文攻击(cpa)的安全性被实现并且被归类为基于格的密码系统,原因是难度基于rlwe问题的难度,rlwe问题的难度本身基于某些格问题的难度。该方案的一般思想是隐藏变为公共密钥(
rlwe.cpa.gen:
1.选择
2.
3.
4.公共密钥(pk):
5.秘密密钥:
6.返回
rlwe.cpa.enc
1.
2.
3.
4.
5.返回
rlwe.cpa.dec
1.返回解码
该方案通常在多项式环rq中实例化,但其他环的使用是直截了当的。误差分布θ的可能选择是
加密过程rlwe.cpa.enc需要从误差分布θ中对三个噪声多项式
解密过程rlwe.cpa.enc需要知道秘密密钥
注意,因为所有噪声项都是从误差分布θ中采样的,所以噪声相对较小。为了处理剩余噪声,提出了各个系数的阈值编码功能。
用于实例化方案的示例参数是:
(n=256,q=4093,
(n=512,q=12289,
(n=1024,q=12289,
为了在主动的对手出现时实现语义安全,本领域专家可以直接应用选择密文攻击(cca)转换,如由targhi和unruh基于fujisaki-okamoto进行的转换。
güneysulyubashevsky
在2012年,güneysu、lyubashevsky和
glp签名方案有两种版本。在下文中,描述了与“基本的”变型相比而言“优化的”变型,包括用于签名的第二分量的压缩算法。它包括以下过程:
glp.gen()
1)
2)
3)
4)返回
glp.sign
1)
2)
3)
4)
5)如果
6)
7)如果
8)返回
glp.verify
1)如果
密钥生成算法glp.gen()基本上需要对随机多项式
签名过程glp.sign获取消息μ∈{0,1}*、秘密密钥sk和公共密钥pk作为输入。在1中,两个多项式y1,y2被随机均匀地选择,其中系数在[-k,k]的范围内。在2中,哈希函数h被应用于
验证过程glp.verify首先检查
在下文中,描述了根据各种实施方式的用于有效地随机化基于格的密码系统的执行以防止故障和侧信道攻击的方法。
基于理想格的密码系统中的标准操作(例如,如newhope的密钥交换、公共密钥加密或如bliss或glp12的签名方案)是
根据各种实施方式,在假设攻击者可能知道
根据实施方式,使用攻击者不知道的盲系数或盲多项式来随机化值
根据实施方式,执行以下过程“computeblindedinv”以计算
computeblindedinv
输入:
输出:
1.
a.采样盲多项式
b.计算盲多项式
2.计算
3.计算
4.计算
5.计算
由于攻击者不知道
当使用ntt时,可以假设
computeblindedinvntt
输入:
输出:
1.
a.采样盲多项式
b.假设
c.计算盲多项式
2.计算
3.计算
4.计算
5.计算
6.计算
在computeblindedinv和computeblindedinvntt的操作1中,随机对
可以通过将两个值都提高到随机整数幂x来更新多项式对
在
1.
2.
3.
4.
5.
6.输出
现在可以使用三元组
computeblindedinvnttsharedkey
输入:
输出:
1.
2.计算
3.计算
4.计算
5.计算
6.计算
过程computeblindedinvnttsharedkey对已经存储在ntt域中的乘法隐蔽秘密进行操作,这对于效率非常重要。然后,它使用来自computeblindedinvntt的方法在它被使用并且与可能的公共值
如果效率是computeblindedinv、computeblindedinvntt和computeblindedinvnttsharedkey所关注的,那么选择也是仅通过计算
1.
2.计算
3.计算
4.计算
根据一个实施方式,使用低权重盲化的优化被使用。该思想是:可以优化乘以稀疏多项式。如果l<<n系数被设置(因此存在n-l个零系数),则多项式是稀疏的。乘法过程只能扫描稀疏多项式的非零值,或者仅直接获得具有设置位置及其值的列表。这样,要计算的内积的量从n减少到l。此外,可以优化稀疏多项式的ntt以说明该事实。在下面给出了该过程的示例。
computeblindedsparse
输入:
输出:
1.采样盲多项式
2.通过使用快速稀疏乘法算法来计算
3.通过使用快速稀疏乘法算法来计算
4.计算
5.计算
6.计算
7.计算
8.计算
9.计算
10.计算
用于盲化的另一种方法是通过以下过程给出的:
computeblindedaddntt
输入:
输出:
1.盲值
a.采样盲多项式
b.计算盲多项式
2.计算
3.计算
4.计算
5.计算
6.计算
7.计算
8.计算
9.计算
该过程的优点是对秘密值
存储或更新
图3示出了处理电路300,其示出了上述过程的实现。
处理电路300包括可以保存多项式(p0至p4)302至306的存储器301、alu(算术逻辑单元)307、具有用于各种操作309至311的指令的控制器308和随机采样器312。
处理电路300可以是处理设备的一部分,并且处理电路300的存储器301和处理电路300的控制器307可以由处理设备的其他部件经由相应的接口来访问。
处理可以根据本文中描述的过程来执行各种命令,并实现处理电路300的内部状态的随机化。
在下文中,示出了通过使用如在computeblindedinv中详述的上述方法来保护glp12签名方案的密钥生成以防止实施攻击的实施方式。该方法是:在执行多项式乘法之前,利用随机多项式
glp.gen-protection1()
5)
6)生成
7)
8)
9)计算
10)
11)计算
12)计算
13)计算
14)返回
可替选地,可以返回
该过程可以与附加的随机化相结合。假设采样器masked-sampler从r1中采样多项式
glp.gen-protection2()
1)
2)生成
3)
4)
5)
6)
7)
8)
9)计算
10)计算
11)返回
另一种选择是不对秘密密钥的已经随机化的值进行随机化,而是在关键计算期间随机化公共值:
glp.gen-protection3()
1)
2)生成
3)
4)
5)
6)
7)
8)计算
9)计算
10)返回
类似地,该过程可以集成到结合computeblindedinvntt和computeblindedaddntt提议的rlwe公共密钥加密方案中。rlwe.cpa.dec
如在对解码器的输入进行加性共享时所描述的,可以通过隐蔽的解码器来保护解码。因此对于
rlwe.cpa.dec-protection
2.
3.
4.
5.
6.
7.计算
8.计算
9.计算
10.计算
11.返回
maskeddecoder的输入是
总之,根据各种实施方式,提供了如图4所示的方法。
图4示出了流程图400,其说明了用于执行基于格的密码操作的方法。
在401中,噪声多项式、秘密多项式和公共多项式被获得(不一定按此顺序)。
在402中,通过将噪声多项式、秘密多项式和公共多项式中的至少一个与随机盲多项式相乘来伪装噪声多项式、秘密多项式和公共多项式中的至少一个。
在403中,基于伪装的至少一个多项式来计算噪声多项式与公共多项式和秘密多项式的乘积之和。
在404中,基于所计算的噪声多项式与公共多项式和秘密多项式的乘积之和来确定基于格的密码操作的结果。
根据各种实施方式,换句话说,通过将用于计算t=a·s+e的多项式a(公共多项式)、s(秘密多项式)和e(噪声多项式)中的至少一个与随机(盲或隐蔽)多项式相乘来伪装(即,盲化或隐蔽)用于计算t=a·s+e的多项式a(公共多项式)、s(秘密多项式)和e(噪声多项式)中的至少一个。
该方法可以包括确定噪声多项式、秘密多项式和公共多项式中的一个或更多个。噪声多项式、秘密多项式和公共多项式也可以由密码系统预先确定。噪声多项式和秘密多项式可以例如是秘密密钥,并且公共多项式可以是系统常数。
秘密多项式可以例如通过从集合(其不对应于均匀分布)或诸如均匀分布、离散高斯分布、小均匀分布或稀疏分布(即,多项式具有许多等于零的系数以及很少的非零系数)的分布中随机采样来确定。
密码操作可以对由通信设备(例如,如本文中描述的处理设备)从另一通信设备接收的数据进行操作。例如,密码操作可以从由通信设备经由通信信道接收的数据中提取有用数据。有用数据可以例如包括控制数据,并且通信设备可以基于提取的控制数据来执行控制动作。例如,汽车中的微控制器可以以这种方式接收控制数据,并且可以基于控制数据来执行控制动作。通信设备还可以存储或转发通过密码操作处理的数据。因此,密码操作可以用于保护两个通信设备之间的通信信道,其中基于其保护通信信道的通信端点(即,通信设备)中的秘密数据(噪声多项式和秘密多项式)通过在当它们用于计算时对它们进行盲化在通信设备中进行保护。因此可以确保通信信道和传输数据的安全性。
可以通过处理设备——例如参照图1描述的处理设备(不一定具有图1中所示的所有部件)——来执行该方法。可以由硬件加速器来执行t的计算。例如,可以由多项式乘法处理器——即,为多项式乘法优化的处理器——来执行a和s的乘法。可以通过安全处理器——即,“硬化”设备——来至少部分地执行该方法。
图5示出了用于执行基于格的密码操作的处理设备500。
处理设备500包括存储器501,该存储器501被配置成存储噪声多项式、秘密多项式和公共多项式。
处理设备500还包括隐蔽电路502,该隐蔽电路502被配置成:通过将噪声多项式、秘密多项式和公共多项式中的至少一个与随机盲多项式相乘来伪装噪声多项式、秘密多项式和公共多项式中的至少一个。
另外,处理装置500包括计算电路503,该计算电路503被配置成:基于所伪装的至少一个多项式来计算公共多项式和秘密多项式的乘积与噪声多项式之和。
处理设备500还包括密码电路504,该密码电路504被配置成:基于所计算的公共多项式和秘密多项式的乘积与噪声多项式之和来确定基于格的密码操作的结果。
处理设备500可以包括生成电路,该生成电路被配置成:在存储噪声多项式、秘密多项式和公共多项式中的一个或更多个之前生成噪声多项式、秘密多项式和公共多项式中的一个或更多个。处理设备500还可以包括接收器,该接收器被配置成:接收噪声多项式、秘密多项式和公共多项式中的一个或更多个的表示。应当注意,在图4的方法的上下文中描述的任何特征和实施方式对于图5的处理设备类似地有效,反之亦然。
通信设备(例如,通信子系统、应用处理器和密码电路)可以例如由一个或更多个处理器实现。“处理器”可以被理解为任何类型的逻辑实现实体,其可以是专用电路系统或执行存储在存储器中的软件、固件的处理器或其任何组合。因此,“处理器”可以是硬线逻辑处理器或诸如可编程处理器的可编程逻辑处理器,例如微处理器。“处理器”也可以是执行软件例如任何类型的计算机程序的处理器。将在下面更详细地描述的各个功能的任何其他类型的实现也可以被理解为“处理器”。
在下面描述了各种示例:
示例1是用于执行如图4所示的基于格的密码操作的方法。
示例2是根据示例1的方法,其中,秘密多项式、噪声多项式和公共多项式中的一个或更多个表示一个或更多个秘密密码密钥。
示例3是根据示例1或2的方法,其中,公共多项式和秘密多项式的乘积与噪声多项式之和表示公共密钥或密文。
示例4是根据示例1至3中任一示例的方法,包括:通过将噪声多项式和秘密多项式与同一随机盲多项式或不同的盲多项式相乘来伪装噪声多项式和秘密多项式。
示例5是根据示例1至4中任一示例的方法,包括:伪装噪声多项式、秘密多项式和公共多项式中的至少一个,以防止关于秘密多项式或噪声多项式的信息的泄漏。
示例6是根据示例1至5中任一示例的方法,包括:伪装噪声多项式、秘密多项式和公共多项式中的至少一个,以防止对秘密多项式、噪声多项式或这两者的物理攻击。
示例7是根据示例1至6中任一示例的方法,包括:基于随机数发生器的输出来生成随机盲多项式。
示例8是根据示例1至7中任一示例的方法,包括:通过从均匀分布进行采样来生成随机盲多项式。
示例9是根据示例1至8中任一示例的方法,包括:通过从误差分布随机采样来确定噪声多项式。
示例10是根据示例9的方法,其中,误差分布是均匀分布、离散高斯分布或小均匀分布。
示例11是根据示例1至10中任一示例的方法,包括:通过从集合或均匀分布、离散高斯分布、小均匀分布或稀疏分布随机采样来确定秘密多项式。
示例12是根据示例1至11中任一示例的方法,其中,噪声多项式、秘密多项式、公共多项式和盲多项式是对预定多项式取模的多项式,其中所述预定多项式的系数对预定整数取模。
示例13是根据示例1至12中任一示例的方法,包括:对于多个不同的公共多项式,针对同一秘密多项式来计算公共多项式和秘密多项式的乘积与噪声多项式之和。
示例14是根据示例13的方法,包括:对秘密多项式和噪声多项式中的至少一个盲化,以防止攻击者从多个不同的公共多项式的计算中提取秘密多项式的信息。
示例15是根据示例13或14的方法,包括:对于不同的公共多项式,在计算公共多项式和秘密多项式的乘积与噪声多项式之和之间更新随机盲操作。
示例16是根据示例1至15中任一示例的方法,包括:通过以下操作来伪装噪声多项式和秘密多项式中的至少一个:将噪声多项式和秘密多项式中的至少一个与随机盲多项式相乘,并且将相乘的结果与同一随机盲多项式或不同的随机盲多项式相加;或者将噪声多项式和秘密多项式中的至少一个与随机盲多项式相加,并且将相加的结果与同一随机盲多项式或不同的随机盲多项式相乘。
示例17是根据示例1至16中任一示例的方法,包括:执行噪声多项式、秘密多项式和公共多项式中的至少一个的伪装,并且在数论变换域中基于所伪装的至少一个多项式来计算公共多项式和秘密多项式的乘积与噪声多项式之和。
示例18是根据示例17的方法,包括:将噪声多项式、秘密多项式和公共多项式变换到数论变换域中,以及将公共多项式和秘密多项式的乘积与噪声多项式之和的结果从数论变换域变换回去。
示例19是根据示例1至18中任一示例的方法,包括:在签名或公共密钥密码处理中执行基于格的密码操作。
示例20是如图5所示的用于执行基于格的密码操作的处理设备。
示例21是根据示例20的处理设备,其中,秘密多项式、噪声多项式和公共多项式中的一个或更多个表示一个或更多个秘密密码密钥。
示例22是根据示例20或21的处理设备,其中,公共多项式和秘密多项式的乘积与噪声多项式之和表示公共密钥或密文。
示例23是根据示例20至22中任一示例的处理设备,包括:通过将噪声多项式和秘密多项式与同一随机盲多项式或不同的盲多项式相乘来伪装噪声多项式和秘密多项式。
示例24是根据示例20至23中任一示例的处理设备,其中,隐蔽电路被配置成:伪装噪声多项式、秘密多项式和公共多项式中的至少一个,以防止关于秘密多项式或噪声多项式的信息的泄漏。
示例25是根据示例20至24中任一示例的处理设备,其中,隐蔽电路被配置成:伪装噪声多项式、秘密多项式和公共多项式中的至少一个,以防止对秘密多项式、噪声多项式或这两者的物理攻击。
示例26是根据示例20至25中任一示例的处理设备,该处理设备包括生成电路,该生成电路被配置成:基于随机数发生器的输出来生成随机盲多项式。
示例27是根据示例20至26中任一示例的处理设备,该处理设备包括生成电路,该生成电路被配置成:通过从均匀分布进行采样来生成随机盲多项式。
示例28是根据示例20至27中任一示例的处理设备,该处理设备包括生成电路,该生成电路被配置成:通过从误差分布随机采样来确定噪声多项式。
例29是根据示例28的处理设备,其中,误差分布是均匀分布、离散高斯分布或小均匀分布。
示例30是根据示例20至29中任一示例的处理设备,该处理设备包括生成电路,该生成电路被配置成:通过从集合或均匀分布、离散高斯分布、小均匀分布或稀疏分布随机采样来确定秘密多项式。
示例31是根据示例20至30中任一示例的处理设备,其中,噪声多项式、秘密多项式、公共多项式和盲多项式是对预定多项式取模的多项式,其中预定多项式的系数对预定整数取模。
示例32是根据示例20至31中任一示例的处理设备,其中,计算电路被配置成:对于多个不同的公共多项式,针对同一秘密多项式来计算公共多项式和秘密多项式的乘积与噪声多项式之和。
示例33是根据示例32的处理设备,其中,隐蔽电路被配置成:对秘密多项式和噪声多项式中的至少一个进行盲化,以防止攻击者从多个不同的公共多项式的计算中提取秘密多项式的信息。
示例34是根据示例32或33的处理设备,其中,隐蔽电路被配置成:对于不同的公共多项式,在计算公共多项式和秘密多项式的乘积与噪声多项式之和之间更新随机盲操作。
示例35是根据示例20至34中任一示例的处理设备,其中,隐蔽电路被配置成通过以下操作来伪装噪声多项式和秘密多项式中的至少一个:将噪声多项式和秘密多项式中的至少一个与随机盲多项式相乘,并且将相乘的结果与同一随机盲多项式或不同的随机盲多项式相加;或者将噪声多项式和秘密多项式中的至少一个与随机盲多项式相加,并且将相加的结果与同一随机盲多项式或不同的随机盲多项式相乘。
示例36是根据示例20至35中任一示例的处理设备,其中,隐蔽电路和计算电路被配置成:执行噪声多项式、秘密多项式和公共多项式中的至少一个的伪装,并且在数论变换域中基于所伪装的至少一个多项式来计算公共多项式和秘密多项式的乘积与噪声多项式之和。
示例37是根据示例36的处理设备,其中,隐蔽电路和计算电路被配置成:将噪声多项式、秘密多项式和公共多项式变换到数论变换域中,以及将公共多项式和秘密多项式的乘积与噪声多项式之和的结果从数论变换域变换回去。
示例38是根据示例20至37中任一示例的处理设备,该处理设备被配置成:在签名或公共密钥密码处理中执行基于格的密码操作。
根据另一示例,提供了一种用于执行基于格的密码操作的处理设备,该处理设备包括:
获取装置,其被配置成:获取噪声多项式、秘密多项式和公共多项式;
伪装装置,其被配置成:通过将噪声多项式、秘密多项式和公共多项式中的至少一个与随机盲多项式相乘来伪装噪声多项式、秘密多项式和公共多项式中的至少一个;
计算装置,其被配置成:基于所伪装的至少一个多项式来计算公共多项式和秘密多项式的乘积与噪声多项式之和;以及
确定装置,其被配置成:基于所计算的公共多项式和秘密多项式的乘积与噪声多项式之和来确定基于格的密码操作的结果。
应当注意,在一个处理设备的上下文中描述的特征和示例对于其他处理设备和方法也是有效的,反之亦然。
尽管本文中已经说明和描述了特定实施方式,但是本领域普通技术人员将理解,在不脱离本发明的范围的情况下,可以用各种替代和/或等同实现来代替所示出和描述的特定实施方式。本申请旨在涵盖本文中讨论的特定实施方式的任何改编或变型。因此,本发明旨在仅由权利要求及其等同物限制。
附图标记
100处理设备
101cpu
102ram
103nvm
104密码模块
105总线
106模拟模块
107i/o接口
108lbc核
109aes核
110sha核
111ecc核
112hrng
200处理设备
201硬件安全模块
202控制器
203密码模块
204aes核
205lbc核
206hrng
207应用处理器
208nvm
209ram
210接口
300处理电路
301存储器
302至306多项式
307alu
308控制器
309至311操作
312随机采样器
400流程图
401至404方法步骤
500处理设备
501存储器
502隐蔽电路
503计算电路
504密码电路