CN104539417A - 一种基于流密码的加密设备 - Google Patents
一种基于流密码的加密设备 Download PDFInfo
- Publication number
- CN104539417A CN104539417A CN201510015089.3A CN201510015089A CN104539417A CN 104539417 A CN104539417 A CN 104539417A CN 201510015089 A CN201510015089 A CN 201510015089A CN 104539417 A CN104539417 A CN 104539417A
- Authority
- CN
- China
- Prior art keywords
- key
- box module
- register
- port
- data
- 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.)
- Pending
Links
Landscapes
- Storage Device Security (AREA)
Abstract
提出一种基于FPGA器件实现的RC4加密设备,包括控制单元,K-box模块、S-box模块、寄存器堆和运算器。提出的所述设备支持变长密钥的同时,与传统的ASIC相比在硬件设计的时间、空间、成本等方面都有较大的改进。与软件方法实现相比,硬件实现的加密算法不仅在速度上有提升,而且在抵挡诸如窃取信息,恶意篡改和中断等外部攻击方面优势更加突出。
Description
技术领域
本发明涉及加密技术领域,具体涉及一种基于流密码的加密设备。
背景技术
移动通信和互联网的快速发展使得信息安全的重要性凸显出来,而且在经济政治、军事国防等关键领域,对信息保密有更高的要求。所以,在现代信息系统中,为数据传输加入保密机制,并配备相应的加密技术的需求迫切且意义重大。
RC4算法是一种典型的流密码算法,具有流密码算法受到错误传播的影响的特点。同时RC4算法具有良好的随机性和抵抗各种分析的能力,在众多领域的安全设计中得到了广泛的应用。RC4算法是一个以分组长度n(一般n表示字节的个数)为参数的二元加法流密码体制,其内部状态包含N=2n个字节的S盒。
RC4加密算法的伪代码如下所示:
其中所有加法结果关于模N同余,S[i]表示S盒中第i个字节,K[i]表示密钥K的第i字节,L表示密钥K的长度,k为每步生成的伪随机数。
该算法由两部分组成:
1.密钥调度算法KSA(Key Seheduling Algorithim),由输入的随机密钥K(典型长度为64或128比特)生成一个元素0,1,…,N-1组成的初始排列S{0,1,…,N-l},N一般为256;
2.伪随机数生成算法PRGA(Pseudo Random generation Algorithm),PRGA借由KSA产生的S盒,生成伪随机密钥序列St,最终与明文相异或产生密文。
在嵌入式复杂多变环境下,不同的应用对加密算法又提出了许多新要求。嵌入式系统设计是对速度、空间和功耗等多维因素的权衡,在保证信息安全性的前提下,针对不同应用领域有不同的解决方法和各自的侧重点。本发明提出一种在嵌入式环境下利用现场可编程门阵列(FPGA,Field ProgrammableGate Array)进行流密码加密的硬件系统。
发明内容
本发明提出的一种RC4加密设备,包括:
控制单元、K-box模块、S-box模块、寄存器堆和运算器;
所述K-box模块用于保存用户设定的密钥;
所述S-box模块用于完成密钥调度和输出伪随机密钥;
所述寄存器堆用于保存密钥调度和生成伪随机密钥序列过程中产生的中间数据和需要访问的S-box中存储空间地址;
所述控制单元具有:
key_write端口,所述控制单元在所述key_write端口输入有效电平时,控K-box模块写入用户设定的密钥;
key_len端口,用于输入所述用户设定的密钥的长度信息;
ask端口,当所述ask端口输入有效电平时,触发所述控制单元控制S-box模块执行密钥调度;
prepare_ready端口,在所述S-box模块完成所述调度后,控制模块通过
prepare_ready端口输出有效电平;
end_of_data端口,用于接收待加密数据输入完成指示电平;
所述RC4加密设备还具有:
Key端口,用于输入用户设定的密钥;
data_in数据输入端口,接收待加密数据;
data_out数据输出端口,将加密后的数据输出;
所述运算器用于将所述伪随机密钥与输入的所述待加密数据进行异或运算,产生所述加密后的数据。
特别地:
所述寄存器堆包括寄存器k,用于保存已经写入到所述K-box模块中的所述用户设定的密钥的位数。
特别地:
所述寄存器堆包括寄存器i、j、RSi和RSj;
所述寄存器i和j分别用于保存在S-box模块执行密钥调度时所使用到的S-box模块中的不同存储空间的地址;
所述寄存器RSi用于缓存由S-box模块存储的、所述寄存器i所保存的所述地址处的数值S[i];
所述寄存器RSj用于缓存由S-box模块存储的、所述寄存器j所保存的所述地址处的数值S[j]。
特别地:
所述寄存器堆包括寄存器t和k;
所述寄存器t用于记录所要使用的伪随机密钥在S-box模块的存储空间中的存储地址;
所述寄存器k用于记录所要使用的所述伪随机密钥,即k=S[t]。
特别地:
所述设备使用大规模可编程门阵列FPGA器件实现;
所述S-box模块、K-box模块由所述器件中的M4K块存储器实现。
特别地:
所述S-box模块为双口RAM;
具有一个8位异步读端口、一个8位异步写端口,读使能信号、8位宽的读地址、写使能信号、8位宽的写地址、以及读写操作共同使用的时钟信号。
本发明的有益效果是:
一、加密算法的灵活性和可移植性方面
与纯软件方式相比:本发明中使用VHDL或者Verilog等硬件表述语言实现,同样具有较好的灵活性和可移植性。
与ASIC方式相比,本发明具有非常大的优势,即可以在系统内灵活地进行编程,以及在操作过程中加密算法可以进行切换。现代的安全协议SSL或IPSec都允许使用多种加密算法,而且还应该支持将来对加密算法的种类进行扩展。对于传统的硬件来讲,修改设计的成本花费是相当高的,而运用FPGA可以随时修改设计,以适应不同的需求。
二、系统安全性方面
软件方法实现的加密仅能提供有限的物理安全,尤其是在密钥存储方面存在着明显的不足,因为由操作系统管理的密钥很难保证不被病毒或者黑客袭击或窃取,故往往不能保证密钥的安全性。相反,用FPGA实现加密算法和用硬件方式管理密钥,从本质上讲在物理上是安全的,因为其加密算法和密钥很难被阅读或被外部攻击者修改。
与专用集成电路(ASIC)硬件相比,在系统安全性方面二者相当,将硬件描述语言进行编译以及烧录后,在硬件层面完成破解同样是非常困难的。
三、系统效率和性能方面
纯软件实现的加密算法往往由于编程层次较高,涉及到整个编译系统、运行环境、操作系统以及机器指令的各个方面,在性能和资源有效利用等方面存在先天的不足。本发明中采用的基于硬件的加密系统在性能以及资源利用等方面都有良好的表现,
与ASIC方式相比,FPGA由于其硬件电路结构由编译系统生成,在复杂度方面较ASIC相比较高,在大多数情况下性能上不如ASIC高。但是,某些情况下,如果使用一组特定的参数设计的硬件架构设计可能得到相当高的效率。而且,使用FPGA更容易设计和优化一个特定的参数的硬件体系结构,在系统优化方面更加潜力。
四、功耗方面
与纯软件方式相比,依然由于软件方式设计系统层次较多,工具链过长,会导致大量的功耗开销,无法适应于嵌入式环境。而本发明中的FPGA实现方式在功耗方面表现优异。
与ASIC相比,本发明中FPGA实现的功耗较高。但是,FPGA带来的灵活性同样为通过参数调整来进行节能带来了一定潜力。
五、成本效益方面
与纯软件方式相比,本发明具有更广泛的应用场景。在开发成本方面,本发明比纯软件实现要高。但是在硬件成本,以及应用环境方面,本发明具有更大的优势。
FPGA设计比ASIC设计的开发周期要短,同时,FPGA实现硬件的bug修复的成本更低。对于小批量或者中等批量的项目规模,FPGA的成本比ASIC要低,但对于大批量的生产,ASIC的成本要低。本发明同样为大批量ASIC芯片的生产提供了验证支持。
基于此,本专利中采用FPGA实现的流密码硬件加密系统的方案在嵌入式环境下的综合表现方面,比纯软件方法和专用硬件更具优势,具有很高的经济和技术价值。同时,本发明也为大规模加密芯片的量产提供了强大的验证支持。
附图说明
图1为本发明提出的一种RC4加密设备结构框图;
图2为本发明提出的S-box模块结构框图;
图3为RC4加密算法密钥调度流程。
具体实施方式
关于RC4算法中的两个关键步骤,密钥调度算法KSA与伪随机数生成算法PRGA,二者操作有着很大的相似性,根据伪代码中的描述进行分析可知二者都是围绕着一个RAM存储单元进行读写操作。同时,KSA与PRGA用到的寄存器的组织也大体是相同的。这两段操作充分显示了RC4加密算法的特点,也即与使用反馈寄存器FSR来生成伪随机序列的算法的对立。而大量读写RAM操作的速度也是决定着整个加密模块速度的关键性因素。
图1显示了本发明提出的RC4加密设备的总体框架,如图所示,在设计的顶层模块中定义了一组寄存器,一个状态机,一个S-box模块和一个K-box模块,其中,S-box模块与K-box模块可利用Altera的Megafunction工具定制的双口RAM来实现,得到了优化的性能。RC4加密设备由两个主要部分组成,即控制单元与存储单元,而存储单元又由S-box模块、K-box模块与寄存器堆组成。
其中控制单元是一个有限状态自动机,是整个加密模块全局的控制器,负责向K-box模块与S-box模块发出控制信号,并控制存储单元内的寄存器进行各种运算操作。控制单元发出的控制信号贯穿了整个加密过程的始终:包括初始的密钥安装阶段将种子密钥存入K-box,然后,控制单元向K-box模块与S-box模块发出控制信号进行密钥的初始化调度,其中包括了对寄存器的加法操作与对内存单元的读写,最后,控制单元控制各寄存器与S-box模块配合输出密钥流并与明文进行按位的异或操作。
RC4加密设备的信号可分成输入输出信号、接口信号和控制信号三类。
RC4加密设备实现加密功能但是无法单独使用,必须与其他的功能模块通信和交互才能达到其使用价值,RC4加密设备通过接口信号实现与其他模块的通信。首先需要得到key_write与key_len信号,以向K-box模块写入种子密钥,然后得到ask信号在S-box模块内完成密钥调度,调度完成后,模块发出prepare_ready信号,等待接收输入数据data_in,输入数据的过程中,产生输出数据data_out,并等待end_of_data信号来完成数据输入,待全部数据输入结束后,模块发出over信号完成加密整个过程。
在算法中,大多数操作都是线性完成的,并且在KSA和PRGA中都有RAM中的交换操作,所以,为了充分挖掘算法中的并行性来减少一个伪随机数生成的时钟周期数,对每个寄存器都设置了一个缓冲寄存器,当前周期内预取下一个时钟周期内的值,并在下一个时钟周期到来之时,将缓冲寄存器中暂存的值传给原寄存器。同时,这样的安排也基于另外的一个考虑,因为算法中有着大量的寄存器的自增操作,如果时序安排不当,很容易影响自动机状态变迁的速度。
下面参照附图,对本发明提出的方案进行详细说明。
本发明提出的方案实现了支持变长密钥的RC4算法加密,根据前述RC4算法加密过程,围绕着RC4算法的核心部件S-box模块展开讨论,并给出模块主要部分的实现方法。参见附图1,对本发明提出的RC4加密设备的各个模块详细描述如下。
1.存储单元
存储单元由S-box模块、K-box模块和寄存器堆组成,它们由控制模块发出的控制信号分别进行管理,并且,S-box模块和K-box模块的输入输出地址,以及输入输出数据,都来自寄存器堆或者进入寄存器堆。
(1)S-box模块
根据RC4加密算法的要求,S-box模块的大小应当是256字节,即2048位,对于选用的Altera Cyclone II EP2C8Q208C8芯片,片上自带36个M4K块存储器,每个M4K块包含了4608位,也就总共可以提供165888位的存储资源供使用。片上的M4K可直接用做RAM、FIFO或者ROM,理论上可达到将近250MHz的性能。所以本设计中的S-box实现可直接利用Cyclone芯片内的M4K资源。并且,为了更好地安排时序,设计中对S-box的实现应当采用异步的双口RAM。
在Altera的FPGA芯片中实现双口RAM时,可直接利用Altera在Megafunction工具中提供的大量可定制的IP资源,配置参数之后直接生成双口RAM,这种方法借用了Megafunction工具合理的成熟应用模块,而且可以得到优良的性能。
参见附图2,在本设计中,S-box模块的容量为256×8位,设置了一个8位异步读端口和一个8位异步写端口,读使能信号与8位宽的读地址,以及写使能信号与8位宽的写地址,读和写端口用一个统一的时钟进行控制。由于在加密的过程中有同时读写RAM的操作,所以在构造S-box模块的过程中需要在MegaWizard工具中对其进行设置。对于单时钟的RAM,在执行写操作的过程中如果又有读操作,应设置为读出RAM单元中写之前的内容。
(2)K-box模块
K-box模块的作用有两个,其一是保存开始的种子密钥,其二是在密钥调度算法(KSA)中循环线性读出K-box模块中的内容,与j和S[i]经过加法运算后将结果存入寄存器Rj中。
以上的操作决定了K-box模块的结构,在本发明提出的方案中,除了RAM容量与初始化向量,K-box模块与S-box模块的结构基本相同。为了保证RC4算法的安全性,K-box模块的设计必须有能力支持128位以上的种子密钥长度,同时,种子密钥的长度应当由初始化时根据需要进行选择。权衡容量与安全性,在本发明提出的方案中K-box模块被设置为16×8位,意味着密钥长度最大可以支持到16字节,也即256位。
为了支持变长的种子密钥,RC4加密设备设置了一个5位宽的输入信号key_len来设置密钥长度,由于密钥的长度是以字节为单位的,就意味着密钥的位数总是8的整数倍。假若输入的密钥位数不足8的整数倍,实现中将把最后的几位补齐成0。
(3)寄存器堆
RC4算法的KSA和PRGA两个阶段要对K-box模块或S-box模块进行操作,必须通过其他寄存器的配合才能完成。并且,为了提高硬件实现的速率,对S-box模块和K-box模块读出写入的数据也需要寄存器来保存。设计中的寄存器包括i,j,RSi,RSj,RK,k,t,以及相应的缓冲寄存器。
寄存器堆内数据流动,以及与S-box模块和K-box模块进行交流的数据均由控制单元发出的控制信号进行调度。
2.控制单元
控制单元自始至终驱动着整个模块的运行,控制信号大体可以分为三类:一类是对K-box模块的控制信号,一类是对S-box模块的控制信号,一类是对寄存器堆的控制信号,这三类信号相互配合而完成了种子密钥写入、KSA和PRGA三个阶段。对于S-box模块和K-box模块,控制信号相对比较简单,仅仅需要给出对内存单元的读写控制信号,地址和数据将由寄存器堆传入。控制单元最为复杂的部分是对各个寄存器之间操作的安排。如何在KSA或PRGA中能够用尽量少的时钟周期完成一轮操作是控制单元设计主要需要面临的问题。
在本发明提出的方案中,为了让控制单元合理发出控制控制信号,来对S-box模块、K-box模块和寄存器堆进行控制,以完成数据的流动,采用组合和时序逻辑来生成控制信号,这个方法也常被称为有限状态机(Finite StateMachine,FSM)。
整个算法的流程大致可分为三个阶段:
一、密钥安装
二、密钥调度算法(KSA)
三、伪随机序列生成算法(PRGA)
RC4算法有着明显的阶段性,三个阶段的操作互不影响,相互独立,而每个阶段的最后得到的结果都是下一阶段的输入。所以,本设计采用了自底向上的设计方法:首先,利用状态机来实现每个阶段的功能,并分别进行调试,然后,三个状态线性连接起来,最后,得到完整的加密模块,并对整个加密模块进行调试。
通过对算法的详细研究,本发明提出的方案的主要工作之一是分配每个时钟周期内的操作,最终,在密钥调度算法(KSA)中,每一轮操作需要4个时钟周期,总共256轮操作共需要256×4=1024个时钟周期。在伪随机数生成算法(PRGA)中,每生成一个伪随机数需要4个时钟周期,如果总共有n字节数据需要加密(或解密)的话,加密过程总共需要4n个时钟周期能够完成。
(1)密钥安装(Key-Setup)
密钥安装阶段的实质就是密钥向K-box模块进行线性填充,设置一个寄存器k作为内存单元的指针,每次写入后进行一次自增操作,然后回到等待状态。并将输入信号key_len作为线性填充的结束,如果寄存器k自增达到key_len则完成填充,并等待ask信号,以进入KSA阶段。
密钥安装的设置主要出于以下几点考虑:
第一,由输入信号的方式给出密钥长度可以省去设置计数器来计算密钥长度,很大程度上减小了开销,也有利于优化数据通路。
第二,以字节为单位可以在密钥调度阶段直接从K-box中取出整字节,也有利于实现的效率。
第三,K-box模块容量设置为32字节是对空间和安全性的权衡,将密钥长度设置得更长确实可以增加算法的安全性,但也会消耗片上宝贵的M4K资源,将对整个系统中的其他功能造成影响,应当尽量减少其空间开销。另外,256bit的RC4算法已经足够安全,现今对于128bit的密钥尚没有有效的办法破解。
第四,传统的RC4算法通常将K-box模块设置成与S-box模块同等容量,即256字节,这个数值往往会远超过种子密钥的长度,传统的RC4算法通过重复填充种子密钥来填满K-box模块,这样做的目的在于在KSA阶段只用一个地址可以同时取出S[i]与K[i],来简化运算,而且,这个重复填充的过程如用软件实现只需要一个简单的取余操作。但是,如果用硬件实现这个线性填充的过程,不仅要花费256字节的RAM资源,而且会将密钥安装的过程增加的256个时钟周期,在时间和空间上都有很大浪费。仔细分析不难发现,只需设置一个指针k来循环取出种子密钥,可达到与传统RC4算法完全相同的效果,而且不需要设置256字节的内存资源,也节省了时钟周期,缺点是只能输入短于32字节的密钥,但对于本设计而言密钥长度已满足要求。
(2)密钥调度算法(KSA)执行阶段
密钥调度算法的作用是将S-box模块内的内容按照一定规则打乱,为下一步的PRGA做好准备。根据图3中的顺序进行调度,并将三个操作分散放在三个状态中,不会出现对RAM单元的读写冲突。
将KSA阶段组织成5个状态,每个状态占用一个时钟周期,KSA阶段的状态都带有前缀INIT_。
INIT_ADD_state状态取出S[i]送入RSi,为下一步交换操作做好准备,并实现(*)中的加法操作,以及将三个数j、S[i]、K[k]求和并送入j的缓存寄存器next_j中,其中S[i]与K[k]来自不同的RAM,可同时取出。其中S[i]为S-box模块中的数据的第i位,K[k]为输入密钥的第k位。
INIT_ADD_state为之后的下一个状态准备好了j,包括了图3中的(1)操作,即取出S[j]存入RSj。
状态INIT_SWAP_state包括了图3中的(2)操作,即将RSj存入S[i]。交换的另一半操作将被合并到下一个状态。
状态INIT_JUDGE_END_state包括了图2中的(3)操作,即将RSi存入S[j],而且,该状态同时要判断KSA的结束,并给出不同分支相应的操作。
状态INIT_FIN_state标志着KSA的结束,在状态中将把prepare_ready信号置为1,此状态将去往下一个阶段PRGA。
(3)伪随机序列生成算法(PRGA)的执行阶段
PRGA阶段与KSA阶段的操作非常相似,不同点在于在PRGA中不需要K-box模块的参与,但需要用寄存器t读出伪随机序列。所以,在PRGA过程中可以与KSA共用除寄存器k和RK以外的所有寄存器,但需增加t与next_t寄存器。
本发明提出的方案中对双口RAM的操作本着避免同一单元的读写冲突的原则,并结合算法本身的操作来设置控制信号,在出现操作同一单元时进行处理。
RC4算法的while循环中的两个步骤j=(j+S[i])mod 256和交换S[i],S[j]与KSA中for循环的两个步骤基本类似,但操作的分配却有着很大的不同,KSA中利用双口RAM的读写特性并不会对KSA的吞吐率有提升,而在PRGA中双口RAM的利用却是提高吞吐率的关键因素。
第一个周期的操作与KSA的第一个周期的操作基本相同,都是取出S[i]并计算地址j的值,状态的命名也与KSA中相应状态相似,其中操作不做赘述。
第二个周期的操作与KSA的第二个周期的操作也基本相同。但是在PRGA中的FETCH_SJ_state状态不仅包括了取出S[j]的功能,而且又在这个状态中包含了一个写操作,和一套处理读写冲突的控制方法。PRGA中有两个写操作,一个地址为i,一个地址为j,而在取出S[j]时的读地址为j,为了保证读写单元的地址不同,所以只能安排写地址为i的写操作。首先对两个地址i、j进行判断,如果二者相等,那么通过算法要求可以看出,此时对同一个单元的交换操作是毫无意义的,所以可直接跳过交换操作进入STREAM_OUT_state状态中。如果二者不等,也就意味着读写不会有冲突,可同时进行读写操作,又可见“写RSj到S[i]”无法等到S[j]的数据进入RSj后才进行,因为写入RSj要等到下一个上升沿才会进行,故需在S-box模块的读端口和写端口之间设置一条通路,将从S-box模块的j单元中读出的数据直接写回S-box的i单元。
在第二个周期中,实现了交换操作的一半,另一半交换操作将在第三个时钟周期内完成。根据第二个周期的控制方式,第三个时钟周期会有两个分支。一个叫做SWAP_state状态,另一个叫做GET_T_state状态。这两个状态有一个共同的特点,就是都有地址t的生成,区别在于,GET_T_state状态除有生成t的功能外,再无其他功能,因为i=j时并不进行交换。SWAP_state状态还包含了写入RAM的操作,以完成交换。
第四个周期被称为STREAM_OUT_state,此周期的功能在于输出密钥流和进行i的自增,由于要得到稳定的输出结果,此周期的安排应当尽量简单一些。在之前的时钟周期中,地址t已经准备好,可以直接用来生成读取S[t],并与一个字节的明文进行异或得到一个字节的密文。最后,将转回ADD_state进行下一轮的密钥生成。
控制单元按照自底向上的方法进行设计,在将三个阶段以模块的方式实现之后,进行对整个加密模块的组装,为了更好联系起三个模块的功能,和更好地对整个加密系统进行控制,在算法的开始和中间又增加了几个状态来调整整个系统的运行。增加的状态有RST_state、IDLE_state、OUT_OF_DATA_state。下面给出整个加密模块的状态转换图,为简化描述,对部分状态名称做了简写。
整个加密模块运用VHDL语言进行RC4加密模块的描述,在Quartus II9.1开发环境中完成了设计,在Synplify Pro 9.6.2软件中完成编译、综合,并利用Quartus II 9.1的仿真工具进行仿真和布局布线。最后,利用测试向量在图5中所示载有Altera Cyclone II EP2C8Q208C8芯片的FPGA开发平台上完成了验证。
下表中数据来自用Synplify Pro综合后对RC4加密模块的资源占用和时钟频率的报告。
根据报告可知,本发明完成了流密码对变长密钥的加密和解密操作,在228LE和288字节Block RAM的空间开销下,达到了149.5MHz的时钟频率和37.375MB/s的吞吐率,适用于嵌入式环境下的加密传输。
Claims (6)
1.一种RC4加密设备,其特征在于,包括:
控制单元、K-box模块、S-box模块、寄存器堆和运算器;
所述K-box模块用于保存用户设定的密钥;
所述S-box模块用于完成密钥调度和输出伪随机密钥;
所述寄存器堆用于保存密钥调度和生成伪随机密钥序列过程中产生的中间数据和需要访问的S-box中存储空间地址;
所述控制单元具有:
key_write端口,所述控制单元在所述key_write端口输入有效电平时,控K-box模块写入用户设定的密钥;
key_len端口,用于输入所述用户设定的密钥的长度信息;
ask端口,当所述ask端口输入有效电平时,触发所述控制单元控制S-box模块执行密钥调度;
prepare_ready端口,在所述S-box模块完成所述调度后,控制模块通过prepare_ready端口输出有效电平;
end_of_data端口,用于接收待加密数据输入完成指示电平;
所述RC4加密设备还具有:
Key端口,用于输入用户设定的密钥;
data_in数据输入端口,接收待加密数据;
data_out数据输出端口,将加密后的数据输出;
所述运算器用于将所述伪随机密钥与输入的所述待加密数据进行异或运算,产生所述加密后的数据。
2.如权利要求1所述的设备,其特征在于:
所述寄存器堆包括寄存器k,用于保存已经写入到所述K-box模块中的所述用户设定的密钥的位数。
3.如权利要求1所述的设备,其特征在于:
所述寄存器堆包括寄存器i、j、RSi和RSj;
所述寄存器i和j分别用于保存在S-box模块执行密钥调度时所使用到的S-box模块中的不同存储空间的地址;
所述寄存器RSi用于缓存由S-box模块存储的、所述寄存器i所保存的所述地址处的数值S[i];
所述寄存器RSj用于缓存由S-box模块存储的、所述寄存器j所保存的所述地址处的数值S[j]。
4.如权利要求1所述的设备,其特征在于:
所述寄存器堆包括寄存器t和k;
所述寄存器t用于记录所要使用的伪随机密钥在S-box模块的存储空间中的存储地址;
所述寄存器k用于记录所要使用的所述伪随机密钥,即k=S[t]。
5.如权利要求1至4中任一项所述的设备,其特征在于:
所述设备使用大规模可编程门阵列FPGA器件实现;
所述S-box模块、K-box模块由所述器件中的M4K块存储器实现。
6.如权利要求5所述的设备,其特征在于:
所述S-box模块为双口RAM;
具有一个8位异步读端口、一个8位异步写端口,读使能信号、8位宽的读地址、写使能信号、8位宽的写地址、以及读写操作共同使用的时钟信号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510015089.3A CN104539417A (zh) | 2015-01-12 | 2015-01-12 | 一种基于流密码的加密设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510015089.3A CN104539417A (zh) | 2015-01-12 | 2015-01-12 | 一种基于流密码的加密设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104539417A true CN104539417A (zh) | 2015-04-22 |
Family
ID=52854889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510015089.3A Pending CN104539417A (zh) | 2015-01-12 | 2015-01-12 | 一种基于流密码的加密设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104539417A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897407A (zh) * | 2016-06-02 | 2016-08-24 | 北京赛思信安技术股份有限公司 | 一种高速有限长度的rc4加解密装置 |
CN107026872A (zh) * | 2017-05-17 | 2017-08-08 | 成都麟成科技有限公司 | 一种防止用户个人信息破译的方法 |
CN107066900A (zh) * | 2017-04-18 | 2017-08-18 | 东南大学 | 面向分组密码算法的可重构s盒、可重构计算阵列及门控方法 |
CN107391973A (zh) * | 2017-07-17 | 2017-11-24 | 北京深思数盾科技股份有限公司 | 一种函数保护方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219045A (zh) * | 2013-06-03 | 2014-12-17 | 中国科学院上海高等研究院 | Rc4 流密码生成器 |
-
2015
- 2015-01-12 CN CN201510015089.3A patent/CN104539417A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219045A (zh) * | 2013-06-03 | 2014-12-17 | 中国科学院上海高等研究院 | Rc4 流密码生成器 |
Non-Patent Citations (3)
Title |
---|
P.KITSOS,G.KOSTOPULOUS: "《HARAWARE IMPLEMENTATION OF THE RC4 STREAM CIPHER》", 《CIRCUITS AND SYSTEM,2003 IEEE 46TH MIDWEST SYMPOSIUM ON》 * |
SOURAV SEN GUPTA,ANUPAM CHATTOPADHYAY: "《High-Performance Hardware Implementation for RC4 Stream Cipher》", 《IEEE TRANSACTION ON COMPUTER》 * |
张开,陆洪毅: "《RC4加解密算法的硬件实现》", 《未来的信息通信网络-第七届中国通信学会学术年会》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897407A (zh) * | 2016-06-02 | 2016-08-24 | 北京赛思信安技术股份有限公司 | 一种高速有限长度的rc4加解密装置 |
CN107066900A (zh) * | 2017-04-18 | 2017-08-18 | 东南大学 | 面向分组密码算法的可重构s盒、可重构计算阵列及门控方法 |
CN107026872A (zh) * | 2017-05-17 | 2017-08-08 | 成都麟成科技有限公司 | 一种防止用户个人信息破译的方法 |
CN107026872B (zh) * | 2017-05-17 | 2021-02-12 | 宁波潮涌道投资合伙企业(有限合伙) | 一种防止用户个人信息破译的方法 |
CN107391973A (zh) * | 2017-07-17 | 2017-11-24 | 北京深思数盾科技股份有限公司 | 一种函数保护方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102223228A (zh) | 基于fpga的aes加密芯片设计方法及嵌入式加密系统 | |
CN110233720A (zh) | Sm4加速处理器、方法和系统 | |
US8365111B2 (en) | Data driven logic simulation | |
US10204532B2 (en) | Multiple input cryptographic engine | |
CN101431405B (zh) | Des加密方法及其硬件电路实现方法 | |
CN103973431A (zh) | 一种基于OpenCL的AES并行化实现方法 | |
CN104539417A (zh) | 一种基于流密码的加密设备 | |
Nabil et al. | Design and implementation of pipelined and parallel AES encryption systems using FPGA | |
CN102411683A (zh) | 一种适用于嵌入式系统的基于高速缓存的aes加速器 | |
Noor et al. | Resource shared galois field computation for energy efficient AES/CRC in IoT applications | |
Plos et al. | Compact hardware implementations of the block ciphers mCrypton, NOEKEON, and SEA | |
Singh et al. | Design of high performance MIPS cryptography processor based on T-DES algorithm | |
CN101719827A (zh) | 一种基于Petri网的分组密码算法的硬件实现方法 | |
Muri et al. | Embedded Processor-In-Memory architecture for accelerating arithmetic operations | |
Agosta et al. | Exploiting bit-level parallelism in GPGPUs: A case study on KeeLoq exhaustive key search attack | |
Docherty et al. | Hardware implementation of sha-1 and sha-2 hash functions | |
Vaishnav et al. | A security library for FPGA interlays | |
Paul et al. | Hardware implementation of four byte per clock RC4 algorithm | |
Thoonen | Hardening FPGA-based AES implementations against side channel attacks based on power analysis | |
Deshpande et al. | Design of encryption system using NIOS II processor | |
CN112487448B (zh) | 一种加密信息处理装置、方法及计算机设备 | |
Gürkaynak et al. | Design challenges for a differential-power-analysis aware GALS-based AES crypto ASIC | |
Perrone | Characterization and Performance Evaluation of Programmable Logic-in-Memory architectures | |
RU2689433C1 (ru) | Вычислительный модуль и способ обработки с использованием такого модуля | |
US20150110267A1 (en) | Unified Key Schedule Engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150422 |