CN104219045B - Rc4 流密码生成器 - Google Patents

Rc4 流密码生成器 Download PDF

Info

Publication number
CN104219045B
CN104219045B CN201310217545.3A CN201310217545A CN104219045B CN 104219045 B CN104219045 B CN 104219045B CN 201310217545 A CN201310217545 A CN 201310217545A CN 104219045 B CN104219045 B CN 104219045B
Authority
CN
China
Prior art keywords
output
key
level
key vector
vector
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.)
Active
Application number
CN201310217545.3A
Other languages
English (en)
Other versions
CN104219045A (zh
Inventor
吴淼
张钊锋
梅年松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Advanced Research Institute of CAS
Original Assignee
Shanghai Advanced Research Institute of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Advanced Research Institute of CAS filed Critical Shanghai Advanced Research Institute of CAS
Priority to CN201310217545.3A priority Critical patent/CN104219045B/zh
Publication of CN104219045A publication Critical patent/CN104219045A/zh
Application granted granted Critical
Publication of CN104219045B publication Critical patent/CN104219045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种RC4流密码生成器,K‑box模块将M*N比特的原始密钥Key的各位按设定规则组合为F组一级秘钥矢量,每一组一级秘钥矢量包括2N个N比特位宽的二级密钥矢量,并将各组一级秘钥矢量及其二级密钥矢量依序输出,生成的流密码以N比特位宽的格式进行输出,由于原始密钥分为多个二级密钥矢量,每个二级密钥矢量较短,每次RC4运算使用的输出密钥宽度仅为一个二级密钥矢量的宽度,所以S‑box模块中可以采用几个较短长度的寄存器的替代常规的1字节×256的RAM阵列;并且由于每一组一级秘钥矢量的RC4运算输出的流密码的较短,用较小的寄存器即可实现暂存,不需要使用较大容量的RAM模块进行流密码的暂存,大大减小了硬件资源消耗。

Description

RC4 流密码生成器
技术领域
本发明涉及信息安全技术,特别涉及一种RC4流密码生成器。
背景技术
在诸多信息产品设计中,不得不考虑信息传输的安全加密问题,使用硬件进行加密是高效、安全的解决方法。RC4流密码在当前的实际应用中占有重要地位,可以利用其来对传输的信息进行加密。
RC4是一种分组对称加密算法,具有安全性高、实现简单等优点,广泛应用于无线网络安全中。RC4加密的基本思想是,生成一个叫流密码的伪随机序列字节流,然后与明文数据相异或,生成密文。解密算法与加密算法一致,使用相同的流密码与密文异或得到明文。RC4加密算法关键在于生成伪随机的流密码。
RC4实际上包含两个算法:一个是密钥调度算法(Key Scheduling Algorithm),它是将RC4加密密钥(64位或128位)按一定算法与S-BOX中的初始状态S{0,1,…,N-1)运算,得到新的置乱后的状态序列。
具体说,这个算法的步骤是:
1)建立一个1字节×256的阵列,称为S-BOX,先用0-255按顺序依次填充S-BOX。然后再建立一个1字节×256的阵列,叫做K-BOX,用RC4加密密钥(64位或128位)顺序填充K-BOX,密钥用完后重复使用直到填满为止。
2)将S-BOX中的每个字节依次(从第1个字节开始)与S-BOX中的另外一个字节(该字节的地址由特定算法给出)互换,完成S-BOX的初始化。密钥调度算法的伪代码描述如下,其中,S[i]是S-BOX中第i个单元的值,S[j]是S-BOX中第j个单元的值:
另一个算法是伪随机序列产生算法(Pseudo-Random Generation Algorithm),是利用上一步产生的打乱后的S-BOX来产生一个伪随机序列,使用该随机序列加/解密数据。算法的伪代码描述如下,其中Z[i]即为生成的流密码:
传统的RC4加/解密装置设计方式,如《信息通信》2009年第6期的“RC4流密码原理与硬件实现”(作者:杨梅张耀文)公开的RC4加/解密装置,流密码生成速度较慢,而且需要有较大容量的RAM模块用于S-BOX数据保存及流密码的缓存,硬件资源消耗较大,不利于在低成本无源RFID(Radio Frequency Identification,射频识别)标签等低成本的设计中推广使用。
发明内容
本发明要解决的技术问题是提供一种RC4流密码生成器,硬件资源消耗小,流密码生成速度快。
为解决上述技术问题,本发明提供的RC4流密码生成器,其包括K-box模块、S-box模块、j运算单元、q运算单元、输出控制逻辑模块、主控制逻辑模块;
所述K-box模块,用于存储M*N比特的原始密钥,并在主控制逻辑模块和S-box模块作用下将M*N比特的原始密钥的各位按设定规则组合为F组一级秘钥矢量,每一组一级秘钥矢量包括2N个N比特位宽的二级密钥矢量,将各组一级秘钥矢量及其二级密钥矢量依序输出;N为正整数,M为大于等于2的整数并且M*N小等于256,F为正整数且F*2N大于等于M;
所述S-box模块,包括2N个宽度至少为N比特的寄存器,并根据j、q,计算更新所述2N个寄存器的值,并控制输出S[i]到所述j运算单元,输出S[j]、S[q]到所述q运算单元,输出S[q]到所述输出控制逻辑模块;S[i]表示S-box模块的第i个寄存器中的N比特值,S[j]表示S-box模块的第j个寄存器中的N比特值,S[q]表示S-box模块 的第q个寄存器中的N比特值;
所述j运算单元,用于计算输出对应于sskey[f][h]及S[i]的j,sskey[f][h]为第f组一级秘钥矢量中的第h个N比特位宽的二级密钥矢量;f为0到F-1的整数,h为0到2N-1的整数;
所述q运算单元,用于根据所述S-box模块输出的S[i]、S[j]计算输出q;
所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量的2N个S[q],并以第二时钟将缓存的2N个S[q]作为对应于该组一级秘钥矢量的流密码依序输出;
所述主控制逻辑模块,用于根据外部控制信号,控制所述K-box模块、S-box模块、输出控制逻辑模块开始或停止工作。
较佳的,所述K-box模块、S-box模块、主控制逻辑模块的工作时钟为第一时钟;
第二时钟的周期大于等于第一时钟的周期的5倍。
较佳的,M*N比特的原始密钥产生流密码,按如下标准的RC4伪代码规则进行运算:
一.为f赋初值,f=0;
二.为S[i]赋初值,S[i]=i,i为0到2N-1的整数;
三.为i、j、h赋初值,i=0,j=0;
四.j={j+S[i]+sskey[f][i]}mod 2N
五.交换S[i]、S[j];
六.i自增1,如果i<2N,进行步骤四,否则进行步骤七;
七.为i、j、h赋初值,i=0,j=0,h=0;
八.i=(i+1)mod 2N
九.j=(j+S[i])mod 2N
十.交换S[i]、S[j];
十一.q=(S[i]+S[j])mod 2N
十二.Z[f][h]=S[q];
十三.h自增1,如果h<2N,进行步骤八,否则进行步骤十四;
十四.f自增1,如果f<F,进行步骤二;否则结束。
较佳的,M为16,N为2,F为8。
较佳的,所述S-box模块,包括S-box寄存器、RC4处理逻辑单元、交换逻辑单元。
所述S-box寄存器,包括4个宽度为2比特的寄存器;
所述RC4处理逻辑单元,根据i、j、q值及加密控制信号、第一时钟控制所述S-box寄存器输出相应寄存器的值S[i]、S[j]、S[q];
所述RC4处理逻辑单元,当加密控制信号为二进制0001到1000时工作,在加密控制信号为二进制1001时停止工作;
所述RC4处理逻辑单元,在开始工作时,输出二级密钥矢量更新标记为二进制00,并且每输出一次S[q]使输出的二级密钥矢量更新标记加1;
所述RC4处理逻辑单元,当输出的二级密钥矢量更新标记由二进制11变为二进制00后,输出一个一级密钥矢量更新信号;
所述交换逻辑单元,根据第一时钟,将所述S-box寄存器的相应寄存器输出的值S[i]、S[j]互换后写入所述S-box寄存器的相应寄存器;
所述K-box模块,当加密控制信号为二进制0001到1000时,相应控制输出第0组一级秘钥矢量到第7组一级秘钥矢量,当二级密钥矢量更新标记加1时,相应控制输出当前一组一级秘钥矢量中的下一个二级密钥矢量;
所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量的4个S[q],并以第二时钟将缓存的4个S[q]作为对应于该组一级秘钥矢量的流密码依序输出;
所述主控制逻辑模块,根据第一时钟、外部控制信号、一级密钥矢量更新信号,产生加密控制信号,控制所述K-box模块、S-box模块、输出控制逻辑模块工作。
较佳的,所述设定规则,为顺序分组或间隔分组。
本发明的RC4流密码生成器,K-box模块将M*N比特的原始密钥Key的各位按设定规则组合为F组一级秘钥矢量skey,每一组一级秘钥矢量skey包括2N个N比特位宽的二级密钥矢量sskey,并将各组一级秘钥矢量skey及其二级密钥矢量sskey依序输出,生成的流密码以N比特位宽的格式进行输出,由于原始密钥Key分为多个(F*2N段)二级密钥矢量sskey,每个二级密钥矢量sskey较短,每次RC4运算使用的输出密钥宽度仅为一个二级密钥矢量sskey的宽度(N比特),所以S-box模块中可以采用几个(2N个)较短长度(N比特)的寄存器的替代常规的1字节×256的RAM阵列;并且由于每一组一级秘钥矢量skey的RC4运算输出的流密码的较短(2N*N比特),用较小的寄存器即可实现暂存,不需要使用较大容量的RAM模块进行流密码的暂存,大大减小了硬件资源消耗,利于在低成本无源RFID(射频识别)标签等低成本的设计中推广使用。
附图说明
为了更清楚地说明本发明的技术方案,下面对本发明所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的RC4流密码生成器一实施例示意图
图2是本发明的RC4流密码生成器一实施例的一组一级秘钥矢产生流密码的流程图;
图3是RC4流密码加/解密整体示意图;
图4是本发明的RC4流密码生成器一实施例产生流密码对明文流进行加密的时序图;
图5是本发明的RC4流密码生成器一实施例的S-box模块示意图。
具体实施方式
下面将结合附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例一
RC4流密码生成器,如图1所示,包括K-box模块、S-box模块、j运算单元、q运算单元、输出控制逻辑模块、主控制逻辑模块;
所述K-box模块,用于存储M*N比特的原始密钥Key,并在主控制逻辑模块和S-box模块作用下将M*N比特的原始密钥的各位按设定规则(设定规则可以随意设定,只要加密和解密过程中的RC4流密码生成器的设定规则相同即可,如M*N比特的原始密钥Key可以顺序分组、间隔分组等)组合为F组一级秘钥矢量skey,每一组一级秘钥矢量skey包括2N个N比特位宽的二级密钥矢量sskey,并将各组一级秘钥矢量skey及其二级密钥矢量sskey依序输出;N为正整数,M为大于等于2的整数并且M*N小等于256,F为正整数且F*2N大于等于M;
所述S-box模块,包括2N个宽度至少为N比特的寄存器,并根据j、q,计算更新所述2N个寄存器的值,并控制输出S[i]到所述j运算单元,输出S[j]、S[q]到所述q运算单元,输出S[q]到所述输出控制逻辑模块;S[i]表示S-box模块的第i个寄存器中 的N比特值,S[j]表示S-box模块的第j个寄存器中的N比特值,S[q]表示S-box模块的第q个寄存器中的N比特值;
所述j运算单元,用于计算输出对应于sskey[f][h]及S[i]的j,sskey[f][h]为第f组一级秘钥矢量skey中的第h个N比特位宽的二级密钥矢量sskey;f为0到F-1的整数,h为0到2N-1的整数;
所述q运算单元,用于根据所述S-box模块输出的S[i]、S[j]计算输出q;
所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量skey的2N个S[q],并以第二时钟clk2将缓存的2N个S[q]作为对应于该组一级秘钥矢量skey的流密码依序输出;
所述主控制逻辑模块,用于根据外部控制信号ex_ctr1,控制所述K-box模块、S-box模块、输出控制逻辑模块开始或停止工作。
较佳的,所述K-box模块、S-box模块、主控制逻辑模块的工作时钟为第一时钟clk1,第二时钟clk2的周期大于等于第一时钟的周期T的5倍。
较佳的,M*N比特的原始密钥产生流密码,如图2所示,按如下标准的RC4伪代码规则进行运算:
一.为f赋初值,f=0;
二.为S[i]赋初值,S[i]=i,i为0到2N-1的整数;
三.为i、j、h赋初值,i=0,j=0;
四.j={j+S[i]+sskey[f][i]}mod 2N
五.交换S[i]、S[j];
六.i自增1,如果i<2N,进行步骤四,否则进行步骤七;
七.为i、j、h赋初值,i=0,j=0,h=0;
八.i=(i+1)mod 2N
九.j=(j+S[i])mod 2N
十.交换S[i]、S[j];
十一.q=(S[i]+S[j])mod 2N
十二.Z[f][h]=S[q];
十三.h自增1,如果h<2N,进行步骤八,否则进行步骤十四;
十四.f自增1,如果f<F,进行步骤二;否则结束。
实施例一的RC4流密码生成器,K-box模块将M*N比特的原始密钥Key的各位按设定规则组合为F组一级秘钥矢量skey,每一组一级秘钥矢量skey包括2N个N比特位宽的二级密钥矢量sskey,并将各组一级秘钥矢量skey及其二级密钥矢量sskey依序输出,生成的流密码以N比特位宽的格式进行输出,由于原始密钥Key分为多个(F*2N段)二级密钥矢量sskey,每个二级密钥矢量sskey较短,每次RC4运算使用的输出密钥宽度仅为一个二级密钥矢量sskey的宽度(N比特),所以S-box模块中可以采用几个(2N个)较短长度(N比特)的寄存器的替代常规的1字节×256的RAM阵列;并且由于每一组一级秘钥矢量skey的RC4运算输出的流密码的较短(2N*N比特),用较小的寄存器即可实现暂存,不需要使用较大容量的RAM模块进行流密码的暂存,大大减小了硬件资源消耗,利于在低成本无源RFID(射频识别)标签等低成本的设计中推广使用。
实施例一的RC4流密码生成器,如图2所示,产生运算结果过程中,用于进行初始化的1阶段的循环次数为2N,用于生成流密码的2阶段的循环次数为2N,由于未使用RAM阵列,数据交换直接在寄存器中进行,1阶段中每次循环只需二个第一时钟clk1的时钟周期,2阶段中产生一次运算结果S[q]只需三个第一时钟clk1的时钟周期,即产生一组一级密钥矢量skey的流密码所需要用的时间是5*2N个第一时钟clk1周期,产生F*2N*N比特的流密码所需要用的时间是F*5*2N个第一时钟clk1的时钟周期,所以实施例一的RC4流密码生成器能较快地生成流密码。
如图3所示,实施例一的RC4流密码生成器,得到密钥源提供的原始密钥,并生成流密码,流密码输出后与明文流进行加密得到密文流,解密亦如此。流密码和明文流位宽均为N比特。
实施例二
基于实施例一的RC4流密码生成器,原始密钥Key为32比特,M为16,N为2,F为8。
所述K-box模块,在主控制逻辑模块的加密控制信号ctrl的作用下,依次更新8组一级秘钥矢量skey:并在所述S-box模块的二级密钥矢量更新标记flag的作用下,依次更新输出当前一级秘钥矢量skey中的下一个二级密钥矢量sskey;
一种间隔分组的设定规则如下:
skey[0]={key[0],key[2],…,key[14]};
skey[1]={key[16],key[18],…,key[30]};
skey[2]={key[1],key[3],…,key[15]};
skey[3]={key[17],key[19],…,key[31]};
skey[4]={key[0],key[1],…,key[7]};
skey[5]={key[8],key[9],…,key[15]};
skey[6]={key[16],key[17],…,key[23]};
skey[7]={key[24],key[17],…,key[31]};
sskey[f][0]={skey[f][0],skey[f][1]};
sskey[f][1]={skey[f][2],skey[f][3]};
sskey[f][2]={skey[f][4],skey[f][5]};
sskey[f][3]={skey[f][6],skey[f][7]};
一种顺序分组的设定规则如下:
skey[0]={key[0],key[1],…,key[7]};
skey[1]={key[8],key[9],…,key[15]};
skey[2]={key[16],key[17],…,key[23]};
skey[3]={key[24],key[25],…,key[31]};
skey[4]={key[0],key[1],…,key[7]};
skey[5]={key[8],key[9],…,key[15]};
skey[6]={key[16],key[17],…,key[23]};
skey[7]={key[24],key[25],…,key[31]};
sskey[f][0]={skey[f][0],skey[f][1]};
sskey[f][1]={skey[f][2],skey[f][3]};
sskey[f][2]={skey[f][4],skey[f][5]};
sskey[f][3]={skey[f][6],skey[f][7]};
其中key[0]到key[31]表示原始密钥key的第0位到第31位;skey[0]到skey[7]表示第0组到第7组一级秘钥矢量;skey[f][0]到skey[f][7]表示第f组一级秘钥矢量的第0位到第7位;sskey[f][0]到sskey[f][3]表示第f组一级秘钥矢量中的第0个到第3个二级秘钥矢量。
实施例二中,32比特的原始密钥key产生64比特流密码Z,按如下标准的RC4伪代码规则进行运算:
实施例二的RC4流密码生成器,所述K-box模块存储32比特的原始密钥Key,并在主控制逻辑模块和S-box模块作用下,按顺序分8次更新8组8比特的一级密钥矢量sskey,并按顺序分4次更新输出每组一级密钥矢量skey中的4个2比特的二级密钥矢量sskey,共32次更新2比特的二级密钥矢量sskey值;S-box模块将每次RC4运算得到的2bit的结果输出到输出控制逻辑模块,输出控制逻辑模块暂存对应于同一组一级密钥矢量skey的8bit的运算结果(4次RC4运算的结果),在第二时钟clk2作用下进行移位操作输出2bit位宽的流密码,相应32比特的原始密钥Key共输出64比特流 密码。产生运算结果过程中,产生一组一级密钥矢量skey的流密码所需要用的时间是20个第一时钟clk1周期,产生64比特流密码所需要用的时间是160个第一时钟clk1的时钟周期。
实施例三
基于实施例二的RC4流密码生成器,S-box模块,如图5所示,包括S-box寄存器、RC4处理逻辑单元、交换逻辑单元;
所述S-box寄存器,包括4个宽度为2比特的寄存器,其中4个的寄存器的值分别表示为S[0]、S[1]、S[2]、S[3];
所述RC4处理逻辑单元,根据i、j、q值及加密控制信号ctrl、第一时钟clk1控制所述S-box寄存器输出相应寄存器的值S[i]、S[j]、S[q];
所述RC4处理逻辑单元,当加密控制信号ctrl为二进制0001到1000时工作,在加密控制信号ctrl为二进制1001时停止工作;
所述RC4处理逻辑单元,在开始工作时,输出二级密钥矢量更新标记flag为二进制00,并且每输出一次S[q]使输出的二级密钥矢量更新标记flag加1;二级密钥矢量更新标记flag表示是否完成二级密钥矢量sskey的RC4运算;
所述RC4处理逻辑单元,当输出的二级密钥矢量更新标记flag由二进制11变为二进制00(即二级密钥矢量更新标记flag变化4次,所述RC4处理逻辑单元输出一组一级密钥矢量的4次S[q])后,输出一个一级密钥矢量更新信号over;
所述交换逻辑单元,根据第一时钟clk1,将所述S-box寄存器的相应寄存器输出的值S[i]、S[j]互换后写入所述S-box寄存器的相应寄存器;
所述K-box模块,在加密控制信号ctrl为二进制1001时停止工作,当加密控制信号ctrl为二进制0001到1000时工作,相应控制输出第0组一级秘钥矢量skey到第7组一级秘钥矢量skey,当二级密钥矢量更新标记flag加1时,相应控制输出当前一组一级秘钥矢量skey中的下一个二级密钥矢量sskey;
所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量skey的4个S[q],并以第二时钟clk2将缓存的4个S[q]作为对应于该组一级秘钥矢量skey的流密码依序输出;
所述主控制逻辑模块,作为RC4流密码生成器的顶层控制单元,根据第一时钟clk1、外部控制信号ex_ctrl、一级密钥矢量更新信号over,产生加密控制信号ctrl,控制所述K-box模块、S-box模块、输出控制逻辑模块工作,控制是否开始或停止流密码生成。 加密控制信号ctrl的初值为二进制0000,当外部控制信号ex_ctrl有效时,每产生一个一级密钥矢量更新信号Over,加密控制信号ctrl二进制加1;
利用实施例三的RC4流密码生成器产生流密码对明文流进行加密的时序如图4所示,流密码产生器的工作时钟(第一时钟clk1)周期为T,明文流信号的时钟(第二时钟clk2)周期为5T,明文流和流密码以2比特位宽的格式进行输出,明文流的输入比产生的流密码晚4个第二时钟clk2的时钟周期,在第二时钟clk2控制下对明文流和流密码异或得到密文流,密文流在明文流输入后晚1个第二时钟clk2的时钟周期同步输出。
二级密钥矢量更新标记flag表示是否完成一个二级密钥矢量sskey的RC4运算,变化时更新二级密钥矢量sskey值,二级密钥矢量更新标记flag在l阶段(初始化阶段)每2个第一工作时钟clk1的时钟周期更新其值,为的是使二级密钥矢量sskey的值进行更新(在1阶段中求j的值);flag值为00时,sskey=sskey[f][0];flag值为01时,sskey=sskey[f][1];flag值为10时,sskey=sskey[f][2];flag值为11时,sskey=sskey[f][3];
加密控制信号ctrl表示是否进行一组一级密钥矢量skey的RC4运算。加密控制信号ctrl控制是否开始或结束加密运算;加密控制信号ctrl初值为0000,加密控制信号ctrl置位为0001时表示开始加密第0组一级密钥矢量skey[0],加密控制信号ctr1置位为0010时表示开始加密第1组一级密钥矢量skey[1];加密控制信号ctrl置位为1001时结束加密;
当外部控制信号ex_ctrl有效允许开始加密,且产生一级密钥矢量更新信号Over时,加密控制信号ctrl进行加1操作。
外部控制信号ex_ctrl,控制RC4流密码生成器是否开始产生流密码。
复位信号nrst用于控制RC4流密码生成器复位。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (6)

1.一种RC4流密码生成器,其特征在于,包括K-box模块、S-box模块、j运算单元、q运算单元、输出控制逻辑模块、主控制逻辑模块;
所述K-box模块,用于存储M*N比特的原始密钥,并在主控制逻辑模块和S-box模块作用下将M*N比特的原始密钥的各位按设定规则组合为F组一级秘钥矢量,每一组一级秘钥矢量包括2N个N比特位宽的二级密钥矢量,将各组一级秘钥矢量及其二级密钥矢量依序输出;N为正整数,M为大于等于2的整数并且M*N小等于256,F为正整数且F*2N大于等于M;
所述S-box模块,包括2N个宽度至少为N比特的寄存器,并根据j、q,计算更新所述2N个寄存器的值,并控制输出S[i]到所述j运算单元,输出S[j]、S[q]到所述q运算单元,输出S[q]到所述输出控制逻辑模块;S[i]表示S-box模块的第i个寄存器中的N比特值,S[j]表示S-box模块的第j个寄存器中的N比特值,S[q]表示S-box模块的第q个寄存器中的N比特值;i为0到2N-1的整数,j为0到2N-1的整数,q为0到2N-1的整数;
所述j运算单元,用于计算输出对应于sskey[f][h]及S[i]的j,sskey[f][h]为第f组一级秘钥矢量中的第h个N比特位宽的二级密钥矢量;f为0到F-1的整数,h为0到2N-1的整数;
所述q运算单元,用于根据所述S-box模块发送来的S[i]、S[j]计算输出q;
所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量的2N个S[q],并以第二时钟将缓存的2N个S[q]作为对应于该组一级秘钥矢量的流密码依序输出;
所述主控制逻辑模块,用于根据外部控制信号,控制所述K-box模块、S-box模块、输出控制逻辑模块开始或停止工作。
2.根据权利要求1所述的RC4流密码生成器,其特征在于,
所述K-box模块、S-box模块、主控制逻辑模块的工作时钟为第一时钟;
第二时钟的周期大于等于第一时钟的周期的5倍。
3.根据权利要求2所述的RC4流密码生成器,其特征在于,
M*N比特的原始密钥产生流密码,按如下标准的RC4伪代码规则进行运算:
一.为f赋初值,f=0;
二.为S[i]赋初值,S[i]=i,i为0到2N-1的整数;
三.为i、j、h赋初值,i=0,j=0;
四.j={j+S[i]+sskey[f][i]}mod 2N
五.交换S[i]、S[j];
六.i自增1,如果i<2N,进行步骤四,否则进行步骤七;
七.为i、j、h赋初值,i=0,j=0,h=0;
八.i=(i+1)mod 2N
九.j=(j+S[i])mod 2N
十.交换S[i]、S[j];
十一.q=(S[i]+S[j])mod 2N
十二.Z[f][h]=S[q];
十三.h自增1,如果h<2N,进行步骤八,否则进行步骤十四;
十四.f自增1,如果f<F,进行步骤二;否则结束。
4.根据权利要求3所述的RC4流密码生成器,其特征在于,
M为16,N为2,F为8。
5.根据权利要求4所述的RC4流密码生成器,其特征在于,
所述S-box模块,包括S-box寄存器、RC4处理逻辑单元、交换逻辑单元;
所述S-box寄存器,包括4个宽度为2比特的寄存器;
所述RC4处理逻辑单元,根据i、j、q值及加密控制信号、第一时钟控制所述S-box寄存器输出相应寄存器的值S[i]、S[j]、S[q];
所述RC4处理逻辑单元,当加密控制信号为二进制0001到1000时工作,在加密控制信号为二进制1001时停止工作;
所述RC4处理逻辑单元,在开始工作时,输出二级密钥矢量更新标记为二进制00,并且每输出一次S[q]使输出的二级密钥矢量更新标记加1;
所述RC4处理逻辑单元,当输出的二级密钥矢量更新标记由二进制11变为二进制00后,输出一个一级密钥矢量更新信号;
所述交换逻辑单元,根据第一时钟,将所述S-box寄存器的相应寄存器输出的值S[i]、S[j]互换后写入所述S-box寄存器的相应寄存器;
所述K-box模块,当加密控制信号为二进制0001到1000时,相应控制输出第0组一级秘钥矢量到第7组一级秘钥矢量,当二级密钥矢量更新标记加1时,相应控制输出当前一组一级秘钥矢量中的下一个二级密钥矢量;
所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量的4个S[q],并以第二时钟将缓存的4个S[q]作为对应于该组一级秘钥矢量的流密码依序输出;
所述主控制逻辑模块,根据第一时钟、外部控制信号、一级密钥矢量更新信号,产生加密控制信号,控制所述K-box模块、S-box模块、输出控制逻辑模块工作。
6.根据权利要求1到5任一项所述的RC4流密码生成器,其特征在于,
所述设定规则,为顺序分组或间隔分组。
CN201310217545.3A 2013-06-03 2013-06-03 Rc4 流密码生成器 Active CN104219045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310217545.3A CN104219045B (zh) 2013-06-03 2013-06-03 Rc4 流密码生成器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310217545.3A CN104219045B (zh) 2013-06-03 2013-06-03 Rc4 流密码生成器

Publications (2)

Publication Number Publication Date
CN104219045A CN104219045A (zh) 2014-12-17
CN104219045B true CN104219045B (zh) 2018-11-09

Family

ID=52100210

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310217545.3A Active CN104219045B (zh) 2013-06-03 2013-06-03 Rc4 流密码生成器

Country Status (1)

Country Link
CN (1) CN104219045B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104539417A (zh) * 2015-01-12 2015-04-22 浪潮(北京)电子信息产业有限公司 一种基于流密码的加密设备
DE102015213300A1 (de) * 2015-07-15 2017-01-19 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Erzeugung einer Geräte-spezifischen Kennung und Geräte umfassend einen personalisierten programmierbaren Schaltungsbaustein
CN105897407A (zh) * 2016-06-02 2016-08-24 北京赛思信安技术股份有限公司 一种高速有限长度的rc4加解密装置
CN108830207A (zh) * 2018-06-06 2018-11-16 成都邑教云信息技术有限公司 一种互联网教育告警系统
CN114553424B (zh) * 2022-02-21 2024-03-15 南京航空航天大学 Zuc-256流密码轻量级硬件系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804355B1 (en) * 2000-01-06 2004-10-12 Intel Corporation Block cipher for small selectable block sizes
CN101006677A (zh) * 2004-06-18 2007-07-25 萨热姆防务安全公司 用于实施加密运算的方法和装置
WO2009044150A1 (en) * 2007-10-04 2009-04-09 The University Of Newcastle Upon Tyne Aes algorithm processing method and processors resistant to differential power analysis attack
CN102752107A (zh) * 2011-04-19 2012-10-24 中国科学院微电子研究所 实现rc4加/解密的装置及其方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6804355B1 (en) * 2000-01-06 2004-10-12 Intel Corporation Block cipher for small selectable block sizes
CN101006677A (zh) * 2004-06-18 2007-07-25 萨热姆防务安全公司 用于实施加密运算的方法和装置
WO2009044150A1 (en) * 2007-10-04 2009-04-09 The University Of Newcastle Upon Tyne Aes algorithm processing method and processors resistant to differential power analysis attack
CN102752107A (zh) * 2011-04-19 2012-10-24 中国科学院微电子研究所 实现rc4加/解密的装置及其方法

Also Published As

Publication number Publication date
CN104219045A (zh) 2014-12-17

Similar Documents

Publication Publication Date Title
CN105490802B (zh) 基于gpu的改进sm4并行加解密通信方法
CN104219045B (zh) Rc4 流密码生成器
CN104639314A (zh) 基于aes加密/解密算法的装置和流水控制方法
CN104065473A (zh) Sm4分组密码算法s盒的紧凑实现方法
Lamba Design and analysis of stream cipher for network security
CN101431405B (zh) Des加密方法及其硬件电路实现方法
CN109617671A (zh) 加解密、扩展方法及装置、加解密系统、终端
CN109495242A (zh) 一种数据加密方法及数据加密设备
CN107483182B (zh) 一种基于乱序执行的面向aes算法的抗功耗攻击方法
WO2012132621A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
CN104486068A (zh) 基于非线性循环移位寄存器的流密码算法snrr
CN102752107B (zh) 实现rc4加/解密的装置及其方法
CN108183790A (zh) 一种aes加密装置、芯片及系统
CN103746796A (zh) 一种实现智能卡sm4密码算法的协处理器
CN109218008A (zh) 一种针对sm4密钥扩展算法的模板攻击方法
CN104883257A (zh) 一种大数据加密方法
CN109150497A (zh) 一种高性能小面积的xts-sm4加密电路
Hashim et al. Design and implementation of proposed 320 bit RC6-cascaded encryption/decryption cores on altera FPGA
CN107707352B (zh) 一种嵌入式加密方法
CN104219043B (zh) 一种可预置和重构的密钥装置及运行方法
CN113949504A (zh) 一种适用于移动设备的高速sm4密码算法电路
CN105553647A (zh) 基于非线性循环移位寄存器的轻量级流密码技术lsnr2
Chugunkov et al. Issues of increasing the efficiency of replacement blocks for cryptoalgorithms round functions
Kun et al. An improved AES algorithm based on chaos
Mahantesh et al. Design of secured block ciphers present and hight algorithms and its fpga implementation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant