iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Security

網路安全基礎概念與實作系列 第 6

Day 6: 常用的對稱加密標準 : AES

  • 分享至 

  • xImage
  •  

AES簡介

AES(Advanced Encryption Standard,先進加密標準)擁有高效能和極高的安全性,因此被廣泛應用在各種加密需求上,AES 是一個非常安全的加密標準,目前還沒有任何有效的方法能在合理的時間內破解它。而且它的加密和解密速度都很快,很適合實時應用和大量數據的處理,而且可以根據需求選擇不同的密鑰長度,提供不同等級的安全保護。

AES可以分成以下三種長度,位元長度越長提供的安全性越高。

  • 128 位元長
  • 192 位元長
  • 256 位元長

AES運作原理

將AES排列在4x4的格子中,總共是128位元的區塊,接下來進行(Substitution-Permutation) SP網路。AES的加密過程主要由多個回合(Rounds)組成,每回合包括一系列的轉換步驟,來增加數據的安全性。以下是AES運作的步驟:

  1. Initial Round
    AddRoundKey:
    將當前的狀態(State)與密鑰進行XOR運算。這是加密過程中的第一個步驟,來確保初始數據與密鑰相關。

  2. Main Rounds
    128 位元密鑰需要 10 個回合,192 位元需要 12 個回合,256 位元則需要 14 個回合,每個回合包含以下四個步驟:

  • SubBytes(字節代換):
    使用S盒(Substitution box)將狀態中的每個字節替 換為另一個字節。這是一種非線性代換,用於增加數據的混淆度。
  • ShiftRows(行移位):
    將狀態矩陣中的每一行按一定的規則進行循環移位:
    第二行左移1個字節。
    第三行左移2個字節。
    第四行左移3個字節。
    此步驟能夠將字節分布到不同的列中,增加擴散效果。
  • MixColumns(列混合):
    對每一列進行線性變換,將每一列的四個字節混合在一起。這個步驟透過多項式的運算,進一步增加數據的擴散性。
    (在最後一回合中,這步驟會被省略,以防止過度混合導致解密困難)
  • AddRoundKey(輪密鑰加法):
    將狀態與本輪的密鑰進行XOR運算。每回合的密鑰都是通過密鑰擴展(Key Expansion)從原始密鑰生成的。
  1. Final Round
    最後一回合與主回合類似,但省略MixColumns步驟,包含SubBytes(字節代換)、ShiftRows(行移位)、AddRoundKey(輪密鑰加法)

  2. 密鑰擴展(Key Expansion)
    使用 Key Schedule 將原始密鑰擴展成不同的回合密鑰。AES 的所有操作都在有限域(Finite Field),每個元素都是一個位元組,所有操作都會產生另一個位元組,保持在有限域內進行。

  3. 解密過程
    解密也就是加密過程的逆過程,步驟如下:AddRoundKey、InvShiftRows(逆行移位)、InvSubBytes(逆字節代換)、AddRoundKey、InvMixColumns(逆列混合)

AES的安全性

AES被認為是一種既安全又高效的對稱加密標準,主要是因為它能夠替換和置換,並作用於一個 4x4 的位元組格子,每個回合都增加混淆和擴散效果,而密鑰越長,就越難破解。AES的設計能有效抵抗許多已知的攻擊方式,像是線性攻擊和差分攻擊這些常見的密碼破解方法都很難成功,且AES經過大量的使用和驗證,證明了它的可靠性,因此AES成為目前最受信任的加密方法之一。


上一篇
Day 5: 密碼學概論
下一篇
Day 7: 使用Python來實作AES加密與解密
系列文
網路安全基礎概念與實作26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言