跳至內容

進階加密標準

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

進階加密標準(英語:AdvancedEncryptionStandard,縮寫:AES), 閣稱Rijndael 加密法(荷蘭語的發音:[ˈrɛindaːl],音似英文的「Rhine doll」), 是美國聯邦政府是採用的一種區塊加密標準。這个標準用來代替原先的 DES,已經予多方分析而且廣做全世界所使用。經過五冬的甄選流程,進階加密標準由美國國家標準和技術研究院(NIST)佇二空空一年十一月二六號發佈佇 FIPS PUB 一百九十七的,並佇二空空二年五月二十六成做有效的標準。這馬乎,進階加密標準已經成做對稱金鎖加密中上流行的演算法之一。

該演算法為比利時密碼學家 Joan Daemen 和 Vincent Rijmen 所設計的,結合兩位作者的名,以 Rijndael 為名投稿進階加密標準的甄選流程。

沿革

Rijndael 是由 Daemen 和 Rijmen 早期所設計的 Square 改良來;而且 Square 是由著 SHARK 發展而來。

佮伊無仝的前任標準 DES,Rijndael 使用的是代換-對網路換,毋是 Feistel 架構。

密碼說明

論真講,AES 和 Rijndael 加密法並無完全仝款(雖然佇實際應用中兩者會當相換), 因為乎 Rijndael 加密法會當支援閣較大範圍的區域佮金鎖長度:AES 的區域長度固定做一百二十八位元,金鎖長度會當是一百二十八,一百九十二抑兩百五十六位元;而且 Rijndael 使用的金鎖佮區塊長度攏會當是一百二十八,一百九十二抑兩百五十六位元。加密過程中使用的金鎖是由 Rijndael 金鎖生成方案產生。

大多數啦 AES 算講佇一个特別的有限域完成的。

AES 加密過程是佇一个四 × 四个位元組矩陣上運作,這个矩陣閣共號做「體(state)」,其初值就是一个明文區塊(矩陣一个元素大細就是明文區塊內底的一个 Byte)。(Rijndael 加密法因為支援閣較大的區域,其矩陣的「列數(Row number)」 會當看款的狀況增加)加密的時陣,各輪 AES 加密迴圈(除最後一輪外)攏包含四个部份:

一 . AddRoundKey—矩陣內底每一个位元組攏佮該次回合金鎖(round key)做 XOR 運算;每一个子金鎖由金鎖生成方案產生。 二 . SubBytes—透過一个非線性的替換函式,用走揣表的方式共每一个位元組替換做對應的位元組。 三 . ShiftRows—將矩陣內底每一个橫列進行循環式移位。 四 . MixColumns—為著充分透濫陣中各直行的操作。這步驟使用線性轉換來混合逐行內的四个位元組。最後一个加密迴箍中省略 MixColumns 撇步,而以另外一个 AddRoundKey 取代。

AddRoundKey 撇步

AddRoundKey 撇步,回合金鎖將會佮原矩陣合併。佇逐改的加密迴箍內底,攏會由主密鎖產生一把回合金鎖(透過 Rijndael 密鎖生成方案產生), 這支金鎖大細會佮原矩陣仝款,以與原矩陣內底每一个對應的位元組作互斥抑是(⊕)加法。

SubBytes 撇步

佇咧 SubBytes 撇步中間,矩陣內面的各位元組透過一个八位元的 S-box 進行轉換。這个步數提供了加密法非線性的變換能力。S-box 佮 $ GF ( 二 ^ { 八 } ) $ 上的乘法反元素有關,已經知具有良好的非線性特性。為著避免簡單代數性質的攻擊,S-box 結合了乘法反元素佮一个可逆的仿射變換矩陣建構來成做。另外佇咧建構 S-box 時,刁工避開了不動點佮反不動點,即以 S-box 替換位元組的結果比無問題閣較䆀排的結果。Rijndael S-box 條目有針對 S-box 的詳細描述。

ShiftRows 撇步

ShiftRows 描述矩陣的行操作。佇這个步驟內底,每一逝攏向左循環位徙某一个偏徙量。佇咧 AES 中(區域大細一百二十八位元), 第一个維持無變,第二行內底的每一个位元組攏向左循環移動一格。同理,第三行佮第四行向左循環位徙的偏徙量就分別是二和三。一百二十八个元佮一百九十二位元的區塊佇這个部份的循環位移的模式相仝。經過 ShiftRows 了後,矩陣內底每一徛列,攏是由輸入矩陣中的逐个無仝列中的元素組成。Rijndael 演算法的版本內底,偏移量佮 AES 有減著無仝款;對長度兩百五十六位元的區域,第一途猶閣維持無變,第二行、第三行、第四行的偏移量分別是一位元組、二位元組、三位元組。除了這以外,ShiftRows 操作步數佇咧 Rijndael 和 AES 中完全仝款。

MixColumns 撇步

佇咧 MixColumns 撇步,每一列的四个位元組透過線性變換互相結合。每一列的四个元素分別當做 $ 一 , x , x ^ { 二 } , x ^ { 三 } $ 這个係數,合併即為 $ GF ( 二 ^ { 八 } ) $ 中的一項外,紲落來就會當多項式佮一个固定的多項式 $ c ( x )=三 x ^ { 三 } + x ^ { 二 } + x + 二 $ 佇模仔 $ x ^ { 四 } + 一 $ 下相乘。若這个步驟會當看做是 Rijndael 有限域之下的矩陣乘法。MixColumns 函式接受四个位元組的輸入,輸出四个位元組,每一个輸入的位元組攏會對輸出的四个位元組造成影響。所以 ShiftRows 和 MixColumns 兩步驟為這个密碼系統提供了擴散性。

以下條目有嘿 MixColumns 閣較詳細的描述:Rijndael mix columns

加密演算法最佳化

使用三十二抑閣較濟位元定址的系統,可以事先對所有可能的輸入建立對應表,利用查表來實作 SubBytes,ShiftRows 和 MixColumns 程度達到加速的效果。遮爾作需要產生四个表,逐个表攏兩百五十六个格仔,一个格仔記載三十二位元的輸出;約佔去四 KB(四千空九十六位元組)記持體空間,即每一个表佔去一 KB 的記憶體空間。按呢喔一來,佇每一个加密迴箍內底,只要查十六改表,作十二遍三十二位元的 XOR 運算,以及 AddRoundKey 步驟中四擺三十二位元 XOR 運算。若使用的平台記持體空間不足四 KB,嘛會當利用循環交換的方式一改查一个兩百五十六格三十二位元的表。

毋過,實際實際的作中應該避免使用按呢的對應表,抑若無可能因為產生趕緊取命中佮若無差別抑若邊仔道攻擊做可能。

安全性

截至二空空六年,針對 AES 唯一的成功攻擊是邊仔道攻擊抑是社會工程學攻擊。美國國家安全局稽核了所有的參與競選 AES 的最終入圍者(包括講 Rijndael), 認為𪜶會當滿足美國政府傳達非機密檔案的安全需要。二空空三年六月,美國政府宣佈講 AES 加密機密檔案:

> The design and strength of all key lengths of the AES algorithm(i . e . , 一百二十八 , 一百九十二 and 兩百五十六)are sufficient to protect classified information up to the SECRET level . TOP SECRET information will require use of either the 一百九十二 or 兩百五十六 key lengths . The implementation of AES in products intended to protect national security systems and / or information must be reviewed and certified by NSA prior to their acquisition and use . > >

( 譯:AES 加密演算法(使用百二八,一百九十二,佮兩百五十六位元密鎖的版本)的安全性,佇設計結構佮密鎖的長度上俱已經達到保護機密資訊的標準。最高機密資訊的傳達,是至少需要一百九十二抑是兩百五十六位元的密鎖長度。用傳達國家安全資訊的 AES 實作產品,必須愛先由國家安全局審核認證,方能被發放使用。)

這個標誌對,由美國國家安全局 NSA 批准佇最高機密資訊上使用的加密系統頭擺會當予公開使用。真濟大眾化產品只使用一百二十八位元密鎖當做預設值;因為上懸機密檔案的加密系統就愛保證數十年以上的安全性,故推測 NSA 可能認為一百二十八个元傷短,才以閣較長的密鎖長度為上懸機密的加密保留了安全空間。

通常破解一个區塊加密系統上捷看的方式,是先對其他較弱版本(加密迴箍的次數較少)試各種的攻擊。AES 中一百二十八个元密鎖版本有十个加密迴圈,一百九十二位元密鎖版本有十二个加密迴圈,兩百五十六位元密鎖版本有十四个加密迴圈。到二空空六年為止,上出名的攻擊是針對 AES 七改加密迴圈的一百二十八位元密鎖版本,八擺加密迴圈的一百九十二位元密鎖版本,佮九改加密迴圈的兩百五十六位元密鎖版本所作的攻擊。

因為已經遭破解的弱版的 AES,其加密迴箍數佮原本的加密迴箍數相差無偌濟,有一寡密碼學家開始去煩惱 AES 的安全性:若是有人會當共該出名的攻擊加改進,這个區塊加密系統就會予人破解。佇密碼學的意義頂懸,只要存在一個方法,比散舉法閣較有效率,就會當予人看做是一種「破解」。 故一个針對 AES 一百二十八个元密鎖的攻擊若是「只」需要兩千一百二十計算複雜度(因為散舉法兩千一百二十八), 一百二十八位元密鎖的 AES 就算予人破解矣;就算方法在目前猶無實用。做對應用的角度來看,這款程度的破解猶原傷無切實際。上出名的暴力攻擊法是 distributed . net 針對六十四位元密鎖 RC 五所作的攻擊。

其他的爭議是注重 AES 的數學結構。無像其他的區域加密系統,AES 誠有氣當井當然有序的代數結構。雖然相關的代數攻擊猶未出現,但是有真濟學者認為,共安全性建立佇咧未曾經透徹研究過的結構頂懸是有風險的。Ferguson,Schroeppel 和 Whiting 自按呢寫講:「 . . . 咱真煩惱 Rijndael 演算法應用佇機密系統頂懸的安全性。」

二空空二年,Nicolas Courtois 和 Josef Pieprzyk 發表名做 XSL 攻擊的理論性攻擊,試圖展示 AES 一个藏佇咧的弱點。但是攻擊的數學分析有小可問題,推測應該是作者的計算是有誤。所以,這種攻擊法是毋是對 AES 奏效,猶原無解之謎。就現階段來講,XSL 攻擊 AES 的效果無十分顯示,故將的應用佇實際的狀況可能性並無懸。

邊仔道攻擊

邊仔道攻擊,閣講邊仔路攻擊、側信道攻擊,是一種因為對密碼系統的物理實現中取得的資訊的攻擊方式。伊無攻擊加密演算法本身,是攻擊遐的是無安全系統(會佇無經過意間洩漏資訊)上的加密系統。

二空空五年四月,D . J . Bernstein 公佈一種緊取時序的攻擊法,伊才破解一个裝載 OpenSSL AES 加密系統的客戶侍服器。為著欲設計使奉服器公佈所有的時序資訊,攻擊演算法使用兩億外條篩選過的明碼。需要加一个跳動的網際網路來講,按呢的攻擊方法並無實用。Bruce Schneier 講這个攻擊為「好的時序攻擊法」。

二空空五年十月,Eran Tromer 參另外兩个研究員發表一篇論文,展示有數種針對 AES 的快取時序攻擊法。

注釋

參考文獻

參照

冊目

  • Nicolas Courtois , Josef Pieprzyk , " Cryptanalysis of Block Ciphers with Overdefined Systems of Equations " . pp 兩百六十七喔–兩百八十七 , ASIACRYPT 兩千空二 .
  • Joan Daemen , Steve Borg and Vincent Rijmen , " The Design of Rijndael : AES-The Advanced Encryption Standard. " Springer-Verlag , 兩千空二 . ISBN 三石五百四十五五五百八十二 .

外部連結

  • The Rijndael Page(Forwards automatically to the AES Lounge ; use old version link to browse)
  • The Rijndael Page ( old version )
  • Literature survey on AES
  • Recordings of the pronunciation of " Rijndael "(八十五 KB wav file)
  • The archive of the old official AES website
  • FIPS PUB 一百九十七的 : the official AES standard(PDF file)
  • John Savard's description of the AES algorithm

實現

  • 參考代碼
  • 六十五 + 種 AES 硬體實施方案
  • A Javascript AES calculator showing intermediate values
  • Brian Gladman's BSD licensed implementations of AES
  • http : / / www . esat . kuleuven . ac . be / ~ rijmen / rijndael / rijndael-fst 抹三個性 . zip [Paulo Barreto 公佈的 AES 的 C 語言演算法]
  • D . J . Bernstein 所寫的開放著作權 AES 實施代碼
  • The GPL-licensed Nettle library also includes an AES implementation
  • Compact AES implementation in hardware by IP Cores
  • AES 加密佇咧 Windows 系統的實現 ( 自由公開原始碼 )
  • LGPL 授權的 AES 實現的 C 語言原始碼
  • 講法的 AES 硬體實施方案,Helion Technology
  • FPGA Based AES Implementation using Nios-II Processor

參見

  • 進階加密標準評選過程