□馬 慰
一種基于雙因素認(rèn)證的QR碼安全移動(dòng)支付方案研究
□馬慰
移動(dòng)支付是當(dāng)前應(yīng)用廣泛的一種移動(dòng)服務(wù),移動(dòng)支付的安全性問(wèn)題備受關(guān)注。本文針對(duì)移動(dòng)支付中嚴(yán)格的驗(yàn)證與加密要求,提出了一種安全移動(dòng)支付方案,應(yīng)用雙因素認(rèn)證機(jī)制保證支付信息的安全性,通過(guò)QR碼向用戶呈現(xiàn)交易要素,提高便捷性,同時(shí)該方案使用了基礎(chǔ)的系統(tǒng)結(jié)構(gòu)和開(kāi)源的開(kāi)發(fā)工具,降低了成本。模擬案例驗(yàn)證表明,該方案能夠確保正常移動(dòng)支付的安全性,應(yīng)用便捷,具有較好效果。
隨著通信技術(shù)的進(jìn)步和智能手機(jī)的普及,人們?cè)谙硎茈娮由虅?wù)的同時(shí),對(duì)支付方式的要求越來(lái)越高,移動(dòng)支付作為一種新興的支付手段,是通過(guò)用戶的移動(dòng)終端對(duì)所消費(fèi)的商品或服務(wù)進(jìn)行賬務(wù)支付的一種服務(wù)方式,滿足了現(xiàn)代用戶對(duì)支付的安全性、便捷性、移動(dòng)性需求。雙因素認(rèn)證(two-factor authentication)是目前流行的一種身份認(rèn)證方法,廣泛應(yīng)用于各類(lèi)金融網(wǎng)絡(luò)系統(tǒng),尤其是交易性模塊。它使用基于時(shí)間、事件、密鑰產(chǎn)生的一次性密碼來(lái)代替?zhèn)鹘y(tǒng)靜態(tài)密碼。
國(guó)內(nèi)外對(duì)移動(dòng)支付安全性方面的研究主要集中于移動(dòng)支付的風(fēng)險(xiǎn)評(píng)估研究、移動(dòng)支付的安全標(biāo)準(zhǔn)研究、移動(dòng)支付的安全協(xié)議研究、第三方安全支付模式研究和移動(dòng)支付安全系統(tǒng)的設(shè)計(jì)應(yīng)用。其中,國(guó)內(nèi)有相當(dāng)數(shù)量的移動(dòng)支付安全解決方案的研究與應(yīng)用,對(duì)移動(dòng)支付現(xiàn)存的風(fēng)險(xiǎn)點(diǎn)和安全保障技術(shù)提出了各自的看法,取得了一定的成果。然而,這些研究大部分起點(diǎn)較高,把移動(dòng)支付方案建立在一個(gè)已經(jīng)具備相應(yīng)通訊能力的基礎(chǔ)設(shè)施環(huán)境下;事實(shí)上,許多國(guó)家或者一國(guó)的不同地區(qū)所提供的基礎(chǔ)網(wǎng)絡(luò)設(shè)施不盡相同,信息水平高低不一,可能達(dá)不到使用高級(jí)移動(dòng)支付的網(wǎng)絡(luò)要求,無(wú)法適用一些先進(jìn)的移動(dòng)支付方案。因此,開(kāi)發(fā)一種在當(dāng)前客觀條件下適用的安全移動(dòng)支付方案顯得尤為重要。
為了提高移動(dòng)支付方案的適用性,保證移動(dòng)支付的安全性,本文提出一種基于雙因素認(rèn)證的移動(dòng)支付方案,以安全、快捷、方便為目的,使用了簡(jiǎn)便的基礎(chǔ)結(jié)構(gòu),通過(guò)雙因素認(rèn)證進(jìn)行客戶身份驗(yàn)證,商戶與客戶的交互采用加密QR(Quick Response)碼,最終完成支付交易。
本文充分借鑒了現(xiàn)有的研究成果,對(duì)移動(dòng)支付的特點(diǎn)進(jìn)行了分析。當(dāng)前移動(dòng)支付面臨兩個(gè)重要問(wèn)題:移動(dòng)支付行業(yè)標(biāo)準(zhǔn)統(tǒng)一化和移動(dòng)支付的安全性保障,其中,安全性是移動(dòng)金融領(lǐng)域發(fā)展中一個(gè)至關(guān)重要的話題。因?yàn)槿绻荒芴峁┕潭ㄒ苿?dòng)網(wǎng)絡(luò)上的商業(yè)信息交流和安全的電子金融交易,沒(méi)有人會(huì)相信移動(dòng)金融。通常,一個(gè)安全的移動(dòng)支付系統(tǒng)須有如下特點(diǎn):信息保密性、身份認(rèn)證、健全性、授權(quán)性、有效性、不可否認(rèn)性。
所有的金融交易必須在安全的環(huán)境下進(jìn)行,本文著重考慮了支付方案的安全性后,給出了支付系統(tǒng)的結(jié)構(gòu)。如圖1所示,系統(tǒng)主要模塊有支付網(wǎng)關(guān)(Payment Gateway)、客戶端和商戶端,其中支付網(wǎng)關(guān)連接到銀行金融支付網(wǎng)絡(luò),也能連接CA中心驗(yàn)證所有的數(shù)字簽名(Digital Signature)。方案要求用戶與商戶使用配備攝像頭并安裝了方案配套的安全移動(dòng)支付應(yīng)用程序的移動(dòng)設(shè)備。移動(dòng)設(shè)備需要連接到一個(gè)內(nèi)部局域網(wǎng)絡(luò)中,用以和支付網(wǎng)關(guān)PG通信;所有應(yīng)用的開(kāi)發(fā)工具選用了開(kāi)源組件。
圖1移動(dòng)支付系統(tǒng)主要結(jié)構(gòu)
(一)支付方案系統(tǒng)初始化。在客戶與商戶使用該移動(dòng)支付系統(tǒng)之前,他們必須通過(guò)安全的https (Hyper Text Transfer Protocol over Secure Socket Layer)內(nèi)網(wǎng)協(xié)議連接上支付網(wǎng)關(guān)系統(tǒng)的站點(diǎn),填寫(xiě)提交相關(guān)表單進(jìn)行注冊(cè),客戶與商戶的密碼使用密碼散列函數(shù)MD5消息摘要算法安全地存儲(chǔ)于支付網(wǎng)關(guān)上。在支付網(wǎng)關(guān)驗(yàn)證過(guò)密碼接受了提交的表單后,生成1024位的RSA公私密鑰對(duì)。客戶與商戶訪問(wèn)并掃描支付網(wǎng)關(guān)接口生成的QR碼,獲取各自的用戶id、用戶私鑰和PG的公鑰,而QR碼經(jīng)過(guò)用戶密碼加密,需要客戶與商戶驗(yàn)證各自密碼才能得到QR碼中的內(nèi)容。客戶與商戶得到QR碼中的內(nèi)容被加密存儲(chǔ)在各自的移動(dòng)設(shè)備上。該方案所有交易信息傳輸應(yīng)用了雙因素認(rèn)證機(jī)制,先使用密碼得到密鑰,再使用密鑰認(rèn)證和解密信息內(nèi)容。系統(tǒng)初始化的過(guò)程如圖2所示。
圖2系統(tǒng)初始化
(二)商戶端支付信息處理。注冊(cè)階段完成后,商戶就可以使用自己的移動(dòng)設(shè)備為客戶提供購(gòu)買(mǎi)商品或服務(wù)的交易。當(dāng)客戶選好商品或服務(wù)后,商戶記錄并生成交易清單。隨后,商戶將交易清單內(nèi)容通過(guò)支付網(wǎng)關(guān)的公鑰加密,再附上商戶用自己私鑰生成的數(shù)字簽名,一起經(jīng)過(guò)安全https Web服務(wù)連接上傳到支付網(wǎng)關(guān)。這家商戶在加密上傳交易清單之前也需要輸入正確的用戶密碼來(lái)獲取存儲(chǔ)在移動(dòng)設(shè)備上的公鑰和私鑰。這里同樣使用了雙因素認(rèn)證機(jī)制提高安全性。支付網(wǎng)關(guān)檢索由商戶發(fā)送的Web服務(wù)請(qǐng)求,然后利用私鑰解密消息內(nèi)容并利用商戶的公鑰驗(yàn)證數(shù)字簽名(支付網(wǎng)關(guān)擁有所有商戶的公鑰)。驗(yàn)證信息完成后,支付網(wǎng)關(guān)在數(shù)據(jù)庫(kù)中記錄下該筆交易及交易時(shí)間戳,同時(shí)需要給商戶一個(gè)應(yīng)答,這個(gè)應(yīng)答包含了商戶id、時(shí)間戳、交易的數(shù)量和總金額。同樣,支付網(wǎng)關(guān)給商戶的應(yīng)答使用雙因素認(rèn)證機(jī)制,附上支付網(wǎng)關(guān)私鑰生成的數(shù)字簽名,并通過(guò)安全https連接發(fā)送。商戶收到支付網(wǎng)關(guān)的應(yīng)答后,商戶的移動(dòng)應(yīng)用程序?qū)⒏鶕?jù)應(yīng)答內(nèi)容生成一個(gè)可供客戶移動(dòng)設(shè)備應(yīng)用掃描的QR碼,用來(lái)進(jìn)行支付。商戶端支付信息處理如圖3所示。
圖3商戶端處理支付信息
(三)用戶端支付信息處理。用戶使用移動(dòng)設(shè)備上的應(yīng)用程序掃描商戶發(fā)送的QR碼。為了驗(yàn)證并獲取QR碼中包含的信息內(nèi)容,首先用戶在移動(dòng)設(shè)備上輸入正確的密碼得到支付網(wǎng)關(guān)的公鑰,用支付網(wǎng)關(guān)的公鑰驗(yàn)證QR碼信息中的數(shù)字簽名并解密內(nèi)容。如果支付信息驗(yàn)證成功且時(shí)間戳沒(méi)有過(guò)期,完整的支付信息將會(huì)顯示在客戶的移動(dòng)設(shè)備上,接收驗(yàn)證過(guò)程如圖4(a)所示。然后,客戶根據(jù)實(shí)際情況選擇確認(rèn)支付或者拒絕支付。如用戶選擇確認(rèn)支付,支付信息(包含客戶id,商戶id,交易id)和時(shí)間戳將通過(guò)支付網(wǎng)關(guān)的公鑰加密封裝并附上客戶私鑰生成的數(shù)字簽名,同樣用移動(dòng)應(yīng)用程序生成一個(gè)QR碼發(fā)送給商戶。由于附帶時(shí)間戳,不同時(shí)刻QR碼是不一樣的。假如QR碼信息被截獲,沒(méi)有支付網(wǎng)關(guān)的私鑰和正確的密碼,QR碼顯示的只是一段亂碼。最后,包含確認(rèn)支付內(nèi)容的支付信息經(jīng)過(guò)商戶發(fā)送給支付網(wǎng)關(guān),支付網(wǎng)關(guān)用自己的私鑰解密信息內(nèi)容,該過(guò)程如圖4(b)所示。
圖4(a) 用戶端接收支付信息
圖4(b) 用戶端發(fā)送支付確認(rèn)
(四)支付確認(rèn)審批。商戶掃描用戶發(fā)送的QR碼確認(rèn)支付的請(qǐng)求,然后將用戶的支付確認(rèn)信息附上時(shí)間戳和商戶私鑰生成的數(shù)字簽名經(jīng)安全連接上傳給支付網(wǎng)關(guān)。支付網(wǎng)關(guān)收到商戶發(fā)來(lái)的支付確認(rèn)信息后,須進(jìn)行兩次驗(yàn)證,首先利用商戶的公鑰驗(yàn)證商戶的數(shù)字簽名,檢查商戶信息的時(shí)間戳是否過(guò)期,然后再解密用戶的支付信息,驗(yàn)證用戶的數(shù)字簽名,檢查用戶信息的時(shí)間戳。運(yùn)用二次檢查原理驗(yàn)證,確保整個(gè)支付的完整性。支付網(wǎng)關(guān)完成全部驗(yàn)證后,在數(shù)據(jù)庫(kù)中記錄下該筆交易支付成功,將結(jié)果返回給商戶。支付確認(rèn)過(guò)程如圖5所示。
圖5支付確認(rèn)審批
本節(jié)使用一個(gè)案例對(duì)方案進(jìn)行驗(yàn)證。用戶A使用該移動(dòng)支付系統(tǒng),在其智能手機(jī)上安裝了移動(dòng)支付應(yīng)用并在支付網(wǎng)關(guān)進(jìn)行了注冊(cè),通過(guò)瀏覽商戶B的門(mén)戶網(wǎng)站,A選擇了一款運(yùn)動(dòng)鞋,將支付請(qǐng)求(包含款式類(lèi)別、尺碼、數(shù)量、物流信息等)經(jīng)過(guò)雙因素認(rèn)證提交給B;B據(jù)此生成購(gòu)物清單,包含了所有支付信息,將其加密上傳給支付網(wǎng)關(guān),支付網(wǎng)關(guān)記錄該筆交易的支付細(xì)節(jié)內(nèi)容,發(fā)送授權(quán)可支付的驗(yàn)證信息給B,B收到該信息使用自己平板電腦上的移動(dòng)支付應(yīng)用生成一個(gè)加密的QR碼發(fā)送給A,等待A回應(yīng)該筆支付;A接收、掃描QR碼解密內(nèi)容,檢查訂單無(wú)誤后,選擇確認(rèn)支付,B平板電腦上應(yīng)用偵聽(tīng)到該筆確認(rèn)支付,驗(yàn)證后上傳給支付網(wǎng)關(guān),支付網(wǎng)關(guān)驗(yàn)證交易一致性,最后完成付款,B發(fā)貨。但是,該筆款項(xiàng)暫存在支付網(wǎng)關(guān)系統(tǒng)上B的一個(gè)專用賬戶內(nèi),直至客戶收貨確認(rèn)后整個(gè)交易完成。B在支付網(wǎng)關(guān)系統(tǒng)上的專用賬戶在每日日終將完成交易部分的賬款轉(zhuǎn)入B在銀行開(kāi)立的賬戶中。
在整個(gè)支付過(guò)程中,客戶與商戶使用私鑰進(jìn)行數(shù)字簽名確保交易一致性。網(wǎng)絡(luò)黑客在沒(méi)有對(duì)應(yīng)密鑰的情況下,無(wú)法掌握、控制支付信息。萬(wàn)一客戶手機(jī)丟失,或者黑客復(fù)制了手機(jī)的存儲(chǔ)器,如沒(méi)有正確的密碼也無(wú)法得到密鑰。一些手機(jī)制造商也提供了安全措施,當(dāng)手機(jī)丟失后可以觸發(fā)特定程序刪除手機(jī)上的信息。用戶也能夠訪問(wèn)支付網(wǎng)關(guān)徹底刪除丟失手機(jī)上的相關(guān)機(jī)密信息,并重新生成公私密鑰對(duì)。由于交易需要檢驗(yàn)時(shí)間戳,中繼攻擊也很難起作用。另外,客戶與商戶間支付信息交互使用QR碼作為可視渠道,這些QR碼都經(jīng)過(guò)加密,黑客截獲的QR碼如果沒(méi)有對(duì)應(yīng)密鑰或者過(guò)期,得到的也只是沒(méi)有意義的加密文本。
本文提出了一種基于雙因素認(rèn)證的低成本移動(dòng)支付方案,同時(shí)運(yùn)用對(duì)稱加密與非對(duì)稱加密算法、加密QR碼,提高支付安全性。采用QR碼作為可視通信渠道,提高便捷性。交易信息傳輸使用加密QR碼、基于SSL的Web通信和公私鑰生成的數(shù)字簽名。手機(jī)上的敏感信息全部經(jīng)過(guò)用戶密碼加密存儲(chǔ)。整個(gè)支付方案結(jié)構(gòu)簡(jiǎn)單,使用開(kāi)源的開(kāi)發(fā)組件,適用于一般通信基礎(chǔ)設(shè)施和信息科技水平不高的地區(qū)。但是本文提出的支付方案也存在一些不足,例如,對(duì)于移動(dòng)終端來(lái)說(shuō),沒(méi)有考慮移動(dòng)終端上的惡意應(yīng)用或系統(tǒng)漏洞帶來(lái)的風(fēng)險(xiǎn),該移動(dòng)支付方案僅僅保證了支付過(guò)程本身安全性。下一步的工作是對(duì)整個(gè)方案進(jìn)行更徹底的安全性測(cè)試,擴(kuò)大支付方案的應(yīng)用范圍,深入研究應(yīng)用場(chǎng)景和充分收集客戶使用的反饋,不斷評(píng)估、改善支付方案。
[1]戴宏.移動(dòng)支付系統(tǒng)安全風(fēng)險(xiǎn)評(píng)估[D].北京:北京交通大學(xué),2010.
[2]張璇,林逸風(fēng),白川,等.基于貝葉斯網(wǎng)絡(luò)的移動(dòng)支付風(fēng)險(xiǎn)評(píng)估模型[J].計(jì)算機(jī)工程與應(yīng)用,2014,50(5):60-64.
[3]韓皓辰,柴洪峰,魯志軍,等.移動(dòng)支付領(lǐng)域安全標(biāo)準(zhǔn)的適用性研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(5):316-319.
[4]劉亮.基于公鑰密碼體制的移動(dòng)支付安全協(xié)議研究[D].成都:西南交通大學(xué),2013.
(作者單位:農(nóng)業(yè)銀行南京江寧支行)