徐世英 孫曉范 王 威
摘要 作為一套完整的 Internet 安全解決方案,PKI技術(shù)在電子商務(wù)市場被廣泛應(yīng)用。本文設(shè)計并實現(xiàn)了一種基于PKI技術(shù)的網(wǎng)上移動購物系統(tǒng),它將PKI技術(shù)與移動通信相結(jié)合,對購物信息進行數(shù)字簽名加密。此系統(tǒng)實現(xiàn)了移動身份認(rèn)證服務(wù),確保了購物信息的安全性、完整性和不可否認(rèn)性。
關(guān)鍵詞 PKI;動態(tài)口令;購物系統(tǒng);移動通信;SSL協(xié)議
中圖分類號 TP393文獻標(biāo)識碼 A 文章編號1674-6708(2009)07-0056-02
0 引言
隨著人們越來越多的使用網(wǎng)絡(luò),包括有線網(wǎng)絡(luò)和無線網(wǎng)絡(luò),去實體商店的傳統(tǒng)購物方式越來越多的轉(zhuǎn)變?yōu)樵诰W(wǎng)上進行,網(wǎng)上購物這種新興方式有取代傳統(tǒng)購物的趨勢。據(jù)新生代市場監(jiān)測機構(gòu)2007年的調(diào)查,沃爾瑪、家樂福等大型賣場,一個門店一天的平均客流量低于1.5萬人,而淘寶網(wǎng)每天的用戶流量將近900萬人[1]。
為了確保網(wǎng)上信息的安全傳輸,人們進行了多年的研究,目前,被廣泛采用的是公鑰基礎(chǔ)設(shè)施(Public Key Infrastructure,PKI)技術(shù)。PKI技術(shù)采用數(shù)字證書管理公鑰,通過第三方的可信任機構(gòu)—認(rèn)證中心 (Certificate Authority,CA),把用戶的公鑰和用戶的其他標(biāo)識信息捆綁在一起,在Internet網(wǎng)上驗證用戶的身份。
1 PKI 及動態(tài)口令技術(shù)簡介
PKI(Public Key Infrastructure),即“公開密鑰體系”,PKI 是一種基于公開密鑰體制的密鑰管理平臺,通過采用認(rèn)證技術(shù)確保電子合同的完整性和抗抵賴性,通過對信息進行加密確保信息在傳輸過程中的保密性,同時,通過采用基于 PKI/CA 結(jié)構(gòu)及用戶口令,可有效的對系統(tǒng)中的用戶進行身份認(rèn)證,防止系統(tǒng)中出現(xiàn)非法用戶和偽造信息。PKI技術(shù)是信息安全技術(shù)的核心,也是電子商務(wù)的關(guān)鍵和基礎(chǔ)技術(shù)。其中,CA是PKI的核心執(zhí)行機構(gòu),是PKI的主要組成部分,業(yè)界人士通常稱它為認(rèn)證中心,它是保證電子商務(wù)、電子政務(wù)、網(wǎng)上銀行、網(wǎng)上證券等交易的權(quán)威性、可信任性和公正性的第三方機構(gòu)。
動態(tài)口令(Dynamic Password),又稱一次性口令(0TP-One Time Password),是相對于傳統(tǒng)的靜態(tài)口令而說的。它一般由某種終端設(shè)備,根據(jù)動態(tài)口令生成算法產(chǎn)生的隨動態(tài)參數(shù)變化而變化的口令。動態(tài)口令是變化的密碼,其變化來源于產(chǎn)生密碼的運算因子是變化的。動態(tài)口令的生成算法一般都采用雙運算因子,一是用戶身份的識別碼,是固定不變的,如用戶的私有密鑰;二是變動因子[2]。
本文中將用戶已注冊成功的口令作為用戶身份的識別碼,并選定隨機數(shù)作為變動因子, 使得每次認(rèn)證的用戶口令不同,同時,結(jié)合 Hellman 算法原理,在認(rèn)證用戶和 AS 間安全交換一個密鑰。
2 購物系統(tǒng)的實現(xiàn)
2.1 系統(tǒng)結(jié)構(gòu)
傳統(tǒng)網(wǎng)上購物系統(tǒng)的結(jié)構(gòu)非常簡單,如圖 1 所示[3]。
圖 1 傳統(tǒng)網(wǎng)上購物系統(tǒng)的結(jié)構(gòu)圖
用戶通過個人電腦或移動終端的瀏覽器,向購物網(wǎng)站發(fā)送購物請求信息,購物網(wǎng)站對購物請求進行相應(yīng)的響應(yīng),完成交易行為?;赑IK技術(shù)的網(wǎng)上購物系統(tǒng)的結(jié)構(gòu),如圖 2 所示。
圖 2 基于 PIK技術(shù)的網(wǎng)上購物系統(tǒng)的結(jié)構(gòu)圖
與傳統(tǒng)網(wǎng)上購物系統(tǒng)相比,系統(tǒng)增加了移動身份認(rèn)證平臺(Key Center),來加強交易的安全性,完整性和不可否認(rèn)性。移動身份認(rèn)證平臺包括代理服務(wù)器(TR)和認(rèn)證服務(wù)(CA)。代理服務(wù)器主要完成截獲用戶發(fā)向購物網(wǎng)站平臺認(rèn)證的連接請求,將其轉(zhuǎn)發(fā)到認(rèn)證服務(wù)器進行用戶的身份認(rèn)證,它是實現(xiàn)客戶端和認(rèn)證服務(wù)器認(rèn)證連接轉(zhuǎn)發(fā)的中間環(huán)節(jié),當(dāng)用戶認(rèn)證成功后為用戶建立訪問購物網(wǎng)站平臺的透明代理。使用代理服務(wù)器的主要目的是保證在正常傳輸信息時,實現(xiàn)用戶信息數(shù)據(jù)庫與認(rèn)證服務(wù)器的分離,充分保證用戶信息的安全。認(rèn)證服務(wù)器主要完成與客戶端的認(rèn)證工作。各種用戶的身份認(rèn)證信息和本地的一些安全參數(shù)信息,都存放在用戶信息數(shù)據(jù)庫中。
每一個用戶擁有一個認(rèn)證令牌,認(rèn)證令牌主要用于認(rèn)證服務(wù)器發(fā)送的隨機動態(tài)數(shù)字和種子值,通過一個隨機函數(shù)生成算法,計算出相應(yīng)的動態(tài)口令,每個隨機數(shù)都是唯一的,并且決不重復(fù)使用。這樣就保證了每次認(rèn)證過程均生成一個唯一的與認(rèn)證令牌對應(yīng)的不可預(yù)測的令牌碼,提供給認(rèn)證客戶端。認(rèn)證客戶端將此碼與用戶碼一起提交給認(rèn)證服務(wù)器端, 驗證用戶的身份。
2.2 系統(tǒng)工作流程
在注冊過程完成之后,如果用戶希望訪問購物網(wǎng)站平臺的資源,必須首先通過認(rèn)證服務(wù)器的認(rèn)證。用戶可以利用認(rèn)證令牌中的認(rèn)證信息向Key Center證明自己的身份??蛻舳伺c移動身份認(rèn)證平臺(KC)之間需要完成,如圖 3 所示的3個步驟以完成兩者之間的身份認(rèn)證。
圖3 客戶端與移動身份認(rèn)證平臺之間的認(rèn)證過程
登陸過程:
當(dāng)用戶在客戶端登錄并向服務(wù)平臺Server發(fā)出資源訪問請求時,系統(tǒng)提示用戶輸入用 戶名和口令,并將輸入結(jié)果( UserID,Psw)發(fā)送給代理服務(wù)器。其中客戶端與代理服務(wù)器之間采用安全傳輸通道SSL,代理服務(wù)器將該認(rèn)證請求連接轉(zhuǎn)發(fā)到認(rèn)證服務(wù)器,代理服務(wù)器和認(rèn)證服務(wù)器之間采用明文傳輸TCP/IP協(xié)議。
認(rèn)證服務(wù)器首先驗證用戶名和口令,如果正確,認(rèn)證服務(wù)器和客戶端按照基于動態(tài)口令機制的認(rèn)證協(xié)議進行雙向的身份認(rèn)證。如果不正確,傳回提示用戶重新輸入的信息,讓用戶端重新輸入。
認(rèn)證過程:
此認(rèn)證協(xié)議的具體認(rèn)證過程如下:
其中符號:K_pub表示公鑰,K_pri表示私鑰,y為整數(shù)、表示用戶注冊的口令的種子值,TS表示時間戳,EK為基于用戶口令的散列碼,Ka,b為由KC生成的a與b間安全交換報文共享密鑰,IDi為I的身份標(biāo)示,lifetime為生存期。
step 1:User -> CA : EK_Pub_CA [M1;IDuser ;X;TS]
M1 = EK_Pri_user [IDuser ;d]
X=gx mod n /* x為user 選取的一個隨機整數(shù)。*/
d=gxy mod n/* y為用戶口令種子值。*/
用戶端將本次的動態(tài)密碼d用自己的私鑰加密成數(shù)據(jù)包M1 ,再同IDuser和x計算得到得 X一并用CA的公鑰加密后發(fā)送給CA。發(fā)送完畢后,客戶端會將X和d備份,并啟動計時器,若超過一定時間T后仍無收到CA的應(yīng)答數(shù)據(jù)包則丟棄X和d ,或在T范圍之內(nèi)收到CA應(yīng)答數(shù)據(jù)包進行驗證后丟棄該隨機數(shù)X和d。
CA收到客戶端發(fā)過來的認(rèn)證數(shù)據(jù)包后,先用自己的私鑰對收到的消息進行解密,得到用用戶私鑰加密的數(shù)據(jù)包M1,以及IDuser 和 X。CA根據(jù)得到的IDuser ,在數(shù)據(jù)庫中查找對應(yīng)用戶的公鑰K_pub 。用此公鑰解密M1,得到IDuser 和本次的動態(tài)密碼d。CA根據(jù)數(shù)據(jù)庫中對應(yīng)的本次用戶口令種子值,還原用戶注冊信息,并進行比較。若不同,拒絕客戶端的請求,向客戶端發(fā)送拒絕數(shù)據(jù)包;若相同,接受客戶端的請求,進入第2步。
step 2 : CA -> User : EK_Pub_User [M2;IDuser ; X;R;R1;TS ]
R= YS ⊕ X
R1 = YS⊕ X⊕ y
M2= EK_d[Kuser_TR ; IDTR ; R; R1; Lifetime; Ticket]
Ticket=EK_Pub_TR [KUser_TR ; IDUser ; IDTR ; TS; Lifetime]
CA收到消息后核對客戶端的ID,用與客戶端協(xié)商的秘密密鑰解密KUser(X)得到X。CA選擇一個隨機數(shù) x CA向客戶端發(fā)送數(shù)據(jù)包,即將IDUser,IDTR, TS, R,R1,Lifetime,K_user_TR 和令牌ticket用基于本次動態(tài)密碼d來加密,而后連同客戶端發(fā)送過來的X用客戶端的公鑰K加密,其中Ticket用TR的公鑰加密。 客戶端在范圍之內(nèi)收到CA應(yīng)答數(shù)據(jù)包后,先用自己的私鑰解密得到M2,IDUser 和 X。將X和本身暫存的 X 進行比較,若不等則中斷認(rèn)證,相等則取出 d 解密M2得到與 TR 的共享密鑰同時用R ⊕ R1得到下一次認(rèn)證時要用到的新的種子值y,并更新。下一次認(rèn)證時根據(jù)新的種子值y計算動態(tài)密碼。 Step3:將認(rèn)證結(jié)果發(fā)送給代理服務(wù)器,此次認(rèn)證結(jié)束。 當(dāng)用戶身份為合法用戶時,代理服務(wù)器為客戶端發(fā)起的連接請求中繼到服務(wù)平臺,從而建立客戶端和服務(wù)平臺的透明代理,客戶端此時就可以訪問服務(wù)平臺的資源了。如果用戶身份為非法用戶,認(rèn)證失敗,同時客戶端的訪問請求連接被拒絕。 3 結(jié)論 本文介紹了基于 PKI技術(shù)的網(wǎng)上購物系統(tǒng),使用 PKI 技術(shù)確保了購物信息的安全性、完整性和不可否認(rèn)性。這樣用戶不需要更換SIM卡,就能方便地確保自己信息的安全,而購物網(wǎng)站則可以通過移動身份認(rèn)證平臺,來確認(rèn)購物信息是哪個用戶提交的,讓購物信息具有不可否認(rèn)性。 參考文獻 [1]http://news.iresearch.cn/0200/20080331/78433.shtml. [2]黃冠利,胡益.基于PKI的數(shù)字簽章安全系統(tǒng)設(shè)計[J].計算機安全,2008. [3]中廣瑞波公司.PKI-SIM 安全認(rèn)證卡系統(tǒng)簡要說明.