專(zhuān)利名稱(chēng):確認(rèn)需簽名數(shù)據(jù)的數(shù)字簽名設(shè)備及其確認(rèn)數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字簽名技術(shù),尤其涉及一種確認(rèn)需簽名數(shù)據(jù)的數(shù)字簽名設(shè)備及其確認(rèn)數(shù)據(jù)的方法。
背景技術(shù):
隨著電子商務(wù)和電子政務(wù)的發(fā)展,越來(lái)越多的國(guó)家成立了數(shù)字簽名法,數(shù)字簽名成為電子交易的合法簽名方式。為了確保數(shù)字簽名的合法性,必須先解決數(shù)字簽名的安全性問(wèn)題。
在Internet上進(jìn)行的電子商務(wù)交易,參與雙方會(huì)互相發(fā)送一系列消息,其中一方對(duì)消息的數(shù)字簽名證明消息確實(shí)是他發(fā)出的,另一方可以檢驗(yàn)簽名的真實(shí)性。
現(xiàn)在的數(shù)字簽名都使用強(qiáng)的密碼算法,通?;谡麛?shù)分解、離散對(duì)數(shù)問(wèn)題或橢圓曲線。只要選擇適當(dāng)?shù)膮?shù),這些算法就難以攻破,這就意味著攻擊者沒(méi)有私鑰就無(wú)法計(jì)算出對(duì)數(shù)據(jù)的簽名。
即便如此,還是要小心,確保攻擊者無(wú)法從用戶的計(jì)算機(jī)竊取私鑰。目前的理想方案都是將私鑰和簽名函數(shù)存儲(chǔ)于獨(dú)立的簽名設(shè)備中,比如智能卡或USB Key,這樣的設(shè)備稱(chēng)為“個(gè)人安全環(huán)境(Personal Secure Environment,PSE)”。向智能卡輸入要簽名的數(shù)據(jù),智能卡計(jì)算并輸出數(shù)字簽名結(jié)果,整個(gè)過(guò)程從不泄漏私鑰。對(duì)智能卡進(jìn)行攻擊,就算可行的話,也是技術(shù)上非常有挑戰(zhàn)性的困難,因此我們可以相信智能卡的安全性,認(rèn)為攻擊者對(duì)它無(wú)計(jì)可施。
從智能卡和密碼算法的安全角度說(shuō),要想通過(guò)破解密碼算法或攻擊智能卡來(lái)偽造數(shù)字簽名是幾乎不可能的。但是,我們還不能宣稱(chēng)數(shù)字簽名不可能被偽造,原因就是木馬程序的存在。圖1示出現(xiàn)有的數(shù)字簽名方案被木馬程序攻擊的可能性。
木馬程序可以在多處實(shí)施攻擊。例如作為動(dòng)態(tài)文檔內(nèi)容隱藏于應(yīng)用軟件中;攻擊應(yīng)用軟件與簽名軟件之間的通信;攻擊簽名軟件;攻擊簽名軟件與智能卡之間的驅(qū)動(dòng)。
這些攻擊篡改進(jìn)入智能卡的數(shù)據(jù),使得進(jìn)入卡內(nèi)的數(shù)據(jù)根本不是用戶想要簽名的數(shù)據(jù),從而計(jì)算出的簽名是違背用戶意愿的。
有些簽名方案要求在簽名之前對(duì)數(shù)據(jù)進(jìn)行再現(xiàn)和確認(rèn),但這種再現(xiàn)和確認(rèn)是簽名軟件在用戶計(jì)算機(jī)上完成的,攻擊者同樣可以把正確的數(shù)據(jù)顯示給用戶,卻把篡改過(guò)的數(shù)據(jù)傳給智能卡。因此,這種在用戶計(jì)算機(jī)上的再現(xiàn)和確認(rèn)是徒勞的。
目前的數(shù)字簽名技術(shù),都只研究算法、密鑰和運(yùn)算過(guò)程的安全性,都沒(méi)有考慮到木馬程序?qū)灻麅?nèi)容的攻擊,無(wú)法確保“所見(jiàn)即所簽”。
發(fā)明內(nèi)容
本發(fā)明提出一種確認(rèn)需簽名數(shù)據(jù)的數(shù)字簽名設(shè)備及其確認(rèn)數(shù)據(jù)的方法,可以在安全設(shè)備上對(duì)交易數(shù)據(jù)進(jìn)行確認(rèn),確保進(jìn)入簽名設(shè)備的數(shù)據(jù)確實(shí)是用戶想要簽名的數(shù)據(jù),即“所見(jiàn)即所簽”。
一方面,提供一種確認(rèn)需簽名數(shù)據(jù)的數(shù)字簽名設(shè)備。該設(shè)備包括連接到中央控制器上的需簽名數(shù)據(jù)確認(rèn)裝置。該需簽名數(shù)據(jù)確認(rèn)裝置包括指令判斷單元,用于判斷數(shù)字簽名設(shè)備從客戶端收到的指令的類(lèi)型,并在判斷為包含需簽名數(shù)據(jù)的指令時(shí)將其指令體傳遞給數(shù)據(jù)解析單元;數(shù)據(jù)解析單元,用于從傳遞過(guò)來(lái)的指令體中解析出需簽名數(shù)據(jù);用戶通知單元,用于將解析出來(lái)的需簽名數(shù)據(jù)通知用戶進(jìn)行確認(rèn)。
上述設(shè)備還包括用戶操作指令接收單元,用于接收用戶對(duì)所通知的需簽名數(shù)據(jù)發(fā)出的操作指令。
上述用戶操作指令接收單元包括下述控制鍵中至少一種
確定鍵,用于接收用戶對(duì)所通知的需簽名數(shù)據(jù)確認(rèn)為正確時(shí)發(fā)出的操作指令;取消鍵,用于接收用戶對(duì)所通知的需簽名數(shù)據(jù)確認(rèn)為差錯(cuò)時(shí)發(fā)出的操作指令;翻頁(yè)鍵,用于接收用戶發(fā)出的翻頁(yè)閱讀需簽名數(shù)據(jù)所包含的各項(xiàng)的操作指令。
上述用戶通知單元包括顯示屏,用于全屏顯示或分屏逐項(xiàng)顯示需簽名數(shù)據(jù)包含的各項(xiàng)。
上述數(shù)據(jù)解析單元與服務(wù)端和客戶端上的數(shù)據(jù)解析單元采用同樣的解析器。
上述解析器是可擴(kuò)展標(biāo)記語(yǔ)言XML解析器。
上述數(shù)字簽名設(shè)備是USB Key。
另一方面,提供一種數(shù)字簽名過(guò)程中需簽名數(shù)據(jù)的確認(rèn)方法,客戶端向服務(wù)端發(fā)出請(qǐng)求消息之后,該方法包括步驟A、客戶端收到服務(wù)端返回的響應(yīng)消息后,向數(shù)字簽名設(shè)備發(fā)送包含需簽名數(shù)據(jù)的指令;B、數(shù)字簽名設(shè)備從收到的指令中解析出需簽名數(shù)據(jù),并通知用戶進(jìn)行確認(rèn)。
上述步驟B進(jìn)一步包括數(shù)字簽名設(shè)備將需簽名數(shù)據(jù)逐項(xiàng)通知給用戶或一次性全部通知給用戶進(jìn)行確認(rèn)。
上方法還包括步驟C、所有的需簽名數(shù)據(jù)都被用戶確認(rèn)時(shí),數(shù)字簽名設(shè)備開(kāi)始數(shù)字簽名運(yùn)算。
上述方法還包括步驟C、需簽名數(shù)據(jù)被用戶否定時(shí),數(shù)字簽名設(shè)備拒絕進(jìn)行簽名。
上述方法中,數(shù)字簽名設(shè)備與服務(wù)端和客戶端遵循同一種編解碼格式。
上述方法中,編解碼格式是可擴(kuò)展標(biāo)記語(yǔ)言XML格式。
上述方法中,數(shù)字簽名設(shè)備是USB Key。
本發(fā)明的優(yōu)點(diǎn)和特點(diǎn)如下1.USB Key形成一個(gè)獨(dú)立的安全運(yùn)算環(huán)境,可以對(duì)電子交易數(shù)據(jù)進(jìn)行再現(xiàn)和確認(rèn),木馬程序?qū)灰讛?shù)據(jù)的任何篡改都會(huì)被發(fā)現(xiàn);
2.只有當(dāng)所有交易數(shù)據(jù)都被確認(rèn)符合用戶意愿時(shí),才會(huì)對(duì)交易數(shù)據(jù)進(jìn)行簽名運(yùn)算,從而確保用戶簽署的數(shù)據(jù)就是用戶親眼見(jiàn)過(guò)并予以確定的數(shù)據(jù),也就是“所見(jiàn)即所簽”;3.USB Key與交易軟件采用相同的數(shù)據(jù)解析器,同樣的二進(jìn)制數(shù)據(jù)具有相同的語(yǔ)法格式和語(yǔ)義,形成無(wú)差別顯示。
4.此外,USB Key具備傳統(tǒng)智能卡簽名的所有安全功能。比如,對(duì)簽名私鑰有PIN保護(hù),簽名運(yùn)算過(guò)程在設(shè)備內(nèi)部完成,命令與應(yīng)答有加密保護(hù),文件讀寫(xiě)有安全訪問(wèn)控制機(jī)制等等。
圖1示出現(xiàn)有的數(shù)字簽名方案被木馬程序攻擊的可能性;圖2示出采用安全數(shù)字簽名方案的電子交易系統(tǒng);圖3示出具有數(shù)據(jù)確認(rèn)功能的數(shù)字簽名設(shè)備典型的外形結(jié)構(gòu);圖4示出數(shù)字簽名設(shè)備典型的組成結(jié)構(gòu);圖5是支持本發(fā)明的需簽名數(shù)據(jù)確認(rèn)功能的數(shù)字簽名方法在電子交易情形下的流程圖;圖6示出應(yīng)用網(wǎng)上個(gè)人銀行的轉(zhuǎn)帳業(yè)務(wù)時(shí)交易數(shù)據(jù)通常包含的數(shù)據(jù)項(xiàng);圖7是支持本發(fā)明的需簽名數(shù)據(jù)確認(rèn)功能的數(shù)字簽名方法在網(wǎng)上個(gè)人銀行轉(zhuǎn)賬情形下的流程圖。
具體實(shí)施例方式
本發(fā)明涉及兩個(gè)形成鮮明對(duì)比的計(jì)算環(huán)境(1)不安全的用戶計(jì)算機(jī)環(huán)境。用戶計(jì)算機(jī)上的任何程序都是不可信任的,包括處理簽名數(shù)據(jù)的應(yīng)用軟件和簽名軟件,都可能存在木馬程序,木馬程序可以篡改進(jìn)入簽名設(shè)備的數(shù)據(jù)。
(2)安全的簽名設(shè)備。本發(fā)明采用帶有需簽名數(shù)據(jù)確認(rèn)功能的USB Key作為簽名設(shè)備,這種USB Key是獨(dú)立于用戶計(jì)算機(jī)的運(yùn)算環(huán)境,具有嚴(yán)格的資源保護(hù)和訪問(wèn)控制,只執(zhí)行一些簽名相關(guān)的命令,惡意程序?qū)Υ撕灻O(shè)備無(wú)計(jì)可施,因此稱(chēng)為“個(gè)人安全環(huán)境”。
正是由于這兩種環(huán)境的安全性對(duì)比,才將安全敏感的數(shù)據(jù)確認(rèn)和簽名運(yùn)算放在USB Key的安全環(huán)境內(nèi)完成。
本發(fā)明主要應(yīng)用于電子交易,比如網(wǎng)上購(gòu)物、網(wǎng)上銀行業(yè)務(wù)等。此類(lèi)應(yīng)用的特征是,交易產(chǎn)生的數(shù)據(jù)量少,簽名只針對(duì)交易中的關(guān)鍵數(shù)據(jù),比如帳號(hào)、時(shí)間、金額等等,這些數(shù)據(jù)在計(jì)算機(jī)和USB Key內(nèi)都能以特定的格式編碼和解碼,方便用戶對(duì)需簽名數(shù)據(jù)進(jìn)行逐項(xiàng)確認(rèn)。
下面,以電子交易應(yīng)用為例描述采用安全數(shù)字簽名方案的整個(gè)系統(tǒng)。
如圖2所示,電子交易系統(tǒng)至少包括以下三個(gè)組件(1)電子交易的服務(wù)端。位于電子交易服務(wù)提供商的一端,通常包含大型數(shù)據(jù)庫(kù)和交易服務(wù)端軟件,存儲(chǔ)和處理服務(wù)內(nèi)容、客戶信息、以及交易信息等,由服務(wù)提供商確保高度安全性。
(2)電子交易的客戶端軟件。位于客戶機(jī)上,是用戶進(jìn)行電子交易的操作平臺(tái),為用戶提供基本的交易服務(wù)功能。接收具有安全保護(hù)的用戶輸入,與電子交易服務(wù)端進(jìn)行數(shù)據(jù)交互,形成交易數(shù)據(jù),并將交易數(shù)據(jù)發(fā)送給USB Key,得到數(shù)字簽名結(jié)果后發(fā)送給服務(wù)端。
(3)簽名設(shè)備USB Key。USB Key通過(guò)USB接口與客戶端相連,存放用戶的簽名私鑰和證書(shū),具有需簽名數(shù)據(jù)的確認(rèn)功能以及簽名運(yùn)算功能,這種USB Key外形結(jié)構(gòu)的典型實(shí)例如圖3所示。
進(jìn)一步地,圖4示出本發(fā)明所述的USB Key典型的組成結(jié)構(gòu),只有與本發(fā)明的論述有關(guān)的裝置和單元才在該圖中圖示說(shuō)明。如該圖所示,本發(fā)明的簽名設(shè)備USB Key與現(xiàn)有的簽名設(shè)備相比,多了需簽名數(shù)據(jù)的確認(rèn)裝置,確保進(jìn)入數(shù)字簽名設(shè)備的交易數(shù)據(jù)是正確無(wú)誤并符合用戶意愿的??偟目磥?lái),該USB Key包括中央控制器,以及與中央控制器相連的加密與簽名運(yùn)算裝置、需簽名數(shù)據(jù)的確認(rèn)裝置、存儲(chǔ)器、輸入/輸出接口。
中央控制器,用于控制和協(xié)調(diào)與之相連的其他裝置。在實(shí)際應(yīng)用中,中央控制器一種優(yōu)選的實(shí)現(xiàn)方式是,硬件方面采用32位的ARM處理器,軟件方面采用芯片操作系統(tǒng)(COS,Chip Operating System)。
加密與簽名運(yùn)算裝置,能夠保證指令與應(yīng)答的機(jī)密性和完整性,能夠保證簽名密鑰和運(yùn)算過(guò)程的安全性。該裝置一種優(yōu)選的實(shí)現(xiàn)方式是,硬件上配置為協(xié)處理器,可以執(zhí)行標(biāo)準(zhǔn)的多種長(zhǎng)度的算術(shù)運(yùn)算,比如乘法、求冪等。它可以直接執(zhí)行一般的加解密功能,獨(dú)立完成3DES/AES和RSA算法。它還可以在中央控制器的控制下完成由3DES/AES和RSA算法組成的混合密碼體制,以實(shí)現(xiàn)加解密運(yùn)算、數(shù)字簽名等功能。
需簽名數(shù)據(jù)的確認(rèn)裝置,用于將需簽名數(shù)據(jù)輸出給用戶進(jìn)行確認(rèn)。
存儲(chǔ)器,用于保存密鑰、證書(shū)、交易數(shù)據(jù)等。對(duì)于該發(fā)明的方案來(lái)說(shuō),可以同時(shí)采用多種類(lèi)型的存儲(chǔ)器,包括RAM、EEPROM、Flash ROM等。
輸入/輸出接口,用于接收、處理和響應(yīng)來(lái)自客戶端的指令。當(dāng)數(shù)字簽名設(shè)備利用USB Key來(lái)實(shí)現(xiàn)時(shí),輸入/輸出接口采用USB控制器。
應(yīng)當(dāng)指出,上述各個(gè)裝置不限于以獨(dú)立實(shí)體的形式存在,這些裝置中每一個(gè)都可以作為中央控制器的一個(gè)組成部分,還可將其中任意幾個(gè)裝置結(jié)合為一個(gè)獨(dú)立實(shí)體。
更進(jìn)一步地,參照?qǐng)D4描述需簽名數(shù)據(jù)的確認(rèn)裝置。該確認(rèn)裝置包括指令判斷單元、數(shù)據(jù)解析單元、用戶通知單元和用戶操作指令接收單元。
指令判斷單元,用于判斷數(shù)字簽名設(shè)備從客戶端收到的指令的類(lèi)型,并在判斷為包含交易數(shù)據(jù)的指令時(shí)將其指令體傳遞給數(shù)據(jù)解析單元。該單元的具體功能是根據(jù)指令頭來(lái)判斷所接收的指令的類(lèi)型,并通知相應(yīng)設(shè)備進(jìn)行處理。如果判斷出收到的指令為包含交易數(shù)據(jù)的指令,則指令判斷單元從該指令中分離出指令體傳遞給數(shù)據(jù)解析單元。
數(shù)據(jù)解析單元,用于從傳遞過(guò)來(lái)的指令體中解析出交易數(shù)據(jù)。數(shù)據(jù)解析單元使用與客戶端和服務(wù)端一樣的編碼解碼機(jī)制,使得同樣的交易數(shù)據(jù)二進(jìn)制文件在各處的顯示一致,不至于出現(xiàn)二義性。數(shù)據(jù)解析單元的具體功能是檢查包含交易數(shù)據(jù)的指令的指令體是否有格式和結(jié)構(gòu)上的錯(cuò)誤,從指令體中剝離格式標(biāo)識(shí)符,解析出有意義的正確的交易數(shù)據(jù),傳輸給用戶通知單元。這種數(shù)據(jù)解析單元的一個(gè)實(shí)際例子是可擴(kuò)展標(biāo)記語(yǔ)言(XML)解析器。XML是一種用來(lái)結(jié)構(gòu)化文件信息的標(biāo)記語(yǔ)言,XML規(guī)范中對(duì)于如何標(biāo)記文件的結(jié)構(gòu)性有一個(gè)詳細(xì)的法則,解析器就是根據(jù)這些法則編寫(xiě)的軟件。XML以其標(biāo)準(zhǔn)的結(jié)構(gòu)、嚴(yán)謹(jǐn)?shù)奈姆ā?qiáng)大的描述能力、以及獨(dú)立和開(kāi)放性,在描述數(shù)據(jù)資源方面得到了廣泛的應(yīng)用。在進(jìn)行電子交易的服務(wù)端、客戶端和USB KEY內(nèi)都使用同樣的解析器。
應(yīng)當(dāng)指出,上述數(shù)據(jù)解析單元既可以獨(dú)立存在,也可以作為中央控制器的一部分。另外,上述包含交易數(shù)據(jù)的指令可以是一個(gè)或多個(gè)二進(jìn)制指令。而且在該發(fā)明中,向數(shù)字簽名設(shè)備發(fā)送簽名指令可以采用這樣的方式,客戶端先傳一條命令指令,再傳一條或多條數(shù)據(jù)指令。
用戶通知單元,用于將解析出來(lái)的交易數(shù)據(jù)通知用戶進(jìn)行確認(rèn)。該單元能夠?qū)⒔馕龊蟮慕灰讛?shù)據(jù)逐項(xiàng)顯示在屏幕上。如果交易數(shù)據(jù)量少,顯示功能足夠強(qiáng)大,就可以一次性將所有交易數(shù)據(jù)顯示出來(lái)。這是為了檢查進(jìn)入U(xiǎn)SB Key內(nèi)部的交易數(shù)據(jù)是否遭受篡改,以確?!八?jiàn)即所簽”。
用戶操作指令接收單元,用于接收用戶對(duì)所通知的交易數(shù)據(jù)發(fā)出的操作指令。數(shù)字簽名設(shè)備通過(guò)用戶操作指令接收單元檢測(cè)到所有數(shù)據(jù)項(xiàng)都被確認(rèn)無(wú)誤時(shí),才會(huì)進(jìn)行簽名;檢測(cè)到任何數(shù)據(jù)項(xiàng)被否定時(shí),都會(huì)拒絕簽名。如圖3所示,在簽名USB Key上,用戶操作指令接收單元包括確定(OK)和取消(Cancel)兩個(gè)按鍵。用戶根據(jù)自己的意愿對(duì)屏幕上顯示的數(shù)據(jù)項(xiàng)進(jìn)行確定或否定,確認(rèn)數(shù)據(jù)項(xiàng)正確無(wú)誤并符合用戶意愿,就按下確定鍵,否則就按取消鍵。系統(tǒng)根據(jù)不同按鍵的按下識(shí)別用戶的操作指令,以決定是否繼續(xù)顯示剩余數(shù)據(jù)項(xiàng)或是否進(jìn)入簽名。根據(jù)功能需求,用戶操作指令接收單元還可以包括查看需要簽名的數(shù)據(jù)用的按鍵,例如滾動(dòng)翻頁(yè)的方向鍵。也可以用觸敏顯示屏接收用戶指令,在這種情況下,用戶操作指令接收單元和用戶通知單元結(jié)合起來(lái)構(gòu)成人機(jī)交互單元。
基于上述實(shí)體和軟件進(jìn)行電子交易和數(shù)字簽名的過(guò)程如圖5所示,包括以下步驟在步驟501,用戶使用客戶端上的交易軟件,實(shí)施基本的交易操作,向服務(wù)端發(fā)出交易請(qǐng)求。典型的用戶操作,比如網(wǎng)上購(gòu)物時(shí)瀏覽商品、填寫(xiě)訂單,銀行業(yè)務(wù)中的余額查詢、轉(zhuǎn)帳或支付等,有些操作不涉及敏感信息,無(wú)需簽名,而有些操作涉及支付,用戶必須對(duì)交易數(shù)據(jù)進(jìn)行簽名。
在步驟502,服務(wù)端處理交易請(qǐng)求。
在步驟503,服務(wù)端根據(jù)交易的安全性要求,判斷是否需要用戶對(duì)交易數(shù)據(jù)進(jìn)行數(shù)字簽名。如果不需要簽名,轉(zhuǎn)入步驟504;如果需要簽名,轉(zhuǎn)入步驟505。
在步驟504,對(duì)于不需要用戶簽名的交易,服務(wù)端直接給用戶返回響應(yīng)數(shù)據(jù)。
在步驟505,對(duì)于需要用戶簽名的交易,服務(wù)端向用戶返回響應(yīng)數(shù)據(jù),并要求用戶對(duì)交易數(shù)據(jù)進(jìn)行確認(rèn)和數(shù)字簽名。
在步驟506,客戶端交易軟件收到服務(wù)端響應(yīng)的交易數(shù)據(jù),將交易數(shù)據(jù)傳輸給USB Key。
在步驟507,從第一項(xiàng)交易數(shù)據(jù)開(kāi)始,用戶交易數(shù)據(jù)在USB Key上逐項(xiàng)顯示給用戶進(jìn)行確認(rèn)。
在步驟508,用戶判斷交易數(shù)據(jù)項(xiàng)是否符合自己的意愿,如果不符合,比如由于木馬程序的篡改出現(xiàn)交易金額錯(cuò)誤,就轉(zhuǎn)入步驟509;如果交易數(shù)據(jù)項(xiàng)符合用戶意愿,就轉(zhuǎn)入步驟512。
在步驟509,交易數(shù)據(jù)項(xiàng)不符合用戶意愿的情況下,用戶按下取消鍵,否定交易數(shù)據(jù),拒絕簽名。
在步驟510,一旦按下取消鍵或輸入PIN錯(cuò)誤,USB Key就拒絕簽名,向客戶端交易軟件報(bào)告簽名的失敗結(jié)果和原因。
在步驟511,USB Key拒絕簽名后,客戶端交易軟件向服務(wù)端報(bào)告交易失敗,根據(jù)用戶要求可以取消本次交易或重復(fù)本次交易。
在步驟512,在交易數(shù)據(jù)項(xiàng)正確無(wú)誤并符合用戶意愿的情況下,用戶按下確定鍵。
在步驟513,USB Key判斷是否所有交易數(shù)據(jù)項(xiàng)都已顯示并確認(rèn)。如果沒(méi)有完成,則轉(zhuǎn)入步驟507,繼續(xù)顯示下一項(xiàng)交易數(shù)據(jù);如果所有交易數(shù)據(jù)項(xiàng)都已確認(rèn)無(wú)誤,進(jìn)入步驟514。
在步驟514,在所有交易數(shù)據(jù)都確認(rèn)無(wú)誤并符合用戶意愿的情況下,USBKey就開(kāi)始對(duì)交易數(shù)據(jù)進(jìn)行數(shù)字簽名運(yùn)算。這時(shí)候要訪問(wèn)存儲(chǔ)在USB Key內(nèi)的用戶簽名私鑰,要求用戶輸入私鑰保護(hù)PIN。
在步驟515,判斷用戶輸入的PIN是否正確。如果錯(cuò)誤,轉(zhuǎn)入步驟510,簽名失??;如果正確,進(jìn)入下一步驟516。
在步驟516,USB Key對(duì)交易數(shù)據(jù)進(jìn)行數(shù)字簽名運(yùn)算,運(yùn)算過(guò)程和私鑰都是安全的。
在步驟517,USB Key將簽名結(jié)果返回給客戶端交易軟件。
在步驟518,客戶端交易軟件得到USB Key成功的數(shù)字簽名結(jié)果后,將交易數(shù)據(jù)及相應(yīng)的數(shù)字簽名發(fā)送給服務(wù)端。
在步驟519,服務(wù)端將交易數(shù)據(jù)及相應(yīng)的數(shù)字簽名等記錄存入數(shù)據(jù)庫(kù),作為以后驗(yàn)證簽名的依據(jù),用戶不可抵賴(lài)或撤銷(xiāo)此次電子交易。
在步驟520,得到用戶的數(shù)字簽名授權(quán)后,繼續(xù)本次電子交易的剩余操作,比如轉(zhuǎn)帳、交貨等,然后結(jié)束交易或再進(jìn)行其它交易。
客戶端和服務(wù)端是電子交易的參與雙方,經(jīng)由Internet進(jìn)行通信,遵循TCP/IP協(xié)議,需要通過(guò)加密和簽名保證通信數(shù)據(jù)的機(jī)密性、完整性和真實(shí)性。
電子交易的服務(wù)端、客戶端、數(shù)字簽名USB Key遵循同一種數(shù)據(jù)描述格式,比如XML,按照統(tǒng)一格式對(duì)交易數(shù)據(jù)進(jìn)行編碼和解析,使得相同的二進(jìn)制數(shù)據(jù)在服務(wù)端、客戶端、USB Key的語(yǔ)法和語(yǔ)義不變,形成無(wú)差別的數(shù)據(jù)顯示。
客戶端的交易軟件包含兩方面的功能。其一,與服務(wù)端進(jìn)行交互,完成基本交易功能;其二,集成簽名軟件,支持USB Key,通過(guò)USB Key驅(qū)動(dòng)向USBKey發(fā)出數(shù)字簽名命令,并接收USB Key的響應(yīng)。當(dāng)然也可以把簽名軟件與交易軟件分開(kāi)。
交易軟件與USB Key的命令和數(shù)據(jù)交互,需要USB Key驅(qū)動(dòng)的支持。目前的簽名設(shè)備,存在于客戶端的驅(qū)動(dòng)是木馬程序攻擊的目標(biāo)之一。木馬程序替換或隱藏于驅(qū)動(dòng)中的某個(gè)動(dòng)態(tài)鏈接庫(kù)文件,就可以截獲和篡改進(jìn)入U(xiǎn)SB Key的數(shù)據(jù)??梢栽谏鲜黾夹g(shù)方案中增加檢驗(yàn)驅(qū)動(dòng)的完整性的過(guò)程以及相關(guān)裝置,但這已沒(méi)有必要,因?yàn)閁SB Key會(huì)對(duì)交易數(shù)據(jù)進(jìn)行確認(rèn),如果數(shù)據(jù)遭受篡改,用戶可以拒絕簽名。
經(jīng)由Internet進(jìn)行的電子交易,存在許多安全隱患,用戶不能隨意對(duì)交易數(shù)據(jù)進(jìn)行簽名。本發(fā)明的技術(shù)方案是在不安全的電子交易環(huán)境中構(gòu)建一種安全的數(shù)字簽名環(huán)境,使得數(shù)字簽名過(guò)程不會(huì)遭受惡意程序的攻擊。
下面,以網(wǎng)上個(gè)人銀行的轉(zhuǎn)帳業(yè)務(wù)為例說(shuō)明本發(fā)明。
電子交易過(guò)程中,不是所有交易數(shù)據(jù)都需要簽名,比如余額查詢、歷史帳務(wù)查詢,這些交易數(shù)據(jù)都不需用戶簽名,需要用戶簽名的數(shù)據(jù)是那些涉及資金流動(dòng)的數(shù)據(jù)。因此,該實(shí)例從形成需要簽名的交易數(shù)據(jù)開(kāi)始。
以網(wǎng)上個(gè)人銀行的異地跨行轉(zhuǎn)帳業(yè)務(wù)為例,在用戶進(jìn)行數(shù)字簽名之前,形成的交易數(shù)據(jù)主要包括圖6中示出的數(shù)據(jù)項(xiàng)。
網(wǎng)上個(gè)人銀行客戶端軟件要求用戶對(duì)類(lèi)似圖6這樣的交易數(shù)據(jù)進(jìn)行確認(rèn),確認(rèn)正確后進(jìn)行數(shù)字簽名,交易才會(huì)繼續(xù)進(jìn)行。
目前的網(wǎng)上銀行,對(duì)交易數(shù)據(jù)的確認(rèn)都是在客戶端上完成的,用戶確認(rèn)完畢后,才將此交易數(shù)據(jù)傳輸給USB Key進(jìn)行簽名運(yùn)算。在此假定,圖6所示的數(shù)據(jù)是正確的交易數(shù)據(jù),稱(chēng)為A記錄,被木馬程序篡改后的交易數(shù)據(jù)為B記錄。用戶查看A記錄,確認(rèn)無(wú)誤后,就將A記錄傳輸給USB Key。然而,隱藏在用戶計(jì)算機(jī)上的木馬程序會(huì)監(jiān)控網(wǎng)上銀行客戶端軟件與USB Key之間的通信,會(huì)截取A記錄,然后將A記錄中的支出金額篡改為20000.00元甚至更多。這樣,A記錄變成B記錄后,傳輸給USB Key,導(dǎo)致用戶簽署的并不是剛才確認(rèn)過(guò)的交易數(shù)據(jù)。
本發(fā)明方案的重點(diǎn)在于,將交易數(shù)據(jù)的確認(rèn)從不安全的用戶計(jì)算機(jī)轉(zhuǎn)移到了安全的USB Key。
針對(duì)上述網(wǎng)上個(gè)人銀行的異地跨行轉(zhuǎn)帳業(yè)務(wù),詳細(xì)的處理流程如圖7所示。
在步驟701,網(wǎng)上個(gè)人銀行客戶端軟件形成正確的異地跨行轉(zhuǎn)帳交易數(shù)據(jù)(A記錄)。
在步驟702,服務(wù)端要求用戶進(jìn)行數(shù)字簽名,用戶同意簽名后即將交易數(shù)據(jù)傳輸給USB Key。
在步驟703,USB Key收到交易數(shù)據(jù)后,從第一項(xiàng)開(kāi)始顯示數(shù)據(jù),比如圖6中的“交易類(lèi)型支出”。
在步驟704,用戶判斷該數(shù)據(jù)項(xiàng)是否符合意愿。
在步驟705,不符合意愿的話,就按下取消鍵。
在步驟706,USB Key拒絕簽名,并向網(wǎng)上個(gè)人銀行的客戶端報(bào)告簽名失敗結(jié)果和原因。
在步驟707,客戶端交易軟件向服務(wù)端報(bào)告簽名失敗。
在步驟708,該數(shù)據(jù)項(xiàng)符合意愿的話,用戶就按下確定鍵。
在步驟709,判斷是否所有交易數(shù)據(jù)項(xiàng)都已確認(rèn)完畢。如果確認(rèn)完畢,則該流程進(jìn)行到步驟711,否則進(jìn)行到步驟710。
在步驟710,繼續(xù)顯示下一項(xiàng)交易數(shù)據(jù)。然后,該流程返回步驟704。
在步驟711,提示用戶輸入私鑰保護(hù)PIN。
在步驟712,判斷用戶輸入的PIN是否正確。如果正確,則該流程繼續(xù)進(jìn)行到步驟713,否則返回步驟706。
在步驟713,在USB Key內(nèi)進(jìn)行數(shù)字簽名運(yùn)算。
在步驟714,USB Key將簽名結(jié)果返回給網(wǎng)上個(gè)人銀行客戶端軟件。
在步驟715,客戶端將交易數(shù)據(jù)及其簽名返回給服務(wù)端。
在步驟716,服務(wù)端按用戶要求將資金轉(zhuǎn)出,并保存交易記錄。
需要指出的是,因?yàn)閁SB Key支持的文件格式和數(shù)據(jù)量有限,所以本發(fā)明針對(duì)那些最后形成的要簽名的數(shù)據(jù)只是少量關(guān)鍵文本數(shù)據(jù)的應(yīng)用,比如電子交易。在這類(lèi)應(yīng)用中,需簽名的數(shù)據(jù)易于進(jìn)行編碼和解析,易于按照特定格式在USB Key的屏幕上顯示。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種確認(rèn)需簽名數(shù)據(jù)的數(shù)字簽名設(shè)備,其特征在于包括連接到中央控制器上的需簽名數(shù)據(jù)確認(rèn)裝置,所述需簽名數(shù)據(jù)確認(rèn)裝置包括指令判斷單元,用于判斷數(shù)字簽名設(shè)備從客戶端收到的指令的類(lèi)型,并在判斷為包含需簽名數(shù)據(jù)的指令時(shí)將其指令體傳遞給數(shù)據(jù)解析單元;數(shù)據(jù)解析單元,用于從傳遞過(guò)來(lái)的指令體中解析出需簽名數(shù)據(jù);用戶通知單元,用于將解析出來(lái)的需簽名數(shù)據(jù)通知用戶進(jìn)行確認(rèn)。
2.如權(quán)利要求1所述的設(shè)備,其特征在于還包括用戶操作指令接收單元,用于接收用戶對(duì)所通知的需簽名數(shù)據(jù)發(fā)出的操作指令。
3.如權(quán)利要求2所述的設(shè)備,其特征在于所述用戶操作指令接收單元包括下述控制鍵中至少一種確定鍵,用于接收用戶對(duì)所通知的需簽名數(shù)據(jù)確認(rèn)為正確時(shí)發(fā)出的操作指令;取消鍵,用于接收用戶對(duì)所通知的需簽名數(shù)據(jù)確認(rèn)為差錯(cuò)時(shí)發(fā)出的操作指令;翻頁(yè)鍵,用于接收用戶發(fā)出的翻頁(yè)閱讀需簽名數(shù)據(jù)所包含的各項(xiàng)的操作指令。
4.如權(quán)利要求1所述的設(shè)備,其特征在于所述用戶通知單元包括顯示屏,用于全屏顯示或分屏逐項(xiàng)顯示需簽名數(shù)據(jù)包含的各項(xiàng)。
5.如權(quán)利要求1所述的設(shè)備,其特征在于所述數(shù)據(jù)解析單元與服務(wù)端和客戶端上的數(shù)據(jù)解析單元采用同樣的解析器。
6.如權(quán)利要求5所述的設(shè)備,其特征在于所述解析器是可擴(kuò)展標(biāo)記語(yǔ)言XML解析器。
7.如權(quán)利要求1所述的設(shè)備,其特征在于所述數(shù)字簽名設(shè)備是USB Key。
8.一種數(shù)字簽名過(guò)程中需簽名數(shù)據(jù)的確認(rèn)方法,客戶端向服務(wù)端發(fā)出請(qǐng)求消息之后,該方法包括步驟A、客戶端收到服務(wù)端返回的響應(yīng)消息后,向數(shù)字簽名設(shè)備發(fā)送包含需簽名數(shù)據(jù)的指令;B、數(shù)字簽名設(shè)備從收到的指令中解析出需簽名數(shù)據(jù),并通知用戶進(jìn)行確認(rèn)。
9.如權(quán)利要求8所述的方法,其特征在于步驟B進(jìn)一步包括數(shù)字簽名設(shè)備將需簽名數(shù)據(jù)逐項(xiàng)通知給用戶或一次性全部通知給用戶進(jìn)行確認(rèn)。
10.如權(quán)利要求8所述的方法,其特征在于還包括步驟C、所有的需簽名數(shù)據(jù)都被用戶確認(rèn)時(shí),數(shù)字簽名設(shè)備開(kāi)始數(shù)字簽名運(yùn)算。
11.如權(quán)利要求8所述的方法,其特征在于還包括步驟C、需簽名數(shù)據(jù)被用戶否定時(shí),數(shù)字簽名設(shè)備拒絕進(jìn)行簽名。
12.如權(quán)利要求8所述的方法,其特征在于數(shù)字簽名設(shè)備與服務(wù)端和客戶端遵循同一種編解碼格式。
13.如權(quán)利要求12所述的方法,其特征在于所述編解碼格式是可擴(kuò)展標(biāo)記語(yǔ)言XML格式。
14.如權(quán)利要求8所述的方法,其特征在于所述數(shù)字簽名設(shè)備是USB Key。
全文摘要
本發(fā)明公開(kāi)一種確認(rèn)需簽名數(shù)據(jù)的數(shù)字簽名設(shè)備及其確認(rèn)數(shù)據(jù)的方法。一方面,該設(shè)備包括連接到中央控制器上的需簽名數(shù)據(jù)確認(rèn)裝置。該裝置包括指令判斷單元,用于判斷數(shù)字簽名設(shè)備從客戶端收到的指令的類(lèi)型,并在判斷為包含需簽名數(shù)據(jù)的指令時(shí)將其指令體傳遞給數(shù)據(jù)解析單元;數(shù)據(jù)解析單元,用于從傳遞過(guò)來(lái)的指令體中解析出需簽名數(shù)據(jù);用戶通知單元,用于將解析出來(lái)的需簽名數(shù)據(jù)通知用戶進(jìn)行確認(rèn)。另一方面,該方法包括客戶端向服務(wù)端發(fā)出請(qǐng)求消息之后,客戶端收到服務(wù)端返回的響應(yīng)消息時(shí)向數(shù)字簽名設(shè)備發(fā)送指令;數(shù)字簽名設(shè)備從指令中解析出需簽名數(shù)據(jù),并通知用戶進(jìn)行確認(rèn)。實(shí)現(xiàn)了在安全設(shè)備上對(duì)數(shù)據(jù)進(jìn)行確認(rèn),確保進(jìn)行簽名的數(shù)據(jù)是正確的。
文檔編號(hào)H04L29/06GK1988444SQ20051013500
公開(kāi)日2007年6月27日 申請(qǐng)日期2005年12月23日 優(yōu)先權(quán)日2005年12月23日
發(fā)明者高翔, 雷繼業(yè) 申請(qǐng)人:北京握奇數(shù)據(jù)系統(tǒng)有限公司