用于加密密钥生成和管理的方法以及计算机程序产品与流程

文档序号:14213267阅读:226来源:国知局
用于加密密钥生成和管理的方法以及计算机程序产品与流程

相关申请

本申请要求申请号为pct/ca2015/050543,于2015年6月12日提交的标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”的pct专利申请的优先权以及申请号为14/737,940,于2015年6月12日提交的标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralofdevices”的美国专利申请的优先权。通过引用,在此把申请号为pct/ca2015/050543的pct专利申请的全部内容以及申请号为14/737,940的美国专利申请的全部内容纳入在本申请中。

本发明的实施方案总体涉及数据保护和加密,并且更具体地涉及用于生成和管理加密密钥的方法和计算机程序产品。



背景技术:

随着人们越来越依赖于计算和互联网技术,数据安全变得比以往更加重要。在数据存储和通信应用中,例如云存储和无线传感器网络,数据加密对保护隐私和敏感信息至关重要。

随着互联网连接变得无处不在,通过使用云来广泛访问和分发数据变得相对容易。为了享受云计算的好处,人们和公司经常将数据上传到云服务器。这通常包括私人或机密数据,或者用户可能希望保护的任何数据。这增加了私人和重要数据在不受保护的情况下被不必要地暴露的机会。

通常,人们依靠云服务提供商来确保其数据的安全性。但是,云存储可能有一些相关的安全漏洞。云安全联盟在其2013年的报告(“臭名昭着的九:云计算2013年的主要威胁”,http://www.cloudsecurityalliance.org/topthreats)中确定了云计算的九大安全威胁,包括数据泄露,数据丢失,恶意的内部人士,以及共享技术的问题。这样的数据安全问题是不可取的,并且可能会减慢云服务的采用。

减轻数据安全问题的一种方式是通过加密。例如,诸如winzip和安全pdf等独立工具可用于在文件被保存并存储,上传和/或传输之前对文件进行加密。没有相应的解密密钥,加密的文件可能没有意义。

然而,使用独立工具(例如winzip和安全pdf)来加密文件夹中的多个文件具有若干缺点。例如,可能需要用户输入密码来加密每个文件,并输入相应的密码来解密加密文件以供查看和/或修改。当文件数量增加时,这种方法变得单调乏味,不方便用户使用。同样,如果用不同的密码来加密不同的文件,用户可能容易对哪个密码解密哪个文件感到困惑。

而且,这些例子中的加密强度取决于用户所选择的密码有多强。由于用户难以想出并记住强随机密码,所以他们倾向于选择较弱的密码,由此产生的加密通常很弱。结果,使用独立工具加密的文件可能仍然容易被一些复杂的攻击攻破。此外,如果密码被遗忘或丢失,则可能难以或不可能从加密文件中恢复原始的明文文件。这实际上导致数据永久丢失。最后,当使用独立工具加密文件时,在一群人之间共享加密文件可能是乏味繁杂,并且通常需要使用边信道来交换密码。

在大规模信息系统中,包括密钥生成,密钥交换和密钥的保密维护在内的密钥管理变得更加困难。因此,希望开发一个解决方案来缓解密钥管理的挑战,同时达到在某种信息理论意义上强安全性。



技术实现要素:

根据本文描述的一例实施方案,提供了一种加密方法。所述加密方法可以包括提供用于安装在计算设备上的一款加密应用;操作所述加密应用以确定一个密钥库种子,所述密钥库种子包括一个由放在一个有序序列上的l个种子比特组成的种子比特集合,其中l是大于3的整数,种子比特集合中的每一位种子比特在所述有序序列上有一个种子比特位置,种子比特集合中的l个种子比特是独立同分布的;以及运用所述加密应用把所述密钥库种子存储在所述计算设备上。所述方法可以进一步包括操作所述加密应用,以确定多个密钥导出集合,其中每个密钥导出集合包含至少一个密钥导出值;从所述多个密钥导出集合中随机选取一个被选取的密钥导出集合;并且操作所述加密应用,以从所述种子比特集合和所述被选取的密钥导出集合中生成一个具有l个比特的密钥比特序列,其中l是一个小于l的正整数。所述方法可以进一步包括,使用所述密钥比特序列,生成一个具有u个比特的加密密钥,其中u是一个不大于l的正整数;确定对应于所述加密密钥的密钥信息,所述密钥信息由所述被选取的密钥导出集合确定,其中所述被选取的密钥导出集合可由所述密钥信息导出,并且所述加密密钥与所述密钥信息之间的交互信息量是零,从而使得所述加密密钥与所述密钥信息在统计上是独立的,并且在对所述密钥库种子一无所知的情况下,所述密钥信息对所述加密密钥的信息泄露是零。所述方法可以进一步包括,由所述加密应用接收明文数据;操作所述加密应用,以通过使用所述加密密钥对所述明文数据加密,来生成密文数据;以及运用所述加密应用,存储所述密文数据以及相对应的密钥信息。

在一些实施方案中,所述方法可以进一步包括,在所述计算设备处接收第二密文数据;在所述计算设备处接收第二密钥信息,所述第二密钥信息对应于所述第二密文数据以及所述密钥库种子;通过所述加密应用,从所述第二密钥信息中确定第二密钥导出集合;从所述种子比特集合和所述第二密钥导出集合中生成一个具有l个比特的第二密钥比特序列;使用所述第二密钥比特序列生成一个具有u个比特的第二加密密钥,其中u小于或等于l;以及通过使用所述第二加密密钥,对所述第二密文数据解密,生成第二明文数据。

在一些实施方案中,每个密钥导出集合中的所述至少一个密钥导出值可以包括一个由所述有序序列中的t个不同的种子比特位置组成的集合,并且所述多个密钥导出集合可以被确定为包括所有可能的由所述有序序列中的t个不同的种子比特位置组成的集合,其中t是大于或等于1的整数。

在一些实施方案中,从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列,可以包括:从所述种子比特集合中确定多个导出的种子比特序列,一个导出的种子比特序列对应于所述被选取的密钥导出集合中所述t个不同种子比特位置的一个种子比特位置,其中每一导出的种子比特序列包括来自所述种子比特集合中相连贯的l个比特,并且所述相连贯的l个比特起始于一个特定的种子比特,后者在所述有序序列中的种子比特位置等同于所述被选取的密钥导出集合中相对应的种子比特位置,而且包括当所述有序序列首尾相连成循环圈时随后相连贯的l-1个种子比特;以及确定所述密钥比特序列为所述多个导出的种子比特序列的线性函数。

在一些实施方案中,从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列,可以包括按照下列方式生成所述密钥比特序列k(m1,m2,…,mt)

其中每一导出的种子比特序列由k(mi)k(mi+1)…k(mi+l-1)确定,而且所述被选取的密钥导出集合定义为0≤m1<m2<…<mt≤l-1.

在一些实施方案中,每个密钥导出集合可以是一个大小为l×l,秩为l的二元矩阵,而且所述多个密钥导出集合可以确定为包括多个大小为l×l,秩为l的二元矩阵,使得所述多个二元矩阵中的任何两个二元矩阵的模2之和仍然具有秩l.

在一些实施方案中,从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列,可以包括把所述密钥库种子看成是一个维数为l的种子列向量,通过以所述密钥库种子乘是一个大小为l×l的二元矩阵的所述被选取的密钥导出集合,生成一个维数为l的密钥列向量;以及确定所述密钥比特序列为所述密钥列向量。

在一些实施方案中,从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列,可以包括按照下列方式生成所述密钥比特序列k

kt=akt

其中所述被选取的密钥导出集合是所述大小为l×l,秩为l的二元矩阵a,k=(k(0),k(1),…,k(l-1))是一个维数为l的种子行向量,包括所述有序序列中在他们各自种子比特位置上的种子比特,kt是k的置换,并且kt是k的置换。

在一些实施方案中,使用所述密钥比特序列生成所述具有u个比特的加密密钥,可以包括确定所述加密密钥为所述密钥比特序列。

在一些实施方案中,使用所述密钥比特序列生成所述具有u个比特的加密密钥,可以包括通过把一个杂凑函数应用于所述密钥比特序列,来确定一个杂凑的密钥比特序列;以及确定所述加密密钥为所述杂凑的密钥比特序列。

在一些实施方案中,所述方法可以进一步包括,提供所述加密应用,以便在第二计算设备上安装;在所述第二计算设备上,操作所述加密应用,以确定包括所述种子比特集合的所述密钥库种子;运用所述加密应用,把包括所述种子比特集合的所述密钥库种子存储在所述第二计算设备上;在所述第二计算设备处,接收所述密文数据和所述密钥信息;在所述第二计算设备上,操作所述加密应用,以从所述密钥信息中确定所述被选取的密钥导出集合;在所述第二计算设备上,操作所述加密应用,以从存储在所述第二计算设备上的所述种子比特集合和所述被选取的密钥导出集合中,确定所述密钥比特序列;在所述第二计算设备上,操作所述加密应用,使用所述密钥比特序列,以生成所述加密密钥;以及在所述第二计算设备上,操作所述加密应用,以通过使用所述加密密钥,对所述密文数据解密,来生成所述明文数据。

在一些实施方案中,所述方法可以进一步包括,每次在一特定的密文数据被生成或解密后,从所述机算设备中删除所述加密密钥和所述密钥比特序列。

根据本文描述的一例实施方案,提供了一种包括计算机可读介质的计算机程序产品,所述计算机可读介质上存储有计算机可执行指令,所述指令用于将计算设备的处理器配置为:确定一个密钥库种子,所述密钥库种子包括一个由放在一个有序序列上的l个种子比特组成的种子比特集合,其中l是大于3的整数,种子比特集合中的每一位种子比特在所述有序序列上有一个种子比特位置,种子比特集合中的l个种子比特是独立同分布的;把所述密钥库种子存储在所述计算设备上;确定多个密钥导出集合,每个密钥导出集合包含至少一个密钥导出值;从所述多个密钥导出集合中随机选取一个被选取的密钥导出集合;从所述种子比特集合和所述被选取的密钥导出集合中生成一个具有l个比特的密钥比特序列,其中l是一个小于l的正整数;使用所述密钥比特序列,生成一个具有u个比特的加密密钥,其中u是一个不大于l的正整数;确定对应于所述加密密钥的密钥信息,所述密钥信息由所述被选取的密钥导出集合确定,其中所述被选取的密钥导出集合可由所述密钥信息导出,并且所述加密密钥与所述密钥信息之间的交互信息量是零,从而使得所述加密密钥与所述密钥信息在统计上是独立的,并且在对所述密钥库种子一无所知的情况下,所述密钥信息对所述加密密钥的信息泄露是零;接收明文数据;通过使用所述加密密钥对所述明文数据加密,生成密文数据;以及存储所述密文数据以及相对应的密钥信息。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为:在所述计算设备处接收第二密文数据;在所述计算设备处接收第二密钥信息,所述第二密钥信息对应于所述第二密文数据以及所述密钥库种子;从所述第二密钥信息中确定第二密钥导出集合;从所述种子比特集合和所述第二密钥导出集合中生成一个具有l个比特的第二密钥比特序列;使用所述第二密钥比特序列生成一个具有u个比特的第二加密密钥,其中u小于或等于l;以及通过使用所述第二加密密钥,对所述第二密文数据解密,生成第二明文数据。

在一些实施方案中,每个密钥导出集合中的所述至少一个密钥导出值可以包括一个由所述有序序列中的t个不同的种子比特位置组成的集合,并且所述多个密钥导出集合可以被确定为包括所有可能的由所述有序序列中的t个不同的种子比特位置组成的集合,其中t是大于或等于1的整数。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为通过下列方式从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列:从所述种子比特集合中确定多个导出的种子比特序列,一个导出的种子比特序列对应于所述被选取的密钥导出集合中所述t个不同种子比特位置的一个种子比特位置,其中每一导出的种子比特序列包括来自所述种子比特集合中相连贯的l个比特,并且所述相连贯的l个比特起始于一个特定的种子比特,后者在所述有序序列中的种子比特位置等同于所述被选取的密钥导出集合中相对应的种子比特位置,而且包括当所述有序序列首尾相连成循环圈时随后相连贯的l-1个种子比特;以及确定所述密钥比特序列为所述多个导出的种子比特序列的线性函数。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为通过下列方式从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列:按照下列公式生成所述密钥比特序列k(m1,m2,…,mt)

其中每一导出的种子比特序列由k(mi)k(mi+1)…k(mi+l-1)确定,而且所述被选取的密钥导出集合定义为0≤m1<m2<…<mt≤l-1.

在一些实施方案中,每个密钥导出集合可以是一个大小为l×l,秩为l的二元矩阵,而且所述多个密钥导出集合可以确定为包括多个大小为l×l,秩为l的二元矩阵,使得所述多个二元矩阵中的任何两个二元矩阵的模2之和仍然具有秩l.

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为通过下列方式从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列:把所述密钥库种子看成是一个维数为l的种子列向量,通过以所述密钥库种子乘是一个大小为l×l的二元矩阵的所述被选取的密钥导出集合,生成一个维数为l的密钥列向量;以及确定所述密钥比特序列为所述密钥列向量。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为通过下列方式从所述种子比特集合和所述被选取的密钥导出集合中生成所述具有l个比特的密钥比特序列:按照下列公式生成所述密钥比特序列k

kt=akt

其中所述被选取的密钥导出集合是所述大小为l×l,秩为l的二元矩阵a,k=(k(0),k(1),…,k(l-1))是一个维数为l的行向量,包括所述有序序列中在他们各自种子比特位置上的种子比特,kt是k的置换,并且kt是k的置换。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为通过把所述加密密钥确定为所述密钥比特序列,来生成所述具有u个比特的加密密钥。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为通过下列方式使用所述密钥比特序列生成所述具有u个比特的加密密钥:通过把一个杂凑函数应用于所述密钥比特序列,来确定一个杂凑的密钥比特序列;以及确定所述加密密钥为所述杂凑的密钥比特序列。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将第二计算设备的第二处理器配置为:在所述第二计算设备处,确定包括所述种子比特集合的所述密钥库种子;把包括所述种子比特集合的所述密钥库种子存储在所述第二计算设备上;在所述第二计算设备处,接收所述密文数据和所述密钥信息;在所述第二计算设备处,从所述密钥信息中确定所述被选取的密钥导出集合;从存储在所述第二计算设备上的所述种子比特集合和所述被选取的密钥导出集合中,确定所述密钥比特序列;使用所述密钥比特序列,在所述第二计算设备处生成所述加密密钥;以及通过使用所述加密密钥,对所述密文数据解密,在所述第二计算设备处生成所述明文数据。

在一些实施方案中,所述计算机程序产品可以进一步包括指令,所述指令用于将所述处理器配置为每次在一特定的密文数据被生成或解密后,从所述机算设备中删除所述加密密钥和所述密钥比特序列。

附图说明

为了更好地理解所描述的实施方案,并且更清楚地显示它们如何被实施,现将通过举例的方式参考附图,在附图中:

图1a显出了一个系统的框图,根据一个实施方案,所述系统可用于为计算设备提供加密密钥生成和管理

图1b显出了另一个系统的框图,根据一个实施方案,所述系统可用于为计算设备提供加密密钥生成和管理;

图2显出了用于在计算设备上生成加密密钥的方法的示例实施方案的流程图;

图3显出了用于在计算设备上生成密文数据的方法的示例实施方案的流程图;

图4显出了用于在计算设备上从密文数据生成明文数据的方法的示例实施方案的流程图。

提供所述附图的目的是说明,而不是限制,本文所描述的实施方案的各种示例的方面和特征。为了说明的简单和清楚,附图中示出的元件不一定按比例绘制。为了清楚起见,一些元件的尺寸可能相对于其他元件被夸大。要理解的是,为了说明的简单和清楚,在认为合适的地方,附图的参考数字或许会在附图中重复,以指示对应或类似的元件或步骤。

具体实施方式

下面介绍各种系统或方法,以提供所要求保护的主题的实施方案的示例。下面描述的实施方案不限制任何所要求保护的主题,并且任何要求保护的主题可以涵盖与下面描述所不同的方法或系统。所要求保护的主题不限于具有下文所描述的任何一个系统或方法的所有特征的系统或方法,也不限于下面描述的多个或全部所述装置或方法共有的特征。有可能下面描述的系统或方法不是在任何要求保护的主题中陈述的实施方案。在下面描述的系统或方法中公开的,但在本文件中没有要求的任何主题可以是另一个保护工具的主题,例如持续的专利申请,并且通过在本文件中披露任何此类主题,本申请人,发明人或所有者并不打算放弃,否认或向公众奉献它们。

此外,要理解的是,为了说明的简单和清楚,在认为合适的地方,附图的参考数字或许会在附图中重复,以指示对应或类似的元件。另外,许多具体细节的阐述是为了提供对本文描述的实施方案的透彻理解。然而,可被本领域的普通技术人员理解的是,本文描述的实施方案在没有这些具体细节的情况下也可以实践。在其他情况下,公知的方法,过程和组件没有被详细描述,以免混淆在此描述的实施方案。而且,附图和及其描述不应看成是对本文描述的实施方案的范围进行限制。

还应该注意的是,如本文所使用的,措词“和/或”旨在表示包容性或/和。也就是说,例如,“x和/或y”旨在表示x或y或两者。作为进一步的例子,“x,y和/或z”旨在表示x或y或z或它们的任何组合。

本文描述的是用于提供数据保护的系统,方法,计算机程序产品和设备的各种实施方案。通常,本文描述的实施方案提供了用于生成加密密钥的方法,所生成的加密密钥用于安全地加密文件。本文描述的实施方案还提供了用于生成对应的解密密钥的方法,所生成的对应的解密密钥用于对所述的加密文件进行解密。通常,本文描述的实施方案涉及对称加密密钥的生成,其中所述加密密钥和所述解密密钥是相同的。通常,本文所述的各种实施方案的特征可以彼此以任何组合的方式使用,除非另有说明。

本文描述的实施方案可以处理与密钥生成和管理相关联的问题。尤其是,本文描述的实施方案可以用来提供一个文件一个密钥安全数据加密(也称为实用一次性密钥),其中各个文件可以通过使用它们各自独有的密钥来加密。

本文的实施方案可以描述为使用被称为信息理论ε-安全性的概念来衡量一个密钥集合的安全性。如本文所使用的,术语密钥库通常是指一个由随机密钥组成的集合,ki,1≤i≤λ,每个随机密钥具有l个比特的长度。密钥库可以从一个具有l个比特的字符串(一般是随机字符串)中生成,所述具有l个比特的字符串可以被称为密钥库种子或密钥种子。

本文描述的实施方案可以提供使用密钥库种子来生成密钥库的有效方法。尤其是,本文描述的一些实施方案在生成密钥库的过程中可以使用杂凑函数。这样生成的密钥库可以被称为杂凑的密钥库。在本文中的一些示例中,杂凑的密钥库可以用φ(ψ)={φ(ki):1≤i≤λ}表示。替代实施方案可以在不使用杂凑函数的情况下生成密钥库。这种替代密钥库可以被称为非杂凑的密钥库。非杂凑的密钥库的例子在此可以用ψ={ki:1≤i≤λ}表示。

本文描述的实施方案可以被证明是信息理论ε-安全的,其中ε较小。具体而言,本文描述的实施方案可以满足以下特性:

(特性1)本文描述的实施方案可以提供具有比密钥库种子比特长度l大得多的密钥容量λ(即,密钥库中的密钥数量)的密钥库。密钥库种子通常由一个比特集合组成,后者称为种子比特集合。种子比特集合中的比特数就是密钥库种子比特长度。对于本文描述的杂凑的密钥库和非杂凑的密钥库的例子,λ>>l可以是足够大的,以实现用于大规模多用户信息系统中的一个文件一个密钥加密。

(特性2)本文描述的实施方案可以提供具有多个密钥比特的密钥,所述多个密钥比特在密钥空间上均匀分布。也就是说,对于任何密钥索引i,密钥ki可以在密钥空间{0,1}l上均匀分布。本文描述的实施方案还可以提供用于生成密钥的方法,使得在密钥和其对应的密钥信息或密钥索引之间的交互信息量是零。从而,密钥ki可以在统计上独立于密钥索引i(例如,如果i是随机选择的)。

(特性3)本文描述的实施方案可以提供具有较小密钥冲突概率的密钥库。密钥冲突通常是指两个不同的密钥(即对应于不同密钥索引或密钥信息的密钥)是相同的。也就是说,对于任意两个独立的i,j,1≤i,j≤λ,ki=kj的概率可能非常小(小于(1-ε)×2-l+ε).

(特性4)本文描述的实施方案可以提供用于从密钥库种子中生成多个加密密钥的方法,所述方法使得对于任意两个独立密钥索引i和j,知道i,j,和ki不会显著地降低关于kj的不确定的量。在本文描述的实施方案中,条件香农熵h(kj|i,j,ki)可以至少与(1-ε)h(kj|j)一样大。在l=216和l=256的情况下,本文描述的示例说明λ可以大于2138并且ε可以小于8.205×10-12

本文描述的实施方案中的密钥库(例如,ψ和/或φ(ψ))的上述特性可以使得一次性密钥的实际应用在大规模数据通信和存储系统成为可能。本文描述的实施方案还可以提供用于从所述密钥库种子和多个由密钥导出值组成的集合或密钥索引值i的集合中生成多个密钥ki的简单而有效的方法。从而,本文描述的实施方案可以减少一些与分发和管理大量随机加密密钥相关联的挑战。

在诸如云存储和无线传感器网络的数据存储和通信的应用中,数据加密对于保护隐私和敏感信息是至关重要的。现已有各种加密算法,诸如高级加密标准(aes)(例如参见高级加密标准(aes),联邦信息处理标准(fips)出版物197,美国国家标准与技术研究院(nist)2001),并且用户可以根据其业务性质和被存储和/或传输的数据的机密性要求来选择特定的加密方案。在大规模信息系统中,包括密钥生成,密钥交换和密钥的保密维护在内的密钥管理可能是一个极其困难的问题(例如参见z.philip,pgpsourcecodeandinternals,mitpress,1995;w.stallings,cryptographyandnetworksecurity:principlesandpractices,,(6thed.).prenticehall,boston,2011;e.-h.yang,j.mengandx.yu,“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices,”2015年6月12日的美国专利申请号14/737,940)。

在一些当前可用的安全协议中,包括pgp(参见z.philip,pgpsourcecodeandinternals.mitpress,1995)和ssl(netscapecorporation,“sslprotocol”,1997),基于对称算法的密码(例如,aes)被用来加密和解密数据。非对称(或公钥)密码算法(例如参见i.f.blake,g.seroussandn.p.smart,ellipticcurvesincryptography.cambridgeuniversitypress,1999;a.j.menezes,p.c.vanoorschotands.a.vanstone,handbookofappliedcryptography.crcpress,1996;b.schneier,appliedcryptography.wiley,newyork,1995;w.stallings,cryptographyandnetworksecurity:principlesandpractices,(6thed.).prenticehall,boston,2011),诸如rsa算法(r.l.rivest,a.shamir,andl.adleman,“amethodforobtainingdigitalsignaturesandpublic-keycryptosystems,”comm.acm,vol.21,no.2,pp.120–126,feb.1978),diffie-hellman方法(w.diffieandm.hellman,“newdirectionsincryptography,”ieeetransactionsoninformationtheory,vol.22,no.6,pp.644–654,nov.1976)和elgamal方法(t.elgamal,“apublic-keycryptosystemandasignatureschemebasedondiscretelogarithms,”ieeetransactionsoninformationtheory,vol.31,no.4,pp.469–472,july1985),可用于密钥交换(或数字签名)。这些方法为数据传输过程中数据加密的密钥交换问题提供了一个解决方案,同时由于大整数分解和离散对数的难度,实现了计算安全。

然而,这些方法在下列场景可能是脆弱的,比如当敏感数据被长期/永久存储;当攻击者有足够的时间来截获尽可能多的信息或具有非常强大的计算能力(对加密/解密密钥进行密码分析)。在这些情况下,如pgp和ssl中操作的那样,在一段时间内使用同一密钥来加密多个文件或多项数据(这种密钥被称为会话密钥)可能容易受到攻击。因此,一个比较好的方法是,让每个文件或数据项被它各自独有的密钥来加密。如本文所使用的,这种加密方法可以被称为一个文件一个密钥方法。本文描述的一个文件一个密钥方法的实施方案可以提供是一次性密钥(otp)思想的扩展的实现(参见,例如,c.shannon,“communicationtheoryofsecrecysystems,”bellsystemtechnicaljournal28(4):656-715,1949)。

对数据保密性而言,一个文件一个密钥方法可以提供这样的优点:即使一个文件或一数据项被拦截和破解(或者在更坏的情况下一个存储组件被损害),攻击者要破解和理解其他文件/数据项仍然可以是很难,因为其他文件/数据项被使用不同的密钥加密了。但是,一个文件一个密钥方法导致了密钥管理方面的挑战,因为大量的密钥需要生成,交换或分发,和安全维护。对于一个文件一个密钥方法的实际实现,本文描述的实施方案可以为以下中的一个或多个问题提供解决方案:

1)如何有效地生成一个大的密钥集合?

2)如何确保生成的密钥均匀分布在密钥空间上?

3)如果用于提取解密密钥的密钥材料(如密钥索引)被放置在加密文件的文件头中以便于密钥分发,如何确保密钥材料不泄露关于密钥的任何信息,即密钥和其密钥材料之间的交互信息量是零?

4)如何确保破解一个密钥不会获得关于其他密钥的任何重要信息,即不同密钥之间的交互信息量接近于零?

基于不对称加密算法的现有密钥交换过程,如pgp和其他安全协议(如ssl),不能为上述问题提供满意的解决方案。例如,在pgp和ssl中,会话密钥ks首先被使用合法接收方的公钥(被称为ku)来加密。然后,将加密的密钥eku(ks)通过不受保护的介质(例如,放置在加密文件的文件头中)发送。一旦接收到加密的密钥eku(ks),合法的接收方使用它的私钥从eku(ks)中提取密钥ks。在这种情况下,eku(ks)实质上充当了密钥ks的密钥信息。尽管密钥ks可以随机生成(至少在理论上),但是密钥信息eku(ks)从信息理论的角度公开了关于密钥ks的所有信息。事实上,由于公钥ku是已知的,密钥ks和密钥信息eku(ks)之间的交互信息量i(eku(ks);ks)等于密钥ks的长度。这与上面问题3)中提到的要求相反。

本文描述的实施方案可以提供用于生成加密密钥的方法和计算机程序产品,所述方法和计算机程序产品可以处理上述问题。在本文描述的实施方案中,合法通信方可以共享一个共同的具有l个比特的随机字符串,所述字符串由k表示。k通常被称为密钥库种子,其包括一个由l个种子比特组成的种子比特集合。l是整数值,并且通常至少大于3。l的值的各种示例将在下面进一步讨论。

所述种子比特集合通常将包括放在一个有序序列上的l个比特。也就是说,所述种子比特集合中的每个种子比特可以在所述有序序列上具有一个对应的种子比特位置。虽然所述种子比特集合可以是一个具有l个比特的随机字符串,但是所述有序序列可以看作为一个模l的循环圈。如上所述,所述有序序列上的所述种子比特可以随机地确定。相应地,所述种子比特集合中的所述种子比特可以是独立且相同分布的。

如上所述,数据交换的合法通信方(即用户)通常共享相同的种子比特集合。用户可以手动或自动地同步所述密钥库种子(即所述种子比特集合)。用于在设备之间同步密钥库种子的系统和方法的示例,在申请人的pct专利申请和申请人的美国专利申请中有详细描述,其中所述pct专利申请提交于2015年6月12日,其申请号为pct/ca2015/050543,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为wo2015/188277的pct专利出版物;所述美国专利申请提交于2015年6月12日,其申请号为14/737,940,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为us2015/0363607a1的美国专利出版物。

本文描述的实施方案可以提供一个用于从具有l个种子比特的密钥库种子k中生成多个用于数据加解密的随机密钥的简单而有效的过程。(为了简单起见,密钥在本文中可以被称为加密密钥,虽然这样的密钥可以用于加密,也可以用于解密。)每个密钥(例如,φ(ki)或ki,1≤i≤λ)可以被生成为具有密钥长度l个比特,其中λ>>l。所有这样的加密密钥组成的集合(例如,φ(ki)orki,1≤i≤λ)在本文中可以被称为密钥库。所述种子比特组集合或随机字符串k在本文中可以被称为密钥库种子或密钥种子。本文描述的一些实施方案可以提供用于从k和i中容易地生成一个加密密钥的线性方法。本文描述的一些实施方案可以使用单向函数或杂凑函数来生成加密密钥。按照本文描述的实施方案从密钥库种子k中生成的密钥可以被证明是信息理论ε-安全的。

本文描述的满足上述特性2的实施方案使得分配密钥变得容易,因为密钥可以在统计上独立于其对应的密钥信息。为了分配一个密钥,其密钥信息(例如,密钥索引i)可以被包括在加密文件的文件头部中。由于密钥与其密钥信息之间的交互信息量为零,把所述密钥信息包括在所述文件头部中,对所述密钥本身的信息泄露是零。

另外,密钥可以从所述密钥库种子k和所述密钥信息i中确定。从而,管理大量随机密钥可以被简化为管理替代的密钥库种子k。因此,一次性密钥的实际实现可以应用于大规模数据通信和存储系统,或者存储容量有限的设备,例如数量越来越多的连接在物联网上的设备。

本文描述的满足特性1至4的实施方案提供了用于密钥生成和管理的方法,所述方法可以基本上安全地抵御对单个文件或密钥的几乎任何攻击。如上所述,本文描述的一些实施方案可以使用线性操作从所述密钥库种子的所述种子比特集合中生成密钥。也就是说,一个或多个密钥比特序列可以通过使用线性函数从所述种子比特集合中导出,然后被用来生成所述加密密钥。

但是,在通过线性操作从所述密钥库种子k生成密钥的实施方案中,如果攻击者获取了大量的密钥,则攻击者可以尝试重构所述密钥库种子k。这种攻击可以被称为重构攻击。为了防止重构攻击,本文描述的一些实施方案可以提供防重构的密钥生成方法,所述方法使用一个安全杂凑函数φ。即使攻击者获取了一些杂凑的密钥,由于所述杂凑函数的安全属性,攻击者要从所述杂凑的密钥中恢复比特序列仍然将是很难的。因此,即使多个杂凑的密钥φ(ki)被获取,重构k也是不可行的。

现在参考图1a,显示在那里的是一个可用于根据一个实施方案来生成和管理加密密钥的系统100a的示例。在一些实施方案中,系统100a可以形成能够在各种计算设备102上自动加密和解密数据文件的安全系统的一部分。

所述计算设备102中的每一台设备可以与一特定用户140相关联。例如,在系统100a中,第一用户140a具有两台关联的计算设备102a和102b,并且第二用户140b具有两台关联的计算设备102c和102d。

通常,所述计算设备102包括处理器,易失性和非易失性存储器,至少一个网络接口,以及输入/输出设备。计算设备102可以包括服务器计算机,台式计算机,笔记本电脑,平板电脑,pda,智能手机,或其他可编程计算机。计算设备102还可以包括任何能够进行数据通信的连接或“智能”设备,例如恒温器,空气质量传感器,工业设备等。随着越来越多的设备通过“物联网”进行联网,计算设备102包含的设备种类也越来越多。计算设备102的示例实施方案将参照图1b进一步详细描述。

所述计算设备102可以包括与网络的连接,诸如与因特网的有线或无线连接。网络可以由一个或多个计算机网络技术构建,诸如ieee802.3(以太网),ieee802.11和类似技术。

所述计算设备102可以通过诸如因特网的网络连接到云服务器150。云服务器150通常是指使用诸如因特网的网络连接到计算设备102的一台或多台服务器计算机。云服务器150通常包括处理器,易失性和非易失性存储器以及至少一个网络接口,并且可以为所述计算设备102提供数据存储服务。存储在云服务器150上的数据可以由所述计算设备102通过使用所述网络来访问。

q-服务器130还可以包括一台或多台通过诸如因特网的网络连接到所述计算设备102的服务器计算机。q-服务器130通常包括处理器,易失性和非易失性存储器以及至少一个网络接口,并且可以在加密和解密数据的各种过程中帮助所述计算设备102。例如,在生成新的密钥库种子的过程中和/或在不同的计算设备102之间和不同的用户140之间同步密钥库种子的过程中,q-服务器130可以协助所述计算设备102。q-服务器130的操作的进一步细节,在申请人的pct专利申请和申请人的美国专利申请中有描述,其中所述pct专利申请提交于2015年6月12日,其申请号为pct/ca2015/050543,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为wo2015/188277的pct专利出版物;所述美国专利申请提交于2015年6月12日,其申请号为14/737,940,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为us2015/0363607a1的美国专利出版物。

现在参考图1b,显示在那里的是一个可用于根据一个实施方案来生成和管理加密密钥的示例系统100b。一般而言,系统100b对应于系统100a并且示出与第一用户140a相关联的计算设备102a的附加细节。在系统100b中示出的计算设备102a的细节通常可以扩展到图1a中所示的各种其他计算设备102。

计算设备102a通常包括处理器104,存储器106,显示器108,数据库110和通信接口112。虽然示出为单独的元件,可理解的是,数据库110可以被存储在存储器106中。

处理器104是计算机处理器,诸如通用微处理器。在一些其他情况下,处理器104可以是现场可编程门阵列,专用集成电路,微控制器或其他合适的计算机处理器。

处理器104经由计算机数据总线耦合到存储器106。存储器106可以包括易失性和非易失性存储器。非易失性存储器存储由计算机可执行指令组成的计算机程序,其可以根据需要被加载到易失性存储器中供处理器104执行。可被本领域技术人员理解的是,在本文中提到计算设备102执行功能或以特定方式工作意味着处理器104在执行存储在存储器106中的指令(例如,软件程序),并且可能通过一个或多个接口在发送或接收输入和输出。存储器106还可以在执行计算机可执行指令的过程中存储输入到处理器104或从处理器104输出的数据。如上所述,存储器106还可以存储数据库110。

处理器104还耦合到显示器108,显示器108是用于按照各种计算机程序的需要输出信息和数据的合适显示器。具体而言,显示器108可以显示图形用户界面(gui)。在一些情况下,显示器108可以从计算设备102省略,例如在计算设备102是传感器或其他被配置为自主操作的智能设备的情况下。计算设备102可以执行任一操作系统,诸如microsoftwindowstm,gnu/linux,或其他合适的操作系统。

在一些示例实施方案中,数据库110是关系数据库。在其他实施方案中,数据库110可以是非关系数据库,诸如关键值数据库,nosql数据库等。

通信接口112是用于通过网络进行通信的一个或多个数据网络接口,诸如ieee802.3或ieee802.11接口。

处理器104可以基于存储在存储器106中的应用程序中提供的指令来操作。如本文所使用的,术语“软件应用”或“应用”是指计算机可执行指令,尤其是存储在非暂时性介质(如非易失性存储器)中并由计算机处理器执行的计算机可执行指令。所述计算机处理器在执行所述指令时可以接收输入并将输出发送到与其耦合的各种输入或输出设备中的任何一个。

计算设备102a或许已装有被称为加密应用114的软件应用。虽然单独示出,应当理解的是,加密应用114可以被存储在存储器106中。加密应用114也可以被称作为安装在计算设备102上的q-代理或加密代理。

每个计算设备102可以具有安装在其上的加密应用114。安装在每台设备102上的加密应用114可以负责在该设备102上的加密和解密操作。所述加密应用114还可以生成加密/解密密钥并保护一旦生成的密钥。加密应用114还可以生成可以存储在每个设备102上的一个或多个密钥库种子。所述密钥库种子可以被所述加密应用114用来生成一个或多个加密/解密密钥。

所述加密应用114可以用来生成密钥库种子。所述密钥库种子然后可以用来导出密钥,正如下面进一步详细描述的那样。在一些情况下,所述密钥库种子可以通过特定加密应用114和q-服务器130之间的通信来生成。在一些情况下,在不同设备102上的加密应用114之间可能没有直接通信。在这种情况下,所述密钥库种子可能需要手动或自动地在不同计算设备102之间同步。q-服务器130可以用来自动同步在所述设备102上使用的所述密钥库种子,正如在申请人的pct专利申请和申请人的美国专利申请中所描述的那样,其中所述pct专利申请提交于2015年6月12日,其申请号为pct/ca2015/050543,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为wo2015/188277的pct专利出版物;所述美国专利申请提交于2015年6月12日,其申请号为14/737,940,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为us2015/0363607a1的美国专利出版物。在不同设备102之间同步密钥库种子可以使得不同设备能够以信息理论ε-安全的方式在设备102之间传送密文文件,同时仍然对密文文件提供便利的加密和解密。

在一些情况下,第一用户140a可能希望将加密的文件/密文从第一设备102a移动到第二设备102b或移动到与第二用户140b相关联的设备,诸如设备102c。第一用户140a可以以各种方式(诸如使用云服务,电信网络或诸如usb或火线钥匙之类的其他文件传送机制)将来自第一设备102a的一个或多个加密的文件/密文发送到第二设备102b。一旦在第二设备102b处接收到所述文件,就可能有必要在第二设备102b上对所述文件进行解密。

为了让经由第一设备102a上的加密应用114加密过的加密文件/密文能被第二设备102b上的加密应用114解密,第一设备102a和第二设备102b上的加密应用114使用的密钥库种子可以手动或自动同步。因此,通过使用所述密钥库种子和随着所接收的文件一起发送过来的密钥信息,第二设备102b上的加密应用114可以能够确定用于解密所述接收的文件的加密密钥。此外,数据在传输过程中可以是安全,防止解密的,因为所述密钥信息和所述加密密钥之间的交互信息量可以是零,从而使得所述密钥信息和所述加密密钥在统计上是独立的,这样便可以防止攻击者单独从发送的密文和密钥信息中确定所述加密密钥。

在一些情况下,加密应用114可以被配置为从所述密钥库种子中生成一个大的加密密钥集合,即加密密钥库。然而,在一些情况下,让所述计算设备102生成并存储一个大的加密密钥集合,或许是不可取的,例如,如果所述设备102具有有限的存储容量。于是,所述设备102可以仅存储所述密钥库种子,并根据需要从所述密钥库种子中导出加密密钥。用于从密钥库种子中导出加密密钥的示例实施方案将在下面进一步详细讨论。

所述加密密钥或密钥库种子可以加密格式存储在非易失性设备存储器中,并由用户定义的验证码保护。在一些实施方案中,所述验证码可以仅由用户知道。本地认证信息可以基于所述验证码生成并存储在用户的设备上。所述认证信息可以用来认证尝试访问或修改加密文件的用户。在一些情况下,所述验证码可能不能从任何存储的认证信息中确定。有关使用验证码来进行加密密钥和密钥库种子的安全存储的进一步细节,在申请人的pct专利申请和申请人的美国专利申请中有描述,其中所述pct专利申请提交于2015年6月12日,其申请号为pct/ca2015/050543,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为wo2015/188277的pct专利出版物;所述美国专利申请提交于2015年6月12日,其申请号为14/737,940,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为us2015/0363607a1的美国专利出版物。

当存储在无论是用户设备上的还是诸如云服务器150的其他设备上的非易失性存储器中时,由本文描述的示例系统管理的数据可以始终保持是加密的。本文描述的实施方案还可以确保,对应于存储的加密文件的明文文件只能在安装的加密代理内部看到和/或修改。明文文件只有在用户请求解密后才能被访问,并且只能在访问时临时存储在用户设备的易失性存储器中。

在一些实施方案中,每个可编程计算机可以包括用于将信息输入到该设备中的输入设备。例如,输入设备可以是键盘,小键盘,光标控制设备,触摸屏,照相机,扫描仪或麦克风。在一些实施方案中,可以通过通信接口从其他网络上的可编程计算机接收输入信息。在一些实施方案中,计算设备可以包括用于呈现视觉信息的显示设备。例如,显示设备可以是计算机显示器,平板显示器,投影仪或显示面板。在一些实施方案中,显示设备向用户显示一个或多个根据本文描述的系统和方法经由加密代理加密过的文件。

本文描述的系统,过程和方法的实施方案可以用硬件或软件或两者的组合来实现。或者,这些实施方案也可以用在可编程计算机上执行的计算机程序来实现,每个可编程计算机包括至少一个处理器(例如微处理器),数据存储系统(包括易失性和非易失性存储器和/或存储元件),至少一台输入设备,以及至少一台输出设备。例如但不限于,所述可编程计算机(以下称为设备,计算设备或服务器)可以是个人计算机,膝上型计算机,个人数据助理,蜂窝电话,智能电话设备,平板电脑和/或无线设备。对于任何软件组件,程序代码被应用于输入数据以执行本文所述的功能并生成输出信息。所述输出信息以已知的方式被应用于一个或多个输出设备。

每个软件组件或程序可以以高级程序或面向对象的编程和/或脚本语言来实现以与计算机系统通信。但是,如果需要,程序可以用汇编语言或机器语言来实现。无论如何,该语言可以是编译或解释的语言。此外,所描述的实施方案中的过程和方法能够以计算机程序产品的形式分发销售,所述计算机程序产品包括承载用于一个或多个处理器的计算机可用指令的计算机可读介质。所述介质可以以各种形式提供,包括一个或多个软盘,光盘,磁带,芯片,有线传输,卫星传输,互联网传输或下载,磁和电子存储介质,数字和模拟信号等。所述计算机可用指令也可以是各种形式,包括编译和非编译的代码。

如上所述,所述密钥库种子k包括一个具有l个种子比特的种子比特集合。例如,可以将所述密钥库种子生成为一个具有l个比特的随机字符串。所述种子比特集合中的所述种子比特可以排列成一个有序序列,其中每个种子比特在所述有序序列中具有一个种子比特位置。本文描述的实施方案提供了方法以生成一个大的加密和解密密钥集合,即密钥库

ψ={ki:1≤i≤λ}

其中λ是一个大数,远大于l,并且每个ki的长度是l个比特.

所述加密应用114可以为计算设备102确定一个或多个密钥库种子。在一些情况下,所述密钥库种子可以从另一台设备102中导入。例如,在第一用户140a先前已经在第一设备102a上生成密钥种子的情况下,第一用户140a可以将相同的密钥种子输入到第二设备102b。如果第一用户140a尚未在任何其他设备102上生成密钥种子,则第一设备102a的加密应用114可以生成所述密钥种子。

第一设备102a上的加密应用114可以生成一个或多个密钥种子。在一些情况下,所述密钥种子可以通过加密应用114和q-服务器130之间的通信来生成。例如,加密应用114可以随机生成多个独立的密钥种子k1,k2,…,kj。每个密钥种子通常包括一个种子比特集合,所述种子比特集合包含一个有序序列上的多个种子比特。

所述加密应用114然后可以将基于所述多个密钥种子的密钥种子信息存储在第一设备102a的非易失性存储器中。例如,所述密钥种子信息可以通过以下方式来生成:加密所述密钥种子,然后将加密的密钥种子存储为所述密钥种子信息。在一些情况下,一个验证码c可以用来将所述密钥种子k1,k2,…,kj加密成加密的密钥种子ec(k1,k2,…,kj)。这些加密的密钥种子ec(k1,k2,…,kj)然后可以被保存在第一设备102a的非易失性存储器中。

如果第二设备102b装有加密应用114并且具有在该设备102b上生成并存储的密钥种子,则第一用户140a可以从所述设备102b导入所述密钥种子。在系统100a中,第一用户140a可以访问设备102b上的加密应用114以获得由该加密应用114生成的加密的密钥种子ec(k1,k2,…,kj)的拷贝。第一用户140a然后可以将拷贝的密钥种子传送到第一设备102a上的加密应用114。所述加密应用114然后可以导入所述密钥种子并将它们存储在第一设备102a的非易失性存储器中。

为了加密文件或明文数据,密钥(例如ki)可以通过使用所述加密应用114从所述密钥库中随机选择或导出。所选密钥ki然后可以被用作加密密钥通过使用诸如aes的对称密码来加密所述文件或明文数据。与所选密钥相对应的密钥信息,例如密钥索引i,可以包括在加密的密文中,例如,在密文的头部。所述密钥信息(例如密钥索引i)和所述密文一起形成一个加密文件。当接收到一个加密文件(即密文数据和相应的密钥信息)时,合法接收方的加密应用114可以使用相关联的密钥信息(例如密钥索引i)从存储在接收计算设备102上的密钥库k中提取密钥ki。所述加密应用114然后可以使用密钥ki来解密所述密文并生成相应的明文数据。

为了提供一个文件一个密钥加密的实际而安全的实施方案,λ应该足够大。另外,如下面所讨论的,所述密钥库ψ和相应的密钥的实施方案最好是信息理论ε-安全的,其中ε足够小。

定义1

从密钥库种子k生成的每个密钥长度为l的密钥库ψ={ki:1≤i≤λ}被称为是信息理论ε-安全的,其中0≤ε<1,如果下面的安全属性成立:

1)对于任何给定的密钥索引i,1≤i≤λ,密钥库中相应密钥ki的密钥比特是随机的并且均匀分布在{0,1}l上。

2)对于任何两个独立的密钥索引i,j,1≤i,j≤λ,其相应密钥间的碰撞概率较低:

pr{ki=kj}≤(1-ε)×2-l+ε.

3)对于任何两个独立的密钥索引i和j,1≤i,j≤λ,

h(kj|i,j,ki)≥h((kj|j)×(1-ε)=l×(1-ε)

其中h(x|y)表示在给定随机变量y条件下的随机变量x的条件香农熵。

根据第一安全属性,当密钥索引或密钥信息被随机选择时,密钥ki与密钥索引i之间的交互信息量为零。因此,在对所述密钥库种子一无所知的情况下(即,如果所述密钥库种子是未知的),公开所述密钥信息(即,所述密钥索引)不会泄露任何有关所述密钥的信息。第二个安全属性表示从所述密钥库中随机选择密钥本质上是无冲突的。这又意味着对于按需生成加密密钥的实施方案来说,从所述密钥库中随机生成密钥基本上是无碰撞的。第三安全属性表明一个加密密钥的知识不会显著地减少关于其他密钥的不确定性,即从所述密钥库中独立选择的密钥(或者从密钥库种子中独立生成的密钥)基本上是成对独立的。

定义2

从密钥库种子k生成的每个密钥长度为l的密钥库ψ={ki:1≤i≤λ}被称为是n阶信息理论ε-安全的,其中0≤ε<1,如果ψ满足定义1中的前两个安全属性以及以下安全属性:

3)对于任何独立的密钥信息(即密钥索引,i1,…,in,1≤j,i1,…,in≤λ),

在一些情况下,所述加密应用114可能不会从所述密钥种子导出所有加密密钥以预先生成密钥库。存储密钥库的所有加密密钥在计算设备102的存储容量方面可能是不可行的,并且当ψ足够大时也可能容易受到安全威胁。因此,每个密钥ki应该容易从k和i计算出来,从而不需要实际存储整个密钥库ψ及其相应的加密密钥。

所述加密应用114可以仅根据需要从所述密钥种子中导出加密密钥,即,当接收到要加密或解密的文件的指示时。在这样的情况下,加密应用114还可以把表明如何从存储在第一设备的非易失性存储器上的密钥种子信息中导出所述加密密钥的密钥信息,同所述加密文件一起存储。同样,在文件被加密之后,所述加密应用114可以从第一设备102a中擦除所导出的加密密钥。

在一些情况下,所述密钥库ψ可以通过使用任何方式从随机密钥种子k1,k2,…,kj中生成,使得对于任意两个独立的i和j,1≤i,j≤λ,第一加密密钥等于第二加密密钥的概率pr{ki=kj}不显著地大于1/λ。例如,用于从所述随机密钥种子生成所述密钥库的手段实质上可以是无碰撞的。在一些实施方案中,这可以被称为密钥库ψ的属性(1)。

在一些情况下,所述密钥库ψ可以从随机密钥种子k1,k2,…,kj中生成,使得对于任意的1≤i≤λ,密钥ki大致是均匀分布的,因而在统计上独立于i。在这种情况下,公开信息i可能不会透露任何关于ki的基本信息。在一些实施方案中,这可以被称为密钥库ψ的属性(2)。

在一些情况下,所述密钥库ψ可以从随机密钥种子k1,k2,…,kj中生成,使得对于任意两个独立的i和j,1≤i,j≤λ,知道i,j,和单个密钥ki不会显著地降低关于另外一个密钥kj的不确定的量,即,条件香农熵h(kj|i,j,ki)接近h(kj|j)。在这种情况下,知道一个密钥ki不会提供关于另一个密钥kj的基本信息。在一些实施方案中,这可以被称为密钥库ψ的属性(3)。

大的λ可以增加关于所产生的密钥的熵。但是,当λ很大时,存储所有生成的密钥可能需要大量的存储空间。当本文描述的系统是移动设备或具有存储容量限制的其他设备时,这可能是不可取的。在一些情况下,所述密钥库ψ可以从随机密钥种子k1,k2,…,kj中生成,使得对于任意的1≤i≤λ,容易从种子k1,k2,…,kj和所述索引i中计算出密钥ki。在这种情况下,如上所述,不需要将ψ实际存储在第一用户140a的设备102上。特别是当λ很大时,这可能是合乎需要的。在一些实施方按中,这可以被称为密钥库ψ的属性(4)。

在一些情况下,所述加密应用114可以存储一个或多个密钥种子,其中每个密钥种子具有第一比特长度。所述加密应用114可以从存储的密钥种子中导出一个或多个加密密钥,其中每个导出的加密密钥具有第二比特长度。在一些实施方案中,第二比特长度可以比第一比特长度短。

本文描述的实施方案提供了有效的方法,通过所述方法可以从随机密钥库种子中生成一个大密钥库(即,一个大的加密密钥集合),使得所述密钥库满足上述定义中呈现的属性。

所述密钥库种子k可以被认为是一个具有l个比特的随机字符串。也就是说,所述密钥库种子包括一个具有l个种子比特的种子比特集合。所述种子比特集合中的所述l个种子比特可以排放在一个有序序列来上,并且可以被表示为:

k=k(0)k(1)…k(l-1)

所述种子比特集合中的每个种子比特k(i),i=0,1,…,l-1,可以是在种子比特空间{0,1}上独立且相同分布的比特。也就是说,所述种子比特集合中的种子比特可能具有

pr{k(i)=0}=pr{k(i)=1}=1/2

因此,所述种子比特可以说是均匀随机的。

具有u个比特的加密密钥可以从所述密钥库种子中生成。例如,所述加密应用114可以确定一个由密钥导出值组成的集合。所述加密应用114可以确定多个密钥导出集合。每个密钥导出集合可以被确定为包括至少一个密钥导出值mi。在一些实施方案中,所述密钥导出集合可以被确定为包括多个密钥导出值m1,m2,…,mt,其中0≤m1<m2<…<mt≤l-1。所述密钥导出值可对应于一个由所述密钥库种子的有序序列中的t个不同种子位置组成的集合,其中t是大于或等于1的整数值。在一些特定实施方案中,可以确定所述多个密钥导出集合,使得所有可能的由所述有序序列中的t个不同种子比特位置组成的集合被包括在所述多个密钥导出集合。

所述加密应用114可以生成一个具有l个比特的密钥比特序列,其中l是一个小于l的正整数。通过使用来自一个被选择的密钥导出集合中的种子比特位置m1,m2,…,mt,所述密钥比特序列可以从所述密钥库种子k中生成。在一些情况下,所述密钥比特序列可以通过使用一个或多个导出的种子比特序列k(mi)k(mi+1)…k(mi+l-1)来生成,其中每个导出的种子比特序列对应于所述被选择的密钥导出集合的所述种子比特位置mi中的一个种子比特位置。所述密钥比特序列然后可以从所述导出的种子比特序列中生成关。

在一些实施方案中,从多个导出的种子比特序列中生成的密钥比特序列可以是所述导出的种子比特序列的线性函数。例如,密钥比特序列k(m1,m2,…,mt)可由下列公式确定:

其中所述导出的种子比特序列k(mi)k(mi+1)…k(mi+l-1)的总和是逐比特二进制加法,并且整数mi和j(1≤j≤l-1)的相加是按模l来计算的。

所述密钥比特序列可被所述加密应用用来生成加密密钥。在一些实施方案中,可以使用线性操作从密钥比特序列中生成所述加密密钥。在一些实施方案中,由所述加密应用114生成的密钥比特序列可以用作所述加密密钥。

在这个例子中,密钥库ψ(即由可以从所述密钥库种子中生成的密钥组成的集合)可以由下列公式给出

ψ={k(m1,m2,…,mt):0≤m1<m2<…<mt≤l-1}(2)

在这个示例中,所述密钥库ψ中的随机加密密钥的数量(即,可以从所述密钥库种子中生成的密钥的数量)是

在一些实施方案中,所述密钥比特序列的非线性函数或单向函数也可以用来生成加密密钥。例如,正如将在下面进一步详细讨论的那样,杂凑的密钥比特序列可以由所述加密应用114生成。

密钥库的性质

现在将描述所生成的密钥库ψ的一些安全属性。

在实施方案中,当所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系被定义为l>2t(l-1)时,通过方程(1)和(2)从所述密钥库种子k中生成的密钥库ψ={ki:1≤i≤λ}满足以下密钥库属性:

i)对于任意被选择的密钥导出集合,给定其种子比特位置0≤m1<m2<…<mt≤l-1,所述密钥比特长度为l的密钥比特序k(m1,m2,…,mt)是随机的并且在{0,1}l上均匀分布。

ii)对于由与第一被选取的密钥导出集合对应的不同种子比特位置(m1,…,mt)组成的第一集合和由与第二被选取的密钥导出集合对应的不同种子比特位置组成的第二集合,其中(m1,…,mt)≠0≤m1<…<mt≤l-1以及密钥碰撞的概率被确定为

与第一被选取的密钥导出集合对应的所述导出的种子比特序列k(mi)k(mi+1)…k(mi+l-1),i=1,…,t和与第二被选取的密钥导出集合对应的所述导出的种子比特序列i=1,…,t,分别产生密钥比特序列k(m1,m2,…,mt)和所述种子比特位置mi和0≤m1<…<mt≤l-1以及可以以非降低的顺序排序,这样排序好的种子比特位置记为ri,其中0≤r1≤r2≤…≤r2t≤l-1。

在生成所述密钥比特序列k(m1,m2,…,mt)和的实施方案中,这些种子比特位置中的每一个种子比特位置ri可以用来从所述种子比特集合k=k(0)k(1)…k(l-1)中确定一个导出的种子比特序列,所述导出的种子比特序列为一个由相连贯的l个比特组成的字符串k(ri)k(ri+1…k(ri+l-1)。所述种子比特集合中的l个种子比特k(0),k(1),…,k(l-1)可以被看成为一个循环有序集合,其中k(0)=k(l)。对于所述种子比特位置中的每一个种子比特位置ri,如果它在第一和第二密钥导出集合中两边相邻的种子比特位置与其的偏移至少是l个比特,那么针对它的导出的种子比特序列与针对第一和第二密钥导出集合的其它任何导出的种子比特序列之间没有公共比特。也就是说,对于种子比特位置ri,其中ri-ri-1≥l,ri+1-ri≥l,r2t+1=l+r1以及r-1=-l+r2t,对应于ri的导出的种子比特序列k(ri)k(ri+1)…k(ri+l-1)与任何其他对应于rj(1≤j≠i≤2t)的导出的种子比特序列没有任何公共比特。在这种情况下,第一密钥比特序列k(m1,m2,…,mt)和第二密钥比特序列是独立的。这样的种子比特位置ri,如果存在的话,可以被称为种子比特位置向量r=(r1,r2,…,r2t)内的孤立分量。因此,对于一对密钥导出集合,其种子比特位置向量r=(r1,r2,…,r2t)不具有孤立分量,当且仅当对于任何种子比特位置ri,i=1,2,…,2t,

min{ri-ri-1,ri+1-ri}≤l-1(3)

于是,一对密钥导出集合(m1,…,mt)和不具有孤立分量,每当通过以非降级顺序对种子比特位置m1,…,mt,进行排序而获得的种子比特位置向量r=(r1,r2,…,r2t)不具有孤立分量。

考虑任何两个独立的密钥导出集合m=(m1,…,mt)和其中0≤m1<…<mt≤l-1以及用e表示m=(m1,…,mt)和不具有孤立分量的事件。两个独立的密钥导出集合不具有孤立分量的概率可以定义为

p=pr{e}

在一些实施方案中,所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系可以被定义为l>2t(l-1)。在这样的实施方案中,对于通过方程(1)和(2)从所述密钥库种子k中生成的所述密钥库ψ={ki:1≤i≤λ},以下是成立的:对于任何两个独立的密钥导出集合m=(m1,…,mt)和其中0≤m1<…<mt≤l-1以及

在一些实施方案中,所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系可以被定义为l>2t(l-1)。在这样的实施方案中,鉴于以上列出的属性ii),对于任何两个独立的密钥导出集合m=(m1,…,mt)和其中0≤m1<…<mt≤l-1以及密钥碰撞的概率可以定义为

因为由此可得

p≥1/λ(5)

在实施方案中,当所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系可以被定义为l>2t(l-1)时,通过方程(1)和(2)从所述密钥库种子k中生成的密钥库ψ={ki:1≤i≤λ}可因此被证明是信息理论ε-安全的,其中ε=p。

有关p的上界的例子将在下面将讨论,它们说明对于(l,l,t)的各种配置,p是相当小的。上面的讨论也可以扩展到更高阶的情况。为此,孤立分量的评估可以扩展到任何维度的种子比特位置向量(而不限于如上所述的具有2t个种子比特位置的两个密钥导出集合)。

考虑一个维数为s的种子比特位置向量r=(r1,r2,…,rs),其满足0≤r1≤r2≤…≤rs≤l-1和rs-r1>0。像以前一样,定义

rs+1=l+r1以及r0=-(l-rs)

所述种子比特位置向量r=(r1,r2,…,rs)被定义为不具有孤立分量,如果对于每个种子比特位置ri,i=1,2,…,s,其在所述种子比特位置向量中的至少一个相邻种子比特位置与其的偏移至多是l-1个比特.也就是说,对于每个种子比特位置ri,i=1,2,…,s,

min{ri-ri-1,ri+1-ri}≤l-1(6)

换句话说,一个种子比特位置ri是所述种子比特位置向量r=(r1,r2,…,rs)中的孤立分量,当且仅当其两边相邻的种子比特位置与其的偏移至少是l个比特,即ri-ri-1≥l以及ri+1-ri≥l。

对于多个独立的密钥导出集合i=1,2,…,n+1,其中对于任何i=1,2,…,n+1,以非递减的顺序对种子比特位置1≤j≤t,1≤i≤n+1,进行排序,得到维数为s=(n+1)t的种子比特位置向量r=(r1,r2,…,rs)。所述多个独立的密钥导出集合mi,i=1,2,…,n+1,不具有孤立分量,当且仅当对应的维数为s=(n+1)t的种子比特位置向量r=(r1,r2,…,rs)不具有孤立分量。

定义非孤立分量事件en为

en={mi,i=1,2,…,n+1,不具有孤立分量}(7)

以及非孤立分量事件的概率pn为

pn=pr{en}(8)

可以证明p1=p.进一步定义

由上可以得出ε1=p1=p以及ε2=p2+3p。

在一些实施方案中,所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系可以被定义为l>2t(l-1)。在这样的实施方案中,对于通过方程(1)和(2)从所述密钥库种子k中生成的所述密钥库ψ={ki:1≤i≤λ},以下是成立的:对于任何独立的密钥导出集合i=1,2,…,n+1,其中对于任何i=1,2,…,n+1,

于是,在实施方案中,当所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系被定义为l>2t(l-1)时,对于任何n≥1,通过方程(1)和(2)从所述密钥库种子k中生成的密钥库ψ={ki:1≤i≤λ}是n阶信息理论ε-安全的,其中ε=εn由方程(6)至(9)给出。

现在将讨论pn(因此εn)的上界的一些示例以及对于(l,l,t)的特定配置的p和pn的示例。这里,p=p1。

在一些实施方案中,所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系可以被定义为(n+1)t×(l-1)<l,其中n≥1。在这样的实施方案中,所述独立的密钥导出集合mi,i=1,2,…,n+1,不具有孤立分量的概率的上界可以定义为:

并且

其中s=(n+1)t。

于是,对于(l,l,t)(即密钥库种子长度,加密密钥长度以及每个密钥导出集合中不同种子比特位置的数量)的一些示例实施方案,pn可以被证明是非常小。

对于(l,l,t)的一些示例性实施方案,表1至表5示出了根据(11)和(12)计算的两个或三个独立密钥导出集合不具有孤立分量的概率(即,p和p2)的上界的一些示例,以及密钥库ψ的容量λ的下界的一些示例。

在表1至5中,为了清楚起见,使用了科学记数法,例如1.8247e-12=1.8247×10-12。在表1至5中所示的示例实施方案中,加密密钥长度l被选择为256或者128分别与aes-256或者aes-128是一致。将密钥比特序列长度l选择为300是对所述密钥比特序列k(m1,m2,…,mt)可以被修改为更短的长度(例如使用下面讨论的杂凑函数)的实施方案而言示例说明的。与上面的讨论一起,表1到5中所示的示例实施方案表明,当(l,l,t)被适当选择时,通过方程(1)和(2)从所述密钥库种子k中生成的密钥库ψ={ki:1≤i≤λ}可以在信息理论意义上安全地抵抗对单个文件或密钥的攻击。

表1:p,p2,以及λ的界,其中(t,l)=(5,128)

表2:p,p2,以及λ的界,其中(t,l)=(5,256)

表3:p,p2,以及λ的界,其中(t,l)=(10,128)

表4:p,p2,以及λ的界,其中(t,l)=(10,256)

表5:p,p2,以及λ的界,其中(t,l)=(10,300)

如上所述,在一些实施方案中,例如通过方程(1)和(2)从所述密钥库种子k中生成的示例密钥库ψ={ki:1≤i≤λ},每个密钥比特序列k(m1,mt,…,mt)可以被生成为从所述密钥库种子k中导出的种子比特序列的线性函数。在一些特定实施方案中,所述加密密钥可以被生成为所述密钥比特序列。在这样的实施方案中,如果攻击者能够获取大量加密密钥,则攻击者可以通过求解线性方程组来尝试重构所述密钥库种子k。为了防止这样的重构攻击,一些实施方案可以使用安全杂凑函数来生成所述加密密钥。也就是说,可以将安全杂凑函数应用于所述密钥比特序列k(m1,mt,…,mt)以生成杂凑的密钥比特序列。所述加密密钥随后可以从所述杂凑的密钥比特序列中生成。

函数f(x)是一个单向函数,如果对于f的定义域中的每个输入值x,计算出输出值f(x)是容易的,但是对于f的值域中的几乎所有输出值y,找到一个输入值x使得f(x)=y在计算上是不可行的。(w.diffieandm.hellman,“newdirectionsincryptography,”ieeetransactionsoninformationtheory,vol.22,no.6,pp.644–654,nov.1976.)令φ:{0,1}l→{0,1}u,其中u≤l,是一个安全的杂凑函数,满足下列安全杂凑属性:

p1.对于任何给定的杂凑输出值β,找到一个输入值α使得φ(α)=β在计算上是不可行的。也就是说,所述杂凑函数可以是一个单向函数。

p2.如果输入α是随机的并且在{0,1}l上均匀分布,则其输出β=φ(α)是随机的并且在{0,1}u上均匀分布。

所述杂凑函数φ可以应用于通过方程(1)和(2)从所述密钥库种子k生成的ki:1≤i≤λ中的每个密钥比特序列,以生成相对应的杂凑的密钥比特序列。一个加密密钥然后可以从所述杂凑的密钥比特序列中生成。例如,在一些实施方案中,所述加密密钥可以被生成为所述杂凑的密钥比特序列。在这样的实施方案的一些示例中,一个示例杂凑的密钥库φ(ψ)可以被生成为:

φ(ψ)={φ(k(m1,m2,…,mt)):0≤m1<m2<…<mt≤l-1}(13)

在使用杂凑的密钥比特序列的实施方案中,即使在攻击者能够获取多个杂凑的密钥的情况下,从单向属性p1得知,确定出对应的密钥比特序列k(m1,m2,…,mt)在计算上依然是不可行的。因此,使用杂凑的密钥比特序列的实施方案可以降低重构攻击的风险。此外,杂凑的密钥库φ(ψ)依然是n阶信息理论ε-安全的,其中如下所示,ε=εn。

在实施方案中,当所述密钥库种子,密钥比特长度和由所述被选取的密钥导出集合中不同种子比特位置组成的集合之间的关系被定义为l>t(l-1)时,对于任何n≥1,(13)中定义的示例杂凑的密钥库φ(ψ)是n阶信息理论ε-安全的,其中ε=εn由(6)至(9)给出。

现在将描述用于从密钥库种子中生成一个或多个加密密钥的实施方案的示例实现。在所述示例实现中,加密密钥被生成为杂凑的密钥比特序列。

在该示例中,密钥库种子k1可具有4096个比特的第一比特长度l,并且密钥比特序列(以及加密密钥)可各自具有256个比特的第二比特长度l。所述密钥库种子k1包括多个种子比特或一个由种子比特组成的集合k1=k1(0)k1(1)…k1(4095)。多个密钥导出集合m可以被确定,其中每个密钥导出集合对应一个加密密钥,并被定义为包括多个密钥导出值mi。对于每个加密密钥,其对应的密钥导出集合中的所述多个密钥导出值指示了如何从所述密钥种子k中导出该加密密钥。例如,每个密钥导出值mi可以对应于所述密钥库种子k1中的一个不同种子比特位置。

在一些实施方案中,对于任何密钥导出集合0≤m1<m2<…<m5≤4095,我们可以定义一个密钥比特序列为:

其中字符串求和是二进制加法,并且整数相加是关于模4096的。在该示例中,包括多个加密密钥的密钥库ψ可以根据下列公式从所述随机种子k1中生成为杂凑的密钥库:

ψ={hmac(k(m1,m2,…,m5),m1||m2||m3||m4||m5||otherlnput):

0≤m1<m2<…<m5≤4095}

其中hmac代表密钥杂凑消息认证码,其在这里例如把sha-256杂凑作为其嵌入式的杂凑函数(参见例如,nationalinstituteofstandardsandtechnology,thekeyed-hashmessageauthenticationcode(hmac).federalinformationprocessingstandardspublication198-1,july2008),||表示串联,并且otherinput表示可以与m1,m2,…,m5一起附加到加密数据的其他密钥资料。在上面的例子中,为了从所述密钥种子k1中生成任何单独的加密密钥,可以指定一个特定密钥导出集合的密钥导出值m1,m2,…,m5。

注意到在这个例子中,λ≥253。可以进一步证明,在这种情况下,上面提到的特性(1)至(4)是满足的。具体而言,下面是成立的:

a)给定任何密钥导出集合,其密钥导出值为0≤m1<m2<…<m5≤4095,所对应的密钥比特序列k(m1,m2,…,m5)以及加密密钥在{0,1}256上是均匀分布的。

b)对于任何一对密钥导出集合(m1,m2,…,m5)≠其中0≤m1<m2<…<m5≤4095且0≤密钥碰撞的概率是

c)对于任何两个独立的密钥导出集合(m1,m2,…,m5)和其中0≤m1<m2<…<m5≤4095且0≤我们有:

结果(a)至(c),连同hmac的性质一起,又意味着上述特性(1)至(4)。

考虑到信息理论ε-安全性的特性,本文描述的用于通过在密钥库种子上使用线性操作来生成密钥的实施方案可以安全地抵抗对单个文件或密钥的任何攻击。此外,使用杂凑的加密密钥φ(ψ)的实施方案可以进一步强有力抵抗密钥库种子重构攻击。如在表1至5中所示,当所述密钥库种子的长度合理时,可以通过使用本文描述的实施方案来随机生成的密钥的数量λ也足够大到支持适用于大多数应用的实用一次性密钥。

本文描述的实施方案可以通过改为管理单个密钥库种子k来简化管理大量随机生成的密钥。使用较小的密钥库种子,可以简化密钥库种子管理,而另一方面,从密钥库种子中生成的随机密钥的数量λ应该足够大到支持实用otp。因此,当密钥库种子必须要是短的时候,密钥库种子的长度可以基于特定应用(诸如通过物联网连接的设备)来选择。相应地,在满足信息理论ε-安全性的前提下,其中ε较小,以及每个密钥易于从它的密钥信息和所述密钥库种子中计算出来的条件下,不同的实现可能会在λ和密钥库种子的长度之间的折衷方面具有不同的结果。

在一些实施方案中,密钥比特序列可以从所述密钥库种子和一个被定义为密钥导出矩阵的密钥导出集合中确定。所述密钥比特序列可以按照下列公式确定:

kt=akt(14)

其中密钥库种子k=(k(0),k(1),…,k(l-1))被定义为长度为l的行向量,其包括来自所述密钥库种子k的种子比特;密钥比特序列k可以被定义为由来自所述密钥比特序列k(m1,m2,…,mt)的密钥比特组成的长度为l的行向量;k和k的转置向量分别记为kt和kt;并且密钥导出矩阵a=(aij)0≤i≤l-1,0≤j≤l-1是一个l×l的矩阵,其对应于所述密钥导出集合(m1,m2,…,mt),其中

在(15)中,ma和i的相加是关于模l的。注意到所述密钥导出矩阵a中的每一行都包含t个1。a将被称为行重为t的斜线矩阵。在行重为t的斜线矩阵与密钥导出集合向量(m1,m2,…,mt)之间,其中0≤m1<m2<…<mt≤l-1,有一对一的对应关系。令g(l,l,t)包含由所有大小为l×l,行重为t的斜线矩阵组成的集合。那么(2)中的密钥库ψ也可以重写为

ψ={kt=akt:a∈g(l,l,t)}(16)

a的斜线结构为所述密钥库ψ中的加密密钥提供了简单的密钥索引。在一些实施方案中,为了使所述密钥库ψ保持是信息理论ε-安全的,在(14)和(16)中可能没有必要使用斜线矩阵。例如,令g(l,l)是一个由l×l的二元矩阵组成的集合,使得

p1.每个密钥导出矩阵a∈g(l,l)具有秩l;

p2.对于任何两个不同密钥导出矩阵a1,a2∈g(l,l),它们的模2之和a1+a2仍然具有秩l,并且

p3.对于任意两个从g(l,l)中随机选取的独立密钥导出矩阵a1,a2,大小为2l×l的矩阵具有秩2l的概率至少为(1-ε)。

将(14)和(16)中的g(l,l,t)替换为g(l,l),示出了这样的实施方案仍然可以提供信息理论ε-安全性。

一个特定的密钥库ψ(l,l,ε,n)(a)可以被定义是一个由根据算法a从所述长度为l个比特的随机密钥库种子k和密钥索引i中生成的长度为l的加密密钥组成的集合,使得ψ(l,l,ε,n)(a)是n阶信息理论ε-安全的,其中ε较小。定义线性密钥容量为

和一般密钥容量为

其中(17)中的最大化是在所有可能的线性算法中求解,每个线性算法使用线性运算从所述长度为l个比特的随机密钥库种子k和密钥索引i中生成长度为l的密钥,并且(18)中的最大化是在所有可能的密钥生成算法a中求解。我们将称为随机密钥库种子k的具有参数(l,ε,n)的线性密钥容量,并且称c(l,l,ε,n)为随机密钥库种子k的具有参数(l,ε,n)的一般密钥容量。当ε=εn时,(2)中的密钥库ψ的大小给出了线性密钥容量的下界。

本文描述的用于信息理论ε-安全的密钥生成的实施方案可以与用于数据压缩的过程相对照。在数据压缩中(参见,例如,t.coverandj.thomas,elementsofinformationtheory.wiley&sons,newyork,2006;j.c.kiefferande.-h.yang,“grammarbasedcodes:anewclassofuniversallosslesssourcecodes,”ieeetrans.inform.theory,vol.it-46,no.3,pp.737–754,may2000;e.-h.yangandj.c.kieffer,“efficientuniversallosslesscompressionalgorithmsbasedonagreedysequentialgrammartransform–partone:withoutcontextmodels,”ieeetrans.inform.theory,vol.it-46,no.3,pp.755–777,may2000),其目的是将一个长序列的(强或弱)相关的随机比特压缩成一个较短序列的独立且均匀随机的比特。相反,在信息理论ε-安全的密钥生成的实施方案中,其目的是将一个较短序列的独立且均匀随机比特(即,密钥库种子)扩展为一个更大的由弱相关密钥组成的集合,其中每个密钥仍然在密钥空间{0,1}l上均匀随机。

现在参考图2,在那里示出是加密过程200的示例实施方案。加密过程200是可以由安装在计算设备102上的加密应用114执行的过程的示例。可以把所述加密应用114提供给计算设备102,例如通过从q服务器130上下载的方式,以安装在该计算设备上。

在210处,所述加密应用114可以被操作以生成密钥库种子。所述密钥库种子包括一个由放在一个有序序列上的l个种子比特组成的种子比特集合。通常,l将是一个大于3的整数,并且表1至5中已经给出了l的一些具体示例。所述种子比特集合中的每个种子比特在所述有序序列上有一个种子比特位置。所述种子比特集合中的所述种子比特也可以是独立且相同分布的,使得每个种子比特在种子比特空间内取任何值的概率是相等的。

在一些情况下,借助于q-服务器130的帮助,所述加密应用114可以生成一个或多个密钥库种子。服务器130可以为第一用户随机生成服务器密钥值。所述服务器密钥值可以被存储在所述服务器的非易失性存储器中并且被发送到设备102。所述加密应用114可以基于所述服务器密钥值和多个密钥指示符来生成所述多个密钥种子。

一些实施方案中,加密应用114可以将密钥指示符量发送到q-服务器130。所述密钥指示符量可以识别一些由所述加密应用114生成的密钥指示符。所述密钥指示符量可以是一对整数(0,j)的形式。对服务器130来说,所述密钥指示符量表明请求服务器130的协助以生成密钥库种子。

在接收到所述密钥指示符量(例如,整数对(0,j))时,q-服务器130可以生成服务器密钥值,其为独立的随机数v0,v1,…,vj。所述服务器密钥值可以是随机数。服务器130可以将随机数v0,v1,…,vj发送回所述加密应用114。然后,所述加密应用114可以使用那些随机数来生成一个或多个独立的密钥库种子。用于生成密钥库种子的方法的更多细节,在申请人的pct专利申请和申请人的美国专利申请中有描述,其中所述pct专利申请提交于2015年6月12日,其申请号为pct/ca2015/050543,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为wo2015/188277的pct专利出版物;所述美国专利申请提交于2015年6月12日,其申请号为14/737,940,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为us2015/0363607a1的美国专利出版物。

所述加密应用114可以将所述密钥库种子存储在计算设备102上。所述密钥库种子可以以加密方式存储,例如在可以在计算设备102上确定所述密钥库种子之前需要验证码的情况下。

在220处,所述加密应用114可以确定多个密钥导出集合。每个密钥导出集合可以被确定为包括多个密钥导出值。所述密钥导出值可以对应于所述密钥库种子的所述有序序列中的种子比特位置。

在一些实施方案中,每个密钥导出集合中的密钥导出值可以包括一个由所述有序序列中的t个不同的种子比特位置组成的集合,其中t是大于或等于1的整数。所述多个密钥导出集合可以被确定为把所有可能的由t个不同的种子比特位置组成的集合包括在其中。也就是说,在一些实施方案中,每一个可能的由t个不同的种子比特位置组成的集合可以被确定是所述多个密钥导出集合中的一个。因此,所述多个密钥导出集合可以包括所述有序序列中的t个不同的种子比特位置的所有可能的排列。

在一些实施方案中,每个密钥导出集合可以是一个大小为l×l,秩为l的二元矩阵。所述多个密钥导出集合可以确定为包括多个大小为l×l,秩为l的二元矩阵,其中所述多个二元矩阵被确定为使得它们中的任何两个二元矩阵的模2之和仍然具有秩l。

在230处,所述加密应用114可以选择所述多个密钥导出集合中的一个密钥导出集合作为被选取的密钥导出集合。所述加密应用114可以随机地选择所述被选取的密钥导出集合。例如,每个密钥导出集合可以与一个特定的密钥索引相关联。所述加密应用114可以随机地选择密钥索引值(例如,使用随机数发生器),然后通过识别与该密钥索引值对应的密钥导出集合来确定所述被选取的密钥导出集合。

在240处,所述加密应用114可以从所述种子比特集合和所述被选取的密钥导出集合中生成一个密钥比特序列。所述密钥比特序列可以具有l个比特,其中l是一个小于l的正整数。在一些情况下,所述密钥比特序列可以通过对所述种子比特集合应用线性运算来生成。在其他情况下,可以将非线性操作(例如单向函数和杂凑函数)应用于所述种子比特集合以获得所述密钥比特序列。

在一些实施方案中,所述加密应用114可以通过从所述种子比特集合中确定多个导出的种子比特序列来生成所述密钥比特序列。对于所述被选取的密钥导出集合中的每个密钥导出值,所述多个导出的种子比特序列可以包括一个与之相应的导出的种子比特序列。

例如,对于被选取的密钥导出集合中的所述t个不同的种子比特位置中的每一个种子比特位置,一个导出的种子比特序可以从所述种子比特集合中确定。每一导出的种子比特序列可以被确定为包括来自所述种子比特集合中(沿着所述有序序列)相连贯的l个比特。每一导出的种子比特序列的所述相连贯的l个比特起始于一个特定的种子比特,后者在所述有序序列中的种子比特位置等同于所述被选取的密钥导出集合中相对应的种子比特位置。每一导出的种子比特序列然后可以包括沿着当所述有序序列首尾相连时行成的循环圈随后相连贯的l-1个种子比特。所述密钥比特序列然后可以被确定为所述多个导出的种子比特序列的线性函数(例如,加,减)。

例如,如上面方程(1)所示,所述密钥比特序列k(m1,m2,…,mt)可以按照下列公式来生成

其中每一导出的种子比特序列由k(mi)k(mi+1)…k(mi+l-1)确定,而且所述被选取的密钥导出集合定义为0≤m1<m2<…<mt≤l-1。

在一些实施方案中,生成所述密钥比特序列可以包括把所述密钥库种子看成是一个维数为l的种子列向量,然后以所述密钥库种子乘是一个大小为l×l的二元矩阵的所述被选取的密钥导出集合。所述密钥比特序列然后可以被确定为由所述乘法产生的维数为l的密钥列向量。

例如,如上面的方程(14)所示,所述密钥比特序列可以按照下列公式来生成

kt=akt

其中所述被选取的密钥导出集合被定义为一个大小为l×l,秩为l的二元矩阵a,k=(k(0),k(1),…,k(l-1))是所述维数为l的密钥库种子行向量,其包括所述有序序列中在他们各自种子比特位置上的所述种子比特集合的种子比特,并且kt和kt分别是k和k的置换。

在250处,所述加密应用114可以使用所述密钥比特序列来生成一个加密密钥。所述加密密钥可以具有u个比特,其中u是一个不大于l的正整数。在一些情况下,所述加密应用114可以把所述加密密钥生成为在240处确定的所述密钥比特序列。在其他情况下,所述加密应用114可以对在240处确定的所述密钥比特序列应用线性操作以生成所述加密密钥。

在一些情况下,所述加密应用114可以通过将杂凑函数应用于所述密钥比特序列来确定一个杂凑的密钥比特序列。所述加密应用114然后可以使用所述杂凑的密钥比特序列来确定所述加密密钥。在一些情况下,所述加密应用114可以将所述加密密钥确定为所述杂凑的密钥比特序列。

在260处,所述加密应用114可以确定与在250处生成的所述加密密钥相对应的密钥信息。所述密钥信息可以从用来生成所述加密密钥的所述被选取的密钥导出集合中确定。所述密钥信息被生成以使得所述加密应用114能够从所述密钥库种子中重新生成所述加密密钥。

所述加密应用114可以生成所述密钥信息,使得所述被选取的密钥导出集合可以从所述密钥信息中导出。例如,所述加密应用114可以为所述多个密钥导出集合定义密钥导出索引。所述密钥信息然后可以被定义为包括对应于所述被选取的密钥导出集合的密钥导出索引值。在一些情况下,所述加密应用114可以把所述密钥信息生成为所述被选取的密钥导出集合的密钥导出值。

所述加密应用114还可以生成所述加密密钥的密钥信息,使得所述加密密钥和所述密钥信息之间的交互信息量是零。相应地,所述加密密钥和所述密钥信息可以被生成为统计上是独立的。如此,在对所述密钥库种子一无所知的情况下,所述密钥信息直接对所述加密密钥的信息泄露是零。

于是,如果加密文件与其密钥信息一起被发送,则所述密钥信息不提供任何附加信息以允许攻击者解密所述加密文件,除非攻击者也知道所述密钥库种子。因此,加密文件可以与相应的密钥信息(可能甚至以明文形式)一起发送给具有相同密钥库种子的接收方,以允许它们容易地解密所述加密文件。

所述加密应用114可以从随机密钥种子k1,k2,…,kj中导出多个加密密钥(即密钥库ψ)ψ={ki:1≤i≤λ},其中λ是一个大数。当所述加密应用114接收到一个文件要加密时,所述文件可以通过使用来自所述密钥库ψ的导出的加密密钥之一来加密。类似地,当一个文件被移动到所述加密应用114或者在所述加密应用114的控制下被修改时,所述加密应用114可以使用导出的加密密钥来加密和存储所述新的或修改的文件。例如,所述加密应用114可以从所述密钥库中选择一个加密密钥以用于对所述文件加密。在一些情况下,当所述加密应用114接收到要被加密的文件的指示(例如,文件正被移动到所述加密应用114的指示,文件正在所述加密应用114中被创建以供存储的指示,或文件正在所述加密应用114中被修改的指示)时,所述加密应用114可以从所述多个加密密钥中随机选择特定加密密钥。所述加密应用114然后可以将加密的文件与密钥信息一起存储,其中所述密钥信息指示如何从所述密钥种子k1,k2,…,kj或者从所述密钥库ψ导出该文件的特定加密密钥。

例如,所述加密应用114可以为所述多个导出的加密密钥生成密钥索引。所述密钥索引可以为所述多个加密密钥或密钥库中的每个加密密钥定义密钥索引值。当一个特定加密密钥从所述多个加密密钥中被选择并用于加密一个文件时,该文件的密钥信息可以包括该特定加密密钥的密钥索引值。

现在参考图3,在那里示出的是用于生成和存储密文数据的过程300的示例实施方案。过程300可以通过使用在计算设备102中的一台计算设备上的加密应用114来实现。

在310处,所述加密应用114可以接收要加密的明文数据。例如,所述加密应用可能会收到未加密的文件,如文档或图像文件。所述加密应用也可以接收其他明文数据,如消息。所述加密应用114然后可以被用来加密所述明文数据,以便,例如,用于在所述设备102上存储,用于传输到云服务器150以用于存储,用于传输到第二设备102b(例如通过网络或者通过云服务器150直接传输到第二设备102b,或者以其他方式传输到第二设备102b)或用于传输到其他设备或存储平台以用于加密存储,或者解密和查看,或编辑。

在320处,所述加密应用114可以通过使用加密密钥(诸如在过程200中的250处生成的加密密钥)来对所述明文数据加密,从而从所述明文数据中生成密文数据。如上所述,所述加密密钥可以以各种方式导出,例如通过从密钥库选择特定加密密钥。当所述加密应用114接收到要加密的明文数据的指示时,所述加密密钥可以是随机选择的或随机生成的。

使用第一设备102a上的(一个或多个)密钥库种子,该设备上的加密应用114可以生成一个或多个加密密钥,如上面在过程200中所述。在一些情况下,所述加密应用114可以生成多个加密/解密密钥,即第一设备102a上的密钥库。通常,由所述加密应用114生成的多个加密/解密密钥可以是对称的加密/解密密钥。所述多个加密密钥然后可以被存储在第一设备102a的非易失性存储器上。在一些情况下,所述多个加密密钥可以在被存储在第一设备102a的非易失性存储器上之前被加密(例如,使用验证码)。在这种情况下,所述加密应用114可以选择所存储的加密密钥中的一个来用于加密所述明文数据。

或者,如上所述,所述加密应用114可以不在计算设备102上存储加密密钥。相反,所述加密应用114可以在每次要加密明文数据时使用所述密钥库种子来生成加密密钥。对应于所生成的加密密钥的密钥信息也可以如过程200中的260处所描述的那样来生成。

在330处,所述加密应用114可以把在320处生成的密文数据与其相应的密钥信息一起存储。所述密钥信息可以使所述加密应用能够生成所述加密密钥,以便随后解密所述密文数据。

所述加密的文件/密文数据可以被存储到所述设备102的非易失性存储器中。在一些情况下,所述加密的文件不需要被存储到所述设备102。例如,所述加密的文件连同所述密钥信息一起可以被传送到另一台设备102或云服务器150。在一些实施方案中,所述文件和加密文件可以在传输之后从对其加密的设备102中擦除。

如上所述,所述加密应用114可以根据需要生成加密密钥以加密明文数据或者解密密文数据。于是,每次在生成或解密特定密文数据之后,所述加密应用114可以从计算设备102中删除其相应的加密密钥和密钥比特序列。因此,所述加密密钥本身不易从其被存储在所述设备的过程中被识别出来。此外,所述加密应用114可以减少所述计算设备102上所需的存储量。

现在参考图4,在那里示出的是可用于根据一示例实施方案对密文数据进行解密的过程400的示例实施方案。过程400可以通过使用与用于对所述明文数据加密的设备相同的设备102上的加密应用114来实现,或者通过使用具有所述加密应用的另一台设备上的加密应用114来实现。

无论是在与用于对所述明文数据加密的设备相同的设备102上,还是在不同的设备102上,过程400的操作通常都是相同的,只要每台设备具有相同的密钥库种子。第二计算设备可以被提供加密应用114,以便在其上安装。在所述第二计算设备处,所述加密应用114然后可以被用来确定所述密钥库种子及其种子比特集合。所述加密应用114随后可以用来同步设备之间的密钥库种子。

为了让经由第一设备102a上的加密应用114加密过的文件,在它们被从所述第一设备102a移动到第二设备102b之后,可以被第二设备102b(或任何其他设备102)上的加密应用114解密,在一些示例操作中,所述密钥库种子{k1,k2,…,kj}可以在设备102间同步。如上面所述以及在申请人的pct专利申请和申请人的美国专利申请中描述的那样,所述密钥库种子可以在计算设备之间手动地或自动地同步,其中所述pct专利申请提交于2015年6月12日,其申请号为pct/ca2015/050543,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为wo2015/188277的pct专利出版物;所述美国专利申请提交于2015年6月12日,其申请号为14/737,940,标题为“methods,systemsandcomputerprogramproductforprovidingencryptiononapluralityofdevices”,现已发表成序号为us2015/0363607a1的美国专利出版物。

在410处,密文数据可以被一台计算设备102接收。所述密文数据可以是从另一台计算设备102处接收到的,从云服务器150检索到的,或者被以其他方式传送给所述计算设备102。在一些情况下,所述密文数据可能已经被存储在所述计算设备102上,并且被所述加密应用114接收以便解密。

在420处,密钥信息也可以在所述计算设备处被接收到。所接收到的密钥信息对应于在410处接收到的密文数据以及用于生成已被用来加密所述密文数据的加密密钥的密钥库种子。

在一些情况下,所述密文数据和密钥信息可以由不同于在其上生成所述密文数据的计算设备的第二计算设备102接收。在这样的情况下,所述第二计算设备102可能需要在其上生成与已被用来加密所述密文数据的密钥库种子(以及种子比特集合)相同的密钥库种子(以及种子比特集合)。

在430处,所述加密应用114可以从所接收的密钥信息中确定密钥导出集合。所确定的密钥导出集合对应于用于生成已被用来加密所述密文数据的加密密钥的被选取的密钥导出集合。

在440处,所述加密应用114可以从所述种子比特集合和在430处确定的密钥导出集合中生成具有l个比特的密钥比特序列。所述密钥比特序列可以以与上面在过程200中的240处描述的方式相同的方式来生成。

在450处,所述加密应用可以使用在440处确定的密钥比特序列来生成具有u个比特的加密/解密密钥。所述加密/解密密钥可以以与上面在过程200中的250处描述的方式相同的方式来生成。

在460处,所述加密应用114可以通过使用在450处确定的加密/解密密钥来解密所述密文数据,从接收到的密文数据中生成明文数据。所述计算设备的用户然后可以查看和/或操纵所述明文数据。

所述加密应用114可以对用户选择的密文文件进行解密,并将解密后的明文文件临时存储在设备102的易失性存储器中供所述用户阅读和/或编辑。在所述用户关闭每个明文文件之后,如果没有改变,则所述加密应用114可以从所述设备的易失性存储器中擦除所述明文文件。所述加密应用114可以使用特定密钥(例如,从所述密钥库ψ中随机选取的新密钥,与原密钥相同的密钥,或新导出的加密密钥)再次加密所述明文文件,并将加密后的文件存储在所述设备102的非易失性存储器中。

如果在停止访问所述明文文件时,所述用户已经对所述明文文件进行了任何改变,那么所述加密应用114可以用新加密的文件覆盖所述设备102的非易失性存储器中的原始加密文件,然后从设备102的易失性存储器中擦除所述明文文件。再次,所述加密应用114可以将密钥信息与加密后的文件一起存储,以使该文件的加密密钥能够从所述密钥库种子信息或从所述密钥库中导出。

本文描述的实施方案可以被实现为提供可以实现一个文件一个密钥安全加密(也称为实用一次性密钥)的密钥生成和管理的系统,方法,设备和计算机程序产品。在一些这样的实施方案中,从信息理论的角度来看,每个单独的文件可以通过使用它各自独有的密钥来加密。

根据信息理论ε-安全性,本文已经描述了实施方案来衡量密钥库(即,一个由随机密钥组成的集合,ki,1≤i≤λ,每个随机密钥具有l个比特的长度)的安全性。在本文描述的实施方案中,所述密钥库和相应的加密密钥可以从密钥库种子生成,该密钥库种子可以以一个由种子比特组成的集合的形式被提供,所述种子比特集合可以被定义为具有l个比特的随机字符串。

本文已经描述了用于从所述密钥库种子中生成加密密钥的方法的各种实施方案。这些包括线性密钥生成方法以及杂凑的密钥生成方法。由此产生的密钥库ψ={ki:1≤i≤λ}和φ(ψ)={φ(ki):1≤i≤λ}的示例已经被证明是信息理论ε-安全的,其中ε较小。上面描述的具有l=216和l=256的特定示例表明λ可以大于2138并且ε可以小于8.205×10-12。在示例密钥库ψ和φ(ψ)中生成的加密密钥的信息理论ε-安全性,连同可以容易地从所述密钥库种子和密钥导出集合(和密钥导出值)生成的加密密钥的大数量λ,可以实现实用一次性密钥在大规模数据通信和存储系统中的应用,同时消除分配和管理大量随机密钥的挑战。

本文已经描述了多个示例实施方案。然而,本领域的技术人员将会理解的是,在不脱离如所附权利要求书限定的实施方案的范围的情况下,可以进行其他变化和修改。

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