密碼學中,三重數據加密演算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DESTriple DES),是一種對稱金鑰加密塊密碼,相當於是對每個數據塊應用三次資料加密標準(DES)演算法。由於電腦運算能力的增強,原版DES由於金鑰長度過低容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的金鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演算法。

三重數據加密演算法
概述
首次發佈1998 (ANS X9.52)
衍生自DES
密碼細節
金鑰長度168,112或56 位 (對應金鑰選項 1, 2, 3)
分組長度64位元
結構Feistel網絡
重複回數相當於DES的48
最佳公開破解
Lucks:232組已知明文,2113次操作,包括290次DES加密,288位主記憶體; Biham:以每個金鑰對應的少數選擇平文和284次加密操作找到228個目標金鑰中的一個

標準中的定義

編輯

TDEA演算法在以下標準中被定義:

演算法的名稱

編輯

最早的定義了該演算法的標準(ANS X9.52,1998年發佈)將其描述為「三重數據加密演算法(TDEA)」 — 即ANSI X3.92中定義的數據加密演算法(DEA)的三次重複操作 — 而完全沒有使用術語「3DES」或「DES」。FIPS PUB 46-3(1999)定義了「三重數據加密演算法」(TDEA),也使用了術語「Triple DES」和「DES」。該標準中互換的使用「數據加密演算法」(DEA)和「DES」的概念,其中以此開始DES的定義:

數據加密標準(DES)應當包括下文中的數據加密演算法(DES[註 3])與三重數據加密演算法(TDEA,如ANSI X9.52中所描述的)

NIST SP 800-67(2004,2008[註 4])主要使用術語TDEA,但也提到了「Triple DES(TDEA)」。ISO/IEC 18033-3(2005)使用「TDEA」,但其中提到:

TDEA通稱Triple DES(數據加密標準)。

沒有一個定義了本演算法的標準使用術語「3DES」。

演算法

編輯

3DES使用「金鑰包」,其包含3個DES金鑰,K1,K2和K3,均為56位(除去奇偶校驗位)。加密演算法為:

密文 = EK3(DK2(EK1(明文)))

也就是說,使用K1為金鑰進行DES加密,再用K2為金鑰進行DES「解密」,最後以K3進行DES加密。

而解密則為其反過程:

明文 = DK1(EK2(DK3(密文)))

即以K3解密,以K2「加密」,最後以K1解密。

每次加密操作都只處理64位元數據,稱為一塊。

無論是加密還是解密,中間一步都是前後兩步的逆。這種做法提高了使用金鑰選項2時的演算法強度,並在使用金鑰選項3時與DES相容

金鑰選項

編輯

標準定義了三種金鑰選項(Keying option),「金鑰選項n」是標準中(X9.52, FIPS PUB 46-3, SP 800-67, ISO/IEC 18033-3)定義的TDEA的術語。然而,其它標準中,推薦和通用描述中也使用了其它術語。

  • 金鑰選項1:
    • 三個金鑰是獨立的。常用名稱為3TDEA或「三倍長度金鑰」(triple-length keys)[2][3]
    • 金鑰選項1的強度最高,擁有3 x 56 = 168個獨立的金鑰位。在NIST SP 800-57[4]與SP 800-78-2[5]中定義。
  • 金鑰選項2(已棄用):
    • K1和K2是獨立的,而K3=K1。常用名稱為2TDEA,或「雙倍長度金鑰」(double-length keys)[2][3]
    • 金鑰選項2的安全性稍低,擁有2 x 56 = 112個獨立的金鑰位。該選項比簡單的應用DES兩次的強度較高,即使用K1和K2,因為它可以防禦中途相遇攻擊。 這是對「雙重DES」(double DES)的改進,雙重DES僅需要256步即可進行攻擊。 國家標準技術研究所(NIST)已棄用此選項。[6]在NIST SP 800-57[4]和SP 800-78-1[5]中定義。
  • 金鑰選項3(已棄用):
    • 三個金鑰均相等,即K1=K2=K3
    • 金鑰選項3等同與DES,只有56個金鑰位。這個選項提供了與DES的相容性,因為第1和第2次DES操作相互抵消了。該選項不再為NIST所建議[7],亦不為ISO/IEC 18033-3所支援。

對多於一個塊的加密

編輯

與其它的塊密碼一樣,對多個數據塊的加密和解密可以使用多種工作模式進行,而模式的定義可以與塊密碼演算法相獨立。然而,ANS X9.52和NIST SP 800-67(通過SP 800-38A[8])確定了某些模式只能在特定限制下應用,而無需普遍的應用。例如,ANS X9.52提出對於CBC模式,初始化向量每次應當不同,而ISO/IEC 10116沒有類似規定[9]。FIPS PUB 46-3和ISO/IEC 18033-3隻定義了單塊密碼,而並沒有對多塊的工作模式做出限制。

安全性

編輯

普遍而言,有3個獨立金鑰的3DES(金鑰選項1)的金鑰長度為168位元(三個56位的DES金鑰),但由於中途相遇攻擊,它的有效安全性僅為112位元。金鑰選項2將金鑰長度縮短到了112位元,但該選項對特定的選擇明文攻擊已知明文攻擊的強度較弱[10][11],因此NIST認定它只有80位元的安全性[4]

對金鑰選項1的已知最佳攻擊需要約232組已知明文(又稱Sweet32攻擊[12]),2113部,290次DES加密以及288位主記憶體[13](該論文提到了時間和主記憶體的其它分配方案)。這在現在是不現實的,因此NIST認為金鑰選項1可以使用到2030年[4]。若攻擊者試圖在一些可能的(而不是全部的)金鑰中找到正確的,有一種在主記憶體效率上較高的攻擊方法可以用每個金鑰對應的少數選擇明文和約284次加密操作找到228個目標金鑰中的一個[14]

使用

編輯

電子貨幣業界和電子貨幣標準(如EMV)過往普遍使用3DES[15][16],但3DES已經逐漸被更安全的AES代替。

Microsoft OneNoteMicrosoft Outlook 2007使用3DES以密碼保護用戶數據[17][18]

註釋

編輯
  1. ^ X9.52有時被錯誤的寫作ANSI X9.52,然而標準自身的名稱為ANS X9.52.
  2. ^ X9.52將TDEA定義為DEA(定義於ANSI X3.92-1981中,數據加密演算法)的一種複合操作,並沒有包含DEA的演算法內容。因此,X9.52必須與X3.92一起閱讀。
  3. ^ 疑為筆誤,數據加密演算法應為DEA。
  4. ^ NIST SP 800-67第一版於2004年5月發佈,並於2008年5月修訂為1.1版,對弱金鑰和半弱金鑰的定義進行了修正和澄清。兩個版本使用了相同的術語。

參考文獻

編輯
  1. ^ Federal Register vol 70, number 96, 宣告聯邦資訊處理標準(FIPS)46-3,「數據加密標準」(DES);FIPS 74,「實現和使用NBS數據加密標準指導」;FIPS 81,「DES的工作模式」的失效頁面存檔備份,存於互聯網檔案館) (PDF)
  2. ^ 2.0 2.1 密码学指导:3DES. Cryptography World. [2010-07-11]. (原始內容存檔於2010-03-11). 
  3. ^ 3.0 3.1 Triple DES Encryption. IBM. [2010-07-11]. 
  4. ^ 4.0 4.1 4.2 4.3 NIST Special Publication 800-57 金鑰管理的建議—第一部分:綜述 (修訂版), 2007年3月頁面存檔備份,存於互聯網檔案館) (PDF)
  5. ^ 5.0 5.1 NIST Special Publication 800-78-2, 個人身份認證的密碼學演算法與金鑰長度, 2010年2月頁面存檔備份,存於互聯網檔案館) (PDF)
  6. ^ Barker, Elaine. NIST Special Publication 800-57: Recommendation for Key Management Part 1: General (PDF) 4. NIST. January 2016 [2017-09-05]. (原始內容存檔 (PDF)於2020-12-10). 
  7. ^ NIST SP 800-67
  8. ^ NIST Special Publication 800-38A, 塊密碼工作模式的建議,方法和技術, 2001版頁面存檔備份,存於互聯網檔案館) (PDF)
  9. ^ ISO/IEC 10116:2006 信息技术 — 安全技术 — n位块密码的工作模式. [2010-09-23]. (原始內容存檔於2012-03-17). 
  10. ^ Ralph Merkle, Martin Hellman: 關於多加密的安全性頁面存檔備份,存於互聯網檔案館) (PDF), Communications of the ACM, Vol 24, No 7, pp 465–467, July 1981.
  11. ^ Paul van Oorschot, Michael J. Wiener, 一種針對雙金鑰三次加密的已知明文攻擊, EUROCRYPT'90, LNCS 473, 1990, pp 318–325.
  12. ^ Sweet32: Birthday attacks on 64-bit block ciphers in TLS and OpenVPN. sweet32.info. [2024-07-23] (英語). 
  13. ^ Stefan Lucks: 攻擊三次加密頁面存檔備份,存於互聯網檔案館) (PDF), Fast Software Encryption 1998, pp 239–253.
  14. ^ Eli Biham: 如何使用228步解密DES加密的訊息頁面存檔備份,存於互聯網檔案館) (PostScript), 1996.
  15. ^ EMV 4.2 Specifications, 第二部 - 安全性和密钥管理, 4.2版, 2008年6月. [2010-09-23]. (原始內容存檔於2017-07-18). 
  16. ^ VISA. [2010-09-23]. (原始內容存檔於2019-07-09). 
  17. ^ Daniel Escapa's OneNote Blog - Encryption for Password Protected Sections, November 2006. [2010-09-23]. (原始內容存檔於2007-02-23). 
  18. ^ Microsoft - Encrypt E-mail Messages, Outlook 2007. [2010-09-23]. (原始內容存檔於2010-03-28). 

參見

編輯