八月瓜首页 > 专利查询 > >正文

内容保护系统中的密码核心

基本信息

  • 申请号 CN00810478.6 
  • 公开号 CN1160901C 
  • 申请日 2000/05/02 
  • 公开日 2004/08/04 
  • 申请人 英特尔公司  
  • 优先权日期  
  • 发明人 J·D·霍夫曼  
  • 主分类号  
  • 申请人地址 美国加利福尼亚州 
  • 分类号  
  • 专利代理机构 中国专利代理(香港)有限公司 
  • 当前专利状态 发明专利权部分无效宣告的公告 
  • 代理人 邹光新 
  • 有效性 有效专利 
  • 法律状态
  •  

权利要求书


1.一种用于数据加密(52)的设备,所述设备包括: 一个根据在加密数据消息中的消息分析程序接收明文数据字和 将这些数据字汇编成块的块汇编器(72); 一个执行加密函数(80)的装置,其与块汇编器连接用来根据一 个加密函数密钥将块加密成密文数据; 一个与执行加密函数的装置连接用来接收经加密的块和将经加 密的块分解成密文数据字的块发送器(86); 一个与块汇编器、执行加密函数的装置和块发送器相连接用来对 通过执行加密函数的装置对块的多轮加密进行控制的控制器(84); 和 与执行加密函数的装置相连用来接收一个内容密钥并根据内容 密钥产生加密函数密钥的密钥产生器(62),该执行加密函数的装置 使用该加密函数密钥加密所述块。

2.根据权利要求1的设备,其中密钥产生器(62)包括一个反馈 寄存器(70),用来存储从执行加密函数(80)的装置接收的密文反 馈数据供密钥产生器在产生加密函数密钥时使用。

3.根据权利要求1的设备,其中的控制器(84)控制对块的10轮 加密处理。

4.根据权利要求1的设备,其中执行加密函数的装置根据M6-S56 密码对块加密。

5.根据权利要求1的设备,其中执行加密函数的装置包括组合逻 辑。

6.根据权利要求1的设备,其中执行加密函数的装置包括时序逻 辑。

7.根据权利要求1的设备,其中块汇编器(72)包括可以把多数 据字汇编成一个块并且当块处理就绪时通过控制器启动处理的电 路。

8.根据权利要求1的设备,其中控制器(84)包括一个用来设定 每轮时间的定时器和一个控制各轮处理的状态机。

9.根据权利要求1的设备,其中块发送器(86)包括将一个加密 块分解为多个加密的数据字,并将加密的数据字传送到总线接口的电 路。

10.一种用于数据加密的设备,所述设备包括: 一个根据在加密数据消息中的消息分析程序接收明文数据字和 将这些数据字汇编成块的块汇编器; 与块汇编器连接的用于执行加密函数的第一和第二装置,其根据 一个加密函数密钥将块加密成密文数据; 一个与用于执行加密函数的第一和第二装置连接的块发送器,其 接收经加密的块和将经加密的块分解成密文数据字; 一个与块汇编器和用于执行加密函数的第一装置连接的第一控 制器,其对通过第一加密函数对块的第一组多轮加密进行控制;以及 一个与第一控制器和用于执行加密函数的第二装置连接的第二 控制器,其对通过执行加密函数的第二装置对块的第二组多轮加密进 行控制。

11.根据权利要求10的设备,其中第一组轮包括一个密码的1-5 轮,和第二组轮包括该密码的6-10轮。

12.根据权利要求10的设备,其中执行加密函数的装置包括组合 逻辑。

13.根据权利要求10的设备,其中执行加密函数的装置包括时序 逻辑。

14.根据权利要求10的设备,其中第一控制器包括一个第一定时 器用来为1-5中每轮设定第一持续时间和包括一个第一状态机用来 控制1-5轮。

15.根据权利要求10的设备,其中第二控制器包括一个第二定时 器用来为6-10中每轮设定第二持续时间和包括一个第二状态机用来 控制6-10轮。

16.一个密码系统,包括: 一个将明文数据加密成密文数据的密码核心;以及 一个与密码核心连接用于将密文数据传送到一个总线上的总线 接口; 其中密码核心包括: 一个根据在加密数据消息中的消息分析程序接收明文数据字和将这些 数据字汇编成块的块汇编器; 一个与块汇编器连接的执行加密函数的装置,其根据一个加密函数 密钥将块加密成密文数据; 一个与用于执行加密函数的装置连接的块发送器,其用来接收经加 密的块,将加密的块分解成密文数据字,和发送密文数据至总线接 口; 一个与块汇编器、执行加密函数的装置和块发送器连接以便对通过 用于执行加密函数的装置对块的多轮加密进行控制的控制器;和 一个与消息分析程序和执行加密函数的装置连接用来接收一个来 自消息分析程序的内容密钥并根据该内容密钥产生加密函数密钥 的密钥产生器,执行加密函数的装置用该加密函数密钥加密所述 块。

17.根据权利要求16的密码系统,其中总线包括IEEE1394总线。

18.根据权利要求16的密码系统,其中密码核心包括M6-S56密码。

19.根据权利要求16的密码系统,进一步包括一个与消息分析程 序连接以便从处理机接收消息的处理机接口。

20.根据权利要求16的密码系统,其中密钥产生器包括一个反馈 寄存器,用来从执行加密函数的装置接收密文反馈数据供密钥产生器在 产生加密函数密钥时使用。
展开

说明书

技术领域 本发明与密码系统有关,具体地说与密码的硬件实现有关。
背景技术 数字内容广泛地分发给诸如计算机、网络、和消费电子器件之 类的各种电子系统。
内容可以是音频数据、视频数据、静止图像数 据、软件、文本或任何其他可以以数字形式存储和传送给用户的信 息。
一旦内容呈现为数字形式,在存储在系统的一个组成部分内或 从一个组成部分发给另一个组成部分时就很容易被拷贝或截获。
数 字内容的开发人员和拥有者面对与这样的设备有关的科学技术迅速 发展力图保护内容中的他们的知识产权。
保护数字内容的一种方法 是使用密码。
密码系统可以用来对数字内容加密,使得只有得到授 权的用户才可以对经加密的数据解密。
有各种密码系统可以用来保护数字内容。
一种系统是五公司 (5C)数字传输内容保护(DTCP)系统。
DTCP方法为电子设备制造 厂家提供了一种简单和经济的实现加密的方式,而仍能保持高度的 安全。
DTCP方法规定了防止音频/视频娱乐内容在通过诸如遵从电气 和电子工程师学会(IEEE)高速串行总线1394-1995标准(IEEE 1394) 之类的总线的高性能数字总线传输时被非法拷贝、窃听和窜改的密 码协议。
这种拷贝保护系统保护的只是通过同一个或另一个核准的 拷贝保护系统传送给电子设备的合法娱乐内容。
出现的许多技术都 用了IEEE 1394高速数字接口,包括台式计算机系统、数字通用光盘 (DVD)播放机、数字电视和数字机顶盒接收机。
在这样的设备中所 用的透明的DTCP架构使用户可以欣赏高质量的数字图像和声音,不 会由于内容保护方案而对性能或质量有任何明显的影响。
对于广泛接受的DTCP方法,需要有一些低成本的加密和解密组 件,可以实现内容保护,而不会不适当地延迟数字内容的传输或使 用户感到不便。
这样的组件当前还没有。
本发明就是要填补这方面 的空缺和克服现有技术的其他一些缺点。
                      发明内容 本发明的一个实施例是一种具有一个将明文数据加密成密文数 据的密码核心和一个与这个密码核心连接的、将密文数据传送到一 个总线上的总线接口的密码系统。
在一个实施例中,这种密码核心 包括:一个接收数据字、将这些数据字汇编成块的块汇编器;一个 根据一个加密函数密钥对块加密的加密函数;一个接收经加密的 块、将经加密的块分解成加密数据字的块发送器;以及一个控制加 密函数对块的多轮加密的控制器。
在另一个实施例中,密码核心包括:一个接收数据字、将这些 数据字汇编成块的块汇编器;根据一个加密函数密钥对块加密的第 一和第二加密函数;一个接收经加密的块、将经加密的块分解成加 密数据字的块发送器;一个控制第一加密函数对块的第一组多轮加 密的第一控制器;以及一个控制第二加密函数对块的第二组多轮加 密的第二控制器。
                      附图说明 从以下结合附图对本发明所作的详细说明中可以清楚地看到本 发明的这些特色和优点。
在这些附图中: 图1为例示按照本发明的一个实施例设计的在一个加密系统内 采用密码的源设备和宿设备的示意图; 图2为按照本发明的一个实施例设计的源设备的各个部分之间 的数据流图; 图3为按照本发明的一个实施例设计的内容密码子系统的原理 图; 图4为按照本发明的一个实施例设计的按小规模优化的密码核 心的原理图; 图5为按照本发明的一个实施例设计的小型密码核心的结构方 框图; 图6为按照本发明的一个实施例设计的内容密钥装入处理的波 形图; 图7为按照本发明的一个实施例设计的明文装入处理的波形 图; 图8为按照本发明的一个实施例设计的密文卸载处理的波形 图; 图9为按照本发明的一个实施例设计的按速率优化的密码核心 的原理图;以及 图10为按照本发明的一个实施例设计的快速密码核心的结构方 框图。
                  具体实施方式 五公司(5C)数字传输内容保护(DTCP)系统规定了一种保护 音频/视频娱乐内容的密码协议,防止音频/视频娱乐内容在通过诸 如遵从IEEE 1394-1995标准的高性能串行总线之类的数字传输机制 传输时被非法复制、截获和窜改。
这种内容保护系统的一个部分是 实现一种称为M6-S56密码的密码的内容密码子系统,可以用来对通 过串行总线传输的内容进行加密/解密。
这种密码可以以经变换的密 码块链接方式使用,提供比普通的密码块链接更高的保密性。
M6-S56 密码是一种基于嬗变-替代(permutation-substitution)的公用密 钥块密码算法。
本发明的各种实施例包括一些实现M6-S56密码的工 作在加密模式的内容密码子系统的方式。
然而,其他实施例可以实 现其他密码。
此外,在这里讨论的内容密码子系统可以修改成提供 解密能力。
本发明的实施例包括一种具有一个在这里称为“密码核心 (cipher core)”的中央密码部件的内容密码子系统。
本发明的一 个实施例就硬件实现中的门数按小规模优化(为“小型密码核心”)。
第二实施例按高吞吐量优化(为“快速密码核心”)。
第三实施例按 低噪声工作和容易综合优化(为“平静密码核心”)。
在本说明中,所谓本发明的“一个实施例”是指结合这个实施 例揭示的具体特色、结构或特征包括在本发明的至少一个实施例 内。
因此,在本说明各处出现的“在一个实施例中”不一定是指同 一个实施例。
图1为例示按照本发明的一个实施例设计的在一个内容保护系 统10内采用密码的源设备和宿设备的示意图。
源设备12可以通过一 个诸如IEEE 1394总线16之类的高速串行总线与宿设备14连接,虽然 本发明并不局限于此。
源设备和宿设备可以是个人计算机(PC)、 数字盒式磁带录像机(DVCR)、DVD播放机、数字电视机、计算机监 视器、立体声设备、机顶盒,或者是任何能够存储、发送或显示数 字内容的电子设备。
在源设备12内至少有一个内容源18提供称为明 文数据的未加密数字内容。
内容源18可以是一个只读光盘存储器 (CD-ROM)、数字通用光盘(DVD)、硬盘或任何其他数字存储媒体。
内容例如可以是视频、音乐、软件或任何其他数字数据。
或者,也 可以内容源是一个对一个通信设备的通信接口,诸如卫星、电缆、 光纤链路或无线链路之类。
明文可以由内容密码子系统20接收,内 容密码子系统20可以配置成用密码将明文加密成密文后再通过IEEE 1394接口发送。
宿设备14包括一个相应的内容密码子系统22,配置 成可以将密文解密成明文。
明文可以由内容宿24例如通过在监视器 上显示或者用扬声器产生声音输出呈递给用户(未示出)。
因此,内 容保护系统10保护了在各部分之间传输期间的数字内容。
或者,数 字内容还可以由存储在内容源18或内容宿24的加密方案加密,从而 提供一个附加的安全层。
图2为按照本发明的一个实施例设计的源设备的各个部分之间 的数据流图。
源设备可以包括一个处理器30和一个存储器32。
在一 个实施例中,存储器包括一个动态随机存储器(DRAM),当然也可 以用其他存储器。
存储器可以存储至少一部分从内容源接收的数字 内容。
在数字内容是运动图像专家组(MPEG)数据时,存储器可以 存储一些分组化的基本数据流(PES)。
处理器30配合内容密码子系 统20,将明文数据和至少一个密钥发送给内容密码子系统。
内容密 码子系统可以用这个密钥按照一种密码对明文数据加密。
内容密码 子系统将根据明文产生的密文通过一个同步链路发送给媒体接入控 制器(MAC)34。
在加密系统所用的总线是IEEE 1394总线时,MAC包 括一个1394链路层控制器。
密文数据可以再通过物理层(PHY)接口 36传输到总线上。
在加密系统所用的总线是IEEE 1394总线时,PHY 包括一个1394物理层收发/仲裁器。
在处理器30与MAC 34之间可以通 过一个异步链路发送控制和状态信息以及验证和密钥交换(AKE)信 息。
内容密码子系统从处理器30接收密钥、非加密数据(clear data)和加密数据的消息。
密钥消息规定了以后用来对内容加密的 密钥。
非加密数据消息可以绕过密码,直接发送给MAC接口34而不加 密。
加密数据消息包括需加密的内容。
在各实施例中,内容密码子 系统提供输入缓冲,以便容忍加密延迟、自动IEEE 1394分组化和头 标插入,以及机内测试和性能测定操作。
在这些实施例的设计中始 终采用同步设计技术,以保证在高时钟频率可靠工作和可靠综合。
内容密码子系统20的每个实施例都可以用作内容保护系统10的 核心部分,可以用一个现场可编程门阵列(FPGA)、复合可编程逻 辑器件(CPLD)、专用集成电路(ASIC)或定制数字集成电路实现。
在所用的密码是M6-S56密码时,在这里揭示的每个实施例都执行 M6-S56密码工作在如由M6数字内容保护规范(M6 Digital Content Protection Specification,Volume 1,Revision 0.91,October 8,1998,and Volume 2,Revision 0.8997,October 2,1998)所 规定的经变换的密码块链接(C-CBC)模式的所有功能,当然本发明 并不局限于此。
图3为按照本发明的一个实施例设计的内容密码子系统的示意 图。
处理器接口40可以与处理器30(在图3中未示出)连接,使密码 子系统与处理器可以进行通信。
数据和密钥消息、控制和状态、性 能参数、机内测试数据和中断都通过这个接口传送。
控制状态寄存 器(CSR)和中断器42可以用来控制内容密码子系统的配置和通过处 理器接口对处理器进行中断。
数据输入先进先出(FIFO)缓存器44 存储从处理器接收的流数据。
性能监视器46监视内容密码子系统在 处理从处理器接收的数据和将经加密的数据输出到IEEE 1394总线上 的执行情况。
反馈FIFO 48可以用来利用CSR对内容密码子系统进行 测试。
它提供了机内测试能力。
CSR和中断器42、数据输入FIFO 44、 性能监视器46和反馈FIFO 48这些部分在各种具体实施方式中都可以 是按需要选择的。
消息分析器50执行消息分析、净荷路由选择和自 动分组化,因此从在处理器上运行的软件中摘出这些功能。
它通过 检验从处理器接收的消息的头标判读这些消息。
正如以上所讨论 的,消息包括可以绕过密码器的非加密数据消息、含有密码密钥的 密钥消息和数据可以用密码处理的加密数据消息。
在消息是一个密 钥消息时,就将密钥数据净荷装入密码核心。
在消息是一个加密数 据消息时,就将净荷部分分成一些分组转到密码核心52,而将IEEE 1394同步分组头标绕过密码核心52直接发送给MAC接口。
在消息是一 个非加密数据消息时,就将净荷分成一些分组,头标和净荷都绕过 密码核心52直接发送给MAC接口54。
密码核心52执行加密处理,这将 在下面详细说明。
MAC接口54将密码核心连接到1EEE 1394的MAC 34(图3中未示出)上。
在一个实施例中,内容密码子系统20的密码核心52可以按使芯 片资源使用最少优化。
图4为按照本发明的一个实施例设计的按小规 模优化的密码核心的示意图。
这个小型M6密码核心的工作情况可以 概括如下。
内容密码子系统的消息分析器将一个具有64比特的内容密钥装 入密钥产生器62的密钥存储器60,每次一个16比特的字。
这是通过 将密钥数据加到明文输入线64上和将相应的Load Key Word(装密钥 字)线66驱动到高电平来执行的,Load Key Word 1装密钥的最高位 字(MSW),而Load Key Word 4装密钥的最低位字(LSW)。
密钥函 数68接收内容密钥和从密文反馈寄存器70反馈的密文作为输入参 数,产生一个Pi函数密钥。
在一个实施例中,密钥函数只用64比特 的内容密钥的最低的55比特。
密钥产生器内的密文反馈寄存器可以 在系统复位或加电时初始清零(即置为零)。
然后,内容密码子系统的消息分析器将明文数据装入块汇编器 72,每次一个16比特的字,首先是最高位字。
这是通过将明文数据 加到Plaintext input(明文输入)线64上和将Plaintext Ready(明 文就绪)线74驱动到高电平来执行的。
块汇编器通过将Plaintext Read(明文读取)线76驱动到高电平来确认所传送的每个字。
块汇 编器将明文的四个字汇编成一个64比特的块。
正在汇编一个块时, 块汇编器将Block in Progress(块在处理中)线78驱动到高电平, 使线78保持高电平到整个汇编块通过多工器(MUX)82传送传送给 了Pi函数80。
随着一些块成为可用的,块汇编器启动一个在10轮控 制器84内的状态机,开始对一个块进行加密。
10轮控制器一启动, 块汇编器就开始汇编下一个明文数据块。
10轮控制器84首先将一个汇编块从块汇编器72的装入Pi函数 80。
然后延迟一段时间,等Pi函数的输出稳定。
Pi函数80根据明文 和Pi函数密钥产生密文。
然后,10轮控制器将Pi函数的输出再装入 Pi函数,再次延迟。
这个再装入和延迟的过程对于总共为10轮的可 以再重复八次。
Pi函数80接收一个明文块和一个密钥作为输入参 数,输出一个密文块。
可以有三个Pi函数变量。
5C DTCP系统为每轮 指定其中的一个变量。
变量的选择由10轮控制器控制。
在第五轮,经部分加密的块可以装入密钥产生器62内的密文反 馈寄存器70。
可以用这个部分加密的块与内容密钥一起计算对下一 个明文块加密需用的Pi函数密钥。
在第十轮,可以将完全加密的密 文装入块发送器86,更新密钥函数68的输出。
然后,可以启动一个 在块发送器内的状态机。
随着完全加密的密文块成为可用时,块发 送器就将它们分解成一个个16比特的字发送给MAC接口,每次一个 字,首先是最高位字。
这是通过将密文数据加到Ciphertext output (密文输出)线88上再将Ciphertext Ready(密文就绪)线90驱动 到高电平来执行的。
MAC接口通过将Ciphertext Read(密文读取) 线92驱动到高电平来确认每字的传送。
一个加密帧的最后一个字可以在消息分析器随着最后一个明文 数据字将Plaintext Last(明文最后)线94驱动到高电平时予以指 示。
此时,有两个可能的情况决定密码器将怎样继续进行处理。
如 果加密帧在一个完全块上终止(即,如果帧容量的比特数为64的整数 倍),密码核心就用与前面的块一样的方式加密和发送这个块,只是 随着密文的最后一个字可以将Ciphertext Last线96驱动到高电平。
如果加密帧在一个不完全块上终止(即,帧容量的比特数不是64的整 数倍),可以将前一个密文块再装入Pi函数,对它再执行10轮。
然后, 可以将结果中长度等于终止这个帧的不完全块的最低位部分与尚未 加密的不完全块进行异或。
然后,可以将最终结果(经加密的不完 全块)发送给MAC接口,随着密文的最后一个字将Ciphertext Last 线驱动到高电平。
可以只将在终止这个帧的不完全块内存在的这些 字传送给MAC接口。
内容密码子系统不许改变内容密钥,直到密码器处理了整个加 密帧。
一个帧的最后一个密文字一传送给外部系统,密钥产生器62 内的密文反馈寄存器70就可以清零(即置零),Block in Progress线 78可以驱动到低电平,从而可以着手处理一个新的加密帧。
新的加 密帧可以重用上一个内容密钥而不需要再装入密钥,也可以在装明 文数据前将一个新的内容密钥装入密钥存储器60。
实现M6-S56 C-CBC密码的密码核心可以用超高速集成电路 (VHSIC)硬件设计语言(VHDL)的语法分层描述。
这种体系结构包 括一些与同时的信号赋值互联的子部分和过程。
每个部分可以是参 数化的,以便需要时修改方便。
在一个实施例中,密码核心的顶层 设计实体可以实现为m6_small部分。
图5为按照本发明的一个实施例 设计的小型密码核心的结构方框图。
在一个实施例中,这个小型密码核心的输入输出端口可以用以 下实体描述定义。
--小型密码核心实体 library ieee; use ieee.std_logic_1164.all;      --标准的九值逻辑系统 use work.constants.all;           --全局设计参数 entity m6_small is port(clock:in std_logic;         --系统时钟  clear:in std_Idgic;         --异步清零  reset:in std_logic;         --同步复位  ptin:in std_logic_vector(WORDSIZE-1 downto 0);--明文  ptrdy:in std_logic;         --明文就绪  ptlast:in std_logic;        --明文最后  ptrd:out std_logic;         --明文读取  ctout:out std_logic_vector(WORDSIZE-1 downto 0);-密文  ctrdy:out std_logic;        --密文就绪  ctlast:ou tstd_logic;       --密文最后  ctrd:in std_logic;          --密文读取  bip:out std logic;          --块在处理中  ckld1:in std_logic;         --内容密钥字1装入 ckld2:in std_logic;         --内容密钥字2装入 ckld3:in std_ldgic;         --内容密钥字3装入 ckld4:in std_logic);        --内容密钥字4装入 end m6_small; 除清零信号100外,所有信号可以相对时钟信号102同步。
输入 信号可以予以采样,而输出信号在时钟信号102的上升边处改变。
清 零信号100可以是异步的,用作通电复位。
Synchronous Reset(同 步复位)信号104起着与Clear信号相同的作用,只是它是与Clock(时 钟)信号同步的。
它将密码器复位到清零状态(例如,准备接收内容 密钥和明文)。
信号Ptin 106、Ptrdy 108、Ptlast 110和Ptrd 112 包括明文输入接口。
信号Ctout 114、Ctrdy 116、Ctlast 118和Ctrd 120包括密文输出接口。
Ckld1-4信号122可以与Ptin信号一起用来装 入一个56比特的内容密钥。
Bip信号124包括一个给消息分析器的状 态指示符。
所有信号用的都是正逻辑。
图6为按照本发明的一个实施例设计的内容密钥装入处理的波 形图。
一个56比特的内容密钥可以通过将密钥数据加到Ptin输入信 号106上和将相应的Ckld1-4信号122驱动为高电平装入密码核心, Ckld1装入最高位字(MSW),而Ckld4装入最低位字(LSW)。
图6所 示的波形例示了一个内容密钥为Ox1234567890abcd的例子的装入情 况。
图7为按照本发明的一个实施例设计的明文装入处理的波形 图。
明文数据可以通过将明文数据加到Ptin 106输入信号上再将 Ptrdy 108驱动到高电平每次将一个16比特的字装入密码核心,首先 是最高位字。
密码核心通过将Ptrd 112驱动到高电平确认每个字的 传送。
通过随着最后一个明文数据字将Ptlast 110驱动到高电平指 示这是一个密码帧的最后一个明文字。
图7所示的波形例示了将一个 明文帧装入密码核心的情况。
图8为按照本发明的一个实施例设计的密文卸载处理的波形 图。
密文可以通过每当检测到Ctrdy 116为高电平时从Ctou端口114 接收密文数据,从密码核心每次卸载一个16比特的字,首先是最高 位字。
MAC接口通过将Ctrd 120驱动到高电平来确认每个字的传送。
可以在随着最后一个密文数据字检测到Ctlast 118为高电平时,指 出这是一个密码帧的最后一个密文字。
图8所示的波形例示了从密码 器卸载一个密文帧的情况。
再来看图5,块汇编器部分Blockasm 130对将消息分析器装入的 16比特明文字汇编成64比特密码块进行控制,每当一个块就绪时就 启动10轮控制器,控制对终止一个密码帧的不完全块加密,以及在 密码帧之间对密文反馈寄存器清零。
在一个实施例中,这个块汇编 器的输入输出端口可以用以下实体描述定义。
--块汇编器实体 library ieee; use ieee.std_logic_11 64.all; entity blockasm is port(clock in std_logic;            --系统时钟 clear:in std_logic;            --异步清零 reset:in std_logic;            --同步复位 ptrdy:in std_logic;            --明文就绪 ptlast:in std_logic;           --最后一个明文字 bipin1:in std_logic;           --块在处理中(第一级) bipin2:in std_logic;           --块在处理中(第二级) bipin3:in std_logic;           --块在处理中(tx级) ptrd:out std_logic;            --明文读取 ldwrd1:out std_logic;          --装入字1 ldwrd2:out std_logic;          --装入字2 ldwrd3:out std_logic;          --装入字3 ldwrd4:out std logic;          --装入字4 ldpart:out std_logic;          --装入不完全块 init:out std_logic;            --密码器初始化 go:out std_logic;              --密码器运行 partwrd1:out std_logic;        --不完全块(1字) partwrd2:out std_logic;        --不完全块(2字) partwrd3:out std_logic;        --不完全块(3字) lastblk:out stdJogic;          --最后一个块 bip:out std_logic);            --块在处理中 end blockasm; 输入信号ptrdy、ptlast和输出信号ptrd可以用来作为消息分析 器传送明文数据的握手信号。
输入信号bipin1-3为块汇编器提供10 轮控制器和块发送部分的状态。
输出信号ldwrd1-4可以在过程 ptblk_proc 132中用来按次序将明文字装入明文块。
输出信号ldpart 使过程ptblk_proc再装入先前加密的密文块进行再加密(这只在一 个密码帧在一个不完全块内终止时使用)。
输出信号init可以在过程 ctpart_proc 134中用来对密文反馈寄存器清零。
输出信号go可以用 来启动10轮控制器内的状态机。
输出信号partwrd1-3和lastblk可以 在过程ctout_proc 136中由块发送部分用来控制一个密码帧的最后 一个块的传输和不完全块的加密。
输出信号bip向消息分析器指出密 码器的状态。
10轮控制器部分r10ctrl 135控制各个64比特明文块的加密。
它 包括一个规定每轮的持续时间、使各信号稳定通过Pi函数的定时器 和一个掌握各轮的状态机。
在一个实施例中,这个10轮控制器器的 输入输出端口可以用以下实体描述定义。
--10轮控制器实体 library ieee; use ieee.std_logic_11 64.alI; entity r10ctrl is generic(ROUNDDLY:positive=3;   --轮延迟         CNTRBITS:positive=2);  --轮延迟计数器比特 Port  (clock:in std_logic;         --系统时钟        clear:in std_logic;         --异步清零        reset:in std_logic;         --同步复位        go:in std_logic;            --密码器运行        bipin:in std_logic;         --块在处理中(下一级)        blockrdy:out_stdjogic;      --密文块完成        enrnd1:out std_logic;       --启动轮1        enrnd2:out std_logic;       --启动轮2        enrnd3:out std logic;       --启动轮3        enrnd4:out std_logic;       --启动轮4        enrnd5:out std_logic;       --启动轮5        enrnd6:out std_logic;       --启动轮6        enrnd7:out std_logic;       --启动轮7        enrnd8:out std_logic;       --启动轮8        enrnd9:out std_logic;       --启动轮9        enrnd10:out std_logic;      --启动轮10        ldpart:out std_loyic;       --装部分结果寄存器        ldrslt:out std_logic;       --装最终结果寄存器        ldfdbk:out std_logic;       --装反馈寄存器        ldnxtblk:out std_logic;     --装下一个明文块        bip:out std_logic);         --块在处理中 end  r10ctrl; 由块汇编器驱动的输入信号go启动10轮控制器的状态机。
输入 信号bipin为10轮控制器提供块发送部分的状态。
输出信号blockrdy 可以用来在一个块已加密后对块发送器内的状态机初始化。
输出信 号enrnd1-10可以用来选择每轮所用的Pi函数变量。
输出信号ldpart 可以在过程ctpart_proc 134中用来将经第五轮部分加密的密文块装 入密文反馈寄存器。
输出信号ldrslt可以在过程ctrslt_proc 140中 用来装入经完全加密的密文块。
输出信号ldfdbk和ldnxtblk可以在 过程ptblk_proc 132中用来为Pi函数选择数据源。
Ldfdbk选择Pi函 数的输出,为执行下一轮作准备。
Ldnxtblk选择块汇编器的输出, 以对下一个明文块进行加密。
输出信号bip为块汇编器提供10轮控制 器的状态。
在本发明中提供了Pi函数的两个实施例。
在一个实施例中, pi_comb包括一个组合式的Pi函数。
一些输入信号组合地通过算术运 算异步到达输出线。
这个实施例可以在要求吞吐量高时使用。
这个 实施例可用于小型密码核心和快速密码核心。
在另一个实施例中, pi_seq包括一个相继式的Pi函数。
一些输入信号按时钟相继通过每 个接连的算术运算同步地到达输出线。
这个实施例可以在要求低噪 声工作时使用。
这个实施例可用于平静密码核心。
在一个实施例中,这个组合Pi函数的输入输出端口可以用以下 实体描述定义。
--组合Pi函数实体 library ieee; use ieee.std_logic_1164.aIl;           --IEEE标准的九值逻辑系统 use work.constants.all;                --全局常量 entity pi_comb is  generic(S1 positive:=2;             --旋转指数1      S2 positive:=11;            --旋转指数2      S3 positive:=17);           --旋转指数3  Port(pi123:in std_logic;             --pi变量123允许   pi132:in std_logic;             --pi变量132允许   pi213:in std_logic;             --pi变量213允许   pi312:in std_logic;             --pi变量312允许   key1:in std_logic_vector(BLOCKSIZE/2-1 downto 0);--密钥1   key2:in std_logic_vector(BLOCKSIZE/2-1 downto 0);--密钥2   input:in std_logic_vector(BLCKSIZE-1 downto 0);--输入块 output:out std_logic_vector(BLOCKSIZE-1 downto 0));—输出块 end pi_comb; 输入信号pi 123、pi 132、pi 213和312选择每轮的Pi变量。
输 入信号key1-2包括两个32比特的Pi函数密钥。
输入包括64比特的Pi 函数输入块,输出包括64比特的Pi函数输出块。
在一个实施例中,这个相继Pi函数的输入输出端口可以用以下 实体描述定义。
--相继Pi函数实体 library ieee; use ieee.std_logic_1164.all;         --IEEE标准的九值逻辑系统 use work.constants.all;              --全局常量 entity pi_seq is   generic(S1:positive:=2;         --第一旋转指数       S2:positive:=11;        --第二旋转指数       S3:positive:=17);       --第三旋转指数  Port(clock:in std_logic;       --系统时钟       clear:in std_logic;       --异步清零       pi 123:in std_logic;      --pi变量123允许       pi 132:in std_logic;      --pi变量132允许       pi 213:in std_logic;      --pi变量213允许       pi 312:in std_logic;      --pi变量312允许       key1:in std_logic_vector(BLOCKSIZEI2-1 downto 0);-- 密钥1       key2:in std_logic_vector(BLOCKSIZE/2-1 downto 0);-- 密钥2       input:in std_logic_vector(BLOCKSIZE-1 downto 0);- -输入块          output:out std_logic_vector(BLOCKSIZE-1 downto 0));--输出块 end pi_seq; 输入信号pi 123、pi 132、pi 213和312选择每轮的Pi变量。
输 入信号key1-2包括两个32比特的Pi函数密钥。
输入包括64比特的Pi 函数输入块,输出包括64比特的Pi函数输出块。
块发送部分blocktx 142对将64比特的密文块分解成16比特的字 进行控制,将这些字传送给MAC接口。
在一个实施例中,这个块发送 器的输入输出端口可以用以下实体描述定义。
--块发送器实体 library ieee; use ieee.std_logic_1164.all; entity blocktx is   port(clock:in std_logic;            --系统时钟    clear:in std_logic;            --异步清零    reset:in std_logic;            --同步复位    partrdy1:in std_logic;         --不完全块就绪(一个字)    partrdy2:in std_logic;         --不完全块就绪(两个字)    partrdy3:in std_logic;         --不完全块就绪(三个字)    blockrdy:in std_logic;         --密文块就绪    lastblk:in std_logic;          --帧的最后一个密文块    ctrd:in std_Iogic;             --密文读取    blkwrd1:out std_logic;         --密文块字1选择    blkwrd2:out std_logic;         --密文块字2选择   blkwrd 3:out std_logic;       --密文块字3选择   blkwrd4:out std_logic;        --密文块字4选择   partwrd1:out std_logic;       --不完全块字1选择   partwrd2:out std_logic;       --不完全块字2选择   partwrd 3:out std_logic;      --不完全块字3选择   ctrdy:out std_logic;          --密文就绪   ctlast:out std_logic;         --帧的最后一个密文字   bip:out std_logic);           --块在处理中 end blocktx; 由10轮控制器驱动的输入信号blockrdy启动块发送部分的状态 机。
由块汇编器驱动的输入信号partrdy1-3和lastblk指出密码帧状 态的终止。
输入信号partrdy1-3分别指出在由一个、两个或三个字 组成的不完全块内终止的帧。
输入信号Lastblk指出帧在一个完全块 内终止。
输出信号ctrdy、ctlast和输入信号ctrd可以用来作为数据 传送时与MAC接口的握手信号。
输出信号blkwrd1-4和partwrd1-3可 以在过程ctout_proc 136中用来选择将哪个密文字传送给MAC接口。
输出信号Blkwrd1-4分别选择密文字1(MSW)至4(LSW)。
输出信号 Partwrd1-3分别选择不完全块密文字1至3。
输出信号bip为10轮控制 器和块汇编器提供块发送部分的状态。
在本发明的另一个实施例中,密码核心可以是按高吞吐量优化 的。
虽然这个实施例在规模上要比小型密码核心大(即,耗费较多的 芯片资源),但它仍保持在可用一个FPGA或CPLD实现的合理的规模 内。
图9为按照本发明的一个实施例设计的按速率优化的密码核心的 示意图。
快速密码核心的工作情况与小型密码核心的类似。
一个差 别是10轮控制器用了两个五轮控制器代替,而且双重配置了Pi函数 和有关电路。
这种体系结构将密码器分成两级,每级执行5轮,总共 为10轮。
第一级执行5轮后,将经部分加密的第五轮块装入密钥产生 器内的密文反馈寄存器。
第二级装入来自第一级的经部分加密的第 五轮块和Pi函数密钥后执行第六至十轮。
第二级一启动,第一级就 开始对下一个块加密。
这样,密码核心每次同时处理两个块,从而 使吞吐量接近单级实现的两倍。
加密成帧以与小型密码核心类似的 方式处理。
差别是在一个在一个不完全块内终止的帧上,前一块密 文可以根据第二级恢复和传回第一级。
块汇编和传输处理与上面讨 论到的小型密码核心所提供的处理类似。
在一个实施例中,快速密码核心的顶层设计实体包括m6_fast部 分。
图10为按照本发明的一个实施例设计的快速密码核心的结构方 框图。
在一个实施例中,这个快速密码核心的输入输出端口可以用 以下实体描述定义。
--快速密码核心实体 library ieee; use ieee.std_logic_1164.all;           --标准的九值逻辑系统 use work.constants.all;                --全局设计参数 entity m6_fast is   port(clock:in std_logic;            --系统时钟    clear:in st:d_logic;          --异步清零    reset:in std_logic;            --同步复位    ptin:in std_logic_vector(WORDSIZE-1 downto 0);--明文    ptrdy:in std_logic;            --明文字就绪    ptlast:in std_logic;           --最后一个明文字就绪    ptrd:out std_logic;            --明文字读取    ctout:out std_logic_vector(WORDSIZE-1 downto 0);--密文    ctrdy:out std_logic;           --密文字就绪    ctlast:out std_logic;          --最后一个密文字就绪    ctrd:in std_logic;             --密文字读取    bip:out std_logic;             --块在处理中     ckld1:in std_logic;    --内容密钥字1装入     ckld2:in std_logic;    --内容密钥字2装入     ckld3:in std_logic;    --内容密钥字3装入     ckld4:in std_logic);   --内容密钥字4装入 end m6_fast; 快速密码核心的I/O接口与在小型密码核心中所用的相同。
快速 密码核心的块汇编器部分、组合和相继Pi函数部分、块发送部分都 与在小型密码核心中所用的相同。
两个5轮控制器部分r5ctrl控制各个64比特明文块的加密。
它们 包括一个规定每轮的持续时间、使各信号稳定通过Pi函数的定时器 和一个掌握各轮的状态机。
在快速密码核心中用两个5轮控制器和两 个Pi函数来建立一个两级的流水线。
第一级执行轮1-5,而第二级执 行轮6-10。
这样,可以同时处理两个明文块,有效地使密码器的吞 吐量加倍。
在一个实施例中,这个5轮控制器的输入输出端口可以用 以下实体描述定义。
--5轮控制实体 library ieee; use ieee.std_logic_1164.all; entity r5ctrl is   generic(ROUNDDLY:positive:=3;  --轮延迟       CNTRBITS:positive:=2); --轮延迟计数器比特   Port(clock:in std_logic;         --系统时钟    clear:in std_logic;         --异步清零    reset:in std_logic;         --同步复位    go:in std_logic;            --密码器运行    bipin:in std_logic;         --块在处理中(下一级) blockrdy:out std_logic;     --密文块完成 enrnd1:out std_logic;       --启动轮1 enrnd2:out std_log ic;      --启动轮2 enrnd3:out std_logic;       --启动轮3 enrnd4:out std_logic;       --启动轮4 enrnd5:out std_logic;       --启动轮5 ldrslt:out std_logic;       --装结果寄存器 ldfdbk:out std_logic;       --装反馈寄存器 ldnxtblk:out std_logic;     --装下一个明文块 bip:out std_logic);         --块在处理中 end r5ctrl; 输入信号go启动5轮控制器的状态机。
输入信号bipin为5轮控制 器提供下一级的状态。
输出信号blockrdy用来在处理了一个块后立 即启动下一轮。
输出信号enrnd1-5可以用来选择每轮所用的Pi函数 变量。
输出信号ldrslt可以用来将一个块在处理完成后立即存储起 来。
输出信号ldfdbk和ldnxtblk可以用来为Pi函数选择数据源。
输 出信号Ldfdbk选择Pi函数的输出,为执行下一轮作准备。
输出信号 Ldnxtblk选择前级的输出,以开始处理下一个块。
输出信号bip为下 一级提供5轮控制器的状态。
因此,以上说明了内容密码子系统的密码核心的三个实施例。
根据系统要求,可以从这些实施例中选择一个来保护要通过一个诸 如IEEE 1394总线之类的数字传输线路传送的数据。
虽然本发明是结合一些例示性的实施例进行说明的,但这说明 并不是限制性的。
对于熟悉该技术领域的人员来说,这些例示性的 实施例的各种变型和本发明的其他实施方式都是显而易见的,因此 都应属于本发明的专利保护范围之内。
展开

查看更多专利详情信息请先登录或注册会员

相关专利类别推荐

获取手机验证码,即可注册成为会员

专利详情咨询

咨询内容

姓名

手机

验证码

用户登录

手机号

手机验证码

提示

不能再减了!!!

提交成功

八月瓜客服中心已经收到您的信息,正在为您派遣知识产权顾问。知识产权顾问会携带贴心的服务以闪电搬的速度与您联系。

扫一扫关注八月瓜微信 创业一手掌握