AES 加密算法基本原理

AES 是?Advanced Encryption Standard 的縮寫泪电,是最常見的對稱加密算法瞬矩。AES 在密碼學中又稱 Rijndael 加密法姑廉,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準饭望。這個標準用來替代原先的 DES,已經(jīng)被多方分析且廣為全世界所使用澈侠。

AES基本原理

AES 的加密公式為 C=E(K,P)劫侧,其中 K 為密鑰,P 為明文,C 為密文烧栋。

AES 加密明文的過程是写妥,首先對明文進行分組,每組的長度都是 128 位劲弦,然后一組一組地加密耳标,直到所有明文都已加密醇坝。密鑰的長度可以是 128邑跪、192 或 256 位。

在加密函數(shù) E 中呼猪,會執(zhí)行一個輪函數(shù)画畅,除最后一次執(zhí)行不同外,前面幾輪的執(zhí)行是相同的宋距。以 AES-128 為例轴踱,推薦加密輪數(shù)為 10 輪,即前 9 輪執(zhí)行的操作相同谚赎,第 10 輪執(zhí)行的操作與前面不同淫僻。不同的密鑰長度推薦的加密輪數(shù)是不一樣的,具體見下面的表格壶唤。


加密時雳灵,明文按照 128 位為單位進行分組,每組包含?16 個字節(jié)闸盔,按照從上到下悯辙、從左到右的順序排列成一個 4 × 4 的矩陣,稱為明文矩陣迎吵。AES 的加密過程在一個大小同樣為 4 × 4 的矩陣中進行躲撰,稱為狀態(tài)矩陣,狀態(tài)矩陣的初始值為明文矩陣的值击费。每一輪加密結(jié)束后拢蛋,狀態(tài)矩陣的值變化一次。輪函數(shù)執(zhí)行結(jié)束后蔫巩,狀態(tài)矩陣的值即為密文的值谆棱,從狀態(tài)矩陣得到密文矩陣,依次提取密文矩陣的值得到 128 位的密文批幌。

以 128 位密鑰為例础锐,密鑰長度為 16 個字節(jié),也用 4 × 4 的矩陣表示荧缘,順序也是從上到下皆警、從左到右。AES 通過密鑰編排函數(shù)把密鑰矩陣擴展成一個包含 44 個字的密鑰序列截粗,其中的前 4 個字為原始密鑰用于初始加密信姓,后面的 40 個字用于 10 輪加密鸵隧,每輪使用其中的 4 個字。密鑰遞歸產(chǎn)生規(guī)則如下:

(1) 如果 i 不是 4 的倍數(shù)意推,那么由等式 w[i] = w[i-4] ⊕ w[i-1] 確定豆瘫;

(2) 如果 i 是 4 的倍數(shù),那么由等式 w[i] = w[i-4] ⊕ T(w[i-1]) 確定菊值。

加密的第 1 輪到第 9 輪的輪函數(shù)一樣外驱,包括 4 個操作:字節(jié)代換、行位移腻窒、列混合和輪密鑰加昵宇。最后一輪迭代不執(zhí)行列混合。另外儿子,在第一輪迭代之前瓦哎,先將明文和原始密鑰進行一次異或加密操作。?


AES 加密的輪函數(shù)操作

字節(jié)代換 SubBytes

矩陣中的各字節(jié)通過一個 8 位的 S-box 進行轉(zhuǎn)換柔逼。這個步驟提供了加密法非線性的變換能力蒋譬。S-box 與 GF(2^8)上的乘法反元素有關(guān),已知具有良好的非線性特性愉适。為了避免簡單代數(shù)性質(zhì)的攻擊犯助,S-box 結(jié)合了乘法反元素及一個可逆的仿射變換矩陣建構(gòu)而成。此外在建構(gòu) S-box 時儡毕,刻意避開了固定點與反固定點也切,即以 S-box 替換字節(jié)的結(jié)果會相當于錯排的結(jié)果。



行位移?ShiftRows

在此步驟中腰湾,每一行都向左循環(huán)位移某個偏移量雷恃。在 AES 中(區(qū)塊大小 128位 ),第一行維持不變费坊,第二行里的每個字節(jié)都向左循環(huán)移動一格倒槐。同理,第三行及第四行向左循環(huán)位移的偏移量就分別是 2 和 3附井。128 位和 192 位的區(qū)塊在此步驟的循環(huán)位移的模式相同讨越。經(jīng)過 ShiftRows 之后,矩陣中每一豎列永毅,都是由輸入矩陣中的每個不同列中的元素組成把跨。Rijndael 算法的版本中,偏移量和 AES 有少許不同沼死;對于長度 256 比特的區(qū)塊着逐,第一行仍然維持不變,第二行、第三行耸别、第四行的偏移量分別是 1 字節(jié)健芭、2 字節(jié)、3 字節(jié)秀姐。除此之外慈迈,ShiftRows 操作步驟在 Rijndael 和 AES 中完全相同。



列混合?MixColumns

在 MixColumns 步驟省有,每一列的四個字節(jié)通過線性變換互相結(jié)合痒留。每一列的四個元素分別當作 1 , x , x^2 , x^3 的系數(shù),合并即為GF(2^8)中的一個多項式锥咸,接著將此多項式和一個固定的多項式 c(x)=3x^3+x^2+x+2 在 modulo x^4 + 1 下相乘狭瞎。此步驟亦可視為 Rijndael 有限域之下的矩陣乘法。MixColumns 函數(shù)接受 4 個字節(jié)的輸入搏予,輸出 4 個字節(jié),每一個輸入的字節(jié)都會對輸出的四個字節(jié)造成影響弧轧。因此 ShiftRows 和 MixColumns 兩步驟為這個密碼系統(tǒng)提供了擴散性雪侥。



輪密鑰加 AddRoundKey

回合密鑰將會與原矩陣合并。在每次的加密循環(huán)中精绎,都會由主密鑰產(chǎn)生一把回合密鑰(通過 Rijndael 密鑰生成方案產(chǎn)生)速缨,這把密鑰大小會跟原矩陣一樣,以與原矩陣中每個對應(yīng)的字節(jié)作異或(⊕)加法代乃。



分享學習筆記和技術(shù)總結(jié)旬牲,內(nèi)容涉及 Java 進階、架構(gòu)設(shè)計搁吓、前沿技術(shù)原茅、算法與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫堕仔、中間件等多個領(lǐng)域擂橘,歡迎關(guān)注。本文首發(fā)于微信公眾號“后端開發(fā)那點事兒”摩骨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末通贞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子恼五,更是在濱河造成了極大的恐慌昌罩,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灾馒,死亡現(xiàn)場離奇詭異茎用,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門绘搞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彤避,“玉大人,你說我怎么就攤上這事夯辖×鹪ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵蒿褂,是天一觀的道長圆米。 經(jīng)常有香客問我,道長啄栓,這世上最難降的妖魔是什么娄帖? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮昙楚,結(jié)果婚禮上近速,老公的妹妹穿的比我還像新娘。我一直安慰自己堪旧,他們只是感情好削葱,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淳梦,像睡著了一般析砸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爆袍,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天首繁,我揣著相機與錄音,去河邊找鬼陨囊。 笑死弦疮,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的谆扎。 我是一名探鬼主播挂捅,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼堂湖!你這毒婦竟也來了闲先?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤无蜂,失蹤者是張志新(化名)和其女友劉穎伺糠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斥季,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡训桶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年累驮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舵揭。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡谤专,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出午绳,到底是詐尸還是另有隱情置侍,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布拦焚,位于F島的核電站蜡坊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赎败。R本人自食惡果不足惜秕衙,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望僵刮。 院中可真熱鬧据忘,春花似錦、人聲如沸妓笙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寞宫。三九已至,卻和暖如春拉鹃,著一層夾襖步出監(jiān)牢的瞬間辈赋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工膏燕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留钥屈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓坝辫,卻偏偏與公主長得像篷就,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子近忙,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容