廣佳網絡官方網站,廣佳科技(北京)有限公司_營銷型網站_H5自適應網站_手機網站_微信開發_小程序開發_高端網站開發

010-86399906

如何安全的存儲密碼

日期:2017.07.22  來源:廣佳網絡

  過去一段時間來,眾多的網站遭遇用戶密碼數據庫泄露事件,這甚至包括頂級的互聯網企業–NASDQ上市的商務社交網絡Linkedin,國內諸如CSDN一類的就更多了。

  層出不窮的類似事件對用戶會造成巨大的影響,因為人們往往習慣在不同網站使用相同的密碼,一家“暴庫”,全部遭殃。

  那么在選擇密碼存儲方案時,容易掉入哪些陷阱,以及如何避免這些陷阱?我們將在實踐中的一些心得體會記錄于此,與大家分享。

菜鳥方案

  直接存儲用戶密碼的明文或者將密碼加密存儲。

  曾經有一次我在某知名網站重置密碼,結果郵件中居然直接包含以前設置過的密碼。我和客服咨詢為什么直接將密碼發送給用戶,客服答曰:“減少用戶步驟,用戶體驗更好”;再問“管理員是否可以直接獲知我的密碼”, 客服振振有詞:“我們用XXX算法加密過的,不會有問題的”。 殊不知,密碼加密后一定能被解密獲得原始密碼,因此,該網站一旦數據庫泄露,所有用戶的密碼本身就大白于天下。

  以后看到這類網站,大家最好都繞道而走,因為一家“暴庫”,全部遭殃。

入門方案

  將明文密碼做單向哈希后存儲。

  單向哈希算法有一個特性,無法通過哈希后的摘要(digest)恢復原始數據,這也是“單向”二字的來源,這一點和所有的加密算法都不同。常用的單向哈希算法包括SHA-256,SHA-1,MD5等。例如,對密碼“passwordhunter”進行SHA-256哈希后的摘要(digest)如下:

“bbed833d2c7805c4bf039b140bec7e7452125a04efa9e0b296395a9b95c2d44c”

  可能是“單向”二字有誤導性,也可能是上面那串數字唬人,不少人誤以為這種方式很可靠, 其實不然。

單向哈希有兩個特性

  1)從同一個密碼進行單向哈希,得到的總是唯一確定的摘要

  2)計算速度快。隨著技術進步,尤其是顯卡在高性能計算中的普及,一秒鐘能夠完成數十億次單向哈希計算

  結合上面兩個特點,考慮到多數人所使用的密碼為常見的組合,攻擊者可以將所有密碼的常見組合進行單向哈希,得到一個摘要組合,然后與數據庫中的摘要進行比對即可獲得對應的密碼。這個摘要組合也被稱為rainbow table。

  更糟糕的是,一個攻擊者只要建立上述的rainbow table,可以匹配所有的密碼數據庫。仍然等同于一家“暴庫”,全部遭殃。以后要是有某家廠商宣布“我們的密碼都是哈希后存儲的,絕對安全”,大家對這個行為要特別警惕并表示不屑。有興趣的朋友可以搜索下,看看哪家廠商躺著中槍了。

進階方案

  將明文密碼混入“隨機因素”,然后進行單向哈希后存儲,也就是所謂的“Salted Hash”。

  這個方式相比上面的方案,最大的好處是針對每一個數據庫中的密碼,都需要建立一個完整的rainbow table進行匹配。 因為兩個同樣使用“passwordhunter”作為密碼的賬戶,在數據庫中存儲的摘要完全不同。

  10多年以前,因為計算和內存大小的限制,這個方案還是足夠安全的,因為攻擊者沒有足夠的資源建立這么多的rainbow table。 但是,在今日,因為顯卡的恐怖的并行計算能力,這種攻擊已經完全可行。

專家方案

  故意增加密碼計算所需耗費的資源和時間,使得任何人都不可獲得足夠的資源建立所需的rainbow table。

  這類方案有一個特點,算法中都有個因子,用于指明計算密碼摘要所需要的資源和時間,也就是計算強度。計算強度越大,攻擊者建立rainbow table越困難,以至于不可繼續。

這類方案的常用算法有三種

  1)PBKDF2(Password-Based Key Derivation Function)

  PBKDF2簡單而言就是將salted hash進行多次重復計算,這個次數是可選擇的。如果計算一次所需要的時間是1微秒,那么計算1百萬次就需要1秒鐘。假如攻擊一個密碼所需的rainbow table有1千萬條,建立所對應的rainbow table所需要的時間就是115天。這個代價足以讓大部分的攻擊者忘而生畏。

  美國政府機構已經將這個方法標準化,并且用于一些政府和軍方的系統。 這個方案最大的優點是標準化,實現容易同時采用了久經考驗的SHA算法。

  2) bcrypt

  bcrypt是專門為密碼存儲而設計的算法,基于Blowfish加密算法變形而來,由Niels Provos和David Mazières發表于1999年的USENIX。

  bcrypt最大的好處是有一個參數(work factor),可用于調整計算強度,而且work factor是包括在輸出的摘要中的。隨著攻擊者計算能力的提高,使用者可以逐步增大work factor,而且不會影響已有用戶的登陸。

  bcrypt經過了很多安全專家的仔細分析,使用在以安全著稱的OpenBSD中,一般認為它比PBKDF2更能承受隨著計算能力加強而帶來的風險。bcrypt也有廣泛的函數庫支持,因此我們建議使用這種方式存儲密碼。

  3) scrypt

  scrypt是由著名的FreeBSD黑客 Colin Percival為他的備份服務 Tarsnap開發的。

  和上述兩種方案不同,scrypt不僅計算所需時間長,而且占用的內存也多,使得并行計算多個摘要異常困難,因此利用rainbow table進行暴力攻擊更加困難。scrypt沒有在生產環境中大規模應用,并且缺乏仔細的審察和廣泛的函數庫支持。但是,scrypt在算法層面只要沒有破綻,它的安全性應該高于PBKDF2和bcrypt。

業務

方案

客服

010-86399906

與我們合作

我們專注品牌網站策劃制作、精準網絡營銷推廣、技術支持與運維、
                 網絡相關增值業務、品牌策略與設計、網絡管家顧問服務...
主營業務營銷型網站、H5自適應網站、小程序、APP、新零售系統、軟件開發;
                 域名服務、企業郵箱、云服務器;新聞稿推廣、百度百科、新媒體推廣;
                 400電話、電子簽章、SSL證書、ICP、EDI、SP、信息安全等級保護;
                 網站托管、技術維護、技術支持、行業解決方案、管家式網絡顧問服務...

您有項目需求或網絡問題想和我們詳細溝通嗎?

       請您詳細填寫右邊的留言表格,讓我們初步了解您的想法,我們會盡快與您聯系并溝通您的具體需求。當然也歡迎您通過電話、微信、QQ、郵件等方式與我們溝通,我們提供多種溝通渠道為您提供專業、高效、便捷、滿意的服務!

您也可通過下列途徑與我們取得聯系:

電話:010-86399906

Q  Q:158070186            郵箱:admin@guangjiakeji.com

快速提交您的需求 ↓

又爽又黄又无遮挡的视频1000_粗壮公每一次进入让我次次高潮_精品久久亚洲中文无码_女人与公拘交酡