龔茜茹 趙建超
(河南工業(yè)職業(yè)技術(shù)學院,河南 南陽 473009)
賬戶信息是互聯(lián)網(wǎng)的基礎(chǔ)應(yīng)用之一,在各個場合中,都離不開賬號和口令。但是,由于安全防護意識的薄弱,在賬戶登錄的各個階段,都可能丟失相應(yīng)的用戶信息。在銀行、淘寶等電子交易企業(yè)的規(guī)定中,均把使用口令進行的交易認定為戶主自己的交易。因此,賬戶安全不容忽視。
在各個環(huán)節(jié),均能實現(xiàn)賬戶信息捕獲。在客戶端系統(tǒng)的捕獲方法有:鍵盤記錄和系統(tǒng)消息,在傳輸過程中就是傳輸捕獲。
鍵盤記錄應(yīng)該是目前最流行的盜取口令的方法了[1],攻擊者在系統(tǒng)中使用全局鍵盤鉤子,記錄用戶的按鍵操作,并根據(jù)用戶窗口的標題來確定是不是自己需要盜取的東西。這種方法是最常用的方法。
用戶在瀏覽器中敲完了口令之后,攻擊者的程序給瀏覽器發(fā)送消息,要求取得口令輸入框的值,隨后保存并記錄下來。
攻擊者在網(wǎng)絡(luò)中劫持或者嗅探傳輸數(shù)據(jù)[2],直接獲取明文口令。
嗅探是常用的傳輸捕獲方法,在使用的時候,首先要把網(wǎng)卡設(shè)置為混雜模式。網(wǎng)絡(luò)適配器在混雜模式下,不在對數(shù)據(jù)包按照MAC地址進行過濾,因而能夠接收網(wǎng)絡(luò)中所有的數(shù)據(jù)包,對數(shù)據(jù)包進行一定程度的解析,不難得到需要的信息,包括口令信息[3]。
通過前面分析我們不難知道,獲取口令最簡單的方法是在客戶機植入木馬。木馬使用鍵盤記錄工具記錄用戶的按鍵操作,或者利用系統(tǒng)的消息,向瀏覽器發(fā)送信息,要求取得口令輸入框的值,隨后保存并記錄下來。為了防止這種情況出現(xiàn),大型電子交易網(wǎng)站普遍采用了安全控件登錄技術(shù),安全輸入控件采用虛擬鍵盤等手段,來保護輸入不被鍵盤記錄和偽造的系統(tǒng)消息獲取。為了保證口令的安全,淘寶的安全控件還對輸入的口令進行了加密,保證傳輸過程的安全。
安全控件的作用有兩個方面:保護輸入和加密數(shù)據(jù)。根據(jù)平臺的使用不同,可以使用ActiveX或者java applet技術(shù)來實現(xiàn)。目前常見的安全登陸普遍采用html制作頁面,然后調(diào)用ActiveX控件或者java applet來輸入口令。網(wǎng)站初始化時,首先在服務(wù)器端生成公鑰私鑰對。私鑰保存在服務(wù)器上,公鑰則發(fā)布到網(wǎng)上,可以讓客戶隨時獲取。用戶點擊提交按鈕的時候,客戶端利用獲取的公鑰,對口令進行加密,然后對加密后的口令在網(wǎng)絡(luò)中進行傳輸。
目前的主流安全登錄模型,其實是一個單向數(shù)字簽名系統(tǒng)。假定客戶機為X,網(wǎng)站為Y。在系統(tǒng)中,Y發(fā)布自己公鑰信息和并保存有X的用戶信息,X通過公私鑰對來驗證Y身份,Y通過輸入的口令信息來確定X身份。具體過程如下:
X->Y :EKUy([M])
Y還原:EKRa[EKUy[M]]
其中,M為口令信息,EKUy為Y的公開密鑰,EKRa為Y的私鑰。當發(fā)送口令M的時候,首先在控件內(nèi)部用Y的公開密鑰EKUy對口令進行加密,形成一個經(jīng)過簽名且保密的消息。Y在收到消息后,使用自己的公鑰獲取口令信息。
分析上述的單向數(shù)字簽名系統(tǒng),X沒有自己的數(shù)字簽名,也沒有交易時間戳。因此,必然存在著安全隱患,也成為系統(tǒng)的弱點。因此,只要獲取X相關(guān)的口令信息,哪怕是經(jīng)過加密后的信息,重放后都有可能進入系統(tǒng)。
可以使用普通的嗅探軟件,來獲取客戶機相關(guān)信息,如圖1。圖1是淘寶網(wǎng)登錄后的捕獲信息,從圖中可以直接看到用戶名,但是對口令進行了加密。通常,ActiveX安全輸入控件除了保護輸入不被鍵盤記錄和偽造的系統(tǒng)消息獲取外,為了保證口令的安全,還使用公鑰對口令進行加密。這樣,即使第三方獲取加密后的口令,也無法還原口令,從而保證登錄系統(tǒng)的安全的安全。
從前面分析得知,如果獲取X加密后的消息EKUy([M]),即可通過重放攻擊進入系統(tǒng)。所謂重放攻擊就是攻擊者發(fā)送一個目的主機已接收過的包EKUy([M]),第二次重新發(fā)送,這樣來欺騙系統(tǒng),實現(xiàn)登陸。
在前面的案例中,可以借助網(wǎng)站調(diào)試工具paros來捕獲數(shù)據(jù),然后進行重放攻擊登陸。首先在瀏覽器淘寶網(wǎng)站主頁,賬戶名字為明文的用戶名,口令可以使用工具paros來得到,即POST開頭的請求頭部分和以TPL_username開頭的主體部分。單步執(zhí)行后,即可登錄到網(wǎng)站。
這樣,我們就在實踐中驗證了目前主流網(wǎng)站安全登錄模型的不安全性。
對重放攻擊的防范,一般是在通信的雙方或者多方加入特殊的時間戳或者隨機數(shù)[4]。針對無線網(wǎng)絡(luò)中存在的問題,華為公司提出了一種解決方法[5]。在信息發(fā)送端,根據(jù)包括密鑰和幀號的參考信息采用預(yù)定的算法生成認證碼,并將所述的認證碼與待發(fā)送的消息一起發(fā)送給接收端;在接收端,根據(jù)收到的幀號和密鑰并采用所述預(yù)定算法生成校驗認證碼,并利用校驗認證碼對收到的認證碼進行一致性檢驗,確定發(fā)送端的合法性。
以銀行業(yè)為例,由于銀行業(yè)的特殊性,用戶在交易的時候,必須持有銀行簽發(fā)的U盾等作為簽名工具。因此,系統(tǒng)可以采用有仲裁的雙向數(shù)字簽名系統(tǒng)。假定終端機為X,網(wǎng)站為Y,公證機構(gòu)為A,M為口令信息,EKUx為X的公開密鑰,EKRx為X的私鑰,EKUy為Y的公開密鑰,EKRy為Y的私鑰,EKUa為A的公開密鑰,EKRa為A的私鑰,Idx為終端機用戶唯一的不可以更改的號碼,T為時間戳。具體過程如下:

圖1 安全登陸數(shù)據(jù)的捕獲
X->A : IDx||EKRx[IDx||EKUy(EKRx[M])T]
A->Y: EKRa[IDx||EKUy[EKRx[M]]T]
當發(fā)送交易信息M的時候,首先U盾對M進行加密,并添加時間戳,然后在計算機內(nèi)部用Y的公開密鑰EKUy對消息進行加密,形成一個經(jīng)過簽名且保密的消息。然后將用戶的ID號碼(唯一的不可以更改的號碼)和本信息用KRx加密后一起發(fā)給公證機構(gòu)A。
A作為公證機構(gòu),負責驗證X的公私鑰對的合法性、有效性。如果有效,則通過KRa加密之后發(fā)送報文,報文上添加有公證機構(gòu)的時間戳。同時,A備份密文和時間戳。
網(wǎng)站Y在收到消息后,先用KUa解密,得到A的ID號碼和時間戳;檢查ID號碼和公鑰的對應(yīng)關(guān)系,如果正確則解密得到正確格式的交易信息。如果錯誤則拒絕進行交易。
如果主流電子交易網(wǎng)站,采用公鑰技術(shù)的身份認證系統(tǒng),系統(tǒng)安全性將得到很大改觀,賬戶的登錄安全性得到了充分的保障。遺憾的是,由于目前國家缺乏強制性的規(guī)定,這種登錄技術(shù)普及還有待時日。就目前的局面來說,對加密數(shù)據(jù)添加時間戳,在整個連接過程中采用https協(xié)議進行加密傳輸,是一種現(xiàn)實的選擇。
[1]陳小輝.鉤子技術(shù)在信息窺探中的使用[J].計算機與現(xiàn)代化,2009(9):97-99.
[2]趙建超.校園無線網(wǎng)絡(luò)安全綜合防御[J].制造業(yè)自動化,2011(2):35-37.
[3]KeithJ.Albert.Field-Deployable Sniffer for 2,4-Dinitrotoluene Detection[D].Environ.Sci.Technol.,2001,35(15):3193–3200.
[4]卿斯?jié)h.安全協(xié)議20年研究進展[J].軟件學報,2003,14(10):1740-1749.
[5]華為技術(shù)有限公司.防止重放攻擊的方法及系統(tǒng)[J].200610076227.X.