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