密鑰


1. 秘密的精華

  密碼的本質是把較長的秘密抽象成較短的秘密,即密碼的安全是密鑰的安全。

 

2. 什么是密鑰

  密鑰是一個巨大的數字,使用對稱密碼,公鑰密碼,消息認證碼,數字簽名等技術都需要密鑰。

  密鑰的大小不重要,重要的是密鑰空間的大小,密鑰空間越大,暴力破解越難,密鑰空間大小由密鑰長度決定。

  DES密鑰:56比特,7字節。

  3DES密鑰:DES-EDE2 密鑰長度112比特(14字節),DES-EDE3密鑰長度168比特(21字節)。

  AES密鑰:128,192和256比特中選擇。

 

3. 各種不同的密鑰

  對稱密碼密鑰和公鑰密碼的密鑰:

    對稱密碼的加密和解密使用同一個密鑰,是共享密鑰。

    公鑰密碼中,加密的密鑰稱為公鑰,解密的密鑰稱為私鑰。公私鑰的數學關系叫做密鑰對。

  消息認證碼的密鑰和數字簽名的密鑰:

    消息認證碼中發送者和接收者使用共享密鑰認證。

    數字簽名中簽名的生成和驗證使用不同的密鑰,公私鑰對。

  用於確保機密性的密鑰和用於認證的密鑰:

    對稱密碼和公鑰密碼的密鑰都是用於確保機密性的密鑰。

    消息認證碼和數字簽名使用的密鑰是用於認證的密鑰。

  會話密鑰和主密鑰:

    在密鑰使用的次數角度。在很多SSL通信的場景中分為會話密鑰和主密鑰。

    會話密鑰僅限於一次通信使用,像這樣每次通信只能使用一次的密鑰稱為會話密鑰。

    相對於每次通信都更換的密鑰,一直被重復使用的密鑰稱為主密鑰。

  CEK和KEK:

    密鑰加密密鑰:KEK,用於加密密鑰的密鑰。

    內容加密密鑰:CEK,用於加密通信內容的密鑰。

 

4. 密鑰管理

  生成密鑰:生成密鑰最好的方法是使用隨機數。

          用口令生成密鑰:口令 + 鹽值  ----> 單向散列函數  ---> 密鑰。鹽值即是隨機數,用來防止字典攻擊。

  配送密鑰:事先共享密鑰,使用密鑰中心分配,使用公鑰密碼,Diffie-Hellman等。

  更新密鑰:使用共享密鑰進行通信的過程中,定期改變密鑰。

  保存密鑰:密鑰難以記憶。對密鑰進行加密的意義:記不住密鑰,又害怕被竊取。

       有效的方法:減少需要保管的密鑰數量。數量少價值高,數量多,價值低。價值是被破解時遭受的損失的大小。

  作廢密鑰:不再需要的密鑰就作廢。

 

5. Diffie-Hellman密鑰交換

  通過交換一些公開的信息,就能生成出共享的秘密數字--->對稱密鑰。IPsec就使用經過改良的Diffie-Hellman密鑰交換。

  步驟:

    1、Alice和Bob發送兩個質數P和G。

    2、Alice生成一個隨機數A,A是1 ~ P-2之間的整數。

    3、Bob生成以及隨機數B,B是1~P-2之間的整數。

    4、Alice將G^A mod P這個數發給Bob。

    5、Bob將G^B mod P這個數發送給Alice。

    6、Alice用Bob發過來的數計算A次方並求mod P,即:(G^B mod P) ^A mod P  => G ^AxB mod P。

    7、Bob用Alice發過來的數計算B次方並求mod P,即:(G^A mod P) ^ B mod P => G ^BxA mod P。

  竊聽者有P,G,G^A mod P,G^B mod P這四個數。但是求出G ^AxB mod P 很復雜,即G^A mod P 求A這類問題,屬於有限域的離散對數問題。

  生成元的意義:

    P的生成元的乘方結果域1 ~ P-1中的數字是一一對應的。正是有這樣一一對應的關系,Alice能夠從1~P-2范圍中隨機選擇一個數字。

  橢圓曲線Diffie-Hellman密鑰交換:

    利用“橢圓曲線上的離散對數問題”的復雜度來實現密鑰的安全交換。

 

6. 基於口令的密碼(PBE)

  根據口令生成密鑰並用該密鑰進行加密的方法:

    ① 生成KEK  ② 生成會話密鑰並加密  ③ 加密消息

 

 

 

 

  PBE解密:

    ① 重建KEK  ② 解密會話密鑰  ③解密消息

  

 

  鹽的作用:

    偽隨機數生成器生成的隨機數,生成密鑰KEK時會和口令一起輸入單向散列函數。鹽是抵御字典攻擊的,字典攻擊是事先進行計算並轉備好候選密鑰隊列的方法。

  字典攻擊:

    攻擊者事先准備好大量的候選KEK,竊取到會話密鑰后,嘗試解密,利用事先准備好的KEK,就可以大幅縮短嘗試時間。

    鹽的長度越大,候選的KEK的數量也會隨之增大,事先生成候選KEK會變得很復雜。

  加鹽與不加鹽的區別:

    不加鹽:

        

 

      攻擊者可以事先計算口令所對應的KEK值(可能進行字典攻擊)

     加鹽:

      

 

        即便口令相同,只要鹽不同,KEK值也不同,因此無法進行字典攻擊

  口令的作用:

    不能憑記憶去記住口令。

    PBE中,通過口令生成密鑰KEK,再用這個密鑰加密會話密鑰(CEK)。

    在使用基於口令的密碼(PBE)時,需要將鹽和加密后的CEK通過物理的方式進行保護。

  通過拉伸改良PBE:

    生成KEK時,多次使用單向散列函數就能提高安全性。這種將單向散列函數進行多次迭代的方法稱為拉伸。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM