對稱加密技術 - DES系列

DES算法和DESSede算法統稱DES系列算法,是對稱加密算法領域的經典加密算法。DESSede使用三次迭代,又稱3DES,增加算法安全性。DES算法是衆多對稱加密算法的基礎,很多算法都是基於該算法演變而來。

DES家族發展歷史

  • 1973年,美國國家標準計算研究所(NIST)徵求對稱加密算法方案,IBM提交了自己的算法;
  • 1977年,IBM的算法(Luciffer算法)被正式採用,成爲數據加密標準:Data Encryption Standard即DES算法;
  • DES算法密鑰比較短,只有56位,迭代次數少,很容易受到密碼分析手段的攻擊,因此DES算法半公開,被懷疑是NSA安置的後門,因此被各大密碼學機構強烈質疑;
  • 1998年,出現DES算法破譯機,DES算法被攻破,宣告不安全;
  • 1999年,NIST版本新標準3DES,也就是DESede(TripleDES),3DES取代DES,DES作爲遺留系統的加密手段被廢棄;
  • 目前攻破DES已經很簡單-AES正式替代了DES;

雖然DES被取代了,但是DES的CBC工作模式是基礎性的算法和工作模型,有很強的意義,在遺留系統中也有一些使用的。

大致算法流程

DES的算法是一種分組密碼工作模式,流程比較複雜,大致流程如下:

  • 1.將要加密的數據進行分組,56位爲一組;
  • 2.以組爲單位進行加密處理,這個時候對每塊的加密操作就有了不同的工作模式;
    • 不同的工作模式算法效率和產生的密文差別比較大;
  • 3.最後一塊兒不足56位,則需要填充到56位或者不填充,這就是填充模式;
    • 不同的填充模式,影響到數據的安全性;

應用場景及算法特點

一般加密性場景,大部分是遺留系統,還有一部分可能是系統沒有支持AES等其他加密手段被迫使用。

JDK 6僅支持56位的密鑰長度(出口限制),密鑰長度越高安全性越高,Bouncy Castle提供了64位密鑰長度的支持。

算法 密鑰長度 密鑰長度默認值 工作模式 填充方式 實現
DES 56 56 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128 NoPadding、PKCS5Padding、ISO10126Padding JDK 6實現
DES 64 56 ECB、CBC、PCBC、CTR、CTS、CFB、CFB8-CFB128、OFB、OFB8-OFB128 PKCS7Padding、ISO10126d2Padding、X932Padding、ISO7816d4Padding、ZeroBytePadding Boouncy Castle實現

DES和3DES的比較

3DES是對DES的一種改良算法,針對DES算法密鑰短,迭代次數少的缺點做了改進。但是3DES算法速度慢,密鑰計算時間長,加密效率不高,實際使用也不多。

DES的3大安全痛點:

  • 密鑰短:56位、68位確實不長 ;
  • 迭代偏少:16次迭代;
  • 半公開性:違反了科克霍夫原則,被懷疑有後門,主要是S盒沒被公佈,因此S盒被懷疑是後門;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章