鄧奎彪,孔軼艷,趙娟,趙啟飛
(柳州職業技術學院電子信息工程系,柳州 545006)
基于AES物聯網文本數據加密算法研究
鄧奎彪,孔軼艷,趙娟,趙啟飛
(柳州職業技術學院電子信息工程系,柳州 545006)
物聯網是最近出現的動態智能網絡,這種網絡能讓大量的文本數據在上面傳輸,這極大地方便人們的生活。然而,隨之出現數據安全問題。利用AES加密算法保證數據的隱私性和安全性,最后,用Java語言編程驗證該算法的有效性和可行性。
物聯網;加密算法;文本數據
最近幾年物聯網技術得到了蓬勃發展,共享文本數據正以前所未有的速度呈幾何級數在物聯網中增長和累積,然而這些共享的文本數據與人們的隱私生活有著千絲萬縷的關系,且這些文本數據相互之間的關聯度非常高,因此對物聯網中共享文本數據的傳輸安全及隱私的保護變得越來越來重要,實事上,物聯網文本數據傳輸安全問題隨著物聯網的廣泛應用已為一個新的重要的熱點問題。由于物聯網應用系統中的文本數據大多是一些應用場景的實時數據,那么就要求加密算法不僅要有很高的安全度,并且要求加密實現能在有效的短時間內完成。DES算法由于分組相對不長、密鑰又短、密碼生命周期也短、運算速度既慢且安全度又低,不難抵御差分攻擊和相關密鑰攻擊,橢圓曲線密碼學(ECC)是基于橢圓曲線數學的一種公鑰密碼的方法,橢圓密碼體制與RSA、DSA等公鑰體制相比有以下兩個優點:一是對帶寬要求比相對低,二是存儲空間占用比較小,但有一個不可忽視的缺點,其加密和解密操作的實現明顯比其他機制花費的時間要長很多。由于它的速度較慢,那么在物聯網數據傳輸的過程中無法實現實時數據信息加密。差分攻擊、相關密鑰攻擊等各種針對DES算法的所有攻擊方法,對AES算法沒有實質性威脅。到目前為止,還沒有官方報道AES算法曾被破譯過。密鑰建立時間短,靈敏性好、內存要求低是AES算法的三大特點,因此AES算法非常適合于文本數據傳輸在物聯網中的加密。
AES算法是屬于一種典型的對稱加密算法,AES算法中的所有操作以字節(Byte)作為基本單位,算法用到的變量都以字節作為基本單位。所有的加密過程都是在一個4×4的字節矩陣上實施的,這個矩陣也被稱之為“體(state)”,其初值就是一個明文區塊(矩陣中一個元素大小和明文區塊中的一個Byte相對應)。算法從輪密鑰加開始,用N表示一個數據分組加密總的輪數。AES算法前N-1輪由字節代替、行移位、列混合和輪密相加這四種不同變換構成。但是在最后一輪只有三個變換,即第N輪沒有變換列混合。需要特別指出的是最前面的第一輪有一個輪密鑰相加起始的單變換,這個起始的單變換可以看作是0輪。AES加密算法的流程見下面的圖1。
從上面的流程圖中不難發現為了增加算法的安全性,首尾都使用了輪密鑰加。如果將其他不需要密鑰的階段放在了首尾的話,在不知道密鑰的情形下就能夠很容易求出他的逆,這樣就容易降低算法的安全性。

圖1 AES算法加密的框圖
下面簡要說明4個變換:
①字節代替(SubBytes):通過一個非線性的替換函數(S盒),把矩陣中的每一個字節依據下面的規則替換成為一個新的字節。具體的規則是:以該字節的高4位作為行值,低4位作為列值,在S盒中找出對應行和列,其行和列相交處的元素就是對應的新字節。例如,十六進制數{57}。在S盒中對應的行和列分別是5和7,S盒中5行和7列相交對應的元素值是{5B},也就是十六進制數{57}被{5B}代替。
②行移位變換(ShiftRows):實質上是一個簡單的置換,就是將矩陣中除第一行外其它行進行循環式移位。具體的算法是:矩陣的第一行字節固定不動,然后把第二行字節循環左移一個字節,其次再把矩陣的第三行字節循環左移兩個字節,最后是的第四行循環左移三個字節,詳細的變化如圖2所示。
③列混合(MixColumns):是為了充分混合矩陣中各個直列的操作,也是AES最具技巧性的部分,該步驟使用線性轉換來混合每列內的四個字節。
④輪密鑰加(AddRoundKey):是指當前分組和密鑰擴展的一部分進行按位異或。輪密鑰加變換過程雖然相對比較簡單,卻影響了矩陣(State)中的每一位,尤其是密鑰擴展的復雜性直接影響AES算法的安全。

圖2 行移位變換
關于AES解密算法實現有多種可行的方案,在這里我們采用直接解密算法。首先利用四個步驟:逆字節代替(InvSubBytes)、逆行移位(InvShiftRows)、逆列混合(InvMixCloumns)和輪密鑰加(AddRoundKey)的逆,然后將次序與加密中的完全顛倒過來,直接解密算法能夠很容易得到所要的真實的文本數據。直接解密算法步驟本身和加密法不同,并且出現的先后的順序也不一樣。其解密算法框圖見圖3。

圖3 AES算法解密的框圖
Java是一種非常簡潔的“面向對象”程序設計語言,使用Java語言編寫的程序,只需要做少量的修改,甚至有時根本不需要修改即可在Windows、MacOS、UNIX不同的平臺上運行。正因為如此Java語言得到廣泛應用,下面給出文本數據加密解密的AES程序中的Java語言關鍵代碼。


在Windows平臺上用記事本編寫Java程序,編譯運行得到下面的界面,很顯然AES加密解密對文本的隱私能起到很好的保護作用。

由于信息技術的不斷發展,文本數據在物聯網中的運用會越來越多。那么對這些數據的隱私保護應該是大勢所趨,將AES算法用于物聯網中的數據加密和解密問題,具有很現實的意義。用Java語言實現動態演示過程有助于理解AES算法的基本思想和實現過程。
[1]李興華.Java開發實踐經典[M].北京:清華大學出版社,2009.
[2]桂小玲,張學軍,趙建軍等.物聯網信息安全[M].北京:機械工業出版社,2007.
[3]梁棟.Java加密與解密的藝術[M].北京:機械工業出版社,2013.
Research on Text Data Encryption Algorithm in Internet of Things Based on AES
DENG Kui-biao,KONG Yi-yan,ZHAO Juan,ZHAO Qi-fei
(School of Electronics and Information,Liuzhou Vocational&Technical College,Liuzhou 545006)
Recently,the Internet of Things is a dynamic smart network which allows the communication among a great deal of the text data,and makes our life more convenient.However,the security problems of data also come up.Ensures the privacy and security of data based on AES encryption algorithm,this algorithm has been verified effective and feasible by applying the Java language programming.
Internet of Things;Encryption Algorithm;Text Data
1007-1423(2017)10-0011-04
10.3969/j.issn.1007-1423.2017.10.003
鄧奎彪(1970-),男,湖北荊門人,博士研究生,工程師,研究方向為混沌同步、物聯網技術
孔軼艷(1981-),女,廣西柳州人,碩士研究生,研究方向為信息與通信工程
趙娟(1985-),女,湖南省邵陽人,碩士研究生,講師,研究方向為物聯網技術、數據融合技術
趙啟飛(1982-),男,山東即墨人,博士研究生,工程師,研究方向為網絡優化、能耗優化
2017-03-25
2017-04-01
廣西教育廳自然科學基金項目(No.KY2015YB399)、廣西高校中青年基礎能力提升項目(No.KY2016YB637)