密碼就是一坨翔。沒有人會挑選一個好的密碼,就算他們好不容易選了一個不錯的,也會在所有的網(wǎng)站上都使用這個密碼;就算你用了一個可以信賴的密碼管理軟件,它也會被人破解。不過你知道比密碼更爛的是什么嗎?那就是指紋。指紋的問題多如牛毛,你在任何時候都不應(yīng)該用它來取代密碼。
密碼應(yīng)該是保密的,就像你小時候養(yǎng)的寵物的名字。相比之下,你帶著手指頭到處晃悠,它們幾乎在任何時候都是暴露在外的。當(dāng)你的密碼被泄露了,一般很容易就換個新密碼??赡悴幌霌Q個手指頭吧?最后,也是最為重要的,你希望密碼是經(jīng)過哈希處理的,這樣就算密碼數(shù)據(jù)庫被盜,不法之徒也無法獲取你的密碼。
在本文剩下的篇幅中,我會分別介紹以上三個方面的內(nèi)容,希望能說服你相信,從根本上說用指紋比用密碼要糟糕得多。(你聽信蘋果和谷歌的忽悠?不,我想你不會的。)
指紋并不保密
首先,使用指紋取代密碼最明顯的問題,就是指紋壓根就不是保密的。想想你在影視劇里面看到的:警察在向壞蛋問話的時候,遞給了他一杯咖啡,然后把這個杯子送到法醫(yī)實(shí)驗(yàn)室,就搞到了他的指紋。案件偵破!
但實(shí)際情況會更糟。你的指紋到處都是。可以從紙張、鍵盤和桌子表面上提取到指紋。你不會把你的密碼寫在便簽紙上,然后貼到工位的顯示器上,對吧?可如果你的工作需要使用指紋來進(jìn)行身份認(rèn)證,那這個密碼可能已經(jīng)留在你的顯示器上了。
德國黑客 Jan Krissler(網(wǎng)名 starbug),只要一有機(jī)會就會向別人灌輸這個概念。 iPhone 5 toucHID 系統(tǒng)剛發(fā)布的時候,starbug 就開始垂涎三尺了。他立刻買了一臺,鼓搗了兩天后,他證明自己能在蘋果店門口排隊(duì)的人群散去之前,就能騙過指紋讀取器。starbug 在接受 Ars Technica 采訪的時候, 抱怨說這也太容易了。來自蘋果的匿名人士表示,他們原本預(yù)期這個過程會花上兩個月,而不是兩天。
如何仿造指紋
他用來仿造指紋的技術(shù)超級簡單。他復(fù)制了一個指紋,然后把它蝕刻在銅片上(和制作印刷電路板一樣),在蝕刻上噴一層石墨,最后在上面蓋上一層木膠或者乳膠。在銅片被蝕刻掉的地方,膠水加石墨的指模會更深,這用來模擬你手指上紋路。石墨涂層和手指一樣擁有電容的特性。如果再用上和皮膚顏色相同的乳膠,你就做出了一個像碟中諜電影里一樣的東西,成本只有 5 美元加上一個下午的時間。而你需要的只是從杯子或者書本上提取一張質(zhì)量好點(diǎn)的指紋圖片。
從照片中提取指紋
別在你的照片中露出指紋。從一張記者招待會的照片中,starbug 復(fù)制出了 Ursula von der Leyen(德國國防部長)的指紋。不管這個指紋是不是真的能控制整個德國的軍隊(duì),反正你明白這個意思了;希望他們真的別用指紋來當(dāng)密碼。
在德國的黑客交流大會上,starbug 做了一個很棒的演講,他討論了這項(xiàng)技術(shù)所需要的照片分辨率,以及很多其他和生物特征辨識相關(guān)的黑客技術(shù)。不過重點(diǎn)在于,只要有足夠的分辨率、或者是一個足夠好的鏡頭,就可以從一個很舒服的距離拍攝到指紋的照片。其中主要的限制是焦距帶來的淺景深以及光照情況,這對于那些在照明充足的臺上、面對一大堆相機(jī)的政客們來說可不是個好消息。不管你是不是政客,除非你一直戴著手套,否則你的指紋就不會得到很好的保護(hù)。
指紋是不可改變的
好吧,假設(shè)說你的普通密碼不管因?yàn)槭裁丛蛐孤读耍瑫卸嘣?在理想世界中,被攻破的網(wǎng)站會通知你并提醒你更換密碼。你可以把寵物狗的名字換成寵物貓的名字,或者你出生的年份和你妹妹的出生年份。搞定!
不過如果你用指紋當(dāng)密碼,然后不慎泄露的話,卻不可能去改變它。實(shí)際上,在傳統(tǒng)使用指紋的場景中,正是利用了它的唯一性和不可變性——比如在犯罪現(xiàn)場中用來甄別罪犯。要是能在犯罪之后改變指紋的話,你就不用戴那些礙事的手套了。
指紋會伴隨你一生。如果我盜取了你的指紋,我就可以解鎖你現(xiàn)有的指紋加密的設(shè)備,和你以后購買的所有指紋加密的設(shè)備。指紋只是半安全的,它不可修改,這讓它成了相當(dāng)糟糕的密碼。這一點(diǎn)不用再多說了,反正肯定就是這么回事兒了,不過還是得強(qiáng)調(diào)一下,因?yàn)槭郎线€是有很多壞警察的(譯注:會盜用你的指紋)。
舉個例子,敏感的政府機(jī)構(gòu)會使用個人身份認(rèn)證(PIV)卡,上面包括了雇員的指紋。除了需要輸入正確的密碼之外,使用 PIV 卡的聯(lián)邦雇員還必須掃描指紋,并和保存在卡內(nèi)的指紋進(jìn)行對比。這種使用密碼和指紋匹配的方式構(gòu)成了雙重認(rèn)證系統(tǒng)。
而在這之后,美國國家人事局(OPM)被黑了,560 萬(!)枚政府雇員的指紋被竊取,很可能是外國間諜機(jī)構(gòu)干的。于是現(xiàn)在國土安全局可能不得不改為使用“三重認(rèn)證”,因?yàn)槠渲械囊粋€認(rèn)證方式已經(jīng)徹底完蛋了。如果當(dāng)初政府在 PIV 卡中使用了一種可替換的方式,至少這次泄露彌補(bǔ)起來會容易得多。
密碼需要定期更換來確保其保密性和安全性。指紋是不可更換的。
指紋是不能被哈希處理的
指紋的問題在于判定的時候只要近似就夠了,而且應(yīng)該也是這樣。如果我在指紋識別器上按手指的時候稍微大了點(diǎn)勁兒,或者稍微錯位了一點(diǎn),又或者手指被劃傷了,我依然希望這個識別器能接受我的指紋。訓(xùn)練有素的 FBI 探員在對比指紋時,通常都使用“部分”匹配的方式,只要有合理的精確度就夠了。對于血肉之軀的人類和現(xiàn)實(shí)世界中的指紋掃描儀來說,近似匹配是合情合理的。不過只要指紋有細(xì)微的瑕疵,經(jīng)過哈希處理后就會和參照版本完全不同。這也就意味著指紋是不可哈希的。哈希算法讓密碼更加健壯,一旦缺少了哈希算法的保護(hù),指紋就變得脆弱得多。
現(xiàn)在假設(shè)一個靠譜點(diǎn)的網(wǎng)站被黑了,就算黑客竊取了網(wǎng)站的密碼數(shù)據(jù)庫,他們也不會因此擁有這些密碼的列表。他們只能得到用戶名以及被單向哈希之后的密碼。
當(dāng)你輸入密碼的時候,網(wǎng)站會對結(jié)果進(jìn)行哈希運(yùn)算。如果你輸入的哈希值和網(wǎng)站保存的哈希值相同,就能確認(rèn)這個密碼是正確的。因?yàn)楣K惴ㄊ峭耆珕蜗虻模詫θ魏稳藖碚f,從哈希結(jié)果反推出你實(shí)際的密碼幾乎都是不可能的。實(shí)際上,反推哈希密碼最簡單的方式,就是嘗試每個可能的密碼,計(jì)算哈希值,然后進(jìn)行比較。
相比之下,一個簡單初級的實(shí)現(xiàn),就是網(wǎng)站直接保存了每個用戶的密碼,但是用一個主密碼對它們進(jìn)行加密。如果黑客能夠搞定這個主密碼,他們就能破解整個數(shù)據(jù)庫中的所有密碼。這個主密碼在每次密碼校驗(yàn)過程中都會用到,這使得它擁有巨大的價值,同時卻也非常脆弱。如果使用不同的主密碼分別加密每個用戶的數(shù)據(jù)的話,就意味著他們還得維護(hù)一個巨大的主密碼數(shù)據(jù)庫,這其實(shí)毛用都沒有。這就是為什么每個靠譜的網(wǎng)站都只會保存用戶密碼的哈希結(jié)果。
不過哈希算法仍然可以比加密做得更好。如果網(wǎng)站的開發(fā)者擁有足夠的安全意識,就會在進(jìn)行哈希計(jì)算之前進(jìn)行加鹽:在密碼中附加上其他的一些東西(這個東西不必是保密的);這會讓暴力破解的過程變得更加緩慢,因?yàn)檫@相當(dāng)于每個人的密碼都是以不同的形式進(jìn)行哈希的。
如果咱倆都使用了“!password123”作為密碼,不過我的密碼之前加了“elliot”,而你的密碼之前加了“joe_user”,我們的密碼經(jīng)過哈希處理之后就會變得完全不同。就算黑客最終猜到了你的密碼,因?yàn)檫@個“鹽值”的存在,他們也無法立刻得知我的密碼。
如果網(wǎng)站安全做得特別好的話,這個哈希過程會使用一個耗時的算法重復(fù)進(jìn)行上千次,從而進(jìn)一步減緩了暴力破解的速度。在你登錄網(wǎng)站的時候如果花上個半秒一秒,對你來說可能不是什么事兒,不過對于那些依賴于每秒進(jìn)行數(shù)百萬次嘗試的暴力破解者來說,這可就是大麻煩了。密碼管理軟件 LastPass 被破解(譯注:如果你的瀏覽器默認(rèn)是中文語言,這個鏈接會跳到他自己的中文版頁面上,這個中文版頁面……有點(diǎn)逗比),這件事是個很好的例證。他們被破解了這事兒本身確實(shí)挺糟的,你還是得換掉你的主密碼,不過如果做得夠好的話,任何人還是無法在短時間內(nèi)暴力破解你的密碼。
指紋和雪崩效應(yīng)
剛才這些東西和指紋到底有啥關(guān)系?指紋本身不能經(jīng)過哈希處理,所以上面那些做法(在數(shù)據(jù)中只保存加鹽密碼的哈希值)在安全性上面所帶來的優(yōu)勢,對指紋來說毛用沒有。這是因?yàn)槌藛蜗蛑猓粋€好的哈希算法展現(xiàn)了所謂的雪崩效應(yīng):密碼中一個輕微的改變會導(dǎo)致哈希結(jié)果極大的區(qū)別。
字符串“!password123”在使用 MD5 哈希處理之后,得到的值是 b3a2efccbe10c39f2119979a6f9a3ab2,而“!Password123”對應(yīng)的值是 d2583f9c75fbc22890d39e7241927511。這兩個字符串只有一個字母不同,那個大寫的“P”,但是兩個哈希結(jié)果的差異卻相當(dāng)巨大。這防止了那些暴力破解者去判斷他們嘗試的密碼和實(shí)際密碼之間的近似程度。如果密碼中每出現(xiàn)一個正確字母就和目標(biāo)哈希值接近一分的話,他們毫不費(fèi)力地就能猜到你的密碼了。雪崩效應(yīng)意味著猜到“相似”的密碼是毫無意義的。
正如我之前提到的,指紋技術(shù)需要能判斷出“足夠相似”。如果把它進(jìn)行哈希處理的話,就會差之毫厘、謬以千里。這也就是說,指紋只能被明文存儲,或者加密存儲,但是哈希算法一點(diǎn)用也沒有,因?yàn)橐粋€好的哈希算法會導(dǎo)致雪崩效應(yīng)。指紋數(shù)據(jù)庫不可避免地會成為薄弱環(huán)節(jié),只要你的指紋被保存下來,不管是在你的 iPhone 上、在 IPV 卡上還是在電子護(hù)照上,只要知道了主密碼,這里面存儲的指紋都可以被破解。
電子護(hù)照
哈希方法對比加密方法的一個很好的例子,就是電子護(hù)照。其中加密保存了你的指紋和虹膜照片的數(shù)據(jù),因?yàn)檫@些都是敏感信息。不過這些數(shù)據(jù)也只能加密(而不能哈希處理),因?yàn)樽o(hù)照讀取器需要能夠解密這些信息,才能和你的手指和眼睛進(jìn)行比對。(譯注:中國的電子護(hù)照在芯片內(nèi)也包含指紋和照片,也是加密保存的)
在這上面,所有你的非敏感信息和加密之后的數(shù)據(jù)包會一起進(jìn)行哈希計(jì)算,這個哈希值會使得篡改其中任何信息都變得很困難。你可能想在這些數(shù)據(jù)里面改變一個比特,然后在別的地方改變另一個比特“找補(bǔ)”回來,然而雪崩效應(yīng)讓這一切成為不可能。
即使這樣,到目前為止,這也僅僅意味著你的指紋只能通過加密的方式進(jìn)行保護(hù),而不是哈希處理的方式。這對于海關(guān)來說無所謂,因?yàn)樗麄冎魂P(guān)心你的指紋是不是被篡改過了。對他們來說,你的指紋只是用來證明你就是你;以及通過跟在你的信息后面的一個哈希值,來確保你的數(shù)據(jù)不會被篡改。
而另一方面,對于考慮到隱私問題的個人而言,只是把你的指紋進(jìn)行加密不免讓人有些擔(dān)憂。一個擁有你的護(hù)照和正確密碼的壞蛋,可以把數(shù)據(jù)進(jìn)行解密從而獲得你的指紋。雖然從護(hù)照封皮上提取你的指紋可能要容易得多,因?yàn)橹讣y不是保密的,還記得吧?
結(jié)論
別把你的指紋當(dāng)密碼用。指紋是永久不變的、容易校驗(yàn)的并可以輕松獲取的,這對于犯罪調(diào)查和確認(rèn)你的身份來說非常有幫助。不過它們并不是密碼,因?yàn)樗鼈儾皇潜C艿?、是無法改變的、而且也很難安全地保存。