題:
有什麼好比喻可以向外行解釋為什麼要對密碼進行哈希處理?
Nzall
2014-07-18 16:29:51 UTC
view on stackexchange narkive permalink

注意:這不是我目前的實際情況。

假設您的老闆是那些老式的計算機文盲管理人員之一,並且希望以純文本形式存儲密碼以簡化開發。您有5分鐘的時間來解釋哈希密碼的要點。您還從經驗中知道,您的老闆可以被一個很好的類比所左右。您會用什麼比喻來向老闆解釋密碼應該被散列?

當技術談判陷入僵局時,也許是時候開始承擔責任了。
@DavidHoude我同意這一點,但是您的老闆可能會說“讓我們討論何時到達這一點”,在這一點上為時已晚。責任本身就是一個很好的理由,但並不是每個人都在乎。假設您需要向一名實習生解釋,實習生並不真正在乎責任,因為一旦發生黑客入侵,他可能不再與您合作。
@Nate:對於那些​​老闆,您解釋說**他們**可以接受債務責任感很好,但是**您**可以接受,因此,如果他們可以代表公司簽署棄權書,則可以接受該責任。他們做出並執行的技術決策(即非哈希)。這使他們不得不思考的時刻拉了下來。
打個比方:曾經有一位國王不想听到他王國中正在發生的事情。他是一個非常重要的人,沒有時間思考問題。但是由於他負責,他不得不做出很多決定。如果他讓他的顧問們做他們最想做的事,他就不會是國王。因此,他命令其顧問告訴他發明的故事,然後問他將如何處理故事。自然地,他的王國被入侵,他被殺,城堡被夷為平地。但是至少他不必考慮它,他喜歡這些故事。
我將使用的比喻是保管箱。保險箱有兩個帶單獨鑰匙的鎖。銀行有一個密鑰(我們稱它為用戶ID密鑰),而您有另一個密鑰(我們稱其為密碼密鑰)。如果您發現銀行秘密保留了密碼密鑰的副本,您會怎麼想?
無需打個比方,只要翻個桌子,問他給你一個很好的理由,為什麼你就不應該“不”哈希密碼。
“因為不這樣做,第一次讓我生氣時,我將在您登錄時使用您的密碼登錄,並將公司的某些資產轉移給您。”
pfft。顯然,我不允許發布具有101信譽的答案...這是另一個比喻,我發現它比任何其他存款箱示例都更合適。想像一下您想進入一個非常專為通靈人士設計的酒吧。保鏢舉起一張卡片,這樣只有他才能看到卡片,並詢問您卡片上的圖片。如果您能正確回答-這樣的假設-您很通神,因此可以進入。這是純文本密碼。只要一切都按計劃進行,就可以了。
但是,現在想像一下,您從錯誤的供應商那裡購買了酒吧門,並且有小鏡子覆蓋著它,或者保鏢有一天打算戴上鏡面陰影。突然之間,這些刻不容緩的圖片對於任何努力的人都是可見的。哈希密碼就像將卡放在信封中一樣。即使從內部(直接或通過錯誤安裝的鏡子)看,也無法猜出圖片,除非輸入密碼,然後保鏢打開信封進行檢查。 (這最後一點在技術上是錯誤的,但應該是正確的)。
因為*您*是開發人員,所以開發安全軟件是您的工作-老闆僱用您是因為您了解計算機,而他卻不知道,所以-您負有道德和專業義務。
顯然,網絡範圍內的101個代表還不夠好,所以就來...好吧,假設您的客戶給了您一袋蛋糕配料,其中包含一組精確的配料。您烘烤蛋糕並品嚐。現在,由於您擁有令人驚嘆的舌頭,因此您可以分辨出兩種蛋糕混合物的蛋糕之間的區別。存儲蛋糕粉就像存儲密碼。如果被盜,他們可以重複使用它。同時,如果您烘烤並存儲蛋糕,即使他們偷走了蛋糕,他們也無法弄清楚成分的確切組成。蛋糕混合就像一個密碼,蛋糕就是哈希。
未加密的密碼就像在您的汽車座椅上留下一堆20的密碼。當然,你的車被鎖了...
您為什麼不只是將它們散列?我的意思是,我知道這很可能會導致您被解僱-但是...您真的想成為那個在那家不保護密碼的公司工作的技術人員嗎?
@SteveJessop這不是一個比喻。從字面上看,這就是我見過一些經理的方式。讓我們不要“提醒”他們是國王嗎?
@corsiKa:很好,也許對我的“類比”的回答可以用來區分經理,他們將允許“不想知道正在發生的事情,沒有時間去思考但不能委託”的經理。與管理人員相比,我們做得不好,我們應該克服這些薄弱的威脅,把城堡夷為平地。
[本文的最後一段非常好。]非常簡單。
哈希就像密碼的密碼一樣。如果有人將密碼輸入到未加密的數據庫中,他們就可以訪問您所有的用戶密碼。但是,如果每個密碼本身都需要密碼才能使用,那麼每個密碼都必須是也可以單獨破解,這是一個不小的問題。
哈希就像讓一個完全一致的詩人為每個密碼寫一首詩。您無法從這首詩中獲得密碼,但是對於給定的密碼,詩人將始終撰寫同一首詩。只有在您有權接觸詩人的情況下,這些詩才有價值,因此,一旦被盜,將詩保存在數據庫中也沒有什麼害處。
十八 答案:
tylerl
2014-07-18 21:56:01 UTC
view on stackexchange narkive permalink

簡短的答案

簡短的答案是:“因此,您不會受到 500萬美元的集體訴訟提起訴訟。” 對於大多數首席執行官來說,這應該是足夠的理由。散列密碼便宜得多。

但更重要的是:僅按問題中的建議散列密碼是不夠的。您仍然會提起訴訟。您需要做更多。

為什麼您需要做更多的工作才能花一些時間來解釋。因此,讓我們走很長一段路,以便您了解所要解釋的​​內容,然後我們將為您提供5分鐘的摘要。

哈希僅僅是開始

但是讓我們開始吧。假設您這樣存儲用戶的密碼:

 #id:user:password1:alice:pizza2:bob:passw0rd3:carol:baseball  

現在,例如,攻擊者設法獲得了比您想要的更多的系統訪問權限。在您發現問題並關閉孔之前,他只有35秒鐘的時間。但是在那35秒內,他設法鎖定了您的密碼數據庫。是的,您犯了一個安全性錯誤,但現在已將其修復。您修補了漏洞,修復了代碼,更新了防火牆,無論它可能是什麼。所以現在一切都很好,對吧?

好吧,不,他擁有您的密碼數據庫。

這意味著他現在可以模擬您系統上的每個用戶。您的系統的安全性遭到破壞。恢復的唯一方法是從新密碼數據庫重新開始,迫使每個人都使用其現有密碼作為有效的標識形式更改其密碼而無需。您必須通過其他某種方式(電話,電子郵件或其他方式)與他們進行帶外聯繫,以驗證其身份以重新創建其密碼,與此同時,您的整個操作陷入了困境。 >

如果您沒有看到他竊取密碼數據庫怎麼辦?回想起來,您幾乎不可能真正看到它的發生。您可能發現的方法是注意到多個用戶帳戶上的異常活動。也許幾個月來,好像您的系統根本沒有安全性,您不知道為什麼。這可能會破壞您的業務。

因此我們哈希

而不是存儲密碼,而是存儲密碼的哈希。您的數據庫現在如下所示:您存儲的是不透明的令牌,可用於驗證密碼是否正確,但不能用於檢索正確的密碼。

好吧,差不多。谷歌,那些哈希,我敢你。

所以現在我們已經發展到1970年代的技術。恭喜你我們可以做得更好。

所以我們加鹽

我花了很長時間回答為什麼加鹽散列的問題,包括有關其在現實世界中如何工作的示例和演示。我不會在這裡重新散列哈希討論,所以繼續閱讀原始內容:

為什麼加鹽散列更安全? ,嗯?好的,所以現在我們知道我們必須加些鹽,否則我們可能永遠也不會哈希密碼。現在我們掌握了1990年代的技術。我們仍然可以做得更好。有關bcrypt和PBKDF2的內容?是的,事實證明這很重要。借助當今硬件可以進行哈希計算的速度(謝謝,比特幣!),擁有現成硬件的攻擊者可以在幾小時內瀏覽整個鹽化的哈希密碼文件,每秒計算數十億甚至數万億的哈希值。您必須放慢它們。

最慢的降低速度的方法就是讓它們做更多的工作。不必計算一個哈希值來檢查密碼,您必須計算1000。或100,000。或任何適合您的數字。您還可以使用 scrypt (“ ess-crypt”),它不僅需要大量的CPU能力,而且還需要大量的RAM來進行計算,因此上面我鏈接的專用硬件幾乎沒有用

這是當前的最新技術。恭喜並歡迎您使用今天的技術。

我們完成了嗎?

現在,當攻擊者獲取您的密碼文件時,會發生什麼情況。好吧,現在他可以離線進行分析,而無需在線猜測您的服務。不幸的是,除非積極地阻止用戶使用,否則相當一部分用戶(4%至12%)會使用密碼“ 123456”或“ password”,並且攻擊者將首先嘗試猜測它們。

如果要確保用戶安全,請不要讓他們使用“密碼”作為密碼。或其他任何500強,就此而言。 那裡有軟件,可以簡化(免費)準確的密碼強度計算。

但是,多因素身份驗證從來都不是一個壞電話。您可以輕鬆添加到任何項目。

現在,您的榮耀5分鐘

您在老闆面前,他問您為什麼需要使用PBKDF2或類似產品對您的密碼進行哈希處理。您提到了LinkedIn集體訴訟,並說:“這是業界預期的最低法律安全水平。任何少的事情實際上都是疏忽。”這應該少於5分鐘,而且如果您的老闆不服氣,那麼他就不會在聽。

但是您可以繼續:“實施散列技術的成本可以忽略不計,而實施 的成本可能高達數百萬甚至更高。” “如果發生違規事件,經過適當整理的數據庫可讓您將自己定位為運行良好的安全意識組織,而對數據庫進行不適當的哈希處理則是非常公開的尷尬,正如歷史多次表明的那樣, 不是會被媒體絲毫忽略或忽略。”

如果您想獲取技術知識,可以重新整理上面的內容。但是,如果您正在與老闆交談,那麼您應該比這更了解。而且,類比的效果遠不止是表現出無需添加糖衣即可完美體現的真實生活效果。

通過講出一個很好的類比,您不會讓人戴上安全手套。相反,您將一些午餐肉放到燒杯中,當它在綠色和藍色火焰中爆炸時,您會說:“這將在您的手指上發生。”

在此處使用相同的原理。 >

在五分鐘內對其進行解釋是一個挑戰(或者找到一個可行的類比,這取決於您是否更關注問題的標題或內容),我認為這個答案不會奏效。僅*閱讀*此內容和您自己的鏈接答案可能會花費大多數人五分鐘的時間。
+1不需要類比,這裡有現實生活中的例子,它們比“巨大的障礙”有意義得多。
一條評論:我查了Linkedin的那項訴訟,但被駁回了(儘管駁回的原因不是因為密碼散列很差)。我將向我的同事展示它,因為它顯示了使用SHA-1的潛在後果。我還發現了一個擁有150億個SHA-1哈希值的網站,我將以此為進一步的證據。
'通過講一個很好的類比,不會使人們戴著安全手套。相反,您將一些午餐肉放入燒杯中,當它在綠色和藍色火焰中爆炸時,您會說:“這就是您的手指會發生的情況。” '用模糊的手指般的東西來證明某人的實際手指會發生什麼,在字面上是一個比喻。
據我了解,與PBKDF2相比,首選scrypt或bcrypt,因為它們對硬件加速的抵抗力更大。
2FA / MFA有時*可能是“壞電話”。如果您在低安全性的情況下強迫每個用戶一直使用它,那麼您會很快造成*安全疲勞*。我不想每次登錄Facebook都必須提交虹膜掃描和糞便樣本。如果您的數據沒有那麼大的風險,請**使2FA / MFA為可選**。您將使對偏執狂的安全性用戶感到滿意,而不必花費很多精力,而且您還需要將*某些*責任轉移給選擇退出的人員。
最重要的是該答案的“唯一”部分:從經理的角度來看,這全都與責任有關。如果他們不了解,那就不適合管理。
在您提到的訴訟的鏈接中,我注意到:“更常見的做法是在將密碼輸入哈希函數之前先對密碼加鹽,然後對生成的哈希值加鹽,然後再次通過哈希函數運行哈希值”。我知道重複哈希的目的是使哈希密碼花費很長時間。最重要的一點是確保它們必須分別散列每個密碼(而不是對整個數據庫進行猜測,散列和比較)。但是我認為多次加鹽沒有好處。我想念什麼嗎?
我一直在關注您,直到“所以我們迭代”。我對如何實現任何含義的細節一無所知,因此我沒有使用90年代僅對哈希密碼加鹽的技術。 :)
您可以指出@NateKerkhofs這個網站嗎?
諸如pbkdf2和scrypt之類的@HC_迭代密鑰派生函數通過多次執行,使得哈希步驟花費的時間更長。這個想法是,如果每次猜測花費的時間更長,那麼攻擊者將無法進行多次嘗試。有關該主題的信息很多,Google會帶您前往。
我用谷歌搜索了第一個哈希。第一個結果是“您怎麼說德語的1f6ccd2be75f1cc94a22a773eea8f8aeb5c68217?”
@woliveirajr https: // crackstation.net /具有190 GB的數據庫,其中包含150億個MD5和SHA-1密碼和哈希值。他們也有一個19 GB的數據庫,其中包含15億個哈希值,可用於許多其他哈希算法。
“重新哈希上面的內容”看看您所做的:)
好吧,但是,嗯。這並不能真正回答問題。問題不是,“我如何說服外行人這樣做是一件好事?”但是“我如何以通俗易懂的方式向外行人解釋這一點?”僅僅斷言法官同意我這是一個好主意並不能解釋為什麼它是一個好主意。解釋其他人可能做的甚至更好的事情,也無法解釋為什麼第一步是一個好主意。並不是說答案不包括有價值的信息。這只是一個不同問題的答案。
關於事實,這個答案是100%正確的,但這不是對所提問題的答案。問題不是*“為什麼哈希有用”或*“當今行業的安全期望是什麼” *。問題是“什麼可以使用analogy **來描述哈希”,並且這個答案似乎無關(也是多餘的,考慮到這個站點上可能存在數十個關於為什麼使用hash + salting的現有答案)。我認為,如果您不同意該問題的前提,則應發表評論並要求重新表述,而不是回答其他問題。
我認為這個答案暗示了法律上的含義,這確實不合適。一家公司可能只需要表明他們正在遵循“行業標準實踐”即可,甚至基本的哈希也可能適用。但是直到您進入法庭後,您才能確定是否存在,並且不同的法院可能會發現不同的地方,並且這可能取決於專家的證詞等。
aaaaaaaaaaaa
2014-07-19 12:56:25 UTC
view on stackexchange narkive permalink

此線程在類比上有點短,所以去了:

一個未加密的密碼就像一個透明鎖,任何對此有適當了解的人都可以設計匹配密鑰。

我會使用散列=比較鍵,而無鹽=透明鎖
@Bergi我不能因此而做出一個簡短的句子,考慮到您提供建議的方式,我想您也不能。
可能不如您想的那麼快,但我會嘗試:未加密的密碼就像備用密鑰,可以將其與用戶的密鑰進行比較。但是,每個獲得密鑰室訪問權限的人都可以復制它們。因此,我們不存儲密鑰,但是存儲需要由用戶各自的密鑰打開的鎖。仍然可以進入更衣室,因為人們可以選擇鎖,而且由於它們都是透明的並且是同一家製造商的,所以很容易找到可以打開的鎖。因此,我們對哈希值加鹽,就像使用許多不同的鎖模型一樣,因此需要單獨進行選擇。
不幸的是,[我無法將其發佈為答案](http://meta.stackexchange.com/q/170937/183280),即使它幾乎超出了評論長度限制:-)
@Bergi可以嘗試,但是最終的解釋幾乎和普通的密碼哈希解釋一樣複雜。類推的目的不是要取代實際的解釋,它更像是一個決策救生艇,用於那些無法掌握真正解釋的人。為此,簡單而令人難忘是極其重要的功能。
是的,的確如此,“透明鎖”是每個人都可以想像得到的簡潔短語(無論如何,您都有我的支持)。但是,我認為類比並不需要代替解釋,而是應該/可以與之並列,並通過沿用相同的思路來幫助以非技術性的術語來理解它。使用不透明的鎖聽起來太像通過隱蔽性來保護安全性:-)
不,未加密的密碼就像密鑰嗎?您可以用它來解鎖他們的帳戶嗎?如果是這種情況-或者如果您的答案是這種情況-那麼*哈希*密碼到底是什麼呢?這更像是一把鎖,您可以將其強行插入卡鎖中,直至其打開。
Nzall
2014-07-18 16:29:51 UTC
view on stackexchange narkive permalink

首先,我將提供一個開頭:

假設您管理一家銀行。您不想讓您的客戶直接使用這筆錢。因此,您有一個出納員,只有一台電腦和少量的錢來處理日常的取款和存款。他無法訪問所有內容,也無法將機密傳遞給客戶,因為他無法訪問這些機密。搶劫銀行,他真的不會被櫃員阻止。為了解決這個問題,您的地下室裡有一個很大的保險箱,裡面存放著客戶的所有實物。這個保險箱有很多安全裝置,例如指紋掃描儀,語音識別,壓力開關,三鍵鎖和定時鎖。它的目的是將不應該出現的人和不知道如何通過安全保護的人拒之門外。

此保險箱可以阻止99%的強盜,但總有1%通過繞過或殘酷性地設法克服了所有安全性。萬一發生這種情況,銀行會將其貨幣存儲在誘餌誘捕的容器中,這會使貨幣無法使用,例如將其炸掉或在上面噴塗油漆。這樣,強盜要么無法使用這筆錢,要么需要花費很長時間才能使這筆錢再次可用。

一個軟件應用程序也具有以下系統:用戶使用的程序是出納員:他無法使其做任何想要的事情,除非他找到了一種甜言蜜語的合作方式。保護程序和數據庫的硬件和軟件配置就是銀行保險庫:它使那些不知道所使用的安全配置的弱點的人無法使用。以明文形式存儲密碼意味著,如果有人通過了程序和安全配置,則他可以自由訪問密碼。就像銀行將錢存放在一個使錢更難使用的容器中一樣,對密碼進行哈希處理會給破壞密碼的人帶來巨大的障礙。這也意味著,員工(銀行,軟件以及我們自己公司的員工)都不會受到壓力,脅迫或甜言蜜語地繞過騙子的安全性,因為他們甚至無法直接訪問金錢/密碼。他們只能訪問容器/哈希。

您在“哈希密碼”(是一個巨大的障礙)中迷失了我(通常這就是為什麼我不喜歡類比的原因)
@njzk2“ X是一個障礙”是一個非常普遍的短語,幾乎沒有什麼比喻。這只是“ X使任務變得困難”的慣用語。
GdD
2014-07-18 17:49:36 UTC
view on stackexchange narkive permalink

我喜歡用類比作為解釋技術的一種方式,但是在這種情況下,由於類比太複雜了,因此可能不可行。

大多數經理比做正確的事更有動力來避免對自己的職位造成人身風險,因此,我將使用一個例子來比喻一個例子,在該例子中,以純文本形式存儲密碼對公司造成了嚴重影響,而不是一個類比。我只想說

之類的東西“以純文本格式存儲密碼會使我們看起來很糟糕,冒著聲譽風險,甚至有可能公開接受訴訟。在任何行業中,這都是非常糟糕的做法,因此個人網站,我不想成為站在董事會/老闆/ CTO面前的人,解釋為什麼我們沒有實施基本的安全控制措施。如果我們對客戶的密碼進行哈希處理,那麼數據洩露將不會立即導致黑客可以使用的密碼洩漏,並且我們將被視為在保護客戶的信息。哈希密碼可以減輕很大的風險,而無需付出任何努力。”

包含與純文本違法者的鏈接,然後將喜歡的消息發送給諸如 Cupid Media Microsoft India Store等新聞報導

對於純文字違規者+1-向您的老闆展示該公司將在一個公開的網站上被嘲笑,該網站在解釋和辯護他們這樣做的方面做得很好,看起來很容易。特別是因為實施良好實踐非常容易
brokethebuildagain
2014-07-18 22:21:18 UTC
view on stackexchange narkive permalink

使用類比功能可能很強大,但是在這種情況下,我認為用簡單的語言解釋發生的情況會容易得多。像這樣的東西應該​​是有效的,但可能應該包括帶有插圖和大型公司字體的PowerPoint幻燈片。使用我們的產品。為了讓人們登錄,我們必須跟踪這些密碼。問題是,我們無法完全按照輸入的密碼來存儲密碼,因為攻擊者已經找到了能夠看到和竊取密碼的方法。

我們也不能只用一個聰明的代碼重寫密碼,並相信我們將是唯一知道如何翻譯代碼的人,因為那仍然不能保證堅定的攻擊者無法弄清楚代碼,並且也無法防止組織內部的攻擊,例如流氓前僱員。

為解決此問題,我們必須使用單向密碼哈希。密碼哈希類似於使用代碼,只是無法解密。*這樣,只有用戶知道他或她的密碼。我們僅存儲密碼的哈希值,並在用戶登錄時進行檢查。這可以保護我們的用戶安全,並減少數據洩露(可能造成嚴重後果)時的責任。 [包括因不安全的密碼存儲而被起訴的公司的例子]

* [我知道這並非不可能,但外行可能並不需要那麼多詳細信息。]

為什麼沒有更多的選票?此外,您可能還應該補充一點,如果密碼以明文形式存儲,則惡意的內部用戶(例如,看起來雜亂無章的傢伙在大廳裡)可以訪問它們,然後使用(或更糟糕的是出售)它們。
我試圖用這種簡單的語言向我的妻子解釋密碼哈希。她陷入了單向功能的概念。關於簡單語言的任何想法都可以解釋嗎?
-1
-1
@Allen我喜歡您的第一條評論的簡單性,但是無論哪種方式,陰影都是一個很好的類比
Dennis Jaheruddin
2014-07-18 19:29:17 UTC
view on stackexchange narkive permalink

到目前為止,所有的解釋都有些長,下面是一個簡短的解釋:

有些不記得自己的銀行密碼的人,在他們的錢包裡放了張鈔票。

如果小偷或熟識的人會發現錢包有問題,除非他們以無法閱讀的方式寫圖釘。

散列基本上是以一種方式寫文本沒人能讀。

可以進行擴展以使您以其他人無法理解的方式編寫引腳變得更加切實。
支持投票,因為這是一個很好的快速類比,可以理解其重要性,但是它的含義是,如果您知道“所有者可以讀取它的方式”,則可以從註釋中恢復PIN,這意味著加密而不是哈希。
儘管我喜歡簡單性,但這種類比無法捕捉到哈希是單向過程的想法,因此它取決於您認為外行需要多少知識。
您將哈希與加密混淆了。如果您可以閱讀密碼,則說明您無法保護用戶的私人信息,並冒著巨大的法律風險。
@nealmcb我意識到這實際上並沒有解釋哈希,但是確實解釋了哈希的要點。因此,我相信它回答了這個問題。
哈希和加密之間的區別在這里至關重要。加密可以幫助您保護信息並允許您稍後進行恢復,這對於網站來說是一個巨大的錯誤。加密錢包中的密碼很有意義(假設您有一台計算機或具有智能功能的加密方案)。哈希自己的圖釘是沒有意義的:將哈希值放在錢包中並不會幫助您記住那樣的圖釘。而且,對銀行密碼進行散列甚至不能保護它,因為密碼如此短-攻擊者只需對所有可能的4位數字進行散列,然後將其與散列進行比較(即使加鹽也很快)。
Tim S.
2014-07-18 23:06:52 UTC
view on stackexchange narkive permalink

想像一下您是俱樂部的保鏢。要知道是否允許人們進入,您有一本人名/別名的密碼本(有些人更喜歡謹慎,只有被人知道別名)和自己的私人密碼;您無法通過聲音或外貌來認出他們是或不是他們所說的人(人太多,而且由於別名,ID檢查是不行的),所以您只需要去(Web服務器無法通過看著你來判斷你是錯誤的人)。人們必須告訴您他們的名稱和密碼才能進入,如果與您的書不符,他們就會被拒之門外。

如果有人得到您密碼本的圖片(您的數據庫已洩漏),他們可以冒充任何他們想模仿的人,而您卻無法告訴他們他們在說謊。您的一些客戶在他們的銀行也使用相同的名稱和密碼(他們的出納員就像您一樣使用密碼本),因此他們會被盜錢。然後,您會因為允許這樣的重大違規而被解僱,使俱樂部看起來非常糟糕,並為此付出了金錢。 ,其名稱為(salt)和密碼,並為您提供一個隨機的長號(hash),該數字始終與給定的名稱和密碼,對於名稱和密碼的任何其他組合則不同。因此,現在您的密碼本可以不再包含[名稱和密碼],而只需包含[名稱和密碼]!當某人想要進入時,他們會告訴您他們的名稱和密碼,然後將其輸入到黑匣子中,然後在密碼本中查找他們的名字,以檢查黑匣子為您提供的號碼是否與記錄的黑匣子相匹配。

現在,如果有人得到了您的密碼本的圖片,他們仍然無法進入!,他們甚至無法判斷您一半的人是否使用相同的密碼,因為輸入到黑匣子中的每個[名稱和密碼]組合都是唯一的。他們像您一樣有一個黑匣子,可以輸入一定的名稱和隨機密碼,直到找到正確的數字為止,但是他們必須分別為每個人這樣做。

如果發現洩露後,您仍然應該讓客戶更改其密碼以最大程度地提高安全性,但攻擊者將很難輕鬆進入。

這個密碼本是用盲文寫的?
是。 ;)實際上我想把它放進去,但這很容易引起“有人窺視您的代碼本/您的密碼本”的類比。如果有幫助,則該書用盲文書寫,但帶有清晰可見的點,並且全部在一張紙上。 (QR碼盲文?)
或者,如果您願意,您可以看到,但該俱樂部是化裝俱樂部,每個人進入時都戴著口罩。在這個宇宙中存在化裝舞會。別問了! ;)
-1
The Spooniest
2014-07-20 04:40:27 UTC
view on stackexchange narkive permalink

從防線方面進行解釋。

很顯然,您將盡一切努力確保代碼安全。但是事實是,您的服務器不僅會運行您編寫的代碼,而且您無法控制其他人編寫的代碼。即使計算機上的所有其他代碼都是開源的,您也需要雇用2-3個全職開發人員來負責您自己的所有分支。既然-讓我們自己開玩笑-這整個事情應該被認為是一項削減成本的措施,那是不可行的方法。

因此,即使您對自己的代碼絕對有信心,仍然有很多地方可以出錯。因此,您需要一種方法來確保即使攻擊者進入計算機,您的密碼仍然是安全的。這就是“散列”(用引號引起的,因為在當今時代使用的適當算法本身並不是真正的“散列” 算法,但它仍然是一個非常有用的籠統術語)發揮作用的地方

用軍事術語來說,本質上就是(如何)建立多道防線。沒有哪位將軍將整個軍隊置於同一位置,因為您需要考慮未預見到的某些事情會導致您的前線被擊敗或繞過的可能性。散列是您的家庭警衛:當其他所有操作失敗時,它將保護您的密碼的事情。您希望永遠不需要它,但是在需要時不提供它的代價太高了:數百萬美元的訴訟只是開始。

Aki
2014-07-18 17:14:33 UTC
view on stackexchange narkive permalink

如何解釋。

  • 人類是人類,他們的現代化程度如何都無所謂;密碼將是諸如出生日期或女友/男友/寵物動物的名字等之類的。

因此,以明文形式保存密碼是一種威脅。任何人都可以閱讀。

  • 散列有助於使人類(包括忠實的系統管理員)不可讀它們。

一旦對密碼進行散列,實際上就可以了。不可能找回來。因此,不必擔心您的密碼會被他人竊取。

  • 我們可以說,如果密碼是一個“水果”,那麼它的哈希將是“果汁”。因此,當用戶嘗試登錄時,果汁足以驗證用戶密碼。

密碼哈希的缺點是:沒有人可以檢索原始通行證。在這種情況下,系統必須要求用戶輸入新密碼

imo,這根本不是缺點。這應該是標準的。
我認為沒有必要類推。解釋散列的真正好處是唯一的方法:散列密碼很容易,看看是否有任何散列匹配。幾乎不可能使用哈希查找密碼。並且要求用戶輸入密碼,而不是哈希。
@Martijn對用戶來說是一個缺點。
我仍然不同意。永遠無法獲取密碼已成為常識。這樣,當您找回密碼時,就應該擔心。
@BrianOrtiz為什麼用戶要關心您輸入的密碼是新密碼還是舊密碼?他們顯然不記得以前的密碼,也沒有將其存儲在任何地方,因此,他們所有人都知道,他們選擇的新密碼與舊密碼相同。
Ken Clubb
2014-07-18 23:23:37 UTC
view on stackexchange narkive permalink
  1. 說明密碼一直被盜,一旦發生這種情況,如果密碼採用明文形式,公司就會非常尷尬並可以提起訴訟。
  2. 說明密碼哈希很容易
  3. 現在進行類比:
  4. ol>

    單向哈希函數與非技術人員的最佳類比就是僅使用數字查找打個比方-忘記複雜的密碼學。當用戶最初為您提供密碼時,您會使用黑框為該密碼分配一個唯一的數字,然後將該數字存儲為用戶的密碼,而不是原始密碼。

    當用戶稍後再次向您提供密碼進行身份驗證時,您會將給定的密碼傳遞到黑盒中並獲取一個數字。現在,您可以將該數字與之前保存的數字進行比較-如果兩個數字匹配,則密碼相同;如果兩個數字不匹配,則密碼也不相同。

    每個唯一密碼傳遞到盒子中的將獲得其自己的唯一編號,並且每次將相同的密碼傳遞到黑盒中時,都會出現相同的數字。

    黑盒進行數字查找的方式眾所周知,並且黑匣子的任何問題都由行業解決-任何漏洞由行業解決-如果黑匣子有問題,您的公司不承擔任何責任。

    最後,如果數字是從公司數據庫中盜取的,那麼,易於理解的黑匣子也不能正常工作-您不能拿走被盜的數字並找回密碼(假設原始密碼很強)。

supercat
2014-07-19 22:44:51 UTC
view on stackexchange narkive permalink

最根本的答案(我還沒有看到任何人直接聲明過)是,不能將能夠發現密碼的任何人的行為與合法所有者的行為可靠地區分開。如果希望能夠證明合法所有者執行了某項操作或通過自己的行為將密碼暴露給了未經授權的人,則必須確保絕不要求合法所有者做任何讓他人確定的事情。密碼。

如果Fred的密碼存儲在數據庫中的方式沒有被破壞,無法恢復,那麼Fred可以聲稱自己的密碼可能已被他人使用或洩露,以此來反駁任何不當行為。訪問密碼數據庫。 除非使用專門的硬件存儲密碼,否則將無法反駁Fred的反訴。

請注意,出於真正的安全考慮,Fred絕不應將其密碼暴露給其他任何東西。而不是他有理由信任的防篡改設備。否則,就有可能會以某種方式篡改Fred鍵入密碼的設備,從而將未散佈的密碼洩露給某些對手。

是的,這是最根本的答案。但是,這不是類推,對於向不認識的人進行解釋也不是很有用。
也許我的回答有點冗長,但是“如果您的系統管理員可以訪問用戶的密碼,那麼對他人的任何不當行為的指控將是他對管理員所說的”,這一想法應該是可以理解的。
Malcolm
2014-07-18 23:34:21 UTC
view on stackexchange narkive permalink

假設您是 Scrooge McDuck。您已經將您的一大堆錢保存在一個大型保險庫中已有一段時間了,但是這樣做有一個問題:如果一個小偷能夠進入保險庫,那麼您的所有金錢將一口氣丟失!不好因此,您就是聰明的鴨子,您決定將您的錢分成許多小堆,然後將每個堆放在自己的單獨保險庫中。現在,如果小偷獲得了使用一個保管庫的權限,則只會損失一小部分錢,您可以輕鬆地更換受損的保管庫。好多了!除了現在,您還有一個新問題:如何記住所有這些不同保管庫的組合?您不能只為每個人使用相同的組合,因為如果小偷得到了他們的幫助,他們將有機會使用您的所有資金,而且與將其留在一個巨人中一樣,您的生活也不會比這更好

您決定只在一張紙上寫下所有組合(以及每個人要使用的文件庫),然後將其放在單獨的文件庫中。現在,您只需要記住一種組合,但是您的錢仍然分開存放。這是一種改進,但仍然存在問題,因為如果小偷設法設法找到並用紙夾住了保險箱,他們就會仍然拿走你所有的錢。你不希望這種事情發生!

那你怎麼辦?好吧,理想的解決方案是用某種代碼寫下組合。您想要一個代碼,小偷不能使用它來找回所有原始組合,但是您仍然可以使用它來獲取您的資金。不幸的是,實際上沒有一種方法可以在金庫中賺錢。幸運的是,受密碼保護的用戶帳戶 是可能的,因為我們實際上不需要知道用戶的密碼-我們只需要知道他們即可。

將錢存入一個巨大的保險箱中,就像為整個系統使用一個主密碼一樣。將錢存放在不同的保險箱中並記下所有組合就像將用戶的數據保存在受密碼保護的帳戶中一樣,然後將所有密碼以純文本格式保存在一個位置:只要攻擊者知道或可以猜測該位置是的,它與擁有一個主密碼並沒有什麼不同。您需要一種對密碼列表進行編碼的方式,以便仍然可以使用它來驗證用戶是否具有正確的密碼,同時確保攻擊者無法使用列表以獲取密碼本身。簡而言之,這就是哈希的作用。

有趣的是,Scrooge的Money Bin在某些情節中顯示為具有微不足道的密碼。
Briguy37
2014-07-21 21:43:01 UTC
view on stackexchange narkive permalink

假設您的密碼數據庫已洩漏或被盜:

如果密碼為純文本格式,則您的所有密碼均屬於我們。

如果密碼為散列,則全部密碼仍在必須破解的共享銀行保險庫中。

如果密碼經過哈希處理和添加鹽分,則每個密碼都在其自己的私人銀行保險庫中。

除此之外,當每個密碼都是其自己的保管庫時,弱密碼就是弱保管庫。使用“共享銀行保險庫”,至少銀行對所有密碼都應用了高安全性標準。最好的做法是同時應用這兩種方法:弱密碼具有共同的保護,而強密碼本身俱有額外的保護。
otus
2014-07-22 15:59:41 UTC
view on stackexchange narkive permalink

分析時間:

  1. 存儲純文本密碼就像使您的房子解鎖。
  2. 加密密碼數據庫就像將密鑰存儲在門墊下。
  3. 散列密碼就像使用所有用戶共享的3位數數字鎖。
  4. 對密碼哈希值加鹽會為每個用戶分配自己的數字鎖。
  5. ol>

    沒有人應該實際上根據類推來決定安全事項,但是這些可能有助於向外行人解釋為什麼採取預防措施很重要。

Kaz
2014-07-24 02:41:18 UTC
view on stackexchange narkive permalink

對於哈希函數,沒有現成的類比可以在足球或汽車領域找到自己。我們能做的最好的就是洩漏實際情況。 )兩個或多個不同站點或服務的密碼。在那個完美的世界中,密碼對於攻擊者而言幾乎沒有任何價值。在破壞了用戶數據庫並學習了密碼之後,這些密碼對於訪問其他系統將毫無用處。

在現實世界中,用戶會重複使用密碼,因此密碼的保密性必須繼續

散列有助於保護密碼,因為從散列中獲取密碼的唯一方法是蠻力計算,這需要時間。該計算將首先破解短密碼或基於詞典單詞和常用短語的弱密碼。破解強密碼需要花費更長的時間,但是如果有足夠的時間,這些密碼也將掉落。密碼或使用類似的密碼,在攻擊者嘗試訪問其帳戶之前,可能有足夠的時間被警告並在其他系統上更改其密碼。 (不幸的是,那些密碼非常弱的用戶幾乎沒有時間,因為弱密碼會很快從哈希中“破解”。系統中的防護措施是防止用戶使用弱密碼。) >沒有散列,攻擊者可以在從受感染系統竊取密碼後立即繼續訪問其他系統。到管理員甚至了解該漏洞時,至少對於那些重複使用密碼的用戶,其他系統已經可以訪問。

還有第二個威脅:秘密訪問的威脅。這甚至影響那些不重複使用密碼的用戶。假設系統的密碼數據庫已洩漏,但是未檢測到此事件。攻擊者可以在破解後數月或數年內使用密碼秘密訪問系統。攻擊者不僅可以竊取事件發生時的最新信息,而且只要不更改密碼即可登錄到擁有密碼的帳戶,從而可以繼續竊取信息。

散列密碼有助於防範這種威脅,特別是與常規密碼更改和強密碼策略結合使用時。密碼強度高,確保攻擊者必須執行冗長的計算才能從哈希中發現密碼。密碼更改策略有助於確保在計算完成時,發現的密碼可能已經無用,因為它已被更改。

keshlam
2014-07-25 10:48:00 UTC
view on stackexchange narkive permalink

類比:作為一個鎖匠,我可以(在得到客戶許可的情況下)保留我為他們所做的工作的記錄,包括他們的鑰匙的詳細信息。但這使我冒著闖入自己的商店並偷竊清單的風險(或這樣做是邪惡的僱員)-在這種情況下,騙子可能會為許多房屋製造鑰匙,我將為此承擔責任信息更好。

密鑰的解決方案是永遠不要以明文形式存儲密鑰信息。對其進行加密存儲,切勿寫下解碼此數據所需的信息。如果有人竊取了加密的列表,則不會對其造成任何損害。

當然,對於計算機,“永不寫下”將意味著它無法解碼密碼。但是,我們可以通過創建一個實際上無需解碼它們的系統來解決該問題。取而代之的是,我們獲取用戶鍵入的密碼,對其進行編碼,然後將編碼版本與我們存儲的編碼密碼進行比較。如果它們匹配,則用戶鍵入正確的密碼。有一些“代碼”(密碼散列)允許編碼但不能解碼,因此可以確保其安全性。

有時仍然可以破解散列的密碼列表,但這樣做的成本高得多- -而且重要的是,您可以證明您在保護用戶數據方面做出了合理的努力,因此您承擔的責任少得多。

paj28
2014-07-22 13:04:11 UTC
view on stackexchange narkive permalink

散列的技術重要性被高估了。

您需要散列的實際原因是因為其他所有人都在進行散列。它被認為是“最佳實踐”。如果您有違規行為,則可以很容易地捍衛與同行一樣的職位。即使做對了,做些不同的事情也很難捍衛。因此,即使我認為網站很笨拙,我也始終建議網站遵循標準的哈希方法。

那麼,為什麼哈希的重要性被高估了?讓我們首先考慮一個使用非哈希密碼的網站。密碼將以純文本格式存儲在數據庫中。數據庫是安全的-在物理安全的服務器上,全盤加密,防火牆,安全管理中,並且受到Web服務器上應用程序邏輯的保護。這些密碼基本上是安全的。

我們為什麼要完全散列?它提供了最後一道防線。假設所有這些防禦措施都受阻。美國國家安全局(NSA)可能使用了零日瀏覽器漏洞,將惡意軟件從sys-admin的工作站上獲取,等待他登錄數據庫,然後從那裡進行了遠程控制,並提取了所有數據。在這種情況下,NSA將獲得所有明文密碼。這就是哈希的作用所在:如果您使用哈希,則NSA只會獲取哈希,並且他們必須進行蠻力攻擊才能獲取密碼。

這就是人們推薦哈希的原因。但這有缺陷,原因有以下三個:

  1. 個人數據-該網站保存您的密碼,同時還保存個人數據。無論是消息,照片,購物記錄。首先使用密碼的原因是為了保護您的個人數據。散列可以保護密碼,但不能保護您的個人數據。

  2. 實時捕獲-儘管數據庫中僅存儲散列,但每次有人登錄時,其密碼都會發送到Web服務器。 NSA可以靜靜地坐在服務器上,以捕獲每個人的密碼。散列並不能阻止這種情況。

  3. 密碼重用-出於其他原因,避免密碼重用很重要。因此,當LinkedIn被黑客入侵時,無論是否獲得我的密碼都無關緊要。黑客已經從LinkedIn獲得了我的個人數據。並且,如果他們恢復了我的密碼,則僅使他們可以訪問LinkedIn,並且他們已經擁有該數據。

  4. ol>

    鑑於所有這些,密碼哈希的好處是微不足道的。我不知道為什麼InfoSec社區會繼續進行密碼哈希處理,首先集中精力防止數據庫洩露會更明智。通常,散列的成本相對較低,但是有一個例外:高度迭代的散列。這樣的技術成本很高,而收益卻很低,因此,這種建議被嚴重誤解了。儘管如此,我還是建議人們遵循它,因為這是“最佳實踐”。

錯,錯,錯。您擁有密碼的原因是為了保護“控制”數據的能力。數據庫轉儲使攻擊者可以訪問您現在擁有的信息。純文本登錄憑據使攻擊者能夠代表您採取行動隨意更改數據。僅僅對密碼進行哈希運算是不夠的,但是還沒有聽說過兩次哈希運算(並且NSA嗅探加密流量的能力被“高度”誇大了)。而且,您可以告訴人們不要重用您想要的所有密碼。他們仍然會這樣做,如果受到威脅,那仍然是IT的錯。
@KeithS-您是否有數據來支持有關大多數違規行為是只讀違規的說法?您似乎也似乎不了解嗅探加密流量與從受感染主機進行本地嗅探之間的區別。當您的評論以操場上的三個居高臨下的詞開頭時,這並不讓我感到驚訝。
您自己斷言,如果攻擊者獲得數據庫的副本,則無論是否具有您的憑據,他們都將擁有您的個人數據。您似乎無視您自己的陳述的含義是,他們將在自己的系統上複製該陳述以進行離線分析。在沒有某人的憑據或至少沒有一個真正好的主意的情況下,初始數據洩露是“總是”只讀的。如果有足夠的時間,您可以嗅探數據流或提升數據存儲,直到它們完全相同,然後分析數據以獲取憑證並造成“實際”損壞。
而且,我確實了解嗅探加密流量與在受感染主機上偵聽之間的區別。這就是為什麼有關NSA破解加密算法的新聞報導過分誇張的原因。那不是他們在做什麼。但是,如果攻擊者在您的計算機上具有物理或電子狀態,則您會迷失方向。那天第一天。大多數攻擊者沒有這種訪問權限,因此僅由於一個政府實體有可能看到它們被傳輸而無法保護存儲的密碼,就像沒有鎖您的前門一樣,因為存在鎖匠。
@KeithS-儘管細節難以掌握,但我知道大多數漏洞是由於數據庫或應用服務器受到攻擊,並且攻擊者俱有讀/寫訪問權限。確實發生了諸如某些SQLi之類的只讀違規,但這種情況很少見。很多時候,黑客只對讀取數據(例如信用卡號)感興趣,儘管銀行系統對此有所不同。無論如何,散開了,我沒有打擾,但是我使用高熵站點專用密碼(與pw管理器一起使用),所以我不在乎您是否也這樣做。
不管讀訪問還是讀/寫...如果某人僅能訪問密碼數據庫,他們實際上並沒有太多的“寫”動機-他們可以將您拒之門外(這對他們有好處嗎?),或者只是閱讀。然後,他們可以登錄並訪問您帳戶的其餘部分。如果您的密碼是哈希值,則必須先計算另一個生成相同哈希值的密碼,然後才能登錄並訪問其他數據位。獲得一個用戶信息需要進行大量工作(儘管如果密碼未加鹽,獲取大量用戶信息也需要進行大量工作,這更值得)
@Allen-攻擊者可以覆蓋哈希然後登錄
gnasher729
2014-07-19 00:58:29 UTC
view on stackexchange narkive permalink

告訴老闆的事情:“這是問題所在。我是一位經驗豐富的軟件開發人員,我告訴您,在絕對不可原諒的愚蠢程度下,存儲未加密的密碼是有風險的。即使在存儲無鹽密碼的情況下,也存在風險我已經告訴過你了,你可以命令我存儲未加密的密碼,我會這樣做的,但是如果遇到麻煩,我會告訴任何想听這不是因為我不稱職的人,但是因為您命令我在認真的建議下這樣做,因此,我保證您將承擔個人責任,並且您之後將有律師要求您付出每一分錢自己。

這比直截了當地解決問題的方法更容易受到譴責或開除。這將是一個非常不正常的方法。
哦,我應該指出,這也是完全錯誤的。中級經理大約有0%的機會會因洩露而對數據丟失承擔個人責任。被解雇了。不太可能,但是可能。個人承擔經濟責任?沒有機會。
好吧,我為此而被解僱的地方會給我一個相當舒適的解決方案。
那完全無關緊要。問題在於如何讓非技術老闆了解密碼哈希的重要性。不是如何讓非技術老闆解僱你。這是無答案的。
@gnasher729你住在哪裡?我從未聽說過無法將開發人員因能力解僱的司法管轄區


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...