Rsa

將密碼儲存在公開可用的數據庫中

  • May 26, 2020

我有一個公共數據庫,使用者需要在其中儲存配置文件。該文件可以包含密碼。每個人都可以讀取配置文件,但只有伺服器可以讀取其中的密碼。

在瀏覽器中,當使用者想要在配置文件中添加密碼時:

  • 使用者使用 bcrypt 對密碼進行雜湊處理
  • 使用者使用公鑰 A 加密散列字元串
  • 使用者將加密字元串添加到配置文件並保存到數據庫

然後第三方伺服器將連接到數據庫,該伺服器知道 A 的私鑰。該伺服器驗證某些明文密碼是否與加密的雜湊匹配。其他使用者看到配置文件,但他們看不到其中的密碼。

一些精度:

  • 我不在乎其他使用者是否編輯了加密密碼,我也不在乎誰編輯了密碼,所以我認為我不需要簽署任何東西。
  • 它實際上是一個公共數據庫,就像一個沒有任何安全性的 mysql 實例。
  • 如果私鑰被盜,我會在客戶端上進行雜湊處理。反轉所有密碼的雜湊需要很長時間。

這對我來說似乎很安全。是嗎?有沒有更簡單的方法?

將任何類型的密碼儲存在不安全的數據庫中通常不是一個好主意,更不用說打算公開使用的數據庫了。

它安全嗎?

如果您不關心數據庫中的篡改和錯誤條目,那麼我想這個設置是可以的。

Bcrypt 已經加入了鹽來防止彩虹攻擊,因此所有密碼都應該有不同的雜湊值。由於您隨後使用非對稱加密算法的公鑰對雜湊進行加密,因此它實際上應該是安全的。要嘗試暴力破解數據庫中的密碼,您首先必須暴力破解非對稱加密,這在任何時間尺度上都是不可行的。

有沒有更簡單的方法?

是的,實施安全約定(安全數據庫等),無需重新發​​明輪子。

引用自:https://crypto.stackexchange.com/questions/67124