孫青青,陳豪爾,董釗月,溫哲乾
(合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,合肥 230000)
現(xiàn)階段,QR二維碼由于其方便快捷、成本低等特點(diǎn),已經(jīng)廣泛應(yīng)用于各個(gè)領(lǐng)域,以QR二維碼信息技術(shù)為媒介的移動(dòng)支付[1]也成了近年來(lái)新興的一種便捷支付的手段。然而,短時(shí)間內(nèi)發(fā)展起來(lái)的二維碼[2]必然存在諸多局限性和安全隱患,并不能滿(mǎn)足支付過(guò)程的安全性要求,賬戶(hù)資金失竊和個(gè)人信息泄露的情況時(shí)有發(fā)生。因?yàn)槲覀儽仨氈匾昋R碼支付[3]過(guò)程中的各項(xiàng)安全隱患,并致力于通過(guò)技術(shù)手段來(lái)保障支付過(guò)程的安全性。
目前,在現(xiàn)有的支付系統(tǒng)中,并不包含簽名模塊,這就使得商家端的身份得不到根本的保證,因而才會(huì)有部分平臺(tái)的電商假貨橫飛的現(xiàn)象。而對(duì)于個(gè)人轉(zhuǎn)賬的支付模塊來(lái)說(shuō),現(xiàn)有的支付系統(tǒng)中,當(dāng)向?qū)Ψ接脩?hù)轉(zhuǎn)賬時(shí),會(huì)發(fā)現(xiàn)被轉(zhuǎn)賬方的個(gè)人信息包括姓名、手機(jī)號(hào)出于隱私都會(huì)被遮擋一部分。這就會(huì)給不法分子可乘之機(jī),通過(guò)篡改二維碼信息來(lái)進(jìn)行身份的偽造,造成用戶(hù)的損失。所以開(kāi)發(fā)出一種適用性強(qiáng)、安全性高的支付方案就顯得尤為重要。
本文提出一種基于多場(chǎng)景認(rèn)證的移動(dòng)支付方案[4],使用數(shù)字簽名和動(dòng)態(tài)口令進(jìn)行商家端與用戶(hù)端的身份驗(yàn)證,最終完成支付交易。QR安全支付是一個(gè)系統(tǒng)過(guò)程,需要商家端、用戶(hù)端和支付網(wǎng)關(guān)三方合理搭配運(yùn)用各種安全手段和機(jī)制,才能在享受二維碼便利性的同時(shí)最大限度實(shí)現(xiàn)安全支付。
本文主要針對(duì)于兩種二維碼支付場(chǎng)景模式:向商家付款支付模式和向個(gè)人轉(zhuǎn)賬支付模式。
向商家付款,也就是我們?cè)谌粘Y?gòu)物常用到的掃碼支付。用戶(hù)想要購(gòu)買(mǎi)商品時(shí),商家端(假設(shè)是某一購(gòu)物網(wǎng)頁(yè))就會(huì)彈出二維碼支付頁(yè)面,出示的二維碼有該商家的簽名認(rèn)證,用戶(hù)只需要掃描該二維碼即可得到商家的信息,通過(guò)解析QR碼中的簽名再?zèng)Q定是否付款。
向個(gè)人轉(zhuǎn)賬,一般用于用戶(hù)與小商家或者普通用戶(hù)之間,他們都是以普通用戶(hù)的身份出示二維碼,所以在這種情況下有時(shí)候就需要?jiǎng)討B(tài)口令來(lái)確認(rèn)身份。用戶(hù)可以自行選擇是否確認(rèn)對(duì)方的身份。
在整個(gè)支付流程中,本文主要涉及的對(duì)象有三個(gè):用戶(hù)端、商家、支付網(wǎng)關(guān)。本文在兩種情況下都是對(duì)主動(dòng)掃碼進(jìn)行安全性保護(hù)。用戶(hù)端是基于A(yíng)ndroid端的掃碼軟件,商家端、普通用戶(hù)端產(chǎn)生相應(yīng)的二維碼。支付網(wǎng)關(guān)(Payment Gateway,簡(jiǎn)稱(chēng)PG)是一個(gè)可信的第三方,用于處理用戶(hù)和商家之間的支付交易[5]。
(1)向商家轉(zhuǎn)賬場(chǎng)景流程如圖1所示,當(dāng)用戶(hù)提出購(gòu)物需求需要掃碼時(shí),商家產(chǎn)生支付信息傳送給網(wǎng)關(guān),并產(chǎn)生帶有RSA簽名[6]的QR支付碼,其中QR碼中嵌有商家的相關(guān)基本信息;商家將產(chǎn)生的QR碼發(fā)送給用戶(hù);用戶(hù)收到QR碼并進(jìn)行本地驗(yàn)證;并根據(jù)支付網(wǎng)關(guān)的解析結(jié)果來(lái)自行選擇是否繼續(xù)付款。
圖1 商家轉(zhuǎn)賬場(chǎng)景下的支付流程
(2)個(gè)人轉(zhuǎn)賬場(chǎng)景流程如圖2所示,用戶(hù)1通過(guò)掃碼軟件獲得用戶(hù)2的信息,并將其發(fā)送給支付網(wǎng)關(guān)解析;支付網(wǎng)關(guān)得到信息后給用戶(hù)2發(fā)送動(dòng)態(tài)口令驗(yàn)證碼;用戶(hù)2收到驗(yàn)證碼后將驗(yàn)證碼交給用戶(hù)1;用戶(hù)1輸入驗(yàn)證碼后即支付成功。
圖2 個(gè)人轉(zhuǎn)賬場(chǎng)景下的支付流程
(1)產(chǎn)生簽名模塊
為了實(shí)現(xiàn)商家的身份認(rèn)證,本文采取了RSA簽名的方法。商家端在QR碼生成模塊,利用自己的私鑰將簽名嵌入到了QR碼中,這既證明了該筆支付訂單信息是由自己產(chǎn)生的,又防范了其他攻擊者對(duì)QR碼的篡改行為。QR碼中共包含訂單信息、公鑰和簽名三類(lèi)信息。因而用戶(hù)端在支付時(shí)便可確認(rèn)商家的信息是否可信,繼而決定是否繼續(xù)完成支付。由于簽名具有不可抵賴(lài)性,這樣買(mǎi)家就能夠確認(rèn)商家的身份,避免了以后可能發(fā)生的支付經(jīng)濟(jì)糾紛。
(2)認(rèn)證簽名模塊
在一次QR支付中,用戶(hù)通過(guò)攝像頭獲取商家二維碼信息并解碼,本地服務(wù)器需要通過(guò)用公鑰解密簽名來(lái)驗(yàn)證,只要簽名驗(yàn)證不合格,那么此次QR支付將以失敗而告終,相反,若簽名驗(yàn)證通過(guò),則會(huì)提示簽名驗(yàn)證通過(guò)并進(jìn)入下一輪支付環(huán)節(jié)。
此外,在商家簽名認(rèn)證環(huán)節(jié)中,由于QR碼里不但擁有數(shù)字簽名,而且還嵌入了其他的安全因素,例如Base64編碼,所以用戶(hù)在得到商家簽名之前,還需要經(jīng)過(guò)Base64解碼,才能進(jìn)入到真正的簽名認(rèn)證環(huán)節(jié)。
整個(gè)商家簽名模塊的具體細(xì)節(jié)示意如表1所示。
表1 商家簽名模塊
個(gè)人轉(zhuǎn)賬是基于面對(duì)面的轉(zhuǎn)賬模式,并且采用動(dòng)態(tài)口令的形式。當(dāng)我們主動(dòng)掃碼進(jìn)行支付的時(shí)候,支付端會(huì)發(fā)送驗(yàn)證碼到對(duì)方的設(shè)備,我們可以因此確認(rèn)我們需要轉(zhuǎn)賬的用戶(hù)的安全性與可靠性。
(1)限額管理
在個(gè)人的轉(zhuǎn)賬過(guò)程中,用戶(hù)掃描被付款方二維碼。在此之前,用戶(hù)可自行設(shè)置所允許的最大的轉(zhuǎn)賬額度,若在轉(zhuǎn)賬的過(guò)程中額度超過(guò)所設(shè)置的值,則支付網(wǎng)關(guān)會(huì)自行向?qū)Ψ绞謾C(jī)發(fā)送短信,對(duì)方出示后該用戶(hù)將驗(yàn)證信息輸入驗(yàn)證框便可確認(rèn)身份安全。
(2)動(dòng)態(tài)口令驗(yàn)證
在現(xiàn)有的支付技術(shù)中,通常只有用戶(hù)希望驗(yàn)證對(duì)方身份的情況下才會(huì)點(diǎn)開(kāi)身份認(rèn)證去驗(yàn)證對(duì)方的身份。而且在驗(yàn)證的界面,對(duì)方用戶(hù)的姓名和手機(jī)號(hào)的中間部分都進(jìn)行了打碼處理,所以可以偽造個(gè)人用戶(hù)的姓名。所以即使我們?cè)隍?yàn)證的時(shí)候補(bǔ)全了對(duì)方姓名也無(wú)濟(jì)于事。
所以本系統(tǒng)運(yùn)用了一種動(dòng)態(tài)口令機(jī)制,即可以通過(guò)動(dòng)態(tài)口令的現(xiàn)場(chǎng)驗(yàn)證,完成身份的確認(rèn)。在支付時(shí),支付網(wǎng)關(guān)將會(huì)給用戶(hù)2發(fā)送動(dòng)態(tài)口令短信驗(yàn)證碼,用戶(hù)2會(huì)對(duì)用戶(hù)1展示收到的驗(yàn)證碼以證明他是此手機(jī)號(hào)的機(jī)主,用戶(hù)1輸入即可完成手機(jī)的動(dòng)態(tài)口令認(rèn)證,這樣既實(shí)現(xiàn)了隱私保護(hù),又利用了支付網(wǎng)關(guān)數(shù)據(jù)庫(kù)進(jìn)行了身份認(rèn)證。
個(gè)人用戶(hù)動(dòng)態(tài)口令驗(yàn)證模塊的具體細(xì)節(jié)示意如表2所示。
表2 用戶(hù)動(dòng)態(tài)口令驗(yàn)證模塊
為了測(cè)試系統(tǒng)的可用性和安全性,我們對(duì)基于該支付方案完成的系統(tǒng)進(jìn)行了如下的系統(tǒng)模塊測(cè)試,并將測(cè)試內(nèi)容列舉如表3所示。
(1)驗(yàn)證商家簽名
①正向測(cè)試:正確的商家簽名信息——顯示驗(yàn)證成功。如圖3所示。
圖3 商家簽名正向測(cè)試
②反向測(cè)試:篡改商家簽名信息——顯示亂碼,無(wú)法辨認(rèn)結(jié)果。如圖4所示。
圖4 商家簽名反向測(cè)試
(2)驗(yàn)證動(dòng)態(tài)口令
①正向測(cè)試:輸入正確的動(dòng)態(tài)口令——顯示“驗(yàn)證通過(guò)”。如圖5所示。
圖5 動(dòng)態(tài)口令正向測(cè)試
②反向測(cè)試:輸入錯(cuò)誤的動(dòng)態(tài)口令——顯示“驗(yàn)證未通過(guò),請(qǐng)注意!”。如圖6所示。
圖6 動(dòng)態(tài)口令反向測(cè)試
在本文提出的基于QR支付模式的兩種場(chǎng)景中,分別對(duì)應(yīng)防范了幾種可能的攻擊行為。
(1)商家端可能是不法分子的偽造二維碼。在現(xiàn)有的支付系統(tǒng)中,不含簽名模塊,這就使得商家端的身份得不到根本的保證。任何人都可以偽造產(chǎn)生自身的二維碼。而在本系統(tǒng)中由于簽名具有不可抵賴(lài)性,這樣買(mǎi)家就能夠確認(rèn)商家的身份,避免了以后可能發(fā)生的支付經(jīng)濟(jì)糾紛。此外在現(xiàn)有的網(wǎng)上購(gòu)物系統(tǒng)中,例如淘寶商家端假貨橫飛,但是截至目前為止并沒(méi)有什么實(shí)質(zhì)性的防治措施。若利用該系統(tǒng)就能夠很好地抵制這種現(xiàn)象,如給予授權(quán)的正規(guī)商家簽名,其他非正規(guī)商家并沒(méi)有授予的簽名機(jī)制,當(dāng)用戶(hù)在掃描二維碼的時(shí)候,自會(huì)發(fā)覺(jué)解析的簽名是否符合,因而可以確認(rèn)該賣(mài)家是否正規(guī)。
表3 系統(tǒng)測(cè)試模塊
(2)用戶(hù)端二維碼被篡改。在現(xiàn)有的支付系統(tǒng)中,當(dāng)向?qū)Ψ接脩?hù)轉(zhuǎn)賬時(shí),會(huì)發(fā)現(xiàn)被轉(zhuǎn)賬方的個(gè)人信息包括姓名手機(jī)號(hào)出于隱私都會(huì)被遮擋一部分。這就會(huì)給不法分子可乘之機(jī),通過(guò)篡改二維碼信息來(lái)進(jìn)行身份的偽造,造成用戶(hù)的損失。因而在本文中,提出了一種動(dòng)態(tài)口令機(jī)制。當(dāng)用戶(hù)進(jìn)行轉(zhuǎn)賬時(shí),會(huì)發(fā)送動(dòng)態(tài)口令進(jìn)行認(rèn)證,這樣即使消息被篡改,不法分子也收不到相應(yīng)的認(rèn)證口令,因而計(jì)謀也無(wú)法得逞。所以在一定程度上保證了支付的安全。
總之,本研究方案在傳統(tǒng)的移動(dòng)安全支付手段的基礎(chǔ)上,針對(duì)于現(xiàn)在比較流行的QR支付,引入數(shù)字簽名,動(dòng)態(tài)口令等技術(shù),建立了更加完備的身份認(rèn)證系統(tǒng),多角度(商家端、用戶(hù)端、支付網(wǎng)關(guān))、多場(chǎng)景(基于商家和普通用戶(hù))實(shí)現(xiàn)了一套比較安全的QR安全支付體系。當(dāng)然本方案還有其他的優(yōu)勢(shì)所在。
(1)交易雙方身份的真實(shí)性。實(shí)現(xiàn)商家服務(wù)器與用戶(hù)端的認(rèn)證、用戶(hù)端與第三方支付的認(rèn)證。用戶(hù)端收到商家嵌有簽名的QR碼,能夠進(jìn)一步驗(yàn)證商家身份的真實(shí)性,第三方支付也能夠驗(yàn)證商家端身份是否可信。能夠確保整個(gè)支付流程在一定的可信域內(nèi)實(shí)施,有效地防范了二維碼被篡改的威脅。
(2)支付終端的安全性。超過(guò)一定限額時(shí)用戶(hù)在支付交易時(shí)需要使用動(dòng)態(tài)登錄口令,以此來(lái)對(duì)交易者的身份進(jìn)行確認(rèn),確保賬戶(hù)資金的安全。
(3)隱私保護(hù)。采用了Base64編碼使一般的解碼程序無(wú)法獲得交易數(shù)據(jù)。
本研究方案基于真實(shí)的QR安全支付流程,提出了一種基于多場(chǎng)景認(rèn)證的低成本移動(dòng)支付方案,從用戶(hù)端、商家端和支付網(wǎng)關(guān)三個(gè)端口對(duì)QR支付的商家和個(gè)人轉(zhuǎn)賬模式場(chǎng)景進(jìn)行了安全設(shè)計(jì),運(yùn)用簽名算法和動(dòng)態(tài)口令驗(yàn)證碼提高了QR支付的安全性。
整個(gè)支付方案結(jié)構(gòu)清晰,內(nèi)容完整,QR碼提供了便捷性,而加密算法等提高了支付的過(guò)程中的安全性。但是,本方案也存在著不足之處。例如,沒(méi)有考慮移動(dòng)終端上的惡意應(yīng)用或系統(tǒng)漏洞帶來(lái)的風(fēng)險(xiǎn),僅僅保證了支付過(guò)程本身的安全性。所以我們下一步的工作是繼續(xù)評(píng)估、完善整個(gè)方案的安全性,進(jìn)行更徹底的安全性測(cè)試,以期能得到社會(huì)的認(rèn)可并更好地服務(wù)于大眾。