密碼學中,三重數據加密算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DES(Triple DES),是一種對稱密鑰加密塊密碼,相當於是對每個數據塊應用三次資料加密標準(DES)算法。由於計算機運算能力的增強,原版DES由於密鑰長度過低容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼算法。
標準中的定義
TDEA算法在以下標準中被定義:
- ANS[註 1] X9.52-1998 三重數據加密算法的工作模式[註 2] (已失效)
- FIPS PUB 46-3 數據加密標準 (DES)(頁面存檔備份,存於網際網路檔案館) (PDF) (已失效[1])
- NIST Special Publication 800-67 使用三重數據加密算法(TDEA)塊密碼的建議PDF(483 KB)
- ISO/IEC 18033-3:2005 信息技術—安全技術—加密算法—第三部分:塊密碼(頁面存檔備份,存於網際網路檔案館)
算法的名稱
最早的定義了該算法的標準(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:
- 密鑰選項2(已棄用):
- 密鑰選項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 OneNote和Microsoft Outlook 2007使用3DES以密碼保護用戶數據[17][18]。
注釋
參考文獻
參見
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.