RC4 流密码生成器制造技术

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

【技术实现步骤摘要】
RC4流密码生成器
本专利技术涉及信息安全技术,特别涉及一种RC4流密码生成器。
技术介绍
在诸多信息产品设计中,不得不考虑信息传输的安全加密问题,使用硬件进行加密是高效、安全的解决方法。RC4流密码在当前的实际应用中占有重要地位,可以利用其来对传输的信息进行加密。RC4是一种分组对称加密算法,具有安全性高、实现简单等优点,广泛应用于无线网络安全中。RC4加密的基本思想是,生成一个叫流密码的伪随机序列字节流,然后与明文数据相异或,生成密文。解密算法与加密算法一致,使用相同的流密码与密文异或得到明文。RC4加密算法关键在于生成伪随机的流密码。RC4实际上包含两个算法:一个是密钥调度算法(KeySchedulingAlgorithm),它是将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-RandomGenerationAlgorithm),是利用上一步产生的打乱后的S-BOX来产生一个伪随机序列,使用该随机序列加/解密数据。算法的伪代码描述如下,其中Z[i]即为生成的流密码:传统的RC4加/解密装置设计方式,如《信息通信》2009年第6期的“RC4流密码原理与硬件实现”(作者:杨梅张耀文)公开的RC4加/解密装置,流密码生成速度较慢,而且需要有较大容量的RAM模块用于S-BOX数据保存及流密码的缓存,硬件资源消耗较大,不利于在低成本无源RFID(RadioFrequencyIdentification,射频识别)标签等低成本的设计中推广使用。
技术实现思路
本专利技术要解决的技术问题是提供一种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]}mod2N;五.交换S[i]、S[j];六.i自增1,如果i<2N,进行步骤四,否则进行步骤七;七.为i、j、h赋初值,i=0,j=0,h=0;八.i=(i+1)mod2N;九.j=(j+S[i])mod2N;十.交换S[i]、S[j];十一.q=(S[i]+S[j])mod2N;十二.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运算使用的输出密钥宽度仅为一个二级本文档来自技高网
...

【技术保护点】
一种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模块、输出控制逻辑模块开始或停止工作。...

【技术特征摘要】
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]}mod2N;五....

【专利技术属性】
技术研发人员:吴淼张钊锋梅年松
申请(专利权)人:中国科学院上海高等研究院
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1