多通道高速加密和解密的制作方法

文档序号:7640988阅读:168来源:国知局
专利名称:多通道高速加密和解密的制作方法
多通道高速加密和解密本专利申请要求2005年11月23日提交的美国临时专利申请 60/739, 219的优先权。本发明涉及通信和数据安全的领域,具体地,涉及到实现高速 多通道(multi-lane)、并行数据信道、加密和解密的方法和系统。流密码是一种密码,其中输入流被顺序地加密,通常一次一个 数据单位(字/字节/比特)并且其中随后的数据单位的变换在加密期 间发生变化。另一方面,块密码是用固定的、不变化的变换对于大 的数据块进行操作的密码。也就是,给定数据块和给定加密密钥的 块密码将总是产生相同的加密输出块。另一方面,流密码的输出依 赖于在数据单元被加密时密码系统的状态。通常,流密码组合输入流与所生成的密钥流,该密钥流是根据 给定的加密密钥或密钥组伪随机地生成。因为密钥流的顺序生成通 常是不及数据块的块加密那么复杂的操作,流密码通常大大快于块 密码,并且需要少得多的硬件部件。流密码特别适用于诸如电话对话、流式视频等等那样的未知长 度的数据流的高速加密/解密。当对于这样的数据使用块密码时,设 计必须进行规定,以填充那些未填满一个块就终结的输入流。许多流密码被配置成以每个时钟周期产生多比特输出。例如, 由Lund大学的Ekdahl和Johansson提出的SNOW密码和它的后续 SN0W-2使用线性反馈移位寄存器,它驱动被配置成在每个周期输出 32比特字的状态机。为了有效地利用这种多比特密码输出,常常使 用并行加密,其中输入流被多路分解为包括与输出密码相同数目的 比特的数据组,使用多比特密码对该数据组进行加密,然后将其复 用成与输入流相同形式的输出流。例如,如果输入流包括在8比特 宽的总线上的数据字节以及32比特密码字是可得到的,则在总线上 的每组四个8比特字节被扩展成32比特字,该32比特字通过使用 32比特密码字被加密,得到的32比特输出字被解扩展成相应于四 个输入字节的加密的四个输出字节。在这样的实施例中,密码生成 器可以支持高达四倍于密码生成速度的输入流的吞吐速率。在某些情形下,输入数据速率可能大大地低于特定的密码生成 器所能支持的最大速度。在这样的情形下,多个数据流可以由单个密码生成器支持。在前一个例子中,如果8比特宽的输入数据流的 速度是32比特密码生成器的速度的两倍,则两个这样的8比特数据 流可以由这个32比特密码生成器支持;如果8比特宽的输入数据流 的速度等于32比特密码生成器的速度,则四个这样的输入数据流可 以由该密码生成器支持;等等。然而,通常知道流密码没有块密码可靠,因为它们更易于受到 使用小于穷尽搜索的区分攻击。而且,如果密钥流是重复的,那么 所有的流密码对于攻击是脆弱的。理想地,对于128比特密钥,密 钥流的重复长度是2128比特,这是大多数应用可接受的,但在每秒 100Mb的加密速率下,这样的密码的循环时间总计低于25分钟,这 使得密码不适用于长时间运行的应用,诸如流式视频。另一方面, 块密码的复杂性使得它们对于这样的消费者应用而言太昂贵或太 慢。提供一种提供流密码的速度和块密码的安全性的密码将是有利的。按照本发明的一个实施例,密码系统包括块密码和流密码的组 合。块密码提供了被使用来周期性地给一个或多个流密码重新定密 钥(re-key)的改变密钥。优选地,AES(高级加密标准,来自美国 国家标准与技术研究院(NIST))块密码提供了被使用来提供576比 特密钥流的128比特的密钥组,该576比特密钥流被使用来给一个 或多个SN0W-2流密码重新定密钥。流密码的输出被使用来通过使用 块密码和流密码相对于多个输入数据流或数据"通道"的最佳化安 排而加密这些多通道数据。本发明是参照附图更详细地和作为例子说明的,其中

图1A-1C图解说明了按照本发明一个实施例的、通过使用由块密码生成器提供的密钥而系统地重新定密钥的、示例性多比特流加密系统。图2A-2B和3A-3B图解说明了按照本发明其他实施例的、通过 使用由块密码生成器提供的密钥而系统地重新定密钥的、其他示例 性多比特流加密系统。图4A和4B图解说明了按照本发明各种实施例的、用于通过使 用跨越多个字节的密码输出而加密数据字节的混合系统。在所有附图中,相同的标号表示相同的元件,或执行基本上相 同功能的元件。附图的包括是用于说明目的,而不是打算限制本发 明的范围。在以下的说明中,为了说明而不是限制,阐述了特定的细节, 诸如特定的结构、接口、技术等等,以便提供对本发明的透彻的了 解。然而,本领域技术人员将会明了,本发明可以在不同于这些特 定的细节的其它实施例中实现。为了简单清晰起见,熟知的设备、 电路和方法的详细说明被省略,以免因不必要的细节而使本发明的 说明变得难以理解。图1A图解说明了按照本发明一个实施例的、用于多比特并行加 密具有比起流密码生成器150的字尺寸更小的字尺寸的输入流163 的、示例性块与流密码系统。例如,输入流包括8比特数据字节, SN0W-2流密码生成器被使用来提供流密码。正如本领域中已知的, SN0W-2过程使用了 576比特密钥149作为用于生成32比特宽的密 码输出字159的序列的初始状态。混合单元16(M皮使用来通过混合流密码生成器150的密码输出 字159与输入流163,而执行输入流163的加密.为了使得来自流 密码生成器150的32比特宽的密码字159的该序列的使用最佳化, 8比特输入字节163被一输入、四输出多路分解器164 "扩展",形 成四个8比特信道。32比特密码字159类似地^t划分成四个8比特 密码字节,每个信道一个密码字节。在每个信道中,混合器165组 合在该信道上的8比特数据字节与被分配给该信道的密码字节,产 生加密的字节。优选地,混合器165执行异或功能来组合数据和密 码字节。四个信道的加密的字节被提供到四输入、 一输出复用器 164,,形成相应于输入流163中每个字节的加密的输出字节169 的序列。图1B图解说明了相应于图1A的加密系统的操作的时序图。第 一行图解说明了输入流163中的字节序列。第二行图解说明了流密 码生成器150的密码输出字159的序列。因为每个密码输出字159 被使用来编码输入流163的四个字节,所以来自流密码生成器的输出字序列具有四分之一倍于输入字节速率的频率。也就是,在图1A 中,被使用来提供每个密码字的密码时钟CLK-2 151以四分之一倍 于被使用来输入每个输入数据字节的时钟CLK-3 161的频率工作。本领域技术人员将会看到,图1A的加密信道结构是仅仅为了易 于参考而提供的,也可以使用其它结构。例如,如果输入流163包 括16比特字,则多路分解器164将被构建成提供两个16比特信道。 在这种情形下,密码时钟CLK-2 151将以被使用来输入每个输入数 据字的时钟CLK-3 161的频率的一半工作。同样地,可以使用串行 寄存器结构或其它结构来代替图解说明的复用器结构,如在下面对 于图4和5进一步所讨论的。按照本发明的一方面,流密码生成器150从块密码生成器130 接收它的576比特的密钥149。优选地,块密码生成器130从会话 密钥生成器110接收它的密钥,该会话密钥生成器110在每次用户 发起加密会话时生成不同的密钥。优选地,会话密钥被定期地更新, 以便提高安全性。在图1A的示例性加密系统中,AES加密器135生成128比特块 密码输出139,它是在控制时钟CLK-1 131的每个周期对运行计数 器132的当前内容的加密。如上所述,示例性S冊W-2流密码生成器 使用了 576比特密钥;这样,需要控制时钟CLK-1 131的五个周期 来提供足够数目的比特以便形成这个密钥。576比特密钥相应于来 自AES加密器135的四个半128比特密码字,块密码生成器130包 括寄存器140,它被配置成存储三个半这样的密码字。当产生了第 五个128比特密码字时,576比特输出通过使用这个当前的字和在 寄存器140中以前存储的三个半字而被提供。如上所述,虽然流密码生成器通常比起块密码生成器快得多, 但流密码不如块密码安全,因为流密码本身进行重复。如果攻击者 能够确定所产生的密码序列的一些或者全部,以及重复速率,则攻 击者将能够在每次重复所确定的序列时解密加密的材料。优选地, 为了避免流密码生成器150的这种脆弱性,新的576比特密钥149 由块密码生成器130生成,并被使用来在流密码生成器150本身进 行重复之前给流密码生成器150重新定密钥。这样,流密码加密的 输出的以前的分段的解密不能被使用来实行将来的分段的解密。图1C图解说明了用于生成和使用图1A的示例性实施例中的密 钥149的示例性时序序列。在每个时钟周期CLK-1的AES加密器135 的128比特块密码输出139被表示为密码字A。, A" Az,等等。为了 易于参考,图1A的寄存器140的内容在图1C中被表示为流142。 在第四输出A3以后的周期,当前的输出A4和流142可用于给流密码 生成器150定密钥。此后,生成另外的五个密码字A5-A9,它们被使 用来给流密码生成器150重新定密钥。如上所述,这种重新定密钥 优选地在流密码生成器150本身重复之前进行。本领域技术人员将会看到,在第一次生成五个密码字之后,随 着每个新的密码字被生成,可使得新的密钥对于流密码生成器150 可用,所述新的密码字代替以前的密钥的比特的子集,然而,最佳 安全性通过在以前的密钥的所有比特被新的密码字代替后重新定密 钥而得到。图2A图解说明了 "双通道"加密系统的示例性实施例,其中两 个输入流263, 264通过使用如上详细说明的包括会话密钥生成器 110、块密码生成器130和流密码生成器150的单个块-流密码系统 而得以加密。在图2A的实施例中,时钟CLK-2 251的速率被加倍,这样,两 个密码字259可用于加密双通道混合单元260的两个输入流263, 264。然而,代替把每个字交替地加到每个通道,这可能在每个通道 上引入不想要的等待时间,每个密码字259被多路分解到相应于输 入流263, 264的各个通道上。 一输入二输出多路分解器220把每个 偶数密码字259提供到每个输入流263, 264的头两个字节并且把每 个奇数密码字259提供到每个输入流263, 264的下两个字节。图2B图解说明了用于图2A的实施例的示例性时序安排。如图 所示,每个密码字259被加到每个输入流263, 264的一对输入数据 字节。如上所述,块密码生成器130优选地在流周期本身重复之前 通过使用五个新的AES字(由图1A的标号139表示)按时钟产生用于 流密码生成器的新的密钥249。本领域技术人员将会看到,替换装置可被使用来通过使用本发 明的单个块-流编码器而加密两个输入数据流,这取决于给定应用的 定时的和结构的约束条件。例如,每个通道可被构建为与图1A和2A的四字节通道不同的二字节通道。在这样的实施例中,不需要奇 数/偶数多路分解器220。另一方面,图2A的四字节通道实施例的 优点是使用同 一个通道结构,而不管通过使用本发明的块-流加密系 统加密一个还是两个(或如下面详细描述的四个)输入流。图3A图解说明了具有单个块密码生成器的多个流密码生成器 的使用,用来例如编码四通道的输入数据。如上所述,在不同的应用中使用/重新使用共同的电路常常是有 利的。在本例中,图2A的双通道混合单元260被^f吏用来加密每对四 通道输入数据,两个流密码生成器150, 150'被使用来提供流密码 到这两个混合单元260。因为双结构,四通道的加密可以以与图2A 的两个通道的加密相同的速率(CLK-2 251)被实施。然而,因为对每 个流密码生成器150, 150,的重新定密钥以比起生成流密码低得多 的速率进行,所以该双结构不需要包括一对块密码生成器来供应密 钥给该对流密码生成器。还如上所述,被使用于流密码生成器150的576比特密钥349 需要来自AES加密器135的四个半128比特密码字339。在图3A的 示例性实施例中,复用器342被使用来提供替换的半个字344到寄 存器340。这样,两个完全的密钥349可以从九个密码字339而不 是从十个字339产生。也就是,代替需要加倍CLK-1 331的速率来 支持两个流密码生成器150, 150,,只需要把CLK-1 331的速率增 加到1.8倍。因为功耗通常与速度有关,对于AES部件的速度的这 个10%的减小可能是显著的。替换地,如果AES加密器135的速度 是在块-流加密系统的总速度中的限制因素,则速度的这个10%的有 效的增加也可能是显著的。另外,通过每个流密码生成器150, 150' 的交替重新定密钥,单个576比特宽的寄存器340可被使用来提供 576比特密钥349到两个流密码生成器150, 150,,由此节省大量 的电路和布局面积。图3B图解说明了对于图3A的实施例的示例性时序图。正如在 以前的实施例中那样,在生成五个128比特密码字339后,可以通 过使用四个这样的字和半个被存储在寄存器341中的密码字344生 成576比特密钥349。这个第一密钥被使用来对"偶数"流密码生 成器150定密钥。在生成四个附加密码字339后,可以通过使用这10四个新的字和半个没有被使用于第一密钥的密码字344生成另一个 密钥3W。这个第二个密钥被使用来给"旧"的流密码生成器150' 定密钥。重复这个五字/四字序列以便对于每个密码生成器150, 150'每九个周期的CLK-1 331提供另外的独特的密钥。本领域技术人员将会看到,鉴于本公开内容,替换的结构是可 行的。例如,使用九个密码字339来提供两个密钥349,也可被应 用于图1A, 2A的实施例。然而,当块密码生成器被耦合到单个流密 码生成器时,块和流密码生成器的相对速度通常不要求这样的效率。 同样地,单个32比特流密码生成器可以简单地被配置成直接加密该 四个数据8比特输入流的每个输入流,但这会要求流密码生成器以 两倍于图3A的生成器的速度运行,或图3A的输入数据的数据速率 降低一半。本领域技术人员还将会看到,这里给出的概念不限于这些例子, 而是可以应用于更一般的意义上。例如,取决于输入数据的相对速 度、流密码速率和块密码速率,单个块密码生成器可被使用来提供 密钥给两个以上的流密码生成器;单个流密码生成器可被使用来加 密四个以上的数据通道等等。图4A和4B图解说明了把32比特密码字施加到一个通道的8比 特数据字的混合系统的示例性替换实施例。在图4A中,四个移位寄存器Rl-R4 420被使用来顺序地接收通 过输入数据时钟CLK-3提供时钟的数据输入流的8比特字。32比特 密码输出450被划分成四个8比特分段,它们经由加密复用器410 被提供到寄存器R1-R4 420。每个加密复用器410确定每个寄存器 是接收从以前的级输入的未加密的数据,还是从以前的级输入的加 密的数据。每个加密复用器410包括8比特宽XOR门412和确定XOR 门的一个输入的输入开关411。为了实现不用加密而通过输入数据, 开关411提供固定的"0"输出,这样,XOR门412对于输入数据没 有影响。当"加密"信号被启用时,输入开关411提供8比特的密 码到XOR门412,以便实施输入数据的加密。加密信号在三个输入 数据字被按时钟输入到寄存器Rl-R3 420并且第四数据字在笫一加 密复用器410的输入端处是可用的之后被启用。这些寄存器接着被 提供时钟,同时加密信号被启用,并且每个寄存器R1-R4 420将被装载以加密的数据字。然后,加密信号被禁用,处理过程重复进行。 因为每个以后的数据输入字被按时钟输入到寄存器,加密的数据字 被按时钟输出,由此以最小的等待时间实施连续的加密。正如指出的,加密信号每四个数据时钟CLK-3周期被启用一次,因此密码输 出450仅仅需要以四分之一数据输入速率被提供,正如预期的那样。在图4B中,开关440被使用来顺序地选择密码输出450的四个 8比特分段的每个分段。所选择的密码分段与当前的8比特数据输 入字进行XOR运算,并且优选地被按时钟输入到寄存器420,以避 免切换过渡过程。在本实施例中,包括XOR门412和寄存器420的 单个8比特加密级以时钟CLK-3的数据输入速率提供加密的输出。 密码输出450优选地每四个数据输入时钟CLK-3周期被更新,这样, 没有来自开关440的8比特密码分段被重新使用。本领域技术人员将会看到,替换的加密方案可被使用来保证由 流密码生成器提供的每个密码比特的最佳的/有效的使用.以上仅仅图解说明了本发明的原理。因此将会看到,本领域技 术人员能够设计各种装置,其虽然在这里没有明显地描述或显示, 但它体现本发明的原理,因此属于以下的权利要求的精神和范围。在解释这些权利要求时,应当理解a) 措词"包括"不排除与在给定的权利要求中列出的那些元件 或动作不同的元件或动作的存在;b) 在元件前面的冠词"一个"不排除多个这样的元件的存在;c) 在权利要求中的任何参考标记不限制它们的范围;d) 几个"装置,,可以由同一个项目或者硬件或软件实施的结构 或功能来代表;e) 每个公开的元件可以包括硬件部分(例如包括分立的和集成 的电子电路)、软件部分(例如计算机编程)和它们的组合;f) 硬件部分可包括模拟和数字部分之一或二者;g) 除非另外进行了具体说明,任何公开的设备或它们的部分可 以组合在一起或分开成另外的部分;h) 除非进行了具体说明,不打算需要特定的动作顺序;以及i) 术语"多个"元件包括两个或更多个所述的元件,不是指任 何特定范围的元件数目;即,多个元件可以最少两个元件。
权利要求
1. 一种用于加密数据的系统,包括块密码单元(130),被配置成生成至少一个密码密钥(149, 249, 349);流密码单元(150),被配置成根据所述至少一个密码密钥(149, 249, 349)生成密码字(159, 259, 358-359)的序列;以及混合器单元(160, 260),被配置成并行地组合每个所述密码字 (159, 259, 358-359)的多个比特与数据输入项(163, 263-264)的 多个比特。
2. 权利要求1的系统,其中每个密码字(159, 259, 358-359)包括"n"个比特,以及 混合器单元(160, 260)被配置成安排数据输入项(163,263-264),以便于数据输入项(163, 263-264)的"n,,个比特的并行加密。
3. 权利要求1的系统,其中每个数据输入项(163, 263_264)包括以输入数据速率(CLK-" 到达的"m,,个比特,以及混合器单元(160, 260)被配置成安排密码字(l", "9, 358-359),以便于以输入数据速率(CLK-3)并行加密数据输入项 (163, 263-264)的"m,,个比特。
4. 权利要求1的系统,其中 流密码单元(150)的特征在于重复周期速率,以及 块密码单元(130)被配置成以小于或等于重复周期速率的密码密钥速率(CLK-1)提供不同的密码密钥(149, 249, 349),以及流密码单元(150)被配置成以小于或等于密码密钥速率(CLK-1) 的重新定密钥速率而被不同的密码密钥(149, 249, 349)重新定密 钥。
5. 权利要求4的系统,其中 密码密钥速率(CLK-1)等于重复周期速率。
6. 权利要求4的系统,其中 重新定密钥速率等于密码密钥速率(CLK-1)。
7. 权利要求4的系统,其中块密码单元(130)被配置成生成多个块密码输出(139, 339),所 述多个块密码输出形成每个不同的密码密钥(149, 249, 349)。
8. 权利要求7的系统,其中至少一个不同的密码密钥(349)包括以前的密码密钥(349)的一 个或多个块密码输出(339),
9. 权利要求1的系统,其中块密码单元(130)被配置成生成形成每个不同的密码密钥(149, 249, 349)的多个块密码输出(139, 339)。
10. 权利要求8的系统,其中至少一个不同的密码密钥(349)包括以前的密码密钥(349)的一 个或多个块密码输出(339)。
11. 权利要求1的系统,其中 块密码单元(130)包括AES加密器(135)。
12. 权利要求11的系统,其中 流密码单元(150)包括SN0W-2流密码生成器。
13. —种用于加密数据的方法,包括 生成(130)至少一个块密码密钥(149, 249, 349); 根据所述至少一个密码密钥(149, 249, 349)生成(150)密码字(159, 259, 358-359)的序列;以及通过使用每个密码字(159, 259, 358-359)的多个比特并行地 加密(160, 260)数据输入项(163, 263-264)的多个比特。
14. 权利要求13的方法,包括安排(164)数据输入项(163, 263-264),以便于数据输入项(163, 263-264)的"n,,个比特的并行加密,其中"n,,是每个密码字(159, 259, 358-359)的比特宽度。
15. 权利要求13的方法,包括以小于或等于所述密码字(159, 259, 358-359)的序列的重复 周期速率的密码密钥速率(CLK-1)生成(130)其它块密码密钥(149, 249, 349),以及根据所述其它块密码密钥(149, 249, 349)生成(150)密码字 (159, 259, 358-359)的附加序列。
16. 权利要求13的方法,包括生成(135)多个块密码输出(139, 339),以便提供所述至少一个 块密码密钥(149, 249, 349)。
17. 权利要求13的方法,其中生成(135)所述至少一个块密码密钥(149, 249, 349)包括生成 AES密码。
18. 权利要求13的方法,其中生成(130)密码字(159, 259, 358-359)的序列包括生成SN0W-2 密码。
19. 在计算机可读介质上提供的计算机程序,所述计算机程序 在处理系统上被执行时,被配置成使得处理系统生成(130)至少一个块密码密钥(149, 249, 349);根据所述至少一个密码密钥(149, 249, 349)生成(150)密码字 (159, 259, 358-359)的序列;以及通过^f吏用每个密码字(159, 259, 358-359)的多个比特并行地 加密(160)数据输入项(163, 263-264)的多个比特。
20. 权利要求19的计算机程序,使得处理系统通过使用AES密码生成(130)所述至少一个块密码密钥(149, 249, 349);以及通过使用SN0W-2密码生成(150)密码字(159, 259, 358-359)的序列。
全文摘要
一种加密系统被配置成包括块密码生成器(130)和流密码生成器(150)的组合。块密码生成器(130)提供被使用来周期性地给一个或多个流密码生成器(150)重新定密钥的改变密钥(149)。优选地,AES块加密器(135)提供被使用来提供576比特密钥(149)流的128比特密码(139)组,该576比特密钥(149)流被使用来周期性地给一个或多个SNOW-2流密码生成器(150)重新定密钥。流密码生成器(150)的输出(159)被使用来通过使用块密码(130)和流密码(150)相对于这些多通道的数据(263-264)的最佳化安排而加密多个输入数据流(263-264)或数据“通道”。
文档编号H04L9/18GK101313509SQ200680043844
公开日2008年11月26日 申请日期2006年11月17日 优先权日2005年11月23日
发明者J·R·古德曼, M·A·埃普斯坦 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1