发明内容
因此,可能期望有这样一种加密方法:它既具鲁棒性又与高传输数率兼容(如在数字电视领域所遇到的那些),同时实现具有适合普通大众的成本的计算装置。
本发明的实施例涉及加密或解密二进制数据流的方法,该方法包括如下步骤:生成二进制加密流,由可逆逻辑运算将该二进制数据流的每个比特与二进制加密流的比特进行组合;其中生成二进制加密流包括如下步骤:通过对数据块应用使用了私密密钥的密码函数来生成输入块,以及通过由逻辑运算将输入块的比特彼此组合来从输入块生成二进制加密流,以这样的方式来防止仅根据二进制加密流确定输入块。
按照一个实施例,所述方法包括如下步骤:通过对先前获得的输入块应用密码函数来连续地生成输入块。
按照一个实施例,二进制加密流的生成通过循环来完成,在每次循环期间生成二进制加密流的几个比特,输入块的生成具有等于二进制加密流的几十个生成循环的持续时间。
按照一个实施例,初始数据块随机地生成(用于通过应用密码函数生成第一数据块),并由数据流发射器发送给数据流接收器。
按照一个实施例,二进制加密流的生成以循环方式完成,每个循环包括如下步骤:将输入块的几个比特彼此组合以生成加密流的几个比特,通过将输入块的几个比特彼此组合来更新输入块的一部分,以这种方式使得在一定次数的循环之后,输入块的每个比特依赖于初始输入块的所有比特。
按照一个实施例,密码函数是如下类型:AES, DES, 三重DES, Twofish,或Serpent, 或者散列函数,其应用于要加密的数据以及应用于私密密钥。
本发明的各实施例还涉及一种流加密设备,其包括:二进制加密流的生成电路,以及利用二进制加密流来加密或解密的数据流的每个比特的可逆组合逻辑电路,其中所述生成电路包括:生成输入块的块加密电路,以及根据输入块来供给二进制加密流的、输入块的比特的组合逻辑电路,该电路实施按照上面公开的实施例之一的方法。
按照一个实施例,组合逻辑电路包括:供给逻辑电路,其生成作为输入块的比特的函数的二进制加密流的比特;以及更新逻辑电路,其组合输入块的比特并用从所述组合得到的比特来替换输入块的比特。
按照一个实施例,更新逻辑电路被配置使得在更新逻辑电路的一定次数的处理循环之后,更新的输入块的每个比特依赖于块加密电路供给的输入块的所有比特。
按照一个实施例,组合逻辑电路包括:块移位寄存器,其接收加密的块,该块在组合逻辑电路的每个处理循环被移位一定数目的比特,所述数目等于在组合逻辑电路的每个处理循环供给的二进制加密流的比特数目;以及逻辑门,其通过组合该移位寄存器的几个比特来供给二进制加密流的比特。
按照一个实施例,组合逻辑电路包括:块移位寄存器,其接收加密的块,该块在组合逻辑电路的每个处理循环被移位一定数目的比特,所述数目等于在组合逻辑电路的每个处理循环供给的二进制加密流的比特数目;以及非线性逻辑电路,其组合移位寄存器的比特并将通过非线性逻辑电路获取的比特引入到移位寄存器中。
按照一个实施例,非线性逻辑电路均包括:几个字输入,每个字输入接收块移位寄存器的字;几个字移位寄存器,其按照字输入在其自身上将字输入的比特旋转一定数目的比特;几个组合逻辑函数,用于在彼此之间组合字移位寄存器中包含的几个字的比特,并且每个供给一个字;以及逻辑门,其将从组合逻辑函数输出的字的比特彼此组合,并且供给被引入到块移位寄存器中的输出字。
按照一个实施例,组合逻辑电路被配置成在对组合逻辑电路进行节奏控制(cadencing)的时钟信号的每个循环供给二进制加密流的比特。
按照一个实施例,组合逻辑电路包括块移位寄存器,其接收加密块,所述加密块在对组合逻辑电路进行节奏控制的时钟信号的每个循环被移位,组合逻辑电路被配置成在时钟信号的每个循环通过在不会使时钟循环持续时间恶化的情况下使用块移位寄存器的尽可能大的部分来更新块移位寄存器的至少一部分。
具体实施方式
图1示出了通过数据链路媒介CDB彼此通信的两个设备DEV1,DEV2。为了确保传输的数据的安全,两个设备中的每个设备都通过逻辑电路媒介LGS1,LGS2链接到链路CDB。每个逻辑电路LGS1,LGS2还接收加密流生成电路SCG1,SCG2的一个或几个二进制加密流SC。每个逻辑电路LGS1,LGS2将由设备DEV1,DEV2之一发出的、且由设备DEV1,DEV2中的另一个接收的二进制数据流与二进制加密流BS进行组合。
通信链路CDB可以包括一个或n个导线的数据总线和/或无线传输链路,如WiFi链路或等同物。按照在设备DEV1,DEV2的输出上并行处理的二进制流的数目,每个逻辑电路LGS1,LGS2可以包括一个或多个逻辑门。因此,当设备DEV1发出数据比特Di时,电路LGS1发送加密的数据比特CDi给链路CDB,使得CDi=LO(Di, BSi),LO是由电路LGS1应用于数据比特Di以及应用于由电路SCG1,SCG2生成的二进制加密流BS的对应比特BSi上的逻辑运算。运算LO是可逆的,即,存在求反运算LO’,其允许加密的比特CDi被解密以便从比特CDi和从用于获得比特CDi的比特BSi获得对应的数据比特Di:Di=LO’(CDi, BSi)。求反运算LO’由电路LGS2实现以解密所接收的二进制流。加密数据的每个比特CDi由链路CDB传输并由电路LGS2接收,电路LGS2通过以与电路LGS1相同的方式使用由电路LGS2生成的二进制加密流的相同比特BSi,对加密数据的每个比特应用运算LO’。因此,逻辑运算LO例如是“异或”运算。在该情况下,运算LO和LO’是相同的,因为是异或运算符。
为了解密从设备DEV1接收到的数据,电路LGS2因而生成与用于加密这些数据相同的二进制解密流。
图2示出了每个加密流生成电路SCG1,SCG2的实施例。在图2中,电路SCG包括块加密电路BCIP和组合逻辑电路SCIP。电路BCIP包括用于加密的数据的块输入端、私密密钥SK输入端、以及连接到电路BCIP的块加密输入端和电路SCIP的输入端的加密数据CB块输出端。电路BCIP将密码函数应用于在输入端上供给的数据块,并在输出端上供给加密数据块CB。电路SCIP通过组合由电路BCIP供给的加密块比特CB生成二进制加密流BS。电路SCIP和电路BCIP交换控制和同步信号CTL,具体用于管理对电路BCIP和SCIP之间的通信接口的访问。在第一迭代期间,电路BCIP在块加密输入端接收可以随机产生的数目RN。在几个后续的迭代期间,电路BCIP的块加密输入端接收先前生成的加密块。电路BCIP执行例如对称块加密函数,如AES(先进的加密标准)、DES(数据加密标准)、三重DES、Twofish,Serpent等。电路BCIP可以平等地执行应用于要加密的数据以及私密密钥SK的散列函数,如MD5(消息摘要5),SHA-1,或SHA-2(安全散列算法)。
因此,电路SCG2可以生成用于加密从电路LGS1接收的数据的二进制加密流BS,电路SCG2知道随机数RN,并且与电路SCG1共享私密密钥SK。随机数RN可以通过任何方式从电路LGS1传输到电路LGS2,且该传输不必是安全的。
图1和2所示的架构的优点是每个加密数据发射或接收设备仅仅需要一个块加密计算电路。可以注意到,电路SCG1,SCG2不包括执行电路BCIP的逆处理的块解密电路。
图3示出了当与电路SCG1关联的设备DEV1向与电路SCG2关联的设备DEV2发送数据时,由加密流生成电路SCG1,SCG2执行的步骤序列。电路SCG1执行步骤S1至S4,而电路SCG2执行步骤S2’至S4’。在步骤S1,电路SCG1生成随机数RN。在步骤S2,电路SCG1向设备DEV2发送数目RN。在步骤S2’,电路SCG2接收数目RN。在步骤S3,电路SCG1的电路BCIP对数目RN加密以获得加密的块CB,并且从最后获得的加密块开始重复该操作一定次数以获得新的加密块。电路SCG1将所获得的每个加密块CB传送给电路SCG1的电路SCIP。在步骤S4中,电路SCG1的电路SCIP根据电路BCIP传送的最后加密块CB生成二进制流BS的比特。步骤S4被执行了生成对应于要加密的二进制数据流的大小的二进制加密流所必需的次数。并行地,在步骤S2’之后,根据所接收的数目RN,电路SCG2对步骤S3’和S4’(类似步骤S3和S4) 执行需要的次数以生成与电路SCG1所生成的二进制流BS相同的二进制流。
图4示出了每个电路SCG1,SCG2生成流BS的功能。在第一加密计算ENC1期间,电路BCIP根据例如随机产生的数目RN以及根据在输入端供给的私密密钥SK生成第一加密块CB1。块CB1在由电路BCIP进行的第二加密计算ENC2的输入端(在数目RN位置)上供给。并行地,块CB1被提供给电路SCIP,其在t0时刻启动二进制加密流BS的比特的一系列生成循环C1, C2, C3,…Cn。在每个循环C1..Cn,电路SCIP进行二进制流CIP1, CIP2, CIP3,…CIPn的比特生成操作以生成二进制流BS的一个或多个比特BS1, BS2, BS3,…BSn。在n个循环C1..Cn之后,在tn时刻,块加密计算ENC2完成并向电路SCIP供给第二加密块CB2,对于第三块加密计算ENC3在电路BCIP的输入端上供给。因此,在这n个循环期间,电路SCIP以自治方式工作。在计算ENC3期间,电路SCIP从tn时刻起针对随后的n个循环Cn+1, …, C2n中的每个循环执行二进制流CIPn+1,…CIP2n的比特生成操作,从而根据加密块CB2来供给比特BSn+1,…BS2n。在时刻t2n启动的随后的循环C2n+1中,计算ENC3供给加密的块CB3,其在始自循环C2n+1的n个循环期间使用以生成比特加密流BS2n+1…。在每个计算ENC1, ENC2,ENC3,…,相同密钥SK被使用。而且,在由电路BCIP从数目RN进行一定次数的连续加密计算之后,可产生新的数目RN,并将其传送给电路BCIP和电路SCG2。
两个电路BCIP和SCIP可以以不同的时钟频率工作。因此,由于下面的公式,可以计算电路BCIP的时钟频率FB,供给加密块CB所必需的电路BCIP的时钟循环的数目LB,电路SCIP的时钟频率FC,以及电路BCIP生成加密块CB所必需的、或者期间电路SCIP以自治方式工作的电路SCIP的时钟周期的最小数目TR,
TR=LB×FC/FB (1)
作为示例,如果频率FB和FC是100MHz和400MHz,并且如果块CB的供给需要电路BCIP的15个时钟循环,则循环的最小数目TR等于60个循环。如果块CB的大小为128比特并且电路SCIP在电路SCIP的每个时钟循环中供给二进制加密流BS的32个比特,则电路BCIP近似供给853Mbits/s,而电路SCIP供给12.8Gbits/s。典型地,电路SCIP的处理循环的持续时间是使得在加密块CB的生成处理期间可以发生几十次的处理循环Ci。其结果是基于块加密和应用于由块加密供给的加密块的二进制加密流的生成的组合,所描述的过程很适于供给高频的二进制加密流。
应注意,在第一迭代之后的迭代启动时,在电路BCIP的输入端上供给的加密块不必是由电路BCIP加密的最后的块,而更通常地可以是由BCIP先前生成的块。
图5示出了按照实施例的电路SCIP。电路SCIP包括输入寄存器IREG,输出寄存器OREG,在电路SCIP的每个工作循环中实现寄存器IREG的更新功能的逻辑电路LGF1,以及在电路SCIP的每个处理循环中生成作为寄存器IREG的内容的函数的、寄存器OREG中的一部分二进制加密流BS的逻辑电路LGF2。
电路SCIP被配置成防止二进制加密流根据其它数据来确定。为此,电路LGF2被配置成防止输入寄存器IREG的内容根据输出寄存器OREG的内容来确定,甚至通过分析经过几个循环的寄存器OREG的内容来确定。电路SCIP可以平等地被配置成满足以下条件:
输入寄存器IREG尽可能地小,
电路LGF2被配置成向电路SCIP的每个时钟循环供给二进制加密流BS的比特,
电路LGF1被配置成通过在不使电路SCIP的时钟循环持续时间恶化的情况下、使用寄存器IREG的尽可能大的部分在电路SCIP的每个时钟循环中更新寄存器IREG的至少一部分。实际上,寄存器IREG被更新的部分越大,电路SCIP就越大,因此电路的不同部分之间的互连就越长,导致长的传输时间。二进制加密流BS的速率应与用于加密(或解密)的传输速率兼容,二进制流BS的速率等于电路SCIP的处理循环的持续时间乘以在输出寄存器OREG中的比特数。
图6示出了电路SCIP的实现示例。电路BCIP包括输入寄存器IREG,移位寄存器RSR,四个复用器M1,M2,M3,M4,四个执行非线性逻辑函数的逻辑电路NLF1,NLF2,NLF3,NLF4,四个基本逻辑门LG1,LG2,LG3,LG4和输出寄存器OREG。寄存器IREG的尺寸被定为接收来自电路BCIP的至少大部分的加密块CB。移位寄存器RSR与寄存器IREG的尺寸相同。
在图6的示例中,寄存器IREG包括每个为n比特的16个存储器单元,其被分成4个区组(block),每区组4个单元,每个区组i组装单元ai, bi, ci和di(i从1到4)。寄存器RSR具有类似于寄存器IREG的结构,其具有4个区组,每个区组4个存储器单元,每个单元n个比特。寄存器IREG和RSR均还可以接收16×n比特的块。寄存器IREG的区组1至3的每个存储器单元连接到寄存器RSR的相应的单元。区组4的单元a4,b4,c4,d4通过复用器媒介M1,M2,M3,M4链接到寄存器RSR的相应的单元。寄存器RSR的区组1的每个单元a1,b1,c1,d1连接到电路LG1,LG2,LG3,LG4之一的输入端。寄存器RSR的区组4的每个单元a4,b4,c4,d4连接到电路LG1,LG2,LG3,LG4之一的另一输入端。电路NLF1,NLF2,NLF3,NLF4中的每个分别连接在到寄存器RSR的区组1,2和3之中分离的三个存储器单元的输入端上。因此,在图6的示例中,电路NLF1连接在到单元a1,b2和c3的输入端上。电路NLF2连接在到单元b1, a2和b3的输入端上。NLF3连接在到c1, d2和a3的输入端上。电路NLF4连接在到单元d1, c2和d3的输入端上。每个电路NLFi(i可以具有1至4中的任何值)的输出端连接到复用器Mi的输入端。寄存器OREG包括n比特的4个存储器单元O1,O2,O3,O4。每个电路LG1,LG2,LG3,LG4的输出端连接到输出寄存器OREG的单元O1,O2,O3,O4。电路LG1至LG4对寄存器RSR中的字例如逐比特地应用异或逻辑运算。
在每个时钟循环,电路SCIP因而供给二进制加密流BS的4×n个比特。如果n等于8,则寄存器IREG和RSR均可以接收128比特且寄存器OREG 32比特。在电路SCIP的第一处理循环,寄存器IREG从电路BCIP接收加密块CB。复用器M1至M4被控制以完整地传递寄存器RSR中的块CB。寄存器RSR的内容被传递给电路NLF1至NLF4以及LG1至LG4,并且电路LG1至LG4将寄存器RSR的第一和第四块a1,b1,c1,d1以及a4,b4,c4,d4进行组合,并传递寄存器OREG中的结果。在第一循环结束时,寄存器OREG的单元O1包含组合的单元a1和d4的字,单元O2包含组合的单元b1和c4的字,单元O3包含组合的单元c1和b4的字,单元O4包含组合的单元d1和a4的字。在第二循环,寄存器RSR通过n比特的4个单元向右位移。因而在寄存器RSR中,单元a1至d1中的字由单元a2至d2的字代替。单元a2至d2的字由单元a3至d3的字代替,以及单元a3至d3的字由单元a4至d4的字代替。而且,单元a4至d4接收电路NLF1至NLF4的输出端上的字。因此,输出寄存器OREG接收单元a1至d1的字,所述字初始在单元a2至d2中已知,每个字与从电路NLF1至NLF4发出的包含在单元a4至d4中的字组合。
重新组合输入寄存器IREG的字的比特的电路LG1至LG4的存在防止了输入寄存器IREG的内容仅仅根据输出寄存器OREG的内容(甚至经过几个循环)来确定。实际上,在运算中,其中表示异或逻辑运算符,针对给定的运算结果,每个运算对象x,y为0和1的概率相同。因此,不可能根据唯一的结果来确定运算对象的相应值。该运算结果仅允许确定运算对象是否相同。然而,仅在电路SCIP的第一处理循环期间,寄存器OREG的输出端上的二进制加密流BS的比特由寄存器IREG通过逻辑运算(如异或)逐比特组合产生。知悉电路SCIP的架构和二进制流BS的4×n第一比特仅允许确定寄存器IREG的四个第一字a1...d1的每个比特是否与输入寄存器IREG的四个最后的字a4..d4的比特相同或不同。
应注意,寄存器IREG是可选的并且可以被省略,因为寄存器RSR还接收由电路BCIP供给的每个块CB,并且在电路BCIP进行计算以供给新块期间不必保存块CB。
在一实施例中,电路NLF1至NLF4全都与电路NLF相同。图7示出了电路NLF的实现示例。电路NLF包括三个字输入端X,Y,Z,九个移位寄存器ROT1至ROT9,三个逻辑函数LF1,LF2,LF3以及组合电路XOG。字X被提供给寄存器ROT1,ROT6和ROT8。字Y被提供给寄存器ROT2,ROT4和ROT9。字Z被提供给寄存器ROT3,ROT5,ROT7。移位寄存器ROT1至ROT9被配置成对电路NLF的输入端上的字X,Y或Z应用一定数目比特的二进制旋转。寄存器ROT1,ROT2,ROT3中已知的字被提供给函数LF1。寄存器ROT4,ROT5,ROT6中已知的字被提供给函数LF2。寄存器ROT7,ROT8,ROT9中已知的字被提供给函数LF3。组合电路XOG接收函数LF1,LF2和LF3的输出端上的字,并组合它们以在电路NLF的输出端上供给字。
电路NLF因此执行非线性逻辑运算:
(1)
其中F是由函数LF1,LF2,LF3执行的逻辑函数,“<<”是字的比特的旋转运算符,是由电路XOG执行的组合逻辑运算,其例如是逐比特应用于输入字的比特的异或逻辑运算。由连接到相同函数LF1,LF2,LF3的寄存器ROT1至ROT9进行的比特旋转可以不同。类似地,由接收相同输入字X,Y,Z的寄存器ROT1至ROT9进行的旋转也可以不同。函数LF1,LF2,LF3可以不同或相同。已知逻辑运算符AND,OR或异或运算的组合执行二阶非线性函数,逻辑函数F可以是大于或等于二阶的非线性函数。逻辑函数F例如是下列函数之一:
其中“.”表示逻辑运算符AND,“+”表示逻辑运算符OR,表示逻辑运算符异或,表示逻辑运算符NOT(x)。更为一般地,函数F可以以如下方式选择:使得该函数的非线性不被补偿,因为它在电路SCIP的每个处理循环被应用于寄存器RSR的字。实际上,对于特定函数F,寄存器RSR的某些字在电路SCIP的几个处理循环之后可以仅仅依赖于初始从寄存器IREG引入到寄存器RSR中的有限数目的字。因此,非线性由此被限制而不是被扩展。
更为一般地,由电路NLF1至NLF4执行的函数可以按如下方式选择:使得在电路SCIP的给定处理循环中寄存器RSR的比特所依赖的寄存器IREG的比特数目最大;以及使得在给定处理循环中寄存器IREG的每个比特所依赖的寄存器RSR的比特数目最大,假定在每个处理循环中这些数目以指数方式增加。
因此,在以上描述的电路SCIP的示例中,由电路NLF1至NLF4发出的每个字依赖于寄存器RSR的三个字,在电路NLF的示例中,该电路的输出字的每个比特依赖于输入字的九个比特,如果先前描述的用于旋转ROT1至ROT9的条件满足的话。还可以示出在图6和7的示例中,在电路SCIP的仅15个处理循环之后,寄存器RSR的每个比特依赖于寄存器IREG的所有比特,并且在仅16次迭代之后,寄存器IREG的每个比特被用在寄存器RSR的所有比特中。
对于普通技术人员将清楚地看到,本发明允许各种不同的实现实施例和应用。具体地,本发明不限于先前描述的示例,而是可以由将供给加密块CB的块加密电路和逻辑电路进行组合的任何电路来进行,其中该逻辑电路将加密块CB的比特进行组合,以这种方式使得当所供给的二进制流BS本身不允许块加密电路的输出端上的块被确定时,生成二进制流BS。逻辑电路的实现是在普通技术人员了解的范围之内,因为它仅由基本逻辑函数(如逻辑门和移位寄存器)的组合产生。
而且,使用先前生成的加密块加密的几个块的生成可以不是必需的。实际上,如先前所描述的,加密流生成逻辑电路可以根据经过多次循环加密的块以自治方式来工作。新加密的块的生成仅仅影响由所得到的流进行的加密方法的鲁棒性。