Proton 首頁

加密 > 加密類型 > AES 加密

什麼是 AES 加密?

密碼學中的 AES 是指進階加密標準(Advanced Encryption Standard),這是一種快速、高效且安全的加密演算法,已通過美國國家標準暨技術研究院(NIST)的認證。 它是一種對稱金鑰密碼,使用相同的金鑰來加密和解密資料。 這相對快速,非常適合用於加密大量靜態資料。

由於其強度與可靠性,AES 是最受歡迎且最常見的加密類型之一,廣泛應用於無線網路安全、資料與磁碟加密、線上支付系統、雲端儲存空間密碼管理程式,甚至政府與軍事應用程式。 美國政府使用 AES 加密來保護其機密資訊的安全,這也促成了其普及。

AES 演算法安全嗎?

是的。 2000 年,在經過非常徹底(新視窗)且公開的篩選程序後,NIST 宣布 AES(在此之前被稱為 Rijndael 演算法,由 Vincent Rijmen 和 Joan Daemen 建立)將取代 DES,成為其推薦(新視窗)的「非機密、公開披露的加密演算法,能夠在進入下個世紀後良好地保護敏感的政府資訊」。

根據 NIST,所有 AES 演算法的金鑰長度均被視為「足夠」保護高達「機密(Secret)」層級的分類資訊。 對於「最高機密(Top Secret)」資訊,則需要 AES-192 或 AES-256。

暴力破解攻擊

對於任何加密密碼而言,最基本的一種可能攻擊形式是暴力破解攻擊,這涉及嘗試每一種可能的金鑰組合,直到找到正確的金鑰為止。 

Frontier(新視窗) 是目前世界上已知最強大的公開超級電腦。 如果它將全部的運算能力都用於暴力破解 AES-128,仍然需要大約 10 至 12 兆年的時間,才能窮盡 AES-128 的所有可能組合。 這遠比宇宙的年齡還要漫長。 因此,即使在較低的位元大小下,AES 對於傳統電腦的暴力攻擊也具有極高的抵抗力。 

AES-256 進行暴力破解的難度是 AES-128 的 340 億億億億 (2¹²⁸) 倍。

雖然從理論上來說,葛洛夫演算法(Grover's algorithm)(新視窗)在面對量子威脅時會將對稱金鑰的安全性降低一半,但它們仍然具有相對較強的抗量子能力,特別是在使用 256 位元金鑰時。

金鑰攻擊

多年來,密碼學家已發表多種針對 AES 金鑰的理論攻擊,但這些攻擊不是在實務上不可行,就是只對使用較少輪數的 AES 實作有效(見下文)。 

最成功的嘗試,是 2011 年發表的理論性雙團攻擊(新視窗),可將暴力破解 AES 所需的時間縮短為原本的四分之一。 然而,即使如此,在任何目前或可預見的電腦硬體上暴力破解 AES,仍需要數十億年。 

目前已知沒有任何實用的金鑰攻擊能有效對付正確實作的 AES-128 或更高版本。 

側通道攻擊

側通道攻擊會透過尋找執行加密運算的電腦所洩漏的線索,試圖減少成功發動暴力破解攻擊所需的組合數量。 可透過檢查以下項目來取得線索:

  • 時間:電腦執行某項操作所需的時間
  • 電磁外洩
  • 音訊線索
  • 視覺線索(使用高解析度相機擷取)。

尤其是快取計時攻擊,已被證明在成功破解 AES 方面相當有效。 在最著名的案例中,研究人員於 2016 年成功復原(新視窗)AES-128 金鑰,只用了「約 6 到 7 個區塊的純文字或密文(理論上甚至單一區塊就已足夠)」。

然而,仍有多種方法可用來降低側通道攻擊的威脅:

  • 正確實作的 AES 可以防止資料外洩的途徑。
  • 整合 AES 指令集的硬體可進一步降低 AES 遭受側通道攻擊的暴露面。
  • 可使用隨機化技術來破壞受 AES 保護的資料與任何可透過側通道攻擊收集到的外洩資料之間的關聯。 

在許多情況下,側通道攻擊需要攻擊者在裝置解密資料時接近該裝置或具備實體存取權,不過若惡意軟體已安裝在裝置上,也可能發動遠端攻擊,尤其是在計時攻擊的情況下。

AES 的運作方式

AES 是一種區塊密碼,使用 128 位元、192 位元或 256 位元金鑰,以 128 位元區塊為單位加密和解密資料。 如前所述,加密和解密資料時使用的是相同的金鑰。 使用 128 位元金鑰的 AES 通常稱為 AES-128,AES-192 和 AES-256 亦然。

資料是透過多個輪次進行加密,每個輪次都由一系列數學運算組成。 

此程序從使用 Rijndael 的金鑰排程演算法開始,以從原始金鑰衍生出一系列新的輪金鑰。 這被稱為金鑰擴展。

接著,每個輪次由以下一項或多項(或其組合)運算組成:

1. 輪金鑰加法(Add Round Key):執行 XOR 互斥或運算(新視窗),以將要加密的資料(密文)與每個輪金鑰進行結合。

2. Sub Bytes:使用替代表來進一步打亂資料。 原理上,可以想像成你小時候用過的簡單替代密碼:將訊息中的每個字母替換為字母表中往後固定位置的另一個字母。

3. Shift Rows:每個 128 位元資料區塊由一個 16 位元的 4x4 區塊組成。 此操作會將區塊每一列中的每個位元組,依特定位移量向左移動。

4. 混淆行(Mix Columns):在區塊中的每一行執行額外的可逆線性變換。

這一系列轉換構成一輪,接著會依據金鑰大小,對資料重複指定次數的輪數:

  • AES-128 — 10 輪
  • AES-192 — 12 輪
  • AES 256 — 14 輪

要解密資料,只需將用於加密的所有步驟反向執行即可。 這需要原始秘密金鑰,才能使用各個反向輪金鑰逆轉整個流程。

為什麼 AES-256 比 AES-192 或 AES-128 更受青睞?

在目前和可預見的技術下,暴力破解 AES-128 所花費的時間將比宇宙的年齡還要長。 傳奇密碼學家 Bruce Schneier 甚至主張(新視窗),AES-128 可能比 AES-256 更強大,這得益於它擁有更強的金鑰排程——也就是從原始金鑰計算所有輪金鑰的演算法。

然而,AES-256 已成為對稱金鑰加密事實上的黃金標準。 它通常被視為更強大的選擇(儘管有些爭議),因為其較大的金鑰大小象徵著額外的安全邊際,如此一來,即使發現了能大幅削弱該演算法的方法,已加密的資料也依然安全。 隨著對抗量子能力的需求變得更加迫切,這一論點也變得更有說服力。 

AES-CBC 與 AES-GCM

直到不久之前,AES 通常使用密碼區塊鏈結(CBC)模式,其中每個純文字區塊在加密前,都會先與前一個密文區塊進行 XOR。 在 CBC 模式下使用時,需要 HMAC-SHA256 這類 HMAC(新視窗) 雜湊演算法來驗證資料。

然而,現在越來越常見的是 AES 使用 Galois/Counter(GCM)模式,這種模式採用計數器模式(新視窗)加密。 其主要優點在於,它使用伽羅瓦域(新視窗)來驗證資料,而無需額外的演算法。 因此,與使用可帶來高運算負擔的獨立驗證演算法相比,它的效率更高。

雖然搭配 HMAC 驗證的 AES-CBC 通常被認為是安全的,但 CBC 可能容易受到填充攻擊(新視窗)影響,例如 POODLE(新視窗)。 GCM 則不會。

硬體加速的 AES

大多數現代 CPU 都包含進階加密標準新指令(AES-NI(新視窗)),這是一組直接在處理器上執行 AES 運算的硬體指令。 這使 AES 的速度大幅提升,同時也有助於防止基於時序的旁路攻擊,因為這些運算發生在處理器的安全執行單元內部,因此攻擊者可利用的可觀測時序變化較少。

Proton 與 AES

我們廣泛使用 AES 來保護 Proton 產品:

事件和聯絡人會使用 AES-256 搭配 ECC 進行金鑰交換來保護,透過端對端加密確保您的隱私。

Proton VPN 主要聚焦於快速高效的 WireGuard® VPN 通訊協定(使用 ChaCha20),但 OpenVPN 連線使用 AES-256。

Proton Pass 使用 AES-256,將密碼、備註、身分和其他項目儲存在您的安全保管庫中。

Proton Drive 使用 ECC 進行金鑰交換,以 AES-256 端對端加密所有上載的檔案。 Proton Docs 和 Proton Sheets 也使用 AES-256 搭配以 ECC 為基礎的金鑰交換,不過其加密實作與 Proton Drive 的一般檔案加密方案有所不同。

Proton Mail 透過 OpenPGP 標準使用 AES-256 儲存電子郵件和附件。 甚至連用來解鎖您的電子郵件的私有金鑰,也會先以 AES-256 加密後,再儲存在伺服器上。

Proton Meet 使用 Messaging Layer Security(MLS)來加密音訊、視訊和聊天訊息,確保所有通訊都具備前向保密(PFS)與入侵後安全性(PCS)。 所有會議資料皆使用 AES-256-GCM 進行端對端加密。

降低 AES 加密攻擊的風險

安全性的強度取決於其最脆弱的環節,而這通常是您的密碼。 這意味著社交工程計畫、網路釣魚攻擊鍵盤記錄器(新視窗),同樣對經 AES 加密的資料構成威脅。 因此,即使使用了 AES,您也應該採取以下預防措施:

Proton

掌握您的資料

Proton 創立之初就是為了保護您的資料。 透過端對端加密、開放原始碼應用程式以及獨立稽核,您的資訊將始終屬於您。

關於 AES 加密的常見問題

哪個較好:AES 還是 DES?
哪個較好:AES 還是 RSA?
AES 的安全性有多強?

進一步瞭解加密