公共密钥加密系统的制作方法

文档序号:11637067阅读:787来源:国知局
公共密钥加密系统的制造方法与工艺

本发明涉及包括密钥生成设备的公共密钥(publickey)加密系统。密钥生成设备被配置成生成用于在公共密钥加密设备中使用的公共密钥和用于在私人密钥(privatekey)解密设备中使用的对应的私人密钥。密钥生成设备被配置成以电子形式获得私人随机值。



背景技术:

公共密钥加密是使用两个独立密钥的密码学的领域,其中一个密钥是秘密的(私人的),而其中一个密钥被称为公共的。虽然不同,但是密钥配对(pair)的两个部分在数学上进行链接。一个密钥锁定(lock)或加密明文以获得密码文本,而另一密钥解锁或解密密码文本来再次获得明文。公共密钥在没有私人密钥的情况下不能执行解密功能。公共密钥甚至可以被公布,并且攻击者在解密密码文本中仍没有得到帮助。公共密钥加密也被称为非对称加密。

用于公共密钥密码术的已知算法基于数学关系诸如整数分解和离散对数问题。虽然对于预期接收者而言生成公共密钥和私人密钥、使用私人密钥来解密消息在计算上是容易的并且对于发送者而言使用公共密钥来加密消息是容易的,但是对于任何人而言难以仅仅基于其公共密钥的知识来导出私人密钥。后者不同于其中解密密钥或等于其对应的加密密钥或容易从中导出的对称加密。

公共密钥密码术被广泛使用。这是被许多密码算法和密码系统使用的方案。

已知的公共密钥加密系统所基于的问题是资源密集的。例如,为已知的公共密钥加密系统的rsa加密为了密钥生成而要求生成两个大的质数p和q。解密要求对类似大小的数字取幂(exponentiation)。

参考delphineboucher等人的文章“keyexchangeandencryptionschemesbasedonnon-commutativeskewpolynomials”。该文章涉及基于所谓的非交换斜多项式的密钥交换算法。

进一步参考yagisawamasahiro的文章“keyagreementprotocolsbasedonmultivariatepolynomialsoverfq”。该文章涉及基于未被评估的多元多项式的密钥协商协议。



技术实现要素:

当前的公共密钥加密(pke)方法要求繁重的数学运算并因而其不太适合于计算受到约束的嵌入式系统,诸如传感器。具有改进的系统用于消息的公共密钥加密将是有利的。

本发明的一方面涉及用于加密消息的系统。该系统包括密钥生成设备、公共密钥加密设备和优选地私人密钥解密设备。密钥生成设备被配置成生成用于在公共密钥加密设备中使用的公共密钥和用于在私人密钥解密设备中使用的对应的私人密钥。公共密钥加密设备被配置用于使用公共密钥来加密电子消息。私人密钥解密设备被配置用于使用解密信息和私人密钥来解密加密消息。

在pke中,每一方保持两个密钥:公共密钥和私人密钥。公共密钥可以例如由中央机构(centralauthority)公布。但是,每一方使得其私人密钥对于不被信任读取针对那个特定方的通信的任何其他方而言保持为秘密的。

利用系统中的设备提供的公共密钥加密虑及有效的操作并且适合于资源受到约束的设备。下面进一步解释系统的设备。

可以在例如要求安全通信的照明网络中使用公共密钥加密。一般而言,本发明能够被应用于任何类型的要求在配对的设备之间的安全通信的通信网络。

密钥生成设备、公共密钥加密设备和私人密钥解密设备是电子设备;它们可以是移动电子设备,诸如移动电话、机顶盒、计算机等等。密钥生成设备、公共密钥加密设备和私人密钥解密设备可以是资源受到约束的,诸如传感器、照明设备、led灯、智能卡、rfid标签等等。

本发明的一方面涉及密钥生成设备,其被配置成生成用于在公共密钥加密设备中使用的公共密钥和用于在私人密钥解密设备中使用的对应的私人密钥。密钥生成设备包括私人密钥生成器和公共密钥生成器。私人密钥生成器被配置用于以电子形式获得私人随机值并生成私人密钥,私人密钥包括私人随机值。公共密钥生成器被配置用于:以电子形式获得二元多项式的公共集合,通过对通过将私人随机值代入(substitute)公共集合的多项式而获得的一元多项式求和来计算公共一元多项式,并且生成公共密钥,公共密钥包括公共一元多项式和公共集合。

在密钥生成设备的实施例中,二元多项式的公共集合仅包括对称的二元多项式。

在密钥生成设备的实施例中,二元多项式的公共集合包括至少两个不同的二元多项式。

当两个二元多项式是相同的时候,假定其基础环(underlyingring)例如局部约简整数(localreductioninteger)是不同的,也可以使用该系统。

在密钥生成设备的实施例中,公共集合的至少一个多项式在所述至少一个多项式的两个变量之一中具有至少2的阶数(degree)。

在密钥生成设备的实施例中,采用正则形式(canonicalform)将公共一元多项式表示为公共一元多项式的系数的列表。

在密钥生成设备的实施例中,不同的交换环(commutativering)与二元多项式的公共集合的每一个多项式相关联,以及其中通过将私人随机值代入公共集合的特别多项式而获得的一元多项式在与特别一元多项式相关联的交换环中被约简(reduce)至正则形式。

在密钥生成设备的实施例中,公共全局约简整数与公共集合相关联,并且公共个别(individual)约简整数与公共集合的每一个多项式相关联,私人随机值是整数,公共集合中的每一个多项式是具有整数系数的二元多项式,公共一元多项式是具有整数系数的一元多项式。公共个别约简整数也被称为局部约简整数。

有用的是:公共个别约简整数都是不同的,因为如果其之中的两个是相等的话,公共集合可以被简化为具有较少的多项式。然而,如果一些或所有的公共个别约简整数是相等的话,该系统将正确地工作,但是具有从具有较少多项式的较小系统中可以期望的安全性。

计算公共一元多项式包括:通过对于公共集合的每一个多项式将私人随机值代入所述多项式和降模(reducemodulo)与所述多项式相关联的公共个别约简整数,获得一元多项式的集合,并且对一元多项式的集合求和以及降模全局约简整数。

在密钥生成设备的实施例中,公共全局约简整数是大于2(a+2)b-1和/或低于2(a+2)b的奇数,其中a代表公共集合中的多项式的两个变量之一中的最高阶数,而b代表密钥长度,并且对于每一个公共个别约简整数,公共全局约简整数减去所述公共个别约简整数是2的密钥长度次方(power)的倍数(multiple)(qi=n-βi2b,1≤βi<2b)并且小于2的密钥长度的两倍次方,以及其中计算对称密钥进一步包括降模2的密钥长度次方。在密钥生成设备的实施例中,公共全局约简整数是大于2(a+2)b-1且低于2(a+2)b的奇数。

本发明的一方面涉及公共密钥加密设备,用于使用公共密钥来加密电子消息,公共密钥包括公共一元多项式和二元多项式的公共集合。公共密钥加密设备包括对称密钥获得器(obtainer)、解密信息生成器和加密单元。

对称密钥获得器被配置用于以电子形式获得加密随机值并且通过将加密随机值代入公共一元多项式来计算对称密钥。对称密钥获得器可以被配置成:不仅评估多项式,而且还提取(take)b个最低有效比特。

解密信息生成器被配置用于:通过对通过将加密随机值代入公共集合的多项式而获得的一元多项式求和来计算解密一元多项式,以及生成解密信息,解密信息包括解密一元多项式。

加密单元被配置用于利用对称密钥来加密消息并将所述加密消息与解密信息相关联。

在公共密钥加密设备的实施例中,二元多项式的公共集合仅仅包括对称的二元多项式。

在公共密钥加密设备的实施例中,二元多项式的公共集合包括至少两个不同的二元多项式。

在公共密钥加密设备的实施例中,公共集合的至少一个多项式在所述至少一个多项式的两个变量之一中具有至少2的阶数。

在公共密钥加密设备的实施例中,采用正则形式将公共一元多项式表示为公共一元多项式的系数的列表,和/或采用正则形式将解密一元多项式表示为解密一元多项式的系数的列表。

在公共密钥加密设备的实施例中,不同的交换环与二元多项式的公共集合的每一个多项式相关联,以及其中已通过将私人随机值代入公共集合的特别多项式而获得的一元多项式在与特别一元多项式相关联的交换环中被约简至正则形式,并且通过将加密随机值代入公共集合的特别多项式而获得的一元多项式在与特别一元多项式相关联的交换环中被约简至正则形式。

在公共密钥加密设备的实施例中,公共全局约简整数与公共集合相关联并且公共个别约简整数与公共集合的每一个多项式相关联,加密随机值是整数,公共集合中的每一个多项式是具有整数系数的二元多项式,公共一元多项式和解密一元多项式是具有整数系数的一元多项式。

计算对称密钥包括将加密随机值代入公共一元多项式和降模全局约简整数。计算对称密钥也可以包括提取结果的b个比特,例如最低有效b比特。

计算解密一元多项式包括:通过对于公共集合的每一个多项式将私人加密值代入多项式和降模与所述多项式相关联的公共个别约简整数,获得一元多项式的集合,并且对一元多项式的集合求和以及降模全局约简整数。

在公共密钥加密设备的实施例中,公共全局约简整数是大于2(a+2)b-1和/或低于2(a+2)b的奇数,其中a代表公共集合中的多项式的两个变量之一中的最高阶数,而b代表密钥长度,以及对于每一个公共个别约简整数,公共全局约简整数减去所述公共个别约简整数是2的密钥长度次方的倍数(qi=n-βi2b,1≤βi<2b)并且小于2的密钥长度的两倍次方,以及其中计算对称密钥进一步包括降模2的密钥长度次方。在公共密钥加密设备的实施例中,公共全局约简整数是大于2(a+2)b-1且低于2(a+2)b的奇数。

在公共密钥加密设备的实施例中,生成解密信息包括从对称密钥中计算密钥确认数据来验证是否重建密钥等于所述对称密钥,解密信息包括密钥确认数据。

本发明的一方面涉及私人密钥解密设备,用于使用解密信息和私人密钥来解密加密消息,解密信息包括解密一元多项式,私人密钥包括私人随机值。私人密钥解密设备包括对称密钥获得器和解密单元。

对称密钥获得器被配置用于通过将私人随机值代入解密一元多项式来重建对称密钥。重建对称密钥也可以包括提取输出的b个比特例如最低有效b比特作为密钥k。

解密单元被配置用于利用所述重建对称密钥来解密加密消息。对称密钥也被称为“k”。

在私人密钥解密设备的实施例中,已由公共密钥加密设备使用由密钥生成设备生成的公共密钥获得解密信息。

在私人密钥解密设备的实施例中,采用正则形式将解密一元多项式表示为解密一元多项式的系数的列表。

在私人密钥解密设备的实施例中,私人随机值是整数。解密一元多项式是具有降模公共全局约简整数的整数系数的一元多项式。重建对称密钥包括将私人随机值代入解密一元多项式和降模公共全局约简整数。

在私人密钥解密设备的实施例中,公共全局约简整数是大于2(a+2)b-1和/或低于2(a+2)b的奇数,其中a代表公共集合中的多项式的两个变量之一中的最高阶数,而b代表密钥长度。在私人密钥解密设备的实施例中,公共全局约简整数是大于2(a+2)b-1且低于2(a+2)b的奇数。

计算对称密钥进一步包括降模2的密钥长度次方。

在私人密钥解密设备的实施例中,重建对称密钥包括:从将私人随机值代入解密一元多项式和降模公共全局约简整数的结果中导出第一重建密钥,以及从密钥确认数据中确定是否第一重建密钥等于对称密钥,而如果否的话,从第一重建密钥中导出进一步重建密钥。

在私人密钥解密设备的实施例中,导出进一步重建密钥包括将公共全局约简整数或公共全局约简整数的倍数添加至第一重建密钥和降模2的密钥长度次方。

加密系统的实施例使用多项式环。尤其:在密钥生成设备的实施例中,公共全局约简多项式与公共集合相关联并且公共个别约简多项式与公共集合的每一个多项式相关联,私人随机值是多项式,公共集合中的每一个特别多项式是具有从多项式环模(modulo)与特别多项式相关联的公共个别约简多项式中提取的系数的二元多项式,并且公共一元多项式和解密一元多项式具有多项式系数。

在公共密钥加密设备的实施例中,公共全局约简多项式与公共集合相关联并且公共个别约简多项式与公共集合的每一个多项式相关联,加密随机值是多项式,公共集合中的每一个特别多项式是具有从多项式环模与特别多项式相关联的公共个别约简多项式中提取的系数的二元多项式,并且公共一元多项式和解密一元多项式具有多项式系数。

在私人密钥解密设备的实施例中,私人随机值是多项式,并且解密一元多项式具有多项式系数。

本发明的一方面涉及密钥生成方法,其被配置成生成用于在公共密钥加密方法中使用的公共密钥和用于在私人密钥解密方法中使用的对应的私人密钥。

本发明的一方面涉及公共密钥加密方法,用于使用公共密钥来加密电子消息。

本发明的一方面涉及私人密钥解密方法,用于使用解密信息和私人密钥来解密加密消息。

根据本发明的方法可以在计算机上被实现为计算机实现的方法或者在专用硬件中或在二者的组合中进行实现。用于根据本发明的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的示例包括存储设备、光存储设备、集成电路、服务器、在线软件等等。优选地,计算机程序产品包括存储在计算机可读介质上的非临时程序代码装置,用于当所述程序产品被执行在计算机上时执行根据本发明的方法。

在优选实施例中,计算机程序包括适于当计算机程序运行在计算机上时执行根据本发明的方法的所有步骤的计算机程序代码装置。优选地,计算机程序被收录在计算机可读介质上。

附图说明

本发明的这些与其他方面从下文描述的实施例中是显然的并将参考这些实施例来阐明。在附图中,

图1是加密系统400的示意框图;

图2是加密系统430的示意框图;

图3是集成电路500的示意框图;

图4是内存布局的示意框图;

图5是加密系统600的示意框图;

图6a是密钥生成方法700的示意流程图;

图6b是加密方法710的示意流程图;

图6c是解密方法730的流程图。

应注意:在不同的附图中具有相同的参考号的项具有相同的结构特性和相同的功能或者是相同的信号。如果已解释这样的项的功能和/或结构,则没有必要在详细描述中重复其解释。

具体实施方式

虽然这个发明易受采用许多不同形式的实施例的影响,但是在附图中显示并将在本文详细描述一个或多个特定实施例,并且明白:本公开将被视为本发明的原理的示范且不旨在将本发明限于所显示和所描述的特定实施例。

图1是加密系统400的示意框图。加密系统400包括密钥生成设备100、公共密钥加密设备200和私人密钥解密设备300。公共密钥加密设备200也将被称为加密设备200。私人密钥解密设备300也将被称为解密设备300。

密钥生成设备100被配置成生成用于在加密设备200中使用的公共密钥126和用于在解密设备300中使用的对应的私人密钥114。在使用公共密钥126的情况下,加密设备200能够加密消息410,即预期用于解密设备300的数据,以获得加密消息422。除了加密消息422之外,加密设备200也产生解密信息424。如果使用私人密钥114、加密消息422和公共一元多项式124,解密设备300能够解密解密信息424,以便再次获得消息410。这个加密和解密系统是所谓的非对称加密,也被称为公共-私人密钥加密。与对称加密相对比,公共密钥的知识并不暗示私人密钥的知识。这意味着:访问公共密钥的任何设备能够加密消息,但是只有访问私人密钥的设备才能解密消息。这反过来暗示:能够将不同的安全策略应用于公共与私人数据。例如,在一些应用中,公共密钥被公布,以致它不是秘密的,而私人密钥被保持为秘密的。例如,私人密钥可能只是对于解密设备300和密钥生成设备100或者对于一个或多个信任方而言是已知的。

形容词公共的和私人的使用旨在帮助理解:甚至利用对于所有公共数据的访问,在给出应用的安全性的情况下或者与密钥生成、加密和解密所需的资源相比而言,至少利用不合理的高资源,也不能计算私人数据。然而,“公共的”并不意味着:必定使得对应数据可用于除了密钥生成设备100和加密设备200之外的任何人。尤其,使得公共密钥和其他公共数据对于不受信任方来说是秘密的增加安全性。

密钥生成设备100、加密设备200和解密设备300可以是加密系统400中仅有的三个实体。在图2中,加密系统400的配置被显示,其中具有多个私人密钥解密设备。图2显示私人密钥解密设备300和301,可以具有更多的私人密钥解密设备。在图2中,加密设备200从密钥生成设备100接收公共密钥126;并且解密设备300接收私人密钥114以及可能地接收其他的公共数据诸如公共一元多项式124和参数诸如模量(moduli)。但是这只是说明性的示例,因为具有在也在本文显示的加密系统中分发密钥的其他方式。

利用图1继续:密钥生成设备100包括私人密钥生成器110和公共密钥生成器120。

私人密钥生成器110被配置成以电子形式获得私人随机值112,其也被称为s。私人随机值112在其对于攻击者的可预测性小于预定安全边界(bound)的意义上是随机的。例如,私人随机值112可以由密钥生成设备100使用在密钥生成设备100中包括的随机数生成器(未单独显示)来选择。随机数生成器可以是真随机数生成器或伪随机数生成器。私人密钥生成器110使用私人随机值112生成私人密钥114。私人密钥114是包括私人随机值112的电子数据。例如,私人密钥114可以是包括私人随机值112的数据结构。私人密钥114可以包含其他数据诸如私人密钥114的有效日期范围、私人密钥114的可允许使用等等。

与一些其他的非对称密码术相比而言,由密钥生成设备100使用的非对称加密方案对私人随机值112施加非常小的要求。例如,rsa密钥生成要求其私人密钥包括两个质数,其是资源密集来计算的。

私人随机值112可以基于身份(identity)。例如,密钥生成设备100可以包括存储秘密密钥的秘密密钥存储器(未在图1中显示)。秘密密钥能够是某非对称加密方案的公共密钥或对称密钥。私人密钥生成器110可以被配置成通过获得比方说接收或生成解密设备300的身份比方说身份号码并加密身份来获得私人随机值112。在给出身份号码的情况下,密钥生成设备100能够通过再次加密身份来再生解密设备300的私人密钥。这个系统例如适合于这样的情形,其中比方说为了产品召回、取证等等,稍后可能需要针对设备300上的数据的访问,即使私人密钥被丢失或在解密设备300上是不可访问的。如果具有多个私人密钥解密设备,例如,如在图2中,密钥生成设备100能够重建多个解密设备的私人密钥而不必存储密钥的数据库。设备300的身份可以被包括在公共密钥126和/或私人密钥114中。

公共密钥生成器120被配置成以电子形式获得二元多项式122的公共集合,其在公式中也被称为fi(,)。下述的实施例假定:集合122中所有的二元多项式是对称的。使用对称多项式带来许多益处。首先,它们要求较少的系数来指定并因而使用较少的资源。第二,它们简化记账,其中非对称多项式密钥生成和解密使用这些多项式的两个变量之中的第一变量来代入,而加密使用这些多项式的两个变量之中的第二变量来代入。

也可以将对称的二元多项式以符号表示为fi(x,y),其中两个形式变量为占位符。对称的二元多项式满足fi(x,y)=fi(y,x)。这个要求转化为对于系数的要求,例如单项式xayb的系数等于单项式xbya的系数。

公共集合122可以采用许多方式来获得。例如,公共集合122可以例如利用确定将在密钥生成设备100中使用的加密的标准来规定。在那种情况下,只有不同设备的公共密钥才不同,因为它们是使用不同的私人随机值112生成的。使用固定的公共集合122减少在解密设备300上的通信和/或存储开销。

对于不同的解密设备300使用不同的公共集合122增加安全性。例如,公共集合122可以通过为公共集合122中的多项式的系数计算随机值来随机地生成。方便的是规定公共集合122的一些方面,诸如公共集合122中的多项式的数量和多项式的阶数或最大阶数。也可以规定:多项式中的一些系数是零,例如,以便降低存储要求。

公共集合122中多项式的数量可以取决于应用来不同地选择。公共集合122包括至少一个对称的二元多项式。在密钥生成设备100的实施例中,该集合由一个多项式构成。在公共集合122中仅具有一个多项式降低复杂度、存储要求并增加速度。然而,与在公共集合122中具有两个或更多的多项式相比而言,在公共集合122中仅具有一个多项式被认为不太安全,因为这样的一个多项式系统没有获利于下述的求和中的附加混合。然而,密钥生成、加密和解密将正确地工作并被认为对于低价值(low-value)和/或低安全性应用而言是足够安全的。

在其余部分中,我们将假定:公共集合122包括至少两个对称的二元多项式。在实施例中,至少两个或甚至所有的多项式是不同的,这大大地复杂化系统的分析。虽然这不是必要的,但是公共集合122可以包括两个相等的多项式并且仍然受益于求和步骤中的混合,如果这两个多项式在不同的环上被评估,这一点将在下面进一步进行讨论。在实施例中,公共集合122包括与不同的环相关联的至少两个相等的多项式。具有两个或更多的相等的多项式降低存储要求。

公共集合122中的多项式可以具有不同的阶数。利用对称的二元多项式的阶数,我们将意指在两个变量之一中的多项式的阶数。例如,x2y2+2xy+1的阶数等于2,这是因为x中的阶数是2。因为公共集合122中的多项式是对称的,所以阶数在其他变量中将是相同的。

公共集合122中多项式的阶数可以取决于应用来不同地选择。公共集合122包括阶数1或更高的至少一个对称的二元多项式。在实施例中,公共集合122只包括阶数1的多项式。在公共集合122中仅具有线性多项式降低复杂度、存储要求并增加速度。然而,与在公共集合122中具有相同数量的多项式而其中至少一个多项式具有至少2的阶数相比而言,在公共集合122中仅具有阶数一的多项式被认为不太安全,这是因为这样的系统是相当不太线性的。在实施例中,公共集合122包括至少一个、优选两个阶数2或更高的多项式。然而,密钥生成、加密和解密将正确地工作,如果只有阶数1的多项式被使用并且具有少量的二元多项式,这些二元多项式被认为对于低价值和/或低安全性应用而言是足够安全的。然而,注意:如果公共集合122中的多个多项式在不同的环上被评估,即使公共集合122中所有的多项式是线性的,由此产生的加密也不是线性的。由于线性多项式被有效评估,所以在实施例中公共集合122包括大量的线性多项式。实现对于高价值安全性应用而言仍被视为足够安全的有效的解决方案。

在能够与线性和非线性多项式二者一起使用的进一步实施例中,公共集合122由在不同的环上被评估的包括单个单项式的大量的二元多项式组成。这有益地具有小的公共密钥大小并被有效评估,同时提供足够的利用多项式的数量来缩放(scale)的安全性。

在公共集合122中具有阶数0的一个或多个多项式将不影响系统,只要具有较高阶数的(多个)多项式提供足够的安全性。

对于中间安全性应用而言,公共集合122可以包括或甚至由阶数2的两个对称的二元多项式构成。对于较高安全性应用而言,公共集合122可以包括或甚至由两个对称的二元多项式构成,其中一个具有阶数2,而一个具有高于2比方说3的阶数。增加多项式的数量和/或其阶数将以增加资源消耗为代价来进一步增加安全性。

公共密钥生成器120被配置成通过对通过将私人随机值112代入公共集合122的多项式而获得的一元多项式求和来计算公共一元多项式124。例如,公共密钥生成器120可以将私人随机值112代入公共集合122中的每一个对称多项式并约简结果。通过将特别值诸如私人值112代入对称的二元多项式的两个变量之一,但是对于另一变量不代入特别值,这些变量之一被移除并且一元多项式被获得。

在公共集合122中的代入之后,将这些结果带入(bringinto)正则形式是可取的。例如,一般而言,在密钥生成设备100和加密系统400内,可以使用一元多项式的正则形式。好的选择是将代入的结果写为按照单项式的阶数排序的系数的列表,例如写为阵列。如果值具有多重表示,也针对这些系数作出正则选择。

用于获得公共一元多项式124的一种方法如下。对于公共集合122中的每一个多项式:

将私人随机值112代入一个或多个变量的多项式,

将结果带入正则形式并在与该多项式相关联的环中约简,因而获得一元多项式,

对在进一步环中在1b中获得的所有的一元多项式求和,以获得公共一元多项式124。

这些步骤可以在很大程度上进行组合。

公共一元多项式124也可以根据正则形式被表示为系数的列表。许多应用的合适形式是在按照与系数相关联的单项式的阶数排序的阵列中列出这些系数。即,一元多项式可以被视为具有与单项式相关联的系数的单项式之和。再次,下面提供包括可能公式的示例。

公共密钥生成器120进一步被配置成生成公共密钥126。公共密钥126包括公共一元多项式124和公共集合122的表示。例如,公共密钥126可以是包括公共集合122和公共密钥124的数字表示的电子数据结构。另外,公共密钥126可以包括附加信息,类似于上述的私人密钥,例如,访问对应私人密钥的设备的身份。

在密钥生成设备100已生成私人密钥114和公共密钥126之后,它可以将私人密钥114分发至解密设备300并将公共密钥126分发至被配置成针对解密设备300加密消息的设备200。分发可以采用各种方式来完成,其中一些方式在下面进一步进行讨论或如图2所示。

作为示例,密钥生成设备100可以在制造工厂中被采用来制造某种类型的电子单元比方说照明单元,密钥生成设备100可以被配置成利用(可选的)不同的识别符和不同的私人密钥来配置每一个制造单元比方说照明单元,这些电子单元被安排有解密设备300。

例如,密钥生成设备100可以在包括加密设备200的管理设备中存储与电子单元的私人密钥相对应的公共密钥。管理设备被配置成发送利用恰当的公共密钥加密的技术数据,比方说命令。例如,管理设备可以利用与存储在单元上的私人密钥相对应的公共密钥来加密针对该单元的命令,比方说“接通”命令。由此产生的加密消息例如加密命令可以比方说利用所述识别符来寻址。即使管理设备受到损害并且攻击者赢得对于其中存储的所有的公共密钥的访问,他也没有获得对应的私人密钥。

可以或可以不与前面示例进行组合的密钥生成设备100的另一应用是生成公共密钥-私人密钥配对并利用公共密钥来配置每一个制造单元比方说照明单元,且利用私人密钥来配置管理设备。电子单元被安排有加密设备200。如果使用其设备200,电子单元诸如照明单元能够以加密的形式发送消息诸如状态消息至管理设备。许多电子设备可以访问公共密钥,并因而这个密钥可能泄漏且对于攻击者而言变成以某种方式可访问的。然而,因为该数据是公共的,所以其并没有使之能够获得私人密钥。管理设备被安排有解密设备200。

图1的顶部在框100、200和300的顶部示意性地举例说明公共密钥126至加密设备200的分发以及公共密钥126和私人密钥114至解密设备300的分发。

加密设备200被配置成使用包括公共一元多项式和对称的二元多项式的公共集合的公共密钥126来加密电子消息410。尤其,加密设备200被配置成使用由密钥生成设备100生成的公共密钥126。

加密设备200包括对称密钥获得器210、加密单元230和解密信息生成器220。

对称密钥获得器210被配置成以电子形式获得加密随机值212。加密随机值212也被称为r。加密随机值212在其对于加密消息的攻击者的可预测性小于安全边界的意义上是随机的。对于每个消息可以使用不同的加密随机值212,但是这不是必要的。多个消息可以使用相同的加密随机值212来加密。对称密钥获得器210被配置成通过将加密随机值212代入从公共密钥126获得的公共一元多项式124来获得对称密钥214。对称密钥214也被称为k。可以在环中评估代入。

加密随机值212是秘密的,即,至少对于不被信托消息410的内容的各方而言是秘密的。解密设备300不需要加密随机值212。在加密设备200的实施例中,加密随机值212在生成加密消息422和解密信息424之后例如此后立即被删除。

加密消息422和解密信息424可以通过在消息块420中组合它们来相关联。它们也可以单独被发送。

即使新的加密随机值212可以针对每个消息来选择,私人密钥114和公共密钥126也有可能在多个消息上是相同的。取决于安全性要求,在某点上新的密钥可以比方说在超过预定数量的消息已利用私人密钥114解密之后被分发。如果所述预定数量的解密已被用完,解密设备300可以拒绝利用同一私人密钥114的附加解密。这个措施防止试图通过使得解密设备300解密专门构造的消息块420来吸引(attract)有关私人随机值112的信息的尚未知的攻击。为此,解密设备300可以包括用于对利用私人密钥114解密的消息的数量进行计数的计数器和用于在计数器超过预定数量时阻止使用私人密钥进行解密的阻止单元。例如,阻止单元可以被配置成从解密设备300中删除私人密钥114。

获得对称密钥214也可能牵涉其他的步骤。例如,散列(hash)函数可以被应用于对称密钥214。这平滑对称密钥214中的熵并且例如在加密随机值212的分发不是均匀的或已知是均匀的时候可以改善安全性。并且,对称密钥214可以被截短(truncate)至密钥长度。例如,可以提取代入的结果的b个最低有效位并截短。

加密单元230被配置成利用对称密钥214来加密消息410以获得加密消息422。加密单元230可以被配置有任何对称加密算法。例如,加密单元230可以使用块密码(blockcipher)诸如aes、cast等等,其使用合适的“操作模式”用于加密,诸如cbc或ctr。如果已知消息410具有的比特大小小于或等于对称密钥214的比特大小,也可以利用消息410来添加或xor(异或)对称密钥214。

解密信息生成器220被配置成通过对通过将加密随机值212代入公共集合122的多项式而获得的一元多项式求和来计算解密一元多项式222。这个步骤可以使用与计算公共一元多项式124相同的实现方式,除了使用加密随机值212而非私人随机值112之外。解密信息生成器220进一步被配置成生成解密信息424。解密信息包括解密一元多项式222。解密信息可以只包括解密一元多项式222,但是也可以包括附加信息,诸如发送者信息和/或电子签名。

解密信息生成器220可以采用正则形式将解密一元多项式表示为解密一元多项式的系数的列表。用于公共一元多项式124的相同类型的正则形式可以用于解密一元多项式222。尤其,解密一元多项式222可以被表示为按照多项式的阶数分类(sort)的解密一元多项式222的单项式的系数的列表。解密一元多项式222或公共一元多项式124也可以被表示为配对的列表,每个配对包括单项式的系数和阶数。在这个表示中,具有零系数的单项式不需要被表示。后一表示也适合于公共集合122中的稀疏(sparse)多项式。

除了加密之外,加密单元230也被配置成将加密消息422与解密信息424相关联。这可以采用许多方式来完成。例如,通过将加密消息422和解密信息424嵌入同一单个消息、例如通过利用解密信息424扩展加密消息422,可以一起相关联加密消息422和解密信息424。加密消息422和解密信息424并不需要必定是同一消息的一部分。例如,加密消息422和解密信息424可以各自与包含相同识别符的报头(header)进行组合,通过相同的标识符,这两个消息被相关联。加密设备200可以比解密信息424更早发送加密消息422给解密设备300。以这种方式,加密设备200提交(committo)消息410但是还不允许解密设备300读取消息410。在稍后的时间点上,加密设备200可以发送解密信息424至解密设备300来揭示其内容。提交消息却不揭示其内容是基本密码原语(primitive),这使得系统可应用于各种各样的密码算法,诸如电子投票系统。有趣地,在本文描述的公共密钥加密系统允许访问加密设备200的一方提交值,稍后通过发送解密信息来揭示该值,但是不揭示私人密钥。

加密设备200可以接收消息410作为输入并产生消息块420作为输出,如在图1的底部所指示的。这些元素也被显示在加密设备200和解密设备300的内部。时常,消息410将在加密设备200的内部被生成,比方说作为自动生成的消息,诸如状态消息。

加密设备200比方说对称密钥获得器210可以被配置成从对称密钥214(k)中计算密钥确认数据来验证是否由解密设备300重建的重建对称密钥312(k')等于对称密钥214。密钥确认数据能够采取各种形式。例如,密钥确认数据可以是对称密钥214上的密码散列,比方说sha-256。为了验证是否重建对称密钥312等于对称密钥214,解密设备300可以计算重建对称密钥312上的散列并验证是否这些散列是相同的。密钥确认数据也可以包括输入上的加密。为了验证是否重建对称密钥312等于对称密钥214,解密设备300可以利用重建对称密钥312来加密输入并验证是否这些加密是相同的或解密当前输入并验证是否它等于输入。输入可以是密钥确认数据的一部分,例如,输入可以是随机数(nonce)或甚至随机的。输入也可以是固定的,在后一种情况下,输入不需要是密钥确认数据的一部分。密钥确认数据可以被包括在解密信息424中。

解密设备300被配置用于使用解密信息424和私人密钥114来解密加密消息422。解密设备300可能需要公共数据的一部分,例如全球模量(globalmodulus),在下面提供有关此的更多信息。例如,解密设备300可以接收公共密钥126,但是解密设备300不需要其所有部分。尤其,解密设备300不需要为了解密而访问公共集合122。

由解密设备300使用的解密信息424和私人密钥114可以分别由加密设备200或密钥生成设备100来生成。解密信息424包括解密一元多项式222,并且私人密钥114包括私人随机值112。

解密设备300包括对称密钥获得器310和解密单元320。

对称密钥获得器310被配置成获得重建对称密钥312。重建对称密钥312是基于用于加密消息410的对称密钥214的解密信息424的重建。解密单元320被配置成利用重建对称密钥312来解密加密消息。解密单元320被配置成使用与用于加密消息410的加密算法相对应的解密算法。例如,如果消息410使用aes来加密,则解密单元320将使用aes来解密。将使用的加密和解密算法可以是固定的。例如,加密设备200和解密设备300可以被配置成总是使用aes。但是,将使用的加密/解密算法也可以是可配置的。例如,解密信息424可以包括指示用于加密消息410的加密算法的信息。解密设备300可以被配置成依赖于所述指示来选择用于解密加密消息422的解密算法。

对称密钥获得器310被配置成通过将私人随机值114(s)代人解密一元多项式222来重建重建对称密钥312。这个步骤将有可能产生加密密钥。不幸地,并不保证:对称密钥214将通过将私人密钥114代入解密一元多项式222而直接获得。这个的似然性取决于公共集合122中多项式的数量、其阶数和基础环。似然性可以通过将私人密钥114代入表示公共集合122的一般公式并计算使得重建密钥312失真的进位(carry)和对称密钥214是相同的似然性来计算。

取决于所述似然性和应用,密钥确认数据的重要性不同。一些应用可以接受:偶尔,解密设备300可能不能解密一些消息,因为其未能正确地重建密钥。如果需要的话,解密设备300能够请求加密设备200再次发送但是利用不同的加密随机值212重新加密的消息。

然而,也有可能解密设备300构造多个密钥,并通过使用密钥确认数据验证多个密钥来从多个密钥中确定重建对称密钥312。多个密钥之中至多一个密钥能够使用密钥确认数据来正确地验证。

构造的密钥的数量和针对系统、尤其针对公共集合122和基础环作出的选择影响解密设备300无法构造等于对称密钥214的密钥的概率。我们将在下面显示:概率可以被减至零,如果需要的话。

生成多个构造密钥优选迭代地来完成。例如,对称密钥获得器310可以如下被配置用于密钥搜索:

从在解密一元多项式中代入私人随机值(s)的结果中导出第一重建密钥(k'),

从密钥确认数据中确定是否第一重建密钥(k')等于对称密钥214(k),

如果相等的话,则终止密钥搜索,

生成进一步重建密钥,第一重建密钥(k'),

转至步骤2。

这个密钥搜索的实现方式可以使用各种编程手段诸如for-nextloops、whileloops、do-until等等来完成。步骤3也可以在超时(time-out)的情况下终止。

密钥生成设备100和解密设备300可以被组合在单个设备中,这避免私人随机值112离开解密设备300的界限(confine)。加密设备200和解密设备300可以例如被组合在加密的备用系统中。密钥生成设备100、加密设备200和解密设备300可以是有可能地理上分布的不同设备。加密设备200和解密设备300可以在通信网络上彼此通信。密钥生成设备100可以使用通信网络来分发密钥信息,但是也可以使用出界(out-of-bound)手段比方说可信位置中的有线连接、使用便携式存储设备诸如usb棒的运送等等。

有趣地,构成私人密钥114、公共一元多项式124、对称密钥214、解密一元多项式222和重建对称密钥312的计算的基础的计算系统可以采用许多方式来选择。例如,二元多项式和一元多项式的系数以及包括私人随机值112和加密随机值212的值可以从所谓的交换环中进行选择。交换环是其中集合的值利用加法和乘法进行组合的数学概念。

倘若公共集合122包括多个多项式,发明人的见识是:通过将不同的交换环与公共集合122的每一个多项式相关联,获得改善的混合效应和单向性(one-way-ness)二者。公共密钥生成器120和解密信息生成器220被配置成分别将私人随机值112或加密随机值212代入公共集合122的每一个多项式并在与之相关联的环中约简每一个多项式。优选地,每一个多项式也被带入正则形式。

在公式形式中,分别地对于私人随机值112或加密随机值212而言,这可以被表示为σi[fi(s,)]ri或σi[fi(r,)]ri。在这些公式中,多项式fi(,)与环ri相关联。方括号指示在指示的环中至正则形式的约简。求和本身可以发生在全局环ro(未显示在公式中)。计算对称密钥214和重建对称密钥312也可以在全局环中进行执行,有可能其后跟随着附加的处理诸如截短至密钥长度(b)(以比特为单位)。对于与公共集合122的多项式相关联的每个局部环,可以具有用于在求和之前将环的元素映射至全局环的映射函数。在许多实施例中,映射是自然映射:用于在局部环中表示值的比特图案(bit-pattern)被映射至具有相同比特图案的全局环的值;换句话说,不需要执行实际的计算动作来完成映射。

被用作与公共集合122中的多项式相关联的环之一或被用作全局环的环如下被实现在比方说系统400中。环的值在电子设备100、200和300中采用数字形式来表示,并且对于这些值的加法和乘法运算被实现为数字算法。这些算法可以采用软件或采用硬件来实现。有可能与软件相组合,时常使用这些运算的硬件表示。环可以具有用于以独特形式表示环的值的正则化算法。

具有可以采用数字形式来表示的许多交换环。两个重要的示例是多项式环和整数环。下面,我们基于整数环给出工作示例,其中每个ri被选择为qi,即,整数模qi的交换环,并且ro被选择为n,即整数模n的交换环。这些环允许其值作为数字表示的整数例如分别作为从0到qi-1或到n-1的整数的数字表示。多项式可以被表示为以这种形式表示的值的阵列。加法算法可以被实现为其后跟随着降模模量的软件实现方式的整数加法的硬件实现方式。乘法可以被实现为其后跟随着降模模量的软件实现方式的整数乘法的硬件实现方式。许多交换环和数字表示本身在本领域中是已知的。这样的数字表示的应用来以本文所述的方式获得公共-私人密钥加密系统并不是已知的。

在加密系统400的实施例中,公共全局约简整数(n)与公共集合相关联,并且公共个别约简整数(qi)与公共集合的每个多项式相关联。相关联的信息可以被包括在公共密钥126中或可以是固定的。在实施例中,公共全局约简整数是固定的,并且不需要被包括在公共密钥中,但是公共个别约简整数(qi)不是固定的并且可以与公共集合122一起来生成。取决于安全性要求、正确解密的似然性等等,这些数字可以被随机选择。下面给出针对这些数字的可能选择。公共个别约简整数之中的至少两个是不同的,优选地所有的公共个别约简整数是不同的。

私人密钥生成器110被配置成生成私人随机值112作为在0与全局公共全局约简整数(n)之间的整数。对称密钥获得器210被配置成生成加密随机值212作为在0与全局公共全局约简整数(n)之间的整数。

私人密钥生成器110被配置成获得公共集合122中的多项式作为具有整数系数(fi(,))的对称二元多项式。不要求公共集合122中的多项式具有被降模相关联的公共约简整数的系数,例如这些系数能够是较大的或负的。然而,对于实现方式而言,方便的是:公共集合122的多项式采用正则形式,比方说具有在0与相关联的公共约简整数(qi)减一之间的系数(包括在内)。

公共密钥生成器120被配置成生成公共一元多项式作为具有整数系数的一元多项式。解密信息生成器220被配置成生成解密一元多项式作为具有整数系数的一元多项式。

例如,公共密钥生成器120可以被配置成通过以下来生成公共一元多项式:

通过以下获得一元多项式的集合:

对于公共集合的每个多项式,

将私人随机整数(s)代入所述多项式(fi(s,)),并且降模与所述多项式相关联的公共个别约简整数(qi),以及

对一元多项式的集合求和,以及降模全局约简整数(n),

将解密信息生成器220配置成生成解密一元多项式可以同样来完成,除了使用加密随机值212而非私人随机值112之外。

对称密钥获得器210被配置成通过将加密随机值(r)代入公共一元多项式并降模全局约简整数(n)来计算对称密钥(k),提取结果的最低密钥长度数量(b)的比特。

作为示例,公共全局约简整数(n)可以被选择为大于2(a+2)b-1和/或低于2(a+2)b的奇数,其中a表示公共集合中的多项式的两个变量之一中的最高阶数,而b表示密钥长度。对于每个公共个别约简整数(qi),公共全局约简整数(n)减去所述公共个别约简整数(qi)是2的密钥长度次方的倍数(qi=n-βi2b,1≤βi<2b)并且小于2的密钥长度的两倍次方。参数的这个特别选择是充分混合与解密设备能够重建密钥的高概率之间的权衡。其他的选择是可能的。

在这种情况下,计算对称密钥(k)进一步包括降模2的密钥长度次方(2b),即截短至仅提取代入结果的最后b个比特。

对称密钥获得器310可以被配置成通过将私人随机值(s)代入解密一元多项式并降模公共全局约简整数(n)和降模2的密钥长度次方(2b)来重建对称密钥(k)。

在这个实施例中,有可能的是:仅从代入步骤中获得的密钥还不等于对称密钥214。检测是否重建密钥等于用于加密的密钥可以使用密钥确认数据。密钥确认也可以是隐式的,例如,消息410可以采用特别的形式,其在利用不同的密钥解密时不被获得。

如果用于密钥k的密钥确认数据(例如h(k))不同于用于散列函数h的h(k'),解密设备300可以计算可以仍然获得正确的密钥。为此,解密设备300从k'中计算针对j的范围的值<k'+jn>2b及其密钥确认值(例如,散列值)。这些密钥确认值之中至多一个等于密钥确认值,例如散列值h(k)。如果那个索引j被找到,解密设备300使用j的那个值并计算k为<k'+jn>2b,其中角括号标记模运算。如果这样的j没有被找到,则解密设备300不能解密数据。在后一种情况下,解密设备300具有若干选项,例如生成错误消息、请求利用不同的加密随机值212的重新加密等等。有趣地,私人随机值112仅被需要来计算初始k',其他的计算使用公共全局约简整数(n)。

以下算法可以被使用。对称密钥获得器310可以如下被配置用于密钥搜索:

从将私人随机整数(s)代入解密一元多项式的结果中导出第一重建密钥(k'),

从密钥确认数据中确定是否第一重建密钥(k')等于对称密钥214(k),

如果相等的话,则终止密钥搜索,

通过对于j的新的非零值来计算<k'+jn>2b,生成进一步重建密钥,第一重建密钥(k'),

转至步骤2。

步骤3也可以在超时的情况下终止。例如,在一些资源受到约束的设备上,可以花费在密钥重建上的时间量受到限制。

典型地,这些设备100、200和300各自包括执行存储在设备上的恰当软件的微处理器(未显示),例如,其中软件可能已被下载并被存储在设备的对应存储器例如ram(未显示)中。

下面,给出系统的实施例的数学描述。首先选择安全参数:比特长度b,公共集合中多项式的数量m,和公共集合中的最大阶数a。比特长度b确定对称加密中的密钥长度。增加其他两个参数则增加系统的复杂性。这三个参数可以是固定的,例如由系统架构师来确定,或者可以利用密钥生成设备100来选择。此外,密钥生成设备100选择形式qi=n-βi2b的间隔(2(a+1)b,2(a+2)b)中的奇数n,m整数qi,1≤i≤m,具有满足1≤βi<2b的整数βi和m个阶数a的对称二元多项式:

,其中(fi)jk=(fi)kj和0≤(fi)jk<qi

因为对称性,所以只有其中j≤k的那些(fi)jk需要被指定。密钥生成设备100在范围1≤s<2b中选择秘密的私人整数s(112)并且通过计算(a+1)个数字来计算公共一元多项式125:

,对于

利用密钥生成设备100生成的公共密钥由所有的上面参数组成,除了s之外。在这个特别实施例中,密钥生成设备100也指定散列函数h。加密设备200在1≤r<2b中选择随机整数r,并且通过计算(a+1)个数字来计算解密一元多项式222:

,对于

以及数字

以及密钥确认数据,诸如k的散列h(k)。加密设备200发射bk以及h(k)和数字c=<m+k>2b,其中m是b比特明文消息,其将被从密钥生成设备100发送至解密设备300。加密设备200也可以使用其他的加密算法来通过利用k加密m来获得c,而不是添加k。

解密设备300计算:

以及散列值

,对于

解密设备300找到j',以致hj'=h(k)并且检索k作为<k'+j'n>2b。解密设备300现在检索发射的消息m作为m=<c-k>2b。解密设备300也可以使用其他的与加密算法相对应的解密算法来通过利用k解密m来获得m,而不是减去k。

该方案的安全性取决于在给出系数ak和(fi)jk的情况下找到s的困难。对于m>1和a>1,这样做的一种方式是尝试s的所有可能的值,其在b是足够大的时候是不可行的。b=128或更大的值是如此大的,以致尝试s的所有可能的值是不可行的,即,暴力攻击被排除。然而,一些应用并不要求绝对的不可行性。在那种情况下,b=48或更大的值可能已是足够的。

对于m=1,系数ak是环zq1中s的多项式。这样的系统有可能由于适配求根算法而可能受到攻击。虽然这当然不是容易的任务,但是对于所有的安全性应用,推荐选择m>1。

对于m>1和a>1,找到s的另一方案是将该方案映射至与m和a成比例的维度(dimension)的特定格子(lattice)中所谓的closestvectorproblem(最近矢量问题)。对于对称的二元多项式,这个维度具有在二元多项式具有至少(a+1)(a+2)/2不同的非零系数和至少(a+1)(a+1)非零系数时实现的(m+1)(a+1)的上界以及在所有的二元多项式是相同阶数的单项式时具有m+1的下界。用于解决closestvectorproblem的所有已知算法或花费随着格子维度呈指数增长的时间量或犯能够随着格子维度呈指数增长的错误。已发现:在大维度的格子中closestvectorproblem是不可行的。stehlé曾报告:大多数已知的分析算法在维度达到180时开始失败。发明人曾发现:对于非常大的维度,发现维度500满足这个要求,现有的分析算法或完全不工作或不可行地缓慢。作为进一步优势,基于格子的问题诸如closestvectorproblem比基于经典问题诸如整数分解的现有密码算法更难以利用即将到来的量子计算机来分析。

在这个实施例中,排除b、m、a和散列函数的指定之外,产生密钥生成设备100的公共密钥的大小是:

比特。

b、m、a和散列函数的指定可能不需要,例如如果它们在系统中是固定的话。假定散列函数h输出f比特,用于发射b比特消息m的密文加密消息422是:

比特。

在上面的实施例中,添加k和m已被用作加密。这是合适的选择,例如,如果系统被应用于相对短的消息诸如命令消息。这个结构也可以被用于加密第二对称密钥,其反过来被用于加密m。上面的结构也可以与其他的对称加密比方说块密码(blockcipher)诸如aes比方说aes-128一起使用。

上面的描述可以采用许多方式来改变。下面描述许多可能的变体。

例如,除了当j=k=a时,解密信息424的大小可以大大地被减小,如果我们要求所有的多项式系数(fi)jk是零的话。这减小公共密钥的大小,但是更重要地,其暗示:加密设备200只需要发射单个bk,即ba,以致密文的大小减至(a+4)b比特。

在给出k时找到秘密密钥s的问题现在简化为从单个等式中求解s:

如果m>1,a>1,这仍然是难题。

将c形成为<m+k>2b是好的选择,因为k的差不多均匀分布保证:即使消息m没有被均匀分布,c也(几乎)被均匀分布。其他可能的选择包括c=fk(m)和m=fk-1(c),对于任何的1参数集合的可逆函数,例如:

fk(m)=<am+bk>2b,对于给定的奇数a、b

fk(m)=k·m,其中加密设备200必须拾取其随机数r,以致k(s,r)≠0

fk(m)=k+m。

加密系统400和系统430可以被配置有可供选择的计算系统,用于执行乘法和加法,其也被称为“环”中的运算。认为:交换环是优选的。虽然环一般是可应用的,但是为了可读性,针对多项式环给出下面的示例。多项式环如同整数环一样是交换环的示例。与上述系统的重要区别是:多项式的系数、加密随机值和私人随机值是来自各种多项式环的元素。我们将使用“t”来指示所使用的所有多项式环的形式变量。

由于多项式环本身是已知的,所以下面只给出简要概述。我们考虑环zp[t],即变量t的多项式的环,其中这些多项式具有中的系数。这个环的元素是多项式,其中所有的ak∈zp并且该系列终止:具有k,以致所有的系数ak=0,对于k>k。利用deg(a(t))标记的a(t)的阶数是k的值,以致ak≠0和ak=0,对于所有的k>k。这定义zp[t]的所有元素的阶数,除了零多项式之外。“0”的阶数即零多项式是未定义的。

zp[t]中的两个多项式的加法可以被定义为,其中<·>p指示自变量被评估模p并位于zp中。注意:对于非零多项式a(t)和b(t),其中a(t)+b(t)≠0,以下成立:deg(a(t)+b(t))≤max(deg(a(t)),deg(b(t)))。

zp[t]中的两个多项式的乘法被定义为。注意:如果p是质数,对于非零多项式a(t)和b(t),以下总是成立:deg(a(t)·b(t))=deg(a(t))+b(t))。如果p不是质数,这不一定为真。我们在下面将假定p为质数。

假定q(t)是zp[t]中的非零多项式(对于质数p而言)。随后,任何多项式a(t)∈zp[t]能够独特地被写为a(t)=p(t)·q(t)+r(t),其中deg(r(t))<deg(q(t))。这里,p(t)是a(t)除以q(t)的结果,而r(t)是余数。这个余数利用<a(t)>q(t)或a(t)降模q(t)来标记。环被定义为零多项式和具有小于deg(q(t))的阶数的zp中的系数的t的所有多项式的集合。两个这样的多项式的加法与zp[t]中的加法相同,乘法与zp[t]中的乘法相同,其后跟随着降模q(t)。

在非负整数与p元多项式之间具有自然映射:多项式系数对应于整数的p元扩展中的数字,因此对应于多项式的整数能够通过将t=p代入多项式并且在z中评估它来获得:。注意:这个映射并不暗示降模多项式q(t)与整数降模q的等价性。例如,在z2[t]中,1+t2=(1+t)(1+t)成立,因此<1+t2>1+t=0,但是<1+22>1+2=<5>3=2≠0。

环r(q(t),p)的元素的集合仅取决于q(t)的阶数。这些元素的加法取决于p,因为多项式系数在zp中,但是与q(t)无关。另一方面,其乘法的结果取决于p和q(t)。

在环r(q(t),p)中具有定义的乘法和加法允许在这个环中定义多项式:其自变量是这个环的元素,其具有环价值的系数并且提取这个环中的值。有关r(q(t),p)的阶数a的二元多项式f(·,·)因而能够被写为:

其中求和(在zp[t]中)能够在模块化约简运算(modularreductionoperation)之外进行。我们甚至能够添加(在zp[t]中)在不同环r(q1(t),p)和r(q2(t),p),…,r(qm(t),p)中的多项式:

在所有以下实施例中,我们使用p=2,其比较容易在面向比特的设备上实现。然而,这不是限制,因为p的其他值也是可能的,尤其质数值。例如,251和65521是合适的选择,因为这些系数分别适合于(fitin)一字节和两字节。

如同在加密系统400和430中一样,密钥生成设备100包括私人密钥生成器110和公共密钥生成器120。公共密钥生成器120被配置成选择或否则以电子形式获得以下参数:

公共全局约简多项式阶数,被标记为m

密钥大小(b比特)

整数a,优选地a>1

安全参数“b”确定私人随机值和加密随机值的大小

整数m,优选地m≥2。

对于参数m的好选择是m=2a(b-1)+b-1和b=b。系统设计者可以选择这些参数并将其发送至密钥生成设备。此外,公共密钥生成器120被配置成选择或否则以电子形式获得以下参数:

公共全局约简多项式n(t)∈z2[t]。其阶数deg(n(t))等于m

公共个别约简多项式q1(t),…,qm(t)

在其两个变量之中的每一个变量的阶数a的二元多项式fi(,)的公共集合。在每个r(qi(t),2)中,二元多项式fi(·,·),具有系数

密钥大小(b)和参数大小(b)能够是不同的。选项是选择它们是相等的。

公共个别约简多项式qi(t)与公共集合中的每个多项式相关联,并且反之亦然。公共集合中的每个特别多项式fi(,)是具有从多项式环模与特别多项式fi(,)相关联的公共个别约简多项式qi(t)中提取的系数fi,j,k(t)的二元多项式。该多项式可以被标记为

选择公共个别约简多项式qi(t)的好方式如下:首先选择阶数b的多项式γ(t)∈z2(t);随后选择m个多项式β1(t),…,βm(t)∈z2(t),其全部具有至多等于m-a(b-1)-b的阶数并且至少一个(优选地,所有)具有大于m-2a(b-1)-b的阶数;随后定义m个多项式qi(t),…,qm(t),其中qi(t)=n(t)+βi(t)γ(t)。针对约简多项式的这个选择保证:私人密钥解密设备的对称密钥获得器直接从在解密一元多项式中代入私人随机值中获得由公共密钥加密设备使用的相同的对称密钥。注意:公共个别约简多项式的阶数的下限可以被取为-1。大于-1的阶数意味着:阶数应该至少为0。阶数随后必须至多等于alpha*(b-1)-1。在实施例中,至少一个或甚至所有的公共个别约简多项式具有至少2的阶数。

密钥生成设备以电子形式获得{0,1,……,2b-1}中的私人随机值s。并且,通过对通过将私人随机值(112,s)代入公共集合的多项式而获得的一元多项式求和来计算公共一元多项式:

注意:在非负整数与p元(在这种情况下,二元)多项式之间的自然映射已被用于映射s至s(t),即,利用s(t)的系数的s的二元扩展的系数。后者也能够被直接生成。

如前,公共密钥加密设备包括对称密钥获得器、解密信息生成器和加密单元。

对称密钥获得器被配置成以电子形式获得{0,1,……,2b-1}中的加密随机值r。加密随机值被代入公共一元多项式,

在此,结果被降模全局公共全局约简多项式并随后模γ(t)。这个代入和约简的结果是形式变量(t)中的多项式。可以采用各种方式从这个中获得对称密钥。例如,多项式可以使用自然映射被变换为数字。所映射的结果或系数串直接可以被散列。密钥约简、扩展、熵扩大等等可以在需要时被应用。加密单元使用对称密钥用于如前加密消息。

解密信息生成器被配置用于通过对通过将加密随机值(r)代入公共集合(122,fi(r,))的多项式而获得的一元多项式求和来计算解密一元多项式,并且

私人密钥解密设备包括对称密钥获得器和解密单元。

私人密钥解密设备根据以下来计算密钥k(r,s):

有趣地,这些参数保证:。有可能使用与加密设备相同的导数(derivation)的这个密钥可以用于解密密码文本。在这种情况下,不需要导出进一步重建密钥。

二元多项式fi(·,·)可以被选择为对称的二元多项式。这是不需要的,因为alice公布的键控材料(keyingmaterial)是。bob发送至alice的键控材料是。alice和bob二者计算相同的密钥:

图3是集成电路500的示意框图。集成电路500包括处理器520、存储器530和i/o单元540。集成电路500的这些单元能够通过互连510诸如总线在彼此之间通信。处理器520被配置成执行在存储器530中存储的软件来执行在本文描述的方法。以这种方式,集成电路500可以被配置为密钥生成设备100、加密设备200和/或解密设备300。存储器530的一部分随后可以根据要求存储公共密钥、私人密钥、明文消息和/或加密消息。

i/o单元540可以用于与其他设备诸如设备100、200或300通信,例如,以接收公共密钥或私人密钥或者发送和接收加密消息。i/o单元540可以包括用于无线通信的天线。i/o单元540可以包括用于有线通信的电气接口。

集成电路500可以被集成在计算机、移动通信设备诸如移动电话等等中。集成电路500也可以被集成在照明设备中,例如,被安排有led设备。例如,被配置为解密设备300并被安排有照明单元诸如led的集成电路500可以接收利用公共密钥加密的命令。只有解密设备300才能解密和执行这些命令。例如,被配置为加密设备200并被安排有照明单元诸如led的集成电路500可以发送消息,诸如利用公共密钥加密的状态消息。只有访问与公共密钥相对应的私人密钥的解密设备300才能解密和执行这些命令。

虽然多项式操纵(manipulation)可以由处理器520按照利用存储在存储器530中的多项式操纵软件所指令的来执行,但是密钥生成、加密和解密的任务更快速,如果集成电路500被配置有可选的多项式操纵设备550的话。多项式操纵设备550是用于执行代入和约简操作的硬件单元。

图4是可以与存储器530一起使用的内存布局的示意框图,倘若集成电路500被配置为密钥生成设备100。在图4中显示的是:私人随机整数562,诸如s;公共全局约简整数564,诸如n;具有整数系数的对称二元多项式582-586,诸如fi;以及相关联的公共约简整数592-596,诸如qi。此外,在图4中,存储器的两个部分被预留作为工作空间来计算公共密钥。约简结果566被用于将私人随机整数562代入对称二元多项式之一和降模公共约简整数。对于每一个对称多项式,结果随后被添加至求和结果566并被降模全局整数564。图4所示的布局适合于其中m=3的系统。

已针对整数环解释了图4,然而也可以允许这些系数从多项式环中进行提取。所需的存储器应该相应地进行适配。

图5是加密系统600的示意框图。图6显示:接收单元610,其被配置有密钥生成设备100和解密设备300;被配置有加密设备200的发送单元640;证书颁发机构(certificateauthority)620;和公共密钥数据库630。此外,图6显示从发送单元640发送至接收单元610的加密数据650。接收单元610和发送单元640是网络的一部分。网络中的任何设备能够使用预期接收者的公共密钥来加密消息。预期接收者拥有私人密钥来解密该消息。

在发送单元640和接收单元610之间的两方通信可以如下工作:

接收单元610使用其密钥生成设备100来选择公共-私人密钥配对(e,d),如在本文所述。在此,e表示公共密钥,而d表示对应的私人密钥;

接收单元610随后发送加密密钥e至发送单元640,但是保持解密密钥d为秘密的;

发送单元640能够通过计算c=ee(m)(“密文”)发送消息m(“明文”)至接收单元610;和

当接收单元610接收到c时,它能够通过计算m=dd(c)来恢复原始消息。

网络加密系统600的更先进实施例使用公共密钥数据库630和证书颁发机构620。

接收单元610发送其公共密钥e至证书颁发机构630(ca)。公共密钥数据库630可以验证接收单元610的用户的身份,尽管这不是绝对必要的。证书颁发机构620使用证书颁发机构620的公共密钥来对公共密钥签名。证书颁发机构620在公共密钥数据库630中有可能与所述身份一起公布签名的公共密钥。当发送单元640想要发送消息至例如利用身份所识别的接收单元610时,发送单元640有可能使用身份作为搜索索引在公共密钥数据库630中查找公共密钥。发送单元640可以验证证书颁发机构620的签名。

使得公共集合中的多项式为对称的简化实现方式。在公共密钥加密系统100的实施例中,公共集合122中的至少一个二元多项式是非对称的。在实施例中,公共集合122中所有的多项式是非对称的。

密钥生成如上所述工作,除了密钥生成设备被配置成将私人随机值112代入集合122的多项式的两个变量之中的特别变量。例如,如果f(x,y)是集合122中的二元多项式之一,并且如果密钥生成设备被配置成使用两个变量之中的第一变量,它计算f(s,y)。求和步骤(如果有的话)如上所述。加密设备接收公共一元多项式124。因为一元多项式仅具有一个变量,所以在其中代入加密随机值212没有区别。然而,为了计算解密一元多项式222,加密设备被配置成将加密随机值212代入两个变量之中的第二变量,即,随后由密钥生成设备使用的不同的变量。在上面的示例之后,加密设备将计算f(x,r)。最后,解密设备接收一元多项式,因此只有一个变量可用于代入。

使用非对称多项式可以增加安全性,因为其保证:公共一元多项式124和解密一元多项式222具有不同的结构。

使用集合122中的对称多项式的在本文给出的所有实施例可以被修改为使用非对称多项式。所需要的唯一改变是确保:从代入集合122中的多项式的两个变量之一中获得解密一元多项式222,而从代入集合122中的多项式的两个变量之中的另一变量中获得公共一元多项式124。

图6a是密钥生成方法700的示意流程图。方法700包括:生成702私人密钥,该私人密钥包括私人随机值;以电子形式获得704对称二元多项式(fi(,))的公共集合;通过对通过将私人随机值(s)代入公共集合(fi(s,))的多项式而获得的一元多项式求和来计算706公共一元多项式;和生成708公共密钥,该公共密钥包括公共一元多项式和公共集合。

图6b是加密方法710的示意流程图。方法710包括:以电子形式获得712加密随机值(r);通过将加密随机值(r)代入公共一元多项式来计算714对称密钥(k);通过对通过将加密随机值(r)代入公共集合(fi(r,))的多项式而获得的一元多项式求和来计算716解密一元多项式;从对称密钥(k)中计算718密钥确认数据来验证是否重建密钥(k')等于所述对称密钥(k);生成720解密信息,该解密信息包括解密一元多项式;以及利用对称密钥来加密722消息并将所述加密消息与解密信息相关联。

图6c是解密方法730的流程图。方法730包括:通过将私人随机值(s)代入解密一元多项式来重建732第一对称密钥(k);从密钥确认数据中确定734是否重建密钥(k')等于对称密钥(k),而如果否的话,例如通过将公共全局约简整数(n)或公共全局约简整数(n)的倍数添加至第一重建密钥(k')和降模2的密钥长度次方(2b),从第一重建密钥(k')中导出736进一步重建密钥。如果在734中从密钥确认数据中确定第一重建密钥(k')等于对称密钥(k),则利用对称密钥(k)解密738该消息。

执行该方法的许多不同方式是可能的,如对于本领域技术人员来说将是显然的。例如,这些步骤的顺序能够被改变或一些步骤可以被并行执行。此外,在步骤之间可以插入其他的方法步骤。所插入的步骤可以表示诸如在本文描述的方法的细化,或者可以与该方法不相关。

根据本发明的方法可以使用软件来执行,其中软件包括用于引起处理器系统执行方法700、710和730的指令。软件可以仅包括由该系统的特别子实体采取的那些步骤。软件可以被存储在合适的存储介质诸如硬盘、软盘、存储器等等上。软件可以作为信号沿着导线或无线或使用数据网络例如因特网来发送。可以使得软件可用于下载和/或用于在服务器上的远程使用。

将意识到:本发明也扩展至计算机程序,尤其在载体上或在载体中的计算机程序,其适于将本发明付诸实践。程序可以采用源代码、目标代码、代码中间源和目标代码的形式诸如部分编译的形式或采用适合于在根据本发明的方法的实现方式中使用的任何其他形式。与计算机程序产品相关的实施例包括与所阐述的方法之中的至少一种方法的每一个处理步骤相对应的计算机可执行指令。这些指令可以被细分为子例程和/或被存储在可以被静态或动态链接的一个或多个文件中。与计算机程序产品相关的另一实施例包括与所阐述的系统和/或产品之中的至少一个的每一个装置相对应的计算机可执行指令。

应注意:上述实施例举例说明而非限制本发明,并且本领域技术人员将能够设计许多可供选择的实施例。

在权利要求书中,放置在括号之间的任何参考符号不应被视为限制权利要求。动词“包括”及其词形变化的使用并不排除除了在权利要求中所陈述的元素或步骤之外的元素或步骤的存在。在元素之前的冠词“一”或“一个”并不排除多个这样的元素的存在。本发明可以借助于包括若干不同元素的硬件并且借助于合适编程的计算机来实现。在枚举若干装置的设备权利要求中,这些装置之中的若干装置可以利用同一项硬件来实施。在相互不同的从属权利要求中叙述特定措施的纯粹事实并不指示不能有利使用这些措施的组合。

图1-5中的参考数字的列表

100密钥生成设备

110私人密钥生成器

112私人随机值

114私人密钥

120公共密钥生成器

122二元多项式的公共集合

124公共一元多项式

126公共密钥

200公共密钥加密设备

210对称密钥获得器

212加密随机值

214对称密钥

220解密信息生成器

222解密一元多项式

230加密单元

300,301私人密钥解密设备

310对称密钥获得器

312重建对称密钥

320解密单元

400加密系统

410电子消息

420消息块

422加密消息

424解密信息

430加密系统

500集成电路

510总线

520处理器

530存储器

540i/o单元

550多项式操纵设备

562私人随机整数

564公共全局约简整数

566约简结果

568求和结果

582-586具有整数系数的对称二元多项式

592-596公共约简整数

600加密系统

610接收单元

620证书颁发机构

630公共密钥数据库

640发送单元

650加密数据

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1