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