浙江工業職業技術學院 王麗麗
美國科學家Leslie Lamport首次提出了利用散列函數產生一次性口令的思想,即用戶每次同服務器進行身份認證時,在網上傳輸的認證口令都是一次有效的。即Lamport方式,但它最大的缺點就是計算量特別大,需要做大量的加密計算。
一次性口令技術在美國最初主要用于軍事、情報、科研等對安全級別要求很高的部門。隨著信息技術的發展,信息安全受到重視,一次性口令進入商用領域。歐洲的絕大部分銀行,采用一次性口令技術對安全風險加以防范。
我國的中科院信息安全國家重點實驗室于1998年研制一次性口令身份認證系統。之后,有許多公司開發出不同型號的一次性口令身份認證系統。
目前,我國多家銀行在其內部操作員管理或網上銀行中采用了一次性口令認證。網絡游戲運營商,都先后推出了各自的一次性口令產品,包括矩陣式一次性口令卡和一體化令牌,這些一次性口令產品將為越來越多的網游玩家提供賬戶和虛擬資產保護。同時,在企業內部管理上,也運用遠程用戶訪問身份認證、操作授權、技術人員進行系統和網絡維護登錄等操作。
一次性口令也稱為動態口令。它是基于某種密碼算法,將用戶的身份代碼和某種不確定因素作為密碼算法的輸入參數,經過算法變換得到一個變化的結果,將其作為用戶的登錄口令。認證服務器端使用相應的算法進行計算,并將計算結果與用戶的登錄口令進行比對,若相同則接受登錄。由于在認證過程中產生的口令只能完成一次有效認證,即使非法用戶截獲了己經通過驗證的正確口令,再次提交到認證服務器也不能通過驗證,因此不必擔心口令在傳輸認證期間被第三方監聽到,從而提高登錄過程的安全性。
一次性口令認證技術又發展了三種方式:
1.挑戰/應答方式。它由服務器向客戶端發送不同的挑戰信息,服務器通過驗證客戶端的響應信息來進行身份認證。
2.時間同步方式。它需要客戶端和服務器保持時間同步,雙方利用相同的時間作為計算因子計算動態口令,以此實現身份認證。
3.以散列運算和異或運算等低復雜度的運算為基礎,認證雙方通過計算雙方交換的認證數據進行一次性口令身份認證。這種方式的特點是設計簡單、運算量較小,而且實施的成本也較低。
在移動支付中,安全性是影響移動商務發展的首要因素。移動支付中的安全需求有:
1.數據機密性。數據在傳送中不被泄漏,未被授權的人不能讀懂數據。
2.信息完整性。數據在傳輸存儲中不會受到非法的修改,確保信息內容和順序的完整性。
3.信息可認證性。只有通過認證的用戶才可以在授權范圍內訪問相應的業務。
4.防抵賴性。買賣雙方都必須對自己發出和接收的信息不可抵賴。
5.訪問控制。確保用戶僅僅看到所授權的信息。
一次性口令認證技術采用一次一密的認證方式,實現簡單、成本低、無需第三方公證,十分適合移動支付環境。但它只支持服務器對用戶的單向認證,無法防范假冒的服務器欺騙合法用戶。因此,提出基于移動支付的一次性口令身份認證方案。
本方案設計思路為:
a.利用移動設備PIN碼作為解鎖碼,應用IMEI為認證因子;
b.設計相關運算,避免隨機數Ri在網絡中明文傳輸,防止網絡竊聽;
c.利用基于身份的加密算法,設計實現雙向認證,避免中間人冒充攻擊;
d.設計代價較小的認證協議,滿足移動終端的運算能力要求。
本方案主要有支付平臺認證端、客戶端及認證協議三部分。
1.支付平臺認證端包含用戶請求響應模塊、用戶認證模塊和新用戶注冊模塊。
●用戶請求響應模塊主要負責處理并響應客戶端發來的各種請求信息。
●用戶認證模塊是負責接收并驗證用戶請求響應模塊發送來的認證數據包,也是服務器端的主要功能模塊。
●新用戶注冊模塊是實現用戶在第一次使用此身份認證方案之前必須在認證端服務器注冊,并完成系統初始化。
2.客戶端包含客戶端請求及響應模塊、客戶端驗證模塊和客戶端應答模塊。
●客戶端請求及響應模塊負責在用戶請求認證或注冊服務時,按要求輸入用戶名和相關信息,將客戶端軟件生成的請求信息發送給服務器,并接收注冊過程中或認證過程中的所有信息,轉交至相應模塊。
●客戶端驗證模塊主要負責實現解密服務器的挑戰信息,比對相關信息驗證服務器身份。
●客戶端應答模塊主要實現移動用戶應答信息的計算及產生。
3.認證協議設計分注冊階段和認證階段兩部分。
注冊階段具體流程如圖1所示。
1)注冊請求。移動用戶使用移動終端唯一標識符IMEI作為用戶名發送給認證服務器,生成口令為RC1=(IMEI)。
2)返回參數。認證服務器收到用戶請求,驗證IMEI是否存在于數據庫中,若存在,返回已注冊信息;否則,接受用戶注冊。發送給用戶服務器公鑰KSR,生成口令為RS1=KSR。

圖1 注冊階段流程圖

圖2 認證階段流程圖
3)發送用戶信息。用戶得到服務器公鑰,用其將用戶信息加密后發送至認證服務器。生成口令為RC2=EKSR(t,IMEI),其中t為移動支付用戶信息,由系統建立時設定。
4)返回注冊結果。認證服務器使用服務器私鑰KSS進行DKSS(EKSR(t,IMEI))運算,得到用戶信息和IMEI,再根據用戶公開信息計算出用戶公鑰,同時系統分配給移動用戶一個通行密語SPP。最后把用戶信息存到數據庫中,建立移動用戶的用戶賬戶,并將SPP和注冊成功信息發送給用戶。
認證階段流程如圖2所示。
1)解鎖。移動用戶在手機令牌上輸入PIN,如果PIN正確,移動終端解鎖;否則不能解鎖。
2)登錄請求。移動終端解鎖后,立即顯示出用戶登錄頁面。系統自動提取IMEI,使用服務器公鑰進行加密,產生的口令為DPCi=EKSR(IMEI)。將口令通過GSM網絡發送登錄請求到認證服務器。
3)發送挑戰信息。認證服務器使用服務器私鑰進行解密運算DKSS(EKSR(t,IMEI)),得到IMEI。查詢數據庫比對移動用戶IMEI,若IMEI不存在,返回未認證信息,否則進行下一步處理。服務器生成一個隨機數Ri,計算H(IMEI,Ri),并用移動用戶公鑰KCR對Ri進行加密,生成口令DPSi=(EKCR(Ri),H(IMEI,Ri))發送至移動用戶。
4)響應挑戰。移動用戶收到挑戰信息后,用私鑰KCS解密運算,提取出Ri和H(IMEI,Ri)。計算H’(IMEI,Ri),比對H(IMEI,Ri)和H’(IMEI,Ri)是否相等,若不相等,結束認證;若相等,則驗證了服務器的身份,計算出H(SPP,R)作為應答數發送給認證端服務器。
5)認證結果。認證服務器暫存H(SPP,Ri),取出用戶數據庫中的SPP計算出H'(SPP,Ri)與收到H(SPP,Ri)進行對比。若相同,移動用戶身份認證成功;否則返回認證失敗信息。
6)若認證失敗的次數大于2小于最大值,用戶進入等待狀態,在此狀態用戶輸入任何口令都不起作用,同時以手機短信方式向注冊用戶發出報警。直到等待狀態結束,用戶才可以再次輸入口令進行驗證了。若認證失敗的次數超過最大值,用戶被鎖定,認證服務器不再接收用戶口令,通過短信方式通知用戶到注冊中心辦理解鎖業務。
一次性口令認證技術可以抵御重放攻擊、口令猜測攻擊等常見的靜態口令的攻擊,但其難以抵御中間人攻擊。本文對一次性口令認證技術和移動支付的安全問題進行了全面分析,指出其存在安全隱患的原因,并在此基礎上提出基于移動支付一次性口令認證協議的設計思路和設計內容。
[1]朱美佳.移動支付中動態口令身份認證方案研究[J].西安電子科技大學,2011,1.
[2]王曉娥.移動支付存在的主要問題及市場切入點分析[J].寧夏工程技術,2004,6.
[3]高雪,張煥國,孫曉梅.一種改進的一次性口令認證方案[[J].計算機應用研究,2006,23(6):127-128,132.
[4]王洪瑩.移動商務身份認證系統的研究與設計[D].北京交通大學,2007,6.
[5]劉天法,馮啟源,楊桂勇.基于一次性口令的認證技術的研究[J].計算機應用與軟件,2007,8:177-179.
[6]隋品,方勇,李民,劉林超.一次性口令機制身份鑒別技術的改進設計和實現[J].信息與電子工程,2005,3(4):297-299.
[7]王敏,戴宗坤,方勇.一種新的一次性口令機制及其應用[J].計算機應用研究,2005.