密碼學算法及應用(二)

密碼學六元組

  • - 明文
  • - 密文
  • - 加密算法
  • - 解密算法
  • - 加密祕鑰
  • - 解密祕鑰

    其中加密算法和解密算法一般都是公開的,只有公開的算法才能被驗證是安全的。不要試圖開發自己的保密加密算法,一旦算法泄露,加密體系就崩潰了。所以加密時要選用公開的算法。

    機密性完全依賴於祕鑰的安全性,祕鑰泄露了,就無安全可言了,密文可以被截獲,加解密算法都是公開的,對於破譯者來說,算法不是祕密,關鍵是拿到密碼本。

加密算法的分類

  • 對稱加密(傳統加密算法) -- 加解密祕鑰相同
  • 非對稱加密(公鑰加密算法)--加解密祕鑰不同

JAVA

JDK對密碼學算法的支持基本都位於下面兩個包中
  • -- javax.security
  • -- javax.crypto
java怎樣使用上述算法請百度

對稱加密算法

  • DES (Data Encryption Standard)
  • 3DES (Triple DES)
  • AES (Advanced Encryption Standard)
    3DES是DES和AES之間的一個過渡

對稱算法特點

  • 加解密過程是互逆的
  • 加減密算法使用置換和移位

algorithm

key length

security

speed

DES

56

可被窮舉破解

3DES

112168

較高

AES

128192256

暫時還未被破解

祕鑰長度越長,窮舉破解的難度就越大
安全性是相對而言的,隨着計算機性能的提升和雲計算的發展,安全算法的破解也會成爲可能

AES
祕鑰長度:128、192、256 (JDK默認只能使用128,如需使用更長的祕鑰,需要從Oracle官網下載對應擴展包)

對稱加密的最新標準
安全性高(暫時沒有被破解)、加密效率高
推薦使用
AES擴展包


非對稱加密算法(公鑰加密算法)

常用算法
  • RSA
  • DH
  • EIGamal
加減密算法使用的是函數運算,更爲複雜,只介紹比較常用的RSA和DH。

公鑰密碼體系
每個人都有兩個祕鑰:PublicKey,PrivateKey
公鑰公開給別人用,私鑰自己保管好不可泄露
用途
通信加密:公鑰加密,私鑰解密
數字簽名:私鑰加密,公鑰解密
通信模型


爲什麼需要公鑰密碼體系
在互聯網環境下,對稱祕鑰的配送需要安全保證
非對稱密鑰還可以做數字簽名


優缺點
優點:解決了祕鑰配送的安全問題
缺點:運算複雜,加密效率低


RSA算法

  • 由MIT的3位學者提出,取每個人姓氏的第一個字母爲算法命名
  • 祕鑰長度:512-65536(JDK默認是1024)
  • 算法的本質:兩個大素數的乘積分解問題
  • 目前是不可破解的


DH算法

  • DH是一種祕鑰交換算法
  • 用於通信雙方生成相同的對稱密碼
具體過程如下



                  

                             


兩類算法的關係

相互補充,而不是後者取代前者

algorithm

key exchange

encryption speed

AES

不安全

RSA

安全

使用非對稱算法來交換祕鑰(甲乙雙方產生相同對稱祕鑰)

使用對稱算法加密數據

二者結合使用即安全又高效 比如:HTTPS


發佈了185 篇原創文章 · 獲贊 38 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章