基于二次身份認(rèn)證的雙鏈路登錄保護(hù)方案
本文基于如下理解:
靜態(tài)賬戶是指一組由用戶名和固態(tài)密碼組成的賬戶。固態(tài)密碼是指與用戶名協(xié)同進(jìn)行身份認(rèn)證的密碼,在一段時(shí)間內(nèi)保持不變,有較長(zhǎng)的生命周期,只有在人工干預(yù)的情況下才可能發(fā)生變化,業(yè)界有時(shí)也稱(chēng)之為靜態(tài)密碼。
二次身份認(rèn)證是指用戶的靜態(tài)賬戶通過(guò)認(rèn)證后,再對(duì)用戶的合法性進(jìn)行一次有效性檢查。本文將靜態(tài)賬戶認(rèn)證稱(chēng)為第一次認(rèn)證,后者稱(chēng)之為二次認(rèn)證。
第一次身份認(rèn)證與第二次身份認(rèn)證通過(guò)不同的網(wǎng)絡(luò)進(jìn)行,稱(chēng)為雙鏈路。比如登錄一個(gè)社區(qū),使用靜態(tài)賬戶在PC端通過(guò)其門(mén)戶進(jìn)行第一次認(rèn)證,再通過(guò)移動(dòng)終端進(jìn)行第二次身份認(rèn)證,這就是一個(gè)雙鏈路的認(rèn)證過(guò)程。但是如果將移動(dòng)終端生成的密碼在同一PC端通過(guò)社區(qū)的門(mén)戶進(jìn)行二次認(rèn)證,則是單鏈路的認(rèn)證過(guò)程。
本文將口令、密碼統(tǒng)稱(chēng)為密碼。OTP(One-Time Password)是一種具有時(shí)效性與使用一次性的密碼,通常情況下,由于其生命周期小于一分鐘,與固態(tài)密碼相對(duì)應(yīng),稱(chēng)之為動(dòng)態(tài)密碼,有時(shí)也稱(chēng)為動(dòng)態(tài)口令,本文統(tǒng)一為動(dòng)態(tài)密碼或使用英文簡(jiǎn)稱(chēng)OTP。
手機(jī)密令(”Me”令)利用先進(jìn)的雙鏈路登陸保護(hù)方案,對(duì)用戶登陸進(jìn)行二次身份驗(yàn)證,有效確保用戶身份的唯一性和合法性。
背景與現(xiàn)狀
20世紀(jì)末期,隨著信息技術(shù)的飛速發(fā)展,大量以手工方式處理的傳統(tǒng)業(yè)務(wù)被信息系統(tǒng)代替,工作方式的轉(zhuǎn)變也影響到以部門(mén)或崗位來(lái)確定工作內(nèi)容和職責(zé)的物理世界。信息系統(tǒng)為了一一映射現(xiàn)實(shí)世界的責(zé)任和分工,便建立了一套以用戶、角色、權(quán)限為一體的完整的權(quán)限體系,靜態(tài)賬戶由此應(yīng)運(yùn)而生。
在一段時(shí)間內(nèi),靜態(tài)賬戶解決了信息系統(tǒng)孤立環(huán)境下的權(quán)限分配問(wèn)題,有效的保護(hù)了虛擬環(huán)境下的業(yè)務(wù)操作和數(shù)據(jù)。但是,隨著互聯(lián)網(wǎng)的興起,以共享、分享為理念的互聯(lián)互通精神拆除了信息系統(tǒng)彼此之間的高墻籬笆,特別是一些社區(qū)(SNS)、電子商務(wù)、網(wǎng)絡(luò)游戲等互聯(lián)網(wǎng)應(yīng)用。與此同時(shí),開(kāi)放環(huán)境下的信息共享與信息保護(hù)的沖突愈演愈烈,形形色色的黑客使用各種手段竊取或劫持用戶的身份認(rèn)證信息,以獲得系統(tǒng)相關(guān)功能及數(shù)據(jù)的訪問(wèn)權(quán)限,進(jìn)行非法操作。
由于靜態(tài)賬戶的固態(tài)密碼通常使用諸如MD5、SHA-1等雜湊函數(shù)多次或組合生成,完全可以通過(guò)字典攻擊的密碼猜測(cè)等手段獲得固態(tài)密碼,如網(wǎng)站http://www.cmd5.com/可以將多種雜湊函數(shù)生成的密碼進(jìn)行解密,獲得明文。因此,以靜態(tài)賬戶為手段的保護(hù)業(yè)務(wù)操作和數(shù)據(jù)的模式受到了極大的挑戰(zhàn)。
最近,始于CSDN的“泄密門(mén)”事件已經(jīng)波及到數(shù)家從事互聯(lián)網(wǎng)應(yīng)用的企業(yè),包括人人網(wǎng)、天涯、多玩、7k7k等公司的靜態(tài)賬戶被泄露。因此,基于靜態(tài)賬戶的方式已不能滿足互聯(lián)網(wǎng)安全形式日益惡化的要求。
身份認(rèn)證安全問(wèn)題分析
為了確保信息系統(tǒng)中的數(shù)據(jù)不被泄露、篡改和非授權(quán)訪問(wèn),身份認(rèn)證的安全問(wèn)題至關(guān)重要。認(rèn)證竊取和劫持是最常見(jiàn)的一種安全威脅。
認(rèn)證竊取與劫持是指攻擊者通過(guò)各種手段竊取或劫持用戶的身份認(rèn)證信息,并因此獲得系統(tǒng)的相應(yīng)功能及數(shù)據(jù)的訪問(wèn)權(quán)限。典型的認(rèn)證竊取與劫持包括如下幾種。
(1)密碼猜測(cè)
字典攻擊是最常用的密碼猜測(cè)方法。字典攻擊的一種策略是在已知用戶名的前提下,基于字典內(nèi)容按一定策略猜測(cè)密碼內(nèi)容,直到猜測(cè)成功。對(duì)于擁有大量用戶的應(yīng)用系統(tǒng),另一種反向字典攻擊往往也會(huì)奏效,即假定系統(tǒng)中會(huì)有人使用某一簡(jiǎn)單密碼,如“123456”,然后按字典序猜測(cè)用戶名。這類(lèi)攻擊通常發(fā)生在需要認(rèn)證的Web前端。
(2)會(huì)話劫持
會(huì)話劫持是指用戶在系統(tǒng)成功認(rèn)證后所獲得的會(huì)話標(biāo)識(shí)(SessionID)被攻擊者竊取或劫持利用,從而得以扮演該用戶身份與系統(tǒng)交互。應(yīng)用層會(huì)話劫持實(shí)現(xiàn)的主要原因有:
Session猜測(cè)。若Web的Session生成算法被攻擊者獲知,則有可能通過(guò)Session猜測(cè)得到某登陸用戶的SessionID,從而劫持該會(huì)話。
Session不充分超時(shí)。若用戶沒(méi)有顯式點(diǎn)擊“退出登陸”而直接關(guān)閉瀏覽器,則用戶SessionID通常會(huì)被保留一段時(shí)間后超時(shí)刪除。若超時(shí)時(shí)間設(shè)置過(guò)長(zhǎng),則可能會(huì)在這段時(shí)間內(nèi)被攻擊者利用。
會(huì)話Cookies信息竊取。很多情況下系統(tǒng)使用Cookie在瀏覽器端記錄用戶認(rèn)證信息,因此在某些攻擊手段的支持下(如跨站腳本)Cookie會(huì)被攻擊者方便的竊取從而仿冒并劫持用戶認(rèn)證會(huì)話信息。
(3)基于SQL注入的認(rèn)證攻擊
考慮應(yīng)用系統(tǒng)基于用戶填入的用戶名及密碼執(zhí)行如下SQL查詢認(rèn)證用戶身份信息:
如果用戶輸入用戶名為 ' OR ''='并且密碼為 ' OR ''=',則將最終產(chǎn)生如下的SQL查詢語(yǔ)句,旁路掉認(rèn)證邏輯從而使認(rèn)證失效。
(4)基于密碼恢復(fù)的密碼獲取
很多互聯(lián)網(wǎng)應(yīng)用為用戶提供忘記密碼后的密碼恢復(fù)功能,比如通過(guò)輸入用戶郵件、電話號(hào)碼來(lái)恢復(fù)密碼,或通過(guò)Email恢復(fù)密碼。若密碼恢復(fù)方法或過(guò)程過(guò)于簡(jiǎn)單,則很容易被攻擊者利用而成為重置密碼的途徑。該種方法多發(fā)生在Web前端。
基于二次身份認(rèn)證的雙鏈路登錄保護(hù)方案
基于靜態(tài)賬戶的安全問(wèn)題一般發(fā)生在單鏈路上,這里采用雙鏈路的方式通過(guò)二次身份驗(yàn)證實(shí)現(xiàn)登錄保護(hù),以保障用戶身份的合法性。當(dāng)然,在單鏈路上也有一些行之有效的方法來(lái)解決很多登錄認(rèn)證的問(wèn)題。比如,淘寶在靜態(tài)賬戶一次認(rèn)證的基礎(chǔ)上使用時(shí)代億寶(北京)科技有限公司的手機(jī)密令(”Me”令)產(chǎn)品進(jìn)行二次認(rèn)證,就是一種很好的解決方案。
要特別說(shuō)明的是,僅僅依靠改進(jìn)靜態(tài)賬戶的固態(tài)密碼生成算法進(jìn)行一次認(rèn)證實(shí)現(xiàn)登錄保護(hù)往往是不夠的,目前普遍的做法是安全等級(jí)不高的應(yīng)用在靜態(tài)賬戶的基礎(chǔ)上輔助以圖形驗(yàn)證碼的方式防止系統(tǒng)被DOS攻擊,但這實(shí)質(zhì)上不是一種登錄保護(hù)的措施。
(1)基本原理
基于二次身份認(rèn)證的雙鏈路登錄保護(hù)方案的基本原理是用戶通過(guò)PC端使用靜態(tài)賬戶進(jìn)行第一次身份認(rèn)證;認(rèn)證通過(guò)后,業(yè)務(wù)系統(tǒng)向用戶手持設(shè)備(包括智能手機(jī)、iPad等移動(dòng)終端)發(fā)起二次認(rèn)證請(qǐng)求,用戶使用安裝在移動(dòng)終端的上系統(tǒng)向業(yè)務(wù)系統(tǒng)啟動(dòng)二次認(rèn)證,認(rèn)證通過(guò)后進(jìn)入業(yè)務(wù)系統(tǒng)進(jìn)行相關(guān)操作。認(rèn)證示意圖如左圖所示。
雙鏈路二次身份認(rèn)證的登錄保護(hù)完整序列圖如下所示。第一次認(rèn)證使用業(yè)務(wù)系統(tǒng)自有的用戶權(quán)限管理機(jī)制,第二次認(rèn)證使用獨(dú)立的認(rèn)證系統(tǒng)(這樣做的原因后續(xù)會(huì)有說(shuō)明)。整個(gè)認(rèn)證過(guò)程大致分為11步:
Step1:用戶通過(guò)業(yè)務(wù)系統(tǒng)的客戶端(通常使用用戶PC機(jī)上的瀏覽器)發(fā)起使用靜態(tài)賬號(hào)第一次登錄請(qǐng)求;
Step2:業(yè)務(wù)系統(tǒng)客戶端將認(rèn)證請(qǐng)求發(fā)給業(yè)務(wù)系統(tǒng);
Step3:業(yè)務(wù)系統(tǒng)基于靜態(tài)賬戶進(jìn)行初認(rèn)證;
Step4:第一次認(rèn)證通過(guò)后,業(yè)務(wù)系統(tǒng)將以下行短信或GPRS方式向用戶的移動(dòng)客戶端推送二次認(rèn)證請(qǐng)求;
Step5:用戶通過(guò)移動(dòng)終端發(fā)起二次請(qǐng)求;
Step6:移動(dòng)終端將二次請(qǐng)求發(fā)給業(yè)務(wù)系統(tǒng);
Step7:業(yè)務(wù)系統(tǒng)檢測(cè)本次二次請(qǐng)求是否由第一次請(qǐng)求產(chǎn)生的。即檢查二次請(qǐng)求的合法性和有效性;
Step8:如果本次二次認(rèn)證請(qǐng)求有效,業(yè)務(wù)系統(tǒng)則請(qǐng)求認(rèn)證系統(tǒng)進(jìn)行第二次驗(yàn)證;
Step9:認(rèn)證系統(tǒng)認(rèn)證;
Step10:認(rèn)證系統(tǒng)將認(rèn)證結(jié)果返回系統(tǒng);
Step11:如果業(yè)務(wù)系統(tǒng)檢查二次認(rèn)證通過(guò),自動(dòng)進(jìn)入登錄后的界面,用戶就可以進(jìn)行相關(guān)操作了。
(2)認(rèn)證密碼生成與分發(fā)原則
在二次身份認(rèn)證的雙鏈路保護(hù)方案中有兩套密碼,一套是靜態(tài)賬戶的固態(tài)密碼,用于進(jìn)行第一次身份認(rèn)證;另一套是基于動(dòng)態(tài)密碼技術(shù)的動(dòng)態(tài)密碼,即OTP,用于進(jìn)行第二次身份認(rèn)證。
靜態(tài)賬戶由業(yè)務(wù)系統(tǒng)自身的權(quán)限體系產(chǎn)生,其固態(tài)密碼一般由2次MD5加密或1次MD5結(jié)合SHA-1算法的方式生成。因此,第一次登錄認(rèn)證由業(yè)務(wù)系統(tǒng)完成。
二次認(rèn)證使用的動(dòng)態(tài)密碼由業(yè)界統(tǒng)一的算法AES或國(guó)家密碼局要求的SM3算法產(chǎn)生。動(dòng)態(tài)密碼擁有雙因素特征,一般基于時(shí)間因子,長(zhǎng)度為6位或8位(也可以客戶定制),有效期小于60秒,只能使用一次。由認(rèn)證系統(tǒng)分發(fā),故第二次認(rèn)證由認(rèn)證系統(tǒng)完成。
(3)體系結(jié)構(gòu)
基于二次身份認(rèn)證的雙鏈路登錄保護(hù)方案的體系結(jié)構(gòu)包括認(rèn)證系統(tǒng)、被保護(hù)的業(yè)務(wù)系統(tǒng)、業(yè)務(wù)系統(tǒng)的客戶端、移動(dòng)客戶端。各模塊的功能和作用概要說(shuō)明如下:
認(rèn)證系統(tǒng):分發(fā)生成動(dòng)態(tài)密碼(OTP)的種子(seed),進(jìn)行賬號(hào)綁定和解綁,實(shí)現(xiàn)OTP認(rèn)證的功能。
業(yè)務(wù)系統(tǒng):分發(fā)靜態(tài)賬號(hào),實(shí)現(xiàn)第一次身份認(rèn)證,請(qǐng)求第二次身份認(rèn)證
移動(dòng)客戶端:申請(qǐng)賬號(hào)初始化綁定,根據(jù)認(rèn)證系統(tǒng)分發(fā)的種子并基于時(shí)間因子生成動(dòng)態(tài)密碼,發(fā)起二次認(rèn)證。
業(yè)務(wù)客戶端:發(fā)起第一次認(rèn)證請(qǐng)求,并相應(yīng)第二次認(rèn)證結(jié)果
(4)解決問(wèn)題
從前面所述的工作原理可以看出,基于二次身份認(rèn)證的雙鏈路登錄保護(hù)方案完全可以解決靜態(tài)賬戶泄露后的應(yīng)用系統(tǒng)安全問(wèn)題,這是因?yàn)樵摲桨覆捎脙商酌艽a,通過(guò)兩條不同的通信鏈路進(jìn)行認(rèn)證。
此外,該方案在一定程度上也可以解決釣魚(yú)和欺詐等安全隱患。
實(shí)踐
時(shí)代億寶(北京)科技有限公司www.timesafer.com是一家專(zhuān)業(yè)的安全身份認(rèn)證產(chǎn)品供應(yīng)商,公司生產(chǎn)的手機(jī)密令(”Me”令)產(chǎn)品(商標(biāo)為Me Order)正是基于上述思想研發(fā)并擁有相關(guān)專(zhuān)利。該產(chǎn)品能夠運(yùn)行在Android、iOS、WP7及能識(shí)別Kjava程序的各種主流手機(jī)操作系統(tǒng)上,目前為淘寶的多個(gè)應(yīng)用場(chǎng)景身份認(rèn)證提供深度的安全保護(hù)。