80、96、112、128bit的密鑰,相 應(yīng)的迭代輪數(shù)分別為r = 10、11、12、13、14輪。¥!1有3個(gè)參數(shù):6413^明文?。,密鑰1(,6413^ 密文Y。VH的加密過(guò)程用Y = VHk (P。)表示,按以下步驟實(shí)施。
[0060] (1)加密變換表S[256]產(chǎn)生。
[0061] 加密S盒采用偽隨機(jī)變換的方式產(chǎn)生。先計(jì)算T(i) =「|256sin(i) |」,其中「」表 示向下取整運(yùn)算;為了產(chǎn)生不重復(fù)的256個(gè)字節(jié),i的取值由1到30000,遇到重復(fù)的排除, 直到產(chǎn)生仝部不重復(fù)的256個(gè)字節(jié)為止。加密變換表S[256]是256個(gè)字節(jié)的一個(gè)偽隨機(jī) 排列,由T中字節(jié)輪換得到:S[T(j)] =T(j+l),S[T(255)] =T(O);其中0彡j彡254。
[0062] (2)密鑰擴(kuò)展。
[0063] 通過(guò)遞推進(jìn)行密鑰擴(kuò)展,將L字節(jié)的密鑰K擴(kuò)展成8 (r+Ι)字節(jié):擴(kuò)展密鑰Key = 1(。|1(1|...|1(1=1^|1^1|...|1^+7;其中"|',為連接運(yùn)算。每個(gè)1^為8字節(jié),其中0<1^^; 每個(gè)kj為1字節(jié),O < j < 8r+7。對(duì)于8、10、12、14、16字節(jié)的密鑰K,相應(yīng)的迭代輪數(shù)分 別為r = 10、11、12、13、14輪。擴(kuò)展密鑰Key的前L字節(jié)就是密鑰K :K = I^lk11... I ku。 L彡j彡8r+7時(shí),擴(kuò)展密鑰Key中的4由k ^和k j i兩個(gè)字節(jié)遞推得到: < =取Mb; 其中?為異或運(yùn)算。
[0064] (3)數(shù)據(jù)加密過(guò)程:先進(jìn)行初始加密,再進(jìn)行r輪迭代加密,得到密文Y,如圖1所 不。
[0065] (a)初始加密:初始密文4 = Λ>?而。其中P。為64bit初始明文,K。為密鑰K的前 8字節(jié)。
[0066] (b)r輪迭代加密。i從1到r,每輪迭代包括以下三步。
[0067] 首先對(duì)數(shù)據(jù)進(jìn)行"行偽隨機(jī)變換",即對(duì)數(shù)據(jù)的每個(gè)字節(jié)用加密S盒進(jìn)行偽隨機(jī)變 換:
[0068] M1U) = SEY1山·)];其中i從1到 nXjj)表示X1的第j個(gè)字節(jié),0彡j彡7。 [0069] 再把64bit數(shù)據(jù)M1排成8*8的方陣,對(duì)M滿每個(gè)斜對(duì)角線用加密S盒進(jìn)行偽隨機(jī) 變換:
[0070] P1 (0) = S {[M1 (0) &128] I [M1 (I) &64] I [M1 (2) &32] I [M1 (3) &16] I [M1 (4) &8] I [M1 (5) & 4] I [M1 (6)&2] I [M1 (7)&1]};(其中 & 為與運(yùn)算)
[0071] P1 (I) = S {[M1 (I) &128] I [M1 (2) &64] I [M1 (3) &32] I [M1 (4) &16] I [M1 (5) &8] I [M1 (6) & 4] I [M1 (7) &2] I [M.W&l]}:
[0072] P1 (2) = S {[M1 (2) &128] I [M1 (3) &64] I [M1 (4) &32] I [M1 (5) &16] I [M1 (6) &8] I [M1 (7) & 4] I %(0)&2] I [M"1)&1]};
[0073] P1 (3) = S {[M1 (3) &128] I [M1 (4) &64] I [M1 (5) &32] I [M1 (6) &16] I [M1 (7) &8] I [M1 (0) & 4] I [MJD&2] I [M"2)&1]};
[0074] P1 (4) = S {[M1 (4) &128] I [M1 (5) &64] I [M1 (6) &32] I [M1 (7) &16] I [M1 (0) &8] I [M1 (1) & 4] I [M1 (2) &2] I [M1(3)&1]};
[0075] P1 (5) = S {[M1 (5) &128] I [M1 (6) &64] I [M1 (7) &32] I [M1 (0) &16] I [M1 (I) &8] I [M1 (2) & 4] I %(3)&2] I [MJC&I]};
[0076] P1 (6) = S {[M1 (6) &128] I [M1 (7) &64] I [M1 (0) &32] I [M1 (I) &16] I [M1 (2) &8] I [M1 (3) & 4] I [M1 (4) &2] I [M1(5)&1]};
[0077] P1 (7) = S {[M1 (7) &128] I [M1 (0) &64] I [M1 (I) &32] I [M1 (2) &16] I [M1 (3) &8] I [M1 (4) & 4] I [M1 (5) &2] I [M1 (6)&1]}〇
[0078] 最后再將上述輸出P1與該輪的子密鑰K i進(jìn)行異或得到該輪的密文:= 其 中 I < i < r〇
[0079] 最后一輪的輸出結(jié)果Yr即為最終的密文Y。
[0080] IL VHC加解密方式
[0081] 保密通信時(shí),VHC的加解密過(guò)程有4個(gè)參數(shù):明文P,密鑰K,初值ctr,密文C。ctr 長(zhǎng)度為64bit,用計(jì)數(shù)器實(shí)現(xiàn),功能是抗重放攻擊。對(duì)于長(zhǎng)度為Ien比特的明文P,VHC基于 分組密碼VH,采用CTR模式并行產(chǎn)生η =「(len-l)/64」+l組密鑰流KS1,其中0彡i彡n-1, 每組密鑰流的長(zhǎng)度為64bit,如圖2所示,即
[0082] For i = 0 to n-1 (KSi= VHK(ctr+i) ;}
[0083] 其中,VHk(ctr)表示分組密碼VH采用密鑰K對(duì)ctr進(jìn)行加密。
[0084] 則VHC的加密方式為:密文OP?MSBlen(KS),如圖2所示;其中MSB len(KS)表示截 取全部密鑰流KS的前Ien比特。VHC的解密方式為:明文P = C?MSBlen(KS)。
【主權(quán)項(xiàng)】
1. 一種基于CTR模式和分組密碼VH的輕量級(jí)流密碼VHC,其總體特征是加解密過(guò)程有 4個(gè)參數(shù):明文P,密鑰K,初值ctr,密文C;ctr長(zhǎng)度為64bit,用計(jì)數(shù)器實(shí)現(xiàn),功能是抗重 放攻擊;對(duì)于長(zhǎng)度為Ien比特的明文P,VHC基于分組密碼VH,采用CTR模式并行產(chǎn)生n= 「(len-l)/64」+l組密鑰流KS1,其中「」表示向下取整運(yùn)算,O彡i彡n-1,每組密鑰流的長(zhǎng) 度為64bit,即 Fori= 0ton-1 (KSi=VHK(ctr+i) ;} 其中,VHk (ctr)表示分組密碼VH采用密鑰K對(duì)ctr進(jìn)行加密; 則VHC的加密方式為:密文C=PaMSBlen(KS),其中?為異或運(yùn)算,MSBlen(KS)表示截取 全部密鑰流KS的前Ien比特;VHC的解密方式為:明文2. 根據(jù)權(quán)利要求1所述的輕量級(jí)流密碼VHC,其采用的分組密碼VH的特征是加密過(guò)程 有3個(gè)參數(shù):64bit明文P。,密鑰K,64bit密文Y;VH的加密過(guò)程用Y=VHk(Pq)表示,包括 以下步驟: (1) 加密變換表S[256]產(chǎn)生; (2) 密鑰擴(kuò)展:VH支持長(zhǎng)度為64、80、96、112、128bit的密鑰,分別擴(kuò)展成64*11、 64*12、64*13、64*14、64*151^扒相應(yīng)的迭代輪數(shù)分別為1 = 10、11、12、13、14輪; (3) 數(shù)據(jù)加密過(guò)程:先進(jìn)行初始加密;再進(jìn)行r輪迭代加密,得到密文Y。3. 根據(jù)權(quán)利要求2所述的分組密碼VH,其特征在于步驟(1)中的加密S盒采用偽隨 機(jī)變換的方式產(chǎn)生:先計(jì)算T(i) =「|256sin(i) |」;為了產(chǎn)生不重復(fù)的256個(gè)字節(jié),i的 取值由1到30000,遇到重復(fù)的排除,直到產(chǎn)生全部不重復(fù)的256個(gè)字節(jié)為止;加密變換 表S[256]是256個(gè)字節(jié)的一個(gè)偽隨機(jī)排列,由T中字節(jié)輪換得到:S[T(j)] =T(j+1), S[T(255)] =T(O);其中 0 彡j彡 254。4. 根據(jù)權(quán)利要求2所述的分組密碼VH,其特征在于步驟(2)中通過(guò)遞推進(jìn)行密鑰擴(kuò) 展,將L字節(jié)的密鑰K擴(kuò)展成8 (r+1)字節(jié):擴(kuò)展密鑰Key=KidIK1I...IK1=Uk1I...Ikfc+7, 其中"I"為連接運(yùn)算;每個(gè)&為8字節(jié),其中0彡i彡r;每個(gè)1^為1字節(jié),其中0彡j彡8r+7 ; 對(duì)于8、10、12、14、16字節(jié)的密鑰K,相應(yīng)的迭代輪數(shù)分別為r= 10、11、12、13、14輪;擴(kuò)展 密鑰Key的前L字節(jié)就是密鑰K:K=k。IIc11. . .Ih1;L彡j彡8r+7時(shí),擴(kuò)展密鑰Key中的 4由kU和k,i兩個(gè)字節(jié)遞推得到:5. 根據(jù)權(quán)利要求2中步驟(3)所述的數(shù)據(jù)加密過(guò)程,其特征是VH的分組長(zhǎng)度為64bit, 先進(jìn)行初始加密:初始密文6 =,其中Pc為64bit初始明文,K。為密鑰K的前8字節(jié); 再進(jìn)行r輪迭代加密;i從1到r,每輪迭代包括以下三步: 首先對(duì)數(shù)據(jù)進(jìn)行"行偽隨機(jī)變換",即對(duì)數(shù)據(jù)的每個(gè)字節(jié)用加密S盒進(jìn)行偽隨機(jī)變換: M1U) =SEY1山-)],其中i從1至IJnXjj)表示X1的第j個(gè)字節(jié),0彡j彡7 ; 再把64bit數(shù)據(jù)M1排成8*8的方陣,對(duì)M 每個(gè)斜對(duì)角線用加密S盒進(jìn)行偽隨機(jī)變 換: P1(O) =SUM1(O)MSS]I[]^(1)&64]I[Mi(2)&32]I[Mi(3)&16] [Mi(4)&8]I[Mi(5)&4]I[Mi(6)&2]I[Mi(7)&l]};(其中 & 為與運(yùn)算) P1(I) =SttM^D&^S]I[M1 (2) &64]I[M1 (3) &32] |最后再將上述輸出P1與該輪的子密鑰Ki進(jìn)行異或得到該輪的密文:r,?及,其中I^i^r; 最后一輪的輸出結(jié)果Y1J卩為最終的密文Y。
【專利摘要】本發(fā)明提供了一種基于CTR模式和分組密碼VH的輕量級(jí)流密碼技術(shù)VHC,應(yīng)用于保密通信領(lǐng)域。VH先產(chǎn)生由256個(gè)字節(jié)隨機(jī)排列組成的加密變換表S[256],用于密鑰擴(kuò)展和迭代加密。加密時(shí),VH先對(duì)8*8bit分組數(shù)據(jù)的每行進(jìn)行偽隨機(jī)變換,實(shí)現(xiàn)混亂;再對(duì)數(shù)據(jù)的每個(gè)斜對(duì)角線進(jìn)行偽隨機(jī)變換,同時(shí)實(shí)現(xiàn)擴(kuò)散和混亂。對(duì)長(zhǎng)度為len比特的明文P,VHC采用CTR模式并行產(chǎn)生n=「(len-1)/64」+1組密鑰流KSi:KSi=VHK(ctr+i);其中「」表示向下取整,0≤i≤n-1,VHK(ctr)表示分組密碼VH采用密鑰K對(duì)計(jì)數(shù)器ctr進(jìn)行加密。則VHC的加密方式為:密文C=PMSBlen(KS);MSBlen(KS)表示截取全部密鑰流KS的前l(fā)en比特。VHC的解密方式為:明文P=CMSBlen(KS)。本發(fā)明設(shè)計(jì)了一個(gè)面向低成本8位嵌入式移動(dòng)終端的安全高效輕量級(jí)流密碼,用于數(shù)據(jù)加解密。
【IPC分類】H04L29/06, H04W12/08, H04W12/02, H04L9/28
【公開(kāi)號(hào)】CN105049204
【申請(qǐng)?zhí)枴緾N201510458934
【發(fā)明人】黃玉劃, 陳璐, 代學(xué)俊, 蘇菲, 陳昌瑩, 丁莉莉
【申請(qǐng)人】蘇州中科啟慧軟件技術(shù)有限公司
【公開(kāi)日】2015年11月11日
【申請(qǐng)日】2015年7月30日