AES 加密如何工作?

AES 是一種對稱密鑰加密密碼,通常被視為加密數據的“黃金標準”

AES 已獲得 NIST 認證,並被美國政府用於保護“安全”數據,這導致 AES 被更廣泛地採用,作為幾乎每個人選擇的標準對稱密鑰密碼。它是一個開放標準,可免費用於任何公共、私人、商業或非商業用途。

AES 是一種對稱密鑰加密密碼。這意味著用於加密數據的相同密鑰也用於解密它。這確實產生了一個問題:如何以安全的方式發送密鑰?

非對稱加密系統通過使用每個人都可以使用的公鑰來保護數據來解決這個問題。它只能由持有正確私鑰的預期接收者解密。

這使得非對稱加密能夠更好地保護傳輸中的數據,因為發送者不需要知道接收者的私鑰。一個很好的例子是RSA加密,用於保護連接到安全 HTTPS 網站時所需的 TLS 密鑰交換。

因此,像 AES 這樣的對稱密碼在保護靜態數據(例如當數據存儲在硬盤驅動器上時)方面要好得多。為此,它們優於非對稱密碼,因為:

  • 它們需要的計算能力要少得多。這使得使用對稱加密加密和解密數據比使用非對稱加密快得多。從長遠來看,對稱密碼通常被認為比非對稱密碼“快 1000 倍”左右。
  • 由於速度更快,對稱密碼對於批量加密大量數據更加有用。 RSA 等非對稱密碼僅真正用於加密少量數據,例如用於保護對稱密鑰加密的密鑰。

當然,在當今的互聯世界中,僅位於硬盤驅動器上的數據的用途有限。幸運的是,它可以與非對稱加密結合在互聯網上安全地傳輸,非對稱加密用於處理安全連接到遠程服務器所需的遠程密鑰交換。

開放VPN例如,使用對稱密碼(現在通常是 AES)來保護原始數據。為了在您的 PC 和 VPN 服務器之間安全地傳輸加密數據,它使用非對稱 TLS 密鑰交換來協商與服務器的安全連接。

AES 加密是最好的加密類型嗎?

AES 被廣泛認為是迄今為止發明的最安全的對稱密鑰加密密碼。其他被認為高度安全的對稱密鑰密碼也存在,例如由著名密碼學家 Bruce Schneier 共同發明的 Twofish。

不過,此類密碼尚未像 AES 那樣經過實戰檢驗。嘿,如果美國政府認為 AES 是保護其“安全”數據的最佳密碼,誰在爭論呢?然而,有些人認為這是一個問題。請參閱下面有關 NIST 的部分。

AES 的廣泛採用在其他方面也讓 AES 受益。大多數 CPU 製造商現已將 AES 指令集集成到其處理器中。硬件提升提高了許多設備上的 AES 性能,並提高了它們對側信道攻擊的抵抗力。

128位AES加密能被破解嗎?

如果正確實施,AES 本身是牢不可破的。

2011 年,世界上最快的超級計算機是 Fujitsu K。它的 Rmax 峰值速度為 10.51 petaflops。根據這個數字,可以Fujitsu K 1.02 x 10^18 - 大約十億億(五分之一) - 年強制破解 128 位 AES 密鑰。這比宇宙的年齡(137.5 億年)還要古老。

2017年全球最強大的超級計算機是中國的神威·太湖之光。這頭野獸的峰值速度可達 93.02 petaflops。這意味著世界上最強大的計算機仍需要大約 885 萬億年才能暴力破解 128 位 AES 密鑰。

暴力破解 256 位密碼所需的操作次數為 3.31 x 10^56。這大約相當於宇宙中原子的數量!

早在 2011 年,密碼學研究人員就發現了弱點AES 使他們破解算法的速度比以前快四倍。但正如一位研究人員當時指出的那樣:

“從這個角度來看:在 1 萬億台機器上,每台機器每秒可以測試 10 億個密鑰,需要超過 20 億年才能恢復 AES-128 密鑰。”

為了應對這種攻擊,AES-128 加密過程中又添加了四輪(見下文),以提高其安全裕度。

側信道攻擊

因此,無論出於何種目的,只要正確實施,AES 本身就牢不可破。但它並不總是得到正確實施。

側通道攻擊從實施 AES 加密的計算機系統中尋找線索,以找出其他信息。這可能有助於減少暴力破解 AES 所需的可能組合的數量。

這些攻擊利用計時信息(計算機執行計算需要多長時間)、電磁洩漏、音頻線索,甚至使用高分辨率攝像頭拾取的光學線索來發現有關係統如何處理 AES 加密的額外信息。

針對 AES 的著名旁道攻擊成功推論出通過仔細監控密碼對處理器緩存表的共享使用來實現 AES-128 加密密鑰。

正確實施的 AES 可以通過防止可能的數據洩漏方式(這是使用基於硬件的 AES 指令集的幫助)以及通過使用隨機化技術來消除受密碼保護的數據與可以使用旁路攻擊收集的任何洩漏數據之間的關係來減輕旁路攻擊。

不安全的密碼

AES 加密的安全性取決於其密鑰。這些密鑰本身總是使用密碼進行保護,我們都知道如何糟糕的我們人類擅長使用安全密碼。由病毒、社會工程攻擊等引入的鍵盤記錄器也可能是破壞保護 AES 密鑰的密碼的有效方法。

使用密碼管理器使用雙向防火牆、優秀的防病毒軟件以及更多有關安全問題的教育可以極大地緩解這個問題。

AES 加密簡史

當您還是個孩子的時候,您是否玩過通過用消息中的一個字母替換另一個字母來創建“秘密消息”的遊戲?替換是根據您選擇的公式進行的。

例如,您可能已將原始消息的每個字母替換為字母表中後面的三個字母。如果其他人知道這個公式是什麼,或者能夠算出它,那麼他們就能夠讀取你的“秘密信息”。

用密碼學術語來說,您所做的就是根據非常簡單的數學算法“加密”消息(數據)。

自此以來,加密一直被用於隱藏敏感數據古代,但真正的出現是在二十世紀。第二次世界大戰期間,德國人利用恩尼格碼機,該代碼同樣被阿蘭·圖靈在布萊切利公園破解。

什麼是 DES 加密

數據加密標準 (DES) 於 20 世紀 70 年代中期創建,旨在保護美國政府通信的安全。它成為第一個現代、公開、免費的加密算法,因此幾乎單槍匹馬地創建了現代密碼學學科。

儘管 DES 是由 IBM 開發的,但它是美國國家標準局 (NBS,後來的 NIST) 的創意。

儘管擔心 NSA 的干預,美國政府還是於 1976 年針對“敏感但非機密”的流量採用了 DES。這包括個人、財務和後勤信息等。

由於當時沒有其他類似的方法,因此它很快被需要加密來保護數據的商業公司廣泛採用。因此,DES(使用 56 位密鑰)成為近二十年來默認的主力加密標準。

DES 被授予聯邦信息處理標準 (FIPS) 地位,這對這種幾乎無處不在的採用有很大幫助。所有美國非軍事政府機構和民事政府承包商都必須僅使用 FIPS 標準。

然而,到了 20 世紀 90 年代中期,DES 開始顯得過時了。當時,人們普遍認為 NSA 可以暴力破解 DES,這一點在 1998 年得到了證明,當時電子前沿基金會 (EFF) 製造的一台耗資 22 萬美元的機器在短短兩天內成功破解了 DES。顯然是時候制定新標準了。

AES 是如何產生的

1997 年,美國國家標準與技術研究所 (NIST) 宣布正在尋找 DES 的替代品。 2001 年 11 月,它宣布獲勝者:AES,以前稱為 Rijndael,以其聯合創始人之一的名字命名。

根據 NIST 的建議,新密碼被美國聯邦政府正式採用,並於 2002 年 5 月開始有效使用。與之前的 DES 一樣,AES 也獲得了 FIPS 地位。美國政府認為所有 AES 密鑰大小足以滿足“機密”級別的機密信息,“絕密”信息需要 AES-192 或 AES-256。

AES 現已在全球範圍內完全取代 DES,成為默認的主力對稱加密標準。

AES 加密如何工作?

AES 加密算法以 128 位塊的形式對數據進行加密和解密。它可以使用 128 位、192 位或 256 位密鑰來執行此操作。使用 128 位密鑰的 AES 通常稱為 AES-128,等等。

下圖提供了 AES 過程的簡化概述……

純文本

這是您要加密的敏感數據。

秘密鑰匙

這是由算法創建的 128 位、192 位或 256 位變量。

密碼

然後,實際的 AES 密碼以明文和密鑰為起點執行一系列數學轉換。按順序,這些是:

  1. 密鑰擴展。這使用原始密鑰通過 Rijndael 的密鑰調度算法派生出一系列新的“輪密鑰”。
  2. 混合。每個輪密鑰都使用加法與明文組合異或算法

  3. 使用替換錶替換結果數據。此步驟在原理上與您小時候創建的替換密碼非常相似(如果實踐中要復雜得多)。

  4. 移動行。其中構成 128 位塊的 4 x 4 列(共 16 個字節)中的每個字節都右移。

5. 混合色譜柱。進一步的算法應用於每一列。

站起來並重複。該過程重複多次,每次重複稱為一輪。每輪都使用密鑰擴展期間生成的輪密鑰之一重新加密(步驟 1)。

執行的輪數取決於所使用的密鑰長度。 AES-128 使用十輪,AES-192 使用十二輪,AES-256 使用十四輪。

每增加一輪都會減少 2011 年用於攻擊 AES-128 的那種捷徑攻擊的機會。正如已經指出的那樣,由於這次攻擊,AES-128 中又添加了四輪,以提高其安全裕度。

密文

這是密碼經過指定輪數後的加密輸出。

如何解密 AES 加密

解密 AES 很簡單——只需顛倒上述所有步驟,從逆輪密鑰開始。當然,您需要擁有原始密鑰才能使用每個逆輪密鑰反轉該過程。

加密文件會使其變大嗎?

是的。通常。 AES 使用 16 字節的固定塊大小。如果文件不是塊大小的倍數,則 AES 使用填充來完成塊。

從理論上講,這並不一定意味著加密數據大小的增加(請參閱密文竊取),但簡單地添加數據來填充塊通常要容易得多。這增加了加密的數據量。

傳聞證據表明,使用 AES 加密的大於 1 MB 的文件往往比加密前大 35% 左右。

AES 加密中密鑰大小有多重要?

衡量密碼強度的最粗略方法是通過密鑰的大小。鍵越大,可能的組合就越多。

AES 可與 126 位、192 位或 256 位密鑰大小一起使用。最初的 Rijndael 密碼被設計為接受額外的密鑰長度,但這些並未被 AES 採用。

暴力攻擊

算法越複雜,使用密碼破解的難度就越大暴力攻擊。這種非常原始形式的攻擊也稱為窮舉密鑰搜索。它基本上涉及嘗試所有可能的數字組合,直到找到正確的密鑰。

我們確信您知道,計算機使用二進制數(零和一)執行所有計算。正如我們所看到的,密碼的複雜性取決於其密鑰大小(以位為單位) - 表達其算法所需的 1 和 0 的原始數量,其中每個 0 或 1 由單個位表示。

這稱為密鑰長度,也代表了對任何給定密碼成功執行強力攻擊的實際可行性。

可能的組合數量(以及因此暴力破解它們的難度)隨著密鑰大小呈指數增長。對於 AES:

正如我們已經討論過的,世界上最快的超級計算機甚至需要比宇宙年齡更長的時間才能破解 AES-128 密鑰!

加密輪數

正如我們還討論過的,AES 使用的密鑰越長,它經歷的加密輪次就越多。這主要是為了防止捷徑攻擊,捷徑攻擊可以降低密碼的計算複雜性,從而更容易暴力破解密碼。

正如已放棄密碼學家布魯斯·施奈爾 (Bruce Schneier)2011 年對 AES-128 的快捷攻擊,

“密碼學就是關於安全邊際的。如果你能破解n一輪密碼,你用 2 來設計它n或 3n回合”。

他確實建議為 AES 的每個密鑰大小引入更多輪次,但 NIST 認為當前的級別足夠了。

那麼為什麼要使用 AES-128 以外的標準呢?

所有這些都引出了一個問題:如果破解 AES-128 需要比宇宙年齡更長的時間,為什麼還要使用 AES-192 或 AES-256?正如施奈爾指出的:

“我建議人們不要使用 AES-256。在可預見的未來,AES-128 提供了足夠的安全裕度。但如果您已經在使用 AES-256,則沒有理由進行更改。”

事實上,Schneier 過去曾指出,AE-128 實際上比 AES 更安全,因為它具有更強與 AES-256 相比的密鑰調度。

那麼為什麼 AES-256 被視為對稱密鑰加密的黃金標準呢?

安全裕度

2011 年的捷徑攻擊表明,無論專家認為密碼算法有多安全,有創造力的人總會找到沒人想到的方法來削弱它們。

與使用的輪數一樣,較大的密鑰大小可以提供更高的防止破解的安全裕度。

金光閃閃

考慮到 AES-256 加密的普遍性,營銷的影響不容忽視。 AES-256 被廣泛認為是世界上最安全的對稱加密密碼,這一簡單事實使其成為許多人的第一選擇。

我的意思是,如果 AES-128 很好,那麼按理說 AES-256 一定更好,對嗎?

美國政府使用 AES-256 來保護其最敏感數據的事實只會增加其“閃亮”價值,並允許 VPN 公司等聲稱他們使用“軍事級”加密。

鑑於這種“金光閃閃的感知”(很大程度上)是準確的,AES-256 的普及幾乎沒有什麼壞處(儘管請參閱下面 NIST 的註釋)。

AES 和 OpenVPN

然而,VPN 用戶尤其應該小心。大多數 VPN 服務使用 AES-256 來保護 OpenVPN 協議傳輸的數據的安全,但這只是 OpenVPN 用於保證數據安全的各種機制之一。

使用 OpenVPN 時,TLS 連接可確保 AES 所使用的加密密鑰的傳輸安全,以保護數據的安全。因此,如果 OpenVPN TLS(控制通道)設置較弱,則儘管使用 AES-256 加密,數據仍可能受到損害。請查看我們的VPN 加密終極指南了解更多詳情。

AES-CBC 與 AES-GCM

直到最近,您在 VPN 世界中可能遇到的唯一 AES 密碼是 AES-CBC(密碼塊鏈)。這是指分組密碼模式,這是一個不值得在這裡討論的複雜主題。

儘管 CBC 理論上可能存在一些漏洞,但共識是 CBC 是安全的。 OpenVPN 手冊中確實推薦了 CBC。

OpenVPN 現在還支持 AES-GCM(Galios/Counter 模式)。 GCM 提供身份驗證,無需 HMAC SHA 哈希函數。它也比 CBC 稍快,因為它使用硬件加速(通過線程到多個處理器核心)。

AES-CBC 仍然是最常用的模式,但 AES-GCM 越來越受歡迎。鑑於 GCM 的優勢,這種趨勢很可能會持續下去。不過,從加密角度來看,AES-CBC 和 AES-GCM 都是高度安全的。

美國國家標準技術研究院

AES 是 NIST 認證的標準。這是一個自認在運作的機構密切與國家安全局合作開發密碼。

鑑於我們現在所知的 NSA 系統性地削弱國際加密標准或在國際加密標準中建立後門,我們有充分的理由質疑 NIST 算法的完整性。當然,NIST 強烈反駁了此類指控:

NIST 不會故意削弱加密標準。

它還邀請了公眾參與在許多即將提出的加密標準中,此舉旨在增強公眾信心

紐約時報然而,指責 NSA 通過引入無法檢測的後門或顛覆公共開發流程來削弱算法,從而規避了 NIST 批准的加密標準。

當 RSA Security(EMC 的一個部門)私下告訴客戶停止使用據報導存在缺陷的加密算法時,這種不信任進一步加劇。工程化的由國家安全局。該算法也得到了 NIST 的認可。

此外,雙EC_DRBG(雙橢圓曲線確定性隨機位生成器)是 NIST 設計的加密標準。多年來,人們都知道它是不安全的。

2006年 荷蘭埃因霍溫理工大學著名的對它的攻擊很容易在“普通 PC”上發起。微軟工程師也提出了要求疑似後門在算法中。

儘管存在這些擔憂,但 NIST 引領的領域,整個行業也緊隨其後。這在很大程度上是因為遵守 NIST 標準是獲得美國政府合同 (FIPS) 的先決條件。

NIST 認證的加密標準(例如 AES)在全球範圍內幾乎無處不在,遍及依賴隱私的工業和商業的所有領域。這讓整個情況變得相當令人不寒而栗。

也許正是因為如此依賴這些標準,密碼學專家一直不願意正視這個問題。

圖片來源:xkcd.com/538。