CN111492616B - 用于基于晶格的密码学的可配置设备 - Google Patents

用于基于晶格的密码学的可配置设备 Download PDF

Info

Publication number
CN111492616B
CN111492616B CN201880081395.9A CN201880081395A CN111492616B CN 111492616 B CN111492616 B CN 111492616B CN 201880081395 A CN201880081395 A CN 201880081395A CN 111492616 B CN111492616 B CN 111492616B
Authority
CN
China
Prior art keywords
matrix
network node
key
shared
parameter
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
CN201880081395.9A
Other languages
English (en)
Other versions
CN111492616A (zh
Inventor
O·加西亚莫尔琼
L·M·G·M·托尔胡伊泽恩
S·巴塔查里亚
J·L·托里阿尔切
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
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
Priority claimed from EP18165330.4A external-priority patent/EP3547603A1/en
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of CN111492616A publication Critical patent/CN111492616A/zh
Application granted granted Critical
Publication of CN111492616B publication Critical patent/CN111492616B/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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • 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
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

一些实施例涉及提供一种被配置用于密码操作的第一电子网络节点。第一网络节点被配置为:接收难度参数(d)和结构参数(n)作为输入,并且获得共享矩阵(A),所述共享矩阵通过通信接口与第二网络节点共享,所述共享矩阵(A)中的条目是选择对第一模数(q)取模进行的,所述共享矩阵(A)是具有等于难度参数(d)除以结构参数(n)的维度(k)的方矩阵(k×k),所述共享矩阵(A)中的条目是对次数等于结构参数(n)的归约多项式(f)取模的多项式,所述密码操作使用该共享矩阵。

Description

用于基于晶格的密码学的可配置设备
技术领域
本发明涉及一种被配置用于密码操作的网络节点,密码操作方法,以及计算机可读介质。
背景技术
在密码学中,密钥协商协议是通过其使得尚未共享公钥的双方或更多方可以就密钥达成一致的一种协议。优选地,双方都可能影响结果,使得双方都不能强制选择密钥。窃听了双方之间所有通信的攻击者应该对密钥一无所知。但是,虽然看到相同通信的攻击者一无所获或所获不多,但各方本身可能导出共享密钥。密钥协商协议可用于例如保护通信,例如用于加密和/或认证双方之间的消息。
为了便于各方之间的安全通信,有时将密钥协商协议进一步细分为密码密钥交换(KEX)和密码密钥封装(KEM)方案。
KEX方案可能涉及每一方交换公钥,所述公钥然后由另一方与他们自己的私钥一起独立地用于计算公共共享秘密。这种KEX方案的公知的示例是Diffie-Hellman密钥交换,其安全性基于解决离散对数问题。一些KEX方案的有趣特征在于,实际的最终的共享秘密永远不会在各方之间交换,甚至不会以加密形式交换,而是由双方在每端独立计算。这样导致了期望的特征,已知为前向保密性,所述特征可以确保即使攻击者将来破解一方的长期密钥,也不会损害过去交换的加密消息的保密性。
KEM方案可以在两个实体或两方之间建立共享秘密,一方(通常是通信的发起方)使用非对称密码来加密或封装(使用另一方的公钥)共享秘密并将共享秘密传输给另一方(已知为响应方),他们可以对其进行解密或解封装(使用她的密钥),然后将其用于与发起方进行安全通信。这样的KEM方案只在其是短暂的情况下才能实现前向保密性。否则,在过去的会话中破解了一方的秘密密钥并已记录了该会话中双方之间交换的所有消息的任何攻击者都可以恢复该特定会话的共享秘密。
由于物联网中渐增的安全需求,密钥交换方案还需要实现高效率(即,最小的通信量或带宽需求),同时还维持安全性,以抵御传统以及具有量子能力的对手。
最近的进展表明,量子计算机在几年内可能是可行的。也许在快至大约5-10年之内。一旦量子计算机可用,大多数现有的公钥密码方案将变得不安全,因为它们所基于的基本问题可以用量子计算机有效地解决。因此,设计量子抵抗的公钥算法(即,不能借助于量子计算机破解的公钥算法)是非常重要的。
存在若干类型的量子抵抗算法:基于晶格的,基于代码的,基于同源的等。在本文档中,我们基于晶格处理量子抵抗算法。基于晶格的密码系统是研究的活跃领域,其中已经提出了许多不同类型的系统。例如,可以根据数字矩阵来定义晶格,例如,一些有限域的元素,或者使用多项式等。密码运算的类型也可以变化。例如,基于晶格的密码可用于:密钥封装(KEM),密钥交换(KEX),公钥加密(PKE),数字签名等。这些方案的示例是:
基于LWE的KEX,例如Frodo
基于RLWE的KEX和CPA-KEM Newhope和NewHopeSimple。
基于模块晶格的CPA-PKE,CPA-KEM和CCA-KEM作为Kyber
基于LWR的KEX作为spKEX
以上方案中的每一个都依赖于单个基础问题(例如,错误学习(LWE)或舍入学习(LWR),或具有模块的模块晶格,例如用于固定环的RLWE或LWR)来实现密码协议(例如,KEX、KEM或PKE)。例如:NewHope仅依赖于RLWE,Kyber仅依赖于组合k=3个模块,每个模块都是Zq[x]/x^256+1中的多项式,spKEX仅依赖于LWR,Frodo仅依赖于LWE。在诸如RLWE的方案中的R指的是“环”或多项式类型实现方式。
这提出了若干问题。首先,实现这些系统中的每一个系统都是大的投资。不仅每个方案都必须进行编码,而且每个方案都必须被调试,以确保它们不包含可能损害其安全性的严重漏洞。另一方面,不实现所有方案或至少实现大多数方案也意味着某些风险。如果上述问题之一被破坏,例如RLWE或模块晶格,则对应的方案被完全破坏。希望存在某种更新途径,使得在破坏的情况下,人们可以从一种方案更改为另一种方案。
参考文献
[1]“Device and method sharing a matrix for use in a cryptographicprotocol”,European filing op 6March 2017,application number17159296.7.Attorney docket 2017P01555
[2]Ludo Tolhuizen,Ronald Rietman and Oscar Garcia-Morchon,“Improvedkey reconciliation method”,Cryptology ePrint Archive,Report 2017/295,https:// eprint.iacr.org/2017/295
[3](Frodo):J.Bos et al,“Frodo:Take off the ring!Practical,Quantum-Secure Key Exchange from LWE”,Cryptology ePrint Archive,Report 2016/659,https://eprint.iacr.org/2016/659
[4](New Hope):E.Alkim et al,“Post-quantum key exchange–a new hope”,Cryptology ePrint Archive,Report 2015/192,https://eprint.iacr.org/2015/1092
[5](New Hope Simple):E.Alim et al,“NewHope without reconciliation”,Cryptology ePrint Archive,Report 2016/1157,https://eprint.iacr.org/2016/1157
[6](Kyber):J.Bos et al,“CRYSTALS--Kyber:a CCA-secure module-lattice-based KEM”,Cryptology ePrint Archive,Report 2017/634,https://eprint.iacr.org/ 2017/634
[7](spKEX):S.Bhattacharya et al,“spKEX:an optimized lattice-based keyexchange”,Cryptology ePrint Archive,Report 2017/709,https://eprint.iacr.org/ 2017/709
参考文献[1]至[7]中的每一个均通过引用包含于此。
发明内容
发明人认识到,可以定义参数化基于晶格的密码学的大类的单个方案。仅采用一些输入参数,所述输入参数改变潜在密码学的性质。例如,权利要求中定义的密码设备可以接收难度参数(d)和结构参数(n),它们一起足以指定所使用的密码类型。难度参数(d)和结构参数(n)均为正整数。通过增加难度参数,问题的结构保持不变,但是更大,因此使用了更难的实例化。难度参数有时称为安全性参数。在实施例中,难度参数与潜在晶格的维度有关。难度参数的较大值导致潜在晶格的维度更大,因此导致攻击者待解决的问题更难。结构参数与系统中的代数结构量有关。结构参数的值越高,意味着代数结构越多。据推测,结构参数的更高值可能更容易受到攻击,因为晶格具有更多规则性。例如,在进行进一步研究以找到解决晶格问题的渐进式更好方法的情况下,用户可以通过增加难度参数来进行响应。另一方面,如果正在进行的研究找到了解决特定类型晶格问题的根本上更好的方法,则用户可能会通过减小结构参数进行响应。
例如,在实施例中,定义了一种可以有效地实例化多个潜在问题的方案,即RLWE、RLWR、模块RLWE、模块RLWR以及LWE和LWR。这并不意味着该方案依赖于两个不同的规范,一个针对问题1并且另一个针对问题2,而是可以使用相同的算法实例化这两个问题,唯一的区别是输入参数。优势包括:
-用相同的方案覆盖许多潜在的应用。
-最小化实现成本。
-减少代码尺寸。
-为潜在的过渡场景做准备,在所述过渡场景中,依靠“较弱”问题不再安全,并且需要依靠“更强”问题的新算法。
密码设备是电子设备。例如,密码设备可以是移动电子设备,例如移动电话。例如,密码设备可以是机顶盒、智能卡、计算机等。本文描述的执行密码操作的方法可以在广泛的实际应用中应用。这种实际应用包括财务应用、机密或经认证的通信等。
根据本发明的方法可以在计算机上作为计算机实现的方法来实现,或者可以在专用硬件中或者以两者的组合来实现。用于根据本发明的方法的可执行代码可以存储于计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括存储在计算机可读介质上的非瞬态程序代码,所述非瞬态程序代码用于当在计算机上运行所述程序产品时执行根据本发明的方法。
在优选实施例中,计算机程序包括计算机程序代码,所述计算机程序代码适于在计算机程序在计算机上运行时执行根据本发明的方法的所有步骤。优选地,计算机程序被体现在计算机可读介质上。
本发明的另一方面提供了一种使计算机程序可用于下载的方法。当将计算机程序上传到例如苹果的App Store、谷歌的Play Store或微软的Windows Store时以及当可以从此类商店下载计算机程序时,将使用该方面。
附图说明
将仅通过示例参考附图来描述本发明的其它细节、方面和实施例。为了简单和清楚起见示出了图中的元件,并且不一定按比例绘制。在图中,与已经描述的元件相对应的元件可以具有相同的附图标记。在图中:
图1示意性地示出了密钥协商网络的实施例的示例,
图2示意性地示出了电子密钥交换方法的实施例的示例,
图3a示意性地示出了根据实施例的具有包括计算机程序的可写部分的计算机可读介质,
图3b示意性地示出了根据实施例的处理器系统的表示,
图4a示意性地示出了公钥解密节点的实施例的示例,
图4b示意性地示出了公钥加密节点的实施例的示例。
图1和图3中的附图标记列表:
100 密钥协商网络
110 发起方类型的网络节点
120 通信接口
130 共享矩阵单元
131 难度参数和结构参数
140 私钥矩阵单元
150 公钥矩阵单元
160 共享密钥单元
162 原始密钥
164 调和数据(h)
166 共享密钥
210 响应方类型的网络节点
220 通信接口
230 共享矩阵单元
240 私钥矩阵单元
250 公钥矩阵单元
260 共享密钥单元
262 原始密钥
264 调和数据(h)
266 共享密钥
1000 计算机可读介质
1010 可写部分
1020 计算机程序
1110 (一个或多个)集成电路
1120 处理单元
1122 存储器
1124 专用集成电路
1126 通信元素
1130 互连
1140 处理器系统
具体实施方式
虽然本发明可以以许多不同形式实现实施例,但在附图中示出并且在此将详细描述一个或多个具体实施例,应理解本公开被认为是本发明原理的示例,并不旨在将本发明限制于所示出和描述的特定实施例。在下文中,为了理解,在操作中描述实施例的元件。然而,将显而易见的是,各个元件被布置为执行被描述为由它们执行的功能。此外,本发明不限于实施例,并且本发明在于在此描述或在互不相同的从属权利要求中叙述的每个新颖特征或特征的组合。
回想一下,存在若干基于晶格的方案用于密钥交换(KEX)协议、密钥封装机制(KEM;有时也称为密钥封装方法)、公钥加密(PKE),数字签名等的设计。这些方案的示例是:
Frodo,其是基于“错误学习(LWE)”问题的KEX。
NewHope,其是基于环错误学习(RLWE)问题的KEX。
NewHopeSimple,其是为基于RLWE的选定明文攻击(CPA)设计的KEM。
Kyber,其是基于模块LWE问题的CPA-KEM和CCA-KEM。
spKEX,其是基于舍入学习(LWR)问题的KEX。
以上每个方案都依赖于单个基础晶格问题实现加密协议(例如KEX、KEM、PKE、数字签名):LWE或RLWE,或固定环的模块LWE,或LWR。
NewHope和NewHopeSimple仅依赖使用环的RLWE
Kyber仅依赖于组合k个模块,每个模块是中的多项式
spKEX仅依赖于LWR
Frodo仅依赖于LWE
虽然以上所有问题都是相关的,但是其中一些问题被认为具有更高的风险,因为它们依赖于特殊结构。另一方面,环结构的使用允许较小的消息。即使目前尚不知道采用这种结构的攻击,但将来可能会知道这种攻击。然后将打破基于那些特定问题的所有方案(例如RLWE或模块LWE)。因此需要后路。因此,需要实现和测试多种方案,一些方案基于风险较高的问题,但具有更好的性能属性,而另一些方案基于易于理解的问题,但性能较差。
发明人意识到上述晶格问题是相关的,并找到了可以实例化所有此类问题的方案,包括:RLWE,RLWR,模块LWE,模块LWR,以及LWE和LWR。下面,描述密码学的若干示例,其中基于难度参数d和结构参数n创建不同的晶格。
通过更改该方案中的参数,我们可以因此基于不同的基本问题并表现出不同的性能属性来实例化协议(KEX、KEM、PKE等)。
该方案可以应用于具有不同安全性/性能要求的多个应用。例如,可以通过使用针对LWE的方案设置来加密绝密文档,而资源受限的无线通信上的密钥协商可以基于环LWR参数。该方案还有附加优点:首先,它减少了代码大小,从而需要更少的存储器。其次,由于需要审查和验证单个算法,因此可以最小化代码审查的工作量。最后,这种方案为潜在的过渡场景做准备,在所述过渡场景,依赖于“较弱”问题(例如RLWE)不再安全,并且需要依赖于“更强”问题(例如基于LWE)的新算法。该方案不依赖于两个不同的规范,一个针对问题1并且另一个针对问题2,等等,但是使用相同的算法来实例化不同的问题,唯一的区别是输入参数。
核心发明使用维度为d的晶格问题—其中d为输入参数。晶格维度可以是与RLWE、RLWR、模块-LWE、模块-LWR、LWE、LWR相对应的维度。该方案依赖于包含kxk个条目的矩阵,其中每个条目都是Zq[x]/f[x]中的元素,其中f[x]是次数为n的归约多项式,并且n是输入参数。k被定义为d/n并且它不是输入参数,在实施例中,假设d是n的倍数。
因此,给定固定的晶格维度d和归约多项式的次数n,我们可以获得矩阵的条目数(k2)。注意,这是与模块晶格的关键区别。例如,在这种晶格中,一些作者优化了多项式环中的环操作(即f(x)=x256+1)),他们使用模块的数量将晶格维度“增加”为d=256*k。该方案只能实例化为出于安全目的而太小的模块RLWE或RLWE。
如果n=1,则这表示LWE或LWR的矩阵。
如果n=d,则这表示RLWE或RLWR的矩阵。
如果1<n<d,则这表示模块LWE或模块LWR的矩阵。
在不失一般性的情况下,我们注意到在以下各节中,我们通常只关注两种情况,即n=1和n=d。
基于LWR和NTRU-RING LWR的KEX
在下文中,我们将使用NTRU环来说明我们的实施例。在实践中,也可以使用其它环,例如将q设为质数的(质数)分圆多项式,确保n=1(mod p)。替代地,我们还可以采用(质数)分圆多项式,其中q是2的幂。另一约束在于(质数)分圆多项式是对2取模不可约的。
NTRU环是f(x)=xn-1,其中n是质数。然后,对于给定的晶格维度问题d,我们可以例如用n=d或n=1实例化系统。如果n=d,则我们具有NTRU-RING LWR;而如果n=1,则我们具有LWR方案。我们还可以采用输入参数d>n且d为质数n的倍数,使得我们可以使用NTRU-Ring获得模块LWR。
表1—高级KEX协议说明。注意,round(vector,p,q)表示使用模块p和q进行舍入。注意,我们忽略有关如何进行密钥调和的细节,因为它们对于本说明而言并不是基础。以下更多信息包含PKE、CPA-KEM和CCA-KEM协议,包括所有需要的细节。
根据以上,我们可以看出,取决于n的选择,潜在的问题是RLWR(如果n=d)或LWR(n=1)。在这两种情况下,潜在的晶格问题的维度为d。注意,现有技术将具有上述算法的两种不同实现方式,即:
表2—注意,当计算公钥b和u时,因为它对于描述不是必需的,所以我们忽略了LWR中要求的舍入。我们还忽略了有关如何进行密钥调和的细节,参见参考资料。
注意:rki和rkr分别是发起方和响应方的原始密钥。
如背景和问题陈述中所述,表2中的当前方案依赖于单个问题,并且因此用略有不同的参数和算法进行优化。例如,RLWE问题通常依赖于环Zq[x]/x^n+1,其中n是2的幂,q是质数,从而可以使用数论转换(NTT)。这些选择对于与非环形版本组合并不是最佳的,因为它要求q为质数,从而在执行矩阵运算时使模块化运算更加复杂。
表1中的方案被定义为用类似的参数和例程工作。这是在本说明中使用NTRU环的特定原因,因为它依赖于q(其是二的幂),这对于LWE/LWR方案也是不错的选择。这还允许我们对依赖于p和q都是二[2]的幂这一事实的密钥调和步骤使用相同的例程。在以下进一步的信息中详细说明了这些细节,解释了CPA-PKE、CPA-KEM和CCA-KEM的实施例。
在一些实施例中,在表1中总结的密码协议中的发起方的第一步骤可以包括如下所述的PST.CPA-KEM.Keygeneration或PST.NR.CCA-KEM.Keygen,或其任何变型,例如,密钥封装机制的密钥生成操作。类似地,响应方步骤可以包括如下所述的PST.CPA-KEM.Encapsulate或PST.NR.CCA-KEM.Encapsulate,或其任何变型,例如,密钥封装机制的密钥封装操作。发起方的第二步骤可以包括如下所述的PST.NR.CPA-KEM.Decapsulate、PST.NR.CCA-KEM.Decapsulate,或其任何变型,例如,密钥封装机制(KEM)的密钥解封装操作。在这种情况下,加密操作可以是密钥交换或密钥封装。
在其它实施例中,表1中总结的密码协议中的发起方的第一步骤可以包括如下所述的PST.NR.CPA-PKE.Keygeneration()或其任何变型,例如,公钥加密方案的密钥生成操作。响应方的步骤可以包括如下所述的PST.NR.CPA-PKE.Encryptwithrho()或PST.NR.CPA-PKE.Encrypt(),或其任何变型,例如,公钥加密的加密操作。发起方的第二步骤可以包括如下所述的PST.NR.CPA-PKE.Decrypt(),例如,公钥加密方案的解密操作。在这种情况下,加密操作可以是公钥加密。在公钥加密中,可以重复响应方的步骤和发起方的第二步骤,例如,以加密和解密多个消息,尤其是,可以在多个设备上多次执行发起方的第二步骤,从而设备可以执行发起方的第二步骤而无需在先执行发起方的第一步骤。
下面参考图1详细描述其它实施例。
注意,在表1中解释的协议中,我们提及了round(),该函数执行LWR问题中定义的舍入。特别地,舍入可以包括以下步骤:将未缩放的条目与p相乘并除以q,舍入为整数(例如,最近的整数),并且将舍入后的条目对p取模,这实际上为该条目增加了噪声。
参考实现方式(第1部分)
表1中的方案的参考实现方式将具有以下例程,用于获得公钥元素(b和u)和原始密钥(rki和rkr):
公钥的计算:
注意,在上面的例程中,我们不包括使用如表1中的模数p和q的舍入步骤。但是,这对于本发明不是必需的。如果我们正在执行该方案的LWE版本,则舍入将由在Z_q[x]/f(x)中添加噪声(例如均值0和小标准偏差的高斯噪声)来代替。
原始密钥的计算:
注意,在原始密钥计算的算法中,由于我们考虑了“舍入学习”,因此编写了mod p。对于本发明的(环形)错误学习,我们将添加噪声而不是执行舍入,并且计算将是对q取模。
参考实现方式(第2部分)
我们注意到,协议(KEX、KEM、PKE等)中与发起方和响应方相关联的秘密可能不止单个向量,所述向量在Zq[x]/f(x)中包含d/n个元素,而可以包含这些向量的n_bar和m_bar。例如,秘密s可以是私有矩阵,例如私钥矩阵,公钥b可以是公共矩阵,例如公钥矩阵,秘密r可以是私有矩阵,例如私钥矩阵,并且公钥u可以是公共矩阵,例如,公钥矩阵。为了生成足够的密钥位,使n_bar和m_bar大于1是优选的。因此,参考实现方式中该方案中的所有运算都可以表示为两个矩阵的乘积,其元素在Zq[x]/f(x)中。特别地,为了计算b,可以在A和s之间计算矩阵乘积,为了计算u,可以在A和r之间计算矩阵乘积,并且为了计算rkr,可以在b和r之间或在b和s之间计算矩阵乘积。
为此,需要以下通用函数:
C=Multiply(A,B,A_c,A_r,B_c,B_r,n)
其中A和B分别是维度为(A_c x A_r)和(B_c x B_r)的输入矩阵。矩阵中的每个条目包含Zq[x]/f(x)中的元素,可以将其表示为Zq中的n个元素。输出矩阵C的维度为(C_c xC_r)=(A_r x B_c)。
此外,在一些情况下,需要函数来转置矩阵。为此,我们需要函数:
B=Transpose(A,A_c,A_r,n)
其中A是维度为(A_c x A_r)的输入矩阵。矩阵中的每个元素包含Zq[x]/f(x)中的元素,可以将其表示为Zq中的元素。输出矩阵B的维度为(B_c x B_r)=(A_r x A_c)。
在矩阵中编码信息的一种特定方式是使用存储在Zq中最低级别元素上的向量。例如,如果q=2^14,则可以使用两个字节存储每个元素。维度为(A_r x A_c)且具有Zq[x]/f(x)中的元素的矩阵A可以存储在长度为A_r*A_c*n*2字节的向量中(其中假设q<=2^16)。该向量将编码A:(i)逐行,(ii)在每行中逐列,并且(iii)然后Zq中的n个元素。
以上两个函数(Multiply()和Transpose())将以合适的方式访问用于存储矩阵的向量。这也是为什么将n作为输入参数传递给这两个函数的原因。
公钥计算的优化实现方式(第1部分):
对于固定的安全参数d,对于n=d的情况,上述参考实现方式是快速的,因为假设n_bar=m_bar=1,A矩阵包含Zq[x]/xn-1中的多项式的单个条目。对于n=1,由于A包含d2个条目,因此参考实现方式会很慢,其中每个条目都是Zq中的元素,并且标量乘法被实现为通用多项式乘法。
对于优化的实现方式,我们可以利用以下事实:在n=d的情况下,多项式乘法运算可以表示为在Zq上dxd=nxn矩阵与长度为d且具有来自Zq中的条目的向量的乘积:
利用这一事实,在实现公钥计算时,我们总是可以假设输入矩阵A(例如,表示为扩展共享矩阵)将对于n=1(LWR)包含d2个不同的元素且对于n=d(RLWR)包含d个不同的元素。换句话说,扩展共享矩阵可以具有等于难度参数d的列和行的数量,并且可以通过用上述循环矩阵替换多项式项来计算。在执行矩阵乘法时,算法之间的唯一区别在于,对于响应方,针对n=1矩阵乘法是从左开始的并且针对n=d从右开始。换句话说,公共矩阵乘法部分可以用于结构参数和/或难度参数的不同值。
替代地,多项式的系数可以组织为行向量,我们使用
公钥计算的优化实现方式(第2部分)
如在相关的Philips文件[1]中所公开的,给定的主矩阵A_master,通过应用置换,A可以有效地被刷新。置换可以例如是A_master中n’(0<=n’<n)行的循环移位(在0和n-1之间的随机偏移)。
这个的自然扩展是将A_master视为长度为L的向量a_master并对其进行置换以获得A的行。我们用非常具体的置换来区分三种情况:
情况1:L=d2,并且为获得A的第i行的置换包括:采用amaster的i*d位置开始的d个相继元素,并将其循环旋转在0和d-1之间的随机偏移。
情况2:L≈q,并且为获得A的第i行的置换包括:采用amaster的元素ei开始的d个相继元素,其中ei是[0,L-1]中的随机选择值,并且结束于元素ei+d(mod L)(因此,也考虑循环结构)。
情况3:L=d,为获得A的第i行的置换包括:采用amaster的元素i开始的d个相继元素(也考虑循环结构)。
显然,可以通过使用其它类型的置换或使L>d2来进一步泛化上述三种情况。对于这种方法中的三种情况:
情况1实现了针对n=1的本文档中描述的方案。如果amaster是随机计算出的,则得到的A不能与随机矩阵区分开。由于元素旋转了随机偏移,因此在给定固定a_master的情况下,所述方法可以有效地获得刷新的A。
情况3实现了针对n=d的方案,并提供了获得多项式卷积a*s中a的矩阵表示的有效方式。
情况2是在环形结构与非环形结构之间的情况。对于这种情况,由于L<d^2,由于A中的行之间会存在一些交叠,因此不可能减小到(LWR)。因此,可以将得到的矩阵A与随机矩阵区分开。然而,从实际的角度来看,所述方法破坏了得到的A中的单环结构,因为它包含更多元素。实际上,每行都使用不同的环。
如果我们将上述方法合并到优化的实现方式中(第1部分),我们可以根据给定长度L的amaster、一些特定特征的置换和秘密s来实现矩阵乘法。取决于长度L和置换的选择,相同的算法可以有效地针对n=1和n=d实现矩阵乘法。
我们注意到,在情况1中,可以重新使用a_master,并且可以通过改变行置换来获得a_master和新矩阵A。在情况3中,建议定期更新a_master。
下表中对此进行了总结,其中我们观察到,取决于L的选择,我们可以获得不同的性能和安全保证。我们观察到,从带宽的角度来看,取L=q并没有好处,因为结构被破坏了,并且需要传输更多的信息来传达A;但是,在CPU方面,所述方法效率更高,因为需要计算的随机数更少。
优化的实现方式(第3部分)
知道在两种情况下公钥都包含Zp中的d个元素,可以将相同的置换思想应用于原始密钥的计算。对于n=1,它们实际上是Zp=Zp[x]/x-1中的d个元素。对于n=d,这d个元素是Zp[x]/xd-1中多项式的系数。
对于n=1,按接收到的次序处理接收到的公钥的d个元素,但是对于n=d的情况,首先需要重新排列d个元素,以使其类似于将要实现多项式评估的矩阵第一行的次序。然后,我们可以定义两个变换:
此外,我们认为应用了两个置换来获得类似于多项式乘法的矩阵。
鉴于此,获得原始密钥的优化算法如下:
注意,由于我们接收到系数向量b=(b0,b1,...,bn-1)^T并需要获得以b为最左列的循环矩阵的顶行,因此Td是所需要的。
在上述算法中,Tn作用于b上以正确地重新排列元素,而Pn对Tn(b)进行移位以执行模块简化操作。
优化的实现方式(第4部分)
优化实现方式的关键方面是在a_master上实现置换。这要求实现归约对L取模和对d取模。这在性能和侧信道攻击方面具有缺点。为了避免这些模化归约,例如在向量v上:
v[(i+P[j])(mod d)]
优化的实现方式可以与仅包含向量副本的向量v_star一起使用。
v_star=v|v
其中,|表示级联。这增加了存储器需求,但避免了模化归约。
我们还注意到,这种方法可以允许以有效的方式实现其它环。例如,如果我们使用环Zq[x]/x^n+1,则v_star将获得为:
v_star=v|-v
确实,那么我们将有
因此,A在对角线上方具有减号;实际上,如果i≥j,则A(i,j)=ai-j;并且如果i<j,则A(i,j)=-an+i-j。由于对于1≤k≤n-1,a0=A(0,0)并且ak=-A(0,n-k),因而如果i>j则A(i,j)=-A(0,n-i+j),并且如果j≥i,则A(i,j)=A(0,j-i)。因此A(i,j)=v(n-i+j),其中如果k<n,则v(k)=-A(0,k-n),并且对于k≥n,则v(k)=A(0,k-n)。
基于LWR和NTRU-RING LWR的CPA-PKE、CPA-KEM和CCA-KEM
以下进一步的信息描述了如何基于到目前为止描述的思想来构造CPA-PKE、CPA-KEM和CCA-KEM协议。因此,仅通过使用不同的配置参数,即可实例化这些协议以依赖LWR和NTRU-RING LWR。
NTRU环具有归约多项式f(x)=xn-1,其中n是质数。然后对于给定的晶格维度问题d,我们可以用n=d或n=1实例化系统。如果n=d,则我们具有NTRU-RING LWR,并且如果n=1,则我们具有LWR方案。
我们注意到,即使描述使用(d,d)或(d,1)作为输入参数(d,n),我们也可以具有更通用的配置,其中输入参数为(k*n,n),其中n可以是1或质数(在NTRU环的情况下)。
其它实施例
我们注意到,该描述不依赖于秘密的类型,也不依赖于使用舍入或标准的噪声添加(高斯分布、均匀分布或任何其它分布)的事实。因此,可以针对任何类型的秘密分布来实现本发明。
对RLWE的适用性:以下进一步的信息包含NTRU环的特定选择,并且p和q为2的幂。这些选择是由特定类型的密钥调和方法以及使p和q作为2的幂导致更有效的实现方式这一事实所激发的。替代实施例将本文档中的思想应用于R/LWE。在这种情况下,需要添加噪声而不是应用舍入。
对其它协议的适用于:我们已在本文档中示出了如何在KEX、KEM或PKE的构造中应用我们的设计。同样的方法也适用于类似El-Gamal的方案类型。该方案还可以适用于其它方案,例如签名。
其它环的使用
本文档中的大多数实施例基于NTRU环f(x)=xn-1。然而,所述多项式不是不可约的,并且等于(x-1)(x^(n-1)+x^(n-2)+...+x+1。这导致RLWE决策问题(b=as+e)容易解决,但是,找到s仍然很困难。
文献中使用可以在以上实施例中使用的其它环。例如,可以使用形式为xn+1分圆环,其中n是2的幂,q是质数,并且q≡1(mod n)。还可以使用形式为f(x)=xn′-1+xn′-2+…+x+1的质数分圆环,其中q为质数且q≡1(mod n')。在这种情况下,结构参数n可以比定义质数分圆环的质数n'小1,从而在加密操作中可以使用次数小于结构参数的整数多项式。
我们可以以以上针对NTRU环所示的类似方式使用这些环。例如,当对于上述分圆环n=1时,非环情况(LWE)则用环(xn=1+1)或(1)实现。注意,在两种情况下,q都是质数。我们注意到,密钥调和方法与上述实施例中使用的密钥调和方法不同,因为它要求q为二的幂。合适的选择将是如Frodo中的密钥调和。
另一不错的选择是使用上述的分圆多项式,即xn+1和xn-1+xn-2+…+x+1,并使用2的幂q而不是质数。要求q是质数主要是使用NTT,但是,对于我们的方案的实现,将q选择为二的幂是更好的,因为好的选择是借助于矩阵乘法来实现该方案。
另一好的选择是使用上述的分圆多项式,即xn+1和xn′-1+xn′-2+…+x+1,并使用二的幂q,附加要求是多项式是对2取模不可约的,并且结构参数n可以比质数n'小1,使得可以在密码运算中使用次数小于结构参数的整数多项式。
我们还注意到,如果使用质数分圆多项式,xn-1+xn-2+…+x+1,则由于两个环仅相差项x-1,所以仍可以在环x^n-1中进行运算。为此,只需要乘以x-1即可将值从一个环提升到另一环。一旦实现了操作,我们可以通过除以相同的量来返回到上一环。
从性能角度的参数选择的基本原理
针对RLWE已知的一些计算优化不能应用于本文档中介绍的一些实施例。特别地,不可能将NTT应用于NTRU环。一种替代方案是使用NTT友好参数,例如2的幂n和质数q,从而在Zq[x]/f(x)的运算可以通过NTT执行,其中f(x)=x^n+1。由于使用了NTT,该优化将提高环形情况(n>1)的CPU性能,但是,由于运算将是对q取模(q为质数),因此我们预计非环形情况(n=1)的性能会较差。
本文档中提出的参数选择似乎是组合方案的最佳选择,因为当借助适用于n的任何选择的矩阵/向量运算执行时,其允许快速实现运算。换句话说,即使对于n>1方案可能不如使用NTT的另一种环形方案那样有效,所述文档中的选择也允许在n>1以及n=1时非常快速地实现该方案。此外,由于存在许多合适的环,所以NTRU环的使用可以对安全性和带宽要求进行微调。
参数
该方案可以配置有不同的参数。d、q和p的值定义了潜在晶格问题的难度。示例性值例如是d大约为700和q等于2^14以及p等于2^11。在这种情况下,n_bar和m_bar可以等于8,从而当n=1时,可以从KEX中针对得到的密钥矩阵的每个系数中获得4位。当n=d时,则每个多项式系数只需要一位,从而可以使q更小,因此也可以使p更小,以及因此也可以使n更小。由于多项式具有n个系数,因此可以获得n位的密钥,并且n_bar和m_bar仅需要等于1。
我们注意到,对于一些环选择,我们可以具有多组参数。例如,如果我们采用质数分圆多项式,则可以具有以下类别的参数:
n=1和n=d的参数确定潜在问题是否基于环结构。
q是质数或2的幂,确定从CPU角度来看可行的优化类型。
方案的可配置性
可以为不同的安全级别和潜在的硬问题配置方案,如下所示:
第一,对于每个潜在问题(例如,LWR或RLWR),计算机程序计算目标参数(主要是d、n、q和p)以关于故障概率、带宽和CPU实现给定的安全级别和性能。该任务可以执行一次,并且然后参数可以被发布。
第二,已发布的参数集与实现本文档中提出的方案的程序一起存储在表中,每个参数集对应于给定的潜在问题、安全级别和性能参数。
第三,当双方(例如,Alice和Bob)希望彼此通信时,Alice通知Bob她愿意使用的参数集。这意味着Alice可以确定她是否想要使用该方案(例如,以环形或非环形模式(d和n的选择)以及以哪种安全级别使用(取决于d、q和p)。Alice可以通过明确指定设置参数(d、n、q、p、…),通过发送参数集的识别符,或通过指定取决于所选参数的性能值(例如,公钥的大小、私钥的大小…),来通知Bob关于她的选择。我们注意到,Bob然后还可以具有不仅要求最低安全级别而且还需要特定难题的策略。因此,如果Alice的建议不令人满意,则Bob可以请求不同的参数集。
从更数学的角度来看,以下是关于以上内容以及其它实施例的更多信息。
1算法规格和支持文档
1.1设计基本原理
1.2潜在问题
1.3初步
1.4CPA公钥加密
1.5非环情况的CPA密钥封装机制
1.6非环情况的CCA密钥封装机制框架
1.7非环和环形情况组合
1.7.1框架配置
1.7.2参数集
1.7.3NIST级别
1算法规格和支持文档
1.1设计基本原理
一些实施例涉及用于实现密钥封装的算法的框架。所提出的算法属于基于晶格的密码学的类别,特别地,它们可以依赖于舍入学习(LWR)问题。由于对它的广泛研究和其有利的性能属性(例如降低的带宽要求),已选择该问题用于算法的设计。
一些实施例的有趣特征是该框架已经被设计为以无缝方式实例化LWR问题和环形LWR(RLWR)。这意味着可以使用相同的算法(和代码)来有效地实例化基于LWR或基于RLWR的算法。这种选择的基本原理是多方面的。
·第一,这允许以简单的方式适应多种环境:在一方面,基于LWR的算法可以应用于性能不是问题但安全是优先问题的环境,从而优选的是不要附加的环结构。在另一方面,基于RLWR的算法在带宽和计算方面实现最佳性能,使得它们更适合于更受限的环境。
·第二,从第一天开始,这种方法就可以实现从基于环的方案到非环方案的迁移策略。这可以确保,如果由于潜在的环结构而在将来发现对基于环的方案的攻击,那么替代的安全解决方案已经可用并已部署。
·第三,由于相同的实现方式实例化了所有算法CPA-KEM、CCA-KEM和CCA-PKE的RLWR和LWR情况,因此提出的框架减少了维护和代码分析。
实施例通过若干区别特征进一步优化性能。首先,使用LWR和RLWR优化了带宽性能,并且避免了采样例程。第二,选择稀疏的三元秘密,因为它们易于实现,允许提高性能,并减少故障概率。第三,为了防止计算前攻击,公共矩阵A不能保持恒定,而是以非常有效的方式进行更新,以最小化由于在握手期间的重新计算而导致的性能下降。第四,用于执行舍入、消息压缩和解密的功能是通过相同的函数实例化的。这简化并优化了设计。第五,所述提案的环形版本由于其良好的性能特征而依赖于NTRU环。
1.3初步
我们用Rn表示多项式环Z[x]/(xn-1)。这里,n是结构参数,并且xn-1是次数等于该结构参数的归约多项式,使得可以用次数小于该结构参数的多项式。我们将允许n=1;则Rn=Z。通过滥用符号,对于每个正整数a,我们针对集合{0,1,K,a-1}编写Za,并针对次数小于n且具有Za中的所有系数的多项式集合编写Rn,a。如果Rn内的多项式的所有系数均为0、1或-1,我们称其为三元多项式。
在整个文档中,常规字体字母表示来自Rn的元素,粗体小写字母表示具有Rn中的系数的向量。所有向量都是列向量。粗体大写字母是矩阵。向量v或矩阵A的转置用vT或AT表示。
求模归约对于正整数α和x∈Q,我们将{x}α定义为满足x′≡x(mod α)的区间(-α/2,α/2]中的唯一元素x′。此外,我们将<x>α定义为区间[0,α-1]中的唯一元素x′,从而x≡x′(mod α)。
舍入对于x∈Q,我们通过「x」表示将x舍入到最接近的整数,如果出现平局则进位舍入。
压缩和解压缩设a、b为整数,使得a>b。我们定义函数Compressa,b:Za→Zb和Decompressa,b:Zb→Za定义为并且/>因此,Compress函数可以用于将噪声例如添加到矩阵(例如矩阵乘积)的条目中。例如,将噪声添加到未缩放的值x可以包括:将未缩放的条目与模数b相乘,除以模数a,舍入为整数(例如,最接近的整数),并且用舍入的条目对第二模数取模。可以将Decompressa,b示出为“几乎是”Compressa,b的倒数。更确切地说,对于每个/>
通过直接计算可以看出,如果a是b的倍数,那么
对于每个x∈Za,Decompressa,b(Compressa,b(x))≡x+{x}b/a(mod a)。
压缩函数用于三个目的。
·第一,提高了安全性,因为会导致“舍入学习”问题。
·第二,用于解密消息。
·第三,减少了公钥和密文的大小,因此减少了带宽需求。
对于每个v∈Rn,v的汉明权重被定义为其非零系数的数量。中向量的汉明权重等于其分量的汉明权重之和。我们用Hn,k(h)表示汉明权重h的三元多项式的所有向量的集合。通过将Rn中多项式的系数视为次数为n的向量,Hn,k(h)中的多项式对应于h位置为非零的长度为nk的三元向量,因此Hn,k(h)具有/>个元素。
对于我们定义||v||为其系数的最大绝对值,即||v||=max{|vi||0≤i≤n-1}.
显而易见,对于所有的a,b∈Rn来说,我们具有||ab||≤n·||a||||b||.
类似地,如果V是Rn中的多项式的矩阵,则||V||是V中的多项式的所有系数中最大的。最后,对于μ≤ab和C∈Za×b,向量包括C的μ个预先指定位置中的值。
1.4CPA公钥加密
在本节中,我们描述了非环情况下的公钥加密。我们的CPA安全公钥加密方案将通过以下算法进行描述。这些算法假设知道各种系统参数,即正整数该算法包括对于矩阵/>以及对于/>矩阵S和/>矩阵R(两者都具有Tn(h)中的所有列)的随机选择。也就是说,S和R都是三元矩阵,对于它们,每列都具有汉明权重h。为了针对A做出明确的选择,系统参数包括随机性空间Σ和映射/>类似地,为了针对S和R做出明确的选择,我们定义了函数fS和fR,其分别在来自/>和/>的输入上进行分配,分别生成三元/>和/>其中每列具有汉明权重h。对于集合A,我们用/>表示a从A中统一得出。
第一算法生成中的公钥pk和秘密密钥/>即三元/>矩阵,其每列具有汉明权重h。
算法1:PST.NR.CPA-PKE.Keygeneration()
参数整数
输入-
输出
A=f(σ)
S=fS(s)
B=Compressq,p(<AS>q)
pk=(σ,B)
sk=S
return(pk,sk)
下一算法根据公钥pk、消息m和随机性变量ρ生成密文C。
算法2:PST.NR.CPA-PKE.Encryptwithrho(pk,m,ρ)
参数整数
输入
输出
A=f(σ)
R=fR(ρ)
U=Compressq,p(<ATR>q)
c=(U,v)
return c
加密算法公钥pk和消息m生成密文C。
算法3:PST.NR.CPA-PKE.Encrypt(pk,m)
参数整数
输入
输出
c=PST.NR.CPA-PKE.Encryptwithro(pk,m,ρ)
return c
解密算法从秘密密钥sk和密文C中取回(估计)明文消息m。
算法4:PST.NR.CPA-PKE.Decrypt(sk,c)
参数整数
输入/>
输出
v=Decompressp,t(v)
return
1.5非环情况下的CPA密钥封装机制
以下三种算法建立在上一部分中定义的公钥加密方案上,以定义CPA安全密钥封装机制。它采用了散列函数H:{0,1}*→{0,1}μB
注意,我们还可以具有附加的散列函数G:{0,1}*→{0,1}κ,在封装算法的步骤4和解封装算法的步骤2中应用G而不是H。
算法5:PST.CPA-KEM.Keygeneration()
参数整数
输入
输出
(pk,sk)=PST.NR.CPA-PKE.Keygeneration()
return(pk,sk)
如算法5所示,可以通过执行例如PST.NR.CPA-PKE的公钥加密方案的密钥生成来执行用于密钥封装机制的密钥生成。
算法6:PST.CPA-KEM.Encapsulate(pk)
参数整数
输入
输出
m=H(a,pk)
c=PST.NR.CPA-PKE.Encrypt(pk,m)
K=H(m,c)
return(c,K)
如算法6所示,密钥封装可以包括使用公钥加密方案(例如,PST.NR.CPA-KE)对m(其可以是共享密钥)进行加密。在该算法中,将m的位输入到密码散列函数中,以导出密钥封装机制的结果K(此处与c结合);下面讨论使用共享位(例如作为密钥推导函数的输入)的替代方式。算法7:PST.NR.CPA-KEM.Decapsulate(sk,c)
参数整数
输入
输出/>
m=PST.NR.CPA-PKE.Decrypt(sk,c)
K=H(m,c)
return K
如算法7所示,密钥解封装可以包括解密公钥加密方案(例如PST.NR.CPA-PKE)的密文c,以获得明文m,其中m可以是共享密钥,而m在执行封装的节点和执行解封装的节点之间共享。再次,如算法7所示,可以使用m来用密码散列导出密钥推导函数的结果K,或如下面所讨论的,使用诸如密钥推导函数的其它技术。
注意,在算法6和7中,在将pk和C提供给H之前,我们会将其隐式映射到位串。
1.6非环情况的CCA密钥封装机制框架
密钥封装框架是通过将Fujisaki-Okamoto变换的KEM变型应用于我们的加密方案以使其CCA安全。我们使用CPA-PKE方案中的表示法。我们还需要两个散列函数G:{0,1}*→{0,1}β×RR×{0,1}γ和H:{0,1}*→K={0,1}κ
我们首先描述密钥生成算法。注意,在相等的随机选择的情况下,公钥pk是相等的。算法8的秘密密钥包括秘密密钥,以及公钥和随机字符串(z)。
算法8:PST.NR.CCA-KEM.Keygen()
参数整数
输入
输出-
(pkCPA-PKE,skCPA-PKE)=PST.NR.CPA-PKE.Keygen()
pk=pkCPA-PKE
sk=(skCPA-PKE,z)
return(pk,sk)
算法9的输出C包括:用与算法3相同的输入和R的相同选择,来自算法3的密文(U,v)。它还包括密钥K。
算法9:PST.NR.CCA-KEM.Encapsulate(pk)
参数整数
输入
输出
(第1行)
(第2行)
(U,v)=PST.CPA.PKE.Encryptwithro(pk,m,ρ)
c=(U,v,d)
/>
return(c,K)
用相等的密钥S和相等的输入(U,v),m′的值等于当给予算法3的值。我们得出的结论是,如果NR CCA算法中的随机选择等于NRCPA-PKE算法的随机选择,并且NRCPA-PKE算法正确取回在算法9的第1行中选择的消息m,则m=m′。在那种情况下,在算法10的第2行中计算出的等于在算法9的第2行中的/>因此,在算法10和算法9的第5行计算出的K值相等。如果不满足算法10的第5行中的条件,则输出为随机密钥。
算法10:PST.NR.CCA-KEM.Decapsulate(pk,sk,c)
参数整数
输入
输出K∈K
(第1行)m′=PST.NR.CPA-PKE.Decrypt(S,(U,v))
(第2行)
(第3行)(U′,v′)=PST.CPA-PKE.Encryptwithrho(pk,m′,ρ′)
(第4行)if(U′,v′,d′)=(U,v,d)then
(第5行)return
(第6行)else
(第7行)return K=H(z,c)
(第8行)end if
注意:在算法9和10中,我们在将(σ,B)m′和C分别馈送给G和H之前隐式地将其映射到二进制字符串。
1.7非环和环情况组合
在本节中,我们将用多项式环Rn=Z[x]/(xn-1)描述先前算法的组合非环和环版本。我们使用*来表示Rn中的乘法。为了强调与非环情况的相似性,我们识别多项式和(列)向量(f0,f1,K,fn-1)T。对于f,g∈Zn,我们定义f*g为多项式f(x)g(x)(mod(xn-1))的系数向量。也就是说,对于0≤i≤n-1,/>
我们还定义了矩阵的乘法*,如下所示。设并且设/>也就是
并且/>
矩阵BT*R定义为
为了区分环和非环情况,我们使用布尔参数ring。
算法11:PST.CPA-PKE.Keygeneration()
参数整数布尔值ring要求如果ring则/>否则/>
输入
输出-
S=fS(s)
if ring
then begin a=fpol(σ);B=<a*S>q end
else begin A=f(σ);B=(<AS>q)end
B=Compressp,q(B)
pk=(σ,B)
sk=S
return(pk,sk)
如上所述,本发明的实施例可以基于难度参数和结构参数来指定要使用的加密的类型。在本算法中,输入参数n用于表示输出值pk和sk的大小,因此,难度参数可以用作n的值。类似地,所述算法的ring参数用于指示算法的环版本是否与环Rn=Z[x]/(xn-1)一起使用(因此,如果结构参数等于难度参数n,则可以将其设置为“真”),或使用算法的非环版本(因此,如果结构参数等于1,则可以将其设置为“假”)。
在环和非环情况下,算法均使用维度等于难度参数除以结构参数的矩阵a或A,其条目为次数小于结构参数的整数多项式,所述矩阵可以是共享矩阵。特别地,在环情况下,如上所述,结构参数可以等于难度参数,在这种情况下,矩阵a可以包含次数为n的单个多项式,对应于(经由上述带有向量的多项式的标识)长度为n的向量,如算法11所示。在非环情况下,结构参数可以等于1,使得矩阵A的维度等于难度参数,并包含次数小于1的多项式,例如,整数。在两种情况下,通过使用函数f从值σ生成a或A来获得a或A,其中σ可以是种子,而评估f可以包括评估确定性伪随机数生成器。
在算法11中,矩阵S可以是私钥矩阵,它从域生成的,即,条目是三元/>矩阵,对应于(经由上述带有向量的多项式的识别)包含次数小于结构参数的整数多项式的矩阵。
接下来,所述算法通过计算a或A(其可以是共享矩阵)和S(其可以是私钥矩阵)之间的矩阵乘积,而生成矩阵B(其可以是公钥矩阵)。在这样的实施例中,如上所述,可以使用公钥计算a*S或AS的优化实现方式。在环情况下,多项式乘法运算a*S可以表示为nxn矩阵与长度为n个条目(其中条目来自Zq)的向量的乘积。在非环情况下,AS也是矩阵乘法,其中A的维度等于难度参数。结果,在其中使用公钥操作的优化实现方式的一些实施例中,可以针对结构参数和/或难度参数的不同值调用公共矩阵乘法部分。不管如何,使用算法11的实施例可以通过计算a或A(其可以是共享矩阵)和S(其可以是私钥矩阵)之间的矩阵乘积来生成B(其可以是公钥矩阵),对第一模数取模和对次数等于结构参数的归约多项式取模,并对矩阵乘积中的条目添加噪声,其中在该实施例中,添加噪声包括将每个未缩放的条目乘以p,除以q,舍入为整数(例如,最接近的整数),并对舍入后的条目对p取模。
最后,所述算法返回值(σ,B)和S,使得在得到的公钥加密操作中,公钥可以包括B和值σ,从中可以得到a或A。并且私钥可以包括S。
下一算法从公钥pk、消息m和随机性变量ρ生成包括第一密文部分和第二密文部分的密文C。
算法12:PST.CPA-PKE.Encryptwithrho(pk,m,ρ)
参数整数布尔值ring要求:如果ring则/>否则/>
输入
输出
if ring
then begin a=fpol(σ);U=<a*R>q end
else begin A=f(σ);U=<ATR>q end
U=Compressq,p(U)
if ring
then
else
c=(U,v)
return c
如图所示,所述算法首先使用来自pk的值σ作为种子,通过从确定性伪随机数生成器的输出生成而获得a或A,其可以是共享矩阵。因此,公钥加密方案的公钥可以包括从其获得共享矩阵的种子。同样,它生成值R=fR(ρ),其可以是私有矩阵。如算法11,a或A是维度等于难度参数除以结构参数的矩形矩阵,其中条目是次数小于结构参数的多项式,而R是次数小于度参数的整数多项式的矩阵。同样如算法12,通过计算a或A与R之间的矩阵乘积,来计算矩阵U,所述矩阵U可以是第一密文部分,对q取模并且对次数等于难度参数的归约多项式取模;然后添加噪声包括:将每个未缩放的条目乘以p,除以q,舍入为整数(例如,最接近的整数),并对舍入后的条目对p取模。
接下来,所述算法使用来自pk的值B,它可以是公钥矩阵。因此,公钥加密方案的公钥可以另外包括与pk对应的网络节点的公钥矩阵。据此,计算可能是原始密钥的值BT*R(在环情况下)或BTR(在非环情况下),即在B和R之间的矩阵乘积,其中B和R被视为次数小于结构参数的多项式。如上所述,在一些实施例中,可以将与公钥矩阵相同的置换思想应用于该计算,从而可以将公共相乘方用于结构参数和/或难度参数的不同值。
最后,所述算法根据值BT*R或BTR以及根据消息m(其可以是例如明文消息),或者当用于诸如PST.CPA-KEM或PST.NR.CCA-KEM的封装机制时,可以从中导出在后续通信中使用的密钥的的双方之间共享的密钥,来计算值v(其可以是第二密文部分)。从算法用U返回值v,从而可以将这些值一起发送给与给定pk对应的网络节点。
下面的加密算法根据公钥pk和消息m生成密文C。该算法直接调用算法12,使得使用算法13的实施例可以类似地接收难度参数和结构参数,获得共享矩阵,生成私有矩阵,生成第一密文部分并计算第二密文部分,如上所述。在基于算法13的公钥加密操作的实施例中,公钥因此可以包括公钥矩阵和可以从其获得共享矩阵的数据,并且私钥可以包括私钥矩阵。
算法13:PST.CPA-PKE.Encrypt(pk,m)
参数整数布尔值ring
输入
输出
c=PST.CPA-PKE.Encryptwithro(pk,m,ρ)
return c
在密钥交换或密钥封装机制的上下文中,诸如PST.CPA-KEM.Encapsulate()的算法可以使用PST.CPA-PKE.Encrypt或PST.CPA-PKE.Encryptwithrho。在这种情况下,U可以承担执行封装的一方的公钥矩阵的角色,R可以承担对应的私钥矩阵的角色。类似地,v可以承担调和数据的角色,以使封装设备和解封装设备到达相同的共享密钥。
解密算法从秘密密钥sk和密文C中取回(估计)明文消息m。
算法14:PST.CPA-PKE.Decrypt(sk,c)
参数整数布尔值:ring要求:如果ring则/>否则/>
输入
输出
v=Decompressp,t(v)
if ring
then
else
return
类似于以上算法,算法14接收指示输入sk的大小的值n和指示使用环还是非环变体的值ring作为输入参数,例如,在使用算法14的实施例中,n可以对应于难度参数,而ring可以指示难度参数是否等于结构参数。该算法经由上面讨论的在向量和次数为n的多项式(次数小于结构参数的整数多项式)之间的对应关系,获得具有条目的矩阵S作为输入,其中,S可以是节点本身的私钥矩阵。该算法获得矩阵U作为另一输入,所述矩阵U可以是第一密文部分,并计算ST*U(在环情况下)或STU(在非环情况下),这可以是原始密钥并作为S和U之间的矩阵乘积进行计算,两个矩阵都被视为包含次数最多为结构参数的多项式的矩阵。然后,所述算法通过使用采样和压缩过程,使用矩阵乘积(例如,值ST*U或STU)和作为输入接收的另一值v(其可以是第二密文部分)来获得消息如在PST.CPA-PKE.Encryptwithrho中,消息/>可以包括密钥交换机制中的共享密钥,从中可以以如下所述的方式之一导出用于后续通信的密钥。
如上所述,在密钥封装或密钥交换的上下文中,诸如PST.NR.CPA-KEM.Decapsulate之类的算法可以使用PST.CPA-PKE.Decrypt。在这种情况下,U可以是执行封装的一方的公钥矩阵,例如,加密PST.CPA-PKE.Encrypt;v可以是调和数据,以使两个节点都达到的相同值,它可以是消息、共享密钥,或为其在后续通信中导出共享密钥的数据,例如,如PST.NR.CPA-KEM.Decapsulate所述。
1.7.1框架配置
以上算法使我们能够取决于配置参数启用若干算法。
·对于n=1和k=d,基于LWR的CPA-KEM。
·对于n=d和k=1,基于RLWR的CPA-KEM。
·对于n=1和k=d,基于LWR的CCA-KEM。
·对于n=d和k=1,基于RLWR的CCA-KEM。
·对于n=1和k=d,基于LWR的CCA-KEM-DEM。
·对于n=d和k=1,基于RLWR的CCA-KEM-DEM。
图1示意性地示出了密钥协商网络100的实施例的示例。密钥协商是密码操作的示例。密钥协商利用多种元素,例如,构造共享矩阵、私钥矩阵、公钥矩阵、矩阵乘法、添加噪声等,这对于其它类型的密码操作(例如,公钥加密)是常用的。在实施例中,设备100可以被重新配置为用于其它类型的密码操作,例如,如以上所指示的,或如在参考文献中所指示的。在实施例中,设备100可以被重新配置为用于多种类型的密码操作。在任何情况下,设备100具有以下优点:可获得许多不同级别的结构和难度。例如,密码操作可以是以下任一项:密钥交换(KEX)协议,密钥封装机制(KEM),公钥加密(PKE),数字签名。在实施例中,第一网络节点可以被配置为接收选择器,所述选择器从多个不同的密码操作中选择密码操作。但是,作为示例,以下实施例假设设备100被配置为密钥协商。
图1中示出了系统中的两个网络节点:发起方类型的网络节点110和响应方类型的网络节点210。在密钥协商系统的实施例中,节点的数量可以大于、甚至远大于两个,例如大于1000个节点,例如大于10^6个节点。
在发起方或响应方类型的网络节点之间的区别在于,它如何处理调和数据。发起方类型的网络节点接收调和数据并应用其以获得共享密钥,而响应方类型的网络节点生成调和数据并将其发送给发起方类型的网络节点。响应方类型的网络节点不需要调和数据来获得共享密钥。通常,发起方类型还将发起在两个网络节点之间的密钥协商协议,因为这可能会减少在两个网络节点之间执行的回合次数。然而,这不是必需的。密钥协商协议也可以由响应方类型的网络节点发起。
此外,在网络节点的实施例中,网络节点被配置为根据发起方模式并根据响应方模式进行操作。例如,如果网络节点发起密钥协商,例如,向另一网络节点发送用信号通知密钥协商协议开始的消息,则网络节点可以切换到发起方模式。如果网络节点响应密钥协议,例如,从另一网络节点接收到用信号通知密钥协商协议开始的消息,则网络节点可以切换到响应方模式。虽然这在实践中很方便,但是该选项也不是严格必需的。例如,在密钥协商系统中,一些模式可以仅被配置为发起方,而一些模式可以仅配置为响应方节点。这样的结果将是一些节点无法一起商定共享密钥。对于一些网络,这无需成为问题,例如在自组织网络或自组织无线网格等中,只要足够多对网络节点可以通信并商定共享密钥即可。
发起方节点110包括通信接口120。响应方节点210包括通信接口220。通信接口可以被布置为与密钥协商系统中的其它节点进行数字通信。这不是必须的,但是可以始终到达系统中的所有节点。
通信接口120和220被布置用于数字通信。例如,通信接口可以被布置为通过计算机网络进行通信。例如,可以将通信接口布置为用于无线通信(例如Wi-Fi、ZigBee、蓝牙等)和/或用于有线通信(例如以太网、USB等)。节点110和210之间的通信也可以是有线和无线连接的组合。例如,系统100中的节点(包括节点110和120)可以包括包含通信标识符的电子存储设备,所述通信标识符唯一地标识系统100内的节点。例如,通信标识符可以包含于在节点110和210之间交换的数字消息中,例如,以对该消息寻址。例如,通信标识符可以是IP地址、MAC地址等。
电子网络节点被配置用于密钥交换(KEX)协议。该协议涉及通过通信接口120和220在节点110和210之间交换消息,以及对例如从另一节点接收到的数据进行计算。密钥协商协议的执行在处理器电路中实现,其示例如下所示。图1示出了可以是处理器电路的功能单元的功能单元。例如,图1可以用作处理器电路的可能功能组织的蓝图。处理器电路未与图1中的单元分开显示。例如,图1中所示的功能单元也可以全部或部分地以存储在网络节点上并可由网络节点的微处理器执行的计算机指令来实现。
发起方节点110和响应方节点210被配置用于密钥交换(KEX)协议。KEX方案涉及各方交换公共数据(通常称为公钥),然后由另一方与他们的私有数据(通常称为秘密密钥)独立使用,以计算公共共享密钥。一些实施例的有趣特征在于,双方之间从未交换实际的最终共享机密,甚至没有以加密形式,而是由每端的双方独立地计算。这导致称作前向安全性的理想特征,它确保即使攻击者将来破坏一方的长期密钥,也不会损害过去交换的加密消息的机密性。
本发明的实施例不依赖于受信任的第三方来提供机密通信。在通信接口120和220之间的通信信道不必一定是安全信道。攻击者能够窃听通信信道。即使这样,在节点110和210之间商定的密钥可以是安全的。如果保护通信信道免受更改,则可以就该信道所提供的方面获得认证次数。然而,如果没有保护通信接口120和220之间的信道不被更改,则没有KEX方案将实现认证。为了获得认证,可以将实施例与任何已知的认证机制(例如,使用如经证明的公钥的隐式认证机制,或者使用如数字签名的显式认证机制)进行组合。
发起方节点110包括共享矩阵单元130。响应方节点210包括共享矩阵单元230。共享矩阵单元130和230被配置为获得在两个节点之间共享的共享矩阵(A)。存在很多方法可以确保在节点110和210之间共享同一矩阵,特别是考虑到矩阵A不一定必须对节点110和210保持私有这一事实。
共享矩阵单元130和共享矩阵单元230被配置为接收难度参数d和结构参数n作为输入。在图1中,难度参数d和结构参数n由附图标记131示意性地表示。注意,两个单元接收相同的难度参数d和结构参数n。这些数字d和n确定矩阵A的元素的大小和类型。设备110和210还可被配置为接收选择器,选择密码操作。
例如,难度参数d和结构参数n可以通过API来设置,例如,通过使用设备110和210用于例如受保护的通信的应用来设置。应用可以决定所需的难度和结构,并通过例如函数调用来指示设备110和/或250。
优选地选择共享矩阵A中的条目,对第一模数q取模,对次数等于结构参数(n)的归约多项式(f)取模。如果n=1,则条目为整数;如果n>1,则条目为多项式。第一模数q和归约多项式f也在例如通信或预定的节点110和节点210之间共享。共享矩阵A是例如维度为k的正方矩阵k×k。行和列的数量k等于难度参数d除以结构参数n。如果n=d,则矩阵A具有单个多项式条目。归约多项式f的实际选择是例如xn+1,xn-1或
优选地,结构参数n除以难度参数d,从而可以计算维度k。然而,在实施例中,k是通过将难度参数d除以结构参数n进行舍入而获得的,例如,舍入到最接近的整数,上舍入或下舍入。
在实施例中,设备110和210被配置为接收不同的难度参数d和/或不同的结构参数n。例如,设备可以允许任何难度参数d,例如,直到某个上界,和/或在某个下界之上。此外,设备可以允许n=1或n=d,或更一般地,允许除以d的任何n,并且1≤n≤d。
有趣的是,即使接收到不同的参数,对于不同的参数值,节点也不需要具有不同的实现方式。例如,节点110和210可以被配置为针对结构参数n和/或难度参数d的不同值而调用公共矩阵乘法部分。
在实施例中,结构参数n被限制为使得n或n+1是质数,但这不是必须的。在实施例中,结构参数n是2的幂,并且第一模数q是质数,但这也不是必须的。
例如,例如在共享矩阵单元130中的节点之一(例如发起方节点110)可以例如随机地对元素对q取模和对f取模来选择矩阵A。然后可以通过通信单元将条目发送给另一节点,例如,发送给共享矩阵单元230。在这种情况下,后一共享矩阵单元230将简单地接收矩阵并将其存储。矩阵A也可以代替地由响应方节点210选择,并发送给发起方节点110。
两个节点还可以合作选择矩阵A。例如,每个节点可以选择一些条目,并将其发送给另一侧。例如,发起方节点可以选择奇数条目,而响应方节点可以选择偶数条目,等等。这样,两个节点都没有控制最终矩阵A。例如,两个节点可以各自选择完整的矩阵矩阵A并将其通信给另一侧。此后,可以对两个矩阵添加对q和f取模。为了避免给最后一个节点发送矩阵的好处,可以首先由所述最后一个节点发送对所选矩阵的承诺。
减少发送完整矩阵A的开销的一种有趣方式是生成随机种子,并通过通信信道将随机种子发送给另一节点。在接收到种子之后,第一和第二网络节点可以以上述任意方式使用它来生成矩阵A。使用相同的随机种子播种确定性伪随机数生成器,所述生成器又根据伪随机数生成器的输出生成矩阵(A)。如上所述,每个节点可以发送种子,例如以生成A的不同部分,或者可以将两个种子进行组合(例如,相加或XOR),然后将组合的种子用于生成A。
种子例如可以从另外的随机数生成器(例如真实随机数生成器)中选择。节点还可以例如在制造时配置有随机数列表。在这种情况下,每次为新的密钥协商生成新的矩阵A时,节点都会从列表中选择下一随机数。如果随机数列表已用尽,则可以从信任源对其进行补充。
在实施例中,A的元素选自向量a_master。在实施例中,矩阵A在每次使用之后改变,例如,置换,可以替换一个或多个条目。
发起方节点110包括私钥矩阵单元140。响应方节点210包括私钥矩阵单元240。私钥矩阵单元140被配置为生成私钥矩阵SI。私钥矩阵单元240被配置为生成私钥矩阵SR。私钥矩阵中的条目是次数最大为n的整数多项式。如果f的次数为1,那么实际上说条目是整数。
一般而言,私钥矩阵是随机选择的。例如,可以从均匀随机概率分布中选择私钥矩阵(SI,SR)中的条目。分布也可以是非均匀的,例如,其中零条目的概率大于非零条目的概率,例如至少大两倍。
可以对私钥矩阵施加各种约束,例如,以提高安全性或减小其数据大小。私钥矩阵(SI,SR)可以例如在约束内从候选私钥矩阵均匀地随机选择。例如,在实施例中,私钥矩阵中元素的系数在绝对值中由边界为界,例如,其中所述边界为2(s=2),或者其中边界为1(s=1),后者对应于有符号的二进制。例如,私钥矩阵(SI,SR)的列和/或行具有固定或有界的汉明权重(hs)。
发明人发现,令人惊讶的是,选择小边界具有双重优点:与私钥矩阵的矩阵乘法更快,并且在每一侧计算出的原始密钥之间的距离更小(参见下文)。后者意味着需要较少的调和数据和/或协议失败的机会,因为商定了不同密钥的节点较小。
在实施例中,边界s是1(s=1)。也就是说,私钥矩阵的条目仅具有值为-1、0和1的系数。我们也将其称为“有符号的二进制”。
选择私钥矩阵的维度,使得它们可以与矩阵A相乘。例如,如果A是k x k,则发起方节点的私钥矩阵可以是k x矩阵。将/>和k的大小选择地足够大,以在共享密钥中获得足够数量的比特,并获得足够高的安全级别。
除了限制私钥矩阵的条目的大小之外,通过限制非零元素的数量还可以获得其它优点。我们将矩阵的列或行的汉明权重称为其分量的汉明权重之和。在此,多项式的汉明权重被定义为多项式的非零系数的数量。
发明人研究了限制私钥矩阵的汉明权重的不同方法。通常,取决于私钥矩阵是左乘还是右乘矩阵A来限制列或行的汉明权重就足够了。例如,如果私钥矩阵是右乘矩阵A(例如,AS),则限制私钥矩阵的列的汉明权重就足够了。
例如,可以为私钥矩阵的列和/或行的汉明权重选择上界。所有列和/或行的上界都可以相同。在实施例中,私钥矩阵(SI,SR)的列和/或行具有相同的固定汉明权重。
如果根据条件从候选私钥矩阵(即从满足所选要求的矩阵,例如关于条目的界限和列或行中的汉明权重)均匀地随机选择私钥矩阵,则可以提高安全性。例如,如果人们希望强制执行每列的汉明权重为50的条件,则从具有正确维度的所有矩阵的集合中选择私钥矩阵是有利的,其中每列的汉明权重为50。选择任何期望汉明权重的均匀随机比特串的有效算法是已知的。
限制私钥矩阵的汉明权重的另一种方法是从概率分布中选择私钥矩阵(SI,SR)的列和/或行。例如,可以从非均匀概率分布中选择私钥矩阵(SI,SR)中的条目,其中零条目的概率大于非零条目的概率。在实施例中,选择概率分布,使得其为列和/或行给出预定的预期汉明权重。例如,为了选择长度为n和预期汉明权重为hs的列,人们可以将每个条目选择为概率为hs/n的非零。非零条目可以例如以相等的概率被选择为1或-1。
发起方节点110包括公钥矩阵单元150。响应方节点210包括公钥矩阵单元250。公钥矩阵单元根据矩阵A和私钥矩阵S计算公钥矩阵。
术语“公共”和“私有”旨在传达仅在知道公共信息的情况下才能获得共享密钥,或者在不知道一些私有信息的情况下不能获得共享密钥。但是主动共享公共信息并没有要求。例如,密钥协商协议可以在(假定的)安全信道上执行,这使公钥免受窃听者的侵害。在这种情况下,密钥协商协议提供了额外的安全层,以防信道的安全性受到破坏。
通过计算共享矩阵(A)与私钥矩阵(分别为SI或SR)之间的矩阵乘积对第一模数(q)和f取模,获得矩阵乘积并添加噪声,公钥矩阵单元计算公钥矩阵P(针对发起方和响应方分别为PI、PR)。
注意,所述中间矩阵乘法未显示。知道共享矩阵A和该矩阵乘法的结果将揭示私钥,因为可以通过对矩阵A求逆来计算出私钥。
可以通过选择误差项或噪声项并将其添加到上述矩阵乘积的条目中来添加噪声。例如,可以从均值为0的高斯分布中选择噪声。添加噪声的优选方式是缩小中间矩阵乘积,例如将系数缩小。
在实施例中,公钥矩阵单元将矩阵乘积中的条目缩小到第二模数p。第二模数p小于第一模数q。缩放的条目等于未缩放条目乘以第二模数(p),除以第一模数(q),并舍入为最接近的整数。例如,如果x是矩阵乘积中的未缩放条目对q取模,则可以将缩放条目选择为其中/>表示最接近的整数。在缩放操作之后,不再可以直接根据公钥和矩阵A计算私钥。
公钥矩阵中的条目可以表示为系数在区间[0,p-1]中的多项式。私钥矩阵中的条目也可以表示为系数在区间[0,p-1]中的多项式。存在在区间[-p/2,p/2]中选择系数具有减小后续乘法的整数大小的优点。如上所述,私钥矩阵还可以具有在区间[-s,s]或甚至[0,s]中选择的系数。
矩阵A和私钥矩阵S的乘法对第一模数q和f取模进行。为此,网络节点可以包括用于减少对q取模和对f取模的模化归约单元。如果私钥矩阵S中的系数很小,例如以1为界或在绝对值中以1为界,则可以简化模化归约;在矩阵乘法期间,每当系数大于q或小于0时,通过减去或加上q将结果返回到区间0至q-1。
发起方节点和响应方节点两者例如使用通信接口120和220将它们的公钥矩阵发送给另一节点。发明人发现通过缩小矩阵乘积可以实现至少三个优点。首先,避免了生成噪声并明确将噪声添加到矩阵乘积中。引入噪声需要计算概率分布,例如高斯分布。这些是相对计算密集的。其次,减少了通信需求。由于第二模数p小于第一模数q,因此与私钥矩阵相比,表示公钥矩阵的条目所需的比特数更少。第三,涉及公钥矩阵的计算较小,因为它们涉及的数字较小。令人惊讶的是,单个措施同时提供三个优点。
强烈优选第二模数p除以第一模数q。有趣的是,发明人发现第一模数和第二模数都不需要是质数。实际上,发现将第二模数(p)和/或第一模数(q)选择为2的幂具有以下优点:公钥和私钥均匀地分布。在实施例中,第一和第二模数均为2的幂。
在实施例中,除了要求模数p和q为2的幂之外,我们还要求2B+bh|p。即使观察到调和数据,这也会导致均匀的共享密钥。B是原始密钥的每个条目提取的共享密钥的数量。
模数的大小不必很大。例如,在实施例中,第二模数具有12或更大的位大小,和/或第一模数具有8或更大的位大小。取决于安全性要求,大小可能更大或更小。在实施例中,q在2^12和2^15的范围内,p在2^7和2^9(包含性)的范围内。可以根据安全性要求来选择更大或更小的p和q值。
发起方节点110包括共享密钥单元160。响应方节点210包括共享密钥单元260。共享密钥单元在生成、发送或接收和应用调和数据的意义上是不同的。
共享密钥单元160和共享密钥单元260两者都被配置为计算原始密钥162、262,作为在另一节点的接收到的公钥矩阵与网络节点自身的私钥矩阵之间的矩阵乘积。对归约多项式f取模来计算乘积。如果使用缩放,则后者也是计算机对第二模数(p)取模。选择矩阵的维度和矩阵乘法,使得如果省略缩放操作,则双方将计算相同的原始密钥。也就是说,将在不添加噪声的情况下得到相同的密钥,并且所有计算均对q和f取模完成。然而,由于噪声,两个原始密钥不必相同。计算原始密钥可以对p取模完成。网络节点可以包括用于减少乘法对p取模的结果的模化单元。
响应方节点210的共享密钥单元260被布置为获得共享密钥266并从原始密钥262获得调和数据264,并将调和数据264发送给发起方网络节点110。在图1中,从原始密钥和调和数据中获得共享密钥,但这不是必需的,例如,如果响应方借助于密钥封装(例如,PST.CPA-KEM.Encapsulate或PST.NR.CCA-KEM.Encapsulate)来执行密钥交换,则也有可能从原始密钥和共享密钥中获得调和数据。调和数据可以采用原始密钥中一个或多个位的形式,例如,来自系数的位。为了生成密钥,将忽略被选为调和数据的位。这些参考包含调和数据的各种示例。
共享密钥单元260从原始密钥的条目中选择一些位以从中形成密钥。例如,所选择的位可以被级联。在实施例中,所选择的位被输入到密钥推导函数(KDF),例如密码散列函数。KDF的示例在例如CMLA技术规范版本V1.43-20131218中的CMLA_KDF或在“DRM规范”OMA-TS-DRM-DRM-V2_0_2-20080723-A,Open Mobile AllianceTM,版本2.0.2,第7.1.2节中定义的KDF函数中给出,等等。密钥推导函数可以应用于原始密钥中的密钥位条目,例如通过舍入函数(例如在级联之后)或根据来自调和函数的输出(例如也在级联之后)获得。
未被选择为关键位的一些位可以被选作调和数据。最后,一些位可能会被完全丢弃。共享密钥单元260从原始密钥获得的密钥调和数据被发送给发起方节点110。
共享密钥单元160被配置为接收第二网络节点的调和数据164(h),并且通过将调和函数应用于接收到的调和数据和原始密钥矩阵162来计算共享密钥166。例如,调和函数可以被应用于原始密钥162中的每个条目以及调和数据的对应部分。例如,如果调和数据164是由响应方单元210生成的原始密钥的一部分,则发起方节点可以选择可能已由节点210获得并与接收到的调和数据兼容的原始密钥,例如,具有与接收到的相同的中间位。
人们可以将矩阵A和私钥矩阵之一重新用于密钥协商协议的多次执行(如果两者相同,则将获得相同的共享密钥)。这将减少通信开销,尤其是在矩阵A被重新使用的情况下。然而,发明人意识到,由于没有认证连接到这些元件,因此不需要重新使用矩阵A和私钥矩阵中的任何一个。在优选实施例中,对于每个新密钥交换,获得新鲜矩阵A和新鲜私钥。这样做的好处是,攻击者无法选择通过观察协议的多次运行来观察额外信息。而且,前向保密性得到改善。
在协议完成且两个节点都已计算了共享密钥之后,节点之一可以将密钥确认消息发送给另一节点,以验证它们是否就同一密钥达成共识。例如,密钥确认消息可以是共享密钥的散列,固定值的加密,随机值的加密和该随机值。密钥确认也可以使用挑战响应协议来执行。人们也可以选择省略密钥确认。如果双方获得了不同的共享密钥,则他们之间执行的随后通信将失败。例如,共享密钥可以用于加密和/或认证进一步的通信,例如数字消息。如果他们到达不同的共享密钥,则解密和/或验证可能会失败。
在各种实施例中,可以从各种替代中选择通信接口。例如,通信接口可以是到局域网或广域网(例如,互联网)的网络接口,到内部或外部数据存储设备的存储接口,键盘等。
网络节点可以包括电子存储设备,例如,以存储中间数据,例如矩阵A,公钥和私钥矩阵以及共享密钥等。该存储设备可以实现为电子存储器,例如闪存,或者磁存储器,例如硬盘等。存储设备可以包括多个分立存储器,它们一起构成存储设备。存储设备还可以是临时存储器,例如RAM。在临时存储设备的情况下,存储设备可以使用一些手段来在使用之前获得公共参数,例如,通过可选网络连接(未单独示出)获得它们。
典型地,设备110和210各自包括微处理器(未在图1中单独示出),所述微处理器执行存储在设备110和210处的适当软件。例如,所述软件可能已经被下载和/或存储在对应的存储器中,例如,诸如RAM的易失性存储器或诸如闪存的非易失性存储器(未单独示出)。替代地,设备110和210可以全部或部分地以可编程逻辑实现,例如,作为现场可编程门阵列(FPGA)。设备110和210可以全部或部分地实现为所谓的专用集成电路(ASIC),即,针对其特定用途而定制的集成电路(IC)。例如,可以例如使用诸如Verilog、VHDL等的硬件描述语言在CMOS中实现电路。
在实施例中,网络节点包括通信接口电路、共享矩阵电路、私钥矩阵电路、公钥矩阵电路和共享密钥电路。电路实现本文描述的对应单元。电路可以是处理器电路和存储电路,所述处理器电路执行在存储电路中电子表示的指令。
处理器电路可以以分布式方式实现,例如,作为多个子处理器电路。存储设备可以分布在多个分布式子存储设备上。存储器的一部分或全部可以是电子存储器、磁存储器等。例如,存储设备可以具有易失性和非易失性部分。部分存储设备可能是只读的。电路也可以是FPGA、ASIC等。
图2示意性地示出了电子密钥交换方法400的实施例的示例。该方法可以由第一电子网络节点(例如发起方节点110或响应方节点210)执行。
方法400包括:
在第一网络节点与第二网络节点之间布置(410)数字通信,
接收(415)难度参数(d)和结构参数(n)作为输入,
获得(420)共享矩阵(A),所述共享矩阵通过通信接口与第二网络节点共享,共享矩阵(A)是维度(k)等于难度参数(d)除以结构参数(n)的方矩阵(k×k),在共享矩阵(A)中的条目为次数小于结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,
生成(430)私钥矩阵(SI),所述私钥矩阵中的条目是次数小于结构参数(n)的整数多项式,
通过以下操作来生成(440)公钥矩阵(PI):
计算(442)在共享矩阵(A)和私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模并对次数等于结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并添加噪声(444)到矩阵乘积中的条目,
将第一网络节点的公钥矩阵发送(452)给第二网络节点,
接收(454)第二网络节点的公钥矩阵(PR),
计算(460)原始密钥作为在第二节点的接收到的公钥矩阵与第一网络节点的私钥矩阵之间的矩阵乘积。
如果第一网络节点例如根据密钥交换协议中的发起方模式正在操作,则第一网络节点执行以下其它元素。
接收(472)第二网络节点的调和数据(h),
通过对接收到的调和数据和原始密钥应用调和函数(rec)来计算(482)共享密钥或消息。
如果第一网络节点例如根据密钥交换协议中的响应方模式正在操作,则第一网络节点执行以下其它元素。
获得(474)共享密钥,并从原始密钥获得调和数据,
将调和数据发送(484)给第一网络节点。
如本领域技术人员将显而易见的,执行该方法的许多不同方式是可能的。例如,步骤的次序可以改变,或者一些步骤可以并行执行。此外,在步骤之间可以插入其它方法步骤。插入的步骤可以表示如本文所述的方法的改进,或者可以与该方法无关。例如,给定步骤在开始下一步骤开始之前可能尚未完全结束。
可以使用软件来执行根据本发明的方法,所述软件包括用于使处理器系统执行方法400的指令。软件可以仅包括由系统的特定子实体采取的那些步骤。该软件可以存储在合适的存储介质中,例如硬盘、软盘、存储器、光盘等。软件可以作为信号沿着有线或无线或使用数据网络(例如,互联网)发送。可以使软件可用于服务器上的下载和/或远程使用。可以使用比特流来执行根据本发明的方法,所述比特流被布置为配置可编程逻辑(例如,现场可编程门阵列(FPGA))以执行该方法。
应当理解,本发明还扩展到适于使本发明付诸实践的计算机程序,特别是在载体上或载体中的计算机程序。该程序可以是源代码、目标代码、源代码与目标代码中间的代码的形式(例如部分编译的形式),或者是适合用于实现根据本发明的方法的任何其它形式。与计算机程序产品有关的实施例包括与所阐述的方法中的至少一种方法的每个处理步骤相对应的计算机可执行指令。这些指令可以细分为子例程和/或存储在可静态或动态链接的一个或多个文件中。与计算机程序产品有关的另一实施例包括与所阐述的系统和/或产品中的至少一个的每个单元对应的计算机可执行指令。
图3a示出了根据实施例的具有包括计算机程序1020的可写部分1010的计算机可读介质1000,所述计算机程序1020包括用于使处理器系统执行密钥协商方法的指令。计算机程序1020可以作为物理标记或借助于计算机可读介质1000的磁化而体现在计算机可读介质1000上。然而,任何其它合适的实施例也是可以想到的。此外,将理解,虽然计算机可读介质1000在本文示为光盘,但是计算机可读介质1000可以是任何合适的计算机可读介质,例如硬盘、固态存储器、闪存等,并且可以是不可记录的或可记录的。计算机程序1020包括用于使处理器系统执行所述密钥协商方法400或根据实施例的另一加密操作的指令。
图3b以示意图示出了根据实施例的处理器系统1140,以例如实现一个或多个密码操作。处理器系统包括一个或多个集成电路1110。在图3b中示意性地示出了一个或多个集成电路1110的架构。电路1110包括处理单元1120,例如CPU,用于运行计算机程序组件以执行根据实施例的方法和/或实现其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的一部分可以是只读的。电路1110可以包括通信元件1126,例如天线、连接器或两者,等等。电路1110可以包括专用集成电路1124,用于执行该方法中定义的部分或全部处理。处理器1120、存储器1122、专用IC 1124和通信元件1126可以经由互连1130(例如,总线)彼此连接。处理器系统1110可以被布置为分别使用天线和/或连接器进行接触和/或无接触通信。
例如,在实施例中,网络节点可以包括处理器电路和存储器电路,处理器被布置为执行存储在存储器电路中的软件。例如,处理器电路可以是Intel Core i7处理器、ARMCortex-R8等。在实施例中,处理器电路可以是ARM Cortex M0。存储器电路可以是ROM电路,或者可以是非易失性存储器,例如闪存。存储器电路可以是易失性存储器,例如SRAM存储器。在后一种情况下,验证设备可以包括被布置用于提供软件的非易失性软件接口,例如,硬盘驱动器、网络接口等。
图4a示意性地示出了公钥解密节点310的实施例的示例。该图包括难度参数和结构参数331、通信接口320、私钥单元340、消息计算单元360、原始密钥362、第二密文部分364和消息366。这些单元可以根据上面的算法PST.NR.CPA-PKE.Decrypt()进行操作,例如,私钥单元340可以获得S,并且消息计算单元360可以计算出注意,所述图类似于图1所示的发起方类型的网络节点110,除了仅示出了对应于公钥解密操作的组件。特别地,如算法PST.CPA-KEM和PST.NR.CCA-KEM中所示,网络节点110可以利用公钥密钥生成算法(例如,PST.NR.CPA-PKE.Keygeneration())和公钥解密算法(例如,PST.NR.CPA-PKE.Decrpt())执行密钥交换。在图1中,所述解密涉及难度参数和结构参数131、通信接口120、私钥单元140、共享密钥单元160、原始密钥162、调和数据164和共享密钥166。图4a示出了执行解密而不必也执行密钥生成的公钥网络节点,因此,它仅具有图1中与解密有关的那些元件。也就是说,元件331可以对应于元件131;元件320可以对应于元件120;元件340可以对应于元件140;元件360可以对应于元件160;元件362可以对应于元件162;元件364可以对应于元件164,并且元件366可以对应于元件166。注意,公钥解密节点310获得作为解密的结果的消息366,而网络节点110获得共享密钥166。然而,在两种情况下,获得这些相应结果的操作实际上是相同的。
图4b示意性地示出了公钥加密节点510的实施例的示例。该图包括难度参数和结构参数531;共享矩阵单元530;通信接口520;私有矩阵单元540;第一密文部分单元550;第二密文部分单元560;原始密钥562;消息566;以及第二密文部分564。加密节点510接收难度参数和结构参数531作为输入;获得共享矩阵530;用私有矩阵单元540生成私有矩阵;用第一密文部分单元550生成第一密文部分;并用第二密文部分单元560生成第二密文部分564,所述第二密文部分564根据原始密钥562和消息566计算出。例如,这些单元可以根据算法PST.NR.CPA-PKE.Encryptwithrho、PST.NR.CPA-PKE.Encryp、PST.CPA-PKE.Encryptwithrho或PST.CPA-PKE.Encrypt之一进行操作,如上所述。例如,共享矩阵单元530可以获得A,私有矩阵单元540可以生成R,第一密文部分单元550可以生成U,以及第二密文部分单元560可以计算v。该图类似于图1所示的响应方类型的网络节点210;特别地,如PST.CPA-KEM和PST.NR.CCA-KEM中所示,密钥交换或密钥封装中的响应方节点实际上可以执行诸如由公钥加密节点510执行的公钥加密。
以下条款不是权利要求,而是包括预期的实施例。申请人特此通知,在本申请或由此衍生的任何进一步申请的进行期间,可以对这些条款和/或从说明书或权利要求中获得的这些条款和/或特征的组合提出新的权利要求。
1、一种被配置用于密码操作的第一电子网络节点(110),所述第一网络节点包括:
通信接口(120),其被布置用于与第二网络节点进行数字通信,
处理器电路,其被配置为:
接收难度参数(d)和结构参数(n)作为输入,
获得共享矩阵(A),所述共享矩阵通过所述通信接口与所述第二网络节点共享,q所述共享矩阵(A)是维度(k)等于所述难度参数(d)除以所述结构参数(n)的方矩阵(k×k),所述共享矩阵(A)中的条目是次数小于所述结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,
生成私钥矩阵(SI),所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
通过以下操作来生成公钥矩阵(PI),
-计算所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模且对次数等于所述结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并且向所述矩阵乘积中的条目添加噪声,以及
将所述第一网络节点的所述公钥矩阵发送给所述第二网络节点。
2、根据条款1所述的第一电子网络节点(110),其中,所述密码操作是密钥交换(KEX)协议,所述处理器电路被配置为:
接收所述第二网络节点的公钥矩阵(PR),
将原始密钥计算为所述第二节点的接收到的公钥矩阵与所述第一网络节点的所述私钥矩阵之间的矩阵乘积,
其中,所述第一网络节点还被配置为:
接收所述第二网络节点的调和数据(h),
通过对接收到的调和数据和原始密钥应用调和函数(rec)来计算共享密钥,或者
其中,所述第一网络节点还被配置为:
从所述原始密钥获得调和数据,
将所述调和数据发送给所述第二网络节点。
3、根据前述条款中的任一项所述的第一网络节点,其中,密码操作是以下任一项:密钥交换(KEX)协议、密钥封装方法(KEM)、公钥加密(PKE)、数字签名。
4、根据前述条款中的任一项所述的第一网络节点,其中,所述归约多项式是xn+1或
5、根据前述条款中的任一项所述的第一网络节点,其中,
结构参数(n)除难度参数(d);
通过舍入所述难度参数(d)除以结构参数(n),例如,舍入到最接近的整数、上舍入或下舍入,来获得所述共享矩阵的维度(k)。
6、根据前述条款中的任一项所述的第一网络节点,其中,
所述结构参数(n)是至少为1且至多为所述难度参数(d;1≤n≤d)的整数,和/或
所述结构参数(n)被限制为质数,和/或
所述结构参数(n)是2的幂,并且所述第一模数是质数,和/或
所述结构参数(n)被限制为质数,并且所述第一模数是质数,和/或
所述结构参数(n)被限制为质数,并且所述第一模数是2的幂,和/或
所述结构参数(n)被限制为质数,并且所述第一模数是2的幂,且归约多项式是对2取模不可约的。
7、根据前述条款中的任一项所述的第一网络节点,其中,所述处理器电路被配置为通过用循环矩阵替换次数大于0的多项式条目,来计算针对共享矩阵(A)的扩展共享矩阵,所述扩展共享矩阵的列数和行数等于所述难度参数。
8、根据条款7所述的第一网络节点,其中,所述处理器电路被配置为针对包含dxd个条目的共享矩阵(A)计算扩展共享矩阵,每个条目是整数,并且相同的处理器电路用于对该共享矩阵(A)进行评估,并且用于获得所述结构参数(n)为一(1)或等于所述难度参数(d)的所述公钥。
9、根据前述条款中的任一项所述的第一网络节点,其中,所述密码操作是公钥加密,并且其中,所述共享矩阵和所述公钥矩阵是所述公钥,并且其中所述私钥矩阵是所述私钥。
10、根据前述条款中的任一项所述的第一网络节点,其中,向所述矩阵乘积添加噪声包括:
将矩阵乘积中的条目缩放到第二模数(p),缩放后的条目等于未缩放的条目乘以所述第二模数(p),除以所述第一模数(q),并舍入到最接近的整数,所述第二模数(p)小于所述第一模数(q),边界(s)最多为所述第二模数(p),其中,将原始密钥计算为所述第二节点的接收到的公钥与所述第一网络节点的所述私钥矩阵之间的矩阵乘积是对所述第二模数(p)取模完成的,或者
从噪声分布中为所述矩阵乘积中的一个或多个或所有元素选择噪声元素,并将噪声元素添加到矩阵乘积中的一个或多个或所有元素,例如,其中,所述噪声元素具有从平均值为0的高斯分布中选择的系数。
11、根据前述条款中的任一项所述的第一网络节点,其中,
所述私钥矩阵(SI,SR)是从候选私钥矩阵中均匀地随机选择的,和/或
在私钥矩阵中元素的系数在绝对值上以边界为界,例如,其中,所述边界为2(s=2),或者其中,所述边界为1(s=1),后者对应于有符号的二进制数,和/或
私钥矩阵(SI,SR)的列和/或行具有固定或有界的汉明权重(hs)。
12、根据前述条款中的任一项所述的第一网络节点,其中,所述私钥矩阵(SI,SR)中的条目是从非均匀概率分布中选择的,其中,零条目的概率大于非零条目的概率。
13、根据前述条款中的任一项所述的第一网络节点,被布置为针对每个新密钥交换获得不同的矩阵(A)和/或不同的私钥。
14、根据前述条款中的任一项所述的第一网络节点,被布置为通过生成随机种子并通过所述通信信道将所述随机种子发送给另一节点来获得共享矩阵(A),所述第一网络节点和第二网络节点使用随机种子来播种确定性伪随机数生成器,根据伪随机数生成器的输出生成矩阵(A)。
16、一种用于第一电子网络节点(110)的电子密码操作方法(400),所述方法包括:
在第一网络节点和第二网络节点之间布置(410)数字通信,
接收(415)难度参数(d)和结构参数(n)作为输入,
获得(420)共享矩阵(A),所述共享矩阵通过所述通信接口与所述第二网络节点共享,所述共享矩阵(A)是维度(k)等于所述难度参数(d)除以所述结构参数(n)的方矩阵(k×k),所述共享矩阵(A)中的条目是次数小于所述结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,
生成(430)私钥矩阵(SI),所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
通过以下操作生成(440)公钥矩阵(PI),
计算(442)在所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模且对次数等于所述结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并且向所述矩阵乘积中的条目添加噪声(444),
将所述第一网络节点的所述公钥矩阵发送(452)给所述第二网络节点。
本发明的一个方面是一种被配置用于密码操作的第一电子网络节点,所述第一网络节点包括:
通信接口,其被布置用于与第二网络节点进行数字通信,
处理器电路,其被配置为:
接收难度参数(d)和结构参数(n)作为输入,
获得共享矩阵(A),所述共享矩阵通过所述通信接口与所述第二网络节点共享,所述共享矩阵(A)是维度(k)等于所述难度参数(d)除以所述结构参数(n)的方矩阵(k×k),所述共享矩阵(A)中的条目是次数小于所述结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,
生成私钥矩阵(SI),所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
通过以下操作来生成第一网络节点的公共矩阵(PI),
计算在所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模且对次数等于所述结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并且向所述矩阵乘积中的条目添加噪声,以及
将第一网络节点的公共矩阵发送给第二网络节点。
这样的处理器电路还可以被配置为:
接收第二网络节点的公钥矩阵(PR),
将原始密钥计算为第二节点的接收到的归约矩阵与所述第一网络节点的私有矩阵之间的矩阵乘积,
其中,所述第一网络节点还被配置为:
接收所述第二网络节点的密码材料,
根据接收到的密码材料和原始密钥,来计算所述第一网络节点与所述第二网络节点之间的共享数据,或者
其中,所述第一网络节点还被配置为:
获得在所述第一网络节点与所述第二网络节点之间的共享数据,并从原始密钥获得密码材料,
将所述密码材料发送给所述第二网络节点。
例如,例如在密码操作是密钥交换或密钥封装机制的情况下,私有矩阵可以是私钥矩阵。第一网络节点的公共矩阵和第二网络节点的公共矩阵中的一个或多个可以是公钥矩阵,例如,在密码操作是密钥交换、密钥封装机制或公钥加密的情况下。共享数据可以是:共享密钥,或者可以是从其导出共享密钥的数据,例如,在密码操作是密钥交换或密钥封装机制的情况下;或者消息,例如,在密码操作是公钥加密的情况下。密码材料可以是调和数据,例如在密码操作是密钥交换或密钥封装机制的情况下,或者可以是密文部分,例如在密码操作是公钥加密,或基于公钥加密的密钥交换或密钥封装的情况下。
应当注意,上述实施例说明而非限制本发明,并且本领域技术人员将能够设计许多替代实施例。
在权利要求中,放在括号之间的任何参考符号不应解释为对权利要求的限制。动词“包括”及其词形变化的使用不排存在不同于权利要求中所述的元件或步骤。在元件前的词语“一”或“一个”不排除存在多个这样的元件。本发明可以通过包括若干不同元件的硬件以及通过适当编程的计算机来实现。在列举若干单元的设备权利要求中,这些单元中的若干单元可以由同一硬件来体现。在互不相同的从属权利要求中记载某些措施的事实并不意味着不能有利地使用这些措施的组合。
在权利要求书中,括号内的引用是指例示实施例的附图中的附图标记或实施例的公式,从而增加了权利要求的可理解性。这些参考标记不应被解释为限制权利要求。

Claims (15)

1.一种第一网络节点(110),其被被配置为使用所述第一网络节点的公钥矩阵来进行密码操作,所述第一网络节点包括:
通信接口(120),其被布置用于与第二网络节点进行数字通信,
处理器电路,其被配置为:
接收难度参数(d)和结构参数(n)作为输入,
获得共享矩阵(A),所述共享矩阵通过所述通信接口与所述第二网络节点共享,所述共享矩阵(A)是维度(k)等于所述难度参数(d)除以所述结构参数(n)的方矩阵(k×k),所述共享矩阵(A)中的条目是次数小于所述结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,
生成私钥矩阵(SI),所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
通过以下操作来生成所述第一网络节点的所述公钥矩阵(PI),
计算所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模且对次数等于所述结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并向所述矩阵乘积中的条目添加噪声,并且
将所述第一网络节点的所述公钥矩阵发送给所述第二网络节点。
2.根据权利要求1所述的第一网络节点(110),所述处理器电路被配置为:
接收所述第二网络节点的公钥矩阵(PR),
将原始密钥计算为所述第二网络节点的接收到的公钥矩阵与所述第一网络节点的所述私钥矩阵之间的矩阵乘积,
其中,所述第一网络节点还被配置为:
接收所述第二网络节点的调和数据(h),
通过对接收到的调和数据和所述原始密钥应用调和函数(rec)来计算共享密钥或消息,或者
其中,所述第一网络节点还被配置为:
获得共享密钥或消息,并且从所述原始密钥获得调和数据,
将所述调和数据发送给所述第二网络节点。
3.根据前述权利要求中的任一项所述的第一网络节点,其中,所述密码操作是以下中的任一项:密钥交换(KEX)协议,密钥封装机制(KEM),公钥加密(PKE),数字签名。
4.根据前述权利要求中的任一项所述的第一网络节点,其中,所述归约多项式是xn+1或
5.根据前述权利要求中的任一项所述的第一网络节点,其被配置为接收不同的难度参数(d)和/或不同的结构参数(n),所述第一网络节点被配置为针对所述结构参数(n)和/或难度参数(d)的不同值调用公共矩阵乘法部分。
6.根据前述权利要求中的任一项所述的第一网络节点,其中,
所述结构参数是至少为1且至多为所述难度参数的整数,和/或
所述结构参数等于1或所述难度参数,和/或
所述结构参数(n)被限制为质数,和/或
所述结构参数(n)被限制为质数,并且所述第一模数是二的幂,和/或
所述结构参数(n)被限制为质数,并且所述第一模数是二的幂,并且所述归约多项式对2取模是不可约的。
7.根据前述权利要求中的任一项所述的第一网络节点,其中,所述处理器电路被配置为通过用循环矩阵替换次数大于0的多项式条目,来计算针对共享矩阵(A)的扩展共享矩阵,所述扩展共享矩阵的列数和行数等于所述难度参数。
8.根据前述权利要求中的任一项所述的第一网络节点,其中,
所述密码操作是公钥生成,并且,所述公钥包括所述第一网络节点的所述公钥矩阵和所述共享矩阵或从其获得所述公钥的种子,并且所述私钥包括所述私钥矩阵,或者其中,
所述密码操作是公钥加密,并且所述公钥包括所述第二网络节点的所述公钥矩阵和所述共享矩阵或从其获得所述公钥的种子。
9.根据前述权利要求中的任一项所述的第一网络节点,其中,向所述矩阵乘积中的条目添加噪声包括:将未缩放的条目与第二模数相乘,除以所述第一模数,舍入为整数,并使舍入后的条目对所述第二模数取模,将原始密钥计算为所述第二网络节点的接收到的公钥与所述第一网络节点的所述私钥矩阵之间的矩阵乘积是对第二模数(p)取模完成的。
10.根据前述权利要求中的任一项所述的第一网络节点,被布置为通过根据由随机种子播种的确定性伪随机数生成器的输出生成所述矩阵(A)来获得所述共享矩阵(A),所述共享矩阵通过经由所述通信接口发送或接收随机种子而与所述第二网络节点共享的。
11.根据前述权利要求中的任一项所述的第一网络节点(510),其中,所述密码操作是公钥加密操作,所述第一网络节点的所述公钥矩阵是第一密文部分,所述第一网络节点被配置为:
接收所述第二网络节点的公钥矩阵(P_R),
将原始密钥计算为所述第二网络节点的接收到的公钥矩阵与所述第一网络节点的所述私钥矩阵之间的矩阵乘积,
根据所述原始密钥并且根据消息来计算第二密文部分,并且
将所述第一密文部分和所述第二密文部分发送给所述第二网络节点。
12.一种被配置用于公钥解密操作的第一网络节点(310),所述第一网络节点包括:
通信接口,其被布置用于与第二网络节点进行数字通信,
处理器电路,其被配置为:
接收难度参数(d)和结构参数(n)作为输入,
获得私钥矩阵(SI),所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
从所述第二网络节点接收第一密文部分(PR)和第二密文部分,其中,所述第一密文部分是通过以下操作来生成的:计算所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模且对次数等于所述结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并向所述矩阵乘积中的条目添加噪声,所述共享矩阵(A)是维度(k)等于所述难度参数(d)除以所述结构参数(n)的方矩阵(k×k),所述共享矩阵(A)中的条目是次数小于所述结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
将原始密钥计算为所述第一密文部分与所述私钥矩阵之间的矩阵乘积,
根据所述原始密钥和所述第二密文部分计算消息。
13.一种使用第一网络节点的公钥矩阵执行密码操作的用于所述第一网络节点(110)的电子密码操作方法(400),所述方法包括:
在所述第一网络节点与第二网络节点之间布置(410)数字通信,
接收(415)难度参数(d)和结构参数(n)作为输入,
获得(420)共享矩阵(A),所述共享矩阵通过所述通信接口与所述第二网络节点共享,所述共享矩阵(A)是维度(k)等于所述难度参数(d)除以所述结构参数(n)的方矩阵(k×k),所述共享矩阵(A)中的条目是次数小于所述结构参数(n)的整数多项式,所述多项式的系数优选地被选择用于对第一模数(q)取模,
生成(430)私钥矩阵(SI),所述私钥矩阵中的条目是次数小于所述结构参数(n)的整数多项式,
通过以下操作来生成(440)所述第一网络节点的所述公钥矩阵(PI),
计算(442)所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积对第一模数(q)取模且对次数等于所述结构参数(n)的归约多项式(f)取模,获得矩阵乘积,并向所述矩阵乘积中的条目添加噪声(444),
将所述第一网络节点的所述公钥矩阵发送(452)给所述第二网络节点。
14.根据权利要求1-11中的任一项所述的第一网络节点,其中,向矩阵乘积中的条目添加噪声包括缩小所述矩阵乘积。
15.一种计算机可读介质(1000),其包括表示使处理器系统执行根据权利要求13所述的方法的指令的瞬态或非瞬态数据(1020)。
CN201880081395.9A 2017-10-17 2018-10-10 用于基于晶格的密码学的可配置设备 Active CN111492616B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
EP17196812.6 2017-10-17
EP17196812 2017-10-17
EP18165330.4A EP3547603A1 (en) 2018-03-30 2018-03-30 Configurable device for lattice-based cryptography
EP18165330.4 2018-03-30
PCT/EP2018/077639 WO2019076706A1 (en) 2017-10-17 2018-10-10 CONFIGURABLE DEVICE FOR NETWORK-BASED CRYPTOGRAPHY

Publications (2)

Publication Number Publication Date
CN111492616A CN111492616A (zh) 2020-08-04
CN111492616B true CN111492616B (zh) 2024-04-16

Family

ID=63834029

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880081395.9A Active CN111492616B (zh) 2017-10-17 2018-10-10 用于基于晶格的密码学的可配置设备

Country Status (7)

Country Link
US (2) US11569993B2 (zh)
EP (1) EP3698515B1 (zh)
JP (1) JP6849860B2 (zh)
CN (1) CN111492616B (zh)
BR (1) BR112020007456A2 (zh)
RU (1) RU2752697C1 (zh)
WO (1) WO2019076706A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11070362B2 (en) 2018-02-12 2021-07-20 Massachusetts Institute Of Technology Systems and methods for providing secure communications using a protocol engine
US11005656B2 (en) * 2018-12-07 2021-05-11 Arris Enterprises Llc Embedding information in elliptic curve base point
WO2020172234A1 (en) * 2019-02-19 2020-08-27 Massachusetts Institute Of Technology Configurable lattice cryptography processor for the quantum-secure internet of things and related techniques
TWI729508B (zh) * 2019-09-26 2021-06-01 國立台灣大學 雲端安全儲存系統
US11522718B2 (en) * 2019-11-28 2022-12-06 Crypto Lab Inc. Methods of generating encryption key and digital signature based on lattices
CN111064570B (zh) * 2019-12-17 2023-01-31 航天信息股份有限公司 共享密钥处理方法、装置、存储介质和电子设备
EP3843320A1 (en) * 2019-12-24 2021-06-30 Koninklijke Philips N.V. Public/private key system with increased security
CN112511170B (zh) * 2020-11-10 2024-04-16 南京航空航天大学 一种格密码中多项式压缩的并行实现方法
US11496297B1 (en) * 2021-06-10 2022-11-08 Pqsecure Technologies, Llc Low footprint resource sharing hardware architecture for CRYSTALS-Dilithium and CRYSTALS-Kyber
US11569994B2 (en) * 2021-06-24 2023-01-31 Intel Corporation Accelerating multiple post-quantum cryptograhy key encapsulation mechanisms
US11909893B2 (en) * 2021-06-25 2024-02-20 Entrust Corporation Composite encryption across cryptographic algorithms

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104854814A (zh) * 2012-12-21 2015-08-19 皇家飞利浦有限公司 密钥共享网络设备及其配置
CN105027492A (zh) * 2013-02-28 2015-11-04 皇家飞利浦有限公司 被配置成导出共享密钥的网络设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1043961A (zh) 1989-08-21 1990-07-18 机械电子工业部北京机械工业自动化研究所 磁控电弧离子镀膜法
JP2007151073A (ja) * 2005-10-25 2007-06-14 Chiba Univ 鍵生成プログラム
JP5637991B2 (ja) * 2008-09-19 2014-12-10 コーニンクレッカ フィリップス エヌ ヴェ ネットワークにおけるセキュア通信に関する方法、通信デバイス、ネットワーク及びコンピュータプログラム
RU2452111C1 (ru) * 2010-11-17 2012-05-27 ЗАО Институт инфокоммуникационных технологий Способ пороговой генерации ключей для системы защиты информации на основе идентификационных данных
US8634563B2 (en) * 2010-12-17 2014-01-21 Microsoft Corporation Attribute based encryption using lattices
JP5693206B2 (ja) * 2010-12-22 2015-04-01 三菱電機株式会社 暗号処理システム、鍵生成装置、暗号化装置、復号装置、暗号処理方法及び暗号処理プログラム
US8621227B2 (en) 2010-12-28 2013-12-31 Authernative, Inc. System and method for cryptographic key exchange using matrices
EP2837128B1 (en) * 2012-04-12 2019-02-27 Jintai Ding New cryptographic systems using pairing with errors
JP6305638B2 (ja) * 2015-04-07 2018-04-04 三菱電機株式会社 暗号システム及び鍵生成装置
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols
EP3364596A1 (en) * 2017-02-15 2018-08-22 Koninklijke Philips N.V. Key exchange devices and method
EP3373505A1 (en) 2017-03-06 2018-09-12 Koninklijke Philips N.V. Device and method for sharing a matrix for use in a cryptographic protocol
EP3474484A1 (en) * 2017-10-17 2019-04-24 Koninklijke Philips N.V. Cryptographic device with updatable shared matrix
EP3889764A1 (en) * 2020-03-31 2021-10-06 Koninklijke Philips N.V. Parallel generation of a random matrix

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104854814A (zh) * 2012-12-21 2015-08-19 皇家飞利浦有限公司 密钥共享网络设备及其配置
CN105027492A (zh) * 2013-02-28 2015-11-04 皇家飞利浦有限公司 被配置成导出共享密钥的网络设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Markku-Juhani O..HILA5: On Reliability, Reconciliation, and Error Correction for Ring-LWE Encryption.2017,全文. *

Also Published As

Publication number Publication date
US11991285B2 (en) 2024-05-21
WO2019076706A1 (en) 2019-04-25
EP3698515A1 (en) 2020-08-26
JP6849860B2 (ja) 2021-03-31
US11569993B2 (en) 2023-01-31
US20230163966A1 (en) 2023-05-25
CN111492616A (zh) 2020-08-04
RU2752697C1 (ru) 2021-07-30
BR112020007456A2 (pt) 2020-10-27
EP3698515B1 (en) 2021-02-17
JP2020537450A (ja) 2020-12-17
US20200259649A1 (en) 2020-08-13

Similar Documents

Publication Publication Date Title
CN111492616B (zh) 用于基于晶格的密码学的可配置设备
CN110870250B (zh) 密钥协商设备和方法
CN111492615B (zh) 具有可更新共享矩阵的加密设备
JP7019730B2 (ja) キー交換デバイス及び方法
CN110383754B (zh) 基于椭圆曲线同源的密钥协商协议
CN114008967A (zh) 经认证的基于晶格的密钥协商或密钥封装
Sarkar et al. Role of cryptography in network security
EP3547603A1 (en) Configurable device for lattice-based cryptography
Singh et al. A Note on Public Key Cryptosystems
Partala Semantically secure symmetric encryption with error correction for distributed storage
Gupta et al. A fail-fast mechanism for authenticated encryption schemes
Lee et al. A. SEEP. Protocol. Design.... and HECC Algorithm

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