Rc4流密码生成器的制造方法

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

【技术领域】
[0001] 本发明涉及信息安全技术,特别涉及一种RC4流密码生成器。

【背景技术】
[0002] 在诸多信息产品设计中,不得不考虑信息传输的安全加密问题,使用硬件进行加 密是高效、安全的解决方法。RC4流密码在当前的实际应用中占有重要地位,可以利用其来 对传输的信息进行加密。
[0003] RC4是一种分组对称加密算法,具有安全性高、实现简单等优点,广泛应用于无线 网络安全中。RC4加密的基本思想是,生成一个叫流密码的伪随机序列字节流,然后与明文 数据相异或,生成密文。解密算法与加密算法一致,使用相同的流密码与密文异或得到明 文。RC4加密算法关键在于生成伪随机的流密码。
[0004] RC4实际上包含两个算法:一个是密钥调度算法(Key Scheduling Algorithm),它 是将RC4加密密钥(64位或128位)按一定算法与S-B0X中的初始状态S{0,1,…,N-l) 运算,得到新的置乱后的状态序列。
[0005] 具体说,这个算法的步骤是:
[0006] 1)建立一个1字节X 256的阵列,称为S-B0X,先用0-255按顺序依次填充S-B0X。 然后再建立一个1字节X 256的阵列,叫做Κ-Β0Χ,用RC4加密密钥(64位或128位)顺序 填充Κ-Β0Χ,密钥用完后重复使用直到填满为止。
[0007] 2)将S-B0X中的每个字节依次(从第1个字节开始)与S-B0X中的另外一个字 节(该字节的地址由特定算法给出)互换,完成S-B0X的初始化。密钥调度算法的伪代码 描述如下,其中,S[i]是S-B0X中第i个单元的值,S[j]是S-B0X中第j个单元的值:
[0008]

【权利要求】
1. 一种RC4流密码生成器,其特征在于,包括K-b〇X模块、S-b〇X模块、j运算单元、q运 算单元、输出控制逻辑模块、主控制逻辑模块; 所述K-box模块,用于存储M*N比特的原始密钥,并在主控制逻辑模块和S-box模块作 用下将M*N比特的原始密钥的各位按设定规则组合为F组一级秘钥矢量,每一组一级秘钥 矢量包括2N个N比特位宽的二级密钥矢量,将各组一级秘钥矢量及其二级密钥矢量依序输 出;N为正整数,Μ为大于等于2的整数并且M*N小等于256, F为正整数且F*2N大于等于 Μ ; 所述S-box模块,包括2ν个宽度至少为Ν比特的寄存器,并根据j、q,计算更新所述2ν 个寄存器的值,并控制输出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-l的整数,h为0到 2Ν_1的整数; 所述q运算单元,用于根据所述S-box模块输出的S [i]、S [ j]计算输出q ; 所述输出控制逻辑模块,用于缓存所述S-box模块输出的对应于一组一级秘钥矢量的 2N个S[q],并以第二时钟将缓存的2N个S[q]作为对应于该组一级秘钥矢量的流密码依序 输出; 所述主控制逻辑模块,用于根据外部控制信号,控制所述κ-box模块、s-box模块、输出 控制逻辑模块开始或停止工作。
2. 根据权利要求1所述的RC4流密码生成器,其特征在于, 所述K-box模块、S-box模块、主控制逻辑模块的工作时钟为第一时钟; 第二时钟的周期大于等于第一时钟的周期的5倍。
3. 根据权利要求2所述的RC4流密码生成器,其特征在于, M*N比特的原始密钥产生流密码,按如下标准的RC4伪代码规则进行运算: 一·为f赋初值,f = 〇; 二.为S[i]赋初值,S[i] = i,i为0到2N-1的整数; 三·为i、j、h赋初值,i = 0, j = 0 ; 四· j = U+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+l)mod 2N ; 九· j = (j+S[i])mod 2N ; 十.交换 S[i]、S[j]; i^一 · q = (S[i]+S[j])mod 2N ; 十二· Z[f] [h] = S[q]; 十三.h自增1,如果h < 2N,进行步骤八,否则进行步骤十四; 十四.f自增1,如果f < F,进行步骤二;否则结束。
4. 根据权利要求3所述的RC4流密码生成器,其特征在于, Μ 为 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]作为对应于该组一级秘钥矢量的流密码依序输 出; 所述主控制逻辑模块,根据第一时钟、外部控制信号、一级密钥矢量更新信号,产生加 密控制信号,控制所述κ-box模块、s-box模块、输出控制逻辑模块工作。
6. 根据权利要求1到5任一项所述的RC4流密码生成器,其特征在于,所述设定规则, 为顺序分组或间隔分组。
【文档编号】H04L9/18GK104219045SQ201310217545
【公开日】2014年12月17日 申请日期:2013年6月3日 优先权日:2013年6月3日
【发明者】吴淼, 张钊锋, 梅年松 申请人:中国科学院上海高等研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1