聊聊密碼、密鑰和熟悉度偏差
隨著密碼(無(wú)密碼身份驗(yàn)證)的采用,誤解比比皆是。人們似乎普遍認(rèn)為萬(wàn)能鑰匙可能比密碼更方便但安全性更低?,F(xiàn)實(shí)情況是,它們更安全、更方便——可能是網(wǎng)絡(luò)安全領(lǐng)域的首創(chuàng)。
我們大多數(shù)人沒(méi)有意識(shí)到無(wú)密碼身份驗(yàn)證比密碼更安全,這是情有可原的。回想一下我接觸到的前幾個(gè)用例——電話操作系統(tǒng) (OS) 和銀行應(yīng)用程序——其中隱含著強(qiáng)調(diào)便利性而不是安全性。
直到最近,我使用過(guò)的服務(wù)幾乎都沒(méi)有體現(xiàn)出其在更高安全性方面的優(yōu)勢(shì)。許多服務(wù)迫使客戶定期使用密碼重新進(jìn)行身份驗(yàn)證,以允許使用生物識(shí)別技術(shù)繼續(xù)登錄。這完全沒(méi)有抓住重點(diǎn)。
一種模糊的感覺(jué)是,萬(wàn)能鑰匙的便利性比其安全性更重要,這是一回事。另一種印象是他們實(shí)際上不太安全。
Auth0最近進(jìn)行的 LinkedIn 民意調(diào)查在一定程度上迫使我寫(xiě)了這篇文章。
圖片
令人震驚的是,額外的安全優(yōu)勢(shì)在調(diào)查中僅排名第三。我的同事杰夫·克魯姆(Jeff Crume)在此處和此處錄制了兩個(gè)關(guān)于該主題的精彩視頻。
我采取了稍微不同的策略。在消除對(duì)新事物的擔(dān)憂之前,我打算先翻轉(zhuǎn)一下這個(gè)問(wèn)題。
為什么我們過(guò)度(甚至盲目)相信安全現(xiàn)狀?
許多 IT 領(lǐng)導(dǎo)者和工程師都記得云采用的早期階段,當(dāng)時(shí)謹(jǐn)慎的高管對(duì)大型云提供商的安全性和彈性承擔(dān)了更多的舉證責(zé)任,而不是對(duì)位于漏水的門(mén)衛(wèi)衣柜中的自己的服務(wù)器機(jī)柜承擔(dān)的舉證責(zé)任。
我最喜歡的做法是強(qiáng)調(diào)現(xiàn)有的事情自然是好的。
認(rèn)知心理學(xué)和行為經(jīng)濟(jì)學(xué)領(lǐng)域在這里對(duì)一些相關(guān)的相互關(guān)聯(lián)和重疊的現(xiàn)象進(jìn)行研究。這些領(lǐng)域的教父丹尼爾·卡尼曼(Daniel Kahneman)和阿莫斯·特沃斯基(Amos Tversky)提出了可用性啟發(fā)法,即最容易回憶的事物被錯(cuò)誤地判斷為最真實(shí)的事物。
這種啟發(fā)式的一個(gè)密切衍生的副產(chǎn)品是熟悉度啟發(fā)式。與數(shù)量較多但非名人的男性名字相比,受試者看到的女性名字較少但更出名。女性名人名字的熟悉使他們相信她們?cè)谂平M中出現(xiàn)的頻率更高。
但最符合我們考慮的現(xiàn)象是羅伯特·扎洪克的單純曝光效應(yīng)。他的作品既令人著迷又令人恐懼,提供了強(qiáng)有力的證據(jù),表明喜歡/不喜歡才是真正推動(dòng)我們做出決定的因素,而認(rèn)知在大多數(shù)時(shí)候扮演著令人驚訝的次要角色。反過(guò)來(lái),這種效應(yīng)可以通過(guò)重復(fù)暴露于刺激來(lái)消除。
更陰險(xiǎn)的是,扎瓊克證明,低水平、不太明顯的刺激可以引起我們的注意,并讓我們?cè)诓恢挥X(jué)中通過(guò)熟悉感喜歡某些東西。最近研究該譜系的學(xué)者似乎支持這樣一種說(shuō)法,即通常很少有認(rèn)知參與形成依戀或厭惡,熟悉和重復(fù)是形成依戀或厭惡的最大因素。
鑒于此,很容易看出是什么推動(dòng)了經(jīng)常說(shuō)的謊言變成事實(shí)的動(dòng)力。這種傾向可能會(huì)導(dǎo)致我們錯(cuò)誤地相信司空見(jiàn)慣的事物,以此作為我們對(duì)小說(shuō)的懷疑的錯(cuò)誤推論。
納西姆·塔勒布(Nassim Taleb)在他對(duì)林迪效應(yīng)的討論中正確地指出,嘗試過(guò)的、經(jīng)過(guò)測(cè)試的和長(zhǎng)期存在的東西通常都是有充分理由的,但這不應(yīng)該讓我們忽視它們的弱點(diǎn)。
由于所有這些因素,即使服務(wù)傳達(dá)了其增強(qiáng)的安全優(yōu)勢(shì),人們也可能不愿意使用密鑰。為此,讓我們比較密碼和密鑰的工作原理,并檢查哪些更安全。
密碼的工作原理
首先,讓我們快速了解一下密碼創(chuàng)建、存儲(chǔ)和身份驗(yàn)證。
當(dāng)用戶創(chuàng)建帳戶并定義密碼時(shí),密碼將通過(guò) sha256 等哈希算法輸入。這允許使用散列值來(lái)驗(yàn)證密碼,而服務(wù)提供商無(wú)需存儲(chǔ)密碼或知道密碼是什么。
為了說(shuō)明這一點(diǎn),我們以密碼“MySecurePassword123”和“MysecurePassword123”為例(區(qū)別在于后者中“secure”的 s 是小寫(xiě)的)。
看看它們的哈希值有多么不同:
- 我的安全密碼123 -> 1a5b06de7c27f493f0b246de9ab71dc35fc2171c38dc4c2b54f37e065a85e6f5
- MysecurePassword123 -> d3f05a7223df23f4295a7e3be9a6f64c1f9bf5b90068b8e4a1b5e0e0440bb594
讓我們繼續(xù)使用“MySecurePassword123”示例。為了確保具有相同密碼的兩個(gè)用戶不會(huì)得到相同的哈希值,首先會(huì)生成一串隨機(jī)字符并將其附加到開(kāi)頭。這稱為“加鹽”。此隨機(jī)加鹽字符串將添加到用戶定義的密碼的開(kāi)頭。
讓我們逐步完成該過(guò)程:
- 原始密碼:MySecurePassword123
- 生成鹽:\x8e\xd7T\xe7\xd6\x84\xbb\x18\x1a\xed4sBp\x06
- 與密碼結(jié)合:
\x8e\xd7T\xe7\xd6\x84\xbb\x18\x1a\xed4sBp\x06MySecurePassword123
(或 \x8e\xd7T\xe7\xd6\x84\xbb\x18\x1a\xed4sBp\x06 + MySecurePassword123)
- 哈希組合鹽+密碼:
35f3b09d68e4c0059d06d2b259c21dd67c5b33a520ff2b1980ad5dcafc764de1
最終的哈希組合以及注冊(cè)時(shí)生成的鹽值是最終存儲(chǔ)的內(nèi)容:
- 鹽:\x8e\xd7T\xe7\xd6\x84\xbb\x18\x1a\xed4sBp\x06
- 哈希組合鹽+密碼:
35f3b09d68e4c0059d06d2b259c21dd67c5b33a520ff2b1980ad5dcafc764de1
對(duì)于每次身份驗(yàn)證,都會(huì)檢索保存的鹽字符串,將其添加到用戶輸入的密碼的開(kāi)頭,通過(guò)相同的哈希算法進(jìn)行輸入,并根據(jù)目錄中存儲(chǔ)的哈希值進(jìn)行檢查。
這意味著輸入“MySecurePassword123”作為密碼的用戶每次都會(huì)將存儲(chǔ)的鹽值添加到開(kāi)頭,并且始終以相同的散列組合值結(jié)束。
主要缺點(diǎn)是用戶每次仍然需要通過(guò)互聯(lián)網(wǎng)傳輸密碼。不僅如此,它們還可以通過(guò)暴力、撞庫(kù) 或字典攻擊等方式被黑客攻擊或破解。
現(xiàn)在,讓我們將其與密鑰進(jìn)行比較。
密鑰如何工作
先說(shuō)最重要的信息,密鑰身份驗(yàn)證基于名為 Fast Identity Online 2 (FIDO2) 的協(xié)議。其主要的安全優(yōu)勢(shì)在于,它無(wú)需通過(guò)發(fā)送密碼來(lái)通過(guò)互聯(lián)網(wǎng)傳輸憑證。此外,由于它使用私鑰和公鑰,因此幾乎沒(méi)有任何東西可以破解或破解,正如我們將看到的。
讓我們看一下用戶通過(guò)創(chuàng)建密鑰然后使用它進(jìn)行身份驗(yàn)證來(lái)向 Google 注冊(cè)其設(shè)備進(jìn)行生物識(shí)別身份驗(yàn)證的典型流程。
圖片
- 用戶在支持 FIDO 的設(shè)備操作系統(tǒng)中注冊(cè)指紋、面部或 PIN,以供稍后在本地身份驗(yàn)證期間使用。該生物識(shí)別或 PIN 憑證數(shù)據(jù)的哈希值存儲(chǔ)在設(shè)備上安全的分區(qū)硬件組件中,稱為安全元件或可信執(zhí)行環(huán)境。
- 作為創(chuàng)建 Google 登錄密鑰的一部分,支持 FIDO 的設(shè)備會(huì)生成一個(gè)私鑰和公鑰對(duì),其概念與 HTTPS 通信中使用的密鑰對(duì)相似。公鑰被發(fā)送到正在注冊(cè)密鑰的服務(wù)。私鑰與生物識(shí)別憑據(jù)哈希保存在同一安全硬件警戒線中。
- 下次 Google 收到來(lái)自該用戶名的登錄請(qǐng)求時(shí),它會(huì)向啟用 FIDO 的設(shè)備發(fā)送質(zhì)詢。
- 支持 FIDO 的設(shè)備通過(guò)掃描用戶的面部或指紋來(lái)在本地對(duì)用戶進(jìn)行身份驗(yàn)證。
- 如果生物識(shí)別匹配,啟用 FIDO 的設(shè)備會(huì)發(fā)送使用在步驟 2 中向 Google 注冊(cè)時(shí)創(chuàng)建的私鑰生成的數(shù)字簽名。如果簽名與公鑰進(jìn)行驗(yàn)證,則 Google 可以驗(yàn)證此質(zhì)詢響應(yīng),因?yàn)橹挥性撍借€的持有者密鑰可以生成該簽名。
FIDO 結(jié)合使用了長(zhǎng)期運(yùn)行的生物識(shí)別分析和加密范式來(lái)保護(hù)網(wǎng)絡(luò)通信,以實(shí)現(xiàn)更高的安全性和便利性。通過(guò)互聯(lián)網(wǎng)傳輸?shù)乃袃?nèi)容都是公鑰、質(zhì)詢和數(shù)字簽名——確認(rèn)設(shè)備和服務(wù)器之間身份驗(yàn)證的加密技術(shù)。