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