用于数据加密的伪随机生成的密码学方法和设备、及消息的密码学散列的制作方法

文档序号:7939461阅读:196来源:国知局

专利名称::用于数据加密的伪随机生成的密码学方法和设备、及消息的密码学散列的制作方法
技术领域
:本发明涉及一般的数字安全领域,更具体地涉及密码学(cryptography)。本发明特别提出一种对数据序列进行对称加密的设备和方法。本发明还涉及用于生成伪随机数据序列的密码学设备(cryptographicdevice)和密码学方法,以及它们在数字安全领域中的有利使用,特别地,用于对数据进行加密和解密以及用于以密码学方式(cryptographically)使消息散列化。
背景技术
:使用对称加密算法以高比特率系统地交换经加密的数据。基于对密码分析的抵抗力(这取决于对要加密的信息进行处理的复杂度)、弱点的不存在性、以及对强力攻击的抵抗力(这取决于加密密钥的大小)来评估对称加密算法的效力。此外,对称加密的效力还取决于其执行速度。加密算法运行的比特率必须高于与要加密/解密的信息相关的操作的最大比特率。由此,对于高比特率操作,安全方案的集成商(integrator)面临这样的困境,当选择加密算法时,由于随着要处理的信息的比特率的增加以及对于恒定计算功率,可用于处理信息的时间减少,因而导致密码分析的抵抗力降低。现有技术中的流加密机制在连续迭代过程中执行对称加密以连续加密数据,并且可以有利地在数据比特率较高时和/或必须实时加密/解密信息时使用。参照图15A,流加密机制通常采用伪随机比特生成器G(例如基于移位寄存器)的形式,其具有由密钥K和初始化向量设置的参数,由此对生成器的输出位ki以及来自要加密的数据的位pi进行异或运算(写为,对应于二进制加法对2取模),由此通常导致在每次迭代i时计算单个输出位ci。尽管由于这些流加密方法简单且使用的指令集少,因而硬件实现速度极快,但是这些流加密算法具有几个严格的限制,由于他们是指定的高比特率的直接结果(corollary),所以这些限制通常是经常碰到的。首先,由这些流加密方法使用的伪随机生成器通常基于线性或非线性移位寄存器的使用。这样使用时,这些移位寄存器具有严重的密码学缺点。为了消除(render)在密码学上经常碰到的生成器的伪随机行为,已知地通过使用组合功能将移位寄存器彼此组合。提供这些组合功能所必须的寄存器的数目的增加以及组合功能自身的复杂度大大影响了在硬件实现中所需的组件的数目,并限制了伪随机生成算法和加密方法的执行速度。此外,这些伪随机生成器每次仅生成很有限数目的输出位(通常为1位,也可能为8或16位)。因此,在流加密方法的每次迭代中被加密的位数也非常有限,并且不一定满足具有要受该方法保护的数据的应用的实际需求。为了减少这些缺陷,可使用为了伪随机生成而使用块加密算法的流加密机制。在图15B中示出了使用密码反馈(CFB)模式的块加密算法的流加密机制的实例,这在B.Scheier的名称为“AppliedCryptographyprotocols,algorithmsandsourcecodeinC”,第2版,1996中有描述。然而,在流加密方法中为了伪随机生成而使用块加密算法具有两个主要缺陷第一,在硬件实现中他们的总体规模大;第二,他们的执行速度慢。此外,如图15B所示,上述流加密机制的设计基于对伪随机生成器的输出位以及要加密的消息位采用异或运算,使伪随机生成器在标准密码分析环境中可直接观察并且在CFB模式下可命令。换句话说,可通过使用异或运算将明文和加密的文本组合来直接访问伪随机生成器的输出状态,并不断提供可直接用于算法的密码分析的信息。由此,在图15B表示的流加密方法的实例中,可通过观察输出和命令加密算法的输入将伪随机生成器的移位寄存器带到预定义的状态,这构成了主要密码学弱点。因此,存在如下需求,快速生成在密码学上安全的任意预定义大小的向量的伪随机序列的方案、不存在伪随机生成器的可观察性和可命令性缺陷的加密/解密方案、以及确保了高度的数字安全同时确保在硬件和软件两者中的简单和有效的实现(特别是在执行速度方面)。
发明内容本发明的第一方案通过提供一种生成伪随机数据序列的密码学方法解决了这个需求,所述伪随机数据序列由从状态向量的初始值通过迭代生成的大小为k的状态向量的连续值形成。根据本发明,在密码学方法的每次迭代期间,为了生成用于该次迭代的状态向量的当前值,将大小为k1(大于或等于k)的预定数量d个排列连续应用到大小为k1的临时向量,所述临时向量包括从先前迭代中生成的状态向量的先前值的至少一个部分形成的大小为k的至少一个第一中间向量。每个排列分别与大小为d的排列密钥的不同位相关联并至少根据该位的值来选择,所述排列密钥是从所述第一中间向量的k个位中选择的d个不同位。从而,从这个应用步骤的结果向量的至少一个部分获得所述状态向量的当前值。以下描述涉及二进制数据和二进制向量,即,分量(component)为位的数据和向量。因此,大小为t的向量是由t个位构成的向量。在本发明的意义上,表述“向量Va包括向量Vb”表示向量Va的分量中包括向量Vb的所有分量(连续或不连续,以相同顺序或任意顺序)。例如,如果考虑向量Vb=(1,0,0,1)且向量Va=(0,1,Vb),则向量Va是包括向量Vb的向量,并等价于Va=(0,1,1,0,0,1)。此外,在本发明的意义上,表述“大小为t的向量部分”表示在该向量中占用特定位置的向量的j位集(set),j位于1至t(1≤j≤t)的范围内。因此,大小为t的向量的大小为t的部分表示向量本身。由j个位的部分占用的特定位置优选地是预定的和固定的(例如,包括由向量的第一j个位构成的部分或由向量的最后j个位构成的部分)。然而,等同地,例如可根据向量的一部分(其位占用预定和固定的位置)的值来确定这些特定位置,因此在时间上不一定是固定的。因此,本发明在每次迭代中,从已生成的状态向量的当前值生成小于或等于状态向量的大小为k的任意个伪随机位,k是取任意值的参数(对可考虑的k的值没有理论限制)。因此,本发明可容易地用在需要不同大小的伪随机向量(不一定仅限于一个位)并适于目标应用需求的各种应用中。此外,本发明提出使用排列函数迭代地生成伪随机数据序列,所述排列函数由d个排列构成,并具有由因提取自伪随机向量而使自身也是伪随机的排列密钥设置(或参数化)的参数。d个排列中的每一排列是至少根据与排列密钥相关联的位的值从预定义的排列对中选择的(所述对可从一个排列阶变成另一个排列阶,或对于所有阶都保持相同)。排列密钥的大小d(d≤k)是参数,并且可特别地被设置为相对较大,以确保更好地混合排列的数据。在本发明中使用的排列函数优选地是单向函数。作为自身已知地,单向函数可以在一个方向被容易地计算出,但是在合理时间内难以或甚至不可能反演(invert)(即,具有合理的复杂度)。在本发明中使用的排列函数为,根据输入数据向量计算输出数据向量时,需要求k1个等式,每个等式具有一个显式项(explicitterm)。相反,在尝试根据输出数据向量计算输入数据向量时,必须求解包括k1个等式的多变量系统(即,每个项均是多个未知数组合的系统),每个等式包括d个未知数的2d个项。因此,清楚地,这种等式系统不能够被简单地求解,因为每个等式中的项数远远大于等式数,并且特别在d很大时,项数会极其多。此外,这个数随着迭代的进行而增加,即,系统是“自复杂化”的。在硬件方面,这样的结果是不能够写下和物理存储要求解的等式的集,特别对于尺寸大的密钥尤为如此。例如,对于大小d=k=256的排列密钥,在第一次迭代中必须求解由256个未知数组成的包括256个等式的多变量系统,每个等式具有2256个项。因此,在本发明中实现的单向函数特别地难以反演,对于强力攻击和密码分析是健壮的(其数学复杂度非常高),同时提供了相对不复杂的实现,特别在通过使用排列的布线方面。因此,可使用低级架构实现,并且由于其需要较少组件因此是紧凑的,因而在硬件或软件实现中提供了快速执行。为了提高生成的伪随机序列的质量并获得高质量的混合,可以从满足以下条件中的至少一个条件的预定义排列对P0,P1(P0表示与等于0的位相关的排列;P1表示与等于1的位相关的排列)中有利地选择所涉及的大小为k1的d个排列·对于密钥的每个位,由P0和P1的各自分量获得的排列与由P1和P0的各自分量获得的排列在所有点上均不同;·对于单向函数的d阶中的每一阶(阶对应于排列的应用),使用在所有点上不同的同一排列P0和P1对;·对于单向函数的d阶中的每一阶,使用在所有点上与恒等排列分别不同的排列P0和P1对;这样,排列密钥的每个位影响要排列的输入数据的所有位。在每个阶中使用相同排列对具有如下优点减少了本发明的伪随机生成方法的硬件复杂度。在硬件中仅需要实现与两个排列P0和P1对应的两个模块。为了实现本发明,这些模块可随后连续使用多次,或可对于每个排列使用d个相同模块(即总共2d个模块)。然而,这些假设并不限制本发明,而是可以考虑其他的排列。具体地,可以考虑在不同排列阶(即,对于密钥的不同位)的不同排列对(P0,P1)。在不同方案中,临时向量还包括通过对第一中间向量的每个位补(complement)1来获得的向量。因此,例如如果Vprov指示临时向量,Vint1指示第一中间向量,则可得到Vprov=(Vint1Vint1)其中,Vint1指示通过对第一中间向量Vint1的每个位补1来获得的向量。不管d的值如何,这会产生严格(strict)雪崩效应;即,修改第一中间向量Vint1的一个位在统计方面影响了从单向函数的应用得到并在状态向量的当前值的构成中使用的向量的一半的位的值。这个结果限制了与使用稀疏(sparse)(即,低海明权重)的第一中间向量关联的负面影响,并提高了本发明的密码学伪随机生成方法对于硬件攻击的抵抗力。因此,在处理中实现的扩展(spread)是优良的,其构成突出的密码学质量。此外,无论第一中间向量的值如何,这样获得的临时向量具有等于k的恒定海明权重。此外,在硬件方案中,执行单向函数(不管d和Vint1为何值)具有绝对恒定的电功耗。在单向函数的排列的每个阶中,存在恒定位数1,并且单向函数的每个阶的激活操作激活相同数目的逻辑门,而无论相关的密钥的位是0还是1。因此,本发明的单向函数对于基于功耗分析的硬件攻击不敏感。在本发明的另一变型实现中,可将临时向量取为等于第一中间向量(k1=k)。在本发明的一个特定方案中,状态向量的当前值是对由所述应用步骤得到的向量的所述部分和所述状态向量的先前值应用异或运算的结果。这个方案增加了生成状态向量的连续伪随机值的处理的数学复杂度。异或运算失去了与状态向量的初始值的权重相关的所有信息,因此在迭代进行时修改状态向量的海明权重。在本发明的一个特定方案中,所述临时向量和所述排列密钥大小相同,其等于所述第一中间向量的大小。在这个实施例中,描述涉及方形单向函数,与矩形单向函数相反,其中排列密钥的大小d(d≤k)不同于应用单向函数的临时向量的大小k1(k1≥k)。在本发明的另一方案中,以上生成伪随机数据序列的密码学方法为,每次迭代还包括在应用步骤之前,获得从所述状态向量的先前值和输入数据块计算的当前中间值的步骤,所述第一中间向量由所述状态向量的先前值形成,其中一部分被所述当前中间值代替。因此,通过本发明生成的伪随机数据序列没有特别的期间,并且不遵循仅根据状态向量的初始值的预定义周期。状态向量的当前值取决于状态向量的初始值和应用的输入数据序列的整体。这确保了伪随机数据序列的动态演进。按照这种方式生成伪随机数据序列的方法具有高度有利的属性,使其成为多个密码学安全应用的潜在候选方案。特别地,本发明还涉及,在用密码学使消息散列化以生成消息的摘要的方法中使用这种生成伪随机数据序列的密码学方法,所述消息包括预定数目M个数据块,其在生成伪随机数据序列的密码学方法的连续迭代过程中依次用作计算当前中间值的输入数据块,以生成状态向量的M个值。然后,从按照这种方式生成的所述状态向量的最新生成值获得所述消息的所述摘要。这样使用的散列(hashing)方法具有本发明的伪随机生成方法的所有优点,特别是在实现方案的健壮性和简单性方面。此外,本发明还涉及在对输入数据序列进行加密的方法中使用生成伪随机数据序列的这种密码学方法,以下将更详细地进行描述。本发明的第二方案涉及一种对输入数据序列对称地加密的方法,其中基于状态向量的初始值和形成所述输入序列的连续输入字迭代地生成所述状态向量的连续值和连续输出字,每次迭代包括如下步骤加密步骤,其中通过取决于当前输入字和在前一次迭代中生成的状态向量的所述先前值的可逆操作来计算用于该次迭代的当前输出字;以及伪随机生成步骤,其中通过至少取决于所述状态向量的先前值的不可逆操作来计算用于该次迭代的状态向量的当前值;所述方法的特征在于所述可逆操作包括至少第一和第二密钥函数,所述密钥从所述状态向量的先前值的至少一个部分生成;以及所述不可逆操作还取决于依赖状态向量的先前值和当前输入字的当前中间值,并且分别通过所述第一密钥函数和所述第二密钥函数与所述输入字和输出字隔离。在本发明的意义上,表述“与输入和输出字隔离的向量”表示使用输入和输出字不可访问的向量,即,通过那些字不可命令和不可观察。通过定义如果状态向量不能够通过应用有限的输入序列被带入预定的值,则以输入、状态向量和输出表征的系统是不可命令的;如果状态向量的值在给定时间不能够从输出序列的有限数目观察推导出,则以输入、状态向量和输出表征的系统是不可观察的。本领域普通技术人员已知,在对称加密处理中状态向量的初始值是秘密的。通过递归(recurrence),如果状态向量的先前值是不可命令和不可观察的,则在本发明的加密方法中用于计算状态向量的当前值的当前中间值自身是不可命令和不可观察的。因此,所获得的当前状态向量也是不可命令和不可观察的,即,与输入和输出字隔离。这防止了状态向量的值的直接观察或状态向量的连续值的重新构成或引导(pilot)。此外,不必修改状态向量的初始值,以避免信息泄露(例如,)。特别有利的是,本发明的加密方法可以交替使用,以对明文消息(messageinclear)进行加密或者对经加密的消息进行解密,提取的输入数据序列有时候与明文消息等同,有时候与加密的消息等同。通过与加密相反的操作来执行解密,从硬件实现的观点看,这是非常有益的。此外,在说明书的其余部分,表述“本发明的加密方法”表示对输入数据序列加密和/或解密的方法。因此,可以通过对由任意大小的连续输入字形成的输入数据序列加密/解密,在确保硬件和软件中的简单和有效实现的同时具有最优化的执行速度。状态向量的连续值取决于状态向量的初始值和输入数据序列的全部。结果,状态向量具有不可命令和不可观察的动态演进。这确保了高度安全的加密/解密。在一个特定方案中,第一密钥函数和/或第二密钥函数包括至少一个异或运算,其具有由所述函数的密钥的至少一个部分(即,状态向量的先前值的至少一个部分)设置的参数。在本发明的一个特定方案中,每个状态向量的大小为k,并且在所述伪随机生成步骤期间,为了计算所述状态向量的当前值,对于大于或等于k的大小为k1的临时向量连续应用大小为k1的预定数目d个排列,每个排列分别与大小为d的排列密钥的不同位相关联并至少根据所述位的值来选择,所述临时向量包括从状态向量的先前值的一部分和所述当前中间值形成的大小为k的至少一个第一中间向量,所述排列密钥是从所述第一中间向量的k个位选择d个不同位的结果,并且所述状态向量的当前值是从这个应用步骤的结果向量的至少一个部分获得的。因此,本发明的加密方法具有与上述本发明的伪随机生成方法相同的优点。此外,在不同实施例中,还可包括为了本发明的伪随机生成方法在上文提出的不同变型。在流加密算法中使用这样的伪随机生成方法具有这样的优点在确保硬件和软件中的简单和有效实现(特别地,在执行速度方面)的同时保证了高度的数字安全。在本发明的特别有利的变型中,输入和/或输出字包括根据迭代可变的多个位。因而,状态向量可包括指示在每次迭代时可变的位数的部分。状态向量是伪随机变量,加密方法在每次迭代中处理大小可变的要加密的输入字,这个大小还根据输入数据序列和状态向量的初始值以伪随机方式改变。状态向量与加密方法的输入和输出字隔离,在加密方法期间不可能在输入字的等级(level)确定影响到哪些细分(在大小方面)。这甚至提供了对抗密码分析的更好保护。在本发明的这个特定方案中,每次迭代的伪随机生成步骤还可包括当从所述状态向量的当前值确定可变的位数为0时,则通过取决于所述状态向量的当前值的不可逆操作计算状态向量的新当前值,以代替所述状态向量的当前值。因此,只要输入或输出字的大小保持等于0,无需与加密步骤交互(interaction),则状态向量的连续值生成“空(empty)”。换句话说,在伪随机生成步骤期间执行的操作与在加密步骤期间执行的操作失去同步,这提供了甚至更多的保护。在本发明的一个特定方案中所述伪随机生成步骤是形成第一状态向量的当前值的第一伪随机生成步骤;所述第一伪随机生成步骤与形成第二状态向量的当前值的至少一个第二伪随机生成步骤并行组合;以及状态向量的当前值是对所述第一状态向量的当前值和至少第二状态向量的当前值应用异或运算的结果。因此,不同的伪随机状态向量相组合,这通过产生增加的大周期而增加了连续伪随机生成数据的数学复杂度。在本发明的另一方案中,所述加密步骤是第一加密步骤,其中计算第一当前输出字,它是通过取决于第一当前输入字和所述状态向量的先前值的至少一个第一部分的第一可逆操作计算的;以及第一当前中间值。此外,该方法还包括至少一个第二加密步骤,其中计算第二当前输出字,它根据取决于第二当前输入字和所述状态向量的先前值的至少一个第二部分的第二可逆操作计算的;以及第二当前中间值;在伪随机生成步骤期间使用的所述当前中间值包括所述第一当前中间值和至少所述第二当前中间值。因此,多个信号可使用相同的状态向量复用,这简化了硬件或软件的实现。在本发明的另一方案中,加密方法还包括用密码学复用至少两个明文消息块以形成至少两个加密消息块的步骤,每个明文消息块对应于连续输入字,以及所述至少两个加密消息块根据所述状态向量的先前值的一部分在每次迭代中被排序。因此,M个加密块的每次迭代的排序或混合(无论组合与否)在传输通道中是伪随机的,并取决于状态向量的初始值和全部输入序列。因此,输入序列中的任意修改操作修改了混合(mixing),由此提供了最优的保护。如上所述,本发明提出了一种基于单向函数的伪随机生成方法,其对于密码分析和强力攻击是健壮的,并且具有快速和相对不复杂的硬件实现。此外,本发明还提供一种密码学模块(cryptographicmodule),其适于从大小为k1的输入位的向量生成输出位的向量,包括通过从所述输入向量的位选择d个不同位来形成预定大小为d的排列密钥的装置;将所述排列密钥的每个位与至少根据所述位的值选择的大小为k1的排列相关联的装置;以及对于所述输入向量连续应用大小为k1的d个排列的装置,其中所述大小k1的d个排列与排列密钥的d个位相关联,以获得输出位的所述向量。本发明的密码学模块有利地使用上述单向函数。此外,本发明还提供一种伪随机数据序列的密码学生成器,所述伪随机数据序列由从状态向量的初始值迭代生成的大小k的状态向量的连续值的形成,所述生成器包括用于在每次迭代中为该次迭代生成状态向量的当前值的装置如上所述的密码学模块,其适于从大于或等于k的大小为k1的临时向量生成结果向量,所述临时向量包括从先前迭代中生成的状态向量的先前值的至少一个部分形成的大小为k的至少一个第一中间向量,所述排列密钥的大小d小于或等于k;以及从结果向量的至少一个部分获得所述状态向量的当前值的装置。在一个实施例中,这个生成器在每次迭代中还使用用于从所述状态向量的先前值和输入数据块的计算获得当前中间值的装置;以及从所述状态向量的先前值形成所述第一中间向量的装置,其中一部分已经被所述当前中间值代替。本发明还提供一种对输入数据序列加密的设备,其适于从状态向量的初始值和形成所述输入序列的连续输入字迭代地生成状态向量的连续值和连续输出字,所述加密设备在每次迭代中使用加密装置,适于通过取决于当前输入字和在先前迭代中生成的状态向量的先前值的可逆操作来计算用于该次迭代的当前输出字;以及伪随机生成器,适于通过至少取决于所述状态向量的先前值的不可逆操作来计算用于该次迭代的状态向量的当前值。根据本发明,所述加密设备配置为所述可逆操作至少包括第一和第二密钥函数,所述密钥是从所述状态向量的先前值的至少一个部分生成的;以及所述不可逆操作还取决于根据状态向量的先前值和当前输入字而定的当前中间值,并且分别通过所述第一密钥函数和所述第二密钥函数与所述输入字和输出字隔离。在一个实施例中,本发明的加密设备的伪随机生成器是如上所述的本发明的伪随机数据序列的密码学生成器。在本发明的一个特定实施例中,所述加密设备适于处理输入字和/或输出字,包括根据迭代可变的位数,且还包括在每次迭代中从所述状态向量的一部分确定可变的位数的装置。在该实施例中,所述加密设备的伪随机生成器还可包括当从所述状态向量的当前值确定所述可变的位数为0时,通过取决于所述状态向量的当前值的不可逆操作来计算状态向量的新的当前值,以代替所述状态向量的当前值的装置。在另一实施例中,所述加密设备还包括用密码学复用至少两个明文消息块以形成至少两个加密消息块的设备,每个明文消息块对应于连续输入字,以及所述至少两个加密消息块根据所述状态向量的先前值的一部分在每次迭代中被排序。本发明还提供一种密码学散列设备,适于从包括预定数目M个数据块的消息生成摘要,所述散列设备包括根据上述本发明的密码学生成器,在M次连续迭代中生成状态向量的M个连续值;在M次迭代的每次迭代中用于以下操作的装置从所述消息的当前数据块和由所述密码学生成器生成的状态向量的先前值计算用于该迭代的当前中间值;以及向所述密码学生成器提供所述当前中间值;从由所述生成器生成的状态向量的最新值获得所述消息摘要的装置。此外,应注意,在本发明的一个特定实施例中,本发明的密码学生成器和/或加密设备和/或密码学散列设备可以通过一个或多个数据处理系统而实现,数据处理系统通常包括由信号控制的中央处理器单元、存储器、输入单元和输出单元,他们通过数据总线互连。因此,本发明还提供一种计算机程序,其包括当所述程序被加载到计算机或数据处理系统中并且在计算机或数据处理系统中执行时,用于执行生成具有以上任意特征的伪随机数据序列的密码学方法的程序代码指令;本发明还提供一种计算机程序,其包括当所述程序被加载到计算机或数据处理系统中并且在计算机或数据处理系统中执行时,用于执行具有以上任意特征的加密方法的程序代码指令;以及本发明还提供一种计算机程序,其包括当所述程序被加载到计算机或数据处理系统中并且在计算机或数据处理系统中执行时,用于执行具有以上任意特征的密码学散列方法的程序代码指令。这些计算机程序可以存储在计算机可读介质上,并且可通过微处理器执行。他们可使用任意编程语言,并采用如下形式源代码、目标代码或介于源代码和目标代码之间的中间代码,例如部分编译的形式,或任意其他期望形式。本发明还提供一种计算机可读信息介质,其包含上述计算机程序的指令。通过阅读通过非限制性实例和参照附图在以下给出的描述,本发明的其他特征和优点变得明显,其中图1A和图1B示意性示出用于生成伪随机数据序列的本发明一个特定实施例中的伪随机生成器;图2至图8示意性示出用于对输入数据序列加密的本发明特定实施例的设备的实例;图9A至图9E示出在前面的图中的伪随机生成器或加密设备中或在图14的密码学散列(cryptographichashing)设备中使用的排列(permutation)实例;图10A和图10B示出图9C的排列的硬件实施的实例;图11A至图11C示出密码学复用(cryptographicmultiplexing)的实例;图12和图13示出本发明的加密设备对于密码学复用的应用;图14示意性示出本发明一个特定实例的密码学散列设备的一个实例;以及图15A和图15B(已经描述)示意性示出两种现有技术的加密机制。具体实施例方式初步注释和标记本发明以特别有利的方式提出了可配置(或可参数化)的排列函数P,即,具有可被设置的参数的函数,所述函数可用在各种密码学应用中,如下所述,特别地用于伪随机生成,用于加密/解密数据,以及用于以密码学方式使消息散列化。这个排列函数P可具有根据施加到其上的数据大小设置的参数,并且具有由所谓的排列密钥设置的参数。因此,使用如下标记法来指定将具有由排列密钥C设置的参数的排列函数P应用于输入数据E,以获得输出数据SS=P(E,C)一般地,对于大小为e的输入数据E以及小于或等于e的大小为p的排列密钥C,排列函数P是将大小为e的p个连续排列应用于输入数据E的结果,每个排列与排列密钥C的一个位相关联,并至少根据所述位的值来选择。例如,与排列密钥的每个位相关联,即,与排列函数的每个排列阶(stage)相关联的排列,在所述位为0的情况下为排列P0,而在所述位为1的情况下为排列P1。可以在排列函数P的各个阶考虑相同的排列对(P0,P1)。然后,优选地将这些排列P0和P1限定为在所有点彼此不同,并且每个排列在所有点都与恒等排列(identitypermutation)各不同。然而,这些假设在任何情况下都不用来限制本发明,并且可以考虑在排列函数的每个阶使用不同的排列对,或者将其它条件应用于排列P0和P1,例如,通过组合(compose)排列P0和P1获得的排列必须在所有点均与通过组合排列P1和P0获得的排列不同。排列函数P根据所考虑的排列密钥具有不同的属性。因此,如果由与应用排列函数P的输入数据独立的数据形成排列密钥C,则获得双射(或密钥排列)函数,即,假设排列密钥的值已知,即,仅有输出数据的一个值对应于具有由这个密钥设置的参数的函数P的输入数据的值,则函数P是可逆的。特别地,在与本发明的加密/解密设备和密码学散列设备相关的某些实施例中考虑排列函数P的这个属性。如果由应用排列函数P的输入数据E形成排列密钥C(换句话说,如果排列密钥取决于输入数据E的全部或一部分),则获得单向函数,即,函数P是不可逆的,换句话说,易于沿一个方向计算但是在合理时间内难以或甚至不可能反转(即,具有合理的复杂度)。在现有技术中没有提出或使用具有这样设置的参数(即,具有取决于应用排列函数的输入数据的排列密钥)的排列函数,更不用说基于这种排列函数的单向函数。在本发明的不同实施例中,特别地针对伪随机数据序列的密码学模块和密码学生成器(伪随机生成器)考虑排列函数P的这个属性。在说明书的剩余部分中,为了根据其属性在排列函数P的多个应用之间区分,表述“满射(surjective)排列装置”表示当排列函数P为单向函数时实现排列函数P的装置(为了简单,下文还称为“满射排列”)。因此,满射排列必须被理解为不可逆(即,非双射),因为其用在单向(即不可逆)函数的环境中,并且在所述单向函数环境中,不同的输入数据E1、E2、...可具有相同的输出S(例如,S=P(E1,E1)=P(E2,E2)=...,其中E1≠E2≠,...)。类似地,表述“双射排列装置”表示当排列函数P为双射函数时实现排列函数P的装置,即,双射密钥排列(为了简单,下文还称为“双射排列”)。以下特别地参照图9A-图9E、图10A和图10B更详细地说明排列函数P的特征以及用于实现排列函数P的装置。这些特征和实现装置应用于以下使用排列函数P(无论是单向函数还是双射函数)描述的各种设备和装置。伪随机生成方法和生成器图1示意性表示用于生成伪随机数据序列3的本发明的伪随机生成器1的实例。图1B示出这个伪随机生成器的一个特定实施例。应注意,图1A和图1B还示出生成伪随机数据序列的本发明的方法的主要步骤。伪随机生成器1包括计算装置5,其从状态向量V的初始值V0开始,通过迭代生成状态向量的连续值V0,...,Vn-1,Vn,...,从而形成伪随机数据序列3。应注意,Vn对应于在第n次迭代时由状态向量V取得的值。以类似方式对其他变量使用相同的规则(convention)。状态向量V包括特定数目k个位(即,这是向量的大小k,其中k是大于或等于1的整数)。在伪随机生成处理的每次迭代n中,计算装置5使用取决于状态向量的先前值Vn-1的不可逆操作来计算状态向量V的当前值Vn。这个不可逆的操作基于单向函数,其具有由大小d≤k的排列密钥设置的参数。在这里设想的实例中,通过由另一操作(例如操作AT)计算的当前中间值Xα,有利地在每次迭代n时馈送状态向量,其取决于状态向量的先前值Vn-1和属于输入数据序列的当前输入字Un(在本发明的含义中为输入数据块)。在这里描述的实例中,输入字Un包括特定数目m个位(字的大小为m),其中m是大于或等于1的整数。当前中间值Xα包括m个位(向量的大小为m)。以下特别参照图2至图12(其中操作AT是加密/解密模块)和图14(其中操作AT是密码学散列设备的预调节模块)描述操作AT的实例。参照图1B,以下参照图1B描述分别在伪随机生成器1中以及在本发明的一个特定实施方案的伪随机生成方法中执行的主要装置和主要步骤。在第一次迭代时,伪随机生成器1根据第一输入字U1(使用当前中间值Xα)和状态向量的初始值V0来计算状态向量V的第一值V1。通过扩展,在第n次迭代时,伪随机生成器1根据当前输入字Un(使用当前中间值Xα)和状态向量的先前值Vn-1来计算状态向量V的当前值Vn。在这个实例中,伪随机生成器1包括传输装置321、接收装置323、和计算装置325a、325b、325c、326和327。在每次迭代(例如在迭代n)中,传输装置321向操作AT发送状态向量的先前值Vn-1。接收装置323从操作AT接收当前中间值Xα。第一计算装置325a用当前中间值Xα代替状态向量的先前值Vn-1的大小为m的部分Xn-1,以形成第一中间状态向量Vint1的当前值。在这里描述的实例中,第二计算装置325b由第一中间状态向量Vint1的当前值和第一中间状态向量Vint1的补向量(complementaryvector)(写为Vint1)的当前值形成大小为k1(大于或等于k)的临时向量Vprov的当前值(即,在本发明的意义上,临时向量Vprov包括向量Vint1和Vint1)。本领域已知地,通过对所述向量的每个位补1(complementingto1)来获得向量的补向量。这里,以这种方式获得的临时向量的当前值为Vprov=(Vint1Vint1)因而,临时向量的大小k1=2k。备选地,这个临时向量可等于Vint1(即,可省掉第二计算装置325b),因而大小为k。与这个选择对应的实施例特别地在图3A中示出,并且以下更加详细地描述。然后,将临时向量的当前值提供给第三计算装置326,其包括满射排列装置326a,满射排列装置326a适于对临时向量的当前值应用单向函数以生成结果向量Vres的当前值。由满射排列装置326a应用的单向函数基于上述可配置排列函数P,其参数通过预定大小为d(小于或等于k)(即,p=d)的排列密钥C来设置。这里,选择d=k。通过形成装置326b由第一中间状态向量的当前值形成单向函数的排列密钥C的当前值。在此描述的实例中,当前值C取为等于第一中间状态向量的当前值,C=Vint1。以下,为了简明,交替使用C和术语“密钥”,用于第n次迭代的排列密钥的当前值和排列密钥本身(即,随机变量)。备选地,在本发明另一实施例中,密钥的大小d可严格小于k。然后,通过装置326b从第一中间向量Vint1的k个位连续或不连续地选择d个不同位来形成排列密钥C,所选的d个位的位置优选地被预先确定和固定。排列密钥的大小d优选地大于中间当前值Xα的大小,并且所选的d个位优选地包括当前中间值Xα。因此,在这里,由满射排列装置326a应用的单向函数是应用大小k1=2k(即e=k1=2k)的d=k个连续排列的结果,每个排列与排列密钥C=Vint1的不同位关联,并且至少根据这个位的值来选择(例如在预先确定的排列表中,如下面参照图10a和图10b所述)。备选地,其还可以取决于所涉及的排列阶。由于排列密钥C=Vint1取决于应用了排列函数P的数据(由于Vprov=(Vint1Vint1)),因而P限定了单向函数。在这个应用步骤之后获得的结果向量Vres的大小k1=2k。因此在本发明的意义上,计算装置326包括密码学模块。在这里描述的实施例中,伪随机生成器1的计算装置5还包括第四计算装置325c,其从结果向量Vres的当前值的k1个位选择k个位的部分,以形成第二中间向量Vint2的当前值。例如,由结果向量Vres的第一k个位形成第二中间向量Vint2。此外,伪随机生成器1的计算装置5在这里还包括第五计算装置327,其包括异或门327a,该异或门327a将状态向量的先前值Vn-1与第二中间状态向量Vint2的当前值组合。除了不可逆之外,这个异或运算赋予伪随机生成器1更大的范围(spread)。在本发明另一实施例中,第五计算装置327的异或门327a将第二中间状态向量Vint2的当前值与第一中间状态向量Vint1的当前值组合。在本发明其他实施例中,状态向量V的当前值Vn对应于第二中间状态向量Vint2的当前值。在进行n次上述迭代运算之后,状态向量V的当前值Vn可用于下一迭代n+1。在图1B中所示的实例中,当前中间值Xα代替包括状态向量的先前值Vn-1的m个连续位的部分Xn-1,以形成第一中间状态向量Vint1的当前值。然而,这个假设并不限制本发明,并且当然同样可以用当前中间值Xα的m个分量(component)代替在状态向量中不一定连续地占用m个特定位置的Vn-1的m个位的部分Xn-1,以形成第一中间状态向量Vint1的当前值。加密方法和设备图2至图12示出图1A中图示的伪随机生成器1(其特定方案通过图1B的实例示出)可与加密/解密模块组合使用,以对连续输入字进行加密和/或解密。应注意,图2至图12还示出对输入数据序列加密的方法的主要步骤。在这个情形下,加密/解密模块可通过独立于伪随机生成器的操作的操作来计算当前中间值Xα。图2示出在本发明一个特定实施例中对输入数据序列9(相应为15)加密(和/或解密)的设备7。这个设备7包括生成装置11,用于从状态向量的初始值V0和形成输入序列的连续输入字Un(相应为Yn)迭代生成状态向量的连续值13和连续输出字15(相应为9)。状态向量V包括预定数目k个位,并且状态向量的初始值V0对应于大小为k的可配置加密/解密密钥。加密/解密密钥的大小k对应于密钥的位数,因此对应于状态向量V的位数。此外,输入或输出字Un/Yn的大小为m,其对应于由加密/解密模块17在每次迭代时所加密/解密的位数。这些值k和m可被预先定义。以下参照图7和图8详细描述可作为变量的输入或输出字的大小的实施例。在这里展示的实例中,生成装置11包括图1A中所示的本发明的伪随机生成器1(例如图1B的伪随机生成器)和加密/解密模块17。备选地,其他伪随机生成器可用于实现本发明的加密设备和方法,例如,基于高级加密标准(AES)算法的伪随机生成器、基于BlumBlumShub(BBS)算法的伪随机生成器、或基于本领域普通技术人员已知的移位寄存器的伪随机生成器。由此,在每次迭代n时,伪随机生成器1通过不可逆操作计算状态向量的当前值Vn,所述不可逆操作取决于状态向量的先前值Vn-1以及当前中间值Xα,所述当前中间值Xα由加密/解密模块17执行的计算所生成并且取决于状态向量的先前值Vn-1和当前输入字Un(相应为Yn),并且加密/解密模块17通过可逆操作计算当前输出字Yn(相应为Un),所述可逆操作取决于当前输入字Un(相应为Yn)和状态向量的先前值Vn-1。应注意,可以可逆地使用加密设备7用于加密和/或解密。如上所述,当输入字序列来自要加密的明文消息时,本发明的加密方法可以在加密模式下使用;或者当输出字序列来自要被解密的加密消息时,可以在解密模式下使用。在当前实例中,在每次迭代n时,伪随机生成器1给状态向量馈送通过由加密/解密模块17根据状态向量的先前值Vn-1以及当前输入字Un(相应为Yn)执行的计算生成的当前中间值Xα。如上所述,伪随机生成器1使用基于单向函数的不可逆操作并且可用于以相同方式执行加密和解密,所述单向函数具有由排列密钥设置的参数。此外,加密/解密模块17是可逆的,因此可与受可逆顺序影响的加密/解密运算一起使用。因此,在加密期间,输入字写为Un(明文数据(datainclear)),输出字写为Yn(加密的数据),同时在解密期间,输入字写为Yn(加密的数据),输出字写为Un(明文数据)。更具体地,在通过本发明的加密方法开始加密之前,加密密钥的值变为状态向量V的初始值V0(V0=加密密钥)。在第一次迭代中,加密/解密模块17根据第一输入字U1(对应于明文字(wordinclear))和状态向量的初始值V0来计算第一输出字Y1(对应于加密的字)。此外,伪随机生成器1根据第一输入字U1和状态向量V的初始值V0来计算状态向量V的第一向量V1。通过扩展,在第n次迭代中,加密/解密模块17根据当前输入字Un和状态向量的先前值Vn-1来计算当前输出字Yn。此外,伪随机生成器1根据当前输入字Un和状态向量的先前值Vn-1来计算状态向量V的当前值Vn。以相同方式,在通过本发明的加密方法开始解密之前,解密密钥的值变为状态向量V的初始值V0(V0=解密密钥)。自然地,将解密密钥取为与用于对数据加密的加密密钥相等(对称加密)。在解密处理的第一次迭代时,加密/解密模块17根据第一输入字Y1(对应于加密的字)和状态向量的初始值V0计算第一输出字U1(对应于解密的字)。此外,伪随机生成器1根据第一输入字Y1和状态向量的初始值V0计算状态向量V的第一向量V1。通过扩展,在第n次迭代时,加密/解密模块17根据当前输入字Yn和状态向量V的先前值Vn-1计算当前输出字Un。此外,伪随机生成器1根据当前输入字Yn和状态向量的先前值Vn-1计算状态向量V的当前值Vn。在这里所述的实例中,状态向量V有利地包括这样的部分集(asetofsections),其至少包括第一状态变量X、第二状态变量A、第三状态变量B和可能的其他状态变量。因此,这些状态变量是伪随机变量。例如,可按以下方式构成状态向量V的当前值VnVn=(…(Xn=(xn1...xnm))....(An=(an1...anm))...(Bn=(bn1...bnm))…)从本发明的意义上讲,也将状态变量X、A和B的值看作状态值的部分或状态向量的值的部分。在这个实例中,状态变量X、A和B是均由m个连续位构成的部分。第一状态变量X的当前值Xn包括m个位Xn1,...,Xnm,第二状态变量A的当前值An包括m个位An1,...,Anm,第三状态变量B的当前值Bn包括m个位Bn1,...,Bnm。更具体地,在被加密解密模块17在下一次迭代中实施的计算所生成的中间值Xα代替之前,通过称为加密/解密模块17的“隔离”函数(相应为装置)的函数(相应为装置)在下一次迭代中使用第一状态变量X的值Xn。在加密/解密模块17的隔离函数的下一次迭代期间还使用第二和第三状态变量的值An和Bn(例如见图3A和图3B)。状态变量优选地位于固定位置,但是可以根据由状态向量自身在固定位置的一个或多个部分取得的一个或多个值来为他们分配位置变量。以下仅描述状态变量的固定位置的方案。此外,优选地(尽管非必要地)为每个状态变量分配的部分是不重叠的。因此,相应选择状态向量的大小k,并且每个状态变量对应于状态向量的有限大小的部分(即,其大小严格小于状态向量的大小)。图3A更详细示出来自图2的加密/解密设备7的第一实例。在这个第一实例中,伪随机生成器1包括传输装置21、接收装置23和计算装置25、26,且可能还包括27。在每次迭代(例如在第n次迭代)时,传输装置21向加密/解密模块17发送状态向量的先前值Vn-1,其至少包括第一状态变量X的先前值Xn-1、第二状态变量A的先前值An-1和第三状态变量B的先前值Bn-1。接收装置23从加密/解密模块17接收当前中间值Xα。第一计算装置25用当前中间值Xα代替第一状态变量X的先前值Xn-1,以计算第一中间状态向量Vint1的当前值。第二计算装置26包括满射排列装置26a,其适于对第一中间状态向量Vint1应用单向函数(具有由大小d=k的排列密钥C设置的参数,并包括第一中间向量Vint1的当前值(C=Vint1)),以形成第二中间状态向量Vint2。第二计算装置26以类似于上述计算装置326的方式运行(除了向量的大小),并构成本发明意义上的密码学模块。由计算装置26a应用的单向函数基于上述可配置排列函数P(p=d=k和e=k),因此在这里是应用k个大小为k的连续排列的结果,每个排列与排列密钥C=Vint1的不同位关联,并且至少根据这个位的值来选择。由此,装置26a对于第一中间状态向量应用单向函数P=(Vint1,Vint1)以形成第二中间状态向量Vint2的当前值,该单向函数的参数由第一中间状态向量Vint1的当前值来设置。因此,在这个第一实例中,在本发明的意义上,第一中间值(相应为第二中间值)表示临时向量(相应为结果向量)。应注意,向量Vint1和Vint2的大小都为k。因此,状态向量V的当前值Vn对应于第二中间状态向量Vint2的当前值。在另一变型(图3A中的虚线表示)中,伪随机生成器1的计算装置5还包括第三计算装置27,该第三计算装置27包括异或门27a,其将第一中间状态向量Vint1的当前值与第二中间状态向量Vint2的当前值组合。在另一变型(未示出)中,第三计算装置27包括异或门27a,其将状态向量的先前值Vn-1与第二中间状态向量Vint2的当前值组合。因此,伪随机生成器1的计算装置5在第一中间状态向量Vint1上执行单向(即不可逆)函数,其结果可选地与这个第一中间状态向量Vint1或与先前迭代中的状态向量组合。在第n次迭代的上述运算之后,状态向量V的当前值Vn可用于下一迭代n+1。此外,加密/解密模块17包括接收装置33、隔离装置35a和35b,以及在这里描述的实例中隔离装置35a和35b之间的连接装置37。接收装置33从伪随机生成器1接收状态向量的先前值Vn-1,其至少包括第一状态变量X的先前值Xn-1、第二状态变量A的先前值An-1和第三状态变量B的先前值Bn-1。隔离装置包括用于隔离当前中间值Xα的至少两个隔离装置35a和35b。隔离装置应用对称“密钥(secretkey)”函数,该密钥从状态向量的先前值的至少一个部分获得。本领域普通技术人员已知,对称密钥函数是这样一种函数,在密钥可用时根据输入计算输出和根据输出计算输入是容易的,而在密钥未知时根据输入计算输出和根据输出计算输入是不可能的。所使用的密钥函数优选地包括至少一个异或运算,即,隔离装置包括至少一个异或门。他们还可包括双射排列装置。在这里描述的实例(见图5A)中,隔离装置均包括异或门和两个双射排列装置,并且连接装置37包括异或门。因而在本发明的意义上,在每个隔离装置中使用的密钥函数由两个双射排列和一个异或运算组成,其每个均具有由状态向量Vn-1的大小为m的部分设置的参数。这个函数的密钥由设置第一双射排列的参数的部分、设置异或运算的参数的部分和设置第二双射排列的参数的部分组成。因此,加密设备7包括两个互连元件,即,伪随机生成器1(其具有由用于初始化状态向量V的任意大小k的加密/解密密钥设置的参数)和结合有密钥隔离函数的加密-解密模块17。图3B示出使用图1B中所示的伪随机生成器1的图2的加密设备7的第二实例。这个设备7的运算模式和相关变型类似于参照图3A在上文的描述。图5A和图6A以更详细的方式示出当使用图3A的伪随机生成器1时对输入数据序列进行加密和解密的方式。更具体地,图5A示出在输入数据序列对应于明文消息且连续输出字对应于加密的消息的加密模式下的加密设备7。在当前实例中,在第一隔离装置35a和第二隔离装置35b之间的连接装置37包括中央异或门41b。第一隔离装置35a包括由第一异或门41a隔离的第一和第二双射排列装置39a、39b。第二隔离装置35b包括由第二异或门41c隔离的第三和第四双射排列装置39c、39d。在这里认为双射排列装置39a、39b、39c、39d的每个均实现上述排列函数,其具有由状态向量Vn-1的状态变量(即,由等于状态向量Vn-1的状态变量的大小为m(p=m)的排列密钥)设置的参数。由此·第一双射排列装置39a实现与排列函数P对应的第一双射排列,该排列函数P具有由等于第二状态变量An-1的先前值的排列密钥设置的参数;·第二双射排列装置39b实现与排列函数P对应的第二双射排列,该排列函数P具有由等于第一状态变量Xn-1的先前值的排列密钥设置的参数;·第三双射排列装置39c实现与排列函数P对应的第三双射排列,该排列函数P具有由等于第一状态变量Xn-1的先前值的排列密钥设置的参数;以及·第四双射排列装置39d实现与排列函数P对应的第四双射排列,该排列函数P具有由等于第三状态变量Bn-1的先前值的排列密钥设置的参数。在双射排列装置39a、39b、39c和39d中用于设置排列函数P的参数的排列密钥独立于应用了所得到的排列函数P的数据,因此每个均实现可逆(双射)函数,其逆函数为排列函数P-1。这个可逆函数P是应用根据相关排列密钥的每个位的值所选的大小为m的m个连续排列(p=e=m)的结果。因此,在这个加密模式下,在第n次迭代期间计算当前输出字Yn包括以下操作。第一排列装置39a通过对包括当前输入字Un和第二状态变量的先前值An-1的对应用第一双射排列来计算第一中间字G1nG1n=P(Un,An-1)。换句话说,第一排列装置39a通过对当前输入字Un应用具有由An-1设置的参数的双射排列函数P来计算第一中间字G1n。第一异或门41a通过对第一中间字G1n和第二状态变量的先前值An-1应用异或运算来计算第二中间字第二排列装置39b通过对包括第二中间字G2n和第一状态变量的先前值Xn-1的对应用第二双射排列来计算第三中间字G3nG3n=P(G2n,Xn-1)。换句话说,第二计算装置39b通过对第二中间字G2n应用具有由Xn-1设置的参数的双射排列函数P来计算第三中间字G3n。中央异或门41b通过对第三中间字G3n和第一状态变量的先前值Xn-1应用异或运算来计算当前中间值然后,将这个当前中间值Xα发送给伪随机生成器1。然后,第三排列装置39c通过对包括当前中间值Xα和第一状态变量的先前值Xn-1的对应用第三双射排列来计算第四中间字G4nG4n=P(Xα,Xn-1)。换句话说,第三排列装置39c通过对当前中间值Xα应用具有由Xn-1设置的参数的双射排列函数P来计算第四中间字G4n。第三异或门41c通过对第四中间字G4n和第三状态变量的先前值Bn-1应用异或运算来计算第五中间字最后,第四排列装置39d通过对由第五中间字G5n和第三状态变量的先前值Bn-1形成的对应用第四双射排列来计算当前输出字YnYn=P(G5n,Bn-1)。换句话说,第四排列装置39d通过对第五中间字G5n应用具有由Bn-1设置的参数的双射排列函数P来计算当前输出字Yn。图6A示出在输入数据序列对应于加密的消息并且连续输出字对应于明文消息的解密模式下使用的加密设备。在这个解密模式下,在第n次迭代中当前输出字Un的计算包括以下运算。第四排列装置39d通过对由当前输入字Yn和第三状态变量的先前值Bn-1形成的对应用第四双射排列的逆排列来计算第五中间字G5nG5n=P-1(Yn,Bn-1)。第三异或门41c通过对第五中间字G5n和第三状态变量的先前值Bn-1应用异或运算来计算第四中间字第三排列装置39c通过对由第四中间字G4n和第一状态变量的先前值Xn-1形成的对应用第三双射排列的逆排列来计算当前值XαXα=P-1(G4n,Xn-1)。然后,将这个当前中间值Xα发送给伪随机生成器。中央异或门41b通过对当前中间值Xα和第一状态变量的先前值Xn-1应用异或运算来计算第三中间字第二排列装置39b通过对由第三中间字G3n和第一状态变量的先前值Xn-1形成的对应用第二双射排列的逆排列来计算第二中间字G2nG2n=P-1(G3n,Xn-1)。第一异或门41a通过对第二中间字G2n和第二状态变量的先前值An-1应用异或运算来计算第一中间字最后,第一排列装置39a通过对由第一中间字G1n和第二状态变量的先前值An-1形成的对应用第一双射排列的逆排列来计算当前输出字UnUn=P-1(G1n,An-1)。由此,在图5A和图6A的实例中,隔离函数或装置35a和35b均由两个排列函数(在本发明的意义上是双射排列)构成,所述两个排列函数具有由用于第一隔离装置35a的An-1和Xn-1设置的以及由用于第二隔离装置35b的Bn-1和Xn-1设置的参数;和用于第一隔离装置35a的An-1与用于第二隔离装置35b的Bn-1的异或运算。因此,当前中间值Xα与位于四个排列函数中间的输入和输出字隔离(即不能从输入和输出字得到),所述四个排列函数具有由An-1、Xn-1和Bn-1设置的参数,并且三个异或运算具有自身与输入和输出隔离的状态向量V的状态变量An-1、Xn-1和Bn-1。这相当于状态向量V的自隔离。图5B和图6B以类似方式示出使用图3B的伪随机生成器1对输入数据序列进行加密和解密的模式。备选地,可使用其他状态伪随机生成器。此外,在一个实施例中,可通过用相同大小的两个子变量(在本发明的意义上为部分)代替每个状态变量An、Bn和Xn(相应为,An′和An″代替An,Bn′和Bn″代替Bn,Xn′和Xn″代替Xn)来进一步增加加密/解密运算的复杂度。可使用子变量An′、Bn′和Xn′来设置排列P和P-1的参数,并且可使用子变量An″、Bn″和Xn″来计算异或运算。在另一实施例中,用于An的An′和An″、用于Bn的Bn′和Bn″、用于Xn的Xn′和Xn″的各个状态子变量可以是间断的(non-contiguous),并且每个大小为m。例如Vn=(X′nA′nB′nX″nA″nB″n…)在其他实施例中,每个状态变量可包括例如占用状态向量V的预定位置的m个不必连续的位。多个伪随机生成器的并行使用此外,应注意,在本发明一个特定实施例中,可对于相同的加密/解密模块并行使用多个生成器。例如,图4示出加密设备107,其可按类似于加密模式下和/或解密模式下的加密设备7的方式使用,并且包括加密/解密模块17和两个伪随机生成器101、102,其类似于参照图3a所述的第一实施例(备选地,可考虑其他伪随机生成器,例如,类似于图3B所示的生成器的两个伪随机生成器)。第一伪随机生成器101形成第一状态向量V1的第一当前值V1n,第二伪随机生成器102形成第二状态向量V2的第二当前值V2n。两个伪随机生成器101、102可通过例如异或门并行组合。因而,状态向量的当前值Vn是对第一状态向量的第一当前值V1n和第二状态向量的第二当前值V2n应用异或运算的结果。应注意,任意其他组合也是可能的,例如,来自两个伪随机生成器101、102的状态向量的当前值Vn可由从第一状态向量的第一当前值V1n导出的第一部分、从第二状态向量的第二当前值V2n导出的第二部分、以及从第一和第二状态向量的第一和第二当前值V1n、V2n的相应部分的任意组合导出的第三部分构成。更具体地,在图4的实例中,向第一伪随机生成器101馈送第一初始值V10,并且生成第一状态向量V1的第一当前值V1n,其至少包括第一状态变量X1的第一当前值X1n、第二状态变量A1的第一当前值A1n和第三状态变量B1的第一当前值B1n。此外,向第二伪随机生成器102馈送第二初始值V20,并且生成第二状态向量V2的第二当前值V2n,其至少包括第一状态变量X2的第二当前值X2n、第二状态变量A2的第二当前值A2n和第三状态变量B2的第二当前值B2n。在这个特定实例中,向加密/解密模块17发送的状态向量的先前值Vn-1通过第一状态变量X的先前值Xn-1、先前值An-1以及先前值Bn-1形成,所述第一状态变量X的先前值Xn-1是对第一状态向量的第一状态变量X1的第一先前值X1n-1和第二状态向量的第一状态变量X2的第二先前值X2n-1应用异或运算而得来的,所述先前值An-1=第一状态向量的第二状态变量A1的A1n-1,且所述先前值Bn-1=第二状态向量的第三状态变量B2的B2n-1。此外,从加密/解密模块107向两个伪随机生成器101、102馈送相同的当前中间值Xα。因此,一般地,可以对相同的加密/解密模块并行实现h个伪随机生成器(i=1至h)。然后,从加密/解密模块向所有h个伪随机生成器馈送相同的当前中间值Xα。h个生成器可以是相同或不同的大小k1,...,kh。可以从相同的共同加密/解密密钥提取或计算初始值V10,...,Vh0,其大小等于k1,...,kh的最大值。An和Bn的值可来自相同生成器或不同生成器。Xn可对应于通过各个Xin的所有异或运算而组合的结果当然,可独立于加密/解密模块并行使用伪随机生成器,以生成高质量的伪随机数据序列。改变输入和输出字的位数在以上实例中,状态向量包括特定位数k,并且每个输出或输入字包括小于状态向量的特定位数k的特定位数m。在本发明的一个特定实施例中,每个输出或输入字可有利地包括位数w,其可在每次迭代时改变,同时保持小于状态向量的特定位数k。图7示出在本发明的这个实施例中对可变位数w进行加密的设备。在这个图中的伪随机生成器在图3A中示出。当然,可代替地考虑不同的伪随机生成器,例如图3B中所示。这里,状态向量V可有利地包括第四状态变量E,其指示在每次迭代时可变化以适于排列的这个位数w(特别地,涉及排列大小e和排列阶数p)以及由排列装置实现的异或运算符,和用于对这个可变数w进行加密/解密的模块17的异或门。由此,由加密/解密模块17使用的排列函数P(用于加密)、P-1(用于解密)和异或运算符“”适于输入和输出任意长度w的字Un/Yn(w≤m<k)。假设与所有w个可用值相应地预定义排列表,以实现排列函数P和P-1并且在状态变量An-1,Xn-1和Bn-1的第一w个位上进行异或运算,则可以将输入数据分为可变大小w的块,并使用加密/解密模块17来加密和/或解密这些块。通过第四状态变量E的先前值En-1提供用于指示在第n次迭代期间要加密和/或解密的输入位数w的参数。这个第四状态变量E是与输入和输出隔离并取决于加密/解密密钥和输入字Un/Yn的应用序列的整体的状态向量的大小为r的部分。由此,在第n次迭代期间,将要处理的块的大小wn-1发送至输入字Un/Yn或输出字Yn/Un,以及发送至排列装置39a-39d和逻辑门41a-41c,以设置排列和异或运算的大小。因此,根据加密/解密密钥和输入字Un/Yn的应用序列的整体,在每次迭代时加密的位数是伪随机的。因此,输入字序列Un/Yn的最小修改系统地导致修改之后的数据的细分(subdivision)的整体修改。为了从第四状态变量E的先前值En-1提取要在第n次迭代期间加密/解密的位数w,可对w分配在第四状态变量的先前值En-1的r位上编码的十进制值(decimalvalue)0≤w≤2r-1(=m)。备选地,可为w分配在第四状态变量的先前值En-1中位数为1的值0≤w≤r(=m)。应注意,在这里描述的实例中,按照惯例并且不考虑第四状态变量E的初始值E0,将初始位数设置为w0=1。因此,在第一次迭代期间仅系统地加密/解密一个位。为了防止遗漏与所执行的细分相关的信息(例如通过观察加密模块的输入和输出),可有利地对输出字Yn/Un分组,以仅腾空恒定长度为m的输出块。在解密的情况下,可对输入字Un/Yn应用相同的措施(precaution)。图8示出加密设备(其可用于如图7所示的加密和/或解密),其包括如图3A所示的伪随机生成器1,其包括通过基于状态向量的当前值的不可逆操作来计算代替状态向量的当前值的新的当前状态值的额外装置。这些额外装置允许伪随机生成器1根据由第四状态变量E所指示的值w对状态向量V产生“空(empty)”迭代。因此,伪随机生成器1包括第四计算装置45,其包括额外满射排列装置。因此,每次迭代的伪随机生成步骤包括当可变数w等于0时,通过第四计算装置45对状态向量的当前值Vn应用满射排列(排列函数P,其具有由等于向量Vn的排列密钥设置的参数),以形成额外第二中间状态向量V2ins的当前值。然后,额外第二中间状态向量V2ins的这个当前值代替状态向量V的当前值Vn。备选地,伪随机生成器1可包括第五计算装置47,其包括额外异或门47a,用于通过对额外第二中间状态向量V2ins的当前值和状态向量的当前值Vn应用异或运算来计算状态向量的新的当前值Vtemp。然后,状态向量的这个新的当前值Vtemp代替状态向量的当前值Vn。因此,图8示出当确定w=0时,只要w保持为0则伪随机生成器1为状态向量V产生“空”迭代,且无需将当前中间值Xα结合到状态向量V中,这是因为没有对输入字Un/Yn或输出字Yn/Un进行加密/解密运算(换句话说,0个位被加密/解密)。更具体地,在开始加密处理之前,加密密钥的值变为状态向量V的初始值V0V0=加密密钥,并且w0=1。在第一次迭代时,加密/解密模块17提取要加密的输入字U1的第一位,并根据U1和状态向量V的初始值V0计算加密的输出字Y1的第一位的值。伪随机生成器1根据U1和V0计算状态向量V的第一值V1。通过扩展,在第n次迭代时,如果伪随机生成器1检测到wn-1=0,则只要wn-1=0,伪随机生成器1对状态向量的先前值Vn-1产生“空”迭代。相反,如果wn-1≠0,则加密/解密模块17提取要加密的数据的接下来wn-1个位(块Un),并根据Un和Vn-1计算输出字Yn的值。伪随机生成器1根据Un和Vn-1计算状态向量V的新值Vn。对称地,在解密之前,解密密钥的值变为状态向量V的初始值V0V0=解密密钥,并且w0=1。在第一次迭代时,加密/解密模块17提取要解密的输入字Y1的第一位,并根据Y1和状态向量V的初始值V0计算解密的输出字U1的第一位的值。伪随机生成器1根据Y1和V0计算状态向量V的第一值V1。通过扩展,在第n次迭代时,如果伪随机生成器1检测到wn-1=0,则只要wn-1=0,伪随机生成器1对状态向量的先前值Vn-1产生“空”迭代。相反,如果wn-1≠0,则加密/解密模块17提取要解密的数据的接下来wn-1个位(块Yn),并根据Yn和Vn-1计算输出字Un的值。此外,伪随机生成器1根据Yn和Vn-1计算状态向量V的新值Vn。由此,图8的实例的运算是这样的,根据不可访问的(non-accessible)伪随机变量(第四状态变量E)、加密/解密密钥、以及所应用的输入字Un/Yn的序列的整体,使得在伪随机生成器1上实施的迭代失去与加密/解密模块17实施的迭代的同步。因此,输入字Un/Yn的序列的最小修改系统地导致修改之后的数据的细分的整体修改,因此导致伪随机生成器1如何失去与加密/解密模块17的同步的修改。此外,应注意,为了避免流的失去同步和空循环,可改变要加密/解密的块的大小,而不必解决w=0的情形,在w=0这种情形下,必须仅加密/解密一个位。还可以仅保持流失去同步功能,而不改变要加密/解密的块的大小。然后,如果w=0,则产生伪随机生成器1的空循环,然而对于任意其他的w值,加密/解密固定大小为m的输入字Un/Yn或输出字Yn/Un。密码学复用本发明的加密方法和设备的各个实施例可用于高比特率流加密应用(电信、保护多媒体内容广播、服务器中的数据的快速加密(ontheflyencryption)、个人计算机和软件应用等)。此外,加密处理的特殊(very)结构使其适于在密码学复用领域中的应用。图11A至图11C示出密码学复用的实例。一般地,密码学复用使得要加密的M个明文消息(messageinclear)71朝向相同的加密设备207a会聚,其生成M个加密的消息。然后,组合这些M个加密的消息,并经由相同的通道73a(图11A)或独立地经由不同的通道73b(图11B)发送至用户或他们指定的应用。图11C示出可根据可用的传输通道数和这些通道中的每个通道的各自比特率设计的混合方案。在这个实例中,第一通道73c发送单个加密的消息,第二通道73d发送M-1个组合的加密消息。然后,在解密模式下使用的加密设备207b(还称为解密设备)从M个加密的消息重构M个明文消息75。如果M个加密的消息不可用或全不可用,则不可能重构哪怕M个明文消息中的一个。这个方案推出(pool)密码学应用,并提供简单有效的方案,用于保护不得不在一个或多个不安全的通道上行进(route)的多个内容。本发明的加密方法通过使用由此设置大小的仅一个伪随机生成器和并行的M个加密/解密模块来实现上述密码学复用。受益于加密方法在速度和密码分析抵抗力(cryptanalysisresistance)方面的性能以及对M个不同消息应用的可变大小块、空迭代和流失去同步功能,可使用极其简单的硬件或软件来实施。图12示出用于执行密码学复用并且仅包括一个伪随机生成器1和并联的两个加密/解密模块17a、17b的加密设备(其可以在加密模式下和/或在解密模式下运行)。在这种情形下,伪随机生成器1在每次迭代时计算状态向量的当前值,其包括状态变量部分的第一集(set)和状态变量部分的至少一个第二集。一般地,对于复用M个消息(在图12中M=2),伪随机生成器1的状态向量V的当前值Vn取以下形式Vn=(…X1n,A1n,B1n,E1n,…,X2n,A2n,B2n,E2n,…XMn,AMn,BMn,EMn,…)此外,第一加密/解密模块17a根据第一当前输入字U1n/Y1n以及状态向量的先前值Vn-1的部分X1n-1,A1n-1,B1n-1和E1n-1的第一集通过第一可逆操作来计算第一当前输出字Y1n/U1n。中间值X1α被发送至伪随机生成器1。第二加密/解密模块17b根据当前输入字U2n/Y2n以及状态向量的先前值Vn-1的部分X2n-1,A2n-1,B2n-1和E2n-1的第二集通过第二可逆操作来计算第二当前输出字Y2n/U2n。中间值X2α被发送至伪随机生成器1。图13图示性示出包括密码学复用装置81的加密设备(其可以用在加密模式下和/或解密模式下)的实例。在这个实例中,密码学复用装置81可复用至少两个明文消息块以形成至少两个加密的消息块,每个明文消息块对应于连续(asuccessionof)输入字。密码学复用装置81对应于通过包括第五状态变量F的状态向量对伪随机生成器1的参数的设置,如上图所示。由此,伪随机生成器1可根据状态向量中的第五状态变量F对在每次迭代中加密的各个消息块进行排序(order)。因此,在每次迭代时加密的M个块的传输通道中的排序(无论组合与否)可被预先定义或可以是不可访问的伪随机变量的函数(状态向量的一部分),这取决于加密模式下的加密密钥(相应为解密模式下的解密密钥)和应用的输入字序列的整体。例如,M个加密的块(无论组合与否)可通过排列函数P来排序,后者具有由状态向量中包括的第五状态变量F设置的参数。用于排序在第n次迭代期间组合的加密消息的M个块的参数通过第五状态变量F的先前值Fn-1来提供,Fn-1是状态向量的先前值Vn-1的大小M的一部分,与输入字和输出字隔离且取决于加密密钥(相应为解密密钥)和所应用的输入字序列的整体。因此,在每次迭代时加密消息的M个块的传输通道中的排序(无论组合与否)是伪随机的,这取决于加密密钥(相应为解密密钥)和所应用的输入字序列的整体。因此,输入字序列的最小修改系统地导致修改之后的传输通道中加密消息的块的排序(无论组合与否)的完全修改。密码学散列方法和设备图14示出如图1A示意性表示的伪随机生成器1也可以与本发明的密码学散列化(或散列)设备中的预调节模块组合使用以生成消息的摘要(digest)。应注意,图14还示出本发明的密码学散列方法的主要步骤。在这里详细描述的实施例中,状态向量V包括预定位数k,并且状态向量的初始值V0对应于大小为k的可配置散列密钥。图14示出用密码学方式使消息Mess散列化的本发明一个特定实施例的设备407。设备407包括用于将消息Mess分成预定大小的预定数目M个块Z1,Z2,...,ZM(例如,均为m位的M个块)的装置。以本领域已知方式,如果细分中的最后块未完成(即,没有包括m个位),则用0将块的未完成的位填满。设备407还包括用于从状态向量的初始值V0迭代地生成状态向量V的连续M个值13并从所生成的状态向量的最后值VM获得消息Mess的摘要hash的生成装置。在连续迭代期间由生成装置依次使用消息块Z1,Z2,...,ZM来生成状态向量的M个值。在这里展示的实例中,生成装置包括本发明的伪随机生成器1(例如图1B和图3B所示的伪随机生成器)和预调节模块417。在开始通过本发明的密码学散列方法进行密码学散列之前,散列密钥的值变为状态向量V的初始值V0(V0=散列密钥)。在每次迭代n,伪随机生成器1根据状态向量的先前值Vn-1以及由预调节模块417执行的计算所生成的当前中间值Xα使用不可逆操作来计算状态向量的当前值Vn,所述预调节模块417根据状态向量的先前值Mn-1和当前消息块Zn(在本发明的意义上为输入块)使用可逆操作来计算当前中间值Xα。在每次迭代n,伪随机生成器1从预调节模块417馈送具有当前中间值Xα的状态向量Vn。在第一次迭代时,预调节模块417根据第一消息块Z1和状态向量V的初始值V0计算迭代1的当前中间值Xα。伪随机生成器1根据第一消息块Z1和状态向量的初始值V0计算状态向量V的第一值V1。通过扩展,在第n次迭代时,预调节模块417根据当前消息块Zn和状态向量的先前值Vn-1计算迭代n的当前中间值Xα,并且伪随机生成器1根据当前消息块Zn(使用当前中间值Xα)和状态向量的先前值Vn-1计算状态向量V的当前值Vn。在这里描述的实施例中,状态向量V有利地包括这样的部分集,其包括大小为m的至少一个第一状态变量X和一个第二状态变量A。例如,可按如下方式构成状态向量V的当前值Vn,在本发明的意义上,状态变量X和A是如下状态向量的部分Vn=(…(Xn=(xn1...xnm))....(An=(an1...anm))…)在这个实例中,第一状态变量X的当前值Xn包括m位xn1,...,xnm,并且第二状态变量A的当前值An包括m位an1,...,anm,其中m是消息块Zn的大小,n=1,...,M。状态变量的位置被预先定义并且优选地被固定,但是可以根据由自身固定位置的状态向量的一个或多个部分取得的一个或多个值来为它们分配位置变量。以下仅描述状态变量的固定位置的方案。此外,优选地(尽管不必要地),分配给每个状态变量的部分不重叠。然后,由此选择状态向量的大小k,并且每个状态变量对应于有限大小的状态向量的部分(即,严格小于状态向量的大小)。当前,以上描述的加密方法环境中的状态变量的变型等同地应用于本发明的密码学散列方法的环境中。在被由预调节模块417在下一次迭代中执行的计算所生成的中间值Xα替换之前,通过预调节模块417的隔离功能在随后迭代中使用第一状态变量X的值Xn。通过预调节模块417的隔离功能在下一次迭代中还使用第二状态变量X的值An。在每次迭代(例如在第n次迭代)时,伪随机生成器1的传输装置321向预调节模块417发送状态向量的先前值Vn-1,其至少包括第一状态变量X的先前值Xn-1和第二状态变量A的先前值An-1。伪随机生成器1的接收装置323从预调节模块417接收当前中间值Xα。第一计算装置325a用当前中间值Xα替换第一状态变量X的先前值Xn-1,以计算第一中间状态向量Vint1的当前值。伪随机生成器1的其他处理步骤和装置类似于参照图1B(和图3B)所述,并且在这里不再详细描述。预调节模块417包括接收装置433和用于将消息块与当前中间值Xα隔离的隔离装置435。接收装置433从伪随机生成器1接收状态向量的先前值Vn-1,其至少包括第一状态变量X的先前值Xn-1和第二状态变量A的先前值An-1。隔离装置435适于对每个消息块Zn应用对称密钥函数,所述密钥从状态向量的先前值的至少一个部分获得。所使用的密钥函数优选地包括至少一个异或运算,即,隔离装置435包括至少一个异或门,其具有由状态向量的先前值的大小为m的部分设置的参数。备选地,其还可包括在本发明意义上的至少一个双射排列,其具有由状态向量的先前值的大小为m的部分设置的参数。在这里描述的实例中,由隔离装置435使用的密钥函数由本发明的意义上的两个双射排列和两个异或运算构成,每个异或运算具有由状态向量Vn-1的大小为m的部分设置的参数。这个函数的密钥由设置第一双射排列的参数的部分、设置第一异或运算的参数的部分、设置第二双射排列的参数的部分和设置第二异或运算的参数的部分构成。因此,隔离装置435包括由第一异或门441a隔离的第一和第二双射排列装置439a和439b。第二异或门441b接收第二双射排列装置439b的输出。这里考虑的双射排列装置439a和439b均使用上述排列函数P,其具有由状态向量Vn-1的各个不同状态变量设置的参数。换句话说,上述不同双射排列装置使用等于状态向量Vn-1的状态变量的大小为m的排列密钥。由此·第一双射排列装置439a使用与排列函数P对应的第一双射排列,排列函数P具有由等于第二状态变量An-1的先前值的排列密钥设置的参数;·第二双射排列装置439b使用与排列函数P对应的第二双射排列,排列函数P具有由等于第一状态变量Xn-1的先前值的排列密钥设置的参数。用于在双射排列装置439a和439b中设置排列函数P的参数的排列密钥独立于应用所得到的排列函数P的数据,因此每个排列均使用可逆(双射)函数。这个可逆函数P是应用根据相关排列密钥的每个位的值所选的大小为m的m个连续排列的结果。因此,在第n次迭代中计算当前中间值Xα包括以下操作·第一排列装置439a通过对当前输入块Zn应用第一双射排列来计算第一中间字J1n,所述排列具有由第二状态变量的先前值An-1设置的参数J1n=P(Zn,An-1);·第一异或门441a通过对第一中间字J1n和第二状态变量的先前值An-1应用异或运算来计算第二中间字·第二排列装置439b通过对第二中间字J2n应用第二双射排列来计算第三中间字J3n,所述排列具有由第一状态变量的先前值Xn-1设置的参数J3n=P(J2n,Xn-1);·第二异或门441b通过对第三中间字J3n和第一状态变量的先前值Xn-1应用异或运算来计算当前中间值然后,将这个当前中间值Xα发送给伪随机生成器1。应注意,修改当前块Zn的一个位的操作(即,在被散列处理中的消息块)通过伪随机生成器1的计算装置325a修改了结合在状态向量Vn-1中的变量Xα的位,以在第n次迭代中形成第一中间向量Vint1。因此,将计算装置326实现的排列的选择分配给排列的一个阶(stage),因此,也将修改状态向量Vn和随后状态向量的整体(雪崩效应)。在使用构成消息Mess的M个消息块的M个连续迭代之后,通过密码学散列设备407从伪随机生成器1生成的最新(即,第M个)状态向量形成消息Mess的摘要hash,换句话说hash=VM。得益于伪随机生成方法的速度和密码分析抵抗力性能,这提供了极其简单的密码学散列方法和设备的硬件或软件实施。此外,根据类似于为了本发明的加密设备所实施的原理,可以考虑根据迭代大小可变的消息块Zn(即,当迭代进行到其大小w为可变并且在状态向量的一部分中指定的块时对消息Mess进行细分)和/或使得预调节模块中和伪随机生成器中进行的操作失去同步(特别地,通过引入如加密设备所述的“空迭代”)。此外,在本发明的一个特定实施例中,同样可以依次链接(chain)h个散列设备(由散列设备的伪随机生成器生成的状态向量的一部分馈送下一个散列设备的预调节模块),以增加密码学散列的数学复杂度。此外,在本发明的一个特定实施例中,可以通过本发明的散列方法进行密码学散列,同时使用本发明的加密方法的架构对消息进行加密(相应为解密)。排列函数P的实现以下参照图9A至图9E详细描述在以上实例中使用的排列函数P如何工作。如上所述,以这里非常有利的方式,伪随机生成器(和生成方法)、加密设备(和方法)以及密码学散列设备(和方法)依赖于由本发明提出的同一排列函数P,其具有由排列密钥设置的参数以及可根据输入数据的大小和相关密钥来设置的参数。因此,在这些实例中的排列函数P具有解决多种需求的优点。在一种情况下,排列密钥的大小等于输入数据的大小,其还等于输出数据的大小(例如,用于加密或密码学散列,而且还用于图3A中所示的实例中的伪随机生成)。这称为“方形”排列函数。在另一种情况下,排列密钥的大小严格小于输入数据的大小,其还等于输出数据的大小(例如,用于图1B和图3B中所示的实例中的伪随机生成)。这称为“矩形”排列。在另一种情况下,排列函数P可具有这样设置的参数,即,其可应用于大小为e(e=k1≥k-状态向量V的大小)和m(要加密/解密的数据U/V的大小)两者的输入数据。在另一种情况下,排列函数P可具有这样设置的参数,即,其可应用于任意大小e=w的输入数据,从而能够访问(access)用于在每次迭代时修改加密的位数的函数。图9A示出排列表,其包括框(box)61a-61f,且其中每个框指示在相关位置处出现的位的源位置。在移动中,每个位保持其值v(i)=相关数据的第i位的二进制值(0或1)。在这个实例中,将输入数据的第一位移位至输出数据的第三位置(框61c),并保持其值v(1)。将输入数据的第二位移位至输出数据的第k位置(框61f),并保持其值v(2)。将输入数据的第三位移位至输出数据的第四位置(框61d),并保持其值v(3)。将输入数据的第四位移位至输出数据的第一位置,并保持其值v(4)。将输入数据的第k位移位至输出数据的第二位置(框61b),并保持其值v(k)。根据与应用排列函数P的输入数据相关的密钥做出的选择,排列函数P为·如果从输入数据生成排列密钥(例如密钥=输入数据),则为单向函数,因此为不可逆(不可反转);在由伪随机生成器执行的运算中和本发明的密码学模块中利用这些单向函数属性;或·假设排列密钥的值已知,并且排列密钥相对于输入数据独立或固定,则为双射函数(双向密钥排列),因此其是可逆的;在隔离函数或加密/解密模块17的装置或密码学散列设备的预调节模块417中可利用这些双射函数属性。为了对要排列的大小为e的数据应用排列函数P(其具有由大小为p的排列密钥C设置的参数),对要排列的数据应用大小为e的p个排列,所述排列具有由排列密钥的p个位的值设置的参数,即,根据排列密钥的不同位的值选择每个排列。对于排列密钥的每个位,从用于每个排列阶的预先限定的大小为e的不同排列对(P0,P1)选择排列。例如,如果所考虑的排列密钥的位等于0,则选择排列P0;如果所考虑的排列密钥的位等于1,则选择排列P1。特别地,可以从满足以下条件中的至少一个条件的预定义排列对(P0,P1)选择所考虑的大小为e的排列·对于密钥的每个位,通过分别组合P0和P1获得的排列与通过分别组合P1和P0获得的排列在所有点均不同;·在排列函数的p个阶中的每个(与排列的应用对应的阶)使用在所有点均不同的相同排列对P0和P1,即,对于任意t,用于第一排列的输出的位t的位置与用于第二排列的输出的位t的位置不同;·在每个阶中使用排列对(P0;P1),从而排列P0和P1在所有点分别不同于恒等排列(identitypermutation),即,在应用排列P0(相应地为P1)前,位于位置t的位在离开排列P0(相应地为P1)时被定位在不同于t的位置。备选地,可以在每个排列阶i中使用不同排列对(P0i,P1i)。因此,对于要处理的任意大小e的数据,排列函数P在两个步骤中进行·在第一步骤中,预先计算大小的表(p,2e),其由p行大小为e的两个排列(P0,P1)的每一个排列构成,其还用作硬件实现中的路线矩阵;·在第二步骤中,当使用排列函数P时,这个表的每行i提供两个可能的排列,根据所使用的排列密钥的第i位的值vkey(i)来选择这些排列中的一个或另一个排列。因此对于给定的排列密钥值,排列函数P将大小为e的p个排列分别链接到(chainto)输入数据,所述排列具有由排列密钥的p个位的每个位的值设置的参数。图9B示出在排列函数P的相应5个排列阶中使用的大小e=5的5个不同的连续排列对的实例,其根据函数P(方形排列函数P)的大小p=5的排列密钥的第i个位的值vkey(i)应用于大小e=5的输入数据。图9C示出用于排列函数P的5个排列阶中的每个的大小e=5的两个不同排列的相同对的实例,其根据函数P(方形排列函数P)的大小p=5的排列密钥的第i个位的值vkey(i)应用于大小e=5的输入数据。图9D示出这样的实例,其中,大小e=7的5个不同的连续排列对分别使用在排列函数P的5个排列阶中,并且根据函数P(矩形排列函数P)的大小p=5的排列密钥的第i个位的值vkey(i)应用于大小e=7的输入数据。图9E示出这样的实例,其中,大小e=7的两个不同排列的相同对使用于排列函数P的5个排列阶中的每个,并且根据函数P(矩形排列函数P)的大小p=5的排列密钥的第i个位的值vkey(i)应用于大小e=7的输入数据。上述排列函数P的主要优点是其硬件实现非常简单,其可仅采用“非(NOT)”和“与(AND)”逻辑函数。图10A和图10B示出排列装置,其包括逻辑门63、65,用于根据位vkey(i)的值对每个位vkey(i),i=1,...,p,选择大小为p的排列密钥、大小为e(要排列的数据大小)的两个预定义排列之一,由此实现p个排列的链接,所述排列具有由所述排列密钥的p个位的每个的值设置的参数。图10A的实例更特别地示出使用“非”逻辑门63和“与”逻辑门65对图9C中p=5且e=6的排列函数P的第一排列阶的布线。在这个应用中,与逻辑门(ANDlogicgate)65对应于由排列密钥的位的值vkey或其补数(complement)控制的开关(或硬件实现中的晶体管)。因此,根据密钥的位的值vkey或其补数来打开或关闭开关(当开关是晶体管时,接通或关断)。因此,使得阶(stage)彼此链接,并且阶h-1的输出69馈送阶h的输入67。通过将要排列的数据的每个位的相应值应用于第一阶的输入,以及将相关密钥的位的各个值应用于每个阶的密钥输入,获得可以仅在所有p个阶上的一个操作中执行的逻辑函数,这对应于对大小为e的输入数据有影响并且具有由大小p的密钥设置的参数的大小为e的p个排列。如果对于p个阶中的每个使用两个不同排列的相同对,则使用p个相同模块。图10B示出根据图9C中所示的p=5的值vkey(i),对大小e=5的输入数据所应用的p=5阶的每一阶使用的两个不同排列的相同对的硬件实现的实例。对于软件实现,可使用具有如下参数的递归函数输入数据、排列密钥、排列表和相关的排列阶i。通过调用i=p的如下“递归函数”可极快地计算排列函数POutputdata=recursivefunction(inputdata,key,permutationtable,i).Ifi=1;thenIfVkey(1)=0;thenOutputdata=Permutation(1)_Vkey_0(inputdata)Else,Outputdata=(Permutation(1)_Vkey_1(inputdata)EndifElse,IfVkey(i)=0;thenOutputdata=Permutation(i)_Vkey_0(recursivefunction(inputdata,key,permutationtable,i-1))Else,Outputdata=Permutation(i)_Vkey_1(recursivefunction(inputdata,key,permutationtable,i-1))EndifEndifEndoffunction.上述硬件和软件实现具有这样的优点他们的使用可以不考虑相关排列密钥的特征(nature)(即,依赖于或独立于要排列的输入数据),即,无论排列函数P是单向函数或排列函数P是双射密钥排列。这具有这样的优点,即,限制了实现上述处理和设备的复杂度。因此,本发明提供了一种伪随机生成器,其具有由任意大小k(用作状态向量的初始值)的加密密钥设置的参数,实现了在每次迭代时被馈送的状态向量的迭代,在每次迭代中具有来自加密/解密模块的中间结果,因此取决于所应用的输入序列的整体。加密/解密模块集成了伪随机生成器的自隔离函数(self-isolationfunction),并在每次迭代时根据伪随机生成器的状态向量的多个部分的值执行输入数据的加密和/或解密。因此,本发明的加密设备特别地具有如下优点无论在硬件或软件中实现,加密/解密模块均是可逆的。因此,不必具有用于加密和解密函数的不同程序/电路。伪随机生成器是不可逆的。无论在硬件或软件中实现,在伪随机生成器中,以不可逆形式P(data,key(data))(即,密钥取决于要排列的数据),以及在加密/解密模块中,以可逆形式P(data,fixedkey)(即,密钥相对于要排列的数据是固定的),在单个极快的操作执行排列函数P。伪随机生成器不具有特别的期间(period),并且不符合预先定义的周期。状态向量的值取决于加密/解密密钥和输入字的应用序列的整体,而没有确定的周期,因为在每次迭代时从一个吸引元素(attractor)(特定针对具体输入序列而言的周期)切换至另一个。由本发明提出的状态向量伪随机生成器为,状态向量的值不能够从输出字序列的观察来重新构成,或有意地通过输入字序列达到(bringto)预先定义值(不可观察和不可命令的状态向量)。状态向量用隔离函数隔离输入和输出字,所述隔离函数具有由其自身状态变量的确定值设置的参数(自隔离)。除了密码分析的抵抗力,这个属性消除了在每次开始加密处理时初始化向量的修改问题。因此,不需要修改用作初始化向量的加密/解密密钥。此外,可使用以消息数类型的Nonce(曾经使用的数)开始的消息头,以避免漏掉与消息具有类似头相关的信息。本发明提供了这样的可能,即根据不可访问并且取决于加密/解密密钥和输入字的应用序列的整体的伪随机变量(状态向量的一部分)修改在每次迭代时加密的位数。另一选择是,根据不可访问并且取决于加密/解密密钥和输入字的应用序列的整体的伪随机变量(状态向量的一部分),为伪随机生成器产生“空迭代”(在状态向量上实现迭代,而无需加密输入),从而导致伪随机生成器与数据加密/解密模块失去同步。另一选择是,通过使得要加密的M个明文消息会聚在生成M个加密消息的相同加密模块上,将加密设备用作密码学复用器。如果M个加密消息不可访问,则不可能重新构成M个明文消息中的一个或全部。加密消息可以彼此组合,以减少传输通道的数目。在每次迭代时,传输通道中加密块的排序(无论组合与否)可以是预先定义的,或随着不可访问并且取决于加密/解密密钥和输入字的应用序列的整体的伪随机变量(状态向量的一部分)而变化。本发明具有非常有益的应用,因为其能够同时密码学散列和对称加密/解密,以提供高度安全性和硬件或软件的简单和有效实现。应注意,密码学散列和对称加密常规地用在所有类型的通信中,例如移动通信、因特网、智能卡等。权利要求1.一种生成伪随机数据序列(3,13)的密码学方法,所述伪随机数据序列由从状态向量的初始值(V0)迭代生成的大小为k的状态向量(V)的连续值形成,所述方法的特征在于,在每次迭代期间,为了给该次迭代生成状态向量的当前值(Vn)对大小为k1的临时向量(Vprov)连续应用大小为k1的预定数目d个排列,k1大于或等于k,所述临时向量包括由先前迭代中生成的状态向量的先前值(Vn-1)的至少一个部分形成的大小为k的至少一个第一中间向量(Vint1),每个排列与大小为d的排列密钥(C)的位相关联并至少根据该位的值来选择,所述排列密钥是从所述第一中间向量(Vint1)的k个位选择d个位的结果;从这个应用步骤的结果向量(Vres)的至少一个部分(Vint2)获得所述状态向量的当前值(Vn)。2.根据权利要求1所述的生成伪随机数据序列的密码学方法,其特征在于,所述临时向量还包括通过对所述第一中间向量的每个位补1来获得的向量。3.根据权利要求1或2所述的生成伪随机数据序列的密码学方法,其特征在于,所述状态向量的当前值是对所述应用步骤的结果向量的所述部分(Vint2)和所述状态向量的先前值应用异或运算(327a,27a)的结果。4.根据权利要求1或3所述的生成伪随机数据序列的密码学方法,其特征在于,所述临时向量(Vprov)和所述排列密钥(C)的大小相同,并等于所述第一中间向量(Vint1)的大小。5.根据权利要求1至4中任一项所述的生成伪随机数据序列的密码学方法,其特征在于,每次迭代还包括在所述应用步骤之前,由所述状态向量的先前值(Vn-1)和输入数据块(Un,Yn,Zn)经计算获得当前中间值(Xα)的步骤,所述第一中间向量由所述状态向量的先前值形成,所述状态向量的先前值中的一部分(Xn-1)被所述当前中间值(Xα)代替。6.根据权利要求5所述的生成伪随机数据序列的密码学方法在以密码学方式使消息(Mess)散列化以生成所述消息的摘要(hash)的方法中的使用,所述消息包括预定数目M个数据块,所述数据块中的每一个依次用作在生成伪随机数据序列的密码学方法的连续迭代期间的输入块(Zn),以生成状态向量(V)的M个值,所述消息的所述摘要从所述状态向量的最新生成值(VM)获得。7.一种对输入数据序列进行加密的方法,其中由状态向量(V)的初始值(V0)和形成所述输入序列的连续输入字(Un,Yn)迭代地生成状态向量的连续值(Vn)和连续输出字(Yn,Un),每次迭代包括加密步骤,其中通过取决于当前输入字(Un,Yn)和在先前迭代中生成的状态向量的先前值(Vn-1)的可逆操作,计算用于该次迭代的当前输出字(Yn,Un);以及伪随机生成步骤,其中通过至少取决于所述状态向量的先前值(Vn-1)的不可逆操作,计算用于该次迭代的状态向量的当前值(Vn);所述方法的特征在于所述可逆操作至少包括第一密钥函数和第二密钥函数(35a,35c),所述密钥从所述状态向量的先前值的至少一个部分(Xn-1,An-1,Bn-1)生成;以及所述不可逆操作还取决于当前中间值(Xα),该当前中间值(Xα)取决于所述状态向量的先前值(Vn-1)和当前输入字(Un,Yn),并且通过所述第一密钥函数(35a)和所述第二密钥函数(35c)的各自介入,分别与所述输入字(Un,Yn)和输出字(Yn,Un)隔离。8.根据权利要求7所述的加密方法,其特征在于,所述第一密钥函数和第二密钥函数中的一个或两个包括至少一个异或运算(41a,41c),所述异或运算具有由所述函数的密钥的至少一个部分(An-1,Bn-1)设置的参数。9.根据权利要求7或8所述的加密方法,其特征在于,所述状态向量的大小为k,并且在所述伪随机生成步骤期间,为了计算所述状态向量的当前值对大小为k1的临时向量连续应用大小为k1的预定数目d个排列,k1大于或等于k,所述临时向量包括由状态向量的先前值的一部分和所述当前中间值形成的大小为k的至少一个第一中间向量,每个排列各自与大小为d的排列密钥相关联并至少根据该位的值来选择,所述密钥是通过从所述第一中间向量的k个位选择d个不同位而获得的;从这个应用步骤的结果向量的至少一个部分获得所述状态向量的当前值(Vn)。10.根据权利要求9所述的加密方法,其特征在于,所述临时向量还包括通过对所述第一中间值的每个位补1来获得的向量。11.根据权利要求9或10所述的加密方法,其特征在于,所述状态向量的当前值是对所述应用步骤的结果向量的所述部分(Vint2)和所述状态向量的先前值应用异或运算(27a,327a)的结果。12.根据权利要求7至11中任一项所述的加密方法,其中所述输入字(Un,Yn)和/或输出字包括根据迭代可变的位数(w),并且所述状态向量包括在每次迭代时指示所述可变的位数的部分。13.根据权利要求12所述的加密方法,其特征在于,每次迭代的伪随机生成步骤还包括当从所述状态向量的当前值确定所述可变的位数为0时,通过取决于所述状态向量的当前值的不可逆操作来计算状态向量的新当前值(Vtemp),以代替所述状态向量的当前值。14.根据权利要求7至13中任一项所述的加密方法,其特征在于所述伪随机生成步骤是形成第一状态向量(V1)的当前值(V1n)的第一伪随机生成步骤;所述第一伪随机生成步骤与用于形成第二状态向量(V2)的当前值(V2n)的至少一个第二伪随机生成步骤并行组合;以及状态向量的当前值(Vn)是对所述第一状态向量的当前值(V1n)和至少第二状态向量的当前值(V2n)应用异或运算(131)的结果。15.根据权利要求7至14中任一项所述的加密方法,其特征在于,所述加密步骤是第一加密步骤,其中进行如下计算通过取决于第一当前输入字(U1n,Y1n)和所述状态向量的先前值(Vn-1)的至少一个第一部分的第一可逆操作来计算第一当前输出字(Y1n,U1n);以及计算第一当前中间值(X1α);以及所述方法还包括至少一个第二加密步骤,所述第二加密步骤进行如下计算根据取决于第二当前输入字(U2n,Y2n)和所述状态向量的先前值(Vn-1)的至少一个第二部分的第二可逆操作来计算第二当前输出字(Y2n,U2n);以及计算第二当前中间值(X2α);所述当前中间值用在包括所述第一当前中间值(X1α)和至少所述第二当前中间值(X2α)的伪随机生成步骤期间。16.根据权利要求15所述的加密方法,其特征在于,还包括密码学复用至少两个明文消息块以形成至少两个加密消息块的步骤,每个明文消息块对应于连续输入字,以及所述至少两个加密消息块根据所述状态向量的先前值的一部分在每次迭代时被排序。17.一种密码学模块(326),其适于由大小为k1的输入位的向量(Vprov)生成输出位的向量(Vres),其特征在于,包括通过从输入向量的位中选择d个不同位来形成预定大小为d的排列密钥(C)的装置(326b);将所述排列密钥的每个位与至少根据该位的值选择的大小为k1的排列相关联的装置;以及对所述输入向量连续应用大小为k1的与排列密钥的d个位相关联的d个排列的装置(326a),以获得所述输出位的向量。18.一种伪随机数据序列的密码学生成器(1),所述伪随机数据序列由从状态向量的初始值(V0)通过迭代生成的大小为k的状态向量(V)的连续值(Vn)形成,所述生成器的特征在于,包括用于在每次迭代中为该次迭代生成状态向量的当前值(Vn)的装置(5)根据权利要求17所述的密码学模块,其适于从大于或等于k的大小为k1的临时向量(Vprov)生成结果向量(Vres),所述临时向量包括由先前迭代中生成的状态向量的先前值(Vn-1)的至少一个部分形成的大小为k的至少一个第一中间向量(Vint1),所述排列密钥的大小d小于或等于k;以及用于从所述结果向量的至少一个部分获得所述状态向量的当前值的装置。19.根据权利要求18所述的生成器,其特征在于,在每次迭代中还使用用于获得从所述状态向量的先前值(Vn-1)和输入数据块计算的当前中间值(Xα)的装置(323);以及用于从所述状态向量的先前值形成所述第一中间向量(Vint1)的装置(325a,25),所述状态向量的先前值中的一部分(Xn-1)被所述当前中间值(Xα)代替。20.一种对输入数据序列进行加密的设备(7),适于从状态向量的初始值(V0)和形成所述输入序列的连续输入字(Un,Yn)迭代地生成状态向量的连续值(Vn)和连续输出字(Yn,Un),所述加密设备在每次迭代中使用加密装置(17),适于通过取决于当前输入字(Un,Yn)和在先前迭代中生成的状态向量的先前值(Vn-1)的可逆操作计算用于该次迭代的当前输出字(Yn,Un);以及伪随机生成器(1),适于通过至少取决于所述状态向量的先前值的不可逆操作计算用于该次迭代的状态向量的当前值(Vn);所述加密设备的特征在于所述可逆操作至少包括第一密钥函数和第二密钥函数(35a,35b),所述密钥由所述状态向量的先前值的至少一个部分(Xn-1,An-1,Bn-1)生成;以及所述不可逆操作还取决于当前中间值(Xα),该当前中间值(Xα)取决于所述状态向量的先前值和当前输入字,并且通过所述第一密钥函数和所述第二密钥函数的各自介入,分别与所述输入字和输出字隔离。21.根据权利要求20所述的加密设备,其特征在于,所述伪随机生成器是根据权利要求19所述的用于生成伪随机数据序列的密码学生成器。22.根据权利要求20或21所述的加密设备,适于处理输入字(Un,Yn)和/或输出字,包括根据迭代可变的位数,所述设备还包括用于在每次迭代中从所述状态向量的一部分确定所述可变的位数的装置,以及所述伪随机生成器还包括当从所述状态向量的当前值确定所述可变的位数为0时,通过取决于所述状态向量的当前值的不可逆操作来计算状态向量的新当前值(Vtemp)以代替所述状态向量的当前值的装置(45)。23.根据权利要求20至22中任一项所述的加密设备,其特征在于,还包括以密码学方式复用至少两个明文消息块以形成至少两个加密消息块的设备,每个明文消息块对应于连续输入字,以及所述至少两个加密消息块根据所述状态向量的先前值的一部分在每次迭代时被排序。24.一种密码学散列设备(407),适于从包括预定数目M个数据块(Zn)的消息(Mess)生成摘要(hash),所述散列设备的特征在于,包括根据权利要求19所述的密码学生成器(1),在M次连续迭代中生成状态向量的连续M个值;以及在M次迭代中的每次迭代中用于以下操作的装置从所述消息的当前数据块(Zn)和由所述密码学生成器生成的状态向量的先前值为该次迭代计算当前中间值(Xα);和向所述密码学生成器提供所述当前中间值;从由所述生成器生成的状态向量的最新值(VM)获得所述摘要的装置。25.一种计算机程序,包括当所述程序被加载到计算机或数据处理系统中并且在计算机或数据处理系统中执行时,用于执行根据权利要求1至5中任一项所述的生成伪随机数据序列的方法的程序代码指令。26.一种计算机程序,包括当所述程序被加载到计算机或数据处理系统中并且在计算机或数据处理系统中执行时,用于执行根据权利要求6所述的密码学散列方法的程序代码指令。27.一种计算机程序,包括当所述程序被加载到计算机或数据处理系统中并且在计算机或数据处理系统中执行时,用于执行根据权利要求7至16中任一项所述的加密方法的程序代码指令。全文摘要本发明涉及一般的数字安全领域,更具体地,涉及密码学。具体地,本发明提出一种对数据序列进行加密的设备和方法。本发明还涉及用于生成伪随机数据序列(13)的密码学设备(1)和方法,以及它们在数字安全领域中的有利使用,即,特别地用于数据加密和解密,以及用于使消息密码学散列化。文档编号H04L9/18GK101779412SQ200880102186公开日2010年7月14日申请日期2008年6月4日优先权日2007年6月5日发明者尼古拉斯·雷菲申请人:奥利多公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1