如今我們不管辦理什么業(yè)務(wù),又或是在任何網(wǎng)站和APP注冊賬號,首先想到的就是通過手機號碼一鍵登錄。這意味著,你的手機號就等同于你的微信、支付寶、銀行和各種現(xiàn)金貸客戶端的賬號(圖2)。如果你安全意識不高,這些APP注冊時又都用了相同的密碼……潛在的安全風(fēng)險可想而知,基本是一損皆損。
當(dāng)你在登錄各種APP時發(fā)現(xiàn)忘記了密碼怎么辦?沒關(guān)系,少數(shù)APP可以通過短信驗證碼一鍵登錄,而所有的APP還能使用短信驗證碼來重置密碼(圖3)??梢哉f,短信驗證碼在今天已然成為了一種“萬能”的存在,有了它,登錄、認(rèn)證、重置和支付等流程就將一路綠燈。
本文引言中涉及的案例,就是針對手機號注冊和短信驗證碼“量身定制”的一種詐騙手段:黑客通過“GSM劫持+短信嗅探技術(shù)”,可實時獲取用戶手機短信內(nèi)容,進(jìn)而利用各大知名銀行、網(wǎng)站、移動支付APP存在的技術(shù)漏洞和缺陷,進(jìn)行信息竊取、資金盜刷和網(wǎng)絡(luò)詐騙等犯罪行為(圖4)。
問題來了,這一整套流程要分很多步驟,難道手機安全方面的漏洞竟然如此嚴(yán)重嗎?
實際上,自從智能手機和移動支付功能關(guān)聯(lián)捆綁后,從銀行到支付工具,相關(guān)企業(yè)都在研究如何提升安全性,避免可能的盜刷風(fēng)險。而大家最終“商量”的結(jié)果,就是基于短信的二次驗證機制。
提起二次驗證,相信不少用戶都會想起“U盾”(圖5)。U盾是銀行針對網(wǎng)絡(luò)支付推出的一種USBkey,當(dāng)我們需要辦理轉(zhuǎn)賬、匯款、繳費等支付業(yè)務(wù)時,必須按系統(tǒng)提示將U盾插入電腦的USB接口,輸入U盾密碼并進(jìn)行驗證成功后才可完成支付過程。
問題又來了,既然短信和U盾起到的都是二次驗證,那它們的安全系數(shù)不是應(yīng)該等同的嗎?很遺憾,U盾的安全系數(shù)遠(yuǎn)非短信驗證碼可比。
簡單來說,當(dāng)你在銀行開通網(wǎng)上銀行時,銀行會針對你的個人信息生成一組個人數(shù)字證書,而這個證書會保存在銀行服務(wù)器,以及讓你拿回家的個人U盾內(nèi)(U盾內(nèi)的數(shù)字證書處于不可讀狀態(tài))。
當(dāng)我們嘗試網(wǎng)上交易時,銀行會向你發(fā)送由時間、地址和交易內(nèi)容等信息組成字符串加密后生成的秘鑰A。交易確認(rèn)前需要將U盾和PC相連,秘鑰A會通過網(wǎng)絡(luò)和數(shù)據(jù)線傳輸?shù)侥愕腢盾中,而U盾則會根據(jù)你的個人數(shù)字證書對秘鑰A進(jìn)行不可逆的運算并得到秘鑰B,再將秘鑰B返還給銀行。同時,銀行端也會根據(jù)秘鑰A和你的數(shù)字證書進(jìn)行不可逆的運算,只有結(jié)果與秘鑰B一致才確認(rèn)為合法交易(圖6),否則交易便會失敗。
換句話說,通過U盾進(jìn)行的二次驗證,從驗證信息的獲取和確認(rèn)信息的返回都是加密的,中間流程沒有給黑客留下用于攻擊的漏洞。
短信驗證碼可就沒有這么高的技術(shù)含量了。我們都知道,手機網(wǎng)絡(luò)是從1G(模擬通訊)→2G(GSM)→3G→4G發(fā)展而來,但受制于各種限制,無論是3G還是4G時代,手機語音和短信依舊保持著以純數(shù)字信號的2G方式進(jìn)行傳輸,而GSM制式下的手機短信卻是單向鑒權(quán)并且是以明文方式傳輸?shù)模▓D7)。
看到?jīng)]有,這里面就存在兩個明顯的漏洞。其一是“單向鑒權(quán)”,其二是“明文方式傳輸”。第一個漏洞,意味著當(dāng)手機在GSM制式下收到一條短信時,基站只會驗證手機是不是真的,而手機卻不會去驗證發(fā)來短信的基站是否為真,這個漏洞就造成了偽基站的泛濫。
第二個漏洞,意味著短信驗證碼的6個數(shù)字都是明文傳輸,黑客無論是通過中途截取,還是借助手機漏洞獲取了短信內(nèi)容,都可明明白白看到這6個數(shù)字。