一種基于nfc近場通信技術的移動支付裝置及其方法
【專利摘要】本發明公開了一種基于NFC近場通信技術的移動支付裝置及其方法,將NFC技術與硬件加密結合:本發明首次將NFC技術與硬件加密結合應用于移動終端支付領域,相比傳統的動態口令等軟件加密,安全性及可靠性更高;本發明的移動支付裝置,采用折疊式設計,在不使用時,將顯示屏折疊,放進移動支付裝置外殼中,占用空間小且對顯示屏進行了有效的保護,防止顯示屏在移動攜帶的過程中損壞。本發明的支付裝置體積小,易攜帶,可集成為一張帶液晶屏的卡片;本發明中,采用硬件加密的方式,將密鑰存儲在硬件內,能夠在硬件上保證私鑰的安全性,外界無法通過移動終端獲取支付裝置內的私鑰,降低了密鑰泄露的可能性,從而使得支付更加安全。
【專利說明】一種基于NFC近場通信技術的移動支付裝置及其方法
【技術領域】
[0001]本發明涉及一種基于NFC近場通信技術的移動支付裝置及其方法,屬于移動支付 【技術領域】。
【背景技術】
[0002]網絡購物模式的興起,帶動網上支付系統的發展,更便捷、更安全地進行在線支付 成為了所有用戶和商家追求的目標。作為網絡支付的里程碑,U盾使得用戶在計算機等相 對固定的平臺上能夠更快捷、安全的支付。而移動支付,則是未來支付的重要發展方向。
[0003]對于移動支付,其安全性是首先要解決的問題。目前,影響移動支付安全的主要因 素有以下幾個:
[0004](I)無線網絡的安全漏洞
[0005]在移動通信網絡中,移動設備與固定網絡信息中心之間的所有通信都通過無線接 口傳輸,而無線接口是開放的,任何擁有適當無線設備的人,均可以通過竊聽無線信道而獲 得傳輸信息,甚至可以修改、插入、刪除或重傳無線接口中傳輸的信息。
[0006](2)移動設備的安全隱患
[0007]移動設備的不安全因素主要表現在用戶身份、賬戶信息和認證密鑰丟失;移動設 備被攻擊和數據破壞;SIM卡被復制;RFID被解密等。目前的手機等移動終端普遍缺乏使用 RSA, AES等加解密算法的安全防護措施,同時在傳統的互聯網環境中,USB Key被廣泛地用 作這一用途。然而,在移動終端上對USB并沒有相應支持。
[0008]目前,現有技術中,移動終端(例如手機等)上的支付行為多采用短信驗證碼、動態 口令等形式,但是均存在缺陷:
[0009]短信驗證碼缺點:可靠性差,當手機信號不暢通時難以完成身份認證,甚至可能被 監聽者利用網絡延時進行數據竊取或攻擊。
[0010]動態口令缺點:需要生成動態口令的支付裝置與服務器時鐘完全一致,系統精度 要求高;應用成本較高,需要一臺額外的服務器接受來自認證服務器中繼的請求。
[0011]NFC近場通信技術(Near Field Communication, NFC),是一種短距離的高頻無線 通信技術,下兼容RFID (射頻識別),但與RFID有區別。NFC近場通信技術可以在單一芯 片上集成非接觸式讀卡器、非接觸式智能卡和點對點的通信功能,運行在13.56MHz的頻率 范圍內,都在大約IOcm范圍內建立設備之間的連接,傳輸速率可為106kbit/s,212kbit/s, 424kbit/s,甚至可提高到848kbit/s。NFC采用雙向識別和連接,通信雙方不存在固定的主 從關系,通信可以由任意一個NFC設備發起。
[0012]NFC設備工作模式有以下三種:
[0013]卡模式(Card emulation):該模式下NFC設備相當于一張采用RFID技術的IC卡, 可以用于商場刷卡、公交卡、門禁管制,車票,門票等場合。此種方式下,卡片通過非接觸讀 卡器的RF域來供電,即便是移動終端(如手機)處于關機狀態下也可以工作。
[0014]點對點模式(P2P mode):該模式可用于數據交換,傳輸距離較短,但傳輸速度快,功耗低。將兩個具備NFC功能的設備連接,可以實現如交換圖片、同步通訊錄等點對點數據 傳輸。
[0015]讀卡器模式(Reader/writer mode):作為非接觸讀卡器使用,典型應用場景為從 海報或者展覽信息電子標簽上讀取相關信息。
[0016]NFC設備之間傳輸數據的格式為NDEF (NFC Data Exchange Format,NFC數據 交換格式),NDEF是一種輕量級的緊湊二進制格式,能夠承載URL (網頁地址)等類型的數 據。設備間所傳遞數據則被稱為NdefMessage (NDEF消息)。每個NdefMessage中包含 若干NdefRecord (NDEF記錄),每條NdefRecord包含一個頭部(Header)和一個有效載荷 (Payload),記錄中的數據類型和大小由頭部注明,記錄內容可以是URL、MME (多用途互聯 網郵件擴展)或者NFC自定義的數據類型。若使用NFC定義的數據類型,載荷內容必須被定 義在一個NFC記錄類型定義(RTD )文檔中。
【發明內容】
[0017]本發明的目的是針對移動終端在進行移動支付時安全性及可靠性低、支付裝置攜 帶不方便、易受干擾等問題,提出一種基于NFC近場通信技術的移動支付裝置及其方法。本 發明實現了移動終端支付時的電子簽名和數字認證,采用硬件加密方式,確保交易的保密 性、真實性、完整性和不可否認性。
[0018]一種基于NFC近場通信技術的移動支付裝置,包括外殼、顯示屏、旋轉模塊、按鍵、 微處理器、第一 NFC模塊、供電模塊和開關;
[0019]移動終端內設有第二 NFC模塊;
[0020]外殼側面設有凹槽,旋轉模塊通過旋轉軸固定在外殼的凹槽內,顯示屏與按鍵固 定在旋轉模塊上,微處理器、供電模塊和第一 NFC模塊位于外殼內部;
[0021]顯示屏用于顯示支付信息顯示,按鍵用于查看顯示屏信息、確認支付、取消支付以 及重啟支付裝置;
[0022]開關位于外殼上,開關控制供電模塊對顯不屏、微處理器、第一 NFC模塊的供電;
[0023]供電模塊包括鋰電池和充電口,供電模塊利用鋰電池為顯示屏、微處理器、第一 NFC模塊供電,外界通過充電口對鋰電池充電;
[0024]微處理器包括控制模塊、硬件加密模塊;
[0025]硬件加密模塊內設有密鑰區,密鑰區內存儲有RSA私鑰,硬件加密模塊設有PIN碼 功能,通過PIN碼對支付裝置進行訪問控制;硬件加密模塊內設有哈希算法和RSA加解密算 法,能夠實現數據驗證、數據摘要、數據加解密和簽名;
[0026]控制模塊具有控制功能,用于控制顯示屏、按鍵及第一 NFC模塊與包含第二 NFC模 塊的移動終端之間的通信;
[0027]第一 NFC模塊與第二 NFC模塊之間采用NFC技術進行通信。
[0028]一種基于NFC近場通信技術的移動支付裝置的支付方法,包括以下內容:
[0029]移動終端向支付裝置發送數據的方法:
[0030]I)、移動終端通過用戶輸入或自動生成的方式,獲得一條或若干條需要發送的數 據,包括在雙向身份認證過程中為銀行端發送的隨機數以及Hash值;PIN碼認證過程中為 用戶輸入的PIN碼;還包括銀行發送的賬單信息,上述數據可為字符串、整數、浮點數或數組,非字符串類型數據在發送前轉換為字符串類型;
[0031]2)、移動終端通過getBytes ()函數將每一條數據都轉換為字節型數組byte □,即十六進制數據;
[0032]3)、移動終端將byte []類型的十六進制數據傳入NdefRecord(short tnf, byte [] type, byte [] id, byte [] payload)構造函數,得到NdefRecord類型對象,從而將每一條數據格式轉化為NdefRecord類型;構造函數中tnf為NDEF數據類型,type為數據格式的具體聲明,id為標識符的元數據,payload為要傳輸的數據內容;
[0033]4)、移動終端將 NdefRecord 類型數據傳入 NdefMessage (NdefRecord[]records) 構造函數,得到NdefMessage類型的數據,該數據中包含前述的一條或若干條NdefRecord 類型的數據,該類型的數據即為支持NFC功能的設備間進行通信時所使用的標準數據格式 NDEF,符合SNEP協議所要求的標準,為移動終端與裝置之間直接交互的內容;
[0034]支付裝置接收移動終端所發送數據的方法:
[0035]1)、支付裝置通過開關啟動電源后,調用rxNDEFPayloadO函數,使支付裝置處于等待數據的狀態,準備接收一個能夠匹配SNEP協議所規范的NdefMessage類型數據;
[0036]2)、當有數據信息傳來時,支付裝置首先檢測傳遞信息的設備能否支持點對點通信,若檢測通過則接收該數據;接收該數據時會先驗證數據完整性,若數據完整則將該數據存為NdefMessage類型;
[0037]3)、支付裝置通過getRecordO [i]函數從NdefMessage類型數據中提取之前移動終端中封裝好的若干條NdefRecord類型數據;
[0038]4)、支付裝置通過getNDEFChar ()函數,將NdefRecord類型數據轉化為char []; 在其末尾添加結束標識符,即可將其轉換為字符串;上述方式完成了從移動終端到支付裝置數據的傳遞;
[0039]支付裝置向移動終端發送數據的方法:
[0040]I)、支付裝置獲得一條或多條需要發送的數據,該數據由移動終端發送的數據經過解密以及數據比對后生成,包括數字簽名、身份認證是否通過的確認信息以及需要發送至移動終端的數據,上述數據可為字符串、整數、浮點數或數組,非字符串類型數據在發送前轉換為字符串類型;
[0041]2)、利用 createNDEFShortRecord (uint8_t%iessage, uint8_t payloadLength, uint8_ t*&NDEFMessage)函數,其中^message為要傳輸的數據內容,payloadLength為數據長度, NDEFMessage為要發送的NdefMessage類型數據;該函數首先填充NdefRecord的頭部,再將字符串數據添加為負載,實現將每一條字符串類型數據分別轉換為NdefRecord類型數據,并直接封裝為NdefMessage類型數據,同時返回數據長度txLength,用于判斷NdefMessage是否成功生成;
[0042]3)、利用 pushPayload (txNDEFMessagePtr, txLength)函數,其中 txNDEFMessagePtr 為要發送的Ndeflfessage數據,txLength為數據長度;該函數調用數據鏈路層中的 openNNPClientLink()函數,若連接成功建立則調用 clientLinkTxData((uint8_t*) snepMessage, Iength+SNEP_MESSAGE_HDR_LEN)函數,進行一次 NdefMessage 類型數據的發送;
[0043]移動終端接收支付裝置所發送數據的方法:[0044]I )、根據移動終端所包含的第二 NFC模塊的特性,若開啟NFC功能,當移動終端處 于屏幕點亮狀態并解鎖,移動終端一直處于等待接收消息狀態;
[0045]2)、當移動終端在能夠識別的范圍內檢測到支付裝置發送數據所產生的射頻場 時,自動接收支付裝置所發送的NdefMessage類型數據;
[0046]3)、通過getRecords () [i]函數,提取NdefMessage數據中包含的一條或若干條 NdefRecord數據,再通過getPay1adO函數得到byte []類型數據;
[0047]4)、將byte[]類型數據傳入String (byte [] data)構造函數,即可獲得字符串類型 數據;上述方式完成了從支付裝置到移動終端數據的傳遞。
[0048]一種基于NFC近場通信技術的移動支付裝置的支付方法,在移動終端上,使用支 付裝置進行支付的方法包括:
[0049]I)、用戶需要支付時,向銀行提交待支付賬單;
[0050]2)、在移動終端進行刷新,得到銀行推送給移動終端的賬單信息,點擊賬單進行支 付,同時將支付裝置貼于移動終端之后,移動終端提示“輸入PIN碼”,PIN碼輸入正確后,支 付裝置開始與銀行端服務器進行身份驗證;
[0051]3)、雙向身份認證過程中一共利用了兩對密鑰,其中一對設為Rl,另一對設為R2, 其中Rl的私鑰在支付裝置出廠時已被內置到支付裝置內,Rl的公鑰由銀行保存;支付裝置 利用Rl私鑰簽名,銀行利用Rl公鑰解密,驗證用戶身份;R2公鑰在用戶每次進行賬單請求 時,移動終端從銀行端獲取,R2的私鑰則由銀行保存;銀行利用R2私鑰簽名,移動終端利用 R2公鑰解密,驗證銀行身份,上述方式即實現了雙向身份認證;
[0052]銀行端服務器產生一個隨機數X及其Hash值,并用R2的私鑰對Hash值進行簽名 為密文A,通過socket通信將隨機數X與數字簽名一起發送給移動終端;移動終端收到隨 機數X和數字簽名后,用同樣的Hash算法對隨機數X計算出Hash值,然后與用移動終端從 銀行端獲取的R2公鑰對數字簽名進行解密解出的Hash值相比較;如兩Hash值相等則銀行 端身份得以確認;此后,移動終端將該隨機數X及其Hash值通過的第二 NFC模塊發送至支 付裝置;支付裝置得到隨機數X及其Hash值后,以預先和銀行約定好的隨機數生成算法,利 用隨機數X和預先和銀行約定好的其它信息,生成新的隨機數Y和相應的Hash值,再用Rl 私鑰簽名后發回銀行;此時銀行也以相同的算法計算新的隨機數Y ;銀行用Rl公鑰解密,并 驗證Hash值正確,銀行比較兩個新的隨機數是否相同,若均相同則支付裝置所有者的身份 得以確認,至此雙向認證完成;
[0053]4)、雙向身份認證成功后,移動終端及支付裝置會提示身份認證成功;此后,銀行 端利用Rl的公鑰對待支付賬單的商品名稱、金額、交易日期及流水號進行加密為密文B,然 后將密文B傳輸到移動終端上,再通過移動終端傳輸到支付裝置中,支付裝置使用Rl的私 鑰對接受到的密文B進行解密得到明文賬單信息,并將該明文所表示的待支付賬單的商品 名稱、金額、交易日期及流水號在顯示屏上顯示。此時,如果確認支付,按下顯示屏旁的確認 支付按鈕,如果取消支付,按下顯示屏旁的取消按鈕。確認支付后,支付裝置用Rl私鑰對 代表支付成功的命令進行數字簽名,通過支付裝置的第一 NFC模塊傳輸給移動終端的第二 NFC模塊,移動終端通過socket網絡通信將代表支付成功的命令及其數字簽名傳輸給銀行 端服務器,銀行端用Rl的公鑰解密數字簽名。若簽名信息無誤,則從該銀行賬戶扣去相應 金額,并返還已支付狀態的信息給移動終端;在移動終端上點擊刷新,該賬單狀態由待支付變為已支付。
[0054]本發明的優點在于:
[0055](I)將NFC技術與硬件加密結合:本發明首次將NFC技術與硬件加密結合應用于移動終端支付領域,相比傳統的動態口令等軟件加密,安全性及可靠性更高;
[0056](2)體積小:本發明的移動支付裝置,采用折疊式設計,在不使用時,將顯示屏折疊,放進移動支付裝置外殼中,占用空間小且對顯示屏進行了有效的保護,防止顯示屏在移動攜帶的過程中損壞。本發明的支付裝置體積小,易攜帶,可集成為一張帶液晶屏的卡片;
[0057](3)硬件加密移動支付方式-支付安全:本發明中,采用硬件加密的方式,將密鑰存儲在硬件內,能夠在硬件上保證私鑰的安全性,外界無法通過移動終端獲取支付裝置內的私鑰,降低了密鑰泄露的可能性,從而使得支付更加安全;
[0058](4)硬件加密移動支付方式-支付快捷:本發明中,采用硬件加密的方式,硬件加密的處理速度更快,從而使得支付更加快捷;
[0059](5) NFC通信-支付安全:由于手機等移動終端本身體積較小,如果使用數據線進行連接則使用時非常不方便,如果使用傳統的Wifi等無線方式,進行身份認證以及支付, 在安全方面可能會產生問題。本發明綜合考慮安全性與便捷性,采用NFC近場通信作為通信手段,同移動終端信息傳輸的距離近,速度快,使得竊聽者沒有機會截取支付裝置與移動終端信道中的信息。本發明充分利用了 NFC的特點,既利用其本身屬于無線連接的特性,實現了本發明移動支付裝置與移動終端的無線通信,滿足了簡潔性,也利用了其有效通信距離短這一特點加強了信道的安全性;
[0060](6)集成度高:本發明裝置的硬件電路自行設計,將獨立的液晶屏幕、按鍵、NFC模塊及核心微處理器集成化,充分利用嵌入式系統寶貴的硬件資源。
[0061](7)認證安全:銀 行端服務器和支付裝置之間能夠進行雙向數字認證,可防止釣魚網站和非法身份用戶的欺詐行為。
[0062](8)使用方便:本發明移動性好,便于攜帶,支付時只需將其貼于移動終端后側即可使用。
【專利附圖】
【附圖說明】
[0063]圖1是本發明的正視結構示意圖;
[0064]圖2是本發明的側視結構示意圖;
[0065]圖3是本發明與移動設備位置關系結構示意圖。
[0066]圖中:
[0067]1-外殼2-旋轉模塊3-顯示屏
[0068]4_按鍵5_微處理器6_第一 NFC模塊
[0069]7-第二 NFC模塊8-移動終端9_供電模塊
[0070]10-開關
【具體實施方式】
[0071]下面將結合附圖和實施例對本發明作進一步的詳細說明。
[0072]本發明是一種基于NFC近場通信技術的移動支付裝置,如圖1所示,包括外殼1、旋轉模塊2、顯不屏3、按鍵4、微處理器5、第一 NFC模塊6、供電模塊9和開關10 ;
[0073]第二 NFC模塊7位于移動終端8內。
[0074]外殼I側面設有凹槽,旋轉模塊2通過旋轉軸固定在外殼I的凹槽內,旋轉模塊2 能夠繞旋轉軸進行轉動,顯示屏3與按鍵4固定在旋轉模塊2上,微處理器5與第一 NFC模 塊6位于外殼I內部。
[0075]開關10控制供電模塊9對顯不屏3、微處理器5、第一 NFC模塊6的供電。
[0076]供電模塊9包括鋰電池和充電口,供電模塊9利用鋰電池為顯示屏3、微處理器5、 第一 NFC模塊6供電,供電模塊9提供充電功能,可以利用充電口對鋰電池充電。
[0077]本發明采用鋰電池供電,電池壽命長且能夠有效減小裝置體積,使得本發明的支 付裝置攜帶更加方便。
[0078]微處理器5包括控制模塊、硬件加密模塊;
[0079]硬件加密模塊內設有密鑰區,密鑰區內存儲有RSA私鑰,硬件加密模塊設有PIN碼 功能,通過PIN碼對支付裝置進行保護。硬件加密模塊內設有哈希算法和RSA加解密算法, 能夠實現數據驗證、數據摘要、數據加解密和簽名。
[0080]所述RSA加解密算法為1024位及以上。
[0081]硬件加密模塊能夠實現RSA加解密運算,并保存支付裝置預置的私鑰,杜絕了密 鑰在移動終端8內存中出現的可能性,大大提高了安全性。
[0082]本發明的硬件加密模塊的加密方式中:
[0083]1、硬件PIN碼保護
[0084]黑客需要同時取得用戶的支付裝置硬件以及支付裝置的PIN碼,才可以進行支 付。即使用戶的PIN碼被泄漏,只要用戶持有的支付裝置不被盜取,合法用戶的身份就不會 被仿冒;如果用戶的支付裝置遺失,拾到者由于不知道用戶PIN碼,也無法仿冒合法用戶的 身份。
[0085]2、安全密鑰存儲
[0086]支付裝置的密鑰存儲于安全的密鑰區中,外部用戶無法直接讀取,對密鑰文件的 讀寫和修改都必須由支付裝置內的程序調用。從支付裝置接口的外面,沒有任何一條命令 能夠對密鑰區的內容進行讀出、修改、更新和刪除。
[0087]3、公鑰密碼體制
[0088]公鑰密碼體制和數字證書從密碼學的角度上保證了支付裝置的安全性。整個認證 過程利用了兩對密鑰Rl和R2,其中Rl的私鑰在支付裝置出廠時已被內置到支付裝置內, Rl的公鑰由銀行保存。支付裝置利用Rl私鑰簽名,銀行利用Rl公鑰解密,可以驗證用戶身 份。每次進行賬單請求時,移動終端從銀行端獲取R2公鑰,R2的私鑰則由銀行保存。銀行 利用R2私鑰簽名,移動終端利用R2公鑰解密,可以驗證銀行身份。上述方式即實現了雙向 身份認證。在支付裝置初始化的時候,先將密碼算法程序預置在微處理器的內存中,在用戶 得到支付裝置之前,系統已經將Rl私鑰(用于返還數據簽名及銀行Rl公鑰所加密數據的解 密)內置到支付裝置里面去,存儲于密鑰區,不允許外部訪問。進行數字簽名時以及非對稱 解密運算時,有密鑰參與的密碼運算只在芯片內部即可完成,全過程中密鑰可以不出支付 裝置介質,以此來保證以支付裝置為存儲介質的數字證書認證在安全上無懈可擊。
[0089]4、硬件實現加密算法[0090]支付裝置的微處理器5為高性能安全芯片,可以實現數據驗證、數據摘要、數據加 解密和簽名的各種算法,加解密運算在支付裝置內進行,保證了用戶密鑰不會出現在移動 終端內存中,不易出現信息泄露的問題。
[0091]微處理器5中的控制模塊具有控制功能,用于控制顯示屏3、按鍵4及第一 NFC模 塊6與包含第二 NFC模塊7的移動終端8之間的通信。
[0092]如圖3所示,用戶進行消費時,向銀行端提交待付款信息,待付款信息包括訂單 號、金額以及用戶所購物品的名稱,銀行端將待付款信息存于數據庫中。用戶通過移動終端 8進行支付時,銀行端推送待付款信息給移動終端8。支付裝置的第一 NFC模塊6與移動終 端8的第二 NFC模塊7貼緊,通過移動終端8輸入PIN碼,微處理器5的硬件加密模塊對 PIN碼進行驗證,驗證正確后,控制支付裝置與銀行端服務器進行身份驗證。
[0093]銀行端服務器產生一個隨機數X及其Hash值,并用R2的私鑰對Hash值進行簽名 為密文A,通過socket通信將隨機數X與數字簽名一起發送給移動終端。移動終端收到隨 機數X和數字簽名后,用同樣的Hash算法對隨機數X計算出Hash值,然后與用移動終端獲 取的R2公鑰對數字簽名進行解密解出的Hash值相比較。如兩Hash值相等則銀行端身份得 以確認。此后,移動終端將該隨機數X及其Hash值通過移動終端8的第二 NFC模塊7發送 至支付裝置。支付裝置得到隨機數X及其Hash值后,以一個事先和銀行約定好的隨機數生 成算法,利用隨機數X和一些其它信息(其他信息可為任意值,事先約定好即可),生成新的 隨機數Y和相應的Hash值,再用私鑰加密后發回銀行。此時銀行也以相同的算法計算新的 隨機數Y。銀行用Rl公鑰解密,并驗證Hash值正確,接下來銀行比較兩個新的隨機數是否 相同,若均相同則支付裝置所有者的身份得以確認。至此雙向認證完成。雙向身份認證成 功后,移動終端會提示身份認證成功。此后,銀行端利用Rl的公鑰對待支付賬單的商品名 稱、金額、交易日期及流水號等重要信息進行加密為密文B,然后將密文B傳輸到移動終端8 上,再通過移動終端8傳輸到支付裝置中,支付裝置使用Rl的私鑰對接受到的密文B進行 解密得到明文賬單信息,并將該明文所表示的待支付賬單的商品名稱、金額、交易日期及流 水號等重要信息在顯示屏3上顯示。
[0094]此時顯示屏3上顯示支付訂單號和訂單金額,通過按鍵4對顯示屏3顯示信息進 行查看,按鍵4包括上下翻頁按鈕、確定按鈕、取消按鈕、重啟按鈕,上下翻頁按鈕用于對顯 示屏3顯示信息翻頁,確定按鈕用于核對顯示信息正確后,用戶確認執行本次支付以及硬 件加密模塊進行數字簽名,取消按鈕用于取消本次支付,重啟按鈕用于重啟支付裝置。
[0095]用戶通過確認鍵進行數字簽名后,支付裝置生成代表支付成功的命令,并用Rl的 私鑰進行數字簽名,通過支付裝置的第一 NFC模塊6傳輸給包含第二 NFC模塊7的移動終端 8,移動終端8通過socket網絡通信將代表支付成功的命令及其數字簽名傳輸給銀行端服 務器,銀行端用Rl的公鑰解密數字簽名,若簽名信息無誤,則從該銀行賬戶扣去相應金額, 并返還已支付狀態的信息給移動終端,完成支付。
[0096]支付裝置的第一 NFC模塊6傳輸給移動終端8的第二 NFC模塊7之間進行數據交 換時主要利用了 NDEF、LLCP以及SNEP三個協議,第一 NFC模塊6的輸出信息為十六進制 數據,十六進制數據通過NDEF協議,形成NDEF格式數據,再進行SNEP協議打包,然后數據 通過NFC數據傳輸至第二 NFC模塊7,第二 NFC模塊7的接收信息經過SNEP協議解包得到 NDEF格式數據,通過NDEF協議,第二 NFC模塊7接收到十六進制數據。第二 NFC模塊7輸出數據,第一 NFC模塊6接收數據時,同上述過程。整個過程使用了 LLCP協議,以保證數據的可靠性。[0097]本發明通過對NFC技術的合理使用,克服了有線連接的連接復雜性與其他無線連接可能帶來的不安全性,保證了裝置整體的簡潔與安全。
[0098]移動終端向裝置發送數據的方法:
[0099]1、首先移動終端需要通過用戶輸入或自動生成等方式獲得一條或若干條需要發送的數據,包括在雙向身份認證過程中為銀行端發送的隨機數以及Hash值;PIN碼認證過程中為用戶輸入的PIN碼;還包括銀行發送的賬單信息,上述數據可為字符串、整數、浮點數或數組,非字符串類型數據在發送前轉換為字符串類型;
[0100]2、移動終端通過getBytes ()函數將每一條數據都轉換為字節型數組(byte[]), 其本質即為十六進制數據。
[0101]3、移動終端將2中所述byte []類型數據傳入NdefRecord (short tnf, byte [] type, byte [] id, byte [] payload)構造函數,得到NdefRecord類型對象,從而將每一條數據格式轉化為NdefRecord類型;構造函數中tnf為NDEF數據類型,type為數據格式的具體聲明,id為標識符的元數據,payload為要傳輸的數據內容;
[0102]4、移動終端將 3 中所述 NdefRecord 類型數據傳入 NdefMessage (NdefRecord[] records)構造函數,得到NdefMessage類型的數據,該數據中包含前述的一條或若干條 NdefRecord類型的數據,該類型的數據即為支持NFC功能的設備間進行通信時所使用的標準數據格式,符合SNEP協議所要求的標準,為移動終端與裝置之間直接交互的內容。
[0103]支付裝置接收移動終端所發送數據的方法:
[0104]1、支付裝置電源啟動后調用rxNDEFPayloadO函數,使支付裝置處于等待數據的狀態,準備接收一個能夠匹配SNEP協議所規范的NdefMessage類型數據;
[0105]2、當有數據信息傳來時,支付裝置首先檢測傳遞信息的設備能否支持點對點通信,若檢測通過則接收該數據。接收該數據時會先驗證數據完整性,若數據完整則將該數據存為NdefMessage類型;
[0106]3、支付裝置通過getRecordO [i]函數從NdefMessage類型數據中提取之前移動終端中封裝好的若干條NdefRecord類型數據;
[0107]4、支付裝置通過getNDEFChar ()函數,將NdefRecord類型數據轉化為char []。在其末尾添加結束標識符即可將其轉換為字符串;上述方式完成了從移動終端到支付裝置數據的傳遞。
[0108]支付裝置向移動終端發送數據的方法:
[0109]1、支付裝置首先獲得一條或多條需要發送的數據,該數據由移動終端發送的數據經過解密以及數據比對等過程后生成,包括數字簽名、身份認證是否通過的確認信息等上文所述需要發送至移動終端的數據,上述數據可為字符串、整數、浮點數或數組,非字符串類型數據在發送前轉換為字符串類型;
[0110]2、利用 createNDEFShortRecord(uint8_ _t*message,uint8_t payloadLength, uint8_ t*&NDEFMessage)函數,其中^message為要傳輸的數據內容,payloadLength為數據長度, NDEFMessage為要發送的NdefMessage類型數據;該函數首先填充NdefRecord的頭部,再將字符串數據添加為負載,實現將每一條字符串類型數據分別轉換為NdefRecord類型數據,并直接封裝為NdefMessage類型數據,同時返回數據長度txLength,用于判斷NdefMessage是否 成功生成;
[0111]3、利用 pushPayload (txNDEFMessagePtr, txLength)函數,其中 txNDEFMessagePtr 為要發送的Ndeflfessage數據,txLength為數據長度;該函數調用數據鏈路層中的 openNNPClientLink()函數,若連接成功建立則調用 clientLinkTxData((uint8_t*) snepMessage, Iength+SNEP_MESSAGE_HDR_LEN)函數,進行一次NdefMessage類型數據的發送。
[0112]移動終端接收裝置所發送數據的方法:
[0113]1、根據移動終端所包含的NFC模塊的特性,若開啟NFC功能,只要移動終端處于屏 幕點亮狀態并解鎖,移動終端就一直處于等待接收消息狀態;
[0114]2、當移動終端在能夠識別的范圍內檢測到裝置發送數據所產生的射頻場時,會自 動接收裝置所發送的NdefMessage類型數據;
[0115]3、通過getRecords () [i]函數,提取NdefMessage數據中包含的一條或若干條 NdefRecord數據,再通過getPay1adO函數得到byte[]類型數據;
[0116]4、將3中所述byte[]類型數據傳入String (byte [] data)構造函數,即可獲得字 符串類型數據;上述方式完成了從支付裝置到移動終端數據的傳遞。
[0117]在移動終端上,使用支付裝置進行完整支付的方法:
[0118]1、用戶需要支付時,在網頁瀏覽器上輸入銀行賬戶號,點擊確認支付賬單按鈕,然 后打開移動終端的軟件,輸入用戶名和密碼進行登錄(此時用戶名和密碼是和銀行服務器 數據庫里的存儲的數據相互匹配認證)。
[0119]2、登錄成功后,點擊刷新按鈕,可得到銀行推送給移動終端的賬單信息,點擊任一 條賬單進行支付,同時將支付裝置貼于移動終端后側,系統提示“輸入PIN碼”,PIN碼輸入 正確后,支付裝置開始與銀行端服務器進行身份驗證。
[0120]3、雙向身份認證過程中一共利用了兩對密鑰,其中一對設為Rl,另一對設為R2, 其中Rl的私鑰在支付裝置出廠時已被內置到支付裝置內,Rl的公鑰由銀行保存。支付裝 置利用Rl私鑰簽名,銀行利用Rl公鑰解密,可以驗證用戶身份。R2公鑰在用戶每次進行賬 單請求時,移動終端從銀行端獲取,R2的私鑰則由銀行保存。銀行利用R2私鑰簽名,移動 終端利用R2公鑰解密,可以驗證銀行身份。上述方式即實現了雙向身份認證。
[0121]銀行端服務器產生一個隨機數X及其Hash值,并用R2的私鑰對Hash值進行簽名 為密文A,通過socket通信將隨機數X與數字簽名一起發送給移動終端。移動終端收到隨 機數X和數字簽名后,用同樣的Hash算法對隨機數X計算出Hash值,然后與用移動終端從 銀行端獲取的R2公鑰對數字簽名進行解密解出的Hash值相比較。如兩Hash值相等則銀 行端身份得以確認。此后,移動終端將該隨機數X及其Hash值通過的第二 NFC模塊7發送 至支付裝置。支付裝置得到隨機數X及其Hash值后,以一個事先和銀行約定好的隨機數生 成算法,利用隨機數X和一些其它信息(其他信息可為任意值,事先約定好即可),生成新的 隨機數Y和相應的Hash值,再用Rl私鑰簽名后發回銀行。此時銀行也以相同的算法計算 新的隨機數Y。銀行用Rl公鑰解密,并驗證Hash值正確,接下來銀行比較兩個新的隨機數 是否相同,若均相同則支付裝置所有者的身份得以確認。至此雙向認證完成。
[0122]4、雙向身份認證成功后,移動終端及支付裝置會提示身份認證成功。此后,銀行端 利用Rl的公鑰對待支付賬單的商品名稱、金額、交易日期及流水號等重要信息進行加密為密文B,然后將密文B傳輸到移動終端上,再通過移動終端傳輸到支付裝置中,支付裝置使 用Rl的私鑰對接受到的密文B進行解密得到明文賬單信息,并將該明文所表示的待支付賬 單的商品名稱、金額、交易日期及流水號等重要信息在顯示屏3上顯示。此時按下顯示屏3 旁的確認支付按鈕(按下取消按鈕可以取消本次交易),移動終端則提示支付成功。并用Rl 的私鑰進行數字簽名,通過支付裝置的第一 NFC模塊6傳輸給移動終端的第二 NFC模塊7, 第一 NFC模塊6與第二 NFC模塊7采用NFC近場通信技術,移動終端通過socket網絡通信 將代表支付成功的命令及其數字簽名傳輸給銀行端服務器,銀行端用Rl的公鑰解密數字 簽名,若簽名信息無誤,則從該銀行賬戶扣去相應金額,并返還已支付狀態的信息給移動終 端,完成支付;在移動終端點擊刷新,該賬單狀態由待支付變為已支付。
[0123]本發明并不局限于實例中所描述的技術,它的描述是說明性的,并非限制性的,本 發明的權限由權利要求所限定,基于本【技術領域】人員依據本發明所能夠變化、重組等方法 得到的與本發明相關的技術,都在本發明的保護范圍內。
【權利要求】
1.一種基于NFC近場通信技術的移動支付裝置,其特征在于,包括外殼、顯示屏、旋轉模塊、按鍵、微處理器、第一 NFC模塊、供電模塊和開關;移動終端內設有第二 NFC模塊;外殼側面設有凹槽,旋轉模塊通過旋轉軸固定在外殼的凹槽內,顯示屏與按鍵固定在旋轉模塊上,微處理器、供電模塊和第一 NFC模塊位于外殼內部;顯示屏用于顯示支付信息顯示,按鍵用于查看顯示屏信息、確認支付、取消支付以及重啟支付裝置;開關位于外殼上,開關控制供電模塊對顯不屏、微處理器、第一 NFC模塊的供電;供電模塊包括鋰電池和充電口,供電模塊利用鋰電池為顯示屏、微處理器、第一 NFC模塊供電,外界通過充電口對鋰電池充電;微處理器包括控制模塊、硬件加密模塊;硬件加密模塊內設有密鑰區,密鑰區內存儲有RSA私鑰,硬件加密模塊設有PIN碼功能,通過PIN碼對支付裝置進行訪問控制;硬件加密模塊內設有哈希算法和RSA加解密算法,能夠實現數據驗證、數據摘要、數據加解密和簽名;控制模塊具有控制功能,用于控制顯示屏、按鍵及第一 NFC模塊與包含第二NFC模塊的移動終端之間的通信;第一 NFC模塊與第二 NFC模塊之間采用NFC技術進行通信。
2.根據權利要求1所述的一種基于NFC近場通信技術的移動支付裝置,其特征在于,所述RSA加解密算法為1024位及以上。
3.根據權利要求1所述的一種基于NFC近場通信技術的移動支付裝置,其特征在于,所述的按鍵包括上下翻頁按鈕、確定按鈕、取消按鈕、重啟按鈕,`上下翻頁按鈕用于對顯示屏顯示信息翻頁,確定按鈕用于核對顯示信息正確后,用戶確認執行本次支付以及硬件加密模塊進行數字簽名,取消按鈕用于取消本次支付,重啟按鈕用于重啟支付裝置。
4.根據權利要求1所述的一種基于NFC近場通信技術的移動支付裝置,其特征在于, 第一 NFC模塊與第二 NFC模塊之間的數據通信,利用了 NDEF、LLCP以及SNEP三個協議,第二 NFC模塊接收數據,第一 NFC模塊輸出數據時,第一 NFC模塊的輸出信息為十六進制數據,十六進制數據通過NDEF協議,形成NDEF格式數據,再進行SNEP協議打包,然后數據通過NFC數據傳輸至第二 NFC模塊,第二 NFC模塊的接收信息經過SNEP協議解包得到NDEF 格式數據,通過NDEF協議,第二 NFC模塊接收到十六進制數據;第二 NFC模塊輸出數據,第一 NFC模塊接收數據時與第二 NFC模塊接收數據,第一 NFC模塊輸出數據時過程相同。
5.一種基于NFC近場通信技術的移動支付裝置的支付方法,其特征在于,包括以下內容:移動終端向支付裝置發送數據的方法:I )、移動終端通過用戶輸入或自動生成的方式,獲得一條或若干條需要發送的數據,包括在雙向身份認證過程中為銀行端發送的隨機數以及Hash值;PIN碼認證過程中為用戶輸入的PIN碼;還包括銀行發送的賬單信息,上述數據可為字符串、整數、浮點數或數組,非字符串類型數據在發送前轉換為字符串類型;2)、移動終端通過getBytes ()函數將每一條數據都轉換為字節型數組byte [],即十六進制數據;3)、移動終端將byte []類型的十六進制數據傳入NdefRecord (short tnf, byte [] type, byte[] id, byte [] payload)構造函數,得到NdefRecord類型對象,從而將每一條數據格式轉化為NdefRecord類型;構造函數中tnf為NDEF數據類型,type為數據格式的具體聲明,id為標識符的元數據,payload為要傳輸的數據內容;4)、移動終端將 NdefRecord 類型數據傳入 NdefMessage (NdefRecord[]records)構造函數,得到NdefMessage類型的數據,該數據中包含前述的一條或若干條NdefRecord類型的數據,該類型的數據即為支持NFC功能的設備間進行通信時所使用的標準數據格式 NDEF,符合SNEP協議所要求的標準,為移動終端與裝置之間直接交互的內容;支付裝置接收移動終端所發送數據的方法:1)、支付裝置通過開關啟動電源后,調用rxNDEFPayloadO函數,使支付裝置處于等待數據的狀態,準備接收一個能夠匹配SNEP協議所規范的NdefMessage類型數據;2)、當有數據信息傳來時,支付裝置首先檢測傳遞信息的設備能否支持點對點通信,若檢測通過則接收該數據;接收該數據時會先驗證數據完整性,若數據完整則將該數據存為 NdefMessage 類型;3)、支付裝置通過getRecordO[i]函數從NdefMessage類型數據中提取之前移動終端中封裝好的若干條NdefRecord類型數據;4)、支付裝置通過getNDEFChar()函數,將NdefRecord類型數據轉化為char[];在其末尾添加結束標識符,即可將其轉換為字符串;上述方式完成了從移動終端到支付裝置數據的傳遞;支付裝置向移動終端發送數據的方法:1)、支付裝置獲得一條或多條需要發送的數據,該數據由移動終端發送的數據經過解密以及數據比對后生成,包括數字簽名、身份認證是否通過的確認信息以及需要發送至移動終端的數據,上述數據可為字符串、整數、浮點數或數組,非字符串類型數據在發送前轉換為字符串類型;2)、利用createNDEFShortRecord(uint8_t*message, uint8_t payloadLength, uint8_ t*&NDEFMessage)函數,其中^message為要傳輸的數據內容,payloadLength為數據長度,NDEFMessage為要發送的NdefMessage類型數據;該函數首先填充NdefRecord的頭部,再將字符串數據添加為負載,實現將每一條字符串類型數據分別轉換為NdefRecord 類型數據,并直接封裝為NdefMessage類型數據,同時返回數據長度txLength,用于判斷 NdefMessage是否成功生成;3)、利用pushPayload(txNDEFMessagePtr, txLength)函數,其中 txNDEFMessagePtr 為要發送的NdefMessage數據,txLength為數據長度;該函數調用數據鏈路層中的 openNNPClientLink ()函數,若連接成功建立則調用 clientLinkTxData ((uint8_t*) snepMessage, Iength+SNEP_MESSAGE_HDR_LEN)函數,進行一次 NdefMessage 類型數據的發送;移動終端接收支付裝置所發送數據的方法:1)、根據移動終端所包含的第二NFC模塊的特性,若開啟NFC功能,當移動終端處于屏幕點亮狀態并解鎖,移動終端一直處于等待接收消息狀態;2)、當移動終端在能夠識別的范圍內檢測到支付裝置發送數據所產生的射頻場時,自動接收支付裝置所發送的NdefMessage類型數據;3)、通過getRecordsO[i]函數,提取NdefMessage數據中包含的一條或若干條 NdefRecord數據,再通過getPay1adO函數得到byte []類型數據;4)、將byte[]類型數據傳入String(byte [] data)構造函數,即可獲得字符串類型數據;上述方式完成了從支付裝置到移動終端數據的傳遞。
6.一種基于NFC近場通信技術的移動支付裝置的支付方法,其特征在于,在移動終端上,使用支付裝置進行支付的方法包括:1)、用戶需要支付時,向銀行提交待支付賬單;2)、在移動終端進行刷新,得到銀行推送給移動終端的賬單信息,點擊賬單進行支付, 同時將支付裝置貼于移動終端后側,移動終端提示“輸入PIN碼”,PIN碼輸入正確后,支付裝置開始與銀行端服務器進行身份驗證;3)、雙向身份認證過程中一共利用了兩對密鑰,其中一對設為R1,另一對設為R2,其中 Rl的私鑰在支付裝置出廠時已被內置到支付裝置內,Rl的公鑰由銀行保存;支付裝置利用 Rl私鑰簽名,銀行利用Rl公鑰解密,驗證用戶身份;R2公鑰在用戶每次進行賬單請求時,移動終端從銀行端獲取,R2的私鑰則由銀行保存;銀行利用R2私鑰簽名,移動終端利用R2公鑰解密,驗證銀行身份,上述方式即實現了雙向身份認證;銀行端服務器產生一個隨機數X及其Hash值,并用R2的私鑰對Hash值進行簽名為密文A,通過socket通信將隨機數X與數字簽名一起發送給移動終端;移動終端收到隨機數 X和數字簽名后,用同樣的Hash算法對隨機數X計算出Hash值,然后與用移動終端從銀行端獲取的R2公鑰對數字簽名進行解密解出的Hash值相比較;如兩Hash值相等則銀行端身份得以確認;此后,移動終端將該隨機數X及其Hash值通過的第二 NFC模塊發送至支付裝置;支付裝置得到隨機數X及其Hash值后,以預先和銀行約定好的隨機數生成算法,利用隨機數X和預先和銀行約定好的其它信息,生成新的隨機數Y和相應的Hash值,再用Rl私鑰簽名后發回銀 行;此時銀行也以相同的算法計算新的隨機數Y ;銀行用Rl公鑰解密,并驗證 Hash值正確,銀行比較兩個新的隨機數是否相同,若均相同則支付裝置所有者的身份得以確認,至此雙向認證完成;4)、雙向身份認證成功后,移動終端及支付裝置會提示身份認證成功;此后,銀行端利用Rl的公鑰對待支付賬單的商品名稱、金額、交易日期及流水號進行加密為密文B,然后將密文B傳輸到移動終端上,再通過移動終端傳輸到支付裝置中,支付裝置使用Rl的私鑰對接受到的密文B進行解密得到明文賬單信息,并將該明文所表示的待支付賬單的商品名稱、金額、交易日期及流水號在顯示屏上顯示;此時,如果確認支付,按下顯示屏旁的確認支付按鈕,如果取消支付,按下顯示屏旁的取消按鈕,確認支付后,支付裝置則提示支付成功; 并用Rl私鑰對代表支付成功的命令進行數字簽名,通過支付裝置的第一NFC模塊傳輸給移動終端的第二 NFC模塊,移動終端通過socket網絡通信將代表支付成功的命令及其數字簽名傳輸給銀行端服務器,銀行端用Rl的公鑰解密數字簽名,若簽名信息無誤,則從該銀行賬戶扣去相應金額,并返還已支付狀態的信息給移動終端;在移動終端上點擊刷新,該賬單狀態由待支付變為已支付。
【文檔編號】H04L9/32GK103501191SQ201310366905
【公開日】2014年1月8日 申請日期:2013年8月21日 優先權日:2013年8月21日
【發明者】王越, 曹競超, 馮采, 楊復淮 申請人:王越, 曹競超, 馮采, 楊復淮