知乎日報:為什麼密碼的驗證方式一直沒有得到突破?
有點長,這一段算是摘要吧。身份鑑別技術主要透過知識和實物對客體進行身份鑑別,口令是一種低成本並且準確有效的身份鑑別方式,因此廣泛使用並且難以有很大的突破。本文還談了好的身份鑑別方式的三個特點。身份鑑別技術的突破,或者應當說是創新還是有的,下拉看圖就知道了。多使用者密碼管理確實影響網際網路的使用體驗,因此 OpenID 應運而生。
身份鑑別是一項遠遠早於網路技術和計算機技術就已經存在的技術,幾千年來人們用於鑑別身份的方法無非就是那麼幾類,不少資訊保安的書籍在介紹這些驗證方法表述為三種形式:know something、have something 和 is something / someone。
能夠判斷“是某人或某物”當然是我們的最高理想,但是從來就沒有出現過一種方法能夠準確無誤的判定“是某人”。在不同的時代,能夠有一些近似的方法,比如說現在我們會把檢驗 DNA 或者虹膜當作能夠直接確認“是某人”的方法,但是實際上這還是屬於 have something 的身份認證形式。
know something 是一種透過知識來鑑別身份的方法。口令,即我們通常所說的密碼,就是方式的經典代表,已經使用了幾千年,兩千年前的“雞肋”,現代戲曲中的“天王蓋地虎,寶塔鎮河妖”,大家早已耳熟能詳。而 have something 則是透過擁有一種特定的實物來進行身份鑑別的,像古代的虎符、印章,現在的門禁卡都屬於這種,實物形式的身份鑑別資訊應當具有難以複製和偽造的特點。
對於我們現在使用的計算機而言,兩種形式的身份鑑別措施都有,登入使用的口令屬於 know something 這類透過知識進行身份鑑別的,而 U 盾、動態口令卡之類的屬於 have something 這類透過實物進行身份鑑別的,另外還有一些透過臉型、指紋這類生物特徵進行身份鑑別的技術也是 have something 這一類。
口令這種方式適合作為身份鑑別資訊的特點,除了簡單方便,一個很重要的因素就是容易準確輸入,或者說輸入空間相比於聲音、影象之類的資料要小很多。口令只需要判斷兩段資料是否相等就可以完成身份鑑別;而指紋、聲音、面部識別之類的方法,輸入的資訊是一個不太準確的資訊,需要複雜的演算法進行校正、識別、提取特徵,然後才能判斷,因此容易出現誤判的情況。一個例子就是微軟的 Xbox 面部識別在昏暗光線環境中不能有效識別黑人的面部特徵,無法透過面部識別登入而被某位黑人告種族歧視,雖然想想覺得微軟挺冤枉的。微軟否認 Xbox Kinect 涉嫌種族歧視指責
使用 have something 方法,判斷擁有的事物又可以區分為本身擁有的,以及專門製造發放的信物。上文討論過聲音、面相、指紋這些都屬於使用者本身擁有的事物,而 U 盾和動態口令卡之類的實物硬體則是專門製造用於身份鑑別的信物。專門製造的信物成本自然是高,但是安全也比較好,不容易複製和偽造,配合口令使用則具有很高的安全性,所以一般會在像網銀這樣安全級別比較高的場合使用。而聲音、面相和指紋的例子已在上一段中討論。補充說明中說的戒指也是一種實物方式,感覺和 U 盾之類的東西沒有什麼太大的區別,只是可以佩戴在身上而已。
所以,總結上文討論,一種好的身份鑑別方式應當具有這樣的一些因素:
準確可靠鑑別客體,受到外界因素影響較小;
用於鑑別的憑證(知識或實物)不易被複制和偽造,成本也不宜過高;
容易輸入,而且能夠進行秘密輸入;
而我們現有的身份鑑別方式中,口令這種方式以滿足上述所有因素並且成本最低,理所應當的成為我們最常用的身份鑑別方式,而 U 盾、動態口令卡等方式在權衡所保護財產的價值以及自身成本的情況下,也可以算是一種比較合適的透過實物進行身份鑑別方式。聲音、面部識別的準確度並沒有那麼高,常常需要配套一個等同於口令的方式(如安全問題)輔助,在工作不正常的時候使用,但是這些問題如果較長時間不使用是很容易忘記的,更不用說聲音相近、相貌相似的人大有人在這樣的問題。而秘密輸入聲音無法具備,阿里巴巴偷聽咒語偷取財寶的童話故事大家應該都聽過。
以上說的是口令這種身份鑑別方式為什麼會被廣泛採用,至於突破,我覺得還是有的,舉幾個例子。
驗證碼也算是一種身份鑑別技術,只不過鑑別的粒度不是一個客體,而是一類客體,通俗的說就是用來區分人和機器,而不是區分人和人。如果要用文章開頭的那幾種方式歸類,我覺得都不算,應該單列一種 can do something,有能力做某事,如果非要把這個等價於 have ability to do something,從而算作 have something 的話,那好吧。
也可以用上面這類驗證碼區分具體某一類的人,總之驗證碼能夠對一類人的身份進行鑑別,在不少場合還是很有用的。
還有一種我覺得算是突破的身份鑑別方法是 Android 的鎖屏,九點圓點用線連起來(圖片來自:手機中繪圖密碼有 9 個點,最多能畫出幾個交叉點?)。算是近期出現的安全級別相當於口令,並且能夠滿足上文所述三條特性的一種身份鑑別方法了。
補充說明還提到了一個問題,多使用者密碼的管理是否會影響使用者體驗,這一點顯然是會影響。一百個網站記憶一百套使用者名稱和口令,誰也不能保證能夠記住,必然會在很多地方重複使用同一個口令。而且大多數都是小型網站,有一些網站訪問的頻率還是會很低,我們甚至還但是小網站是否會因為技術不過硬或者其他非技術問題洩漏我們的口令。所以 OpenID 這種方法應運而生,透過一個第三方平臺的 ID 登入,我只需要向這個第三方平臺核對訪問者的資訊就可以了,過程完全不用使用者參與,可以免除記憶口令、方便使用者,減少小型網站維護這些資料的負擔,在社交行為覆蓋整個網路的環境中,還非常有利於資訊的分享和傳遞。