黃一平 梁梓辰 農麗萍 蘇檢德
1(廣西師范大學電子工程學院 廣西 桂林 541004) 2(廣西師范大學物理科學與技術學院 廣西 桂林 541004)
據互聯網第三方數據挖掘和分析權威機構艾媒咨詢發布的《2016-2017年中國手機安全市場年度研究報告》顯示,截至2016年第四季度,中國手機用戶規模已達5.39億人。截至2017年3月份我國移動支付用戶規模已經超過5億,73.3%的用戶非常關注手機支付財產安全。而當前,移動互聯網詐騙問題頻發,各種釣魚網站、木馬、病毒、偽基站等時刻威脅用戶的財產及信息安全,移動支付給人們的生活帶來便利的同時,也給用戶埋下了財產安全的重大隱患[1]。為此《中國人民銀行關于加強支付結算管理防范電信網絡新型違法犯罪有關事項的通知》中明確要求“除向本人同行賬戶轉賬外,銀行為個人辦理非柜面轉賬業務,單日累計金額超過5萬元的,應當采用數字證書等安全可靠的支付指令驗證方式。”
從中國人民銀行的發文中可以看出,智能手機的安全必將成為未來手機APP開發人員關注的熱點,而手機銀行客戶端安全形勢的日益嚴峻,僅憑安全軟件防護是遠遠不夠的[2]。
“用戶名+密碼”的傳統身份認證方式導致用戶敏感信息極易被竊取,為了增強各類系統的安全強度,在傳統“用戶名+密碼”基礎上引入第三方認證達到多因子身份認證的方式成為研究熱點,但也存在諸多不足[3]。傳統的音頻盾、藍牙盾等硬件數字證書類產品雖然可以為手機銀行客戶端提供雙因子安全認證,但由于其需要額外攜帶的不便捷性,在移動互聯網的應用中顯得極不協調,從而難被用戶廣泛接受和采用;而短信驗證碼方式的手機銀行客戶端安全性低,極易被木馬病毒攔截,從而導致賬戶資金被盜的現象時有發生,已然無法滿足銀行高端用戶的大額轉賬需求[4]。手機銀行客戶端通常運行在安卓或蘋果智能手機平臺上,因安卓應用程序第三方庫的大量使用,其操作權限被非法濫用現象也越來越嚴重,帶來許多安全問題[5]。本文研究的貼膜盾硬件數字證書,可以較好地解決安全與便捷之間的瓶頸。貼膜盾作為數字證書載體可以在手機銀行客戶端的終端植入硬件數字證書,以CA認證方式保證手機銀行客戶端交易數據的安全性;由于數字簽名擁有基于自己的簽名具有不可否認性,從而可以確定銀行交易已經簽署的事實;同時由于簽名難以偽造,從而確定了手機銀行交易的真實性[6]。可以滿足銀行等領域對交易的安全性及便捷性的要求,具有廣闊的應用發展前景。

圖1 貼膜盾硬件形態圖
貼膜盾實質是一張超薄的智能卡,內置操作系統和數字證書,具有標準卡、MICRO卡和NANO卡三種形態,全面兼容市面上的各類SIM卡大小,使用時以獨立形式與SIM卡貼合后內置于手機卡槽中。貼膜盾作為數字證書硬件載體把數字證書植入手機里,對手機銀行客戶端通過網絡傳輸的每筆交易信息進行加解密、數字簽名和簽名驗證,保證了信息的完整性、機密性和不可否認性[7],可以為各類移動應用提供身份認證和安全加密手段。作為一款內置式獨立硬件數字證書載體,貼膜盾比其他需要額外攜帶的硬件證書類產品,有著天然的易用性和便攜性優勢。其硬件形態如圖1所示。
在貼膜盾的各類應用中,其核心為貼膜盾操作系統,通過該操作系統,可以實現電子簽名和數據加解密等各類復雜的應用需求。
貼膜盾主要由國家密碼管理局批準的安全芯片組成,該芯片采用ARM處理器,支持SM2、SM3、SM4等多種國密算法,內部運行智能卡安全操作系統COS,可為手機銀行客戶端提供高效、安全、便捷的服務。其使用場景是與用戶手機的SIM卡貼合在一起,再裝回用戶的手機卡槽上,實現一個手機卡槽安裝兩個智能卡的目的。貼膜盾通過其COS的智能分發模塊,把屬于SIM卡操作的指令分發到SIM卡以保證手機與SIM卡原有的通信交互功能不變,同時接收屬于貼膜盾的安全認證數據,并利用貼膜盾的安全模塊對數據進行簽名等安全處理后返回給手機。利用這一機制,把貼膜盾當作SE模塊以硬件的形式植入手機,讓手機成為一個安全交易的信息終端。
貼膜盾的主要特征如下:
? 通過ISO7816接口進行通信;
? 實現SIM卡與手機之間的透明傳輸;
? 提供50 KB的證書存儲空間;
? 支持SM2、SM3、SM4國密標準算法;
? 支持X.509證書;
? 提供VM虛擬機,實現應用與COS分離;
? 提供PIN碼校驗、電子簽名使用到的簽名、驗簽及數據加解密接口。
在通用的網絡身份認證安全模型中,通常采用“雙因子認證”[8],即一個安全不可復制的設備和一個只有本人知道的秘密(PIN碼)。將貼膜盾作為一個安全的智能卡硬件載體,結合只有使用者知道的PIN碼認證方案剛好符合該模型特征。按照《中華人民共和國電子簽名法》,符合下列條件的簽名均將被視為可靠的電子簽名:
(1) 電子簽名制作數據用于電子簽名時,屬于電子簽名人專有;
(2) 簽署時電子簽名制作數據僅由電子簽名人控制;
(3) 簽署后對電子簽名的任何改動能夠被發現;
(4) 簽署后對數據電文內容和形式的任何改動能夠被發現[9]。
在本文研究的貼膜盾作為安全設備使用時,僅由電子簽名人控制,在使用私鑰簽名時,必須使用貼膜盾的PIN碼做卡內鑒權,連續輸入6次錯誤密碼后,卡內簽名功能將被鎖死,符合電子簽名法特征。在用戶使用貼膜盾前,需通過銀行柜臺在線申請生成國密的SM2非對稱密鑰對并植入數字證書。在交易過程中,客戶利用貼膜盾內部的SM2私鑰對每筆銀行交易進行數字簽名,然后加密發送給證書服務器進行驗簽,驗簽通過后再返回交易成功信息。手機銀行客戶端是移動互聯網中的剛需應用,其采用貼膜盾作為支付指令驗證方式,完全滿足人民銀行(銀發(2016)261號)文件的通知要求。
在當前移動支付網絡應用構架中,手機銀行主要由服務器應用域、CA域和手機銀行客戶端三大部分組成,其中服務器應用域是銀行涉及網絡業務的大前端,為手機銀行、PC網銀和短信銀行等提供接入和業務處理,接收客戶發送的各類操作請求,生成轉賬、繳費、理財和查詢等對應核心報文,發送至核心服務器的前置機;CA域管理證書數據,為應用服務器提供加解密、簽名驗證等證書管理服務,為證書下載終端生成數字證書等;證書下載終端部署于專用安全網絡中,為貼膜盾下載提供可信根證書等個性化數據;手機銀行客戶端主要為客戶提供轉賬、繳費、理財及各類交易查詢等銀行業務功能。其通信網絡構架如圖2所示。

圖2 手機銀行客戶端網絡架構
手機銀行客戶端通信系統主要由客戶端和服務器兩大部分組成,涉及到的具體業務流程主要包括往貼膜盾中下載數字證書、手機銀行客戶端與服務器前置通信、手機銀行客戶端與貼膜盾的通信這三大部分的安全設計。在互聯網身份安全認證模型中,要解決手機銀行客戶端通信交易安全,主要保證每筆交易確實是由交易本人發出并且是不可抵賴的,并且通信鏈路是安全的。本文將對這三部分的安全設計進行具體介紹。
2.3.1 貼膜盾數字證書下載的安全設計
貼膜盾作為硬件數字證書載體,硬件內的證書可以通過在線申請下載方式來完成。該方式可以在證書內包含個人身份信息,證書可以與個人信息直接綁定,同時證書有效期從用戶下載使用時開始,可以實現有效期與用戶使用日期同步。這一模式目前在各大銀行中均得到廣泛采用。貼膜盾在線申請證書的流程包括:
(1) 用戶先登錄手機銀行客戶端;
(2) 銀行應用服務器校驗用戶登錄信息,返回登錄結果;
(3) 手機銀行客戶端要求客戶輸入申請證書的授權碼,并通過安全中間件將用戶信息發送至貼膜盾,貼膜盾內生成SM2非對稱密鑰對,同時生成P10簽名證書請求;
(4) 客戶端將P10簽名證書請求和相關信息發送至互聯網應用服務器;
(5) 互聯網應用服務器校驗用戶授權碼,通過后將P10簽名證書請求發送至CA證書服務器;
(6) CA證書服務器根據P10簽名證書請求,生成帶有用戶信息的X509證書,通過P7包格式回送給手機銀行客戶端;
(7) 手機銀行客戶端將P7證書數據通過安全中間件寫入到貼膜盾中;
(8) 貼膜盾從P7提取X509證書和必要的信息,并將數據保存在貼膜盾中;
(9) 貼膜盾校驗證書合法性和有效性,并給客戶端返回校驗成功或失敗的狀態標志,完成證書簽發流程。
貼膜盾在線申請數字證書的流程圖如圖3所示。

圖3 貼膜盾在線申請數字證書的流程圖
從圖3中可以看出,在線申請數字證書方式中,在其生成的證書已經包含了個人信息,不同銀行對包含的信息要求不一樣,一般有姓名、賬號和身份證號碼等信息,實現貼膜盾內的硬件證書直接與用戶信息綁定。在上述流程中,CA服務器端通過貼膜盾提供的公鑰來校驗證書請求的正確性,同時貼膜盾也利用CA服務器的證書公鑰校驗證書來源的可靠性,雙方均進行了雙向認證,保證了寫入證書階段的完整性與可靠性。
2.3.2 手機銀行客戶端與服務器前置通信安全設計
手機銀行客戶端主要由手機銀行客戶端和貼膜盾組成。在手機銀行客戶端與服務器前置的通信安全設計中,主要考慮用戶登錄的安全及手機銀行交易數據的安全,下面將針對這兩個部分做設計。
1) 手機銀行客戶端登錄安全設計 在手機銀行客戶端登錄設計中,主要采用貼膜卡與服務器雙向認證方式登錄。通過在線申請證書方式實現個人身份信息與硬件證書綁定以后,就可以通過該方式登錄系統,其執行流程如下:
(1) 手機銀行客戶端向服務器發起證書登錄請求。
(2) 服務器收到登錄請求后,調用加密機生成隨機數,并調用CA的簽名驗簽服務器,使用CA二級證書對隨機數進行簽名,最后將隨機數和服務器簽名值返回手機銀行客戶端。
(3) 手機銀行客戶端將隨機數和服務器簽名值通過安全中間件發送至貼膜盾。
(4) 貼膜盾首先使用卡內對應的服務器證書對服務器簽名值進行校驗,確認該隨機數是由確信的應用服務器發出。校驗通過后,卡片使用自身證書的私鑰,對該隨機數進行簽名,得到貼膜盾簽名并返回給手機銀行客戶端。
(5) 手機銀行客戶端得到貼膜盾簽名值后,將其發送到銀行應用服務器。
(6) 銀行應用服務器將隨機數和貼膜盾簽名值發送到簽名驗簽服務器,驗證簽名的正確性。
(7) 應用服務器將登錄結果返回至手機銀行客戶端,完成登錄。
流程圖如圖4所示。

圖4 手機銀行客戶端證書登錄流程
登錄過程中使用雙向簽名確保隨機數是由正確的服務器發出,同時確保是擁有貼膜盾硬件證書的使用者登錄。
2) 手機銀行客戶端交易安全設計 為了保證手機銀行交易數據的完整性、安全性和抗抵賴性,在手機銀行客戶端主要采用PIN碼校驗技術,校驗通過后再對交易信息在貼膜盾內調用私鑰進行數字簽名。將簽名值發送給證書服務器進行驗簽,同時貼膜盾也驗證服務器返回的簽名信息,確保每筆交易均是正確的發起人發起。其流程如下:
(1) 手機銀行客戶端向應用服務器發起交易預提交請求,預提交包含內含有轉賬金額,收款人戶名、賬號等信息;
(2) 應用服務器生成隨機數,調用簽名驗簽名服務器,對預提交報文和隨機數進行簽名,同時調用加密機對預提交報文加密,并將數據返回手機銀行客戶端;
(3) 手機銀行客戶端收到數據后對比內容是否一致,并將數據發送至貼膜盾,貼膜盾驗證服務器對預提交數據的簽名,通過后使用貼膜盾內部對應的私鑰對預提交數據進行簽名,將簽名數據返回給手機銀行客戶端;
(4) 手機銀行客戶端向服務器發起交易確認提交,把交易原文和簽名值發送到服務器;
(5) 服務器調用簽名驗簽服務器,對發送上來的數據進行校驗,返回交易結果。
簽名流程保證了交易數據的完整性和抗抵賴性,防止交易數據在復雜的網絡環境傳輸的過程中被篡改,同時通過加入隨機數,防止簽名重放攻擊。
手機銀行客戶端交易數據的簽名和驗簽流程圖如圖5所示。

圖5 手機銀行交易數據簽名和驗簽流程
2.3.3 手機銀行客戶端與貼膜盾通信安全設計
手機銀行客戶端與貼膜盾的通信主要采用安全中間件來實現,安全中間件為手機銀行應用提供訪問貼膜盾的接口,完成手機銀行客戶端登錄及交易簽名所需的貼膜盾操作,同時采用安全權限控制防止貼膜盾被非法進入。安全中間件的軟件組成框圖如圖6所示。

圖6 安全中間件軟件組成圖
安全中間件主要由API接口、通道管理、安全狀態控制和分散密鑰存儲四個部分組成,各部分具體功能如下:
(1) API接口:為手機銀行客戶端提供調用貼膜盾的入口,通過該API接口,APP可以調用到貼膜盾中的加密、解密和簽名驗簽等操作。
(2) 通道管理:手機銀行客戶端通過API接口訪問貼膜盾時,其交互的數據需要先通過通道管理模塊進行加解密和MAC校驗,保證通信數據的保密性和完整性。按照銀行安全級別,通常采用國密SM4算法對通信數據進行加解密運算和MAC校驗運算,在運算前需先從安全狀態控制模塊提取當前內容的權限控制,然后再從分散密鑰存儲模塊中提取出對應的控制密鑰進行處理。具體通信加解密的流程圖如圖7所示。

圖7 通信加解密流程圖
(3) 安全狀態控制:安全狀態控制模塊負責發起權限認證和判斷當前運行的手機銀行客戶端訪問的API接口是否達到指定的安全條件。貼膜盾的認證安全狀態存儲在安全狀態寄存器中,當前安全狀態主要通過被認證密鑰的狀態進行設置,如外部認證、內部認證或PIN碼認證等,初始化時安全狀態寄存器的所有安全狀態位都為0,當某認證密鑰認證通過后,對應的狀態位將被置1,如果認證失敗,則對應的安全狀態位置0。
(4) 分散密鑰存儲:手機銀行客戶端訪問貼膜盾時需要先使用對應的內部和外部認證密鑰校驗貼膜盾和手機銀行的合法性,此時需要外置存儲密鑰,本文采用Shamir門限密鑰共享方案對密鑰進行分散存儲,保護通信密鑰在智能手機中的存儲安全[10]。其密鑰分散初始化流程如下:
(1) 貼膜盾先根據請求生成對應的通信密鑰;
(2) 在貼膜盾內隨機生成t-1個元素a1,a2,…,at-1,構建如下多項式:
f(x)=K+a1x+a2x2+…+at-1xt-1
(1)
(3) 從密碼沙盤中選擇n個位置xn,代入多項式,計算出(x1,y1),(x2,y2),…,(xt-1,yt-1);
安全中間件將從貼膜盾中導出的yn存儲到xn對應的位置得到沙盤文件,并導出沙盤文件;
(4) 安全中間件存儲沙盤文件,完成密鑰分散。
通信密鑰分散初始化操作流程如圖8所示。

圖8 通信密鑰分散初始化流程圖
密鑰合成流程:
(1) 安全中間件從貼膜盾中讀取t個隨機選取的含有密鑰信息的位置;
(2) 安全中間件從沙盤中讀取貼膜盾要求的t個位置,得到(x1,y1),(x2,y2),…,(xt,yt);
(3) 將(x1,y1),(x2,y2),…,(xt,yt)代入式(2)即可恢復得到多項式(3):
(2)
f(x)=K+a1x+a2x2+…+at-1xt-1
(3)
(4) 求f(0)=K,得到通信使用的臨時密鑰。
密鑰合成流程圖如圖9所示。

圖9 密鑰合成流程圖
(1) 從安全的角度上看,將貼膜盾作為智能IC卡硬件平臺的安全載體,在其內部植入經過CA認證的數字證書后,在使用過程中通過貼膜盾的PIN碼利用盾內數字證書進行電子簽名,具有抗抵賴性。貼膜盾內部包含了密碼加密芯片,其SM2非對稱密鑰在貼膜盾中產生并存儲,且簽名、加解密都在貼膜盾中操作,具有較高的安全性,可以有效防范各種釣魚網站、木馬、病毒和偽基站的威脅,滿足銀行高凈值人群的安全需求。
(2) 從便捷的角度上看,貼膜盾采用超薄貼片工藝,可以直接與手機SIM卡貼合后放入到手機卡槽中,兼容安卓和蘋果兩大手機系統,無需額外外帶,滿足現代人對移動支付的便捷需求。
利用貼膜盾對手機銀行客戶端的交易進行電子簽名和加解密通信,可以在安卓和蘋果智能手機上運行。以硬件安全載體實現數字證書的PKI安全需求,可以有效地提高手機銀行客戶端的安全性和交易的抗抵賴性,并且簡單易用,不需額外攜帶安全設備,與手機很好地融為一體,在各個安全領域得到了廣泛的應用。在金融領域,為了保護手機銀行APP交易的安全,利用貼膜盾對待交易數據進行電子簽名,在簽名前需客戶輸入貼膜盾的PIN碼,只有PIN碼校驗通過后方能進行簽名操作,安全易用。在移動警務領域,原有的TF安全加密卡需要占用移動終端的一個SIM卡卡槽,而利用貼膜盾既可以解決TF卡占用卡槽的問題,又可以實現安全可靠的網絡身份認證機制和網絡身份標識,為構建基于4G的新一代公安移動警務提供了可能。貼膜盾在手機銀行客戶端的應用效果如圖10所示。

圖10 手機銀行客戶端應用效果圖
本文提出的以貼膜盾為硬件數字證書平臺,通過安全中間件將手機銀行客戶端的待交易數字發送給貼膜盾進行數字簽名保護交易安全的方法。從技術上解決了傳統音頻盾、藍牙盾、動態令牌等因需要額外攜帶設備的問題,比傳統短信驗證碼手機銀行具有更高的安全性且易于推廣使用。該方法在金融、電子政務、移動警務等領域已被應用于實際的產品開發中,如貼膜盾手機銀行、貼膜盾語音加密及相關系列產品中,具有廣闊的應用前景。同時,在移動互聯網+的背景下,國家對安全需求越來越高,安全但不便捷的產品,很難被用戶接受;便捷但不安全的產品同樣也不符合國家的政策要求。因此,本文的貼膜盾硬件數字證書方案有效地滿足了這一需求,解決了安全與便捷的應用瓶頸。本文提供的設計方法,對從事安全開發的技術人員在方案選型及研發方面可以提供有用的借鑒意義,從而促進手機移動支付產業的進一步發展。