CN111492615B - 具有可更新共享矩阵的加密设备 - Google Patents

具有可更新共享矩阵的加密设备 Download PDF

Info

Publication number
CN111492615B
CN111492615B CN201880081333.8A CN201880081333A CN111492615B CN 111492615 B CN111492615 B CN 111492615B CN 201880081333 A CN201880081333 A CN 201880081333A CN 111492615 B CN111492615 B CN 111492615B
Authority
CN
China
Prior art keywords
matrix
shared
network node
polynomial
key
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
CN201880081333.8A
Other languages
English (en)
Other versions
CN111492615A (zh
Inventor
O·加西亚莫尔琼
L·M·G·M·托尔胡伊泽恩
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
Application filed by Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of CN111492615A publication Critical patent/CN111492615A/zh
Application granted granted Critical
Publication of CN111492615B publication Critical patent/CN111492615B/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
    • 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
    • H04L9/0841Key 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 involving Diffie-Hellman or related key agreement protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • 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)
    • H04L9/0825Key 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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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
    • 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/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一些实施例涉及被配置用于加密操作的电子网络节点(110)。所述网络节点通过从共享池中选择整数、多项式和/或多项式系数来获得共享矩阵(A),所述共享池是与第二网络节点共享的,其中,根据一个或多个选择函数来完成所述选择。

Description

具有可更新共享矩阵的加密设备
技术领域
本发明涉及被配置用于加密操作的网络节点、加密操作方法以及计算机可读介质。
背景技术
在加密技术中,密钥协商协议是这样一种协议:通过该协议,可能尚未共享公钥的两方或更多方能够就这样的密钥达成协议。优选地,双方都能够影响结果,使得任一方都不能强制选择密钥。窃听了两方之间的所有通信的攻击者应该对密钥一无所知。但是,虽然看到相同通信的攻击者一无所知或者仅了解很少内容,但是各方本身却能够导出共享密钥。密钥协商协议可用于例如保护通信,例如对各方之间的消息进行加密和/或认证。
为了促进各方之间的安全通信,有时将密钥协商协议进一步细分成加密密钥交换(KEX)和加密密钥封装(KEM)方案。加密密钥封装(KEM)方案使用非对称加密技术,使用针对每一方的公开已知值(例如,公钥)和秘密拥有值(例如,秘密密钥)在两方之间建立共享秘密。
KEX方案涉及每一方交换公钥,然后另一方将其自己的秘密密钥与对方的公共密钥一起独立使用来计算公共共享密钥。KEX方案的众所周知的示例是上面提到的Diffie-Hellman密钥交换,它的安全性是以解决离散对数问题为基础的。一些KEX方案的有趣特征是双方之间从未交换实际的最终共享秘密,甚至没有以加密形式进行交换,而是由两端的每一方独立计算出最终共享秘密。这样就产生了一种理想的特征,其被称为前向保密,该特征可以确保即使攻击者将来破坏了一方的长期密钥,也不会破坏过去交换的加密消息的秘密性。
KEM方案使用由一方(通常是通信的发起方)使用非对称加密技术在两个实体或两方之间建立共享秘密,以(使用另一方的公钥)对共享秘密进行加密并将其传输到被称为响应方的另一方,然后响应方能够(使用他的秘密密钥)进行解密并然后将其用于与发起方进行安全通信。KEM方案只能短暂实现前向保密。否则,在过去时期中破坏了一方的秘密密钥并记录了该时期内各方之间交换的所有消息的任何攻击者都能够恢复针对该特定时期的共享密钥。
由于物联网中日益增长的安全需求,密钥交换方案还需要实现高效率(即,最小量的通信或带宽要求),同时还要保持安全性,以抵抗传统对手以及具有量子能力的对手。
最近的进展表明:量子计算机在几年内可能是可行的。也许在5-10年内就可行了。一旦量子计算机可用,大多数现有的公钥加密方案将变得不安全,因为它们所基于的潜在问题能够利用量子计算机得到有效地解决。因此,设计抵抗量子的公钥算法(即,无法借助于量子计算机破解的公钥算法)是非常重要的。
抵抗量子算法有若干类型:基于格的、基于代码的、基于同源的等。在该文件中,我们处理基于格的抵抗量子算法。基于格的加密系统是研究的活跃领域,其中已经提出了许多不同类型的系统。例如,可以根据数字矩阵(例如,一些有限域的元素)或者使用多项式等来定义格。加密操作的类型也能够变化。例如,基于格的加密技术可用于:密钥封装(KEX)、密钥交换(KEM)、公钥加密(PKE)、数字签名等。这些方案的示例是:
基于LWE的KEX,例如,Frodo
基于RLWE的KEX和CPA-KEM Newhope和NewHopeSimple
基于模数格的CPA-PKE、CPA-KEM和CCA-KEM作为Kyber
基于LWR的KEX作为spKEX
以上每个方案都有一些共同的特性。它们中的每个都要求在某个点处与另一节点共享的共享矩阵A。共享矩阵A可以被填充有以模数q为模的整数或以模数q和归约多项式f为模的多项式。发明人已经认识到:建议不要太频繁地使用共享矩阵。例如,在KEX协议的情况下,可能的用例是只使用一次特定的共享矩阵。然而,由于矩阵的大小可能例如是600×600,而模数q可能是14比特,因此共享矩阵中的数据量可能会很大。无论矩阵是在两侧进行通信还是生成,这都是重要的开销。特别对于维持许多连接(例如,与多个客户端的连接)的服务器而言,这种开销可能非常大。因此,需要在不引起大的开销的情况下替换共享矩阵。
发明内容
提出了一种网络节点,该网络节点实施依赖于格问题的难度并采用共享矩阵的加密操作。如在背景技术中指出的,存在许多这样的加密操作。发明人认识到:能够通过引入共享池来减少开销。不是直接生成共享矩阵,而是第一节点和第二节点首先共享一个共享池。就像共享矩阵一样,该共享池包括多个整数或多项式,或者该共享池包括可以用于多项式的多个系数。在实施例中,共享池在两个节点之间不改变,并且保持相同或者至少在加密操作的多次运行中保持相同。然而,对于每个加密操作,将根据共享池来构建一个新的共享矩阵。这是通过选择将共享池的元素映射到共享矩阵中的项或者将共享池的系数映射到共享矩阵的系数的函数来完成的。选择函数取决于共享池中的索引或共享矩阵中的索引,但有趣的是,选择函数还取决于选择参数。选择参数改变了从共享池中选择共享矩阵的项的方式。发明人认识到:改变选择函数需要相对较少的开销,而且这种函数能够被容易地计算。例如,选择函数可以是取决于选择参数的置换,该置换对共享池或其部分进行置换并将其分配给矩阵的子集或者分配给系数。矩阵A能够被划分在多个这样的子集中。每个子集可以从相同的共享池中获得,或者每个子集可以从共享池的部分中获得。但是,被映射到共享矩阵子集的共享池的部分可能会重叠,甚至显著重叠。
结果,共享池需要包含的数据显著少于共享矩阵的数据。这意味着需要存储的数据更少,而且共享矩阵的构建能够显著加快。例如,在通过(伪)随机函数根据种子生成共享矩阵的情况下考虑比较。这需要相对大量的随机函数操作。然而,通过第一代共享池(也能够根据种子来完成),所需的随机函数应用要少得多。由于一些随机数函数应用被选择函数(选择函数可以例如以较少的资源需求置换来实施)替换,因此减少了生成共享矩阵的时间。这在使用共享矩阵但不需要经常替换的共享矩阵的加密操作中更加具有优势。
如上所述,有相当多的使用共享矩阵的加密操作。其中的一些使用多项式,其中的一些使用整数。发明人认识到:有可能以对大量类型的基于格的加密技术进行参数化的方式来描述许多这样的方案。例如,这样的描述可以仅使用一些改变潜在加密技术的性质的输入参数:难度参数(d)和结构参数(n),它们一起足以指定所使用的加密技术的类型。难度参数(d)和结构参数(n)均为正整数。通过增加难度参数,问题的结构保持不变,但是会更大,因此使用了更难的实例化。难度参数有时被称为安全性参数。在实施例中,难度参数与潜在格的维度有关。难度参数的值越大,潜在格的维度越大,因此使得攻击者需要解决更难的问题。结构参数与系统中的代数结构的量有关。结构参数的值越高,代数结构就越多。据推测,结构参数的值越高,可能就越容易受到攻击,因为格具有更多规则性。例如,在进行进一步研究以找到解决格格问题的渐进式的更好方法的情况下,用户可以通过增加难度参数来做出响应。另一方面,如果正在进行的研究找到了解决特定类型的格问题的更好的方法,则用户可以通过减小结构参数来做出响应。
例如,如权利要求中限定的加密设备甚至可以接收难度参数(d)和结构参数(n),它们一起足以指定所使用的加密类型。例如,在实施例中,定义了能够有效地实例化多个潜在问题的方案,即,RLWE、RLWR、模数RLWE、模数RLWR以及LWE和LWR。然而,这显然并是不所需要的,并且实施例可以选择固定维度(例如,k×k)的矩阵,并且如果使用多项式,则可以选择阶数为n的归约多项式。
加密设备是电子设备。例如,加密设备可以是移动电子设备,例如,移动电话。例如,加密设备可以是机顶盒、智能卡、计算机等。本文描述的执行加密操作的方法可以在广泛的实际应用中应用。这样的实际应用包括财务应用、机密或经过身份验证的通信等。
根据本发明的方法可以作为计算机实施的方法而在计算机上实施,或者可以在专用硬件中或者以两者的组合来实施。用于根据本发明的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的示例包括存储设备、光学存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括在计算机可读介质上存储的非瞬态程序代码,当所述计算机程序在计算机上运行时,该非瞬态程序代码用于执行根据本发明的方法。
在优选实施例中,计算机程序包括计算机程序代码,当计算机程序在计算机上运行时,该计算机程序代码适于执行根据本发明的方法的所有步骤。优选地,计算机程序被实施在计算机可读介质上。
本发明的另一方面提供了一种使计算机程序可用于下载的方法。当计算机程序被上传到例如个苹果公司的App Store、谷歌公司的Play Store或微软公司的Windows Store中时以及当可以从这样的商店下载该计算机程序时,将使用这方面的内容。
附图说明
参考附图,将仅通过举例的方式来描述本发明的其他细节、方面和实施例。为了简单和清楚起见,附图中的元件被图示出并且不一定是按比例绘制的。在附图中,与已经描述的元件相对应的元件可以具有相同的附图标记。在附图中:
图1示意性地示出了密钥协商网络的实施例的示例,
图2示意性地示出了电子密钥交换方法的实施例的示例,
图3a示意性地示出了根据实施例的具有包括计算机程序的可写部分的计算机可读介质,
图3b示意性地示出了根据实施例的处理器系统的表示,
图4示意性地示出了共享矩阵的实施例的示例。
附图1-2中的附图标记列表
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。
以上每个方案都实施依赖于单个潜在格问题(LWE或RLWE,或针对固定环的模数LWE,或LWR)的加密协议(例如,KEX、KEM、PKE、数字签名)。
NewHope和NewHopeSimple仅依赖于使用环的
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相对应的维度。该方案依赖于包括k×k项的矩阵,其中,每项都是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环LWR的KEX
在下文中,我们将使用NTRU环来说明我们的实施例。实际上,也能够使用其他环,例如将q设为素数以确保n=1(以p为模)的(素数)环多项式。替代地,我们也能够采用(素数)分圆多项式,其中,q是2的幂。额外的限制是(素数)分圆多项式是不可约的模数2。
NTRU环是f(x)=xn-1,其中,是n素数数字。然后对于给定的格维度问题d,我们能够利用例如n=d或n=1来实例化系统。如果n=d,那么我们有NTRU环LWR,而如果n=1,那么我们有LWR方案。我们还能够采用输入参数d>n,并且d是素数n的倍数,使得我们具有使用NTRU环的模数LWR。
表1——高级KEX协议说明。注意,round(向量,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(是2的幂),这对于LWE/LWR方案也是不错的选择。这也允许我们对密钥对帐步骤使用相同的例程,该例程依赖于q和i均为二[2]的幂的事实。在以下进一步的信息中详细说明了这些细节,这些进一步的信息说明了针对CPA-PKE、CPA-KEM和CCA-KEM的实施例。
还要注意,在表1中说明的协议中,我们引用了round(),该函数是如在LWR问题中定义的执行舍入的函数。
参考实施方式(第1部分)
表1中的方案的参考实施方式将具有以下用于获得公钥元素(b和u)和原始密钥(rki和rkr)的例程:
公钥计算:
结果[]=公钥计算(A[,],s[])
结果[]=0
对于(i=0 to d/n)
对于(j=0至d/n)
结果[i]=加上_元素(结果[i],乘以_元素[A[i,j],s[j])
C[]=加上_元素(A[],B[])
对于(i=0至n)
C[i]=(A[i]+B[i](mod q))
C[]=乘以_元素(A[],B[])
C[]=0
对于(i=0至n)
对于(j=0至n)
C[i]=C[i]+A((i-j)mod n)*B[j]mod q
注意,在上述例程中,我们不包括如在表1中使用模数p和q的舍入步骤。然而,这对于本发明并不是必需的。如果我们正在进行该方案的LWE版本,则舍入将由Z_q[x]/f(x)中的噪声(例如均值为0且标准偏差小的高斯噪声)的相加来置换。
原始密钥的计算:
结果[]=原始密钥计算(b[],s[])
结果[]=0
对于(i=0至d/n)
结果[i]=加上_元素(结果[i],乘以_元素[b[i],s[i])
C[]=加上_元素(A[],B[])
对于(i=0至n)
C[i]=(A[i]+B[i](mod p)(mod x^n-1)
C[]=乘以_元素(A[],B[])
对于(i=0至n)
C[i]=(A[(n-i)mod(n)]+B[i])(mod p)(mod x^n-1)
注意,在针对原始密钥计算的算法中,由于我们考虑了“带舍入学习”,因此我们编写了mod p。替代地,我们能够首先将A和B的每个系数与q/p相乘,舍入为最接近的整数,以q为模执行加法或乘法,并且通过逐系数乘以p/q来缩放最终结果,然后舍入到下一整数。这可以具有安全优点。对于本发明的(环上)容错学习版本,我们将添加噪声而不是执行舍入,并且计算将以q为模。
参考实施方式(第2部分)
我们注意到,在协议(KEX、KEM、PKE等)中与发起方和响应方相关联的秘密可能不止一个向量(该向量包含Zq[x]/f(x)中的d/n个元素),而是能够包含这些向量中的n_bar和m_bar。为了生成足够的密钥比特,优选使n_bar和m_bar大于1。因此,参考实施方式中的方案中的所有运算都能够被表示为其元素在Zq[x]/f(x)中的两个矩阵的乘法。
为此,要求以下通用函数:
C=乘以(A,B,A_c,A_r,B_c,B_r,n)
其中,A和B分别是维度(A_c×A_r)和(B_c×B_r)的输入矩阵。矩阵中的每项都包含Zq[x]/f(x)中的元素,其能够被表示为Zq中的n个元素。输出矩阵C的维度为(C_c×C_r)=(A_r×B_c)。
此外,在一些情况下,要求用于转置矩阵的函数。为此,我们要求函数:
B=转置(A,A_c,A_r,n)
其中,A是维度(A_c×A_r)的输入矩阵。矩阵中的每个元素都包含Zq[x]/f(x)中的元素,其能够被表示为Zq中的元素。输出矩阵B的维度为(B_c×B_r)=(A_r×A_c)。
一种在矩阵中编码信息的特定方式是使用存储在Zq中最低级别元素上的向量。例如,如果q=2^14,则能够使用两个字节来存储每个元素。具有Zq[x]/f(x)中的元素的维度为(A_r×A_c)的矩阵A能够被存储在长度为A_r*A_c*n*2个字节的向量中(其中,我们假定q<=2^16)。该向量将编码A:(i)逐行,(ii)每行逐列,以及(iii)Zq中的n个元素。
以上两个函数(乘以()和转置())将以合适的方式访问用于存储矩阵的向量。这也是为什么将n作为输入参数而传递给这两个函数的原因。
公钥计算的优化实施方式(第1部分):
针对固定的安全性参数d,在n=d的情况下,上述参考实施方式是快速的,因为A矩阵包含Zq[x]/xn-1中的多项式的单个项,假定n_bar=m_bar=1。对于n=1,由于A包含d2个项,因此每项是Zq中的元素,并且标量乘法被实现为通用多项式乘法。
针对优化的实施方式,我们能够利用以下事实:在n=d的情况下,多项式乘法运算能够被表达为Zq上的d×d=n×n矩阵与具有来自Zq的项的长度为d的向量的乘法:
使用这一事实,在实现公钥计算时,我们总是能够假定:对于n=1(LWR),输入矩阵A将包含d2个不同元素,而对于n=d(RLWR),输入矩阵A将包含d个不同元素。当执行矩阵乘法时,算法之间的唯一区别在于:对于响应方,当n=1时,矩阵乘法是从左边开始的,而当n=d时,矩阵乘法是从右边开始的。
替代地,多项式的系数能够被组织为行向量,并且我们使用:
公钥计算的优化实施方式(第2部分)
如在相关的飞利浦提交文件[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。在情况3中,建议定期更新a_master。
下表中对此进行了总结,我们从中观察到,取决于选择的L,我们能够获得不同的性能和安全性保证。我们观察到,从带宽的角度来看,取L=q并没有益处,因为结构被破坏了,并且需要传输更多的信息来传达A;然而,在CPU方面,该方法效率更高,因为需要计算的随机数更少了。
L值 对应于 问题减少到 性能(带宽) 性能(CPU)
d n=d RLWR 截至RLWR 截至RLWR
q n=1 RLWR 截至LWR 靠近RLWR
d^2 n=1 轻水堆 截至LWR 截至LWR
优化的实施方式(第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[],s[])
结果[]=0
对于(i=0至n)
对于j=0至d
结果[i]=结果[i]+Tn(b)[(Pn(j)+i)mod(d)]*s(j)
注意,Td是必需的,因为我们接收到系数向量b=(b0,b1,...,bn-1)^T,并且需要获得循环矩阵的最上一行,其中,b为最左列。
在上述算法中,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。由于a0=A(0,0)且ak=-A(0,n-k)(其中,1≤k≤n-1),则遵循:如果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环LWR的CPA-PKE、CPA-KEM和CCA-KEM
以下的更多信息描述了如何根据到目前为止描述的思想来构建CPA-PKE、CPA-KEM和CCA-KEM协议。因此,仅使用不同的配置参数即可实例化这些协议以依赖LWR和NTRU环LWR。
NTRU环具有归约多项式f(x)=xn-1,其中,n是素数数字。然后对于给定的格维度问题d,我们能够利用n=d或n=1来实例化系统。如果n=d,则我们具有NTRU环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的构建中应用我们的设计。同样的方法也适用于类似E1-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)。
我们能够以与我们在上面针对NTRU环所示出的相似的方式使用这些环。例如,针对上面的分圆环,利用环(xn=1+1)或(1)当n=1时,实施非环情况(LWE)。注意,在两种情况下,q都是素数数字。我们注意到,密钥对帐方法与在上述实施例中使用的密钥对帐方法不同,因为它要求q为2的幂。合适的选择将是密钥对账作为Frodo中的一个。
另一个好的选择是使用上述分圆多项式(即,xn+1和xn-1+xn-2+…+x+1)并且使用作为2的幂而不是素数数字的q。对q为素数的要求主要是使用NTT,然而,对于我们的方案的实施方式,将q选择为2的幂是更好的选择,因为好的选择是借助于矩阵乘法来实施该方案。
另一个好的选择是使用上述分圆多项式(即,xn+1和xn-1+xn-2+…+x+1)并且使用作为2的幂,其中,额外的要求是多项式是不可约的模数2。
我们还注意到,如果使用素数分圆多项式xn-1+xn-2+…+x+1,那么由于两个环的区别仅在于x-1项不同,因此仍然能够在环x^n-1中执行操作。为此,只要求乘以x-1即可将值从一个环提升到另一个环。一旦实现了操作,我们就能够通过除以相同的量来返回到上一个环。
从性能角度考虑参数选择的依据
RLWE已知的一些计算优化无法应用于本文档中提出的一些实施例。特别地,不可能将NTT应用于NTRU环。一种替代方法是使用NTT友好参数(例如,2的n次幂和q素数数字),使得Zq[x]/f(x)(其中,f(x)=x^n+1)中的操作能够借助于NTT来执行。由于使用了NTT,因此该优化将提高环情况(n>1)的CPU性能,然而,由于操作将以q为模(q是素数数字),因此我们预计非环情况(n=1)的性能会较差。
本文档中提出的参数选择似乎是组合方案的最佳选择,因为当借助于适用于n的任何选择的矩阵/向量操作来执行操作时,它允许快速实施操作。换句话说,即使对于n>1的方案也可能不如使用NTT的另一种环方案那样有效,该文档中的选择也允许在n>1时以及n=1时非常快速地实施该方案。此外,由于有许多合适的环,因此使用NTRU环允许对安全性和带宽要求进行精细调谐。
参数
该方案能够被配置有不同的参数。d、q和p的值定义了潜在格问题的难度。d的示例性值例如是700左右,并且q和p的示例性值等于2^14和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方面给定的安全级别和性能。能够将该任务运行一次,然后能够发布参数。
第二,将已发布的参数集与实施本文档中提出的方案的程序一起存储在表中,每参数集对应于给定的潜在问题、安全级别和性能参数。
第三,当两方(例如,爱丽丝和鲍勃)希望彼此通信时,爱丽丝通知鲍勃她愿意使用的参数集。这意味着爱丽丝能够确定她要使用该方案的方式:例如以环模式(d选择)还是非环模式(n选择)以及在哪个安全级别(取决于d、q和p)使用。爱丽丝能够通过明确指定设置的参数(d、n、q、p、…),发送参数集的识别符或指定取决于选择的参数的性能值(例如,公钥的大小、私钥的大小…)来通知鲍勃她的选择。我们注意到,鲍勃然后还能够具有不仅要求最低安全级别而且还要求解决某个难题的策略。因此,如果爱丽丝的提议并不令人满意,则鲍勃能够请求另一参数集。
从更数学的角度来看,以下是关于以上内容和其他实施例的更多信息。
1算法说明书和支持文档
1.1设计依据
1.2潜在问题
1.3预备内容
1.4 CPA公钥加密
1.5非环情况下的CPA密钥封装方法
1.6非环情况下的CCA密钥封装方法框架
1.7非环情况与环情况的组合
1.7.1框架配置
1.7.2参数集
1.7.3 NIST级别
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=1;然后Rn=Z。通过使用符号表示法,对于每个正整数a,我们针对集合{0,1,...,a-1}写有Za,并且针对具有Za中的所有系数的小于n次的多项式集合写有Rn,a。如果Rn中的多项式的所有系数为0、1或-1,则我们将该多项式称为三元组。
在整个文档中,常规字体字母表示来自Rn的元素,并且粗体小写字母表示具有Rn中的系数的向量。所有向量都是列向量。粗体大写字母是矩阵。向量v的转置用vT表示,矩阵A的转置用表示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为:
能够看出,Decompressa,b与Compressa,b“几乎”相反。更确切地说,对于每个x∈Za
通过直接计算能够看出,如果a是b的倍数,则
Decompressa,b(Compressa,b(x))≡x+{x}b/a(mod a)
对于每个x∈Za
压缩函数用于三个目的。
·首先,它提高了安全性,因为它会引起带舍入学习问题。
·其次,它用于解密消息。
·第三,它减少了公钥和密文的大小,从而减少了带宽需求。
对于每个v∈Rn,v的汉明权重被定义为v的非零系数的数量。中的向量的汉明权重等于其分量的汉明权重之和。我们用Hn,k(h)来表示汉明权重h的三元多项式的所有向量/>的集合。通过将Rn中的多项式的系数视为长度为n的向量,Hn,k(h)中的多项式对应于h位置为非零的长度为nk的三元向量,使得Hn,k(h)具由nkh2h个元素。
对于我们将||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安全公钥加密方案是利用以下算法来描述的。这些算法假定掌握各种系统参数,即,正整数n,h,p,q,t,B,μ。该算法包括针对矩阵/>以及针对/>矩阵S和针对/>矩阵R的随机选择,矩阵S和/>矩阵R都具有Tn(h)的所有列。也就是说,S和R都是三元矩阵,对于它们,每列都具有汉明权重h。为了对A做出明确的选择,系统参数包括随机空间∑和映射类似地,为了对S和R做出明确的选择,我们定义分别对来自/>的输入进行分配的函数fS和fR,分别生成三元组/>和/>其中,每列具有汉明权重h。对于集合A,我们用/>来表示,a是从A中均匀得出的。
第一算法生成中的公钥pk和私钥/>即,每列都具有汉明权重h的三元组/>矩阵。
算法1:PST.NR.CPA-PKE.Keygeneration()
参数整数p,q,n,h,
输入
输出
A=f(σ)
S=fS(s)
B=Compressq,p(<AS>q)
pk=(σ,B)
sk=S
返回(pk,sk)
下一个算法根据公钥pk、消息m和随机性变量ρ来生成密文c。
算法2:PST.NR.CPA-PKE.Encryptwithrho(pk,m,ρ)
参数整数p,t,q,n,μ
输入
输出
A=f(σ)
R=fR(ρ)
U=Compressq,p(<ATR>q)
c=(U,v)
返回c
加密算法根据公钥pk和消息m来生成密文c。
算法3:PST.NR.CPA-PKE.Encrypt(pk,m)
参数整数p,t,q,n,μ
输入
输出
c=PST.NR.CPA-PKE.Encryptwithro(pk,m,ρ)
返回c
解密算法从秘密密钥sk和密文c中检索纯文本消息m(的估计结果)。
算法4:PST.NR.CPA-PKE.Decrypt(sk,c)
参数整数p,t,q,n,μ
输入
输出
v=Decompressp,t(v)
返回
注意,我们能够在这里解释该方案的操作。
1.5非环情况下的CPA密钥封装方法
以下三种算法建立在上一节中定义的公钥加密方案的基础上,以定义CPA安全密钥封装方法。它采用了哈希函数H:{0,1}*→{0,1}μB
注意,我们还能够具有额外的哈希函数G:{0,1}*→{0,1}κ,并且将G而不是H应用在封装算法的步骤4和解封装算法的步骤2中。
算法5:PST.CPA-KEM.Keygeneration()
参数整数p,q,n,h,
输入
输出
(pk,sk)=PST.NR.CPA-PKE.Keygeneration()
返回(pk,sk)
算法6:PST.CPA-KEM.Encapsulate(pk)
参数整数p,t,q,n,μ,α
输入
输出
m=H(a,pk)
c=PST.NR.CPA-PKE.Encrypt(pk,m)
K=H(m,c)
返回(c,K)
算法7:PST.NR.CPA-KEM.Decapsulate(sk,c)
参数整数p,t,q,n,μ
输入
输出/>
m=PST.NR.CPA-PKE.Decrypt(sk,c)
K=H(m,c)
返回K
备注:注意,在算法1.5和1.5中,在将pk和c馈送到H之前,我们将pk和c隐式地映射到比特串。
1.6非环情况下的CCA密钥封装方法框架
密钥封装框架是通过将Fujisaki-Okamoto变换的KEM变体应用于我们的加密方案以使其具有CCA安全性而获得的。
我们使用CPA-PKE方案中的表示法。我们还需要两个哈希函数G:{0,1}*→{0,1}β×RR×{0,1}γ和H:{0,1}*→K={0,1}κ
我们首先描述密钥生成算法。注意,在随机选择相等的情况下,公钥pk是相等的。利用算法1.7的秘密密钥包括秘密密钥以及公钥和随机串(z)。
算法8:PST.NR.CCA-KEM.Keygen()
参数整数p,q,n,h,ζ
输入
输出
(pkCPA-PKE,skCPA-PKE)=PST.NR.CPA-PKE.Keygen()
pk=pkCPA-PKE
sk=(skCPA-PKE,z)
返回(pk,sk)
算法1.6的输出c包括与算法1.4相等的输入和与算法1.4相同的针对R的选择以及密文(U,v)。它还包括密钥K。
算法9:PST.NR.CCA-KEM.Encapsulate(pk)
参数整数p,t,q,n,μ
输入
输出
(U,v)=PST.CPA.PKE.Encryptwithro(pk,m,ρ)
c=(U,v,d)
返回(c,K)
如果秘密密钥S相等并且输入(U,v)相等,则m′的值等于算法1.4中给出的值。我们得出的结论是:如果NR CCA算法中的随机选择等于NRCPA-PKE算法的随机选择并且NRCPA-PKE算法正确检索了在算法1.6的第1行中选择的消息m,则m=m′。在这种情况下,在算法1.6的第2行中计算的值等于算法1.6的第2行中的/>因此在算法1.6的第8行中计算的K的值与算法1.6相等。如果不满足算法1.6的第7行中的条件,则输出为随秘密钥。
算法10:PST.NR.CCA-KEM.Decapsulate(pk,sk,c)
参数整数p,t,q,n,μ,ζ
输入
输出K∈K
m′=PST.NR.CPA-PKE.Decrypt(S,(U,v))
(U′,v′)=PST.CPA-PKE.Encryptwithrho(pk,m′,ρ′)
if(U′,v′,d′)=(U,v,d),则
返回
else
返回K=H(z,c)
end if
备注:在算法1.6和1.6中,我们在将(σ,B)m′和c馈送到G和H之前,分别将(σ,B)m′和c隐式地映射到二元串。
1.7非环情况与环情况的组合
在本节中,我们将利用多项式环Rn=Z[x]/(xn-1)来描述先前算法的组合非环版本和环版本。我们使用*来表示Rn中的乘法。为了强调与非环情况的相似性,我们识别多项式和(列)向量(f0,f1,...,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()
参数整数p,q,n,h,布尔ring要求如果ring,则/>否则/>
输入
输出
S=fS(s)
如果ring
则开始a=fpol(σ);B=<a*S>q结束
否则开始A=f(σ);B=(<AS>q)结束
B=Compressp,q(B)
pk=(σ,B)
sk=S
返回(pk,sk)
下一个算法根据公钥pk、消息m和随机性变量ρ来生成密文c。
算法12:PST.CPA-PKE.Encryptwithrho(pk,m,ρ)
参数整数p,t,q,n,μ;布尔ring要求如果ring,则/>否则/>
输入
输出
如果ring
则开始a=fpol(σ);U=<a*R>q结束
否则开始A=f(σ);U=<ATR>q结束
U=Compressq,p(U)
如果ring
否则;
c=(U,v)
返回c
加密算法根据公钥pk和消息m来生成密文c。
算法13:PST.CPA-PKE.Encrypt(pk,m)
参数整数p,t,q,n,μ,布尔ring
输入
输出
c=PST.CPA-PKE.Encryptwithro(pk,m,ρ)
返回c
解密算法从秘密密钥sk和密文c中检索纯文本消息m(的估计结果)。
算法14:PST.CPA-PKE.Decrypt(sk,c)
参数整数p,t,q,n,μ;布尔ring要求,如果ring,则/>否则
输入
输出
v=Decompressp,t(v)
如果ring
否则
返回
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。
更新共享矩阵
上面给出了许多选项来基于共享池更新共享矩阵。共享池能够采用主矩阵A_master或a_master的形式。共享池确实可以被表示为矩阵,但这不是必需的。将共享池索引为矩阵使某些置换更容易,例如,行或列的循环置换。更一般而言,共享池可以被视为数据集,其中,选择函数能够将元素分配给共享矩阵中的元素。
下面给出共享池的多个实施例:
例如,在LWE密钥交换(以及其他LWE构建)中使用的k×k维度的共享公共矩阵A可以通过将置换π应用于被定义为至少具有k×k维度的主矩阵Amaster来计算。
假定Amaster被保留在存储器中,这种方法将允许更快地计算刷新的A。这对于必须处理许多连接的服务器特别重要。在实施例中,A是根据大小小于k×k的Amaster通过应用多个置换来计算的。因此,Amaster的大小较小,并且多个置换应用于相同集合。后者的优点是节点要么不需要(i)根据种子计算整个Amaster,要么不需要(ii)将Amaster存储在存储器中,Amaster与共享矩阵一样大。相反,节点能够在使用完共享矩阵后删除它,下次需要共享矩阵时,能够根据共享池来构建共享矩阵。在实施例中,共享池仅包括平方根,该平方根与共享矩阵本身所需的数据一样多。例如,这样的大小支持将共享矩阵划分在每个k项的k中。在实施例中,共享池包括与第一模数q的大小(例如,小于或等于q或2q等)一样多的项。
一些实施例旨在提高性能,特别是在KEX中的客户端(发起方)方面,因为发起方必须减少计算和/或存储。这也改善了服务器(响应方)方面,但是这样的改进相对较小。当应用于其他基于格的方案时,该ID能够提高公钥加密方案或签名方案的性能,因为在给定两个种子的情况下也能够更快地计算出公共参数A。
可以通过将置换π应用于主矩阵Amaster来计算在LWE密钥交换(以及其他LWE构建)中使用的k×k维度的共享公共矩阵A。在实施例中,主矩阵的维度可以至少为k×k。但是也可以通过应用多个函数(其可能是置换)来根据大小小于k×k的Amaster来计算共享矩阵A。因此,Amaster的大小较小,并且多个函数(置换)被应用于相同集合上。假定Amaster被保留在存储器中,这种方法允许更快地计算刷新的A。这对于必须处理许多连接的服务器而言特别重要。
概述:
在存储器中可以使用包括N个元素的主矩阵Amaster,N<k2。能够通过对Amaster应用伪随机函数(PRF)来根据随机种子s计算Amaster中的元素。主矩阵Amaster是共享池的示例。
在实施例中,矩阵A被划分在集合Bi中,每个集合的大小为NB≤N。A集合能够表示例如:
A中的块
A中的行
A中的列
如图4所示。
可以通过将随机的函数πi应用于Amaster(即,Bi=πi(Amaster))来计算每个集合Bi中的分量。如果Amaster中的元素数量与Bi相等,则该随机的函数能够是项的置换。但是,只要它以随机方式拾取Amaster中的元素就足够了。
函数πi也能够拾取Amaster中的一些元素并用随机元素替换一些其他元素。例如,从来自Amaster_的值复制块Bi的一半项,其他项是随机生成的。在又一实施例中,函数πi从Amaster中拾取确切足够的项并将置换函数应用于每项,置换函数是集合{0,1,..,q-1}上的一对一函数。函数πi也能够首先置换项并对置换后的项应用替换函数。
关于参数:
共享矩阵A中的元素可以在[0,q-1]中。在一些实施例中,模数q约为214或216。A的大小是k×k,其中,k可以是例如600-800。NB的合适值应在q附近,使得所有元素的表示都具有高可能性。如果A是由块构建的,则每个块的大小可以是k′×k′,其中,例如,对于q=214,k′最高能够是128。
具体实施例:
在实施例中,提出了基于行的置换,其中,通过在A上应用总置换来逐行计算A,该置换对Amaster中的每行应用不同的置换。
在实施例中,我们通过拾取Amaster中的元素来计算A中的每行ai,其中,0≤i≤k-1,在下文中,我们将ai表示为amaster(其被定义为包含NB个元素的行)。我们描述两个具体实施例:
·实施例#1:我们将其计算为Nb的k置换。例如,πi:ai=amaster[ri:(ri+k-1)%Nb],其中,ri是随机值。这会得到kk个随机输出的总和。符号[a:b]表示索引从a到b的所有元素。如果b小于a,则将取从a到共享池末尾的所有项以及从池的开始直至a的所有项。符号m%Nb表示{0,1,..,Nb-1}中的整数m,其与m的Nb整数倍不同。
·实施例#2:在另一示例中,πi:ai[j]=amaster[ri:PRF(s|j)%Nb],即,ai中的第j个元素是通过随机获取amaster中的元素,通过应用取决于种子和j的PRF并将元素进行值为ri(取决于行)的移位而获得的。这会引起许多随机输出:但是它也需要为每行计算PRF,这可能效率不高。随机值ri是选择参数的示例。
下表总结了当生成Amaster时的置换数量和对计算比特数的要求
从上表中能够看出,随机输出的数量很大,但是需要借助PRF计算的比特数却要低得多。
协议中的使用:
协议中可能需要交换若干参数。例如,以下各项中的一项或多项:
用于计算Amaster的种子
用于计算函数πi的种子
函数(置换)πi的说明
更新共享矩阵A的方法可以在诸如密钥交换、密钥封装方法、公钥加密系统、签名方案等的加密协议中使用。注意,一些实施例还改善了性能,特别是在KEX的客户端(发起方),因为发起方必须减少计算/存储。这也改善了服务器(响应方)方面,但是这种改善相对较小。
当应用于其他基于格的方案时,这能够提高公钥加密方案或签名方案的性能,因为在给定两个种子的情况下,也能够更快地计算出公共参数A。
还注意,如果每个模数具有不同的公共参数ai(其中,ai在这种情况下表示给定环上的多项式),则这可以应用于模数格。每个公共多项式将通过应用置换而从主多项式获得。
图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保持私有这一事实。
共享矩阵A的结构可以用难度参数d和结构参数n来定义。共享矩阵单元130和共享矩阵单元230可以被配置为接收难度参数d和结构参数n作为输入。虽然这具有设备能够支持许多类型的加密潜在问题的优点,但这不是必需的。也可以预先确定A的结构(例如,其大小)和其多项式的阶数(如果有的话)。
注意,两个单元都使用具有相同难度参数d和结构参数n的共享矩阵。这些数字d和n确定了矩阵A的元素的大小和类型。例如,难度参数d和结构参数n可以通过API来设定,例如通过使用设备110和210以用于例如受保护的通信的应用来设定。该应用能够决定所要求的难度和结构并通过例如函数调用来指示设备110和/或250。
在共享矩阵中A选择以第一模数q为模、以阶数等于结构参数(n)的归约多项式(f)为模的项。如果n=1,则项为整数;如果n>1,则项为多项式。在节点110与节点210之间也共享(例如,通信或预定)第一模数q和归约多项式f。共享矩阵A通常是例如维度为k的k×k正方形矩阵。但A不必一定是正方形。相反,A能够是矩形。然后选择私钥矩阵的大小以与A的大小兼容。
行和列的数量k等于难度参数d除以结构参数n。如果n=d,则矩阵A具有单个多项式项。归约多项式f的实际选择是例如xn+1或xn-1。
优选地,结构参数n除以难度参数d,使得能够计算维度k。然而,在实施例中,通过将难度参数d除以结构参数n的结果进行舍入(例如,舍入到最接近的整数,向上舍入或向下舍入)来获得k。
在实施例中,结构参数n被限制为素数数字,但这不是必需的。在实施例中,结构参数n是2的幂,并且第一模数q是素数数字,但这也不是必须的。
节点110和210具有共享池131。共享池是与第二网络节点共享的并且包括多个整数和/或多项式以供在共享矩阵的项中使用。因此,共享池能够被视为整数和/或多项式的向量。例如,可以制造可以访问共享池的节点。然而,获得共享池的优选方法是生成共享池。这样做的好处是,不同的节点对能够具有不同的共享池。例如,可以通过确定性伪随机数生成器来获得节点110和210以生成共享池。随机数生成器从共享种子中获得种子。例如,设备中的一个设备(例如,设备110或设备210)可以生成种子并将其发送给另一方。例如,发送公钥矩阵的第一方可以发送种子以利用种子生成共享池并形成共享矩阵。例如,两方都可以生成种子并将其发送给另一方。用于生成的种子是通过将两种种子组合(例如通过将它们相加)来获得的。
一旦生成了共享池,就能够例如将其临时保留在电子存储器中,或者可以将其保留在例如磁性记录设备上的长期存储设备(例如,硬盘)或非易失性存储器中。保留共享池意味着不需要再次生成它。在实施例中,共享池在多个密钥交换上保持相同。但是共享池也可能有所发展。例如,在每个新密钥生成时,池中固定数量的项可能被丢弃,并且例如也从种子(例如,新种子)生成新的数字集合。这样可以控制开销,但从长远来看,确实可以确保共享池以及共享矩阵中的项得到更新。例如,数字可以是10等。
从共享池中选择共享矩阵中的项或项的系数。有一些选择。共享矩阵可以包括整数,在这种情况下,共享池也包括整数。共享矩阵可以包括多项式,在这种情况下,共享多项式包括可以包括整数,该整数被选择作为针对共享矩阵中的多项式的系数,或者共享池可以包括多项式,在这种情况下,共享池中的项可以是直接用于共享矩阵中的项。在这些实施例中,共享池中的项优选是第一模数q,但这不是严格必需的。同样,如果共享池中的项是多项式,则它们优选以共享模数q和共享归约多项式f为模。对于大多数应用,并不一定需要种子、共享池、共享矩阵、选择参数等是秘密的,它们也可能是公开的。
共享池的大小可以小于共享矩阵的大小。例如,共享矩阵的存储大小可以与共享矩阵时间中的项数成比例,可能乘以归约多项式的阶数减1。共享池的大小可以与其项数成比例,可能乘以归约多项式的阶数减1。在实施例中,共享池的大小小于共享矩阵的大小,例如小于或等于共享矩阵的大小的一半。在实施例中,共享池的大小小于共享矩阵的大小,例如小于或等于共享矩阵的大小的平方根;这样做的优点是能够将共享矩阵划分到等于或约等于共享池大小的k个部分中。在实施例中,共享池中的项数小于第一模数q或者小于它的小倍数(例如,2q、3q等)。后者的优点是,大约所有以q为模的元素都可能存在于共享池中,因此将被大致相等地表示在共享矩阵中。
在实施例中,共享池的大小大于共享矩阵的大小,但是节点将相同的共享池用于多个共享矩阵。实际上,共享池甚至可以与多个不同的第二节点一起使用。
共享池的优点是更新共享矩阵的成本很低。例如,仅选择参数可以被发送或交换,基于此,能够从共享池中快速选择新的共享矩阵。特别地,在一些实施例中,不需要或需要很少的随机函数。
在实施例中,节点获得与另一节点网络节点共享的一个或多个选择参数。选择参数可以是预定的,例如,节点可以访问选择参数的序列并使用下一个选择参数或下一些选择参数来生成共享矩阵。这样的选择参数也可以由一个节点来选择并被传达给另一节点。选择参数也可以由两个节点来选择并在选择参数被组合(例如,相加,例如,XOR)之后被传达给另一节点。
选择参数用于控制选择函数,选择函数例如从共享池中拾取共享矩阵中的项。
例如,共享矩阵单元130和230可以被配置有一个或多个选择函数。选择函数将来自共享池的整数、多项式和/或多项式系数分配给共享矩阵中的项,由选择函数分配的特定的整数、多项式或多项式系数取决于选择参数。
例如,选择函数可以是将选择参数ri和索引j输入到共享池或其部分中的函数gi(ri,j)。选择函数的输出可以是指示共享矩阵A中的项的对(x,y)。选择函数的输出可以是指示共享矩阵中的项(x,y)和该项中的多项式的系数的阶数t的对(x,y,t)。在这种情况下,将针对不同的索引值j(例如,针对来自j=0,...,N的索引)来评价函数gi(ri,j),并且将共享池中针对索引j的项分配给选择函数的输出。
例如,选择函数可以是函数gi(ri,x,y)或gi(ri,x,y,t),函数gi(ri,x,y)取用选择参数ri和指示共享矩阵中的项的对(x,y)作为输入,函数gi(ri,x,y,t)取用选择参数ri以及指示共享矩阵中的项(x,y)和项中的多项式的系数的阶数t的三元组(x,y,t)作为输入。选择函数的输出可以是被输入到共享池或其部分的索引j。在这种情况下,将针对共享矩阵中的不同项和/或针对t的不同值来评价函数gi(ri,j),并且将共享池中的项分配给共享矩阵中的项。共享池可以被表示为矩阵本身,在这种情况下,索引j可以被表示为索引对。
例如,选择函数可以是置换。将置换应用于共享池或其部分,并且根据预定序列(例如线性序列)将结果分配给共享矩阵中的项,例如,整数、多项式或系数。
在实施例中,共享矩阵A被划分到集合中。对于每个集合,选择函数根据选择参数中的至少部分将共享池或其部分映射到集合。图4示出了划分的示例。图4示出了四个共享矩阵A:410、420、430以及440。
在共享矩阵410中,集合是共享矩阵A的块。例如,块至少为2×2或更大。块可以是但不一定是正方形。一个集合被标记为412。
在共享矩阵420中,集合是共享矩阵A的行。一个集合被标记为422。
在共享矩阵430中,集合是共享矩阵A的行。一个集合被标记为432。
在共享矩阵440中,集合是共享矩阵A的项的随机选择。一个结合参考442。例如,同样在这种情况下,集合的大小可以等于A中的项数的1/k。例如,集合442可以包括k个项,例如,整数。集合442甚至可以是A中的系数的数量的1/k个选择结果。可以将系数随机分配给集合,例如,集合442。A中的多项式项的系数可以被分布在一个或一个以上的集合中。
选择参数ri可以例如选择共享池中的随机索引。接下来,可以将共享池中的相继的整数串分配给被分配有函数gi的项。选择函数可以指示特定的预定置换应首先应用多次。这些可以组合。例如,整个共享池的随机置换可以被固定在节点中。第一选择参数r0指示固定置换应被运行r0次,在此之后,可以将ri用于函数gi以例如用作索引。
选择参数可以是针对线性同余生成器的输入,线性同余生成器将共享池中的索引分配给共享矩阵的集合中的索引。例如,选择参数可以是线性同余生成器的递归关系中的乘数。优选地,选择参数相对于集合中的项数是素数。例如,选择参数也可以是增量。线性同余生成器可以生成与集合中的数量一样多的数字并根据它来置换所有或部分共享池。注意,线性同余生成器的开销远低于加密随机函数。
选择函数还可以包括例如基于选择参数r和s的加密随机函数,并且共享池中的具有以共享池的大小为模的索引(r+Prf(s|j))的项可以被映射到A的集合的(例如在共享矩阵的行或列中)具有索引j的项,其中,Prf指示伪随机函数,并且(s|j)表示s和j的级联。
在又一实施例中,在将选择函数应用于池之后,应用额外的函数S。这样的函数S的示例是在{0,1,...,q-1}上的一对一函数的逐元素应用或者用随机项对一些矩阵项的替换。
在实施例中,共享矩阵单元130和230被配置为从共享池中选择共享矩阵中的所有整数、多项式和/或多项式系数。这样做的好处是可以快速获得新版本的共享矩阵。然而,共享池中存在的任何偏差都可能被反映在共享矩阵中。为了获得高的安全性,可能希望避免这种情况。有若干方法可以做到这一点。例如,可以将共享池的内容随时间更新。例如,在生成每个新的共享矩阵之后,可以例如通过利用随机数生成器生成多个新项来更新共享池的内容。然而,这可能会引入共享池可能在第一节点与第二节点之间不同步的风险。通过将选择参数用作用于更新共享池的种子,可以降低这种风险。例如,可以在生成共享矩阵之前更新共享池。仅当成功生成密钥后,才会保留对共享池的改变,否则共享池将恢复为以前的状态。如果不可能成功生成密钥,则还可以例如根据共享池重新生成协议通过完全的重新生成来更新共享池,该共享池重新生成协议可以包括交换种子以进行重新生成。
减少对特定共享池的依赖性的其他方法是仅从共享池中获取部分共享矩阵。例如,在实施例中,从共享池中选择共享矩阵中的整数、多项式和/或多项式系数的部分,并且生成共享矩阵的剩余部分。例如,节点可以交换种子,例如,以与交换用于生成共享池的种子相似的方式交换种子和/或以交换选择参数相似的方式交换种子。种子用于生成共享矩阵的部分。例如,可以更新共享矩阵中的预定项。例如,预定位置在每一行和/或每一列中可以具有至少一个项。在实施例中,系数或整个多项式可以被更新。在实施例中,多个项/系数是随机选择的,例如由随机数生成器来选择,利用种子或选择参数获得种子等。
替换或生成的项/系数的数量可以是固定数量,例如,至少为10或至少为100等。该数量可以与共享矩阵成比例,例如,至少项/系数的数量的平方根不是从共享池中获取的,而是生成和/或替换的。
除了从共享矩阵中仅获取部分项以外,还可以先从共享池中选择整个共享矩阵,然后再将其部分替换为其他值。例如,替换或随机化步骤可以在将共享矩阵用于密钥交换之前对其进行修改。例如,一个或多个项可以被选择(例如被预定或随机选择),或者甚至是通过协议并且例如被根据种子的随机生成项替换等。替代地,可以将映射应用于共享矩阵中的一些或全部项。例如,在{0,1,...,q-1}上的一对一映射的逐项应用可以应用于一个、一个以上或全部项。随机化函数的应用次数可以与替换/更换相同,但是随机化函数的应用次数也可以更多,例如应用于所有项/系数。
下面进一步解释密钥交换协议。在该实施例中,假定共享矩阵包括整数模数和第一模数q。然而,在密钥交换协议的其他实施例中,共享矩阵和私钥包括以模数q和第一归约多项式f为模的多项式。公共密钥矩阵可以以第二模数p和归约多项式为模。除了使用舍入以外,还可以使用其他噪声源。发起方节点110包括私钥矩阵单元140。响应方节点210包括私钥矩阵单元240。私钥矩阵单元140被配置为生成私钥矩阵SI;私钥矩阵单元240被配置为生成私钥矩阵SR。私钥矩阵中的项是以f为模的多项式。如果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×k的,则发起方节点的私钥矩阵可以为矩阵。选择大小足够大的/>和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)与以第一模数(q)和f为模的私钥矩阵(分别为SI或SR)之间的矩阵乘积并且获得矩阵乘积并添加噪声来计算公钥矩阵P(针对发起方和响应方分别为PI、PR)。
注意,没有揭示该中间矩阵乘法。知道共享矩阵A和该矩阵乘法的结果将揭示私钥,因为可以通过对矩阵A求逆来计算私钥。
可以通过选择误差项或噪声项并将其添加到上述矩阵乘积的项中来添加噪声。例如,可以从均值为0的高斯分布中选择噪声。添加噪声的优选方式是缩小中间矩阵乘积,例如缩小系数。
在实施例中,公钥矩阵单元将矩阵乘积中的项缩小到第二模数p。第二模数p小于第一模数q。缩放项等于未缩放项乘以第二模数(p),再除以第一模数(q),并舍入到最接近的整数。例如,如果x是矩阵乘积中的以q为模的未缩放项,则可以将缩放项选择为其中,/>表示最接近的整数。在缩放操作之后,不再可以根据公钥和矩阵A直接计算出私钥。
公钥矩阵中的项可以被表示为系数在区间[0,p-1]内的多项式。私钥矩阵中的项也可以被表示为系数在区间[0,p-1]内的多项式。选择在区间内的系数来减小整数大小以进行后续乘法是有利的。如上所述,私钥矩阵还可以具有在区间[-s,s]或者甚至[0,s]内选择的系数。
矩阵A与私钥矩阵S的乘法是以第一模数q和f为模来完成的。为此,网络节点可以包括用于对模数q和模数f进行归约的模归约单元。如果私钥矩阵S中的系数很小(例如,以1为界,或者在绝对值上以1为界),则可以简化模归约;在矩阵乘法期间,每当系数变得大于q或小于0时,通过减去q或加上q将结果带入区间0至q-1。
发起方节点和响应方节点两者例如使用通信接口120和220将它们的公钥矩阵发送到另一节点。发明人发现通过缩小矩阵乘积实现的至少三个优点。首先,避免了将噪声产生和明确添加到矩阵乘积中。引入噪声要求计算概率分布,例如,高斯分布。这些操作的计算强度相对较大。其次,减少了通信要求。由于第二模数p小于第一模数q,因此与私钥矩阵相比,表示公钥矩阵的项所需的比特数更少。第三,涉及公钥矩阵的计算较小,因为它们涉及的数字较小。令人惊讶的是,单次测量同时提供三个优点。
强烈建议将第二模数p除以第一模数q。有趣的是,发明人发现第一模数和第二模数都不需要是素数数字。实际上,已经发现选择第二模数(p)和/或第一模数(q)作为2的幂具有以下优点:公钥和私钥是均匀分布的。在实施例中,第一模数和第二模数均为2的幂。
在实施例中,除了作为2的幂的模数p和q以外,我们还要求即使观察到对帐数据,这也会得到均匀共享密钥。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被布置为:根据原始密钥262来获得共享密钥266和对帐数据264,并且将对帐数据264发送到发起方网络节点110。对账数据可以采用原始密钥中一个或多个比特的形式,例如,来自系数的比特。为了生成密钥,将忽略被选为对帐数据的比特。这些参考包含对帐数据的各种示例。
共享密钥单元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应用对帐函数来计算共享密钥。例如,对帐函数可以应用于原始密钥162中的每项以及对帐数据的对应部分。例如,如果对账数据164是由响应器单元210生成的原始密钥的部分,则发起方节点可以选择可能已经由节点210获得并且与接收到的对账数据相兼容的原始密钥,例如具有与接收到的数据相同的中间比特。
可以将矩阵A和私钥矩阵中的一个重新用于密钥协商协议的多次运行(如果两者相同,则将获得相同的共享密钥)。这将减少通信开销,特别是在矩阵A被重新使用的情况下。然而,发明人认识到:由于没有认证被连接到这些元素,因此不需要重新使用矩阵A和私钥矩阵中的任一个。在优选实施例中,对于每个新密钥交换,获得刷新的矩阵A和刷新的私钥。这样做的优点是:攻击者无法选择通过观察协议的多次运行来观察额外信息。而且,前向保密得到改善。
在协议完成并且两个节点都已经计算了共享密钥之后,一个节点可以将密钥确认消息发送给另一节点,以验证它们是否就相同的密钥达成一致。例如,密钥确认消息可以是共享密钥的哈希、固定值的加密、随机值的加密以及随机值。密钥确认也可以使用质询响应协议来执行。也可以选择省去密钥确认。如果双方获得了不同的共享密钥,则随后在他们之间执行的通信将失败。例如,共享密钥可以用于加密和/或认证另外的通信,例如,数字消息。如果他们到达不同的共享密钥,则解密和/或验证可能会失败。
在各种实施例中,可以从各种替代方案中选择通信接口。例如,通信接口可以是到局域网或广域网(例如,互联网)的网络接口,到内部或外部数据存储设备的存储接口、键盘等。
网络节点可以包括电子存储设备,以例如存储中间数据,例如,矩阵A、公钥和私钥矩阵以及共享密钥等。存储设备可以被实施为电子存储器(例如,闪速存储器)或磁性存储器(例如,硬盘)等。存储设备可以包括多个分立的存储器,它们一起构成存储设备。存储设备也可以是临时存储器,例如,RAM。在临时存储设备的情况下,存储设备可以使用一些手段以在使用之前获得公共参数(例如通过任选的网络连接(未单独示出)获得公共参数)。
典型地,设备110和210各自包括微处理器(未在图1中单独示出),该微处理器运行在设备110和210处存储的适当软件。例如,该软件可能已经被下载和/或被存储在对应的存储器中,对应的存储器例如为诸如RAM之类的易失性存储器或诸如Flash之类的非易失性存储器(未单独示出)。替代地,设备110和210可以全部或部分地以可编程逻辑单元的形式来实施,例如被实施为现场可编程门阵列(FPGA)。设备110和210可以全部或部分地被实施为所谓的专用集成电路(ASIC),即,针对其特定用途而定制的集成电路(IC)。例如,可以例如使用诸如Verilog、VHDL等的硬件描述语言在CMOS中实施电路。
在实施例中,网络节点包括通信接口电路、共享矩阵电路、私钥矩阵电路、公钥矩阵电路以及共享密钥电路。电路实现本文描述的对应单元。这些电路可以是处理器电路和存储电路,处理器电路运行在存储电路中以电子方式表示的指令。
处理器电路可以以分布式方式实施,例如被实施为多个子处理器电路。存储器可以被分布在多个分布式子存储设备上。部分或全部存储器可以是电子存储器、磁性存储器等。例如,存储设备可以具有易失性部分和非易失性部分。部分存储设备可以是只读的。电路也可以是FPGA、ASIC等。
图2示意性地示出了电子密钥交换方法的实施例的示例。该方法可以由诸如发起方节点110或响应方节点210的第一电子网络节点运行。
方法400包括:
布置(410)第一网络节点与第二网络节点之间的数字通信,
获得(420)共享矩阵(A),共享矩阵是通过通信接口与第二网络节点共享的,共享矩阵A中的项是整数,优选是以第一模数q为模的整数,并且/或者共享矩阵(A)中的项是多项式,获得共享矩阵(A)包括:
获得与第二网络节点共享的一个或多个选择参数,
从共享池中选择整数、多项式和/或多项式系数,共享池是与第二网络节点共享的并且包括多个整数和/或多项式以供在共享矩阵的项中使用,其中,选择是根据一个或多个选择函数来完成的,选择函数将来自共享池的整数、多项式和/或多项式系数分配给共享矩阵中的项,由选择函数分配的特定的整数、多项式或多项式系数取决于选择参数,
生成(430)私钥矩阵(SI),私钥矩阵中的项是整数模数(q)和/或以归约多项式(f)为模的整数多项式,
通过以下操作来生成(440)公钥矩阵(PI):
计算(442)共享矩阵(A)与以第一模数q为模和/或以归约多项式(f)为模的私钥矩阵(SI)之间的矩阵乘积而获得矩阵乘积,并且将噪声(444)添加到矩阵乘积中的项,并且
将第一网络节点的公钥矩阵发送(452)到第二网络节点,
接收(454)第二网络节点的公钥矩阵(PR),
将原始密钥计算(460)为第二节点的接收到的公钥与第一网络节点的以第二模数(p)为模的私钥矩阵之间的矩阵乘积,
如果第一网络节点根据发起方模式进行操作,则第一网络节点执行以下另外的元素。
接收(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,处理单元1120用于运行计算机程序部件以运行根据实施例的方法和/或实施其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的部分可以是只读的。电路1110可以包括通信元件1126,例如,天线、连接器或这两者等。电路1110可以包括专用集成电路1124,专用集成电路1124用于执行该方法中定义的部分或全部处理。处理器1120、存储器1122、专用IC1124和通信元件1126可以经由互连1130(例如,总线)彼此连接。处理器系统1110可以被布置为分别使用天线和/或连接器进行接触式通信和/或无接触式通信。
例如,在实施例中,网络节点可以包括处理器电路和存储器电路,该处理器被布置为运行在存储器电路中存储的软件。例如,处理器电路可以是英特尔的酷睿i7处理器、ARM的Cortex-R8等。在实施例中,处理器电路可以是ARM的Cortex M0。存储器电路可以是ROM电路,或者可以是非易失性存储器,例如,闪速存储器。存储器电路可以是易失性存储器,例如,SRAM存储器。在后一种情况下,验证设备可以包括被布置用于提供软件的非易失性软件接口,例如,硬盘驱动器、网络接口等。
应当注意,上述实施例旨在说明而非限制本发明,并且本领域技术人员将能够设计出许多替代实施例。
在权利要求中,放在括号之间的任何附图标记不应被解释为对权利要求的限制。动词“包括”及其词形变化的使用不排除权利要求中记载的元件或步骤之外的元件或步骤的存在。元件前的词语“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括若干不同元件的硬件以及借助于适当编程的计算机来实施。在列举若干单元的装置型权利要求中,这些单元中的若干单元可以被实施为同一个硬件项。虽然某些元件被记载在互不相同的从属权利要求中,但是这并不指示这些元件不能被组合使用。
在权利要求中,括号内的引用符号指代例示性实施例的附图中的附图标记或实施例的公式,从而提高了权利要求的可理解性。这些引用符号不应被解释为限制权利要求。
参考文献
[1]“Device and method sharing a matrix for use in a cryptographicprotocol”,欧洲申请案,2017年3月6日,申请号EP 17159296.7,代理人案号2017P01555
[2]“Improved key reconciliation method”,Ludo Tolhuizen、Ronald Rietman和Oscar Garcia-Morchon,Cryptology ePrint Archive,报告2017/295,https:// eprint.iacr.org/2017/295
[3]“Frodo:Take off the ring!Practical,Quantum-Secure Key Exchangefrom LWE”,(Frodo):J.Bos等人,Cryptology ePrint Archive,报告2016/659,https:// eprint.iacr.org/2016/659
[4]“Post-quantum key exchange-a new hope”,(New Hope):E.Alkim等人,Cryptology ePrint Archive,报告2015/192,https://eprint.iacr.org/2015/1092
[5]“NewHope without reconciliation”(New Hope Simple):E.Alim等人,Cryptology ePrint Archive,报告2016/1157,https://eprint.iacr.org/2016/1157
[6]“CRYSTALS--Kyber:a CCA-secure模数-lattice-based KEM”(Kyber):J.Bos等人,Cryptology ePrint Archive,报告2017/634,https://eprint.iacr.org/2017/634
[7]“spKEX:an optimized lattice-based key exchange”(spKEX):S.Bhattacharya等人,Cryptology ePrint Archive,报告2017/709,https:// eprint.iacr.org/2017/709
参考文献[1]至[7]中的每一篇均通过引用而被包括在本文中。

Claims (23)

1.一种被配置用于加密操作的第一电子网络节点(110),所述第一电子网络节点包括:
通信接口(120),其被布置用于与第二网络节点进行数字通信,
处理器电路,其被配置为:
获得共享矩阵(A),所述共享矩阵是通过所述通信接口与所述第二网络节点共享的,所述共享矩阵(A)中的项是整数,并且/或者所述共享矩阵(A)中的项是整数多项式,获得所述共享矩阵(A)包括:
获得与所述第二网络节点共享的一个或多个选择参数,
从共享池中选择整数、多项式和/或多项式系数,所述共享池是与所述第二网络节点共享的并且包括多个整数和/或多项式以供在所述共享矩阵的项中使用,其中,所述选择是根据一个或多个选择函数来完成的,选择函数将来自所述共享池的整数、多项式和/或多项式系数分配给所述共享矩阵中的项,由选择函数分配的特定的整数、多项式或多项式系数取决于所述选择参数,
生成私钥矩阵(SI),所述私钥矩阵中的项是整数和/或整数多项式,通过以下操作来生成公钥矩阵(PI):
计算所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积而获得矩阵乘积,并且将噪声添加到所述矩阵乘积,并且
将所述第一电子网络节点的所述公钥矩阵发送到所述第二网络节点。
2.根据权利要求1所述的第一电子网络节点(110),其中,所述共享矩阵(A)中的项是以第一模数(q)为模的整数并且/或者所述共享矩阵(A)中的项是以第一模数(q)为模且以归约多项式(f)为模的整数多项式,并且其中,所述私钥矩阵中的项是以第一模数(q)为模的整数和/或以第一模数(q)为模且以所述归约多项式(f)为模的整数多项式,并且其中,所述私钥矩阵是以所述第一模数(q)为模并且/或者以所述第一模数(q)和所述归约多项式(f)为模来计算的。
3.根据前述权利要求中的任一项所述的第一电子网络节点,被布置为针对每个新的密钥交换获得不同的共享矩阵(A)。
4.根据权利要求2所述的第一电子网络节点,其中,
所述共享矩阵和所述共享池包括整数或多项式,并且所述选择多项式从所述共享池中选择整数或多项式,所述共享池包括的项少于所述共享矩阵的项,或者
所述共享矩阵包括多项式,并且所述共享池包括整数,并且所述选择多项式从所述共享池中选择多项式系数,所述共享池包括的项数少于所述共享矩阵中的项数乘以所述归约多项式的阶数减1。
5.根据权利要求1-2中的任一项所述的第一电子网络节点,被布置为通过生成随机种子并通过通信信道将所述随机种子发送到另一节点来获得所述共享池(A_master),所述第一电子网络节点和所述第二网络节点使用所述随机种子来播种确定性伪随机数生成器,从而根据所述伪随机数生成器的输出来生成所述共享池。
6.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,
所述共享矩阵中的项和所述共享池中的项是以第一模数(q)为模的整数,
所述共享池中的项是以归约多项式(f)为模的整数多项式,并且所述共享池中的项是以所述第一模数(q)为模的整数,
所述共享矩阵中的项是整数多项式,并且所述共享池中的项是以所述第一模数(q)和所述归约多项式(f)为模的多项式。
7.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,共享矩阵(A)中的项被划分到集合中,针对每个集合,选择函数根据所述选择参数的至少部分将所述共享池的至少部分映射到所述集合。
8.根据权利要求7所述的第一电子网络节点,其中,
所述集合对应于所述共享矩阵的行或列,或者
所述集合对应于块共享矩阵,并且/或者
其中,所述集合具有相等的大小。
9.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,选择函数将选择参数和指示所述共享矩阵的项或项的系数的索引作为输入并且在所述共享池中产生索引作为输出。
10.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,选择函数将所述共享池的项的相继序列映射到所述共享矩阵的行或列中的元素的相继序列。
11.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,
选择函数根据选择参数r将所述共享池中的具有索引r直到(r+k-1)的以所述共享池的大小为模的项映射到所述共享矩阵的行或列,其中,k是所述矩阵的维度,或者
选择函数根据选择参数r和s将所述共享池中的具有索引(r+Prf(s,j))的以所述共享池的大小为模的项映射到所述共享矩阵的行或列的具有索引j的项,其中,Prf指代将s作为种子并将索引j作为输入的伪随机函数。
12.根据权利要求1-2中的任一项所述的第一电子网络节点(110),其中,所述加密操作是密钥交换(KEX)协议,所述处理器电路被配置为:
接收所述第二网络节点的公钥矩阵(PR),
将原始密钥计算为所述第二网络节点的接收到的公钥与所述第一电子网络节点的所述私钥矩阵之间的矩阵乘积,
其中,所述第一电子网络节点还被配置为:
接收所述第二网络节点的对帐数据(h)
通过将对账函数(rec)应用于接收到的对帐数据和所述原始密钥来计算共享密钥,或者
其中,所述第一电子网络节点还被配置为:
从所述原始密钥获得所述共享密钥和所述对帐数据,
将所述对帐数据发送到所述第二网络节点。
13.根据权利要求2所述的第一电子网络节点,其中,所述共享矩阵(A)的项是多项式,并且其中,所述归约多项式是xn+1或xn-1或
14.根据权利要求2所述的第一电子网络节点,其中,所述处理器电路被配置为通过用循环矩阵替换阶数大于0的多项式项来计算针对共享矩阵(A)的扩展共享矩阵,所述扩展共享矩阵具有以第一模数(q)为模的整数作为项,并且列和行的数量等于所述共享矩阵(A)的列和行的数量乘以所述归约多项式的阶数。
15.根据权利要求2所述的第一电子网络节点,其中,将噪声添加到所述矩阵乘积包括:
将所述矩阵乘积中的项缩小到第二模数(p),缩放项等于未缩放项乘以所述第二模数(p),除以所述第一模数(q)并舍入到最接近的整数,所述第二模数(p)小于所述第一模数(q),将原始密钥计算为所述第二网络节点的接收到的公钥与所述第一电子网络节点的以所述第二模数为模的私钥矩阵之间的矩阵乘积,或者
从噪声分布中为所述矩阵乘积中的一个或多个或所有元素选择噪声元素,并且将所述噪声元素添加到所述矩阵乘积中的一个或多个或所有元素。
16.根据权利要求15所述的第一电子网络节点,其中,所述噪声元素的系数是从均值为0的高斯分布中选择的。
17.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,
私钥矩阵是从候选私钥矩阵中均匀随机选择的,并且/或者
所述私钥矩阵中的元素的系数的绝对值由边界来界定,并且/或者
所述私钥矩阵的列和/或行具有固定或有界的汉明权重(hs)。
18.根据权利要求17所述的第一电子网络节点,其中,所述边界是2,或者其中,所述边界是1,后者对应于带符号的二进制。
19.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,
所述矩阵(A)具有至少一个等于k的维度,并且任选地是k×k的正方形矩阵,
所述第一电子网络节点的所述私钥具有维度n和
所述第二网络节点的所述私钥具有维度和n,其中,/>和/>小于n。
20.根据权利要求19所述的第一电子网络节点,和n可以是1或大于1。
21.根据权利要求1-2中的任一项所述的第一电子网络节点,其中,所述处理器电路被配置为:
从所述共享池中选择所述共享矩阵中的所有整数、多项式和/或多项式系数,或者
从所述共享池中选择所述共享矩阵中的所述整数、所述多项式和/或所述多项式系数中的部分,并且生成所述共享矩阵的剩余部分,
从所述共享池中选择所述共享矩阵中的所有整数、多项式和/或多项式系数,并且根据置换函数来替换所述共享矩阵中的所述整数、所述多项式和/或所述多项式系数中的部分。
22.一种用于第一电子网络节点(110)的电子加密操作方法(400),所述方法包括:
布置(410)所述第一电子网络节点与第二网络节点之间的数字通信;
获得(420)共享矩阵(A),所述共享矩阵是通过通信接口与所述第二网络节点共享的,所述共享矩阵(A)中的项是整数,并且/或者所述共享矩阵(A)中的项是多项式,获得所述共享矩阵(A)包括:
获得与所述第二网络节点共享的一个或多个选择参数,
从共享池中选择整数、多项式和/或多项式系数,所述共享池是与所述第二网络节点共享的并且包括多个整数和/或多项式以供在所述共享矩阵的项中使用,其中,所述选择是根据一个或多个选择函数来完成的,选择函数将来自所述共享池的整数、多项式和/或多项式系数分配给所述共享矩阵中的项,由选择函数分配的特定的整数、多项式或多项式系数取决于所述选择参数,
生成(430)私钥矩阵(SI),所述私钥矩阵中的项是整数和/或整数多项式,
通过以下操作来生成(440)公钥矩阵(PI):
计算(442)所述共享矩阵(A)与所述私钥矩阵(SI)之间的矩阵乘积而获得矩阵乘积,并且将噪声(444)添加到所述矩阵乘积中的项,并且
将所述第一电子网络节点的所述公钥矩阵发送(452)到所述第二网络节点。
23.一种计算机可读介质(1000),其包括表示指令的瞬态或非瞬态数据(1020),所述指令用于令处理器系统执行根据权利要求22所述的方法。
CN201880081333.8A 2017-10-17 2018-10-12 具有可更新共享矩阵的加密设备 Active CN111492615B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP17196926.4A EP3474484A1 (en) 2017-10-17 2017-10-17 Cryptographic device with updatable shared matrix
EP17196926.4 2017-10-17
PCT/EP2018/077823 WO2019076737A1 (en) 2017-10-17 2018-10-12 CRYPTOGRAPHIC DEVICE WITH SHARED MATRIX WHICH CAN BE UPDATED

Publications (2)

Publication Number Publication Date
CN111492615A CN111492615A (zh) 2020-08-04
CN111492615B true CN111492615B (zh) 2023-08-29

Family

ID=60138257

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880081333.8A Active CN111492615B (zh) 2017-10-17 2018-10-12 具有可更新共享矩阵的加密设备

Country Status (8)

Country Link
US (1) US11212099B2 (zh)
EP (2) EP3474484A1 (zh)
JP (1) JP7208987B2 (zh)
CN (1) CN111492615B (zh)
BR (1) BR112020007373A2 (zh)
MX (1) MX2020003689A (zh)
RU (1) RU2020115996A (zh)
WO (1) WO2019076737A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3698515B1 (en) * 2017-10-17 2021-02-17 Koninklijke Philips N.V. Configurable device for lattice-based cryptography
EP3754896A1 (en) * 2019-06-18 2020-12-23 Koninklijke Philips N.V. Authenticated key agreement
WO2021061833A1 (en) * 2019-09-26 2021-04-01 Visa International Service Association Lattice based signatures with uniform secrets
GB2587438A (en) 2019-09-30 2021-03-31 Governing Council Univ Toronto Key generation for use in secured communication
US11153080B1 (en) * 2020-07-29 2021-10-19 John A. Nix Network securing device data using two post-quantum cryptography key encapsulation mechanisms
KR20220055079A (ko) * 2020-10-26 2022-05-03 삼성에스디에스 주식회사 NTRU LPRime 알고리즘에 대한 부채널 공격을 방지하기 위한 장치 및 방법
JP7402191B2 (ja) 2021-03-03 2023-12-20 Kddi株式会社 乗算装置、乗算方法及び乗算プログラム
CN112910933B (zh) * 2021-05-07 2021-07-13 鹏城实验室 认证方法、认证设备以及验证设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103490901A (zh) * 2013-09-30 2014-01-01 广东南方信息安全产业基地有限公司 基于组合密钥体系的密钥生成和发放方法
EP2846494A1 (en) * 2013-09-06 2015-03-11 Tata Consultancy Services Ltd. Identity based encryption
CN105379173A (zh) * 2013-07-12 2016-03-02 皇家飞利浦有限公司 用于共享密码密钥的系统
CN105930916A (zh) * 2016-04-07 2016-09-07 大连理工大学 一种基于并行模块化神经网络的副产煤气实时预测方法
CN106357410A (zh) * 2016-10-10 2017-01-25 中山大学 一种在没有单向陷门的格签名上构建阈下信道的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4485175B2 (ja) 2002-12-03 2010-06-16 パナソニック株式会社 鍵共有システム、共有鍵生成装置及び共有鍵復元装置
US8621227B2 (en) * 2010-12-28 2013-12-31 Authernative, Inc. System and method for cryptographic key exchange using matrices
WO2013152725A1 (en) * 2012-04-12 2013-10-17 Jintai Ding New cryptographic systems using pairing with errors
US9223720B2 (en) * 2013-12-13 2015-12-29 Oracle International Corporation Systems and methods for rapidly generating suitable pairs of hash functions
WO2015184991A1 (en) * 2014-06-04 2015-12-10 Jintai Ding Improvements on cryptographic systems using pairing with errors
US9577897B2 (en) * 2015-02-20 2017-02-21 Adobe Systems Incorporated Providing visualizations of event sequence data
US10097351B1 (en) * 2016-09-15 2018-10-09 ISARA Corporation Generating a lattice basis for lattice-based cryptography
US9698986B1 (en) * 2016-09-23 2017-07-04 ISARA Corporation Generating shared secrets for lattice-based cryptographic protocols
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105379173A (zh) * 2013-07-12 2016-03-02 皇家飞利浦有限公司 用于共享密码密钥的系统
EP2846494A1 (en) * 2013-09-06 2015-03-11 Tata Consultancy Services Ltd. Identity based encryption
CN103490901A (zh) * 2013-09-30 2014-01-01 广东南方信息安全产业基地有限公司 基于组合密钥体系的密钥生成和发放方法
CN105930916A (zh) * 2016-04-07 2016-09-07 大连理工大学 一种基于并行模块化神经网络的副产煤气实时预测方法
CN106357410A (zh) * 2016-10-10 2017-01-25 中山大学 一种在没有单向陷门的格签名上构建阈下信道的方法

Also Published As

Publication number Publication date
RU2020115996A3 (zh) 2022-01-12
MX2020003689A (es) 2020-08-03
RU2020115996A (ru) 2021-11-18
EP3474484A1 (en) 2019-04-24
JP2020537191A (ja) 2020-12-17
CN111492615A (zh) 2020-08-04
US20200304305A1 (en) 2020-09-24
US11212099B2 (en) 2021-12-28
EP3698513B1 (en) 2021-12-08
BR112020007373A2 (pt) 2020-09-29
WO2019076737A1 (en) 2019-04-25
EP3698513A1 (en) 2020-08-26
JP7208987B2 (ja) 2023-01-19

Similar Documents

Publication Publication Date Title
CN111492615B (zh) 具有可更新共享矩阵的加密设备
CN111492616B (zh) 用于基于晶格的密码学的可配置设备
JP6720424B1 (ja) 鍵共有デバイス及び方法
TWI672932B (zh) 基於質數陣列的後量子非對稱密鑰產生方法及系統、加密方法、解密方法及加密通訊系統
CN110383754B (zh) 基于椭圆曲线同源的密钥协商协议
JP5871142B2 (ja) 暗号鍵共有システムにおける通信装置および暗号鍵生成方法
EP3850784B1 (en) Public/private key system with decreased public key size
CN112715016B (zh) 密钥封装协议
EP3547603A1 (en) Configurable device for lattice-based cryptography
EP3889764A1 (en) Parallel generation of a random matrix
RU2787692C2 (ru) Протоколы инкапсуляции ключей
RU2787692C9 (ru) Протоколы инкапсуляции ключей

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