【導(dǎo)讀】隨著移動終端技術(shù)的涌現(xiàn),手機(jī)支付技術(shù)越來越時髦,手機(jī)支付也成為了財務(wù)支付的服務(wù)方式之一。雖然手機(jī)支付是新興產(chǎn)業(yè),但是電子收據(jù)已經(jīng)趨于成熟,移動支付產(chǎn)業(yè)前景大好。與紙質(zhì)收據(jù)相比,電子收據(jù)具備明顯優(yōu)勢。
電子收據(jù)
本項目所實現(xiàn)的技術(shù)是面向移動支付服務(wù)中的一個必要環(huán)節(jié):電子收據(jù)憑證。電子收據(jù)的核心部分是數(shù)字簽名技術(shù)。使用數(shù)字簽名技術(shù)需要三方的參與:可信第三方(仲裁)、商家以及消費(fèi)者。所有使用電子收據(jù)服務(wù)的商家事先公布必要的簽名信息(公鑰)。消費(fèi)者消費(fèi)之后從商家獲得電子收據(jù),并從可靠的第三方獲得商家的公鑰,從而驗證該收據(jù)的有效性。由于電子簽名的不可偽造性,消費(fèi)者之后能夠利用可信第三方的信息和自己手機(jī)存儲器上的收據(jù)信息來證明消費(fèi)的單據(jù),從而維護(hù)自己的權(quán)益。
基于彩虹算法的數(shù)字簽名技術(shù)
1、數(shù)字簽名介紹
數(shù)字簽名是一中認(rèn)證機(jī)制,它使得消息的產(chǎn)生著可以添加一個起簽名作用的碼字。通過計算消息的散列值并用產(chǎn)生者的私鑰加密散列值來生成簽名。簽名保證了消息的來源和完整性。
數(shù)字簽名可以用于雙向認(rèn)證和單向認(rèn)證。雙向認(rèn)證使得通信的雙方對相互的身份感到放心,并交換會話密鑰。而單向認(rèn)證的時候,接收方能夠確保消息的確來源于發(fā)送方,而且發(fā)送方無法抵賴層放松的消息。
數(shù)字簽名包含幾個特征:簽名能夠驗證簽名者、簽名日期和時間;簽名能夠驗證被簽的消息內(nèi)容;簽名能夠由第三方仲裁,以解決爭執(zhí)。
一個能夠應(yīng)用的數(shù)字簽名算法需要滿足以下幾個最基本的條件:產(chǎn)生和識別簽名是容易的;偽造簽名是不可能的;保存簽名備份是可行的。
2、數(shù)字簽名安全性與不可抵賴性
在本項目中,使用數(shù)字簽名的作用是使電子收據(jù)的接受方(消費(fèi)者)能夠確認(rèn)收據(jù)來源的權(quán)威性,而且使商家不能夠抵賴已進(jìn)行的交易,以電子票據(jù)的方式保護(hù)消費(fèi)者的權(quán)益。
由于數(shù)字簽名的不可偽造性,當(dāng)發(fā)現(xiàn)爭執(zhí)的時候,消費(fèi)者能夠用保存在終端(手機(jī))之中的消費(fèi)數(shù)據(jù)中的簽名,證明消費(fèi)過程和權(quán)益。數(shù)字簽名和普通的紙質(zhì)票據(jù)具有同樣的法律效力,且數(shù)字簽名具有易攜性和非易失性的特點(diǎn),必會在將來得到大規(guī)模的應(yīng)用。
3、簽名的過程
在本項目簽名的過程中涉及到商家(發(fā)送方),消費(fèi)者(接收方),可能還涉及到第三方仲裁者。我們假設(shè)商家已經(jīng)將其公鑰公布出去。當(dāng)消費(fèi)者進(jìn)行消費(fèi)的時候,已經(jīng)其公鑰了。那么,當(dāng)需要產(chǎn)生一個簽名票據(jù)的時候,商家將票據(jù)信息(時間日期商品數(shù)量價格廠家名字等等)做一個HASH,得到一個固定字長的序列,假設(shè)為M,然后用其私鑰對該M進(jìn)行加密,即得到S=Eprivate(H(M))。然后將其發(fā)送給接收方。接收方就可以保存M||S作為電子票據(jù)。
那么如何驗證發(fā)送方的簽名呢?消費(fèi)者只需要計算S1=Epublic(S),然后計算S2 =H(M),再判斷S1與S2是否相等即可。相等則簽名的驗證通過,否則不通過。
4、彩虹算法
彩虹算法是一種多變量公鑰密鑰體制的簽名算法。多變量密碼體制(MPKC)被認(rèn)為是能夠抵御基于量子計算機(jī)攻擊的新型公鑰密碼體制之一。其基本理論依據(jù)是基于求解有限域上的一組隨機(jī)選擇的非線性方程組的困難性。這是一個NP難問題,即使是使用量子計算機(jī)也不會減少破解其的困難性。彩虹算法被認(rèn)為是MPKC體系發(fā)展至今,一個公認(rèn)的安全可靠的簽名算法。彩虹算法是基于油醋算法的變形,其可以理解為多層的非平衡油醋。而油醋多項式的特征是:油變量僅以線性形式出現(xiàn)的二次多項式。當(dāng)簽名者隨機(jī)選取醋變量的值后,通過求解多元一次方程組即可得出簽名信息。而驗證者只需做簡單的算術(shù)運(yùn)算即可驗證簽名是否正確。簽名和驗證的過程都效率都十分高。同時,在彩虹體系中,公鑰是油醋變量混合在一起的非線性方程,具有很高的安全性。
系統(tǒng)整體架構(gòu)與工作流程
1、軟件架構(gòu)
商家PC端手機(jī)發(fā)送商品以及交易信息到FPGA開發(fā)板,開發(fā)板上實現(xiàn)彩虹簽名算法,開發(fā)板對商品信息做了簽名之后,通過藍(lán)牙將電子收據(jù)發(fā)送到手機(jī)Android端。Android手機(jī)在藍(lán)牙端接收到電子收據(jù)后,從第三方獲取公鑰,并在本地驗證電子收據(jù)簽名的有效性。有效則交易完成,否則可重新要求商家簽發(fā)電子收據(jù)。
2、硬件架構(gòu)
PC端通過藍(lán)牙與FPGA板塊通信,實現(xiàn)交易信息的發(fā)送。FPGA板通過藍(lán)牙與手機(jī)android端通信,實現(xiàn)簽名完成后的電子收據(jù)的發(fā)送。
3、系統(tǒng)工作數(shù)據(jù)流
首先商家向權(quán)威第三方注冊,公布自己的公鑰。在交易之后,商家首先將交易信息(時間、商品、數(shù)量和價格等等信息)以及自己的私鑰發(fā)送到FPGA板上,FPGA板對交易信息做簽名,連同商品信息一道,作為電子收據(jù),通過藍(lán)牙通信發(fā)送到移動android終端。移動終端從第三方獲取公鑰信息,并在手機(jī)本地做簽名的驗證。驗證通過則保存該電子收據(jù)作為交易憑證,交易過程結(jié)束。
而當(dāng)發(fā)生糾紛消費(fèi)者需要維權(quán)的時候,由于可信的第三方保存著商家的公鑰,而擁有公鑰的實體都可以進(jìn)行電子收據(jù)簽名的認(rèn)證。是商家不能抵賴電子收據(jù)所表示的進(jìn)行過的電子交易。
具體實現(xiàn)
1、藍(lán)牙通信的實現(xiàn)
本項目的藍(lán)牙是使用HC-05嵌入式藍(lán)牙串口通訊模塊實現(xiàn)的。fpga開發(fā)板通過控制藍(lán)牙串口通信模塊,使用AT指令與手機(jī)android端進(jìn)行數(shù)據(jù)交換。手機(jī)android端在與fpga板成功對接之后,利用藍(lán)牙通信技術(shù)與fpga板子通信。從fpga板子上獲取經(jīng)過電子簽名之后的電子收據(jù)。
2、密鑰芯片的實現(xiàn)
本項目的核心模塊是密鑰模塊。即使為電子收據(jù)做簽名的硬件模塊。使用verilogHDL語言實現(xiàn),并生成為一個IP核。使用開發(fā)板上的microblaze核來實現(xiàn)所有的邏輯業(yè)務(wù),將實現(xiàn)彩虹簽名算法的ip核作為一個被調(diào)用的模塊添加進(jìn)來。
相關(guān)閱讀:
智能家居市場ZigBee/WiFi/藍(lán)牙三足鼎立,誰能稱霸?
實用電路匯總:藍(lán)牙耳機(jī)及其放大電路的設(shè)計
“藍(lán)牙技術(shù)聯(lián)盟”的全面揭秘