《白帽子講WEB安全》學習筆記之第11章加密演算法與隨機數

科技小能手發表於2017-11-12

第11章 加密演算法與隨機數

11.1 概述

攻擊密碼系統的方法

密碼分析者攻擊密碼系統的方法主要有以下三種:

1)窮舉攻擊

    所謂窮舉攻擊是指密碼分析者採用依次試遍所有可能的金鑰對所獲密文進行解密,直至得到正確的明文.

2)統計分析攻擊

    所謂統計分析攻擊就是指密碼分析者通過分析密文和明文的統計規律來破譯密碼。

3)數學分析攻擊

所謂數學分析攻擊是指密碼分析者針對加解密演算法的數學基礎和某些密碼學特性,通過數學求解的方法來破譯密碼。

 

破譯密碼的型別

1唯密文攻擊Ciphertext-only attack

已知:

   C1EP1 )C2EKP2 )……CiEK(Pi)

推匯出:

   P1P2……PiK或者找出一個演算法從Ci1EK(Pi1 )推出Pi1

 

2已知明文攻擊Know-plaintext attack

已知:

 P1C1EP1 )P2 C2EK(P2 ) …… PiCiEKPi

推匯出:

      金鑰k,或從Ci1EK(Pi1 )推出Pi1

 

3選擇明文攻擊Chosen-plaintext attack

已知:

 P1C1EP1 )P2 C2EK(P2 ) …… PiCiEKPi,其中P1P2…… Pi是由密碼分析者選擇的。

推匯出:

     金鑰k,或從Ci1EK(Pi1 )推出Pi1

 

4自適應選擇明文攻擊Adaptive-chosen-plaintext attack

5選擇密文攻擊Chosen-ciphertext attack

6選擇金鑰攻擊Chosen-key attack

7軟磨硬泡攻擊 

11.6 金鑰管理

金鑰的保密性比演算法的保密性重要多了。金鑰最好是動態的,會定期更新。

11.7 偽隨機數問題

Java中使用java.util.Random是不安全的,因為其是使用系統時間的作為種子生成的偽隨機數。在種子相同的情況下,其生成的隨機數的順序都是相同的。

java.security.SecureRandom是安全隨機數,可以在專案中使用。

加密演算法的最佳實踐:

q  不要使用ECB模式

q  不要使用流密碼

q  使用HMAC-SHA1代替MD5(甚至代替SHA1

q  不要使用相同的key做不同的事

q  saltsIV需要隨機產生

q  不要自己實現加密演算法,儘量使用穩定的加密庫

q  不要依賴於系統的保密性

 

本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1859557


相關文章