十進制加密技術(shù)

大家都知道,我們一般使用的加密算法都是是針對十六進制數(shù)進行加密的,而人習慣使用十進制數(shù),在相當多的網(wǎng)絡(luò)通信應(yīng)用中需要對十進制數(shù)信息進行加密。有很多應(yīng)用要求十進制數(shù)的明文位數(shù)和加密后的十進制數(shù)的密文位數(shù)相對應(yīng),而不能基于十六進制的加密算法就無法滿足這方面的要求,采用十進制數(shù)的明文轉(zhuǎn)換成十六進制數(shù)的明文進行加密,再將加密后的十六進制數(shù)的密文轉(zhuǎn)換成十進制數(shù),其密文的十進制位數(shù)將多于十進制數(shù)明文的位數(shù),不能滿足十進制數(shù)明文與密文長度相等的特殊要求。下面我們就給大家介紹一下十進制的加密技術(shù)。

一、十進制加密技術(shù)其算法原理

AES加密算法是美國的數(shù)據(jù)加密國家標準,是對稱加密算法中加密性能和速度等各項性能指標最好的加密算法。而本文我們基于十進制加密技術(shù)的新算法是以AES加密算法為基礎(chǔ),并對AES的四種加密運算進行重新設(shè)計,以適應(yīng)十進制數(shù)的直接加密的要求。將AES中的輪密鑰加改為輪密鑰加密運算控制,不同的密鑰加密運算的算法不一樣,使加密算法具有隨機性。提出了動態(tài)密鑰的概念,做到了加密解密一次一密,使加密算法具有混沌加密算法一次一密的特點。因此,新算法同時具有AES加密算法、隨機加密算法、混沌加密算法的優(yōu)點。

1、加密中四種運算

該算法以AES加密算法為基礎(chǔ)進行設(shè)計,對AES算法中的四種加密運算S盒替換(ByteSub)、行移位(ShiftRows)、列混合(MixColumn)、輪密鑰加(AddRounds)分別進行重新設(shè)計,將AES中的輪密鑰加設(shè)計為輪密鑰運算控制。下面分別對四種加密運算進行介紹:

(1)S盒替換(S-box)

由于本加密算法是基于十進制數(shù),所以S盒的空間為GF(10),相對于AES加密中的S盒GF(256)要小得多。為了使狀態(tài)在加密過程中得到擴散,我們設(shè)計的S盒替換使替換的值與原值有2bit的變化,也就是在每一輪的替換中達到有一半的bit位發(fā)生了變化,使每一組狀態(tài)state在加密過程中得到充分的擴散。我們設(shè)計的S盒如圖所示:

十進制加密技術(shù)

(2)行移位(ShiftRows)

下表中Nb為狀態(tài)state的列數(shù),ci為第i行移位的位數(shù)。狀態(tài)根據(jù)實際使用情況可分為8位、12位、16位、20位、24位、28位、32位等十進制數(shù),狀態(tài)中最后3行循環(huán)移位的位數(shù)如下表所示。即第0行不移位。第1行移位c1位數(shù)。第2行移位c2位數(shù),第3行移位c3位數(shù),對與小于4列和大于7列的狀態(tài)移位要進行特殊處理。

十進制加密技術(shù)

(3)列混合(MixColumn)

十進制數(shù)的列混合運算不能使用AES的列混合,AES列混合中的異或加對于十進制數(shù)沒有可逆性。這里采用線性列混合的加密方法,加密時對每一列的數(shù)據(jù)進行列混合,得到的結(jié)果放回到原來的矩陣中,列混合矩陣見公式1:

十進制加密技術(shù)

列混合的逆矩陣見公式2:

十進制加密技術(shù)

定義1:

對于正整數(shù)矩陣A,如果存在正整數(shù)矩陣B,使得A*B=Emodm(E為單位矩陣),則稱B為A的逆正整數(shù)矩陣。

定理1:對于正整數(shù)矩陣A,如果gcd(det(A),m)=1,則正整數(shù)矩陣A的逆正整數(shù)矩陣B存在,且det(A)*B=A*modm(det(A)為A的行列式的值,A*為A的伴隨矩陣)。

證明:∵A*A-1=E

設(shè)一向量α使得A*α=kmodm,k為一向量,有A-1*k=A*det(A)*k=αmodm

如果存在一矩陣B,滿足B=A-1modm

即det(A)*B=A*modm

∵gcd(det(A),m)=1

∴gcd(det(A),m)αA*

根據(jù)線性同余式定理

∴矩陣B存在且B=A-1modm

證畢

(4)輪密鑰運算控制(ControlRoundKey)

在AES加密算法中,利用密鑰與狀態(tài)對應(yīng)的字節(jié)做異或運算來加密。但是異或運算對于十進制數(shù)沒有可逆性,所以我們將AES輪密鑰加改為輪密鑰運算控制,定義了四種運算對狀態(tài)循環(huán)加密運算。輪密鑰運算控制程序有四個入口,入口由每一輪加密所使用的密鑰的按位的和模上4來確定。該算法中一般要求密鑰為32位十進制數(shù),每一輪加密所用的密鑰是由密鑰擴展函數(shù)根據(jù)上一次加密所用的密鑰擴展得到。輪密鑰運算控制的偽代碼如下:

ControlRoundKey(State,key,time)

{

i0=len*time;//len為狀態(tài)長度

enter=0; for(i=i0;i<i0+len-1;i++)

{

enter=(enter+key[i])mod4;

}

for(i=0;i<len;i++)

{

j=(i+enter)mod4;

ifj=0State[i]=(State[i]+key[i+i0])mod10;

ifj=1state[i]=(State[i]-key[i+i0])mod10;

ifj=2State[i]=(State[i]+Box[key[i+i0]])mod10;

ifj=3State[i]=(State[i]-Box[key[i+0]])mod10;

}

}

輪密鑰控制中引入的四種運算,不同的密鑰其加密運算也不同。其加密強度比AES中的輪密鑰加的加密強度大。

2、動態(tài)密鑰

為了進一步提高加密的強度,筆者在新加密算法中引入動態(tài)密鑰的概念,動態(tài)密鑰根據(jù)初始密鑰、加密通信次數(shù)和加密者的身份號ID由動態(tài)密鑰算法產(chǎn)生每次加密解密的32位十進制數(shù)密鑰.加密通信次數(shù)每通信一次加1,動態(tài)密鑰算法對加密通信次數(shù)敏感,通信雙方用通信加密次數(shù)做混沌同步參數(shù)。使該加密算法具有混沌加密算法的特點,從預(yù)付費管理中心到終端設(shè)備用動態(tài)密鑰加密,從終端到管理中心用終端密鑰加密。

3、新算法的加密/解密

如果用C代表ControlRoundKey,B代表S-box,S代表ShiftRows,M代表MixColumn,加密流程如下:

CBSMC…BSMCBSC

由于該加密運算中采用的每一種運算都是可逆的,所以對于上面的加密過程只需要對每一種運算求逆即可解密。解密流程如下:

C-1S-1B-1 C-1M-1S-1B-1…C-1M-1S-1B-1 C-1

二、十進制加密算法加密性能分析

我們對該算法的加密性能進行了軟件仿真測試分析,分別以12位、16位、20位、32位十進制數(shù)為加密分組,進行2到15輪的加密解密運算測試,20位十進制數(shù)為加密分組所得測試結(jié)果如下。明文對密文的擴散率,密鑰對密文的擴散率如圖所示:

十進制加密技術(shù)

解密時密文對明文的擴散率,密鑰對明文的擴散率如下圖所示,從下圖中可看出,加密輪數(shù)大于4就有很好的擴散性。

十進制加密技術(shù)

本加密算法借鑒了AES加密算法的思想,并對AES算法進行重新設(shè)計,適應(yīng)十進制數(shù)加密/解密的要求。此加密算法中重新定義了AES中的S盒置換、行移位、列混合、輪密鑰加四種運算,算法結(jié)合了AES加密算法、混沌加密算法、隨機加密算法的特點,克服了由于密鑰、狀態(tài)為十進制數(shù)使空間變小而帶來的加密強度降低的問題。其中S盒置換與列混合可以有效地對抗明文的差分攻擊與相關(guān)性分析,算法對硬件要求低,實現(xiàn)容易,加密解密速度快,加密強度高,具有較高的安全性,該加密算法可廣泛用于各種需要十進制數(shù)加密的領(lǐng)域。

小知識之十進制

十進制是相對二進制計數(shù)法而言的,是我們?nèi)粘J褂米疃嗟挠嫈?shù)方法(俗稱“逢十進一”),它的定義是:“每相鄰的兩個計數(shù)單位之間的進率都為十”的計數(shù)法則,就叫做“十進制計數(shù)法”。