Proton

什麼是 AES 加密?

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

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

AES 演算法安全嗎?

是的。 2000 年,在經過非常周詳(新視窗)且公開的遴選流程後,NIST 宣布 AES(當時稱為 Rijndael 演算法,由 Vincent Rijmen 和 Joan Daemen 創建)將取代 DES,成為其建議採用(新視窗)的「未分類、公開揭露,且能在下個世紀持續保護政府敏感資訊的加密演算法」。

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

暴力破解攻擊

任何加密密碼最基本可能遭受的攻擊形式,就是暴力破解攻擊,也就是嘗試所有可能的金鑰組合,直到找到正確的那一個。 

Frontier(新視窗) 是目前全球公開已知最強大的超級電腦。 即使它將全部運算輸出都用於暴力破解 AES-128,仍然需要約 10–12 兆年,才能嘗試完 AES-128 的所有可能組合。 這遠遠超過宇宙的年齡。 因此,即使在較低的位元大小下,AES 對傳統電腦的暴力破解攻擊仍具有極高的抵抗力。 

AES-256 比 AES-128 難以暴力破解 3400 澗倍(2¹²⁸)。

雖然 Grover 演算法(新視窗) 在理論上會使對稱金鑰面對量子威脅(新視窗)時的安全性減半,但它們仍具有相當程度的抗量子能力,尤其是在使用 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 RoundKey:執行 XOR 運算(新視窗),將要加密的資料(密文)與各輪金鑰結合。

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

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

4. MixColumns:對區塊中的每一欄執行額外的可逆線性轉換。

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

  • 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,您仍應採取以下預防措施:

Proton

掌握您的資料

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

關於 AES 加密的常見問題

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

進一步瞭解加密