十進制加密技術(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盒如圖所示:

(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)移位要進行特殊處理。

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

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

定義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ù)大于4就有很好的擴散性。

本加密算法借鑒了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ù)法”。










