【導讀】手機支付是指允許移動用戶通過手機對所消費的商品或者服務進行賬務支付的一種服務方式。移動支付產業屬于新興產業,有非常廣闊的發展前景。而一旦提起移動支付,電子收據就勢在必行。目前在北美,電子收據的研發已經成熟,并走向了市場。
一 簡介
1.1 電子支付與電子收據
隨著互聯網以及移動終端技術的發展,手機支付技術將會越來越流行。
與紙質收據相比,電子收據具有不可比擬的優勢。紙質收據不但浪費資源而且制造“垃圾”,而且非常礙事,不利于保存,容易遺失或者損壞。而電子收據保存簡單,只需要存儲在手機的存儲器中,也可以導出存儲到別的存儲介質中保存。使用電子收據也將非常簡單,一切都是電子化的過程,用戶只需要提供自身的帳號信息就能夠使用票據。
一旦手機支付流行起來,就像谷歌錢包一樣,電子收據將會形成一種模式。為了保證電子收據服務的可靠性和可用性,電子收據需要使用一種簽名算法。這種簽名算法需要快速、安全。電子簽名必須具有不可抵賴性和不可仿冒性。
1.2 電子收據
本項目所實現的技術是面向移動支付服務中的一個必要環節:電子收據憑證。電子收據的核心部分是數字簽名技術。使用數字簽名技術需要三方的參與:可信第三方(仲裁)、商家以及消費者。所有使用電子收據服務的商家事先公布必要的簽名信息(公鑰)。消費者消費之后從商家獲得電子收據,并從可靠的第三方獲得商家的公鑰,從而驗證該收據的有效性。由于電子簽名的不可偽造性,消費者之后能夠利用可信第三方的信息和自己手機存儲器上的收據信息來證明消費的單據,從而維護自己的權益。
二 基于彩虹算法的數字簽名技術
2.1 數字簽名介紹
數字簽名是一中認證機制,它使得消息的產生著可以添加一個起簽名作用的碼字。通過計算消息的散列值并用產生者的私鑰加密散列值來生成簽名。簽名保證了消息的來源和完整性。
數字簽名可以用于雙向認證和單向認證。雙向認證使得通信的雙方對相互的身份感到放心,并交換會話密鑰。而單向認證的時候,接收方能夠確保消息的確來源于發送方,而且發送方無法抵賴層放松的消息。
數字簽名包含幾個特征:簽名能夠驗證簽名者、簽名日期和時間;簽名能夠驗證被簽的消息內容;簽名能夠由第三方仲裁,以解決爭執。
一個能夠應用的數字簽名算法需要滿足以下幾個最基本的條件:產生和識別簽名是容易的;偽造簽名是不可能的;保存簽名備份是可行的。
2.2 數字簽名安全性與不可抵賴性
在本項目中,使用數字簽名的作用是使電子收據的接受方(消費者)能夠確認收據來源的權威性,而且使商家不能夠抵賴已進行的交易,以電子票據的方式保護消費者的權益。
由于數字簽名的不可偽造性,當發現爭執的時候,消費者能夠用保存在終端(手機)之中的消費數據中的簽名,證明消費過程和權益。數字簽名和普通的紙質票據具有同樣的法律效力,且數字簽名具有易攜性和非易失性的特點,必會在將來得到大規模的應用。
2.3 簽名的過程
在本項目簽名的過程中涉及到商家(發送方),消費者(接收方),可能還涉及到第三方仲裁者。我們假設商家已經將其公鑰公布出去。當消費者進行消費的時候,已經其公鑰了。那么,當需要產生一個簽名票據的時候,商家將票據信息(時間日期商品數量價格廠家名字等等)做一個HASH,得到一個固定字長的序列,假設為M,然后用其私鑰對該M進行加密,即得到S=Eprivate(H(M))。然后將其發送給接收方。接收方就可以保存M||S作為電子票據。
那么如何驗證發送方的簽名呢?消費者只需要計算S1=Epublic(S),然后計算S2 =H(M),再判斷S1與S2是否相等即可。相等則簽名的驗證通過,否則不通過。如下圖示:
簽名與驗證過程:
2.4 彩虹算法
彩虹算法是一種多變量公鑰密鑰體制的簽名算法。多變量密碼體制(MPKC)被認為是能夠抵御基于量子計算機攻擊的新型公鑰密碼體制之一。其基本理論依據是基于求解有限域上的一組隨機選擇的非線性方程組的困難性。這是一個NP難問題,即使是使用量子計算機也不會減少破解其的困難性。彩虹算法被認為是MPKC體系發展至今,一個公認的安全可靠的簽名算法。彩虹算法是基于油醋算法的變形,其可以理解為多層的非平衡油醋。而油醋多項式的特征是:油變量僅以線性形式出現的二次多項式。當簽名者隨機選取醋變量的值后,通過求解多元一次方程組即可得出簽名信息。而驗證者只需做簡單的算術運算即可驗證簽名是否正確。簽名和驗證的過程都效率都十分高。同時,在彩虹體系中,公鑰是油醋變量混合在一起的非線性方程,具有很高的安全性。
三 系統整體架構與工作流程
3.1 軟件架構
商家PC端手機發送商品以及交易信息到FPGA開發板,開發板上實現彩虹簽名算法,開發板對商品信息做了簽名之后,通過藍牙將電子收據發送到手機Android端。Android手機在藍牙端接收到電子收據后,從第三方獲取公鑰,并在本地驗證電子收據簽名的有效性。有效則交易完成,否則可重新要求商家簽發電子收據。
3.2 硬件架構
PC端通過藍牙與FPGA板塊通信,實現交易信息的發送。FPGA板通過藍牙與手機android端通信,實現簽名完成后的電子收據的發送。
3.3 系統工作數據流
首先商家向權威第三方注冊,公布自己的公鑰。在交易之后,商家首先將交易信息(時間、商品、數量和價格等等信息)以及自己的私鑰發送到FPGA板上,FPGA板對交易信息做簽名,連同商品信息一道,作為電子收據,通過藍牙通信發送到移動android終端。移動終端從第三方獲取公鑰信息,并在手機本地做簽名的驗證。驗證通過則保存該電子收據作為交易憑證,交易過程結束。如下圖
而當發生糾紛消費者需要維權的時候,由于可信的第三方保存著商家的公鑰,而擁有公鑰的實體都可以進行電子收據簽名的認證。是商家不能抵賴電子收據所表示的進行過的電子交易。
四 具體實現
4.1 藍牙通信的實現
本項目的藍牙是使用HC-05嵌入式藍牙串口通訊模塊實現的。fpga開發板通過控制藍牙串口通信模塊,使用AT指令與手機android端進行數據交換。手機android端在與fpga板成功對接之后,利用藍牙通信技術與fpga板子通信。從fpga板子上獲取經過電子簽名之后的電子收據。
4.2 密鑰芯片的實現
本項目的核心模塊是密鑰模塊。即使為電子收據做簽名的硬件模塊。使用verilogHDL語言實現,并生成為一個IP核。使用開發板上的microblaze核來實現所有的邏輯業務,將實現彩虹簽名算法的ip核作為一個被調用的模塊添加進來。
相關文章
我來告訴你為什么要統一手機充電接口
智能手機的ARM和的藍牙CAN分析儀設計方案
智能手機的集成化鋰電池充電管理解決方案