CN101626289A - Aes加密芯片的设计方法及电脑加密机 - Google Patents
Aes加密芯片的设计方法及电脑加密机 Download PDFInfo
- Publication number
- CN101626289A CN101626289A CN200910017075A CN200910017075A CN101626289A CN 101626289 A CN101626289 A CN 101626289A CN 200910017075 A CN200910017075 A CN 200910017075A CN 200910017075 A CN200910017075 A CN 200910017075A CN 101626289 A CN101626289 A CN 101626289A
- Authority
- CN
- China
- Prior art keywords
- prime
- key
- circleplus
- conversion
- byte
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 238000013461 design Methods 0.000 title claims abstract description 22
- 230000008901 benefit Effects 0.000 claims abstract description 53
- 238000006243 chemical reaction Methods 0.000 claims description 121
- 230000009466 transformation Effects 0.000 claims description 99
- 230000008569 process Effects 0.000 claims description 74
- 230000007480 spreading Effects 0.000 claims description 16
- 238000003892 spreading Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 9
- 238000000844 transformation Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 5
- 238000004519 manufacturing process Methods 0.000 claims description 2
- 238000003860 storage Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 238000006467 substitution reaction Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 240000004350 Prunus spinosa Species 0.000 description 2
- 235000010829 Prunus spinosa Nutrition 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000007634 remodeling Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种AES加密芯片的设计方法及电脑加密机,所述AES加密芯片是针对可移动电脑加密机的需求而设计的,由USB与AES接口模块、控制模块、明文/密文/密钥寄存器、密钥扩展模块和加密/解密模块构成,可采用FPGA、ASIC等集成电路设计模式实现。它不仅实现了AES算法,而且能够直接与USB接口芯片连接使用,且在加/解密速度满足USB接口要求的前提下,尽量减少了电路的规模,从而减少了芯片的面积、降低了成本。采用上述AES加密芯片构建的电脑加密机具有安全性高、加/解密速度快、体积小巧、便于移动、使用方便、价格低廉等优点,可广泛应用于政府部门、企事业单位和个人的信息安全事务。
Description
技术领域
本发明涉及一种信息加/解密芯片及设备的设计方法,具体地说,是涉及一种AES加密芯片的设计方法,以及采用所述AES加密芯片构建可移动电脑加密机的方法。
背景技术
目前国内外普遍采用的加/解密设备主要包括网络加密机、电脑加密卡、加密优盘、电脑加密锁等。现简述如下:
(1)网络加密机:网络加密机是一个基于安全的操作系统平台,具有高级通信保密性、完整性保护功能的控制系统。它可以具有多个网络接口,可以安装于内联网各局域网出口处,或者安装于内联网与公共网络接口处,或者集成于网络防火墙中,提供网络边界之间的加密、认证功能。网络加密机采用专门的硬件实现加/解密算法和保存密钥,因此,具有加/解密速度快、安全性高等优点,但它价格昂贵(如一台联想网御SJW44加密机约需14万元)、体积较大、不便于携带和移动,不适合个人使用。
(2)电脑加密卡:电脑加密卡是指插接在电脑主板上各种总线插槽上的电脑加密设备。电脑加密卡通常采用专门硬件实现加密算法,采用PCI或ISA接口与电脑通信,因此,具有较高的加/解密速度,但在安装时需要打开机箱安装在主板上,不便于移动使用。
(3)加密优盘和电脑加密锁:加密优盘能够将文件加密后保存到优盘,电脑加密锁能够将文件加密后保存到电脑上,二者都通过USB接口与电脑通信,因此具有即插即用、便于移动使用的优点。但是,加密优盘和电脑加密锁的加/解密处理大都基于单片机、微控制器或数字信号处理器通过软件编程实现,因此速度较慢,且大多数加密优盘和电脑加密锁采用的加密算法比较陈旧(如DES算法),因此,安全性不高。
发明内容
本发明提供了一种AES加密芯片的设计方法,在实现高级加密标准算法AES的基础上减少了电路规模和芯片面积,且支持与USB接口模块通信,方便设计成便于移动和携带的电脑加密机。
为解决上述技术问题,本发明采用以下技术方案予以实现:
一种AES加密芯片的设计方法,在芯片内部设计如下各部分:
USB与AES接口模块,用于完成AES加密芯片内部各电路模块与外部USB接口芯片之间的通信;
控制模块,用于控制明文或者密文或者密钥的装载过程、S盒配置过程、密钥扩展过程、加密过程和解密过程的执行,即产生完成上述各个过程所需要的控制信号;
明文/密文/密钥寄存器,用于保存明文或者密文或者密钥;
密钥扩展模块,用于产生AES加密过程和AES解密过程中所需要的全部子密钥;
加密/解密模块,用于对一个明文分组进行AES算法所规定的加密操作,并保存得到的密文分组;或者对一个密文分组进行AES算法所规定的解密操作,并保存得到的明文分组。
下面对各部分的设计方法分别进行说明:
所述加密/解密模块对明文进行的AES加密过程由一个初始密钥加变换和多轮加密变换构成;具体来讲,对每一组明文进行以下步骤的加密操作,以得到该组明文所对应的密文:
A1、将明文数据与初始加密子密钥进行异或运算,所得结果作为第一轮加密变换的输入字节;
A2、对于除最后一轮以外的其它各轮加密变换均采用公式:
进行,分别令j=0,1,2,3,即得到经过一轮加密变换后的所有输出字节;其中,ai,j(0≤i≤3,0≤j≤3)表示每一轮加密变换的输入字节,且后一轮加密变换的输入字节为前一轮加密变换的输出字节;
S表示S盒变换;
ei,j(0≤i≤3,0≤j≤3)表示每一轮加密变换后的输出字节;
ki,j(0≤i≤3,0≤j≤3)表示每一轮加密变换的子密钥字节;
A3、对于最后一轮加密变换采用公式:
进行,分别令j=0,1,2,3,即可得到经过最后一轮加密变换后的所有输出字节;其中,最后一轮加密变换的输入字节为倒数第二轮加密变换的输出字节;
A4、将通过最后一轮加密变换后输出的字节作为密文,保存到寄存器中。
所述加密/解密模块对密文进行的AES解密过程由一个初始密钥加变换和多轮解密变换构成;具体来讲,对每一组密文进行以下步骤的解密操作,以得到该组密文所对应的明文:
B1、将密文数据与初始解密子密钥进行异或运算,所得结果作为第一轮解密变换的输入字节;
B2、对于除最后一轮以外的其它各轮解密变换均采用公式:
进行,分别令j=0,1,2,3,即得到经过一轮解密变换后的所有输出字节;其中,
a′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换的输入字节,且后一轮解密变换的输入字节为前一轮解密变换的输出字节;
S’表示逆S盒变换;
e′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换后的输出字节;
k′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换的子密钥字节;
B3、对于最后一轮解密变换采用公式:
进行,分别令j=0,1,2,3,即可得到经过最后一轮解密变换后的所有输出字节;其中,最后一轮解密变换的输入字节为倒数第二轮解密变换的输出字节;解密过程使用的子密钥与加密过程使用的子密钥相同,但使用顺序相反;
B4、将通过最后一轮解密变换后输出的字节作为明文,保存到寄存器中。
由上述AES加密算法和解密算法可以看出:加密算法和解密算法所使用的变换大多相同或相似,因此,其电路结构也非常类似,有很多资源可以共享。为了减少电路规模,本发明采用一套电路分时进行AES加密操作和AES解密操作,具体包括S盒、02/03乘字节模块、09/0b/0d/0e乘字节模块、以及选通器、异或电路和寄存器。
在对明文数据进行加密操作时,首先将S盒配置成加密S盒,然后进行初始密钥加变换,即采用异或电路对明文数据和初始加密子密钥进行异或操作,并将异或操作的结果保存到寄存器中;接下来进行第1轮加密变换,即将初始密钥加变换的结果输出至S盒进行S盒变换,然后输出至02/03乘字节模块,完成02乘字节和03乘字节运算;接下来通过异或电路进行(公式一)中前4项的异或运算,所得结果输出至异或电路与第一轮子密钥进行(公式一)中的最后一项异或操作,从而得到第一轮加密变换的结果,并将所述结果保存到寄存器,作为下一轮加密变换的输入数据,返回输入到所述的S盒中,进行下一轮加密变换;依次类推,完成第1轮至第(N-1)轮加密变换;最后进行第N轮加密变换,即将第(N-1)轮加密变换的结果输出至所述的S盒中进行S盒变换后,所得结果在选通器的控制下,直接输出至异或电路与第N轮子密钥进行异或操作,即可得到密文,将其保存到寄存器中。
在对密文数据进行解密操作时,首先将所述的S盒配置为解密S盒,然后进行初始密钥加变换,即采用异或电路对密文数据和初始解密子密钥进行异或操作,并将异或操作的结果保存到所述的寄存器中;接下来进行第1轮解密变换,即将初始密钥加变换的结果输出至S盒进行逆S盒变换后,输出至异或电路与第1轮解密子密钥进行异或操作,所得结果输出至09/0b/0d/0e乘字节模块进行09乘字节、0b乘字节、0d乘字节和0e乘字节运算;然后通过异或电路进行(公式二)的异或运算,得到第1轮解密变换的结果,并将其保存到所述的寄存器中,作为下一轮解密变换的输入数据,返回输入到所述的S盒中,进行下一轮解密变换;依次类推,完成第1轮至第(N-1)轮解密变换;最后进行第N轮解密变换,即将第(N-1)轮解密变换的结果输出至所述的S盒进行逆S盒变换后,输出至异或电路与第N轮子密钥进行异或操作,即可得到明文,所得结果在所述选通器的控制下,直接输出至所述的寄存器进行保存。
其中,所述N等于10或12或14,具体根据密钥长度确定。
在本发明中,所述USB与AES接口模块可以采用一个有限状态机实现,各个状态的定义如下:
S0:初始状态;在该状态下,从USB接口芯片的FIFO缓冲器中读取一个控制字,根据控制字内容转到相应状态,复位后处于初始状态;
S1:密钥装载状态;在该状态下,将AES算法的种子密钥从USB接口芯片的FIFO缓冲器中读取,并写入AES加密芯片中的密钥寄存器中;
S2:密钥扩展状态;在该状态下,产生AES加密过程和解密过程所需要的全部子密钥,并将其保存起来;
S3:加密S盒配置状态;在该状态下,将加密S盒数据配置到加密/解密模块中的S盒中;
S4:明文装载状态;在该状态下,将待加密的明文从USB接口芯片的FIFO缓冲器中读取,并写入AES加密芯片中的明文寄存器中;
S5:加密状态;在该状态下,加密/解密模块对明文进行加密处理,并保存得到的密文;
S6:密文输出状态;在该状态下,将密文从加密/解密模块中输出到USB接口芯片的FIFO缓冲器中;
S7:解密S盒配置状态;在该状态下,将解密S盒数据配置到加密/解密模块中的S盒中;
S8:密文装载状态;在该状态下,将待解密的密文从USB接口芯片的FIFO缓冲器中读取,并写入AES加密芯片中的密文寄存器中;
S9:解密状态;在该状态下,加密/解密模块对密文进行解密处理,并保存得到的明文;
S10:明文输出状态;在该状态下,将明文从加密/解密模块中输出到USB接口芯片的FIFO缓冲器中。
在本发明中,所述密钥扩展模块一次性产生加密过程和解密过程所需要的全部子密钥,并将这些子密钥保存起来,在后续的加密过程和解密过程中反复使用;所述子密钥由种子密钥通过密钥扩展算法生成。
进一步的,在所述密钥扩展模块中包括轮密钥寄存器、轮密钥寄存器堆、轮常数产生模块、字节代替模块、循环左移移位器和异或器;子密钥的产生过程如下:
步骤1、选择种子密钥作为第1个子密钥,将其保存到轮密钥寄存器和轮密钥寄存器堆中;
步骤2、将保存在轮密钥寄存器中的第1个子密钥先后通过循环左移移位器和字节代替模块进行循环左移操作和字节代替变换操作、然后与轮常数产生模块输出的本轮轮常数进行异或运算,得到第2个子密钥,将该子密钥保存到轮密钥寄存器和轮密钥寄存器堆中;
步骤3、仿照步骤2利用第2个子密钥变换生成第3个子密钥,并以此类推,以产生AES加密过程和解密过程所需的全部子密钥。
又进一步的,所述轮常数产生模块可以采用两种方式进行设计:一种是采用一个内部存储有每一轮的轮常数的寄存器堆或者存储器实现,在每一轮加密或者解密过程中,只需读出该轮的轮常数即可;另一种方式是根据公式:rcon_new=(rcon[7]==0)?(rcon<<1):((rcon<<1)^{8′h1b})设计逻辑模块,由前一轮的轮常数rcon实时产生下一轮的轮常数rcon_new。
再进一步的,因为所述明文/密文/密钥寄存器的输入数据来自于USB接口芯片,所以所述明文/密文/密钥寄存器的输入数据的位宽与所述USB接口芯片的FIFO缓冲器的读写数据总线的位宽相同,而为了提高AES芯片内部的处理速度,其输出数据的位宽与AES算法的分组长度或者密钥长度相同。
更进一步的,所述明文/密文/密钥寄存器可以采用多个寄存器串联构成。
基于上述AES加密芯片的设计方法,本发明又提供了一种采用上述AES加密芯片构建的电脑加密机,包括USB接口芯片和AES加密芯片;所述AES加密芯片通过其内部的USB与AES接口模块连接所述的USB接口芯片;所述电脑加密机通过所述的USB接口芯片与外部电脑连接通信。
与现有技术相比,本发明的优点和积极效果是:本发明的AES加密芯片是针对可移动电脑加密机的需求而设计的,它实现了当前最先进的对称密码算法-高级加密标准算法AES,并根据USB接口芯片的特点对AES加密芯片的外部引脚和内部的电路结构进行了优化设计,使其能够直接与USB接口芯片连接使用,且在加/解密速度满足USB接口要求的前提下,尽量减少了电路的规模,从而减少了芯片的面积、降低了成本。采用上述AES加密芯片构建的电脑加密机具有安全性高、加/解密速度快、体积小巧、便于移动、使用方便、价格低廉等优点,可广泛应用于政府部门、企事业单位和个人的信息安全事务。
结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。
附图说明
图1是本发明所提出的AES加密芯片的主要外部信号图;
图2是AES加密芯片的总体结构的一种实施例的结构示意图;
图3是图2中密钥扩展模块的一种实施例的电路结构示意图;
图4是图2中加密/解密模块的一种实施例的电路结构示意图;
图5是图2中控制模块的一种实施例的电路结构示意图;
图6是图5中密钥扩展状态机的一种实施例的状态转移图;
图7是图5中加密状态机的一种实施例的状态转移图;
图8是图2中USB与AES接口模块的外部信号图;
图9是图2中USB与AES接口模块的一种实施例的状态转移图;
图10是可移动电脑加密机的总体结构及其与电脑连接的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细地说明。
本实施例的AES加密芯片为了能与USB接口芯片连接使用,以设计出方便移动、即插即用的可移动电脑加密机,在实现了AES加密算法的前提下,根据USB接口芯片的特点对AES加密芯片的外部引脚和内部的电路结构进行了优化设计,以期减少电路规模,缩小芯片体积、降低芯片成本。
首先,对AES加密芯片的主要外部信号进行描述,参见图1及下表1。
信号名称 | 传输方向 | 信号含义和作用 |
clk | 输入 | 时钟信号,为电路提供正常工作所需的同步信号。 |
rst | 输入 | 复位信号,有效时将电路中的某些寄存器设置为需要的初始值。 |
full | 输入 | USB FIFO满标志,用于表示USB接口芯片的FIFO缓冲器是否装满了数据,若FIFO已满,则写FIFO操作不能进行。 |
empty | 输入 | USB FIFO空标志,用于表示USB接口芯片的FIFO缓冲器是否为空,若FIFO为空,则读FIFO操作不能进行。 |
fd<n-1:0> | 输入/输出 | USB FIFO读写数据总线,用于实现USB FIFO与AES加密芯片之间的双向数据通信。 |
sloe | 输出 | USB FIFO的输出使能信号,有效时,USB接口芯片的FIFO缓冲器中的数据才能输出到外部数据总线。 |
slrd | 输出 | USB FIFO读使能信号,有效时,将USB接口芯片的FIFO缓冲器中数据读出到外部数据总线上。 |
slwr | 输出 | USB FIFO写使能信号,有效时,将外部数据总线上的数据写入USB接口芯片的FIFO缓冲器中。 |
fifoadr<m-1:0> | 输出 | USB FIFO的地址信号,在USB接口芯片中有多个FIFO的情况下,用于指明读写操作针对的是哪一个FIFO。 |
表1
其次,对AES加密芯片的总体结构进行描述,参见图2所示。
所述AES加密芯片主要由USB与AES接口模块、控制模块、明文/密文/密钥寄存器、密钥扩展模块、加密/解密模块构成。各部分的功能描述如下:
1、USB与AES接口模块,用于实现USB芯片与AES芯片内部各电路模块之间的通信。具体来讲,电脑发出的控制命令和待加密/解密处理的数据,先到达USB接口芯片中的FIFO缓冲器中,然后通过AES加密芯片中的USB与AES接口模块才能到达AES加密芯片内部的其它各电路模块;反之,AES加密芯片内部的加密/解密处理结果,也要通过AES加密芯片中的USB与AES接口模块先输出到USB接口芯片中的FIFO缓冲器中,然后再传输到电脑中。
2、控制模块,用于控制明文/密文/密钥的装载过程、S盒配置过程、密钥扩展过程、加密过程和解密过程的执行,即产生完成上述各个过程所需要的控制信号。
3、明文/密文/密钥寄存器,用于保存从外部输入的明文或者密文或者密钥。其输入数据的位宽通常与所选择的USB接口芯片中的FIFO缓冲器的读写数据总线的位宽相同,比如8位、16位等,通常为8的倍数。而为了提高AES加密芯片内部的处理速度,其输出数据的位宽可以与AES算法的分组长度或者密钥长度相同,比如128位。由此可见,明文/密文/密钥寄存器的输入数据和输出数据的位宽可以不同。
4、密钥扩展模块,用于产生AES加密/解密过程中所需要的全部子密钥(也可以称为轮密钥)。AES加密/解密过程由一个初始密钥加变换和多个轮变换构成,比如十轮、十二轮或者十四轮,需要根据密钥长度具体确定。当密钥长度为128位时,需要进行十轮变换;当密钥长度为192位时,需要进行十二轮变换;当密钥长度为256位时,需要进行十四轮变换。初始密钥加变换和每轮变换各需要一个子密钥,解密过程和加密过程使用的子密钥相同,只是使用顺序相反,这些子密钥由种子密钥通过密钥扩展算法生成。本实施例的密钥扩展模块能够一次性产生加密/解密过程所需要的全部子密钥,并将它们保存起来,以便在后续的加密/解密过程中反复使用。
5、加密/解密模块,用于对一个明文分组进行AES算法所规定的加密操作,并保存得到的密文分组;或者对一个密文分组进行AES算法所规定的解密操作,并保存得到的明文分组。
下面对AES加密芯片中各个模块的具体设计方法进行详细的描述。
①、明文/密文/密钥寄存器
明文/密文/密钥寄存器的外部信号如表2所示。
信号名称 | 传输方向 | 信号含义和作用 |
clk | 输入 | 时钟信号。 |
wrpckreg | 输入 | 寄存器写使能信号。 |
din<n-1:0> | 输入 | 输入数据总线,用于输入明/密文、密钥。 |
pckregout<s-1:0> | 输出 | 输出数据总线,用于输出明/密文、密钥。 |
表2
其电路工作原理如下:在时钟信号clk的上升沿,若寄存器写使能信号wrpckreg有效,则将输入数据总线din上的n位数据写入明文/密文/密钥寄存器的高n位,同时将寄存器原来的数据右移n位。若寄存器写使能信号wrpckreg无效,则寄存器保持原来的数据不变。由此可见,一个明/密文分组或种子密钥可能需要多次写操作才能装入寄存器。
实际设计时,可以采用移位寄存器结构实现明文/密文/密钥寄存器,即用多个n位寄存器串行连接起来构成n位输入、s位输出的明文/密文/密钥寄存器。在这里,n可以等于所选择的USB接口芯片中的FIFO缓冲器的读写数据总线的位宽,比如8位、16位等;s可以等于AES算法的分组长度或者密钥长度相同,即128位。
②、密钥扩展模块
在本实施例中,密钥扩展模块可以由轮密钥寄存器rndkreg、轮密钥寄存器堆rndkrf、轮常数产生模块rcon、字节代替模块subword、循环左移移位器rotword、选通器MUX、异或器等电路部件构成,参见图3所示。其中,轮密钥寄存器rndkreg、轮密钥寄存器堆rndkrf均可按照常规的设计方法设计;字节代替模块subword可参照加密/解密模块中的S盒的设计方法进行设计;循环左移移位器rotword实际上可以省略,用硬件连线可以直接实现移位操作。轮常数产生模块rcon可以设计为一个寄存器堆或者存储器(ROM或RAM),将每一轮的轮常数事先存储在里面,需要时读出即可;当然,也可以根据公式:
rcon_new=(rcon[7]==0)?(rcon<<1):((rcon<<1)^{8′hlb})
设计一个逻辑模块,由前一轮的轮常数rcon实时产生下一轮的轮常数rcon_new。
密钥扩展模块的电路工作原理如下(以AES算法采用10轮变换的情况为例说明):在第1个时钟周期,通过选通器MUX选择种子密钥key作为第1个子密钥,并在本周期结束时的时钟有效沿,将其同时保存到轮密钥寄存器rndkreg和轮密钥寄存器堆rndkrf中。所述种子密钥key可以通过电脑输入到AES加密芯片中,也可以事先保存在AES加密芯片中的某个存储器中,在需要时读出。在第2个时钟周期,对保存在轮密钥寄存器rndkreg中的第1个子密钥先后通过循环左移移位器rotword、字节代替模块subword、异或器和选通器MUX进行循环左移、字节代替变换、异或、选通操作得到第2个子密钥,并在本周期结束时的时钟有效沿,将其同时保存到轮密钥寄存器rndkreg和轮密钥寄存器堆rndkrf中。重复第2个时钟周期的操作10次,由前一个子密钥变换生成后一个子密钥,就可以得到AES算法中第1-10轮迭代所需要的轮密钥,即全部子密钥。这样,经过11个时钟周期之后,AES加密/解密算法所需要的全部11个子密钥就都产生出来了,并且被保存在轮密钥寄存器堆rndkrf中。
③、AES加密/解密模块
AES加密算法和解密算法所使用的变换大多相同或相似,因此其电路结构也非常类似,有很多资源可以共享。为了减少电路规模,本实施例采用一套电路分时实现AES加密过程和解密过程。
AES加密过程由1个初始密钥加(异或)变换和10个(或12个、14个,根据密钥长度确定)轮变换构成,其中除最后1轮加密变换外,每个轮变换都是一样的,都是由字节代替(即S盒变换)、行移位、列混合、密钥加4个子变换组成。最后1轮加密变换由字节代替、行移位、密钥加3个子变换组成,不包括列混合变换。为了进一步减少电路的规模,本实施例仅设计1个轮变换的电路,用循环迭代的方式实现10(或12、或14)轮加密变换。
下面首先通过分析AES的加密算法,得出AES加密过程所需要的电路结构。
设ai,j(0≤i≤3,0≤j≤3)表示每一轮变换的输入字节;
a=(a0,a1,a2,a3)表示输入状态矩阵。
令bi,j(0≤i≤3,0≤j≤3)表示字节代替变换(记为s)后的字节,即S盒变换后的字节;
ci,j(0≤i≤3,0≤j≤3)表示行移位变换后的字节;
di,j(0≤i≤3,0≤j≤3)表示列混合变换后的字节;
ei,j(0≤i≤3,0≤j≤3)表示每一轮变换后的输出字节;
ki,j(0≤i≤3,0≤j≤3)表示每一轮变换的子密钥字节。
则根据AES加密算法的描述,对于除最后1轮之外的所有轮加密变换,有下列式子成立:
bi,j=s(ai,j),(0≤i≤3,0≤j≤3) (1)
将(1)式代入(2)式,(2)式代入(3)式,(3)式代入(4)式,得
在上式中,分别令j=0,1,2,3,就得到了经过一轮加密变换后的所有输出字节。
对于初始密钥加变换,可以看成是第0轮变换,其输出字节与输入字节之间的函数关系为:
对于最后1轮加密变换,其输出字节与输入字节之间的函数关系为:
由(5)、(6)、(7)式可以看出:AES加密过程包括字节代替(即S盒变换)、02乘字节、03乘字节、异或共4种操作,因此只要在电路中设置相应的电路模块就可以实现加密功能。S盒变换可以采用查表方式实现,也可以采用组合逻辑方式实现,而采用查表方式实现时又可以采用RAM、ROM、寄存器堆等多种物理实现方式。同时,为了与AES加密算法自身的并行性相匹配,本实施例在电路中设置了16个8*8S盒,16个02/03乘字节模块。另外,为了保存每轮加密变换的结果,在电路中还应该设置一个128位的寄存器。当然,所述S盒、02/03乘字节模块和寄存器的个数和位数也可以选择其他数目,只会对数据的处理速度产生影响。
通过类似的分析,可以得到AES解密过程所需要的电路结构,具体分析如下:
设a′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换的输入字节;
a′=(a′0,a′1,a′2,a′3)表示输入状态矩阵。
令b′i,j(0≤i≤3,0≤j≤3)表示逆行移位变换后的字节;
c′i,j(0≤i≤3,0≤j≤3)表示逆字节代替变换(记为s’)后的字节,即逆S盒变换后的字节;
d′i,j(0≤i≤3,0≤j≤3)表示逆密钥加(异或)变换后的字节;
e′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换后的输出字节;
k′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换的子密钥字节。
则根据AES解密算法的描述,对于除最后一轮之外的所有轮解密变换,有下列式子成立:
c′i,j=s′(b′i,j),(0≤i≤3,0≤j≤3) (9)
将(8)式代入(9)式,(9)式代入(10)式,得
将(11)式展开,得
在(12)式和(13)式中,分别令j=0,1,2,3,就可以得到经过一轮解密变换(最后一轮解密变换除外)后的所有输出字节。
对于初始密钥加变换,可以看成是第0轮解密变换,其输出字节与输入字节之间的函数关系为:
在(14)式中,分别令j=0,1,2,3,就可以得到经过初始密钥加变换后的所有输出字节。
对于最后一轮解密变换,其输出字节与输入字节之间的函数关系为:
在(15)式中,分别令j=0,1,2,3,就可以得到经过最后一轮解密变换后的所有输出字节。
通过上述分析,可以得出AES解密过程包括逆S盒变换、09乘字节、0b乘字节、0d乘字节、0e乘字节、异或共6种操作。其中,逆S盒变换可以使用与S盒变换相同的存储器电路,只是需要装入不同的初始值;09乘字节、0b乘字节、0d乘字节、0e乘字节也可以在02乘字节、03乘字节的基础上实现。另外,保存每轮解密变换结果的寄存器也与加密过程所使用的寄存器相同。由此可见,只需在AES加密电路上增加少许电路,就可以实现AES解密功能。
综上所述,本实施例得到AES加密/解密模块的组成方案如下:16个8*8S盒、16个02/03乘字节模块byte0203、16个09/0b/0d/0e乘字节模块byte9bde、1个128位的寄存器resultreg以及多路选通器和异或电路等部件,参见图4所示。
当然,所述的S盒也可以采用其它大小和个数的S盒;02/03乘字节模块byte0203和09/0b/0d/0e乘字节模块byte9bde也不仅限于以上个数;寄存器也可以采用多个128位或者其它大小的寄存器进行设计,本实施例并不仅限于以上举例。
AES加密/解密模块的电路工作原理如下(以AES算法采用10轮变换的情况为例进行说明):
<1>加密流程:首先将S盒配置为加密S盒,即在使能信号wrsben和地址信号wrsbaddr的控制下,通过S盒配置数据端口sbdata将加密S盒配置数据写入16个S盒sbox0~sbox15。然后进行初始密钥加变换,即在选择信号keyadsel的控制下,通过四选一选通器MUX41选择外部输入明文数据intxt,通过异或电路与初始子密钥(各子密钥均用roundkey表示)进行如(6)式所示的异或操作,并在选择信号reginsel的控制下,通过二选一选通器MUX21将异或操作的结果e0~e15保存到寄存器resultreg中。接下来进行第1轮加密变换,即将初始密钥加变换的结果e0~e15经S盒sbox0~sbox15完成S盒变换后,在选择信号mixsel的控制下,通过二选一选通器MUX21进入byte0203模块,完成02乘字节和03乘字节运算,然后经异或电路进行(5)式中前4项的异或运算,得结果c0~c15。之后,在选择信号keyadsel的控制下,通过四选一选通器MUX41选择结果c0~c15经异或电路与第一轮子密钥进行(5)式中最后一项异或操作,从而得到第一轮加密变换的结果e0~e15,并将其保存到寄存器resultreg中,作为下一轮加密变换的输入数据。依次类推,可以完成第1~9轮加密变换。最后进行第10轮加密变换,即第9轮加密变换变换的结果经S盒sbox0~sbox15完成S盒变换后,在选择信号keyadsel的控制下,通过四选一选通器MUX41选择由(7)式确定的S盒输出经异或电路与第10轮子密钥进行异或操作,即可得到密文,最后在选择信号reginsel的控制下,通过二选一选通器MUX21将密文保存到寄存器resultreg中。
初始密钥加变换和每轮加密变换都在1个周期内完成,因此,上述加密过程共需要11个时钟周期。
<2>解密流程:首先将S盒配置为解密S盒,配置过程与加密S盒配置过程一样,只是配置数据不同。然后实现初始密钥加变换,即在选择信号keyadsel的控制下,通过四选一选通器MUX41选择外部输入密文数据intxt,通过异或电路与初始解密子密钥(各解密子密钥也均用roundkey表示)进行如(14)式所示的异或操作,并在选择信号reginsel的控制下,通过二选一选通器MUX21将异或操作的结果e0~e15保存到寄存器resultreg中。接下来进行第一轮解密变换,即初始密钥加变换的结果e0~e15经解密S盒sbox0~sbox15完成逆S盒变换后,再通过异或电路与第一轮解密子密钥进行如(12)式所示的异或操作,然后在选择信号mixsel的控制下,通过二选一选通器MUX21进入byte0203模块和byte9bde模块,进行逆列混合变换所需要的字节乘法运算(即09乘字节、0b乘字节、0d乘字节和0e乘字节,这些运算都可以利用02乘字节和03乘字节运算完成,详细算法可参考《Federal Information ProcessingStandards Publication 197》中的描述),然后经异或电路进行如(13)式所示的一系列异或运算后得到逆列混合变换的结果g0~g15,在选择信号reginsel的控制下,通过二选一选通器MUX21选择结果g0~g15输出,从而得到第一轮解密变换的结果h,并将其保存到寄存器resultreg中,作为下一轮解密变换的输入数据。依次类推,可以完成第1~9轮解密变换。最后进行第10轮解密变换,即第9轮加密变换变换的结果经解密S盒sbox0~sbox15完成逆S盒变换后,在选择信号keyadsel的控制下,通过四选一选通器MUX41选择由(15)式确定的S盒输出经异或电路与第10轮解密子密钥进行异或操作,即可得到明文,最后在选择信号reginsel的控制下,通过二选一选通器MUX21将明文保存到寄存器resultreg中。
初始密钥加变换和每轮解密变换都在1个周期内完成,因此,上述解密过程共需要11个时钟周期。需要注意的是,解密过程使用的子密钥与加密过程使用的子密钥相同,但使用顺序恰好相反。
④、控制模块
在本实施例中,控制模块由密钥扩展状态机、加密状态机、解密状态机以及其它少量组合逻辑构成。其中,密钥扩展状态机用于控制密钥扩展过程的执行,加密状态机用于控制加密过程的执行,解密状态机用于控制解密过程的执行。控制模块的电路结构如图5所示。
下面以AES采用10轮变换的情况为例说明各个状态机的设计方法。
<1>密钥扩展状态机用于产生密钥扩展过程中所使用的控制信号,它由12个状态构成,其状态的划分和定义如表3所示。
状态名称 | 状态定义 |
S0 | 空闲状态,当复位信号有效时状态机处于空闲状态。 |
S1 | 产生并保存初始密钥加变换所需要的子密钥。 |
S2 | 产生并保存第1轮加密变换所需要的子密钥。 |
S3 | 产生并保存第2轮加密变换所需要的子密钥。 |
S4 | 产生并保存第3轮加密变换所需要的子密钥。 |
S5 | 产生并保存第4轮加密变换所需要的子密钥。 |
S6 | 产生并保存第5轮加密变换所需要的子密钥。 |
S7 | 产生并保存第6轮加密变换所需要的子密钥。 |
S8 | 产生并保存第7轮加密变换所需要的子密钥。 |
S9 | 产生并保存第8轮加密变换所需要的子密钥。 |
S10 | 产生并保存第9轮加密变换所需要的子密钥。 |
S11 | 产生并保存第10轮加密变换所需要的子密钥。 |
表3
密钥扩展状态机的各个状态之间的转换关系如图6所示。
<2>加密状态机用于产生加密过程中所使用的控制信号,它由12个状态构成,其状态的划分和定义如表4所示。
状态名称 | 状态定义 |
S0 | 空闲状态,当复位信号有效时状态机处于空闲状态。 |
S1 | 进行初始密钥加变换。 |
S2 | 进行第1轮加密变换。 |
S3 | 进行第2轮加密变换。 |
S4 | 进行第3轮加密变换。 |
S5 | 进行第4轮加密变换。 |
S6 | 进行第5轮加密变换。 |
S7 | 进行第6轮加密变换。 |
S8 | 进行第7轮加密变换。 |
S9 | 进行第8轮加密变换。 |
S10 | 进行第9轮加密变换。 |
S11 | 进行第10轮加密变换,并保存密文。 |
表4
加密状态机的各个状态之间的转换关系如图7所示。
<3>解密状态机用于产生解密过程中所使用的控制信号,它由12个状态构成,其状态的划分和定义以及状态转换关系与加密状态机类似,但要注意的是:AES解密过程所使用的子密钥的顺序与加密过程相反。
⑤、USB与AES接口模块
USB与AES接口模块的主要外部信号参见图8及表5所示。
信号名称 | 传输方向 | 信号含义和作用 |
clk | 输入 | 时钟信号,为电路提供正常工作所需的同步信号。 |
rst | 输入 | 复位信号,有效时将电路中的某些寄存器设置为需要的初始值。 |
load | 输出 | 数据装载使能信号,用于控制输入明/密文、密钥、s盒配置数据等。 |
address<7:0> | 输出 | 数据装载地址,用于给出被装载数据的存储地址。 |
keyexpen | 输出 | 密钥扩展使能信号,用于启动密钥扩展过程。 |
keyexprdy | 输入 | 密钥扩展完成标志信号,用于表示密钥扩展过程是否完成。 |
staenc | 输出 | 加密使能信号,用于启动AES加密过程。 |
stadec | 输出 | 解密使能信号,用于启动AES解密过程。 |
encdecrdy | 输入 | 加/解密完成标志信号,用于表示加/解密运算是否完成。 |
din<15:0> | 输出 | 接AES输入数据总线,用于输出明/密文、密钥、配置数据等到AES模块。 |
dout<15:0> | 输入 | 接AES输出数据总线,用于读入加/解密结果到USB与AES接口模块。 |
shift | 输出 | 结果移位使能信号,用于对加/解密结果进行移位,以便将位宽很大的数据分成多次输出,从而节省总线位宽。 |
SLOE | 输出 | USB FIFO输出使能信号,有效时,USB接口芯片的FIFO缓冲器中的数据才能输出到外部数据总线。 |
SLRD | 输出 | USB FIFO读使能信号,有效时,将USB接口芯片的FIFO缓冲器中数据读出到外部数据总线上。 |
SLWR | 输出 | USB FIFO写使能信号,有效时,将外部数据总线上的数据写入USB接口芯片的FIFO缓冲器中。 |
FIFOADR<1:0> | 输出 | USB FIFO地址,在USB接口芯片中有多个FIFO的情况下,用于指明读写操作针对的是哪一个FIFO。 |
FULL | 输入 | USB FIFO满标志信号,用于表示USB接口芯片的FIFO缓冲器是否装满了数据,若FIFO已满,则写FIFO操作不能进行。 |
EMPTY | 输入 | USB FIFO空标志信号,用于表示USB接口芯片的FIFO缓冲器是否为空,若FIFO为空,则读FIFO操作不能进行。 |
FD<15:0> | 输入/输出 | USB FIFO读写数据总线,用于实现USB FIFO与加密芯片之间的双向数据通信。 |
表5
USB与AES接口模块是一个有限状态机,根据USB接口芯片和AES模块的工作原理(以AES采用10轮变换的情况为例),可以将USB与AES接口模块划分为11个状态,各个状态的定义如下:
<1>S0:初始状态;在该状态下,从USB FIFO中读取一个控制字,根据控制字内容转到相应状态,复位后处于初始状态。
<2>S1:密钥装载状态;在该状态下,将AES算法的种子密钥从USB FIFO中读取,并写入AES加密芯片中的密钥寄存器中。
<3>S2:密钥扩展状态;在该状态下,产生加密/解密需要的11个子密钥,并将其保存起来。
<4>S3:加密S盒配置状态;在该状态下,将AES的加密S盒数据配置到加密/解密中的S盒中。
<5>S4:明文装载状态;在该状态下,将待加密的明文从USB FIFO中读取,并写入AES解密芯片中的明文寄存器中。
<6>S5:加密状态;在该状态下,加密/解密对明文进行加密处理,并保存得到的密文。
<7>S6:密文输出状态;在该状态下,将密文从AES加密芯片中输出到USB FIFO中。
<8>S7:解密S盒配置状态;在该状态下,将AES的解密S盒数据配置到加密/解密中的S盒中。
<9>S8:密文装载状态;在该状态下,将待解密的密文从USB FIFO中读取,并写入AES加密芯片中的密文寄存器中。
<10>S9:解密状态;在该状态下,加密/解密对密文进行解密处理,并保存得到的明文。
<11>S10:明文输出状态;在该状态下,将明文从AES加密芯片中输出到USB FIFO中。
上述各个状态之间的转换关系如图9所示。
采用上述AES加密芯片构建电脑加密机的方法如下:
采用上述AES加密芯片,再配上一片USB接口芯片,就可以构成一个可移动电脑加密机,如图10所示。AES加密芯片通过其内部的USB与AES接口模块连接所述的USB接口芯片。将该电脑加密机通过USB接口芯片连接到电脑上,并且在电脑端安装一个加密机驱动软件,就可以方便、快速地对电脑上的各种文件进行加密/解密处理了。
上述AES加密芯片的设计可采用FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application-Specific Integrated Circuit,专用集成电路)等集成电路设计模式实现,即上述AES加密芯片既可以以FPGA形式实现,也可以以ASIC等形式实现。
本发明的可移动电脑加密机不同于当前已有的任何一种加密设备,它采用自行设计的加密芯片实现AES(Advanced Encryption Standard)算法,具有安全性高、加/解密处理速度快、即插即用、便于移动和携带、价格低廉等众多优点,非常适合个人使用,可广泛应用于政府部门、企事业单位和个人的信息安全事务。
当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。
Claims (10)
1、一种AES加密芯片的设计方法,在芯片内部设计如下各部分:
USB与AES接口模块,用于完成AES加密芯片内部各电路模块与外部USB接口芯片之间的通信;
控制模块,用于控制明文或者密文或者密钥的装载过程、S盒配置过程、密钥扩展过程、加密过程和解密过程的执行,即产生完成上述各个过程所需要的控制信号;
明文/密文/密钥寄存器,用于保存明文或者密文或者密钥;
密钥扩展模块,用于产生AES加密过程和AES解密过程中所需要的全部子密钥;
加密/解密模块,用于对一个明文分组进行AES算法所规定的加密操作,并保存得到的密文分组;或者对一个密文分组进行AES算法所规定的解密操作,并保存得到的明文分组。
2、根据权利要求1所述的AES加密芯片的设计方法,其特征在于:所述加密/解密模块对明文进行的AES加密过程由一个初始密钥加变换和多轮加密变换构成;具体来讲,对每一组明文进行以下步骤的加密操作,以得到该组明文所对应的密文:
A1、将明文数据与初始加密子密钥进行异或运算,所得结果作为第一轮加密变换的输入字节;
A2、对于除最后一轮以外的其它各轮加密变换均采用公式:
进行,分别令j=0,1,2,3,即得到经过一轮加密变换后的所有输出字节;其中,ai,j(0≤i≤3,0≤j≤3)表示每一轮加密变换的输入字节,且后一轮加密变换的输入字节为前一轮加密变换的输出字节;
S表示S盒变换;
ei,j(0≤i≤3,0≤j≤3)表示每一轮加密变换后的输出字节;
ki,j(0≤i≤3,0≤j≤3)表示每一轮加密变换的子密钥字节;
A3、对于最后一轮加密变换采用公式:
进行,分别令j=0,1,2,3,即可得到经过最后一轮加密变换后的所有输出字节;其中,最后一轮加密变换的输入字节为倒数第二轮加密变换的输出字节;
A4、将通过最后一轮加密变换后输出的字节作为密文,保存到寄存器中;
所述加密/解密模块对密文进行的AES解密过程由一个初始密钥加变换和多轮解密变换构成;具体来讲,对每一组密文进行以下步骤的解密操作,以得到该组密文所对应的明文:
B1、将密文数据与初始解密子密钥进行异或运算,所得结果作为第一轮解密变换的输入字节;
B2、对于除最后一轮以外的其它各轮解密变换均采用公式:
进行,分别令j=0,1,2,3,即得到经过一轮解密变换后的所有输出字节;其中,
a′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换的输入字节,且后一轮解密变换的输入字节为前一轮解密变换的输出字节;
S’表示逆S盒变换;
e′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换后的输出字节;
k′i,j(0≤i≤3,0≤j≤3)表示每一轮解密变换的子密钥字节;
B3、对于最后一轮解密变换采用公式:
进行,分别令j=0,1,2,3,即可得到经过最后一轮解密变换后的所有输出字节;其中,最后一轮解密变换的输入字节为倒数第二轮解密变换的输出字节;解密过程使用的子密钥与加密过程使用的子密钥相同,但使用顺序相反;
B4、将通过最后一轮解密变换后输出的字节作为明文,保存到寄存器中。
3、根据权利要求2所述的AES加密芯片的设计方法,其特征在于:在所述加密/解密模块中包含有S盒、02/03乘字节模块、09/0b/0d/0e乘字节模块、以及选通器、异或电路和寄存器;
在对明文数据进行加密操作时,首先将S盒配置成加密S盒,然后进行初始密钥加变换,即采用异或电路对明文数据和初始加密子密钥进行异或操作,并将异或操作的结果保存到寄存器中;接下来进行第1轮加密变换,即将初始密钥加变换的结果输出至S盒进行S盒变换,然后输出至02/03乘字节模块,完成02乘字节和03乘字节运算;接下来通过异或电路进行(公式一)中前4项的异或运算,所得结果与第一轮子密钥进行(公式一)中的最后一项异或操作,从而得到第一轮加密变换的结果,并将所述结果保存到寄存器,作为下一轮加密变换的输入数据,返回输入到所述的S盒中,进行下一轮加密变换;依次类推,完成第1轮至第(N-1)轮加密变换;最后进行第N轮加密变换,即将第(N-1)轮加密变换的结果输出至所述的S盒中进行S盒变换后,所得结果在选通器的控制下,直接输出至异或电路与第N轮子密钥进行异或操作,即可得到密文,将其保存到寄存器中;
在对密文数据进行解密操作时,首先将所述的S盒配置为解密S盒,然后进行初始密钥加变换,即采用异或电路对密文数据和初始解密子密钥进行异或操作,并将异或操作的结果保存到所述的寄存器中;接下来进行第1轮解密变换,即将初始密钥加变换的结果输出至S盒进行逆S盒变换后,输出至异或电路与第1轮解密子密钥进行异或操作,所得结果输出至09/0b/0d/0e乘字节模块进行09乘字节、0b乘字节、0d乘字节和0e乘字节运算;然后通过异或电路进行(公式二)的异或运算,得到第1轮解密变换的结果,并将其保存到所述的寄存器中,作为下一轮解密变换的输入数据,返回输入到所述的S盒中,进行下一轮解密变换;依次类推,完成第1轮至第(N-1)轮解密变换;最后进行第N轮解密变换,即将第(N-1)轮解密变换的结果输出至所述的S盒进行逆S盒变换后,输出至异或电路与第N轮子密钥进行异或操作,即可得到明文,所得结果在所述选通器的控制下,直接输出至所述的寄存器进行保存;
其中,所述N等于10或12或14,具体根据密钥长度确定。
4、根据权利要求1或2或3所述的AES加密芯片的设计方法,其特征在于:所述USB与AES接口模块是一个有限状态机,各个状态的定义如下:
S0:初始状态;在该状态下,从USB接口芯片的FIFO缓冲器中读取一个控制字,根据控制字内容转到相应状态,复位后处于初始状态;
S1:密钥装载状态;在该状态下,将AES算法的种子密钥从USB接口芯片的FIFO缓冲器中读取,并写入AES加密芯片中的密钥寄存器中;
S2:密钥扩展状态;在该状态下,产生AES加密过程和解密过程所需要的全部子密钥,并将其保存起来;
S3:加密S盒配置状态;在该状态下,将加密S盒数据配置到加密/解密模块中的S盒中;
S4:明文装载状态;在该状态下,将待加密的明文从USB接口芯片的FIFO缓冲器中读取,并写入AES加密芯片中的明文寄存器中;
S5:加密状态;在该状态下,加密/解密模块对明文进行加密处理,并保存得到的密文;
S6:密文输出状态;在该状态下,将密文从加密/解密模块中输出到USB接口芯片的FIFO缓冲器中;
S7:解密S盒配置状态;在该状态下,将解密S盒数据配置到加密/解密模块中的S盒中;
S8:密文装载状态;在该状态下,将待解密的密文从USB接口芯片的FIFO缓冲器中读取,并写入AES加密芯片中的密文寄存器中;
S9:解密状态;在该状态下,加密/解密模块对密文进行解密处理,并保存得到的明文;
S10:明文输出状态;在该状态下,将明文从加密/解密模块中输出到USB接口芯片的FIFO缓冲器中。
5、根据权利要求1或2或3所述的AES加密芯片的设计方法,其特征在于:所述密钥扩展模块一次性产生加密过程和解密过程所需要的全部子密钥,并将这些子密钥保存起来,在后续的加密过程和解密过程中反复使用;所述子密钥由种子密钥通过密钥扩展算法生成。
6、根据权利要求5所述的AES加密芯片的设计方法,其特征在于:在所述密钥扩展模块中包括轮密钥寄存器、轮密钥寄存器堆、轮常数产生模块、字节代替模块、循环左移移位器和异或器;子密钥的产生过程如下:
步骤1、选择种子密钥作为第1个子密钥,将其保存到轮密钥寄存器和轮密钥寄存器堆中;
步骤2、将保存在轮密钥寄存器中的第1个子密钥先后通过循环左移移位器和字节代替模块进行循环左移操作和字节代替变换操作、然后与轮常数产生模块输出的本轮轮常数进行异或运算,得到第2个子密钥,将该子密钥保存到轮密钥寄存器和轮密钥寄存器堆中;
步骤3、仿照步骤2利用第2个子密钥变换生成第3个子密钥,并以此类推,以产生AES加密过程和解密过程所需的全部子密钥。
7、根据权利要求6所述的AES加密芯片的设计方法,其特征在于:所述轮常数产生模块为一个内部存储有每一轮的轮常数的寄存器堆或者存储器,亦或者是根据公式rcon_new=(rcon[7]==0)?(rcon<<1):((rcon<<1)^{8′h1b})设计的逻辑模块,由前一轮的轮常数rcon实时产生下一轮的轮常数rcon_new。
8、根据权利要求1或2或3所述的AES加密芯片的设计方法,其特征在于:所述明文/密文/密钥寄存器的输入数据的位宽与所述USB接口芯片的FIFO缓冲器的读写数据总线的位宽相同,其输出数据的位宽与AES算法的分组长度或者密钥长度相同。
9、根据权利要求8所述的AES加密芯片的设计方法,其特征在于:所述明文/密文/密钥寄存器由多个寄存器串联构成。
10、一种采用权利要求1所述AES加密芯片构建的电脑加密机,包括USB接口芯片和AES加密芯片;所述AES加密芯片通过其内部的USB与AES接口模块连接所述的USB接口芯片;所述电脑加密机通过所述的USB接口芯片与外部电脑连接通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910017075XA CN101626289B (zh) | 2009-07-14 | 2009-07-14 | Aes加密芯片的设计方法及电脑加密机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910017075XA CN101626289B (zh) | 2009-07-14 | 2009-07-14 | Aes加密芯片的设计方法及电脑加密机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101626289A true CN101626289A (zh) | 2010-01-13 |
CN101626289B CN101626289B (zh) | 2012-01-04 |
Family
ID=41521987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910017075XA Expired - Fee Related CN101626289B (zh) | 2009-07-14 | 2009-07-14 | Aes加密芯片的设计方法及电脑加密机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101626289B (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006161A (zh) * | 2010-12-02 | 2011-04-06 | 北京航空航天大学 | 一种对称密钥加密的非线性变换方法及其实现装置 |
CN102223228A (zh) * | 2011-05-11 | 2011-10-19 | 北京航空航天大学 | 基于fpga的aes加密芯片设计方法及嵌入式加密系统 |
CN102664729A (zh) * | 2012-04-28 | 2012-09-12 | 中山大学 | 一种基于fpga的aes加解密网络通讯装置及其实现方法 |
CN102664730A (zh) * | 2012-05-02 | 2012-09-12 | 西安电子科技大学 | 基于高级加密标准aes的128比特位密钥扩展方法 |
CN102780557A (zh) * | 2012-07-10 | 2012-11-14 | 记忆科技(深圳)有限公司 | 一种选择门优化的aes加解密方法及装置 |
CN102801519A (zh) * | 2012-07-10 | 2012-11-28 | 记忆科技(深圳)有限公司 | 一种实现aes加解密的方法及装置 |
CN103209071A (zh) * | 2012-12-05 | 2013-07-17 | 无锡华大国奇科技有限公司 | Aes加密装置 |
CN103546282A (zh) * | 2012-07-12 | 2014-01-29 | 黄宜豊 | 具有三维运算、反馈控制与动态替换盒设计的加密方法 |
CN104022871A (zh) * | 2014-06-23 | 2014-09-03 | 凉山彝族自治州科学技术情报研究所 | 基于对称式的加密方法 |
CN104486069A (zh) * | 2014-12-23 | 2015-04-01 | 天津光电通信技术有限公司 | 一种基于fpga实现的gost加解密设备及其方法 |
CN104683095A (zh) * | 2013-11-29 | 2015-06-03 | 上海复旦微电子集团股份有限公司 | 一种des加密方法和装置 |
CN105740721A (zh) * | 2016-01-21 | 2016-07-06 | 浪潮电子信息产业股份有限公司 | 一种数据加解密处理的装置、方法及系统 |
CN105790926A (zh) * | 2014-12-26 | 2016-07-20 | 中国科学院沈阳自动化研究所 | 用于wia-pa安全的分组密码算法工作模式实现方法 |
CN106788968A (zh) * | 2015-11-24 | 2017-05-31 | 中国科学院沈阳自动化研究所 | 应用于wia-pa协议的安全协处理器的实现方法 |
CN107332657A (zh) * | 2017-07-21 | 2017-11-07 | 广州智慧城市发展研究院 | 一种基于区块链数字签名的加密方法及系统 |
CN107526963A (zh) * | 2017-08-30 | 2017-12-29 | 深圳市风云实业有限公司 | 密钥查找设备、方法和计算机可读存储介质 |
CN107947916A (zh) * | 2017-12-22 | 2018-04-20 | 四川大学 | 一种基于des算法的一体式加解密模块 |
CN107967414A (zh) * | 2017-11-03 | 2018-04-27 | 成都蓉芯微科技有限公司 | 微控制芯片指令加密方法、解密方法及加/解密系统 |
CN108566393A (zh) * | 2018-04-13 | 2018-09-21 | 清华大学无锡应用技术研究院 | 数据加密的方法、装置和系统 |
CN109033023A (zh) * | 2018-06-11 | 2018-12-18 | 安徽工程大学 | 一种普通轮变换运算单元、普通轮变换电路及aes加密电路 |
CN109598132A (zh) * | 2018-11-20 | 2019-04-09 | 华立科技股份有限公司 | 电能表及其数据存储方法 |
CN113691364A (zh) * | 2021-08-31 | 2021-11-23 | 衡阳师范学院 | 一种基于位片技术的动态s盒分组密码的加密及解密方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2676280Y (zh) * | 2004-02-08 | 2005-02-02 | 海信集团有限公司 | 可重构密码协处理器与usb芯片的接口电路 |
-
2009
- 2009-07-14 CN CN200910017075XA patent/CN101626289B/zh not_active Expired - Fee Related
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102006161B (zh) * | 2010-12-02 | 2012-06-27 | 北京航空航天大学 | 一种对称密钥加密的非线性变换方法及其实现装置 |
CN102006161A (zh) * | 2010-12-02 | 2011-04-06 | 北京航空航天大学 | 一种对称密钥加密的非线性变换方法及其实现装置 |
CN102223228A (zh) * | 2011-05-11 | 2011-10-19 | 北京航空航天大学 | 基于fpga的aes加密芯片设计方法及嵌入式加密系统 |
CN102664729A (zh) * | 2012-04-28 | 2012-09-12 | 中山大学 | 一种基于fpga的aes加解密网络通讯装置及其实现方法 |
CN102664729B (zh) * | 2012-04-28 | 2014-12-31 | 中山大学 | 一种基于fpga的aes加解密网络通讯装置及其实现方法 |
CN102664730B (zh) * | 2012-05-02 | 2014-11-12 | 西安电子科技大学 | 基于高级加密标准aes的128比特位密钥扩展方法 |
CN102664730A (zh) * | 2012-05-02 | 2012-09-12 | 西安电子科技大学 | 基于高级加密标准aes的128比特位密钥扩展方法 |
CN102801519A (zh) * | 2012-07-10 | 2012-11-28 | 记忆科技(深圳)有限公司 | 一种实现aes加解密的方法及装置 |
CN102780557B (zh) * | 2012-07-10 | 2015-05-27 | 记忆科技(深圳)有限公司 | 一种选择门优化的aes加解密方法及装置 |
CN102780557A (zh) * | 2012-07-10 | 2012-11-14 | 记忆科技(深圳)有限公司 | 一种选择门优化的aes加解密方法及装置 |
CN103546282A (zh) * | 2012-07-12 | 2014-01-29 | 黄宜豊 | 具有三维运算、反馈控制与动态替换盒设计的加密方法 |
CN103546282B (zh) * | 2012-07-12 | 2016-10-05 | 黄宜豊 | 具有三维运算、反馈控制与动态替换盒设计的加密方法 |
CN103209071A (zh) * | 2012-12-05 | 2013-07-17 | 无锡华大国奇科技有限公司 | Aes加密装置 |
CN104683095A (zh) * | 2013-11-29 | 2015-06-03 | 上海复旦微电子集团股份有限公司 | 一种des加密方法和装置 |
CN104683095B (zh) * | 2013-11-29 | 2018-03-06 | 上海复旦微电子集团股份有限公司 | 一种des加密方法和装置 |
CN104022871B (zh) * | 2014-06-23 | 2017-07-25 | 凉山彝族自治州科学技术情报研究所 | 基于对称式的加密方法 |
CN104022871A (zh) * | 2014-06-23 | 2014-09-03 | 凉山彝族自治州科学技术情报研究所 | 基于对称式的加密方法 |
CN104486069A (zh) * | 2014-12-23 | 2015-04-01 | 天津光电通信技术有限公司 | 一种基于fpga实现的gost加解密设备及其方法 |
CN105790926A (zh) * | 2014-12-26 | 2016-07-20 | 中国科学院沈阳自动化研究所 | 用于wia-pa安全的分组密码算法工作模式实现方法 |
CN106788968A (zh) * | 2015-11-24 | 2017-05-31 | 中国科学院沈阳自动化研究所 | 应用于wia-pa协议的安全协处理器的实现方法 |
CN105740721A (zh) * | 2016-01-21 | 2016-07-06 | 浪潮电子信息产业股份有限公司 | 一种数据加解密处理的装置、方法及系统 |
CN107332657A (zh) * | 2017-07-21 | 2017-11-07 | 广州智慧城市发展研究院 | 一种基于区块链数字签名的加密方法及系统 |
CN107526963A (zh) * | 2017-08-30 | 2017-12-29 | 深圳市风云实业有限公司 | 密钥查找设备、方法和计算机可读存储介质 |
CN107967414A (zh) * | 2017-11-03 | 2018-04-27 | 成都蓉芯微科技有限公司 | 微控制芯片指令加密方法、解密方法及加/解密系统 |
CN107947916A (zh) * | 2017-12-22 | 2018-04-20 | 四川大学 | 一种基于des算法的一体式加解密模块 |
CN107947916B (zh) * | 2017-12-22 | 2020-08-04 | 四川大学 | 一种基于des算法的一体式加解密模块 |
CN108566393A (zh) * | 2018-04-13 | 2018-09-21 | 清华大学无锡应用技术研究院 | 数据加密的方法、装置和系统 |
CN109033023A (zh) * | 2018-06-11 | 2018-12-18 | 安徽工程大学 | 一种普通轮变换运算单元、普通轮变换电路及aes加密电路 |
CN109598132A (zh) * | 2018-11-20 | 2019-04-09 | 华立科技股份有限公司 | 电能表及其数据存储方法 |
CN113691364A (zh) * | 2021-08-31 | 2021-11-23 | 衡阳师范学院 | 一种基于位片技术的动态s盒分组密码的加密及解密方法 |
CN113691364B (zh) * | 2021-08-31 | 2024-02-09 | 衡阳师范学院 | 一种基于位片技术的动态s盒分组密码的加密及解密方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101626289B (zh) | 2012-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101626289B (zh) | Aes加密芯片的设计方法及电脑加密机 | |
JP7107670B2 (ja) | ビットミキサにより暗号ラウンド鍵を生成するためのシステム及び方法 | |
CN102025484B (zh) | 一种分组密码加解密方法 | |
US10176121B2 (en) | Apparatus and method for memory address encryption | |
EP2058780A1 (en) | Encryption device, encryption method, and computer program | |
US20020041685A1 (en) | Data encryption apparatus | |
CN102223228A (zh) | 基于fpga的aes加密芯片设计方法及嵌入式加密系统 | |
CN101478392B (zh) | 利用vlsi实现128位密钥长度aes算法的装置 | |
CN101162557A (zh) | 密码处理装置和密码处理方法、以及计算机程序 | |
CN104852798B (zh) | 一种数据加解密系统及方法 | |
CN100382485C (zh) | 设计最优加密函数的方法和优化的加密设备 | |
CN103503362A (zh) | 数据处理装置、数据处理方法以及程序 | |
CN106982116B (zh) | 一种基于可逆逻辑电路的aes的本地文件加密方法 | |
CN104486069A (zh) | 一种基于fpga实现的gost加解密设备及其方法 | |
CN105049203B (zh) | 一种支持多工作模式的可配置3des加解密算法电路 | |
CN106788976A (zh) | 一种aes加解密电路仿真分析方法及装置 | |
KR20060012002A (ko) | 암호화/암호 해독 방법, 데이터 암호화/암호 해독 장치,변환 모듈 및 컴퓨터 프로그램 제품 | |
US20120321079A1 (en) | System and method for generating round keys | |
US20240097880A1 (en) | High-speed circuit combining aes and sm4 encryption and decryption | |
CN101355423B (zh) | 流密码生成方法 | |
CN102110038B (zh) | 一种安全类芯片的测试电路 | |
WO2004105306A1 (en) | Method and apparatus for a low memory hardware implementation of the key expansion function | |
CN201178468Y (zh) | 一种aes算法加密装置及数字电视前端双向认证系统 | |
Ghodke et al. | Implementation of advanced encryption standard algorithm for communication security using FPGA | |
Pandey et al. | Design, integration and implementation of crypto cores in an SoC environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120104 Termination date: 20140714 |
|
EXPY | Termination of patent right or utility model |