国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32單片機(jī)的AES算法優(yōu)化與實(shí)現(xiàn)

2020-08-03 03:05:34許韞韜呂志剛黃義國(guó)李曉艷
自動(dòng)化儀表 2020年7期
關(guān)鍵詞:加解密解密密鑰

許韞韜,呂志剛,黃義國(guó),2,李曉艷

(1.西安工業(yè)大學(xué)電子信息工程學(xué)院, 陜西 西安 710021;2.江蘇無(wú)線電廠有限公司,江蘇 南京 210012)

0 引言

當(dāng)今社會(huì),隨著時(shí)代的不斷進(jìn)步,人類的科技生活已經(jīng)逐步邁入信息化的時(shí)代。然而,人們?cè)谙硎苄畔⑼ㄐ潘鶐?lái)的便利和快捷的同時(shí),難免會(huì)遇到信息泄漏或竊取事件,保障重要信息通信的安全性已逐漸成為社會(huì)關(guān)注的熱點(diǎn)。密碼學(xué)是保證信息通信安全的有效辦法之一,人們可以利用密碼學(xué)中的各種數(shù)據(jù)加密算法,對(duì)一些重要的數(shù)據(jù)信息進(jìn)行加密處理,從而有效提高信息的安全防護(hù)能力,降低信息在通信過(guò)程中泄露的風(fēng)險(xiǎn),有效保護(hù)人們的信息安全[1-2]。

在實(shí)際的加解密處理中,高級(jí)加密標(biāo)準(zhǔn)(advanced encryption standard,AES)是現(xiàn)階段通用的區(qū)塊分組式加密標(biāo)準(zhǔn)。其硬件實(shí)現(xiàn)方式相對(duì)于軟件實(shí)現(xiàn),具有更高的物理安全性和運(yùn)行速率。在密碼學(xué)中,對(duì)稱分組密碼算法能夠完成置換運(yùn)算的基本結(jié)構(gòu)就是S盒(substitution-box)。密碼學(xué)的不斷革新,推動(dòng)了密碼破解技術(shù)的發(fā)展。由于各種攻擊方法相繼涌現(xiàn),AES算法在密碼學(xué)的地位也受到了一定的沖擊。其主要原因在于,AES算法自身仍存在不足。諸如算法結(jié)構(gòu)層次上具有一定的缺陷,加、解密的結(jié)構(gòu)不對(duì)稱,擴(kuò)展密鑰的安全等級(jí)不高等[3]。針對(duì)AES算法在密鑰擴(kuò)展過(guò)程存在的不足,提出了一種優(yōu)化方案,分別通過(guò)MATLAB仿真軟件和STM32處理器對(duì)優(yōu)化后的AES算法進(jìn)行了研究。該算法具有很好的安全性和可靠性。

1 AES算法及優(yōu)化

1.1 算法概述

AES算法又稱Rijndael算法,是現(xiàn)階段加密方面使用最為廣泛的對(duì)稱分組式算法之一[4]。AES算法的制定是為了替代已被攻破的美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)(data encryption standard,DES)算法。AES算法在算法結(jié)構(gòu)上采用的是SPN結(jié)構(gòu),通過(guò)特殊迭代密碼,可以有效地抵御現(xiàn)有的多種密碼攻擊方式[5]。由此可見(jiàn),AES算法的抗密碼能力要遠(yuǎn)遠(yuǎn)強(qiáng)于被淘汰的DES算法,同時(shí)AES算法還擁有良好的可擴(kuò)展性。

AES算法作為現(xiàn)階段常用的對(duì)稱分組式加密算法,其明文分組的長(zhǎng)度為128位。算法在加解密處理過(guò)程中所涉及的密鑰長(zhǎng)度主要有AES-128、AES-192和AES-256三種,分別表示128位、192位、256位的密鑰長(zhǎng)度。根據(jù)矩陣形式,使矩陣中的每個(gè)字節(jié)按照由上至下和由左至右的秩序進(jìn)行排列,從而構(gòu)成由16個(gè)字節(jié)組成的有序矩陣。通過(guò)這種方式,構(gòu)成了AES算法分組的基本結(jié)構(gòu)。AES算法對(duì)語(yǔ)音信息進(jìn)行加密和解密的處理過(guò)程,其實(shí)質(zhì)是由對(duì)應(yīng)的矩陣進(jìn)行相應(yīng)的變化實(shí)現(xiàn)的。在矩陣進(jìn)行變換的過(guò)程中得到的中間態(tài)稱為狀態(tài)矩陣。對(duì)這些狀態(tài)矩陣進(jìn)行不同次數(shù)的迭代輪變換,可實(shí)現(xiàn)對(duì)信息的加密和解密處理[6]。根據(jù)密鑰長(zhǎng)度的不同,AES算法在加密以及解密的兩個(gè)過(guò)程中[7]與之相應(yīng)的所執(zhí)行的迭代次數(shù)也不相同。三種加密算法的加密輪數(shù)如表1所示。

表1 三種加密算法的加密輪數(shù)

密鑰長(zhǎng)度以及分組大小在運(yùn)算過(guò)程中都是以字節(jié)為單位,而每個(gè)字節(jié)的長(zhǎng)度為32位。AES算法在進(jìn)行加解密的過(guò)程中,當(dāng)使用的密鑰長(zhǎng)度越長(zhǎng)時(shí),算法在加解密的過(guò)程中需要操作的加解密的輪數(shù)也會(huì)隨之變得更多。此時(shí)相應(yīng)的算法安全性也變高,但缺陷是算法的運(yùn)行效率會(huì)受到影響,解密所使用的時(shí)間變得更長(zhǎng)。所以用戶需要根據(jù)實(shí)際的項(xiàng)目需求選擇合適的密鑰長(zhǎng)度,達(dá)到相應(yīng)的安全級(jí)別。由于語(yǔ)音數(shù)據(jù)量大、變化速率快,在確保AES算法的安全性的同時(shí),實(shí)現(xiàn)盡可能高的執(zhí)行效率。通過(guò)對(duì)幾種算法在運(yùn)行效率以及算法安全程度的對(duì)比分析,最終選擇執(zhí)行效率和安全性都相對(duì)較高的AES-128算法,實(shí)現(xiàn)對(duì)語(yǔ)音信息的加密以及解密操作。

1.2 密鑰擴(kuò)展算法

利用初始密鑰進(jìn)行迭代處理生成算法加解密所需要的子密鑰的過(guò)程就是密鑰的擴(kuò)展。在這個(gè)過(guò)程中,需要用到密鑰擴(kuò)展算法完成初始密鑰向子密鑰的轉(zhuǎn)換,然后將生成的子密鑰應(yīng)用到算法的加解密過(guò)程中。選擇AES算法類型為AES-128,在完成一次明文向密文的轉(zhuǎn)換過(guò)程需要執(zhí)行10輪運(yùn)算。但是根據(jù)實(shí)際測(cè)試發(fā)現(xiàn),運(yùn)算速率還是無(wú)法滿足對(duì)語(yǔ)音數(shù)據(jù)的加密要求。通過(guò)查閱相關(guān)資料后,將10輪算法精簡(jiǎn)至6輪運(yùn)算,在保證算法安全性的基礎(chǔ)上,算法的運(yùn)行速率也得到大幅提升。據(jù)此,AES算法完成6輪運(yùn)算共產(chǎn)生896位密鑰。

假定選用Wi來(lái)表示密鑰矩陣K中的第i列對(duì)應(yīng)的數(shù)值,根據(jù)密鑰擴(kuò)展算法遞歸得到Wi的數(shù)值完全是由Wi-1和Wi-4決定的。AES算法在進(jìn)行密鑰擴(kuò)展的過(guò)程是依據(jù)式(1)和式(2)執(zhí)行的。其擴(kuò)展規(guī)則為:如果i的值不是4的整數(shù)倍時(shí),只需要把Wi-1和Wi-4對(duì)應(yīng)的數(shù)組進(jìn)行異或變換就可以得到Wi;當(dāng)i的數(shù)值為4的整數(shù)倍的時(shí)候,式(2)中的Wi-1需要通過(guò)函數(shù)“g”變換后得到結(jié)果,再將計(jì)算結(jié)果與Wi-4進(jìn)行異或運(yùn)算得到Wi。

Wi=Wi-4?Wi-1,i不是4的倍數(shù)

(1)

Wi=Wi-4?g(Wi-1),i不是4的倍數(shù)

(2)

式中:Wi、Wi-1、Wi-4分別為密鑰矩陣K中的第i列、第(i-1)列、第(i-4)列所對(duì)應(yīng)的矩陣。

AES算法在完成初始密鑰生成輪密鑰時(shí)要用到輪常量數(shù)組Rcon[i]。它是一個(gè)4×10常量數(shù)組,同時(shí)數(shù)組的每一列均含有4個(gè)字節(jié)。其中:Rcon[i]每列的高8位均是由數(shù)組RC[i]組成,余下的位都用0補(bǔ)充,即Rcon[i]=(RC[i],0,0,0)。密鑰擴(kuò)展過(guò)程中的輪常量取值如表2所示[8]。

表2 輪常量取值

根據(jù)上述的密鑰擴(kuò)展過(guò)程,以W0-3作為用戶設(shè)定的初始密鑰,通過(guò)密鑰擴(kuò)展算法得到輪密鑰W4-7。密鑰擴(kuò)展過(guò)程如圖1所示。

函數(shù)“g”是經(jīng)過(guò)三個(gè)基本變換得到的復(fù)雜函數(shù),即循環(huán)移位(RotWord)、字節(jié)代換(SubWord)和輪常量異或[11-12]。若輸入數(shù)據(jù)為W=(B0,B1,B2,B3),通過(guò)RotWord變換后得到 (B1,B2,B3,B0),再經(jīng)過(guò)SubWord變換后得到(B1a,B2a,B3a,B0a),最后通過(guò)與RC[i]異或運(yùn)算得到g(W),并將得到的結(jié)果g(W)運(yùn)用于式(1)、式(2)的運(yùn)算過(guò)程。

圖1 密鑰擴(kuò)展過(guò)程圖

1.3 算法優(yōu)化

在加解密的過(guò)程中,AES算法對(duì)語(yǔ)音數(shù)據(jù)信息進(jìn)行加密以及解密所使用的輪密鑰均是通過(guò)初始的密鑰進(jìn)行擴(kuò)展得到的。因?yàn)檫@種擴(kuò)展方式的存在,導(dǎo)致后續(xù)所生成的輪密鑰以及后續(xù)通過(guò)迭代生成的密鑰都與初始密鑰存在較強(qiáng)的關(guān)聯(lián)性。這種關(guān)聯(lián)性容易導(dǎo)致初始密鑰被逆向推出來(lái),從而造成密鑰系統(tǒng)被破解的危險(xiǎn)[9]。

通過(guò)查閱相關(guān)資料,并依據(jù)原始算法在對(duì)密鑰擴(kuò)展中存在的不足,提出了AES算法的改進(jìn)方案[10]。具體的改進(jìn)方案為:首先通過(guò)對(duì)初始密鑰矩陣[W0,W1,W2,W3]進(jìn)行行輸入、列輸出的置亂操作,然后生成狀態(tài)矩陣[A0,A1,A2,A3];再對(duì)狀態(tài)矩陣與初始密鑰矩陣進(jìn)行異或變化,得到后續(xù)生成子密鑰所必須的種子密鑰矩陣[W4,W5,W6,W7];最后依據(jù)原始AES算法的密鑰擴(kuò)展過(guò)程,以種子密鑰替代初始密鑰繼續(xù)完成生成子密鑰的操作,經(jīng)過(guò)多次迭代后生成改進(jìn)后算法所需要的所有的子密鑰。改進(jìn)后的密鑰擴(kuò)展過(guò)程如圖2所示。

圖2 改進(jìn)后的密鑰擴(kuò)展過(guò)程圖

通過(guò)改進(jìn)算法與原始算法在密鑰擴(kuò)展的方式對(duì)比可知,改進(jìn)后的算法通過(guò)對(duì)初始密鑰與輪密鑰進(jìn)行列輸入與行輸出的置亂操作,可以有效降低初始密鑰和輪密鑰間的關(guān)聯(lián)性。其次,再將置亂后的兩個(gè)矩陣相異或變換。這個(gè)過(guò)程可以使得初始密鑰矩陣和種子密鑰矩陣之間只有對(duì)應(yīng)的字之間有關(guān)聯(lián)。通過(guò)對(duì)兩個(gè)矩陣處理,進(jìn)行異或變換可以防止出現(xiàn)破解的可能。最后,用得到的種子密鑰代替初始密鑰,經(jīng)過(guò)密鑰擴(kuò)展生成加解密過(guò)程所需要的全部子密鑰。通過(guò)分析發(fā)現(xiàn),該優(yōu)化方案不僅最大程度地繼承了原有密鑰擴(kuò)展算法中的結(jié)構(gòu),而且加入的操作并沒(méi)有降低算法的執(zhí)行效率。

在密鑰長(zhǎng)度方面,密鑰長(zhǎng)度是由種子密鑰[W4,W5,W6,W7]([W0,W1,W2,W3]與[A0,A1,A2,A3]的異或結(jié)果)決定的。因此對(duì)于破解者來(lái)說(shuō),想要利用子密鑰來(lái)推導(dǎo)出初始的密鑰,至少需要逆推232次;而想要破解整個(gè)密鑰系統(tǒng),攻擊者至少要完成2128次窮舉[11]。由此可見(jiàn),改進(jìn)后的方案增強(qiáng)了原有算法的抗密碼分析能力。

在運(yùn)行速度方面,由于改進(jìn)的算法在原有的算法的基礎(chǔ)上加入異或變化,而對(duì)算法的執(zhí)行效率會(huì)造成一定的影響。但是在實(shí)際的運(yùn)算過(guò)程中,如果只是增加了兩個(gè)異或運(yùn)算,在算法的整體運(yùn)行速率上并不會(huì)產(chǎn)生太大的影響。同時(shí),算法在處理信息的過(guò)程中,并沒(méi)有涉及很深的運(yùn)算,因此在運(yùn)行時(shí)間方面要遠(yuǎn)小于子密鑰生成所需時(shí)間。另外,由于處理的語(yǔ)音數(shù)據(jù)在數(shù)據(jù)量和數(shù)據(jù)長(zhǎng)度方面相對(duì)較大,算法本身并不需要進(jìn)行頻繁的更換分組數(shù)據(jù)的初始密鑰,可以根據(jù)語(yǔ)音數(shù)據(jù)的傳輸周期進(jìn)行適當(dāng)?shù)母鼡Q。因此,相對(duì)于原始算法在對(duì)密鑰擴(kuò)展所使用的時(shí)間,改進(jìn)后的算法在使用時(shí)間和運(yùn)行效率方面都得到了很大的提升。

2 優(yōu)化算法仿真分析

MATLAB是一種廣泛應(yīng)用于數(shù)值分析、數(shù)據(jù)處理和算法開(kāi)發(fā)的高級(jí)計(jì)算機(jī)語(yǔ)言。MATLAB平臺(tái)操作方便,同時(shí)擁有功能強(qiáng)大的工具箱和矩陣運(yùn)算能力,在科學(xué)研究和工程設(shè)計(jì)領(lǐng)域都有普遍應(yīng)用[12]。利用MATLAB對(duì)于數(shù)據(jù)處理的優(yōu)勢(shì),實(shí)現(xiàn)對(duì)改進(jìn)后算法的可行性的仿真分析。

在進(jìn)行MATLAB仿真中,可以使用平臺(tái)自帶的音頻讀入函數(shù)wavread()直接對(duì)輸入的語(yǔ)音樣本信息進(jìn)行加密和解密操作。其偽代碼描述如下。

voice Path = [pathname filename];

[voice Origin,fs,bit] =wavread(voice Path);

//讀入一個(gè)語(yǔ)音文件

Is_voice Cip(i,:) = cipher (Is_voice Origin(:,i),w,s_box,poly_mat)

//語(yǔ)音加密

Is_voice Recover(i,:) = inv_cipher(Is_voice Cip(i,:),w,inv_s_box,inv_poly_mat,AESIndex);

//語(yǔ)音解密

改進(jìn)算法對(duì)語(yǔ)音加解密的波形如圖3所示。改進(jìn)算法對(duì)語(yǔ)音加解密的頻譜如圖4所示。

圖3 改進(jìn)算法對(duì)語(yǔ)音加解密的波形圖

從圖3可以看出,原始語(yǔ)音采樣信號(hào)波形的波動(dòng)變化較大,而經(jīng)過(guò)改進(jìn)算法加密后的語(yǔ)音信號(hào)被完全覆蓋了,因此很好地證明優(yōu)化后的算法具備較好的混淆和擴(kuò)散的特性。

從圖4可以看出,原始語(yǔ)音信號(hào)的頻譜幅度變化不是很均勻,但是通過(guò)AES算法加密后,獲得的密文信號(hào)的頻譜較為平坦。通過(guò)AES算法對(duì)加密的信息解密后得到的語(yǔ)音信號(hào)的頻譜與原始信號(hào)頻譜基本一致,幾乎保全了原始信號(hào)的全部數(shù)據(jù)量。因此可以得出,采用改進(jìn)算法對(duì)語(yǔ)音數(shù)據(jù)加解密是可行的。改進(jìn)算法在語(yǔ)音信號(hào)加解密過(guò)程中體現(xiàn)了較好的加解密特性。

3 優(yōu)化算法STM32實(shí)現(xiàn)

為了進(jìn)一步驗(yàn)證改進(jìn)AES算法的可實(shí)施性,將其移植到STM32硬件平臺(tái)上,對(duì)算法的性能和執(zhí)行效率進(jìn)行測(cè)試與分析[13]。在硬件平臺(tái)完成AES算法移植后,通過(guò)輸入語(yǔ)音信息并通過(guò)示波器對(duì)算法加密和解密效果進(jìn)行驗(yàn)證。

在計(jì)算機(jī)上選取一段可視的英文字符串作為明文數(shù)據(jù),并將明文數(shù)據(jù)發(fā)送給STM32單片機(jī)。STM32將經(jīng)過(guò)算法加密后的密文數(shù)據(jù),通過(guò)串口通信上傳至計(jì)算機(jī)進(jìn)行顯示。計(jì)算機(jī)得到的是一串雜亂無(wú)章的密文數(shù)據(jù)。根據(jù)計(jì)算機(jī)顯示的數(shù)據(jù),需要加密的數(shù)據(jù)已經(jīng)被STM32硬件平臺(tái)加密。此時(shí),再將加密的數(shù)據(jù)下發(fā)至主控芯片進(jìn)行解密處理,通過(guò)硬件平臺(tái)解密處理后的數(shù)據(jù)與原始數(shù)據(jù)對(duì)比發(fā)現(xiàn),數(shù)據(jù)保持一致。根據(jù)試驗(yàn)現(xiàn)象分析發(fā)現(xiàn),AES算法在STM32硬件平臺(tái)上可以實(shí)現(xiàn)對(duì)字符串進(jìn)行加解密的操作。通過(guò)后續(xù)對(duì)不同長(zhǎng)度字符的硬件加解密測(cè)試,對(duì)測(cè)試數(shù)據(jù)進(jìn)行對(duì)比分析發(fā)現(xiàn),明文數(shù)據(jù)進(jìn)行加密和解密處理后的數(shù)據(jù)與原始數(shù)據(jù)基本保持一致,驗(yàn)證了AES算法的穩(wěn)定性和可靠性。

4 結(jié)論

針對(duì)原有AES算法在密鑰擴(kuò)展過(guò)程存在密鑰之間關(guān)聯(lián)性強(qiáng)的問(wèn)題,提出了一種優(yōu)化方案,通過(guò)對(duì)初始密鑰進(jìn)行置亂和異或操作,降低了初始密鑰與輪密鑰之間的關(guān)聯(lián)性,可以在原算法的基礎(chǔ)上提高抗密碼攻擊能力。在對(duì)AES算法理論進(jìn)行簡(jiǎn)要闡述后,分析現(xiàn)代傳統(tǒng)AES算法存在的缺陷并作出算法的改進(jìn),在原有算法基礎(chǔ)上有效提高算法的安全性和運(yùn)行效率。同時(shí),通過(guò)MATLAB平臺(tái)對(duì)改進(jìn)后的算法進(jìn)行仿真。結(jié)果表明,改進(jìn)后的算法提高了可靠性和安全性;通過(guò)在STM32硬件平臺(tái)上的實(shí)現(xiàn),進(jìn)一步驗(yàn)證了優(yōu)化算法的高效性和可實(shí)施性。

猜你喜歡
加解密解密密鑰
探索企業(yè)創(chuàng)新密鑰
解密“熱脹冷縮”
解密“一包三改”
密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
炫詞解密
一種對(duì)稱密鑰的密鑰管理方法及系統(tǒng)
基于ECC的智能家居密鑰管理機(jī)制的實(shí)現(xiàn)
電子取證中常見(jiàn)數(shù)據(jù)加解密理論與方法研究
基于FPGA的LFSR異步加解密系統(tǒng)
網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募咏饷芟到y(tǒng)研究
軟件工程(2014年11期)2014-11-15 20:02:46
同江市| 田林县| 清原| 广汉市| 精河县| 田东县| 霍邱县| 同心县| 咸宁市| 忻州市| 仙桃市| 日喀则市| 滕州市| 扎鲁特旗| 遂平县| 曲松县| 秦皇岛市| 德江县| 开封县| 海林市| 绥芬河市| 东乌珠穆沁旗| 临洮县| 彰化市| 天津市| 福海县| 通江县| 马鞍山市| 卓资县| 汕头市| 淳安县| 安康市| 瑞安市| 滨海县| 永定县| 蓬安县| 玉门市| 宣城市| 淮北市| 澎湖县| 巴马|