Download presentation
Presentation is loading. Please wait.
1
Advanced Encryption Standard
第5章 高階加密標準 Advanced Encryption Standard
2
AES的起源 DES應只用在舊系統,新系統應改用3DES (第六章),但3DES的軟體實作效能低落
為了要取代DES/3DES,NIST在1997年徵求新的AES計畫書,並要求新標準的安全強度要等同或強過3DES,而且也要大幅加強效能 NIST是在2001年11月完成整個評估,並且發表最終的標準(FIPS PUB 197) NIST最終選擇Rijndael作為AES演算法的建議規格 AES最終會取代3DES,但這個過程需要好幾年。在可預見的未來,NIST預期3DES仍會是美國政府公認的演算法標準
3
評選AES 安全性 實際的安全性:以相同長度的金鑰及區塊,和其他送交的演算法相互比較
隨機性(randomness):隨機重排輸入區塊而讓演算法的輸出無法辨識的程度 強固性健全性(soundness):演算法安全性的數學基礎 其他安全因素:在評選過程公開接受挑戰,包括任何能證明演算法實際的安全性並不如提交者所宣稱
4
評選AES 成本 授權要求:讓全世界都能非獨佔、免權利金的使用AES所指定的演算法 計算效率:計算效率的評估結果將同時適用於硬體和軟體的實作
記憶體需求:評選過程也會考慮以硬體和軟體實作演算法所需要的記憶體 記憶體需求的考量因素包含硬體實作所需要的邏輯閘數量,以及軟體實作所需要的RAM
5
評選AES 演算法和實作特性 彈性:演算法越彈性,就越能符合更多人的需求,但有些極端的功能並不實用
硬體和軟體適用性:不應將演算法實作限制在硬體,如果可以有效的以韌體實作,就是演算法彈性的一大優點 簡易性:演算法應該以設計的簡易程度而評斷其優劣
6
AES加密法 - Rijndael 由比利時的 Rijmen-Daemen 所設計
金鑰長度 128/192/256 位元,區塊長度 128 位元 不採用菲仕托架構,而是在每回合以取代和重排來平行處理整個資料區塊 每回合的回合金鑰由4個不同的字組(一字組為4bytes,共128位元)組成 有4種不同的階段,其一是重排,其他則是取代 特性: 能抵抗所有已知的攻擊 能在各種平台上快速執行,且程式碼小巧緊湊 •簡明易懂的設計 The Rijndael proposal for AES defined a cipher in which the block length and the key length can be independently specified to be 128,192,or 256 bits. The AES specification uses the same three key size alternatives but limits the block length to 128 bits. Rijndael is an academic submission, based on the earlier Square cipher, from Belgium academics Dr Joan Daemen and Dr Vincent Rijmen. It is an iterative cipher (operates on entire data block in every round) rather than feistel (operate on halves at a time), and was designed to have characteristics of: Resistance against all known attacks, Speed and code compactness on a wide range of platforms, & Design simplicity.
7
圖解AES的加密與解密過程
8
AES的資料結構 byte
9
第一階段:位元組的替代 位元組的正向取代方式稱為SubBytes 位元組的反向取代稱為InvSubBytes
稱為S-boxes的16 × 16 位元組矩陣,包含了所有8 位元數值(256個) 每個位元組最左邊的4 個位元所形成的數值,會當成列編號,而最右邊的4 個位元所形成的數值,則當成行編號 例如16進位數值{95}參照到S-boxes第9列、第5行的值{2A} 因此{95}就對映到{2A}
10
S-box
11
位元組的取代
12
第二階段:列的移位 列的正向移位稱為ShiftRows 列的反向移位稱為InvShiftRows
第1列並未改變 第2列的每個元素向左循環位移1個位元組 第3列向左循環位移2個位元組 第4列向左循環位移3個位元組 列的反向移位稱為InvShiftRows 讓後三列以反方向循環位移 也就是第2列向右循環位移l個位元 完整移位之後,一行裡的4位元組會分散到不同的四行
13
第二階段:列的移位
14
第三階段:行的混合 行的正向混合稱為MixColumns,是在每一行個別運作
每行裡的每個位元組會對映到新的數值,而此數值是行內所有4個位元組的函數 乘積矩陣是以質數多項式 m(x) =x8+x4+x3+x+1 在GF(28)執行
15
行的混合
16
行的混合 行的反向混合稱為InvMixColumns,是以下列的矩陣乘法定義: 因為
17
第四階段:新增回合金鑰 新增回合金鑰的正向轉換稱為AddRoundKey
狀態裡的128個位元會和回合金鑰的128個位元進行逐一位元的XOR運算 此運算能視為狀態裡某一行的4個位元組,和回合金鑰裡一個字元組的交互運算 也能視為位元組層級的運算 新增回合金鑰的反向轉換,與新增回合金鑰的正向轉換相同 因為XOR運算是其本身的反向運算
18
新增回合金鑰
19
AES的加密回合
20
AES的金鑰擴充 將128位元 (4字組) 金鑰擴充成 44/52/60 字組的陣列 金鑰擴充演算法的虛擬程式碼如下:
21
AES的金鑰擴充 RotWord:左移旋轉1byte SubWord:使用S-box替代 Rcon:回合常數
Rcon[j] = (RC[j], 0, 0, 0) RC[1] = 1 RC[j] = 2 RC[j1] (乘法定義在GF(28)中,m(x)=x8+x4+x3+x+1) 若Round key of Round 8為: EA D B5 8D BA D2 31 2B F5 60 7F 8D 29 2F 請求出round 9 的KEY之前8個byte。
22
AES的金鑰擴充
23
金鑰擴充的基本原理 設計的足以抵抗已知的攻擊 採用的特定規範 知道部分的加密金鑰或回合金鑰,也無法完全計算出其他的回合金鑰位元 可反向的轉換
在不同處理器皆能維持速度 藉由回合常數排除對稱性 將加密金鑰的差異擴散到回合金鑰 足夠的非線性 簡明易懂
24
習題5.4 明文:{01 02 03 … 0E 0F} 金鑰:{01 01 01 … 01 01} 以4*4矩陣列出原始明文內容
列出起始新增回合金鑰後之狀態值 列出替代位元組後之狀態值。 列出列的移位後之狀態值 列出行的混合後之狀態值
25
AES解密 AES的解密與加密不完全相同 但還是有解密演算法與和加密演算法轉換順序相同的版本
儘管加密和解密的金鑰排程形式相同,但是解密的轉換順序卻與加密不同 缺點是軟體或韌體模組需分別實作加密和解密功能 但還是有解密演算法與和加密演算法轉換順序相同的版本 需要改變金鑰排程 解密架構和加密架構要一致,必須交換解密回合的前兩階段和後兩階段
26
AES解密
27
實作的觀點( 8位元處理器) AES能夠很有效率的在8位元處理器實作 AddRoundKey是逐一位元的XOR運算
ShiftRows是簡單的位元組移位運算 SubBytes是位元組層級的運算,而且只需要256位元組的表格 MixColuITins的轉換需要 GF(28) 的矩陣乘法 MixColumns只要求乘以{02}和{03},只需要簡單的移位、條件式XOR、以及XOR運算
28
實作的觀點( 32位元處理器) 如果運算單位是32位元字組,32位元處理器的實作就能更有效率
重新定義步驟來使用32位元字組 事先計算256字組的4個表格 每回合的每一行只需要4個查表動作和4個XOR運算 儲存4K位元組的表格 Rijndael的開發人員相信,這簡潔效率的實作,是Rijndael被選為AES的最主要因素
29
總結 AES的: 起源 評選的標準 每一回合步驟的細節 金鑰擴充 實作的觀點
Similar presentations