基于AES加密算法的數(shù)據(jù)文件安全策略與實(shí)現(xiàn)

軟件的核心是數(shù)據(jù)和算法,數(shù)據(jù)安全是系統(tǒng)安全的重要部分,對(duì)數(shù)據(jù)加密可以增加系統(tǒng)安全。用AES加密算法對(duì)數(shù)據(jù)文件進(jìn)行加密的運(yùn)算,其優(yōu)勢(shì)在于AES是一種高級(jí)對(duì)稱性加密標(biāo)準(zhǔn),速度快,安全級(jí)別高的算法,具備很強(qiáng)的擴(kuò)散性能,最終形成的密碼有很高的隨機(jī)性,便于制作成通用的加密對(duì)象類型。數(shù)據(jù)文件經(jīng)過(guò)AES加密算法加密后,信息會(huì)得到有效保護(hù)。

一、AES加密算法概念及其特點(diǎn)

1、AES加密算法簡(jiǎn)介

AES是1997年1月美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)發(fā)布征集的新加密算法,是一種高效、安全的對(duì)稱加密算法。目前,Rijndael加密算法以其優(yōu)秀的性能和抗攻擊能力是通用標(biāo)準(zhǔn)AES加密算法。

2、 Rijndaet加密算法數(shù)學(xué)基礎(chǔ)

Rijndael采用一個(gè)迭代的、對(duì)稱密鑰分組的密碼,可使用128、192和256位密鑰,并用128位(16字節(jié))分組加密和解密數(shù)據(jù)。 Rijndael加密算法中的許多運(yùn)算是按字節(jié)定義的,也有一些運(yùn)算是按4字節(jié)定義的,把一個(gè)字節(jié)看成是在有限域GF(2的8次方)上的一個(gè)元素,4字節(jié)看成是系數(shù)取自GF(2的8次方),并且次數(shù)小于4的多項(xiàng)式。

Rijndael加密算法采用多項(xiàng)式表示法。一個(gè)由b7b6b5b4b3b2b1b0位組成的字節(jié)B可表示成系數(shù)為{0,1}的二進(jìn)制多項(xiàng)式:b7X7+b6X6+b5X5+b4X4+b3X3+b2b2+b1X1+bo。GF(2的8次方)上的加法定義為二進(jìn)制式項(xiàng)式的加法,且其系數(shù)模2相加。

CF(2的8次方)上的乘法定義為二進(jìn)制多項(xiàng)式的乘積模一個(gè)次數(shù)為8的不可約二進(jìn)制,多項(xiàng)式M(X)=X8+X4+X3+X+1 。

GF(2的8次方)的二進(jìn)制b(x)的乘法逆為滿足式a(x)b(x)mod m(x)=1的二進(jìn)制式項(xiàng)式a(x),記為b-1(x)。

函數(shù)xtime(x)稱為x乘,定義為GF(2的8次方)上的x*b(x)。

有限域GF(2的8次方)上的多項(xiàng)式是系數(shù)取自GF(2的8次方)上的多項(xiàng)式,GF(2的8次方)上的多項(xiàng)式加法定義為相應(yīng)項(xiàng)系數(shù)相加。GF(2的8次方)上的多項(xiàng)式a(x)=a3x3+a2x2+a1x1+a0和b(x)=b3X3+b2X2+b1X1+b0相乘模X4+1的積為c(x)=C3X3+C2X2+C1X1+C0,其系數(shù)由下面的四個(gè)式子得到:

基于AES加密算法的數(shù)據(jù)文件安全策略與實(shí)現(xiàn)

3、AES加密過(guò)程

AES加密算法原理主要基于置換和代替。置換是數(shù)據(jù)的重新排列,代替是用一個(gè)單元數(shù)據(jù)替換另—個(gè)。AES以128位為分組進(jìn)行加密處理,分組數(shù)據(jù)塊經(jīng)多次數(shù)據(jù)變換操作。 128位信息分成16字節(jié),并按順序復(fù)制到一個(gè)名為4×4字節(jié)的State(矩陣)中。 State在每一層加密都進(jìn)行修改oAES算法的主循環(huán)對(duì)State執(zhí)行4個(gè)不同的操作:SubBytes(字節(jié)替換)、ShiftRows(行位移變換)、MixColumns(列混合變換)和AddRoundKey(輪密鑰加)。在加密的最后階段,State被變回為128位的線性串。

AES加密都是以AddRoundKey階段開(kāi)始和結(jié)束,因?yàn)橹挥蠥ddRoundKey階段使用密鑰。 AES利用四種階段交替對(duì)數(shù)據(jù)分組進(jìn)行處理:首先是利用XOR函數(shù)進(jìn)行AddRoundKey操作,接著在其他三個(gè)階段對(duì)分組進(jìn)行錯(cuò)亂處理,然后再利用XOR函數(shù)加密。SubBytes、ShiftRows.MixColumn8和AddRoundKey 4個(gè)操作在一個(gè)執(zhí)行Nr次的循環(huán)里被調(diào)用,Nr為給定密鑰大小的輪數(shù)減1。加密算法使用的輪數(shù)或是10,12或是14,這依賴于種子密鑰長(zhǎng)度是128位、192位還是256位。

下面我們通過(guò)圖l來(lái)說(shuō)明一下AES加密的過(guò)程。

基于AES加密算法的數(shù)據(jù)文件安全策略與實(shí)現(xiàn)

首先,對(duì)State進(jìn)行AddRoundKey操作,將RoundKey與State異或。對(duì)前Nr-1輪中的每一輪,用S-BOX對(duì)State進(jìn)行一次代換操作,稱為SubBytes,對(duì)State做一置換ShiftRows;再對(duì)State做一次操作Mix-
ColumnS;然后進(jìn)行AddRoundKey操作。最后依次進(jìn)行SubBytes、ShiftRows和AddRoundKey操作,數(shù)據(jù)就變成了密文。

下面對(duì)四種變換進(jìn)行簡(jiǎn)單的介紹:

(1)SubBytes是一種非線形的變換。該置換包含一個(gè)作用在狀態(tài)字節(jié)上的S-BOX,用SRD表示,他是由字節(jié)在GF(2的8次方)域中求其乘法逆并外加一個(gè)仿射變換實(shí)現(xiàn)。S-BOX是一個(gè)16x16的矩陣,表1顯示了S-BOX的前5行。

基于AES加密算法的數(shù)據(jù)文件安全策略與實(shí)現(xiàn)

(2)ShiftRows(線形變換),它和列混合運(yùn)算相互影響,在多輪變換后,使密碼信息達(dá)到充分的混亂,提高非線形度。

(3)MixColumns(列混合變換),它用State字節(jié)列的值進(jìn)行數(shù)學(xué)域加和域乘的結(jié)果代替每個(gè)字節(jié),是以狀態(tài)的列為單位進(jìn)行的操作。

(4)AddRoundKey(輪密鑰加),加密例程獲取該密鑰數(shù)組并生成一個(gè)名為w[e,r]的密鑰調(diào)度表。密鑰調(diào)度表中的前4行對(duì)State實(shí)行一個(gè)字節(jié)一個(gè)字節(jié)的異或(XOR)操作,并用輪密鑰表w[e,r]異或輸入的State[r. c]。

4、AES解密

AES解密算法的結(jié)構(gòu)與加密算法的結(jié)構(gòu)相同,其中的變換為加密算法變換的逆變換,且密鑰擴(kuò)展策略稍有不同。

5、 AES加密算法的優(yōu)點(diǎn)

AES是一種高級(jí)加密標(biāo)準(zhǔn),是下一代的加密算法標(biāo)準(zhǔn),具有速度快,安全級(jí)別高等優(yōu)點(diǎn),我們將AES加密與以前的加密算法比較,AES加密算法有如下的優(yōu)點(diǎn):

(1)運(yùn)算速度快,在多種軟硬件測(cè)試中,AES加密算法都表現(xiàn)出非常好的性能。

(2)AES采用了分組迭代密碼,分組長(zhǎng)度和密鑰長(zhǎng)度設(shè)計(jì)靈活。

(3)AES加密策略是寬軌跡策略(Wide Trail Strategy,WTS)。 WTS是針對(duì)差分分析和線性分析提出的,可對(duì)抗差分密碼分析和線性密碼分析,用窮舉法破解AES密鑰幾乎不可能。

二、基于.NET環(huán)境下的AES加密程序設(shè)計(jì)

.NET在Framework 3.5版本提供了命名空間System.Security.Cryptography提供加密服務(wù),包括安全的數(shù)據(jù)編碼和解碼,以及許多其他操作,例如散列法、隨機(jī)數(shù)字生成和消息身份驗(yàn)證。其中類AesCryptoServiceProvider使用高級(jí)加密標(biāo)準(zhǔn)(AES)算法的加密應(yīng)用程序編程接口(CAPI)實(shí)現(xiàn)來(lái)執(zhí)行對(duì)稱加密和解密。

AesCryptoSeervicePro,rider類有方法:CreateDecryptor來(lái)實(shí)現(xiàn)AES解密器對(duì)象和CreateEncryptor創(chuàng)建對(duì)稱AES加密器對(duì)象。

屬性BlockSize獲取或設(shè)置加密操作的塊大小、FeedbackSize獲取或設(shè)置加密操作的反饋大小、IV獲取或設(shè)置對(duì)稱算法的初始化向量、Key獲取或設(shè)置用于加密和解密的對(duì)稱密鑰、KeySize獲取或設(shè)置密鑰的
大小。

AesCryptoServiceProvider類的調(diào)用過(guò)程非常簡(jiǎn)單,我們只需要用如下的語(yǔ)句創(chuàng)建該類的實(shí)例即可實(shí)現(xiàn)調(diào)用。

AesCryptoServicePro\rider aes - new AesCryptoSer-,riceProvider()∥創(chuàng)建對(duì)象aes

ICryptoTransform encryptor=aes.CreateEncryptorO;∥用方法CreateEncryptor創(chuàng)建對(duì)稱AES加密器對(duì)象aesencryptor。

在實(shí)際應(yīng)用中,我們分別調(diào)用CreateEncryptor、CreateDecryptor就能實(shí)現(xiàn)對(duì)數(shù)據(jù)文件或系統(tǒng)其他關(guān)鍵性文件的加密和解密。圖2是數(shù)據(jù)文件加密與解密的示意圖。

基于AES加密算法的數(shù)據(jù)文件安全策略與實(shí)現(xiàn)

目前加密強(qiáng)度最高的對(duì)稱加密算法是AES加密算法,其強(qiáng)大的能力正成為加密所有形式電子信息的標(biāo)準(zhǔn),目前來(lái)講沒(méi)有已知的密碼分析攻擊可以解密AES密文,因此我們采用AES算法對(duì)數(shù)據(jù)文件進(jìn)行加密是十分安全的,同時(shí)考慮到AES加密算法的實(shí)現(xiàn)程序,在計(jì)算效率、內(nèi)存需求、硬件和軟件可適用性、簡(jiǎn)易性、靈活性等方面的優(yōu)勢(shì)可向用戶提供很高安全保護(hù)。AES加密算法的應(yīng)用范圍十分廣泛,除了應(yīng)用在數(shù)據(jù)文件加密之外,正廣泛應(yīng)用在通信、網(wǎng)絡(luò)、金融等各個(gè)方面。

小知識(shí)之framework

框架(framework)是一個(gè)基本概念上的結(jié)構(gòu),用于去解決或者處理復(fù)雜的問(wèn)題。這個(gè)廣泛的定義使用的十分流行,尤其在軟件概念??蚣芤材苡糜跈C(jī)械結(jié)構(gòu)。