技術分享 使用者密碼安全儲存建議

2021-06-03 07:40:52 字數 2345 閱讀 1088

安全小測驗

:儲存機密資訊最安全的辦法是什麼?

a)利用

256

位金鑰的強對稱加密演算法(例如

aes)進行加密。

b)利用

4096

位金鑰的非對稱強加密演算法(例如

rsa)進行加密。

c)利用平台內

置的加密系統進行加密,例如

windows

的資料保護

api (dpapi)

。做出選擇了嗎?正確的答案實際上是:

d)既然是機密資料,就完全不要儲存!

好吧,這個問題看上去有點難,但其答案是很有道理的:竊賊無法竊取根本不存在的東西。我們把這個原則應用到身份驗證操作,如**登入。如果乙個**永遠不儲存使用者的密碼,那麼即使**受到攻擊,這些密碼也不能被盜走。但是**如何在不儲存使用者密碼的情況下來驗證使用者的身份呢?答案就是**儲存密碼的加密雜湊,而不是明文密碼本身。(如果你對雜湊的概念不熟悉,我們建議你在繼續前閱讀

。)通過比較雜湊而不是明文,**仍然可以驗證使用者確實知道自己的密碼,不然雜湊將不會匹配,而實現這個過程並不需要**實際儲存密碼(如圖

1所示)。這是乙個不錯的解決方案,但是仍有一些設計方面的注意事項,以確保你不會無意間削弱系統的強度。

第乙個設計問題是,簡單地對密碼進行雜湊計算並不能提供充分的保護:你還需要在計算雜湊值前為每個密碼新增隨機鹽值

(salt)

。切記,對於給定的雜湊函式,對某個輸入值計算雜湊值始終會得到相同的輸出值。如果時間充裕,攻擊者可能會計算出明文本串及其相應雜湊值的表。事實上,已經存在很多這樣的表(稱為

「彩虹表

」:比較加鹽值後的雜湊值

另乙個重要的設計問題是,一定要使用強加密雜湊演算法。

md5

可能是比較常見的選擇,但是密碼學家已經論證了

md5

的脆弱性,近年來它一直被認為是不安全且

「可破解

」的演算法。

sha-1

安全性稍微強一些,但它也開始顯現被破解的跡象,現在密碼學家建議避免使用

sha-1

。sha-2

雜湊演算法系列當前被視為最強健的演算法,是唯一獲得微軟安全開發生命週期

(sdl)

加密標準策略批准,可以在微軟

產品中使用的雜湊演算法系列。

相比將sha-2

硬編碼入程式,乙個更好的辦法是實施

「加密靈活性

」,就是說即使應用程式已經部署到生產中,也仍然可以改變雜湊演算法。畢竟,加密演算法會過時;密碼學家會發現其弱點,並且隨著計算能力的增強,使用暴力攻擊破解越來越輕鬆可行。某一天,

sha-2

可能會被認為和

md5

一樣脆弱,未雨綢繆不失為明智的選擇。對雜湊靈活性進行深入分析討論已經超出了本篇博文的討論範圍,不過,你可以在

msdn

雜誌文章

「加密靈活性

」[] sdl

強制在微軟

產品中使用強加密演算法一樣,它也鼓勵產品團隊盡可能使用加密靈活性,這樣可以在當前強演算法遭到破解的情況下更敏捷地遷移到新演算法。

到目前為止,我們已經討論了要對哪些內容進行雜湊計算(密碼和隨機的特定鹽值)以及如何進行雜湊計算(使用

sha-2

系列中的加密強雜湊演算法,最好是可配置的,以便允許進行未來變更),但是我們還沒有討論雜湊計算的應用位置。你可能會認為在客戶端執行雜湊計算將能極大地提高安全性,因為你只需要通過網路向伺服器傳送雜湊,而絕不會傳送明文密碼本身。不過,好處也並不像你想象的那麼多。如果攻擊者能夠嗅探網路流量,他仍然可以攔截傳輸,並自行將雜湊傳遞到伺服器,從而欺騙使用者,劫持其會話。這時,雜湊本質上會成為明文密碼。這個方法唯一切實的好處就是如果受害者在多個**上使用同一密碼,則攻擊者將不能在其它**損害受害者的帳戶,因為知道密碼的雜湊值並不會告訴你關於密碼本身的任何內容。防禦此類攻擊的更好方式是,在伺服器端執行雜湊計算,但確保密碼和所有憑據令牌(例如會話

cookie

)始終通過

ssl/tls

進行傳輸。在將來發布的博文中,我們會討論安全憑據傳輸(和密碼管理的其他方面,例如密碼複雜性及其過期時間)。

遵循下面一些簡單的原則,有助於你確保應用程式的使用者憑據仍保持安全,即便在資料庫被攻破的情況下也是如此:

·始終儲存並比較密碼的雜湊,而永遠不要儲存明文密碼本身。

·在進行雜湊計算前,對每個密碼應用隨機且特定的鹽值。

·使用加密的強雜湊演算法,例如

sha-2

系列之一。

·通過實施靈活的加密設計,允許未來潛在的演算法變更。

·對伺服器層進行雜湊計算,並確保通過

傳輸所有密碼和憑據令牌。

資深安全專案經理

微軟sdl(安全開發生命週期)團隊

分享用python做的凱撒密碼

我做的凱撒密碼的思路是,先將輸入的字母轉換成相對應unicode編碼,之後再將unicode編碼,轉換成字母輸出。yw input 請輸入字母 for i in yw if i in x y z print chr ord i 23 end elif i in print end elif i in...

資訊保安的核心 密碼技術

資訊保安的核心 密碼技術 http ccw.唐正星 資訊保安技術是一門綜合的學科,它涉及資訊理論 電腦科學和密碼學等多方面知識,它的 主要任務是研究計算機系統和通訊網路內資訊的保護方法以實現系統內資訊的安全 保密 真實和完整。其中,資訊保安的核心是密碼技術。隨著計算機網路不斷滲透到各個領域,密碼學的...

密碼與安全新技術

課程 密碼與安全新技術 班級 1792 姓名 郭永健 學號 20179212 上課教師 謝四江 上課日期 2018年4月12日 必修 選修 必修 本次課程是由金老師講的跨 安全方面的知識。隨著資訊獲取 儲存與傳播技術的飛速發展,跨 大資料分析成為熱點問題,也是目前大資料研究的前沿領域。在跨 大資料中...