资源描述:
《现代密码学第五讲:流密码(二)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1流密码(二)《现代密码学》第五讲上讲内容回顾流密码(序列密码)的思想起源流密码技术的发展及分类基于移位寄存器的流密码算法其它流密码算法3本章主要内容Estream推荐软件算法HC-256/128算法Rabbit算法Salsa20算法SOSEMANUK软件算法HC-256/128HC-256HC-256流密码由HongjunWu(大陆旅居新加坡学者)提出。HC-256的特点是使用两张密表P和Q,每一张都包含1024个32比特元素,因此,算法的硬件速度较慢。密钥流生成的每一步,都用非线性反馈函数更新表中一个元素,经过2048步两张
2、表所有的元素都将被更新。每次迭代输出32比特密钥流。HC-256符号定义:+:x+y表示x+ymod232,其中0≤x<232,0≤y<232;-:x-y表示x−ymod1024;⊕:逐位异或OR;
3、
4、:串联;>>:右移操作.x>>n表示x右移n位.<<:左移操作.x>>n表示x左移n位.>>>:右循环移位操作.x>>>n等于((x>>n)⊕(x<<(32−n)),其中0≤n<32,0≤x<232.HC-256符号定义:P:含有1024个32-bit元素的表.表中元素标记为P[i],0≤i≤1023.Q:含有1024个32-bi
5、t元素的表.表中元素标记为Q[i],0≤i≤1023.K:HC-256的256-bit密钥.IV:HC-256的256-bit初始化向量.s:HC-256正在生成的密钥流.在第i步生成的32-bit输出被标记为si.而s=s0
6、
7、s1
8、
9、s2
10、
11、···si
12、
13、si+1
14、
15、···HC-256将256比特密钥和256比特初始变量扩展并装载到P和Q中,然后混淆P和Q的内容1.设K=K0
16、
17、K1
18、
19、···
20、
21、K7,IV=IV0
22、
23、IV1
24、
25、···
26、
27、IV7,其中Ki和IVi标记一个32位数.K和IV扩展为矩阵W,Wi为其第i个字(0≤i
28、≤2559):Wi=Ki0≤i≤7Wi=IVi−88≤i≤15Wi=f2(Wi−2)+Wi−7+f1(Wi−15)+Wi−16+i16≤i≤2559初始化过程HC-2562.用W更新表P和QP[i]=Wi+5120≤i≤1023Q[i]=Wi+15360≤i≤10233.运行4096步密钥流生成操作(不输出)i=0;//不断重复直到足够的密钥流生成{j=imod1024;if(imod2048)<1024//将输出字符的序号以2048个为一组{//在组内序号小于1024时P[j]=P[j]+P[j-10]+g1(P[j-3],P
29、[j-1023]);si=h1(P[j-12])⊕P[j];}else{//在组内序号大于1024时Q[j]=Q[j]+Q[j-10]+g2(Q[j-3],Q[j-1023]);si=h2(Q[j-12])⊕Q[j];}end-ifi=i+1;}end-repeatHC-256密钥流生成六个函数:f1(x)=(x>>>7)⊕(x>>>18)⊕(x>>3)f2(x)=(x>>>17)⊕(x>>>19)⊕(x>>10)g1(x,y)=((x>>>10)⊕(y>>>23))+Q[(x⊕y)mod1024]g2(x,y)=((x>>>1
30、0)⊕(y>>>23))+P[(x⊕y)mod1024]h1(x)=Q[x0]+Q[256+x1]+Q[512+x2]+Q[768+x3]h2(x)=P[x0]+P[256+x1]+P[512+x2]+P[768+x3]其中x=x3
31、
32、x2
33、
34、x1
35、
36、x0,x为32-bit,x0,x1,x2和x3为4个字节.x3和x0分别标记x中最高字节和最低字节。f1(x)f2(x)的作用与σ0(x)σ1(x)在SHA-256中的作用相同。g1(x)和h1(x)被表Q用作S盒,g2(x)和h2(x)被表P用作S盒。HC-256HC-128HC
37、-128是HC-256的简化版本。HC-128使用两张密表P和Q,每一张都包含512个32比特元素。密钥流生成的每一步,都用非线性反馈函数更新表中一个元素,经过1024步两张表所有的元素都将被更新。HC-128符号定义:+:x+y表示x+ymod232,其中0≤x<232,0≤y<232;-:x-y表示x−ymod512;⊕:逐位异或OR;
38、
39、:串联;>>:右移操作.x>>n表示x右移n位.<<:左移操作.x>>n表示x左移n位.>>>:右循环移位操作.x>>>n等于((x>>n)⊕(x<<(32−n)),其中0≤n<32,0≤
40、x<232.<<<:左循环移位操作.x<<>(32−n)),其中0≤n<32,0≤x<232.HC-128符号定义:P:含有512个32-bit元素的表.表中元素标记为P[i],0≤i≤511.Q:含有512个32-bit元素的表.