SALT(鹽值)儲存格式和策略的最佳實踐

在儲存鹽值(Salt)時,遵循最佳實踐是關鍵,以確保系統安全性和數據的一致性。

使用適當的編碼

Base64編碼:鹽值是二進位數據,直接儲存可能會遇到兼容性或可讀性問題。Base64是一種常用的編碼方式,它可以將二進位數據轉換成由ASCII字符組成的字符串。這使得鹽值易於在各種系統間傳輸和儲存。
十六進位編碼:另一個選擇是將鹽值轉換為十六進位(Hex)字符串。這也是一種常見做法,能夠保證數據的可讀性和易於儲存。

鹽值的長度

確保鹽值具有足夠的長度,通常推薦至少128位(16字節)。這樣可以確保足夠的隨機性,從而提高密碼存儲的安全性。

儲存位置

鹽值應該與相應的哈希值一起存儲,以便在驗證用戶密碼時可以重新計算哈希值。這不會降低安全性,因為鹽值的目的是確保即使對於相同的密碼,其哈希值也是唯一的,而不是保持秘密。
可以將鹽值和哈希值存儲在同一數據庫表中的不同字段裡。例如,您可以有一個password_hash字段和一個salt字段。

儲存格式範例

假設您使用C#生成了一個Base64編碼的鹽值和一個SHA-512哈希值,儲存到資料庫的最佳實踐可能如下:

安全性

  1. 在應用層生成鹽值和計算哈希值之後,確保使用安全的通信方式(如HTTPS)將數據傳輸到服務器,以避免中間人攻擊。
  2. 不要重覆使用鹽值。每次為用戶密碼生成哈希時,都應該生成一個新的隨機鹽值。
  3. 遵循這些最佳實踐可以幫助您更安全地儲存鹽值和密碼哈希,從而增強您的應用或系統的整體安全性。
前一篇文章資安密碼工程,ASP.NET VB與C#中產生安全的SALT
下一篇文章資安密碼工程,SALT最佳策略,採用BASE64 或 HEX?
學經歷 淡江大學資訊管理研究所 諸銘科技軟體發開部經理與教育事業部總監 專長 網路創業、網路行銷、創業貸款、個資保護、資訊安全、程式設計(ASP.NET VB.NET MVC C# Core 6) 資安與個資證照:CompTia Security+ , ISO 27701。 演講與課程經歷 工研院講師 勞動部微型創業鳳凰貸款顧問 台北市社會局 衛福部中央健保署 新北市政府勞工局 管科會 中國生產力中心 中衛中心 中山管理教育基金會 中華軟協 南科產協 青創會 青創會內訓 臺北青年職涯發展中心 經濟部樂活創業人才班 中小企業總會 外貿協會 高雄醫學大學 雲林科技大學 台北醫學大學 銘傳大學 明新科大 中台科大 台灣科技大學 師範大學 大葉大學 台北城市大學 聖約翰科技大學 萬能科技大學 輔英科大 明新科大 美和科大 嘉南藥理大學 東南科大 亞太創意技術學院 格致商工 霧峰農工 三重商工 新店戒護所 台南就業處 台灣知識庫 台北景福扶輪社 富邦人壽 台北國際書展

回覆留言

Please enter your comment!
Please enter your name here