陳舒荻,朱友文
(南京航空航天大學,江蘇 南京 211100)
基于口令的身份認證是當今使用最廣泛的身份認證方式[1]。用戶在系統(tǒng)的登錄界面上直接輸入預先設置好的文本或圖形口令進行認證[1]。然而,輸入口令的過程很容易受到肩窺攻擊。肩窺攻擊是指越過別人的肩膀窺探來獲取信息的攻擊手段[2]。用戶在公共場合輸入口令時,攻擊者可以在靠近用戶的地方偷看或使用設備偷拍用戶輸入口令的操作進行肩窺攻擊。
PIN碼即個人識別碼,由4或6個十進制數(shù)字組成,是一種常用的口令。用戶解鎖手機、ATM機取款、POS機刷卡消費以及一些電子門禁都需要輸入PIN碼進行身份認證。由于PIN碼長度很短以及輸入方式簡單,再加上PIN碼的輸入經(jīng)常在公共場合進行,標準的PIN碼輸入方法非常容易遭受肩窺攻擊,完整的PIN碼甚至通過一次認證會話就可能被泄露[1]。若攻擊者在獲取口令后進一步盜取用戶的手機或銀行卡,將會給用戶造成巨大的信息和財產(chǎn)損失。許多用戶可能在多個賬戶使用相同或相似的口令,因而這一安全漏洞造成的問題可能遠比想象中的嚴重[2]。用戶在人群擁擠或有視頻監(jiān)控的地方進行認證是極不安全的,而這種情況在日常生活中又時常發(fā)生,并且大多數(shù)人都疏于防范,使肩窺攻擊成為日常生活中最容易發(fā)生的信息安全問題。因此,非常需要設計抗肩窺攻擊的安全口令輸入方法,保護人們的身份認證安全。
文獻[3-4]側(cè)重于研究文本口令的輸入,文獻[5-7]側(cè)重于圖形口令,文獻[8-10]側(cè)重于研究PIN碼輸入??辜绺Q口令輸入方案的中心思想是納入一種間接的秘密轉(zhuǎn)化方法,將可見的口令輸入過程與秘密本身分開。
一些方案僅將安全性依托于攻擊者認知能力的有限性,這類方案面對攝像攻擊或交叉攻擊,安全性將大打折扣。Matsumoto和Imai[11]提出了一種基于以下思想的人機認證方案:終端和用戶秘密共享一個字符串w和一個有序的符號集v,終端呈現(xiàn)隨機字符串x=x1,… ,xn作為對用戶的挑戰(zhàn)。如果存在某個j使xj=vj,則用戶將xj替換為wj,否則從字母表中隨機選擇一個符號,由終端驗證替換的正確性。與常規(guī)的輸入程序相比,記憶口令和符號集以及執(zhí)行適當替換所需的腦力似乎相當大。Roth[2]提出了被稱為認知陷門游戲的口令輸入方法。系統(tǒng)向用戶顯示十進制數(shù)字鍵盤,鍵盤中一半的按鍵為黑色,另一半為白色。用戶單擊單獨的黑白按鍵指示PIN碼的顏色。系統(tǒng)通過用戶4輪黑白顏色的選擇確定一位數(shù)字,因此4位PIN碼用戶需要 16輪選擇完成。該方案不能抵抗攝像攻擊。De-Luca[8]提出的ColorPIN不能抵抗交叉攻擊。Lee[10]提出的LIN4同樣無法抵抗交叉攻擊。
有一些方案使用輔助信道,文獻[12]的Vibrapass用于輸入文本口令,系統(tǒng)隨機產(chǎn)生振動序列,用戶每次輸入字符前可能會收到一個信號,當收到振動信號時輸入錯誤字符,未收到時輸入正確字符。由于每次認證都會輸入口令所有的字符,Vibrapass不能抵抗交叉攻擊。文獻[13]的PhoneLock用于輸入PIN碼,系統(tǒng)鍵盤不顯示數(shù)字,通過聲音傳遞按鍵數(shù)字,這個方案需要耳機才能保證信道安全,給未攜帶耳機的用戶帶來不便。文獻[14]的TimeLock使用不規(guī)律的振動來計數(shù),以按壓按鍵開始振動計數(shù)、松開停止計數(shù)的方式輸入口令,為了抵抗時序攻擊,方案將口令可輸入的數(shù)字范圍縮小為 1~5,這使口令空間大幅縮小,降低了安全性。
本文提出了一種抗肩窺攻擊口令輸入方法,在設計認知陷門游戲的基礎上利用設備自身的振動功能作為向用戶傳遞信息的輔助信道,達到了有效抵抗肩窺攻擊的目的。
抗肩窺口令輸入方法不能讓用戶直接輸入口令,而是輸入其他與口令有關的信息,通過這些信息能唯一確定用戶的口令。本文沿用文獻[2]中認知陷門游戲讓用戶二選一的方式。文獻[2]中用戶進行一輪4次選擇能確定一位數(shù)字,這樣4位PIN碼需要4輪共16次選擇,本文考慮若能一輪確定2位數(shù)字,最少需要7次選擇(lb100=7),這樣4位PIN碼所需選擇次數(shù)縮減為2輪共14次選擇。由此本文提出了FR(five rows)方法和FRV(five rows vibrate)方法,F(xiàn)R方法實現(xiàn)了14次選擇輸入4位PIN碼,F(xiàn)RV方法在FR方法的基礎上使用振動信道傳遞信息,具有更高的安全性。
本文提出了FR方法,通過用戶的6次回答從50個候選值中篩選出用戶想要輸入的候選值。用戶進行回答前需要觀察屏幕上出現(xiàn)的候選值,若正確的候選值在其中,就選擇 yes;若不在,就選擇no。本文令A為0~49的候選值,首先將A平分成兩個5×5的候選集,5×5的候選集中十位數(shù)為0、1、2、3、4的數(shù)字各5個。系統(tǒng)隨機顯示其中一個候選集。用戶回答后得到其中正確的一個,系統(tǒng)由此生成新的5×5的候選集,繼續(xù)讓用戶選擇,最后系統(tǒng)確定出候選值。
FR算法流程如下,其中集合A為最初要篩選的集合,φγ表示從集合A中選出5×5個候選值元素,Lγ表示從集合中選出元素與集合L組成5×5個候選值元素。g表示將集合平分成兩個集合,令十位數(shù)相同的數(shù)字個數(shù)為q,集合L隨機分配個對應數(shù)字,相應的集合R包含另外的個數(shù)字。
算法1FR
輸入用戶的選擇choices
輸出篩選結(jié)果L
1) yes=0
2) no=1
3)L←γφ(A)
4)R←A-L
5)P=φ
6)S=φ
7)Fori=1,… ,6
8)P←γL(S)
9)b隨機為0或1
10) Ifb=0
11) 系統(tǒng)顯示Q=L∪P
12)Else
13) 系統(tǒng)顯示Q=S∪R-L∪P
14)End if
15) 用戶輸入當前選擇choice∈(yes,no)
16)Ifchoice⊕b=yes
17)S←S∪R
18) (L,R)←g(L)
19)Else
20)S←S∪L
21) (L,R)←g(R)
22)End if
23)End for
24)ReturnL
一輪要輸入兩位口令,則有 100個候選值(0~99)。將 0~99 分為兩個集合A1、A2(0~49 和50~99)分別執(zhí)行FR算法。系統(tǒng)顯示如圖1所示,屏幕上顯示 5×5的方格,每個方格第一排顯示A1對應的候選集,第二排顯示A2對應的候選集,根據(jù)用戶的回答同時對A1、A2進行篩選。用戶回答的前6個問題為所選數(shù)字是否在屏幕出現(xiàn),如圖1中用戶要輸入25,用戶觀察十位數(shù)為2的那一行的5個數(shù)字是否包含25后回答yes。當用戶選擇 6次后,得到兩個候選值L1、第7個問題為所選數(shù)字是否小于50,如圖2所示,確定唯一的候選值。圖2中的DEL按鍵用于刪除輸入的兩位口令,進度條提示用戶問題回答進度,進度條下方的后退按鍵可以讓用戶重新回答之前的問題。
圖1 用戶前6次回答根據(jù)屏幕上對應行的數(shù)字做出選擇
圖2 用戶第7次作答界面
由于 FR方法中系統(tǒng)提供的挑戰(zhàn)只通過視覺信道展示給用戶,攻擊者也可以只通過視覺獲取的方式得到用戶與系統(tǒng)完整的交互過程。攻擊者記錄下每次屏幕顯示的候選值,結(jié)合用戶每次的選擇進行排除,能和系統(tǒng)一樣得到用戶要輸入的口令,因此 FR方法不能抵抗攻擊強度較強的攝像攻擊。攝像攻擊能獲得視覺信道的所有信息,若系統(tǒng)將所有的交互信息都通過沒有遮擋的屏幕顯示,任何口令輸入方法都無法抵抗攝像攻擊,因此需要構(gòu)建輔助信道向用戶傳遞一些隱蔽信息來改變用戶的輸入。攻擊者得不到隱蔽信息就不能得到用戶輸入與屏幕展示信息的關聯(lián),也就無法用觀察到的信息轉(zhuǎn)換成用戶的口令。
本文設計了FRV方法,使用設備的振動信道向用戶傳遞信息,振動信道擁有其固有的安全性,需要用戶用觸覺感知。系統(tǒng)每次顯示候選值時會隨機決定是否振動,若設備振動,則用戶此次選擇相反的選項(如正確的候選值出現(xiàn)在屏幕,而用戶選擇未出現(xiàn))。方法也可以使用其他方式傳遞隱蔽信息,如使用手掌遮擋屏幕,屏幕才會顯示是否輸入相反回答的信息等。FRV算法流程如下。其中,vib表示系統(tǒng)是否振動。
算法2FRV
輸入用戶的選擇choices
輸出篩選結(jié)果L
1) yes=0
2) no=1
3)L←γφ(A)
4)R←A-L
5)P=φ
6)S=φ
7)Fori=1,… ,6
8)P←γL(S)
9)b隨機為0或1
10)vib隨機為0或1
11)Ifb=0 andvib=0
12) 系統(tǒng)顯示Q=L∪P并發(fā)出仿振動噪聲50 ms
13)Else ifb=1 andvib=0
14) 系統(tǒng)顯示Q=S∪R-L∪P并發(fā)出仿振動噪聲50 ms
15)Else ifb=0 andvib=1
16) 系統(tǒng)顯示Q=L∪P同時振動30 ms并發(fā)出仿振動噪聲50 ms
17)Else
18) 系統(tǒng)顯示Q=S∪R-L∪P同時振動30 ms并發(fā)出仿振動噪聲50 ms
19)End if
20) 輸入用戶當前選擇choice∈(yes,no)
21)Ifchoice⊕b⊕vib=yes
22)S←S∪R
23) (L,R)←g(L)
24)Else
25)S←S∪L
26) (L,R)←g(R)
27)End if
28)End for
29)ReturnL
為了防止攻擊者獲取到設備振動時從聲音信道泄露的信息,無論展示的挑戰(zhàn)是否包含振動,系統(tǒng)都會發(fā)出仿振動噪聲以隱藏振動的聲音或擾亂攻擊者對聲音的判斷。通過這樣的調(diào)整,攻擊者無法分辨系統(tǒng)是否振動,從而無法得知用戶選擇的答案是否正確。針對用戶忘記或不確定當前系統(tǒng)是否振動,界面設置了重放鍵,如圖3所示。
第2節(jié)已提及FR方法不能抵抗攝像攻擊,因此本節(jié)只對FRV方法的安全性進行分析,考慮攻擊者使用普通的猜測攻擊和肩窺攻擊。
4位PIN碼的口令空間大小為10 000,F(xiàn)RV方法并未縮小口令空間,因此猜測攻擊理論上攻擊成功率為
由于FRV方法使用振動信道傳遞信息,攻擊者不能完整地獲知系統(tǒng)發(fā)起的挑戰(zhàn),不能確定用戶的應答是否正確,所以用戶的應答對攻擊者而言沒有價值。對于肉眼肩窺攻擊,由于人類短時記憶量很有限,普通人短時只能記憶5~9個符號[15],一般的攻擊者連一輪的候選集都不能完全記下,更無法從多輪的候選集中挖掘有用信息,攻擊者不能實施肉眼肩窺攻擊,只能采用攝像攻擊才能獲得會話信息。
攻擊者通過攝像攻擊拍攝會話后,由于不能判斷系統(tǒng)的振動情況,無法從用戶的應答獲取信息,只能考慮從屏幕獲取信息。攻擊者有兩種方式可以從屏幕中顯示的候選值獲取有用信息。
第一種方式是攻擊者通過觀察每次顯示的候選集,采用取交集的方式進一步獲得篩選的候選值。因為FRV方法每次顯示的0~49的候選集Q1和50~99的候選集Q2都是由未篩選的候選值(簡稱為篩選值)和被排除的候選值(簡稱為排除值)組成。以Q1為例,因為每次都要平分上一次得到的篩選值并隨機顯示其中一個篩選值集合,所以篩選值出現(xiàn)的比率為與篩選值組成5×5候選集的排除值每行顯示的個數(shù)為5減去該行篩選值的個數(shù)。最初十位數(shù)相同的篩選值10個,第一次篩選后,十位數(shù)相同的篩選值為5個,對應的排除值為5個。第二次顯示的候選集中,上一次的篩選值出現(xiàn)2或3個,排除值出現(xiàn)比率為或約為第三次顯示的候選集中,若上一次的篩選值為2個,則排除值為8個,排除值出現(xiàn)比率為若上一次的篩選值為3個,排除值出現(xiàn)比率為或,約為。之后,該行的篩選值可能為1或0個,排除值出現(xiàn)比率為或??梢缘玫矫看物@示的候選集中排除值出現(xiàn)比率約為,即候選集中候選值為排除值或篩選值的概率都為。因此攻擊者每次觀察到的候選集相當于沒有規(guī)律的數(shù)字,不包含有用的信息。
第二種方式是攻擊者假定系統(tǒng)的振動情況,模擬用戶真實應答從候選集中得到正確口令。因為候選集中的數(shù)值等概率出現(xiàn),攻擊者不能通過候選集縮小侯選值的范圍,所以無論每次的候選集數(shù)值是哪些,100個候選值都能通過相應的應答被輸入,且不同候選值被輸入的概率相同,因而攻擊者模擬所有的應答情況可以得到 100個候選值,模擬兩輪輸入能得到10 000個4位候選口令。用戶可能的應答數(shù)有27種,輸入 4位PIN碼應答數(shù)為27×27=16 384,4位PIN碼口令空間大小為10 000,攻擊者嘗試所有的應答序列也只能排除部分應答序列,而沒有縮小可能的口令空間,因此模擬用戶應答攻擊者也不能獲得口令。
通過上述分析,攻擊者通過攝像攻擊不能獲得有用信息來縮小口令可能的范圍,因此對于基于拍攝多次會話的交叉攻擊同樣不能縮小口令范圍。
FRV方法的安全性基于振動信號的保密性。攻擊者若不能知曉振動信號就無法從其余的交互過程中獲得任何有效信息,一旦攻擊者獲知振動信號,便確定了用戶的應答,也就獲得唯一的正確口令。振動信息除通過觸覺獲得以外,還可能通過聽覺獲得,因此FRV方法使用仿振動噪聲掩蓋振動信息的傳遞。30 ms的振動產(chǎn)生的聲音十分微小,使用平時消息或來電提示音量大小的仿振動噪聲就能很好地掩蓋,即使攻擊者在非常安靜的環(huán)境下使用麥克風錄制音頻也難以分辨,在公共場合下更是難以做到。
本節(jié)通過實驗比較了FR方法、FRV方法和標準的口令輸入方法(以下簡稱REG,regular)的可用性。本文在安卓手機紅米Note3(5.5寸,1920×1080分辨率,403每寸像素)上實現(xiàn)了FR方法、FRV方法以及REG方法。
本文進行了3個組內(nèi)實驗比較FR方法、FRV方法以及REG方法的可用性。實驗條件分別為使用FR、FRV和REG登錄。每次登錄用戶都有3次機會,若3次機會都失敗則判定為此次登錄失敗。實驗招募了10名在校生進行實驗,所有的參與者都有多年使用移動手機的經(jīng)驗,同時對標準的口令輸入機制REG非常熟悉。
筆者先對參與者進行指導,向參與者解釋 FR方法和FRV方法的使用,并向他們演示使用FR方法和FRV方法登錄的過程。之后筆者向參與者說明實驗流程并要求他們提交3個便于記憶的PIN碼,分別用于FR、FRV和REG的輸入。首先參與者進行口令輸入的練習階段。練習階段要求參與者分別使用FR、FRV、REG成功登錄3次,在此之前參與者將不斷地嘗試登錄,之后在研究人員的觀察下成功登錄一次。練習階段后,進行測試階段。測試階段要求參與者分別使用FR、FRV以及REG登錄成功一次,最多3次機會,登錄成功的輸入用時和使用機會數(shù)將被記錄用于之后的分析。
輸入用時是從界面顯示出候選集開始計時,到用戶輸入完畢停止計時。實驗只記錄了測試階段中登錄成功的會話所需輸入時間。圖4展示了實驗中3種方法的輸入用時。單因素重復測量方差分析結(jié)果表明不同輸入方法間存在顯著性差異(F=125.073,p<0.001)。根據(jù)這一結(jié)果,可以得出FR方法和FRV方法的輸入時間明顯比REG方法長的結(jié)論。這是由于FR方法和FRV方法中系統(tǒng)展示多輪的界面需要占去部分時間,而FRV方法中使用振動信道確保安全性的同時,一定程度上增加了用戶的判斷時間。
圖4 一次成功登錄所需的輸入時間
測試階段中實驗記錄了用戶是否能在3次機會內(nèi)登錄成功和登錄成功使用的機會數(shù)。對于REG方法,所有的參與者都能一次登錄成功;對于 FR方法,所有的參與者也都一次登錄成功;對于FRV方法,兩名參與者進行第2次嘗試時登錄成功,其余參與者一次登錄成功。對于3種方法,沒有哪個參與者登錄失敗。不同輸入方法并無顯著性差異(F=2.250, p=0.168),F(xiàn)R方法和FRV方法相比REG方法錯誤率不會升高。
針對生活中極易發(fā)生的肩窺攻擊,本文提出了一種抗肩窺攻擊的移動端安全口令輸入方法FRV,改變了以往的口令輸入界面,同時利用設備的振動功能傳遞信息,用戶以回答的問題的方式間接輸入口令。本文對FRV方法理論上進行安全性分析,結(jié)果表明新方法能有效抵抗攻擊強度較高的攝像攻擊以及交叉攻擊。進一步招募參與者進行組內(nèi)實驗評估了方法的可用性,結(jié)果表明相對標準的口令輸入方法,新方法輸入時間較長,錯誤率并無差異,在保證安全性的基礎上具有可用性。