基於口令的密碼(PBE)

基於口令的密碼(PBE)

基於口令的密碼(Password Based Encryption,PBE)是一種基於口令生成密鑰,並使用該密鑰進行加密的方法。其中加密和解密使用的是同一個密鑰。

根據用戶自己的口令和salt生成口令密碼,我們先看下加密的過程:

加密的過程可以分爲這幾步:

  1. 生成KEK密鑰
  • 使用僞隨機數生成器來生成salt
  • 將salt和用戶自己的口令使用單向散列函數算法生成KEK密鑰
  1. 生成會話密鑰並加密
  • 使用僞隨機數生成器生成會話密鑰CEK
  • 使用步驟1生成的KEK密鑰對會話密鑰CEK進行加密,得到加密後的會話密鑰
  • 將步驟1生成的salt和步驟2生成的加密後的會話密鑰保存起來,以供後面解密的時候使用。
  1. 加密消息
  • 使用步驟2中生成的會話密鑰CEK來對消息進行加密,從而得到加密後的消息。

步驟1生成的KEK並不需要保存,因爲它完全可以根據salt來重構。

接下來我們再看一下解密的過程:

  1. 重建KEK
  • 使用保存的salt和用戶記住的口令,根據單向散列算法重建KEK。
  1. 解密會話密鑰
  • 將保持的加密後的會話密鑰使用步驟1生成的KEK解密,得到解密後的會話密鑰
  1. 解密消息
  • 使用解密後的會話密鑰對加密過後的消息進行解密,得到最終消息原文。

爲什麼要使用salt呢?

salt主要是爲了防禦字典攻擊,因爲用戶自己的口令不具備隨機性,很容易被暴力破解。加了salt之後,被暴力破解的難度大大加大。

更多內容請訪問 http://www.flydean.com/pbe/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章