发明背景
本发明属于密码过程和装置的领域。密码学是用于对数据进行加密(亦称编码)或者用于对加密数据进行解密(亦称解码)的技术。尽管此技术长期在军事和外交领域中使用,但其今已扩展到公共领域和商界。现如今在经济上至关重要的是具有强且安全的密码系统以保护商业数据和银行通信。
定义
在揭露现有技术之前,将给出我将在本文件中使用的一些技术术语的定义。这些定义将适用于整个文件(说明书、权利要求书、说明书摘要)。
所谓术语“数据”是指所有种类的信息、知识、文本、消息、文件、图、数值结果、图片、图像、它们中的一些或全部的组合,或能够通过字符的序列来表达、转录或者建模的项目。
所谓术语“字符的序列”是指以下各项的序列:指符号(字母、数值、标点符号等)、所有种类的空间、象形符号、表意文字、数字、基于数个状态的码(例如摩斯码、电传码、电子设备中的数字二进制码等)、可能遵循编码方案(例如ascii、ansi、unicode、baudot或其他)的数值码(二进制、十进制、十六进制或无论什么基数)、任何等同物的或它们中的一些或全部的组合。并且我因此将“字符”定义为从其做出字符的序列的元素。
所谓“随机序列”是指这样的字符序列,其中即使知道在序列中哪些是前一个字符(和/或接下来的字符)也无法预测哪一个字符将处于序列中的特定位置,并且这适用于序列中的每个位置。
现有技术
几个世纪以来,vigenère密码被认为是最安全密码系统之一。它基于每个字母用按字母表顺序移位的另一个字母的取代,其中不同的移位适用于消息的每个字符。为了记住不同移位的序列,已创建了“密钥”的系统。密钥是单词或句子,其中每个字母给出要应用的移位,对于“a”考虑“0”,对于“b”考虑“1”,对于“c”考虑“2”,直到对于“z”考虑“25”为止。并且密钥是循环的直到要加密的文本的结尾为止。
此技术已在第一次世界大战期间被用于gilberts.vernam的“printingtelegraph”(电传打字机)(美国专利1,310,719)。在此系统中,字符使用baudot码被按照二进制编码。这意味着存在仅两个符号和两个可能的移位:无或“移位到另一个符号”。并且因为密钥被放在磁带上,所以随机序列开始被使用,因为不再需要记住密钥。
针对vigenère密码做出的首次成功的攻击由friedrichkasiski完成,并且更高效的攻击由williamfriedman设计出。两个技术利用了密钥被反复使用这一事实。
为了对抗这些技术,已经设计使用至少和要加密的文本一样长的密钥。找到此类密钥的最好方式是使用书本(当然,对位置而言是未知的)。然而,这种密码仍然可被解密,因为密钥承载含义。
美军少校josepho.mauborgne找到了该问题的解决方案。了解了vernam系统及其随机密钥之后,他通过设定和要加密的文本一样长的随机密钥并且通过规定每个随机密钥应该被使用仅一次来使其完善。
这种系统被称为一次一密(onetimepad),并且已正式地证明了这种密码系统是完全不可被破解的。然而,使用密钥仅一次的强加条件实际上是为什么这种充分证明的密码系统很少被使用的原因:除必须生成大量的随机密钥之外,主要问题是通过安全信道将密钥发送到接收方。这被称作“密钥分发问题”。似乎显然的是,如果这种安全信道存在,则个人将使用该安全信道来通过它直接发送其消息而不是发送随机密钥并且然后发送加密消息。
解决此问题的一个尝试是使用非常小的随机密钥并且根据它计算伪随机序列(所有元素从先前的元素和/或从计算的先前状态计算的序列),而不是使它循环。这个小随机密钥通常使用公开密钥密码学(参见下面)被发送到接收方,并且从它生成的伪随机序列被用作加密密钥。这种密码系统被称作“流密码(streamcipher)”。
就像一次一密一样,提供和文本一样长的密钥没有意义。然而,与一次一密相反,密钥的元素彼此相关的事实正在显著性地消弱系统,最终允许密码分析者将其破解:在暴力破解攻击(brute-forceattack)(其中每个可能的密钥被依次尝试)的情况下,将存在较少密钥要尝试(仅所有小随机密钥而不是全长密钥)并且密钥的计算字符之间的相关性不允许如此多的虚假密钥(若有的话)。
还使用“短”随机密钥的另一系列密码系统是“块密码”系列。这里,数据被按固定长度的块截断,所述块被加密数次。每次(被称作“轮”)块使用数个技术(置换和取代)来加密时,每轮利用不同的密钥,所有这些密钥使用定义算法从短随机密钥计算。轮数被假定为防止使用传统技术向后用密码分析法破译。然而,与一次一密相比,我们具有与针对暴力破解攻击的流密码相同的问题。
代替秘密密钥,公开密钥密码学使用一个现未解决的数学问题(例如大数字的因式分解)以便对数据进行编码。密码系统的此系列的基本原理是使加密密钥和解密密钥分开,加密密钥是公开的(因为它不能够被用来对消息进行解密)并且被给予给潜在发送方,解密密钥是秘密的并且由接收方保持,并且创建单向通信信道(因此,为了在两个人之间具有双向通信信道,一个人需要创建两个单向通信信道,这做出两个公开密钥和两个秘密密钥)。
所以,此方案解决“密钥分发问题”,因为不再需要安全信道来交换和文本一样长的秘密密钥。然而,所述密码系统通常是费时的,所以在实践中,它被仅用来对非常短的数据(例如小真随机密钥)进行编码,长数据使用先前描述的密码系统(使用所发送的小随机密钥)来编码。
然而,应该知道,与一次一密相反,公开密钥密码学并非无条件安全的,因为不可能证明没有人已(秘密地)解决了该密码系统基于的数学问题。
技术实现要素:
技术问题
因此,为了具有能够对抗技术演进的完全安全的密码系统和密码分析技术,仍然在寻找比一次一密无条件安全但没有“密钥分发问题”的密码系统。
解决方案
我正在公开的是一种用于使用一个或数个随机序列作为密钥来对数据进行加密(亦称编码)或者对加密数据进行解密(亦称解码)的新密码方案(及其实施方式和实施例中的一些),所述密钥至少和要处理的数据一样长。所公开的密码过程包括一个或数个随机序列生成过程,一个加密过程和一个解密过程。加密过程和解密过程两者使用来自随机序列生成过程的随机序列来(分别)对数据进行加密和解密。
以基本方式,一个随机序列生成过程包括至少一个伪随机生成过程和一个随机映射过程。伪随机生成过程向随机映射过程发送伪随机序列。随机映射过程使用伪随机序列来利用用于将伪随机序列的元素转换成随机序列的随机元素的随机转移图来生成随机序列。此随机转移图实际上被仅提供给被允许对数据进行加密和解密的人。
以更复杂方式,一个随机序列生成过程可以包括一个或数个伪随机生成过程和数个随机映射过程。一个伪随机生成过程能够将其输出发送到一个或数个随机映射过程。并且一个随机映射过程还能够接收一个或数个其他随机映射过程的输出以及甚至它自己的输出的反馈作为输入。另外,可能可以针对每个密码会话对随机转移图进行变换。
此公开的密码过程能够被以被称作“隐结构”的数个方式具体实现:具有适当软件的计算机(台式机、膝上型电脑、工作站或任何型式,包括平板计算机和移动电话),以及微控制器或嵌入式电子设备或专用电子电路或智能卡,或目前存在或者将来开发的其等同物中的任一个(“隐结构”的此定义将适用于整个文件,包括权利要求书)。
优点
所公开的密码过程使用一个或数个随机序列作为密钥。直到现在为止,此类随机序列是以不可再现方式生成的,从而导致一次一密系统所面对的密钥分发的问题。这是由于关于随机性的误解而导致的,从而防止人们做出能够再现同一(真)随机序列数次的随机序列生成器,诸如我们在本文件中公开的生成器。
对于许多人来说,随机性来自完全逃避任何规则的混杂现象,从而导致完全不可预测的结果。实际上,如果混杂现象将不遵循任何规则,则将不能够使混杂系统同步,但实验证明完全相反。
而且,如果一个人投掷骰子,或从不透明袋子中抽彩球,则结果被认为是随机的。但是如果袋子不是不透明的,或者如果骰子是以完全相同的方式投掷的,则使用相同的力和相同量的能量,结果将不再被认为是随机的,因为对过程存在完全控制,从而产生人可期望的结果。
因此,我们能够将随机性定义为结果的不可预测性,并且也就是说,实际上为在密码学中使用的随机性的特有特性。为了获得此不确定性,此结果必须来自一个人未完全控制的过程。结果,只要每个人对序列来自于的生成过程缺少某种控制,我们就能够推断任何序列是随机的。
因此,能够从受控和不受控过程的混合获得随机序列,不受控过程保证序列的随机性。在这里所公开的密码过程中,一些受控和不受控过程的组合被使用,以便生成呈现对具有来自不受控过程的结果数据的人们(以及仅那些人)来说可再现的特质的随机序列。因此,能够使用这些随机序列以便创建和一次一密一样强的密码系统,但是不需要分发大量的密钥,因为这些“一次密钥”实际上在通信信道的两侧被生成(在消息传送系统的情况下,在这里被用作示例)。
这里,仅来自不受控过程的结果数据需要被分发。事实上,将在所撰写的说明书中看到,能够使用此密码过程来实现无条件安全的通信信道。如此因为我们能够通过此信道(一旦被建立)来发送所述密钥,所以“密钥分发问题”得以解决。因此我们得到一个最强密码系统,其具有极少的密钥分发事项(但没有“密钥分发问题”)并且是无条件安全的,从而可获得一个最有用的密码系统。
附图说明
为了更容易地遵循完整描述,随本文件提供了一些附图。然而,尚不能够将所有情况整合到一个附图中。因此,详细描述将呈现附图中未明显绘制的变型。附图实际上是使基本原理形象化的辅助。
图1是示出所公开的密码过程的基本运算的流程图。
图2是示出具有可选特征的随机序列生成过程的内部运算的流程图。可选流程用虚线表示。
详述
我们现在将描述不同的实施例。我们将集中于所公开的密码过程及其实施例的特质。因此,将不提及本领域的技术人员所知道的用于改进密码过程的强度的所有技术(诸如对数据进行压缩以便将冗语减至最少、使用顺序地填充并且伪随机挑选的缓冲器表来增强序列随机性等),但涵盖它们对所公开的密码过程及其实施例的可用性。
密码过程
装置实施例(通常)遵循本文所公开的原始密码过程实现密码系统以便对数据进行加密,或者以便对加密数据进行解密。这个密码过程使用一个或数个随机序列生成过程1(参见图1)、加密过程2和解密过程3。随机序列生成过程1基于一个或数个伪随机序列生成过程6(参见图2),并且基于一个或数个随机映射过程7。
伪随机序列生成过程能够使用线性同余数生成器算法(或其系列中的一些)、逆同余数生成器算法(或其系列中的一些)、线性反馈移位寄存器算法(或广义反馈移位寄存器)、blumblumshub伪随机生成器算法、基于一个或数个混杂方程(例如,logistic差分方程;参见美国专利5,048,086)的算法、基于一个或数个混杂方程系统(例如,洛伦兹系统;参见美国专利6,078,665)的算法、基于分形方程(例如,朱莉娅集(juliaset)或曼德勃罗集(mandelbrotset))的算法,或其输出被散列函数弄乱的这些和其他伪随机生成算法中的任一个,或由实施者所期望的任何伪随机生成算法,或它们中的一些的任何组合(对来自数个输出的字符使用混合运算(稍后说明)或无论什么运算)。
“随机映射过程”是使用字符的随机序列(被称作“随机转移图”4)以便使用图挑选协议将来自传入序列的每个字符映射成传出序列的随机字符的过程。“图挑选协议”是用于在来自输入数据的序列中选择元素的方式,诸如模数索引、归一化索引、n维表索引、经调整的n维表索引,或使用一个或数个字符作为输入以便确定要从序列(这里,随机转移图)中挑选哪一个字符的任何算法。
模数索引协议在于将输入字符用作数字,并且此数字将指示将从中挑选输出字符的序列的排名。如果输入字符不是数字,则能够将其在一些编码方案(例如,ascii、ansi或unicode)中的编码数字认为是输入数字。如果输入数字大于序列的大小(其是序列的元素的数目),则使用排名数字与序列的大小的欧几里德除法的余数(因此,为“模数”,因为它是模运算)。
归一化索引协议例如是模索引协议,除了代替模运算,排名被归一化为序列的大小。这意味着将排名除以可能的最高排名,然后,将结果乘以序列的大小。结果在排名编号从一开始的情况下被向上取整,或者在它从零开始的情况下被向下取整。
在n维表索引协议中,序列被认为是来自具有n个维度的表的行的连续。这意味着序列的大小必须是表在每个维度上的大小的乘积。此协议使用被认为是数字的传入字符作为要在表中挑选的字符的坐标。
除了在计算要挑选的字符的坐标的方式上,经调整的n维表索引协议例如是n维表索引协议。这里,对输入字符做出的任何运算将适合,只要它将给出表的维度内的坐标即可。例如,它可以是模算术、像“异或”这样的逻辑运算,或形成数字(例如,des的s-盒)的选定比特的挑选。
通常,实施例提供数个图挑选协议,从而让用户选择要使用的协议。然而,应该注意的是,用来通过图挑选协议来挑选字符的字符索引方法可能与在制作随机转移图期间使用的字符索引方法不同。例如,一个人能够创建ansi字符的随机序列,然后,在图挑选协议中,将它认为是比特的序列,或者反之亦然。实际上,这允许使随机图制作过程与输出随机序列所需的字符的键入完全分开。
随机映射过程7的传入序列可以是来自伪随机生成过程6的伪随机序列(应该注意的是,使用它们的输出的“混合运算”(在下面定义)作为输出的数个伪随机序列生成过程的组合实际上被认为是一个伪随机序列生成过程),或来自先前的随机映射过程8的随机序列,或来自数个先前的随机映射过程8的数个随机序列的组合(使用它们的字符的“混合运算”),或这些可能性中的一些的组合(使用它们的字符的“混合运算”)。
所谓“混合运算”是指对实现者所需的输入字符进行“异或”、模加法、模减法、级联、vigenère加密、beaufort加密、代换密码、模线性组合或无论什么运算或这些运算的序列,这个计算给出一个字符或数个字符的序列作为结果。这个定义将适用于整个文件(说明书、权利要求书,说明书摘要)。
在一些替代实施方式中,传入序列既来自如上所述的传入序列又来自作为反馈的特有随机映射过程7的传出序列。在这些替代实施方式中的一些中,反馈在其他传入序列的下一个字符被处理之前在循环中(通过随机映射过程)被处理了预定义次数。在这些替代实施方式中的其他实施方式中,反馈的字符使用“混合运算”与其他传入序列的字符组合。在这些其他替代实施方式中的一些中,反馈被延迟了预定义数目的字符。在一些其他实施方式中,提供先前描述的配置中的一些或全部,包括数个可能的“电路”,从而让用户选择哪一个配置将被使用。并且在一些实施方式中,用户甚至能够设计此电路。
所谓“电路”是指随机序列生成过程的内过程(伪随机序列生成过程和随机映射过程)彼此连接的方式。电路还指定哪一个随机映射过程输出将被用作随机序列生成过程输出。
在该实施例中随机转移图4是通过“随机性生成”9创建并且提供给随机映射过程7的字符的随机序列。此随机转移图是我们的随机序列生成器的随机性(还被本领域的技术人员称为“熵”)的来源。我们已看到随机性暗示两个事项:不可预测性和缺少控制。不可预测性暗示随机转移图必须保密并且对“敌方”不可访问(它还被设计为使它保持对用户不可访问)。并且缺少控制暗示允许我们定义随机性生成的条件。
“随机性生成”是不(或者不完全)使用数学或计算但是使用一个或数个不受控现象以便生成字符的创建的过程。此过程的最明显的实施例中的一些是硬件“真”随机生成器。这种硬件使用例如电子噪声作为随机值的来源,所述随机值由算法后处理(被称为“随机性提取”)。另一示例是测量放射性物质的各个衰变之间的时间的更罕见硬件。
实施例的另一系列使用在没有任何理性选择的情况下挑选的文本10(或编译程序二进制或无论什么文件)作为随机性的来源。事实上,在隐藏文本中,没有人将能够知道哪一个字母将在确定的位置中。但是通常,文本使用“取代运算”被后处理一次或数次。后处理通常应该是可再现的,因为该实施例本身应该完成它。众所周知的后处理即使不是取代运算,也将数据划分成比特的块并且使用散列函数(能够容易地计算确定大小的比特的结果但是其条目不能够在合理时间中根据它被确定的所谓的“单向函数”)对这些块进行处理。
取代运算是使用指定协议以及通常外部数据来用另一字符取代一字符的过程。外部数据可以是来自另一文本的字符或在循环中使用的随机键入的字符或数据的任何其他来源。指定协议可以是文本的字符与外部数据之间的一个或数个“混合运算”(如上面所定义的)或使用外部数据作为密钥的文本的加密(利用块密码、流密码或无论什么),但是它还可以是更复杂的协议或它们中的一些的组合。建议指定协议符合上面所给出的可再现性条件。
在一些实施例中,随机序列生成过程1还包括随机转移图变换过程11。此过程使用提供的参数(随机键入的字符、随机生成的字符或无论什么数据)和一个或数个混合运算来将所提供的随机转移图(我们将称作“初级随机转移图”)变换成另一随机转移图(我们将称作“次级随机转移图”)。次级随机转移图将(通过与参数的每个字符一起对初级随机转移图的每个字符应用混合运算、使参数循环直到所有初级随机转移图被处理为止)被生成并且代替初级随机转移图被随机映射过程使用。这种特征通常被与针对每个加密会话的不同提供的参数以及针对一个会话的每个随机转移图变换的通常不同的参数一起使用。
在一些替代实施例中,可能为专用单独的一个或者由加密过程和/或解密过程使用的一个的一部分(或整体)的随机序列生成过程(就像本文件中所公开的随机序列生成过程1一样)被用来将初级随机转移图变换成次级随机转移图。在此配置中,所提供的参数被用来建立随机序列生成过程,并且所生成的随机序列被用来使用混合运算对初级随机转移图进行变换。在一些替代实施例中,所生成的随机输出被直接用作次级随机转移图,而不是对初级随机转移图进行变换。
在一些实施例中,随机序列生成过程1还包括种子生成过程12,其为伪随机生成过程6计算种子5(其是伪随机序列生成器为了开始计算序列所需的开始数据,这些所述数据的值影响序列的字符)。种子生成过程12对提供的或挑选的字符(诸如可能来自计算机存储器或一个或数个随机转移图4的一部分的挑选字符)使用“种子计算算法”。“种子计算算法”是对输入字符使用算术、混合或无论什么运算或它们中的一些(或全部)的组合以便输出要用做种子的某个或一些值的算法。
最后,加密过程2和解密过程3皆可能在相同的密码装置中或者在单独的密码装置中发生。它能够使用任何密码方案:vigenère密码、beaufort密码、块密码、流密码,或由实施者想要的无论什么密码方案。它还能够使用它从随机序列生成过程需要的任何数目的密钥。事实上,加密过程和解密过程两者能够使用数个密钥(通常为不同的密钥)来对数据进行处理数次。
密码装置
在实施例的一个系列中,一个或数个计算机或平板计算机或移动电话(独立的或者连接到网络)使用软件以便遵循上面所公开的密码过程对数据进行加密,或者对加密数据进行解密,加密过程2和解密过程3皆在相同的计算机(在下文中,单词“计算机”还将包括平板和移动电话)上或者在不同的计算机(具有随机序列生成过程的两个计算机)上。密码过程的软件实现是显然的。
在装置实施例的第二系列中,专用电子电路实现上面所公开的密码过程。这种电路包括数个部分,每个部分实现上面所描述的密码过程的步骤中的一个(用于实现用于生成随机序列的过程1的随机序列生成器、用于实现用于对数据进行加密的过程2的加密器、用于实现用于对加密数据进行解密的过程3的解密器,所述随机序列生成器中的每一个包括实现伪随机序列生成过程6的一个或数个伪随机生成器以及实现随机映射过程7的一个或数个随机映射器单元)。
遵循所公开的密码过程,伪随机生成器和随机映射器单元在一电路中被连接在一起。此电路通常是硬件,但是我们将稍后看到该电路是逻辑上或软件开关的一些实施例。在硬件情况下,可推荐一个或数个电路。它们可为可切换的,或者它们能够并行工作。
每个随机映射器单元正在使用存储在随机映射器单元内部的存储单元(例如,存储器或闪存卡)中的提供的随机转移图4(如先前所定义的),此随机转移图通过随机性生成9(如先前所定义和描述的)来生成。
在替代实施例中,随机序列生成器中的每一个还包括实现随机转移图变换过程11的随机转移图变换器。
在一些实施例中,电子电路还嵌入一些微控制器,其能够实现一些可编程复用器(在其他事项之间),从而允许对每个随机序列生成器1内部的电路进行编程,以选择加密电路(或者以实现其计算算法)以便选择加密方案,这同样适用于解密,以选择伪随机生成器(或者以实现其计算算法)以便选择生成算法等。
在一些实施例中,种子生成过程12由种子生成器来实现。实施方式通常是硬件,但是它可能是(部分地或完全)软件实现的,以便由微控制器执行。另外,随机性生成9在一些实施例中通常利用微控制器被实现在软件中,但是它可处于硬件中。
还存在实现本文件中所描述的密码过程的数个其他种类的装置实施例。所实现的特征的量取决于用于该实施例的结构的容量和计算能力。
一类实施例是密码系统被实现在微控制器上的那些。它是实施例的第一系列的某种袖珍实施方式。密码过程通常用微控制器上的软件加以实现,所述微控制器在小型电子电路上与用于数据输入的按钮、滚轮和其他装置以及用于usb数据存储或互联网接入的一些插口连接(但是wi-fi可以是嵌入式的)。至于运算,用户使用数据输入的装置来与微控制器上的软件交互。
另一种实施例是在智能卡上。密码过程用具有有限容量和计算能力的芯片上的软件加以实现。实施者应该仔细地选择它将在其上实现哪些特征(取决于范围声明需要什么)。例如,这些所述实施例能够被用于标识,或者用于银行交易或取款。这些所述实施例被运算就像我们使用智能卡一样。
先前两种实施例的组合是在某种usb钥匙而不是闪速存储器上,它已被嵌入通常具有像智能卡这样的小芯片的一些电子设备。它实际上是用于密码目的的计算机的usb即插即用装置。其运算是显然的。
一种特殊实施例是密码系统制作器,其是存储计算机程序代码的存储单元,所述计算机程序代码当被加载在计算机存储器中时,将此计算机配置成执行所公开的密码过程。这种存储单元使用被称作“存储介质”:硬盘、usb钥匙、cd-rom、dvd-rom、闪存卡或能够存储计算机程序代码并且计算机系统能够访问以便将此程序代码加载到其存储器(“存储介质”的此定义将适用于整个文件,包括权利要求书)中的任何元件来制成。
实施例运算
至于装置实施例的第一系列的运算,计算机(包括平板和移动电话)的设定显然被本领域的技术人员知道:适当的软件将被提供给计算机并且该计算机将会将它加载到其存储器中。然后,此程序将会将该计算机配置成使它执行所公开的密码过程。
在计算机设定之后,随机转移图被提供给随机序列生成过程。这些随机转移图应该被仅提供给被允许访问数据的用户的计算机。如果实施例实现随机转移图生成过程,则用于处理会话的参数被提供给它,并且它从随机转移图生成次级随机转移图;然后在随机序列生成过程中随机转移图被用它们对应的次级随机转移图取代。初级随机转移图可以被存储在某处,以便能够被用来(在其他新会话期间从其他会话参数)生成其他次级随机转移图。
想要运算的数据被提供给计算机。它们可能已经在硬盘驱动器(或任何其他驱动器)上,或者从网络接收,但是它们被加载到计算机的存储器中。一个或数个随机序列生成过程(取决于实施方式)生成与要处理的数据比相同长度的字符的一个或数个随机序列(取决于加密/解密过程所需的密钥的数目)。
对于此任务,一个或数个种子被提供给伪随机序列生成过程(取决于它需要的种子的数目),其传出伪随机序列被发送到随机映射过程,其传出随机序列遵循所实现的“电路”直到最终传出随机序列通过随机序列生成过程被发送到加密(或解密,取决于任务)过程为止。
此过程从存储器取数据,使用它实现的算法来对它们进行加密(分别解密),并且将它们发送回到存储器。遵循什么取决于想要对数据进行何种运算(将它们存储在硬盘驱动器或任何其他驱动器上,或者在网络上向远方接收方发送它们,诸如此类)。
存在用于将随机转移图提供给随机序列生成器的数个方式:它能够被以物理方式转移到例如具有usb钥匙或连续编号cd-rom的密码装置(计算机等),它们能够利用使用所公开的密码过程所编码的安全信道(通过例如网络)来发送,或者能够在密码装置上生成它们。在以物理方式转移的图的情况下,随机转移图(使用例如硬件“真”随机生成器)在某处被生成,然后被带给“授权的”用户的密码装置(例如在驱动器、cd-rom上或者在usb钥匙上)并且转移到正确的位置进入装置。对于关键应用,此位置将最好地对用户不可访问,但是仅对认可管理员可访问。
利用这种方法以及我们将稍后看到的其他设定,实现编码信道(例如通过网络,或通信的任何装置)变得可能,所述加密信道意指数据被编码的双向通信(术语“安全信道”也由本领域的技术人员使用)。因为这种信道是无条件安全的(对抗仅密文攻击),所以它因此能够被用来在需要时转移新的随机转移图代替物理转移。
在随机转移图未被转移到计算机的情况下,文件被挑选,并且通常,使用板上取代运算来变换。对于想要对他的数据中的一些进行编码的单个用户来说,它可以是在他的驱动器上或在互联网上可能的每个文件;其只必须记住他使用了哪些文件和哪些外部数据以便能够将他的数据解码回来。对于使用并交换公共数据的数个用户的网络,每个人应该具有相同的数据以便能够生成相同的随机转移图。这通常通过使用公开密钥密码学或例如稍后所描述的无条件安全的信道向其他人中的一个或全部发送要挑选的文件的地址(互联网url或文件系统路径)并且可能保持外部数据来完成。因此,接收方中的每一个使他们的计算机计算他们适当的随机转移图。
如果特征被实现在该实施例中,则用于在计算机上生成随机转移图的相同过程被用于生成次级随机转移图所需的参数。在这种情况下,电路、文件或外部数据(随机键入的字符、随机生成的字符或无论什么数据)被随机转移图变换过程使用以便为每个加密会话创建新的随机转移图(次级随机转移图),而不必(使用上面所看到的方式)发送整个随机转移图。
对此特征的关注点是文件或外部数据通常具有比随机转移图小得多的大小,并且一堆外部数据可以被用于所有随机转移图的变换,这使用于改变随机转移图的通信变得更短。事实上,随机转移图通常在伪随机序列生成过程返回之前改变,以便防止它生成已经输出的序列。因此,为了在每个加密会话允许简化伪随机序列生成的管理之前改变随机转移图,因为一个人仅必须检查数据处理的所需长度不超过伪随机序列的最大长度(实际上是在使用随机映射反馈的情况下随机序列的最大长度)。
为了提供伪随机序列生成过程所需的种子,数个方式是可能的。例如,对于想要对其数据进行编码的单个用户来说,软件可能要求他键入其想要使用(他必须正确地记住)的种子,或者向其要求第一字符、最后的字符或(由实施者)预定义的字符被用作种子的文件(文本文件-压缩的或未压缩的-或二进制文件)。但是另一方式是保留将未由其数据将被用作种子的随机映射过程所使用的一个或数个随机转移图的一小部分(通常是图的结尾),或者(使用具有这些值的种子生成过程)计算种子。这个最后方式的优点是用户不必关心种子。还能够看到,如果随机转移图变换过程被实现,则种子针对每个会话被改变,因为随机转移图的保留部分还通过取代运算来变换。
在多用户配置中,还能够实现上面所描述的用于生成种子的随机转移图中的保留部分的方法。事实上,与随机转移图变换过程的实施方式并且与随机转移图的物理转移组合的此方法(用于将种子提供给伪随机序列生成过程)的使用允许通过网络实现无条件安全的通信信道(如早先撰写的)。因为随机转移图被随机地生成(所以它可能是字符的所有可能组合中的任一个)并且可能具有任何大小,因为伪随机序列生成算法可能是许多中的一个并且种子是未知的,因为由随机序列生成过程在内部使用的“电路”是相当多中的一个,所以“敌方”没有在密码过程内部发生什么的线索,并且对于他来说,字符的任何组合具有相同的概率成为加密密钥,就像一次一密一样。
并且看到由于随机转移图的随机性和未知大小、未知伪随机序列生成算法、未知变化种子、已被选择的随机序列生成过程的未知内部电路、由随机转移图变换过程使用的未知混合运算、使用的未知加密协议以及一些其他未知参数,用于随机转移图变换过程的参数将对他来说没有帮助。因此,在我们的特定案例中,用于随机转移图变换过程的所述参数能够在无需被加密的情况下被发送到其他用户。
并且,仍然在我们的特定案例中,所述参数是开始通信会话所需的唯一数据,所以系统是无条件安全的,并且所有其他需要的数据(例如新的随机转移图)能够通过安全信道来发送。因此,物理转移仅是系统的设定所需的。此转移能够例如使用包含随机转移图(以及可能种子)的连续编号cd-rom来完成,所以用户只必须将序列号作为参数来发送以便建立编码信道。
除了无条件安全的通信信道的这种情况,用于提供伪随机序列生成过程所需的种子的其他方式可以是公开密钥密码学或由实施者所期望的任何方法。
针对单用户配置和多用户配置两者,如果随机转移图变换过程不可用,则建议每随机转移图将需要种子仅一次,最后值被存储在寄存器中以便下一次被用作种子,直到达到伪随机序列的最大长度为止。然后将建议在那时之前改变随机转移图以便不重复随机序列。
针对关键应用,存在感兴趣配置:密码装置在“星形网络”中与中心处的网络服务器以及(至少)仅连接到它的其他装置连接(可能以无线方式)。每个装置仅具有要与服务器进行通信的数据(随机转移图等),同时服务器具有要与所有装置进行通信的数据。如果一个装置想要在安全信道上与其他装置进行通信,则它对消息进行加密并且将它发送到服务器,服务器对它进行解密,针对另一装置利用该数据对它进行重新加密,并且将消息发送到能够对它进行解密的另一装置。这种配置的优点是,如果装置(除服务器之外)被敌方俘获,则他不能够利用所俘获的装置的数据对其其通信进行解密。
至于装置实施例的第二系列的运算,其完全像实施例的第一系列那样工作。通常,专用电子电路只是更大电子机器的一部分。有时,它是连接到计算机以便代替cpu做专门计算的电子部分。所以,通常,实施例的此系列包括要由“主”电路控制的“从”电路。
最佳模式
考虑到所公开的密码过程可以数个方式实现,表明不同的应用有不同的需求,因此难以评估最佳模式,因为相反的需求导致相反的准则。
权利要求书(按照条约第19条的修改)
1.一种生成字符的随机序列以在要由一个或数个处理器执行的密码运算中使用的计算机实现的方法,所述方法包括:
(a)根据需要通过随机性生成来生成一个或数个随机转移图,所述随机性生成不是通过伪随机生成器来完成;
(b)将所述生成的随机转移图提供给将生成随机序列的所述计算机;
(c)向将生成随机序列的所述计算机提供伪随机序列生成器种子;
(d)通过对数个输入运算一个或数个处理器来生成字符的随机序列,所述输入是:
i.在所述及的随机转移图提供步骤期间提供的随机转移图,
ii.在所述及的伪随机序列生成器种子提供步骤期间提供的伪随机序列生成器种子;
每个要生成的随机序列使用一个随机映射运算,所述随机映射运算中的每一个包括以下步骤:
i.利用种子初始化伪随机序列生成器,若有的话在所考虑的随机映射运算期间被使用,所述种子被:
a.提供给所考虑的将生成随机序列的计算机,
b.或在提供给所考虑的将生成随机序列的计算机的一个或数个随机转移图的一部分中挑选;
ii.使用混合运算来使所述随机映射运算的输入混合,所述随机映射运算的输入是:
a.来自另一随机映射运算的输出,
b.或数个其他随机映射运算的输出的通过混合运算进行的组合,
c.或来自由所考虑的随机映射运算所使用的伪随机序列生成器的输出,
d.或来自由所考虑的随机映射运算所使用的伪随机序列生成器的输出的以及一个或数个其他随机映射运算的输出的通过混合运算进行的组合,
e.或来自由所考虑的随机映射运算所使用的伪随机序列生成器的输出的以及被用作反馈的由所考虑的随机映射运算先前生成的输出的通过混合运算进行的组合,
f.或与被用作反馈的通过所考虑的随机映射运算先前生成的数据交替的来自由所考虑的随机映射运算所使用的伪随机序列生成器的输出,
g.或来自由所考虑的随机映射运算所使用的伪随机序列生成器的输出的、一个或数个其他随机映射运算的输出的以及被用作反馈的通过所考虑的随机映射运算先前生成的输出的通过混合运算进行的组合,
h.或来自由所考虑的随机映射运算所使用的伪随机序列生成器的输出的以及一个或数个其他随机映射运算的输出的通过混合运算进行的组合,所述组合与被用作反馈的由所考虑的随机映射运算先前生成的输出交替;
iii.使用来自前一步骤的结果来使用图挑选协议从归因于所考虑的随机映射运算的所述随机转移图中挑选字符;
iv.输出前一步骤中所挑选的所述字符;
v.开始回到所述随机映射运算的输入混合步骤以便生成下一个输出字符,直到字符的整个随机序列已被生成为止;
所述随机映射运算的输出到其他随机映射运算的输入的分派以及被认为是结果的所述随机映射运算的输出在应用所要求保护的方法之前被定义;
(e)输出所生成的被认为是结果的字符的随机序列。
2.一种用于将明文字符的序列变换成密文字符的序列并且反之亦然的对称密钥编码和解码密码设备系统,包括:
(a)用于对字符的序列进行加密的装置,
(b)用于在解密方案与加密方案不同的情况下对字符的加密序列进行解密的装置,
(c)用于生成一个或数个随机序列的装置;
所有所述装置是隐结构,并且所述随机序列生成器中的每一个被实现在所述装置中以生成一个或数个随机序列,所述生成器为先前述及的用于对字符的序列进行加密或者解密的装置生成秘密密钥,包括:
(a)一个或数个伪随机序列生成模块,
(b)一个或数个随机映射模块;
所述随机映射模块的每一个将来自传入序列的字符映射成传出序列的随机字符,所述传入序列是:
(a)另一随机映射模块的传出序列,
(b)或数个其他随机映射模块的传出序列的通过混合运算进行的组合,
(c)或一个伪随机序列生成模块的传出序列,
(d)或一个伪随机序列生成模块的传出序列的以及一个或数个其他随机映射模块的传出序列的通过混合运算进行的组合,
(e)或一个伪随机序列生成模块的传出序列的以及反馈随机序列的通过混合运算进行的组合,所述反馈随机序列是所考虑的随机映射模块的传出序列,
(f)或与所述反馈随机序列交替的一个伪随机序列生成模块的传出序列,所述反馈随机序列是所考虑的随机映射模块的传出序列,
(g)或一个伪随机序列生成模块的传出序列的、一个或数个其他随机映射模块的传出序列的以及所述反馈随机序列的通过混合运算进行的组合,所述反馈随机序列是所考虑的随机映射模块的传出序列,
(h)或一个伪随机序列生成模块的传出序列的以及一个或数个其他随机映射模块的传出序列的通过混合运算进行的组合,所述组合与所述反馈随机序列交替,所述反馈随机序列是所考虑的随机映射模块的传出序列;
所述及的随机映射模块中的每一个按图挑选协议使用随机转移图,以便将它们的传入序列的每个字符映射成用于做出一个传出随机序列,所述随机转移图是通过随机性生成而生成的,所述随机性生成不是利用伪随机生成器做出的,并且被提供给随机映射模块,每个随机映射模块有一个随机转移图。
3.根据权利要求5所述的密码系统,还包括:
用于对随机转移图进行变换的装置;
所述装置是隐结构,并且来自用于对随机转移图进行变换的所述装置的随机转移图变换模块输入:
(a)来自述及的随机映射模块的随机转移图,所述随机转移图必须针对所述随机映射模块进行改变,
(b)变换随机字符;
所述变换随机字符是:
(a)提供的参数,其是反复迭代直到达到已被输入的所述随机转移图的长度为止的随机字符,
(b)或另一随机序列生成模块的输出;
所述及的随机转移图变换模块在其输入之间做混合运算,以便生成要代替已被输入到所述及的随机转移图变换模块的所述随机转移图而被发送回到所述随机映射模块的次级随机转移图,所述随机转移图必须根据所述随机映射模块进行改变。
4.根据权利要求6所述的密码系统,还包括:
用于生成伪随机序列生成器种子的装置;
所述装置是隐结构,并且来自用于生成种子的所述装置的所述种子生成模块使用种子计算算法由所提供的或挑选的字符为所述及的用于生成一个或数个随机序列的装置的所述伪随机序列生成模块计算种子。
5.根据权利要求7所述的密码系统,其中提供给所述的种子生成模块的所述挑选的字符在由所述及的用于生成一个或数个随机序列的装置所存储的一个或数个随机转移图的一部分中挑选。
6.根据权利要求1所述的方法,其中所述生成的随机转移图提供步骤使用以下步骤来执行:
(a)在第一时间,使用非暂时性计算机可读介质将所述随机转移图转移到所述及的将生成随机字符序列的计算机;
(b)在接下来的时间,通过经由以下密码安全的通信信道创建步骤所创建的密码安全的通信信道将新的随机转移图转移到所考虑的将生成字符的随机序列的计算机:
按加密方案和解密方案使用所输出生成的被认为是结果的字符的随机序列以便创建密码安全的通信信道。
7.一种上面存储有用于使一个或数个计算机充当根据权利要求5的密码系统的程序的非暂时性计算机可读存储介质,其中充当所要求保护的密码系统的所述计算机均包括被实现在所述及的用于生成一个或数个随机序列的装置中的一个或数个记载的随机序列生成器的功能性。
8.一种使用要求保护的密码系统的方法,所述方法包括以下步骤:
(a)在第一时间,使用非暂时性计算机可读介质将所考虑的密码系统所需的随机转移图转移到其述及的用于生成一个或数个随机序列的装置;
(b)在接下来的时间,通过使用所考虑的密码系统所创建的密码安全的信道将新的随机转移图转移到所述密码系统的述及的用于生成一个或数个随机序列的装置。
说明或声明(按照条约第19条的修改)
进行这些修改是为了解决一些模糊性问题并更正表格。
人们似乎可以在权利要求书中读取关于所公开的流密码的说明。因此,由于独创性来自随机密钥生成,我们已将方法权利要求集中于该方面(设备权利要求保留其加密/解密部件)。
此外,即使已在说明书中做出了规定,我们仍在权利要求书中规定了不使用伪随机性的随机性生成,这与所公开的流密码区别开来。这应当使得不能在权利要求书中读取此类所公开的流密码。
另外,许多权利要求已按新的形式重写,以便更能被一些国家/地区接受。该重写可以使得文本更加准确并更正录入错误。