动态输入杂凑序列dihs的制作方法

文档序号:7893215阅读:292来源:国知局

专利名称::动态输入杂凑序列dihs的制作方法
技术领域
:密码学对称密钥流密码加密背景介绍动态输入杂凑序列DIHS循环体是以动态变量查表取代MD5中固定字表,融入了加密密钥K进行运算的循环体,输出大周期伪随机序列。它利用并增强了MD5随机性又具有庞大周期,不依赖于任何预置的IV,因而DIHS既可以获得MD5的输出随机性,在计算安全性基础上又可以随意设置IV,用同一个密钥K下组织多个独立循环体,从而可进行大规模并行运算,为加密提供高速和安全的伪随机序列。本算法是利用单向函数特性构造序列的方法,采用了杂凑函数MD5—些基础,使用较多的寄存器(7或8个),而32位芯片有8个通用寄存器,因而较为局促;但当今主流的芯片早已经是64位,有16个32位通用寄存器(例如AMD64芯片),因而足够使用。
发明内容动态输入杂凑序列DIHS,借鉴MD5基础,将密钥144位K拆分成16位的子密钥K。,Id,…,Ki,…,Ks加入每一步运算(本说明的密钥为144位,拆成9个16位的子密钥,每轮9步)子密钥与变量模加后,使用动态变量查表置换MD5中固定字表作输入,并使通过辅助寄存器变量组巧,r2,r3,r4延迟输入交错,使得函数体具有强力雪崩性,每轮的4个32比特字128位作为序列输出在MD5基础上(格式化输入消息x和建立4个32比特工作变量a,b,c,d,4个链值H"H2,H3,H4,以及非线性处理函数设置等),本发明:1)设置了256字节的表,以便对每个每一步的16位子密钥获得查表映射2)此映射是动态的,与每一步&关联将工作变量b模加&后分成字节流查表再组成32比特字,用以替代MD5中固定字表加入运算,极大增强了雪崩变化。3)设置了辅助寄存器变量iviviviv用以存储延迟32比特映射字输入,起到交错作用,使得函数更复杂化。4)链值设置为4个,分别是H"H2,H3,H4,对应变量为a,b,c,d,变量每轮和第一轮链值模加后作为序列输出。具体实施例方式l.DIHS算法输入144比特的密钥K,输出128(jmax-l)比特长度的序列。1.l常数和符号"—"表示赋值或同时赋值;"||"表示级联;"<<<"为循环左移;"+"表示模加"b—(S"S2,S3,S4)"将32位b拆分为4个字节SpS2,S3,S4(大端表示)"P[sJP[s2]I|P[s3]I|P[s4]"Sl,s2,s3,S4的查表值级联成的32比特字(大端表示)函数F(b,c,d)=(bANDc)OR((NOTb)AND(d))G(b,c,d)=(bANDd)OR(cAND(NOTd))K(b,c,d)=bXORcXORd1.2预处理建立统一固定的基表以256个不同的单节字0-255为基元,排列成的总共长度为256B的固定表PS(见附录)可以把PS看做一个数组P[128],P[S]为查表获得的基元数值,s为对应基元的数组下标要求PS表基元分布随机均匀.将P[128]放入缓存.初始化常数定义与MD5—样定义4个32比特初始链值&,H2,H3,H4、=0x67452301,h2=0xefcdab89,h3=0x98badcfe,h4=0x10325476(H"H2,H3,H4)—(^,h2,h3,h4)W=0xcdaa8b43,N丄=0xeb36c27a,N2=0x5alcf3d4,N3=0xdc7082b9,N4=0xc3d2elf0设定j^,密钥K设置4个32比特的寄存器变量a,b,c,d,进行运算并存储运算结果。设置辅助的4个寄存器变量巧,r2,r3,r4每个为32比特。初始化变量1.3算法运算密钥K为144比特,拆为16比特的子密钥K。,&,…,Kj本文字节流采用大端表示),复制入缓存。初始化变量(a,b,c,d)—讽,H2,H3,H4);(巧,r2,r3,r4)—(N"N2,N3,N4)设定最大轮数jmax0《j《jmax每一轮共9步,每轮最后一步输出4个32比特字对于j轮,第i步0《i《8(0《j《jmax)1)a二a+r工2)b=b+Ki注一3)查表转换注Qb—(Sps2,s3,s4)s3,s4查表,级联然后构成的四字节赋值给^:巧—(P[s3]I|P[s4]II(P[s3]+181)II(P[s4]+83))4)t=a+(fi(b,c,d)+(t,b<<<7)+W)<<<1——(4(b,c,d)为MD5的处理P函数)5)(a,b,c,d)—(d,t,b,c);t—巧;(r"r2,r3,r4)—(r2,r3,r4,t<<<(i+1)))i+1进入下一步…,4i=0,1,2时fi(b,c,d)=F(b,c,d)=(bANDc)OR((NOTb)AND(d))i=3,4,5时fi(b,c,d)=G(b,c,d)=(bANDd)OR(cAND(NOTd))i=6,7,8,时fi(b,c,d)=H(b,c,d)=bXORcXORd6)1=8运算后,仅仅第一轮(j=0时)更新链值讽,H2,H3,H4)—((H一a),(H2+b),(H3+c),(H4+d))1《j起,每轮输出4个32比特字序列Zj:(H一a),(H2+b),(H3+c),(H4+d)Z」组成输出序列。j轮最后一步(i=8时)结束时的a,b,c,d和巧,r2,r3,r4的状态,为j+1轮的初始状态。(变量a,b,c,d不以链值更新)j+l,进入下轮……,直至j=j^,结束2.注释1)注〇注算法中第2)第3)分步b=b+Ki和查表转换在实际中是可以合并并且是比较方便的如,令b为寄存器EBX,巧为寄存器EAX,则BX—(BX+Ki);AH—P[BH],AL—P[BL];EAX<<<16;AH—(P[BH]+181),AL—(P[BL]+83)加法分别为16位和8位模加2)密钥K也可以为160位,172位…,对应算法的每轮步数为10步,11步…3)与MD5不同,变量a,b,c,d和ivr2,r3,r4不以链值更新。4)第一轮获得的链值(H"H2,H3,H4)—((H,a),(H2+b),(H3+c),(H4+d))之后,H丄,H2,H3,H4即被固定,从第二轮开始每轮的输出Zj序列,是4个32比特字Zj:(H一a),(H2+b),(H3+c),(H4+d)5)任意设定初始值而不影响输出随机特性,利用这点便可以使用同一个K设置并行运算。任意设定初始值而不影响输出随机特性,利用这点便可以直接以时间格式以当前时间值作为参数,任意时刻可以确定同步。6)对单组4个32比特的输出攻击,需要穷举2128,从更安全角度考虑,循环体可以作每2轮输出4个32比特。3附录表PS:PS固定表<table>tableseeoriginaldocumentpage5</column></row><table><table>tableseeoriginaldocumentpage6</column></row><table>sP[S]值SP[S]值SP[S]值SP[S]值SP[S]值SP[S]值SP[S]值SP[S]值24905649881851209715216418424721624824819425178578289741215515324418522521781249192611581549022612224215469186220218216250125279959234912012367155157187238219205251233281956051921801243615623718832204625219029253611239315012570157183189912211842538730866220394215126151158147190752222022541073115863289540127239159169191171223115255198权利要求一种获取伪随机序列的方法——动态输入杂凑序列DIHSDIHS运用了MD5杂凑函数的一些结构,直接采用了其非线性运算处理P函数。与MD5仅仅输出128位杂凑值不同,DIHS是一个使用密钥K创建大周期伪随机序列的循环,每轮输出4个32比特字作为伪随机序列输出,其特征为1)将密钥K拆分为有序的16位子密钥,K0,K1,…,Ki,…,对应144位的K设置每轮9步,160位K设置每轮10步…2)设置类似MD5的工作变量a,b,c,d和链值H1,H2,H3,H4,第j轮变量a,b,c,d和第一轮后的链值模加后作为j轮4个32比特字输出Zj(H1+a),(H2+b),(H3+c),(H4+d)。Zj为输出序列。3)设置了256字节的表,以便对每个每一步的16位子密钥获得查表映射此映射是动态的,与每一步Ki关联将工作变量b模加Ki后分成字节流查表再组成32比特字,赋值给r1变量,用以替代MD5中固定字表加入运算,极大增强了雪崩变化。4)设置了辅助寄存器变量r1,r2,r3,r4,用以存储延迟32比特映射字输入,起到交错作用,使得函数更复杂化。全文摘要动态输入杂凑序列DIHS,借鉴MD5基础,将密钥K拆分成16位的子密钥K0,K1,...,Ki,...加入每一步运算(本说明的密钥为144位,拆成9个16位的子密钥,每轮9步)子密钥与变量模加后,使用动态变量查表置换MD5中固定字表作输入,并使通过辅助寄存器变量组r1,r2,r3,r4延迟输入交错,使得函函数体具有强力雪崩性,每轮最后的工作变量a,b,c,d与第一轮后的链值H1,H2,H3,H4模加后作为加密用的伪随机序列输出。DIHS具有MD5的随机性并具有庞大周期,可用同一个密钥K组织多个独立循环体,进行大规模并行运算。文档编号H04L9/18GK101753298SQ20081024316公开日2010年6月23日申请日期2008年12月9日优先权日2008年12月9日发明者姚锡根申请人:姚锡根
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1