雷鋒網(搜索“雷鋒網”公眾號關注)按:康奈爾、MIT和Dropbox的研究人員在最近的IEEE安全隱私研討會上發表論文,文章指出在不危及安全的情況下自動更正密碼能顯著增強可用性,主要是為了避免密碼多種字符組成造成遺忘的麻煩。然而,雷鋒網擔心的是,自動更正密碼就意味著陌生人也有可能登錄你的賬號,那么,該如何平衡效率與安全?雷鋒網特約專欄作者——上海交通大學計算機系密碼與計算機安全實驗室(LoCCS)軟件安全小組(GoSSIP),將在文章中告訴你答案。
某天小明正在開心地瀏覽他最愛的網站,突然間一個一言不合網站竟丟了個登陸框出來。小明一邊內心極度不情愿,一邊無比熟練地輸入密碼敲下回車,然而一低頭卻發現鍵盤上的大寫鎖定開著。正當內心抱怨又要重敲一遍的時候,小明吃驚地發現,自己居然登陸成功了。
在反復打開、關閉大寫鎖定重復登陸了幾次,并確定大寫鎖定鍵沒有壞后,小明發現兩個密碼都是可以登陸的。這太奇怪了,小明不禁要問,錯誤的密碼都可以登陸,那別人用其他密碼也能登陸我的賬戶嗎?我還能在這個網站上放心地玩耍么?
| 錯誤糾正功能
其實,網站只是啟用了打字錯誤糾正(typo correction)功能,除了大寫鎖定造成的大小寫反轉(Password -> pASSWORD)外,還可以處理首字母大小寫錯誤(Password -> password)和尾部多余字符(Password -> Password`)問題, 這種機制極大地增加了合法用戶登陸的成功率,網站的可用性(usability)大有改善。
然而,大部分的現實應用都存在安全性與可用性之間的權衡,兩者此消彼長。因此,在可用性提高的同時,隨之而來的安全風險有哪些,我們的賬號被陌生人登入的可能性有多大,這些問題都值得關注。
來自康奈爾大學的研究人員在發表于2016年學術界頂級安全研究會議S&P上的“pASSWORD tYPOS and How to Correct Them Securely”一文中,對這些問題給予了解答。
具體來說,這篇文章主要回答了下面三個問題:
在敲入密碼時,什么樣的typo最常出現,根據帕累托法則(也叫二八定律),自動糾正最常出現的typo類型即可對可用性有很大影響;
typo correction對可用性的影響究竟如何;
typo correction對于安全性的影響如何?
為回答第一個問題,研究人員在Amazon Mechanical Turk上發起了一個密碼轉錄實驗。
這里額外介紹下Amazon Mechanical Turk,它是一個線上“勞動力”市場,網站自己的介紹是人工的人工智能(Artificial Artificial Intelligence),任何人都可以在上面發布人力智能任務(HIT, Human Intelligence Tasks,比如識別并錄入一張超市小票中所有的條目名稱和價格)并提供報價,其他人則可以在其上完成這些任務并獲得相應報酬。
(截圖來自Amazon)
這個密碼轉錄實驗就是請實驗者敲入圖片中的密碼,最后有4300人參與,輸入了10w多密碼。統計結果發現,排名前三的typo分別是大寫鎖定(11%)、首字母翻轉(4.5%)和在末尾添加字符“.”(4.6%),共占到了所有typo的20%。因此,文章接下來選擇這三種typo類型加入到typo correction機制進行研究。
關于引入錯誤糾正機制對實際可用性的影響,研究人員通過發布一個特殊版本的Dropbox版本,記錄用戶輸入的密碼并觀察是否登錄成功,發現有3%的用戶是由于上面提到的三種typo導致登陸失敗。而在輸入密碼錯誤的用戶中,如果三種typo可以自動糾正,則會有20%的用戶可以節省至少1分鐘的時間。可以看出引入錯誤容忍機制,對于可用性的提高是有顯著影響的。
|typo容忍機制安全嗎?
最后,回到typo容忍機制對于安全性的影響。
對于基于密碼的認證系統來說,切實的威脅主要來自兩個方面。
第一是服務器被黑,攻擊者可以拿到存在服務器上的認證信息,這些信息通常是真實密碼經加鹽慢哈希后的結果(比如對應于PasswoRd這個密碼,服務器上可能存儲的就是將其拼接一個16字節隨機數據后進行10000次MD5后的結果),而不會存儲變換后密碼對應的哈希結果。在這種情況下,是否引入typo容忍機制對于攻擊者來說其實并無差別,因此對安全性也并無影響。
第二種威脅是遠程猜測,攻擊者可以不斷嘗試不同的密碼直到登陸成功為止,不過實際中網站都會設定一個安全次數,在攻擊者嘗試錯誤密碼一定次數(q)后賬戶就會被鎖定。但在這種條件下,引入錯誤容忍機制的確會給攻擊者帶來優勢。原本攻擊者發起1次登陸請求只能驗證1個密碼是否正確,而錯誤容忍機制的存在使得攻擊者可以一次排除4個不正確的密碼,那么攻擊者的成功率是否就因此而增加了300%呢?
其實不然,因為用戶選擇的密碼并不是均勻分布的,用戶對密碼選擇的偏向性導致某些字符串是正確密碼的概率遠大于其他字符串。因此,為了弄清對安全性的實際影響究竟如何,研究人員又做了模擬實驗,實驗中假定攻擊者知道密碼的分布情況,并且采取優先選擇最可能密碼的策略。
結果表明,攻擊者分別進行10次嘗試,登入某個隨機選擇的用戶賬戶的成功率在啟用了錯誤容忍機制后從0.79%增加到了0.96%。而在進一步限制容忍策略后(比如若變換后的密碼出現的概率較高,則不進行此種變換),成功率更是只從0.79%增加到0.81%,相較于可用性方面帶來的提升,這可以忽略不計。
因此,在實際中,實現一個不影響安全性的容忍typo的密碼檢查方案是可行的。目前,作者仍在繼續研究其他可能的typo correction方案,以安全地更正其他類型的typo。所以如果有一天我們真的遇到像小明那樣的情況,不必擔心,只管盡情享受這個變動帶來的便捷吧。