專利名稱:保密交易的方法、設(shè)備、系統(tǒng)和固件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種保密交易用的方法、設(shè)備和固件。尤其,在基于電子模塊的系統(tǒng)中,可以將模塊構(gòu)造成至少提供保密數(shù)據(jù)傳輸、數(shù)字簽名,或者授權(quán)進(jìn)行貨幣交易。
相關(guān)技術(shù)的描述目前,具有相關(guān)磁條的信用卡是在市場上較佳的的貨幣交易媒體。信用卡用戶可以將卡拿到自動取款機(jī)、本地商店或銀行,并進(jìn)行貨幣交易。在許多情況下,可以通過電話接口用卡進(jìn)行貨幣兌換。磁條卡用來幫助識別卡和卡的使用者??閭鬟f提供了程度相當(dāng)?shù)偷谋C苄?。不管怎樣,卡可使卡的持有者購買產(chǎn)品、支付債款,并在獨(dú)立的銀行帳戶之間進(jìn)行貨幣兌換。
已對磁條卡作了改進(jìn)。已出現(xiàn)用微電路代替磁條的卡。一般與磁條一樣,微電路被用來使讀卡機(jī)進(jìn)行交易。
發(fā)明內(nèi)容
本發(fā)明是用于在一較佳的便攜式模塊和一服務(wù)供應(yīng)者設(shè)備之間傳遞加密信息的設(shè)備、系統(tǒng)和方法。本發(fā)明包括一模塊,它具有專用識別,能夠產(chǎn)生隨機(jī)數(shù)(例如SALT),并將隨機(jī)數(shù)與例如兌換貨幣的請求一起傳送給服務(wù)供應(yīng)者的設(shè)備。作為回復(fù),服務(wù)供應(yīng)者的設(shè)備可以(根據(jù)交易的類型)用秘密或公開密鑰對隨機(jī)數(shù)和其它信息進(jìn)行加密,并將加密信息作為經(jīng)簽名的證明送回模塊。收到經(jīng)簽名的證明后,模塊將根據(jù)交易的類型用公共或秘密密鑰對該證明解密,并將解密后的數(shù)值與原始的隨機(jī)數(shù)進(jìn)行比較。另外,如果數(shù)值相同,那么可以認(rèn)為被請求的交易是保密的,從而進(jìn)行交易。模塊能夠?qū)灰仔畔⒆鲿r間標(biāo)記,并將交易信息存儲在存儲器中,以便事后查看。
附圖概述結(jié)合附圖閱讀以下詳細(xì)描述,可以更全面地理解本發(fā)明的方法和設(shè)備,其中
圖1是一模塊實(shí)施例的方框圖;圖2例示了創(chuàng)建一交易組的過程;圖3例示了接收一電子郵件(E-mail)消息的技術(shù);圖4例示了為公證函數(shù)準(zhǔn)備模塊的技術(shù);圖5例示了把模塊用作的公證的技術(shù);圖6例示了準(zhǔn)備一模塊以進(jìn)行貨幣交易的技術(shù);圖7例示了用一模塊進(jìn)行貨幣交易的技術(shù);圖8例示了用一模塊進(jìn)行貨幣交易的技術(shù);圖9例示了用一模塊進(jìn)行貨幣交易的技術(shù);圖10例示了通過網(wǎng)絡(luò)傳遞數(shù)據(jù)的技術(shù);圖11例示了模塊內(nèi)軟件和固件的結(jié)構(gòu);圖12例示了模塊內(nèi)軟件和固件的結(jié)構(gòu)。
目前較佳實(shí)施例的詳細(xì)描述圖1例出了體現(xiàn)本發(fā)明一實(shí)施例的模塊10的方框圖。模塊電路是單一的集成電路??梢岳斫?,模塊10也可以是組合在起的多個集成或離散的元件電路。模塊10包括微處理器12、實(shí)時時鐘14、控制電路16、數(shù)學(xué)協(xié)處理器18、存儲電路20、輸入/輸出電路26以及能量電路。
可以將模塊做得足夠小,以便將其包含在各種物品中,包括(但不局限于)紀(jì)念品、卡、戒子、計算機(jī)、錢包、鑰匙鏈、徽章、寶石、郵票或者使用者可以實(shí)際抓握或掛鉤的任何物品。
微處理器12最好是8位微處理器,但也可以是16、32、64或任何可操作的位數(shù)。時鐘14為模塊電路提供計時。也可以用分立的時鐘電路14,提供連接運(yùn)行的實(shí)時時鐘。
數(shù)學(xué)協(xié)處理器電路18設(shè)計用來處理非常大的數(shù)。具體地說,協(xié)處理器將處理RSA加密和解密的復(fù)雜數(shù)學(xué)。
存儲電路20可以包含只讀存儲器和非易失性隨機(jī)存取存儲器。另外,本領(lǐng)域的普通技術(shù)人員應(yīng)該理解,可以用易失性存儲器、EPROM、SRAM和各種其它類型的存儲電路建立一個等效的裝置。
控制電路16為整個電路提供定時、鎖定和各種必要的控制功能。
輸入/輸出電路26能與模塊10進(jìn)行雙向通信。輸入/輸出電路26最好至少包括一個輸出緩沖器28和一個輸入緩沖器。為通過單線總線進(jìn)行通信,可以輸入/輸出電路26中包括單線接口電路32。
對于維持存儲電路20工作和/或?yàn)槟K10中的其它電路提供輔助電能,能量電路34是必須的。能量電路34可以包括電池、電容器、R/C電路、光電電池或任何其它等效的產(chǎn)生能量的電路或裝置。
現(xiàn)在將討論保密交易模塊一實(shí)施例的固件結(jié)構(gòu)和使用模塊10的一系列應(yīng)用舉例。這些例子試圖說明模塊10的一組較佳特性,并解釋該模塊提供的服務(wù)。這些應(yīng)用決不限制本發(fā)明的能力,而是舉例揭示它的能力。I.關(guān)于較佳模塊及其固件設(shè)計的概述模塊10最好包括通用8051兼容微控制器12或合理的相似產(chǎn)品;連續(xù)運(yùn)行的實(shí)時時鐘14;對大整數(shù)進(jìn)行操作的高速模乘冪加速器(high-speed modularexponentiation accelerator)(數(shù)學(xué)協(xié)處理器)18;具有單線接口32的用于發(fā)送和接收數(shù)據(jù)的輸入和輸出緩沖器28,30;具有預(yù)編程固件的32千字節(jié)的ROM存儲器22;用于存儲關(guān)鍵數(shù)據(jù)的8千字節(jié)的NVRAM(非易失性RAM);以及控制電路16,該電路能使微控制器12加上電源,從而解釋位于輸入電路26中的數(shù)據(jù),并對該數(shù)據(jù)起作用。模塊10從單線線路汲取其工作電源。最好將微控制器12、時鐘14、存儲器20、緩沖器28和30、單線前端32、模乘冪加速器18以及控制電路16集成在單個硅片上,并用封裝技術(shù)將它們組裝在一個不銹鋼的微型罐中,其中所用的安裝技術(shù)實(shí)質(zhì)上不可能在探測NVRAM24中的數(shù)據(jù)時不破壞該數(shù)據(jù)。最初。大多數(shù)的NVRAM24都可用來支持諸如下述的應(yīng)用。普通的技術(shù)人員將理解,存在許多可對比的模塊設(shè)計變化。例如,可以使用易失性存儲器,或者使用接口而不用單線??梢詫⒐杵惭b在信用卡、戒子等物品中。
模塊10最好首先由服務(wù)供應(yīng)者(Service Provider)使用,服務(wù)供應(yīng)者將數(shù)據(jù)裝入模塊10,使其實(shí)現(xiàn)有用的功能,其次由端點(diǎn)用戶(End User)使用,端點(diǎn)用戶向模塊10發(fā)出命令,從而為了端點(diǎn)用戶的利益以服務(wù)供應(yīng)者的名義進(jìn)行操作。為此,模塊10提供功能,以支持服務(wù)供應(yīng)者為一計劃中的應(yīng)用建立模塊。它還提供功能,以允許端點(diǎn)用戶調(diào)用服務(wù)供應(yīng)者提供的服務(wù)。
每個服務(wù)供應(yīng)者可以通過創(chuàng)建一個交易組40(參見圖11和12)而保留一塊NVRAM存儲器,支持它的服務(wù)。交易組40只是一組由服務(wù)供應(yīng)者定義的對象(object)42。這些對象42包括數(shù)據(jù)對象(加密密鑰、交易計數(shù)、錢款數(shù)額、日期/時間標(biāo)標(biāo)志等)和交易腳本(transaction script)44,其中交易腳本規(guī)定了如何以有用的方式組合數(shù)據(jù)對象。每個服務(wù)供應(yīng)者創(chuàng)建其自己的獨(dú)立于每個其它交易組的交易組40。因此,多個服務(wù)供應(yīng)者可以在同一個模塊10中提供不同的服務(wù)??梢灾С值姆?wù)供應(yīng)者的數(shù)量依賴于每個交易組40所定義的對象42的數(shù)量和復(fù)雜性。以下例舉了一些可在交易組40內(nèi)定義的對象42RSA模數(shù)時鐘偏移RSA指數(shù)隨機(jī)SALT交易腳本 配置數(shù)據(jù)交易計數(shù)器 輸入數(shù)據(jù)貨幣寄存器 輸出數(shù)據(jù)破壞器在每個交易組40內(nèi),模塊10將最初接受某些具有不可撤消效果的命令。一旦在某個交易組40中執(zhí)行了這些不可撤消命令中的任何一些,它們將保持有效,直至模塊的可用壽命終止或者直至從模塊10中刪除應(yīng)用的交易組40。另外,存在一些命令,它們具有不可撤消的效果直至模塊壽命終止或者直至發(fā)出主擦除,以擦除模塊10的整個內(nèi)容。以下將對這些命令作進(jìn)一步的討論。這些命令是服務(wù)供應(yīng)者對端點(diǎn)用戶執(zhí)行的操作進(jìn)行必要控制所必須的。一些不可撤消命令的例子有Privatize Object Lock ObjectLock Transaction GroupLock Micro-In-A-CanTM由于模塊的許多作用集中在其保密的能力上,所以Privatize命令是一個非常重要的不可撤消的命令。
一旦將模塊10作為一個整體鎖定,便將剩余的NVRAM 24存儲器分配給一個循環(huán)緩沖器,用于支持對在先交易的審計跟蹤。每個交易由交易組的標(biāo)號、規(guī)定組內(nèi)交易腳本40的標(biāo)號以及日期/時間標(biāo)志來識別。
由固件實(shí)現(xiàn)的基本概念是服務(wù)供應(yīng)者可以將交易腳本44存儲在一個交易組40中,以便只執(zhí)行諸對象中他希望端點(diǎn)用戶能夠執(zhí)行的那些操作。服務(wù)供應(yīng)者還可以存儲和秘密化RSA密鑰或者允許模塊10以服務(wù)供應(yīng)者的名義對交易“簽名”的密鑰(加密密鑰),并將這些密鑰秘密化,從而保證它們的可靠性。通過使交易組40中的一個或多個對象42秘密化并/或?qū)⑵滏i定,服務(wù)供應(yīng)者保持對允許模塊10以其名義做什么進(jìn)行控制。端點(diǎn)用戶不能添加新的交易腳本44,并因此被限制于對可以用服務(wù)供應(yīng)者編程的交易腳本44執(zhí)行的對象42進(jìn)行操作。II.模塊的使用模型本節(jié)說明模塊10的一系列實(shí)際應(yīng)用,涉及最簡單的至最復(fù)雜的。這些應(yīng)用中的每一個都將作詳細(xì)描述,以便清楚為什么模塊10是該應(yīng)用的主要實(shí)現(xiàn)技術(shù)。A.保密電子郵件的背景在本節(jié)中,我們提供了一例如何使用模塊10以允許任何人在任何地方保密地接收他或她自己的電子郵件。
1.標(biāo)準(zhǔn)的電子郵件在標(biāo)準(zhǔn)的電子郵件系統(tǒng)中,用戶的計算機(jī)與Internet服務(wù)供應(yīng)者相連,并且當(dāng)對供應(yīng)者計算機(jī)查詢新郵件時,用戶的計算機(jī)要提供一個郵件口令。郵件以明文形式駐留在供應(yīng)者的計算機(jī)中,可被在那里工作的任何人閱讀。另外,當(dāng)郵件從它的源地傳送時,它會經(jīng)過許多計算機(jī),并且也暴露在這些位置上。如果用戶通過局域網(wǎng)絡(luò)從他的供應(yīng)者那里接收到他的郵件,那么同一網(wǎng)絡(luò)上的其它任何人都可以獲得并閱讀該郵件。終于,利用許多不要求用戶輸入口令的郵件系統(tǒng),坐在用戶計算機(jī)旁的任何人都可以檢索和閱讀他的郵件,因?yàn)楫?dāng)查詢供應(yīng)者的計算機(jī)時,他的計算機(jī)自動提供口令。
還經(jīng)??梢詮挠脩粲嬎銠C(jī)的配置文件中復(fù)制口令,并用它從不同計算機(jī)中閱讀到他的郵件。作為這種廣泛分布的明文形式的郵件以及較弱的口令保護(hù)的結(jié)果,標(biāo)準(zhǔn)的電子郵件被認(rèn)為是非常不保密的。
為了克服該問題,已設(shè)計出稱為P.G.P.(Pretty Good Privacy)的保密系統(tǒng)。為了使用P.G.P,用戶產(chǎn)生一個包含公共部分和秘密部分的完整的RSA密鑰集。通過將公開密鑰放在他所有電子郵件消息的簽名塊中并按排在P.G.P.公開密鑰的可以公共訪問的目錄中公布,用戶使其公開密鑰可被廣泛使用。他將其秘密密鑰存儲在他自己的個人計算機(jī)上,也許以口令保護(hù)的形式。當(dāng)有人希望向該用戶發(fā)送秘密電子郵件時,他產(chǎn)生一個隨機(jī)IDEA加密密鑰,并用IDEA加密算法對整個消息加密。然后,他用預(yù)期的接收者所提供的公開密鑰對IDEA密鑰本身加密。他以電子郵件形式將用IDEA加密的消息和用用戶公開密鑰加密的IDEA密鑰發(fā)送給該用戶。由于用IDEA對消息加密以及用預(yù)期接收者的公開密鑰對IDEA密鑰加密,所以除非是預(yù)期的接收者,其它看見這次傳輸?shù)娜魏稳硕疾荒茏x出它。接收者的計算機(jī)包含相應(yīng)的秘密密鑰,并因此可以對IDEA密鑰解密,以及用經(jīng)解密的IDEA密鑰對消息解密。這針對那些試圖遠(yuǎn)程閱讀用戶郵件的人采取了保密措施,但當(dāng)其他人可以訪問該用戶的計算機(jī)時,因用戶計算機(jī)本身包含秘密密鑰而使效力便降低了。即使秘密密鑰是用口令保護(hù)的,但經(jīng)常容易猜出用戶口令或者當(dāng)用戶輸人口令時對他進(jìn)行偷看,所以用戶計算機(jī)幾乎不能保密。另外,因?yàn)橛脩舻拿孛苊荑€存儲在其自己的計算機(jī)上且其它地方?jīng)]有,所以接收者只能在該計算機(jī)上接收保密的電子郵。因此,P.G.P的弱點(diǎn)在于它被嚴(yán)格地局限于存有秘密密鑰的用戶計算機(jī)。
2.保護(hù)模塊的電子郵件利用用來保護(hù)電子郵件的例示模塊10,用戶可以將他的電子郵件轉(zhuǎn)寄至他前往的任何地方,無需害怕他人讀取或者他的PC機(jī)是危及其郵件安全性的弱鏈路。保護(hù)模塊的電子郵件系統(tǒng)類似于P.G.P.系統(tǒng),只是將用來對IDEA密鑰解密的秘密密鑰存儲在模塊10的某交易組的一個秘密化對象中,而不是存儲在PC機(jī)中。保護(hù)模塊的電子郵件系統(tǒng)操作如下a.參照圖2、11和12,在S1,用戶創(chuàng)建一個交易組40,在S2,產(chǎn)生一個RSA密鑰集,并且將其裝入交易組40的三個對象42(一個RSA模數(shù)對象N,和兩個RSA指數(shù)對象E和D)中。然后在S3,他將解密指數(shù)D秘密化。最后在S4,他創(chuàng)建一個交易腳本44,以便取出位于輸入數(shù)據(jù)對象中的數(shù)據(jù),用模數(shù)N對其加密并將指數(shù)D秘密化,并且將結(jié)果放在輸出數(shù)據(jù)對象中。在S5,他鎖定組,防止添加任何其它的交易腳本44。他“忘記”了D的值,并在公共目錄和他的電子郵件消息的簽名塊中公開E和N的值。由于他已經(jīng)忘記了D并且已經(jīng)使D的指數(shù)對象秘密化,所以任何人都沒有辦法找到D的值。
b.參照圖3,為了把保密的電子郵件發(fā)送給用戶,使用P.G.P.系統(tǒng)。當(dāng)在A1處用戶接收到保密電子郵件時,在A2,他把經(jīng)加密的IDEA密鑰輸送到交易組40的輸入數(shù)據(jù)對象中,然后在A3,他調(diào)用交易腳本44,對該密鑰解密,并在A4將經(jīng)解密的結(jié)果放在輸出數(shù)據(jù)對象中。然后他從輸出數(shù)據(jù)對象中讀取經(jīng)解密的IDEA密鑰,并在A5,用它對他的郵件解密。注意,現(xiàn)在任何人,包括用戶,都不可能在非實(shí)際擁有模塊10的情況下閱讀任何新的郵件。因此由于閱讀郵件的計算機(jī)上必須實(shí)際存在模塊10,所以沒有用戶的知識就無法讀取他的郵件。用戶可以把他的模塊10帶到他去的任何地方,并能在任何地方用它閱讀他的轉(zhuǎn)寄郵件。他家中的計算機(jī)不是保密系統(tǒng)的弱點(diǎn)。
上述保密電子郵件是最簡單可行的模塊應(yīng)用,它只要求一個RSA密鑰和一個交易腳本44。它甚至不必將公開密鑰E存儲在模塊10中,而由于公開密鑰被認(rèn)為是公眾可以得到的,所以這樣做是個好辦法。通過將E存儲在一個指數(shù)對象中并且不把該對象或模數(shù)對象N秘密化,用戶可以確??偰軓哪K10中讀到公開密鑰。由于不會要求模塊10進(jìn)行加密操作,所以交易腳本44都不包含E。B.數(shù)字公證業(yè)務(wù)本節(jié)描述了使用模塊10的較佳公證業(yè)務(wù)。
1.標(biāo)準(zhǔn)公證服務(wù)的背景傳統(tǒng)的公證服務(wù)供應(yīng)者接收并檢查來自端點(diǎn)用戶的文件,然后在文件上提供防偽標(biāo)記,表示該文件是在某日送交公證人的,等等。這類公證業(yè)務(wù)的一種應(yīng)用可以是記錄對新發(fā)明的揭示,從而如果必要,以后可以在法院建立發(fā)明的優(yōu)先權(quán)。在該情況下,公證員提供的最重要的服務(wù)是證明發(fā)明人在某日擁有該發(fā)明。(用來建立優(yōu)先權(quán)的傳統(tǒng)方法是使用一個lab記事本,發(fā)明人和公證員在記事本上簽名,并記錄揭示重要發(fā)明的日期。)2.使用模塊的電子公證業(yè)務(wù)有家公司(以下稱為服務(wù)供應(yīng)者)決定從商,為其客戶(以下稱為端點(diǎn)用戶)提供公證業(yè)務(wù)(嚴(yán)格地說,是優(yōu)先權(quán)證明業(yè)務(wù))。服務(wù)供應(yīng)者通過把模塊10用作它的“代理”來選擇做這項(xiàng)工作,并授權(quán)它們以他的名義對文件進(jìn)行認(rèn)證(記錄日期并簽名)。以下是該系統(tǒng)的較佳工作方式a.參照圖4、11和12,在B1,服務(wù)供應(yīng)者創(chuàng)建一個交易組40,以便在模塊10的一個“注冊點(diǎn)(registered lot)”中實(shí)現(xiàn)電子公證功能。
b.在B2,服務(wù)供應(yīng)者使用保密計算設(shè)備,生成一個RSA密鑰集并將其編程到每個模塊10中,成為由三個對象42構(gòu)成的組,該三個對象是一個模數(shù)對象和兩個指數(shù)對象。盡可能使密鑰集中的公共部分廣泛地公知,并且服務(wù)供應(yīng)者完全忘記秘密部分。使秘密指數(shù)對象秘密化,以防止從模塊10中讀回它。
c.服務(wù)供應(yīng)者從每個模塊10中閱讀實(shí)時時鐘14,并創(chuàng)建一個時鐘偏移對象,該對象包含實(shí)時時鐘14之讀數(shù)與一些方便的參照時間(例如,1970年1月1日上午1200)之間的差。然后,在B3,可以通過對實(shí)時時鐘加上時鐘偏移對象的值,從任何模塊10中獲得實(shí)際的時間。
d.在B4,服務(wù)供應(yīng)者創(chuàng)建一個交易序列計數(shù)器對象(transaction sequencecounter object),該對象初始為零。
e.服務(wù)供應(yīng)者創(chuàng)建一個交易腳本44,該交易腳本把輸入數(shù)據(jù)對象的內(nèi)容加至實(shí)際時間(實(shí)際時間是實(shí)時時鐘14與時鐘偏移對象之值的和)后,隨后是交易計數(shù)器的值,再后是特有的激光登記號(unique lasered registration number)。然后,交易腳本44規(guī)定用秘密密鑰對所有這一日期加密,并將所有日期放在輸出數(shù)據(jù)對象中。在B5,將進(jìn)行該操作的指令作為交易腳本對象存儲在交易組40中。
f.在B6,將其它任何對象42秘密化,它不希望直接可讀或可寫。
g.在B7,服務(wù)供應(yīng)者鎖定交易組40,防止增加任何附加的交易腳本44。
h.參照圖5,現(xiàn)在服務(wù)供應(yīng)者將模塊分配給付款客戶(端點(diǎn)用戶),供公證業(yè)務(wù)使用。當(dāng)端點(diǎn)用戶希望公證某一文件時,端點(diǎn)用戶執(zhí)行保密散列算法(規(guī)定于保密散列標(biāo)準(zhǔn),聯(lián)邦信息處理標(biāo)準(zhǔn)Pub.180),以便將整個文件縮小至20字節(jié)的消息摘要。然后,在C1,端點(diǎn)用戶將20字節(jié)的消息摘要發(fā)送給輸入數(shù)據(jù)對象,并且在C2,訪問交易腳本44,將消息摘要與實(shí)際時間、交易計數(shù)以及特有的激光序列號匯集在一起,并用秘密密鑰對所得的數(shù)據(jù)包簽名。
i.在C3,端點(diǎn)用戶通過用公開密鑰對證明解密并檢查消息摘要和實(shí)際時間標(biāo)志等,檢查該證明,以確保它們是正確的。然后,在C4,端點(diǎn)用戶以數(shù)字形式存儲該數(shù)字證明以及文件的原始復(fù)印件。服務(wù)供應(yīng)者將證明由其模塊提供的證明的真實(shí)性。
j.在服務(wù)供應(yīng)者規(guī)定的一段時間之后,用戶返回他的模塊10,付款,并獲得一個包含新的秘密密鑰的新模塊。舊模塊可以通過擦除整個交易組并且對它們重新編程而被循環(huán)使用。服務(wù)供應(yīng)者保留一個它所用過的所有公開密鑰的存檔,以便在需要時證明舊證明的真實(shí)性。C.數(shù)字投幣機(jī)(cash dispenser)該例對模塊的使用是將模塊1用作一個存款箱,由此對貨物或服務(wù)進(jìn)行付款。(為了便于討論,推遲討論用現(xiàn)金重新裝滿模塊10的主題)。在該情況下,服務(wù)供應(yīng)者是銀行或其它金融機(jī)構(gòu),端點(diǎn)用戶是銀行的儲戶,希望用模塊10進(jìn)行購物,并且商家是被購貨物或服務(wù)的供應(yīng)商。以下將詳細(xì)說明服務(wù)供應(yīng)者、商家以及端點(diǎn)用戶在這些交易中的作用。
如在模塊10中實(shí)現(xiàn)的數(shù)字錢包的基本概念是,模塊10最初包括一個含給定款值的鎖定的貨幣對象,并且模塊10可以經(jīng)請求生成證明,這些證明基本上是簽過名的文件,可以證明曾從貨幣對象的值中減去過所要求款額的事實(shí)。由于這些簽名文件證明了曾將內(nèi)部貨幣對象的值減去過對應(yīng)于證明值的數(shù)值的事實(shí),所以它們等效于現(xiàn)金。商家可以通過把它們還給服務(wù)供應(yīng)者,而用這些證明贖回現(xiàn)金。
當(dāng)處理代表現(xiàn)金的數(shù)字證明時,“重放”或復(fù)制是一個基本的問題。由于很容易復(fù)制和再傳輸數(shù)字?jǐn)?shù)據(jù),所以它不同于普通硬幣或紙幣,由于在制造硬幣和紙幣過程中使用了特殊的技術(shù),所以重造錢幣是很困難的。為此,收款人必須采取特殊的步驟,以確保他所收到的數(shù)字證明不是對一些早期發(fā)放的證明的重放。通過收款人生成一個隨機(jī)的“SALT”,這是一個詢問數(shù)(challenge number),并將它提供給付款人,便可解決這個問題。
SALT是一種防止重放的方法。隨機(jī)數(shù)在一種詢問/回答的模式下發(fā)送和使用。要求另一方返回該隨機(jī)數(shù),作為他們回答的一部分。
付款人構(gòu)造一份簽名證明,該證明包括錢款數(shù)額和收款人的SALT。當(dāng)收款人收到該證明時,他用公開密鑰對其解密,檢查錢款數(shù)額,然后確認(rèn)SALT與他提供的相同。通過使證明成為收款人秘密的,付款人向收款人保證該證明不是復(fù)制件或重放件,因些它是可靠的。無論模塊10是否為付款人或收款人,都可以使用該方法。
另一個必須解決的問題是不能否認(rèn)。這意味著交易的雙方都應(yīng)該不能爭辨他實(shí)際上沒有參與交易。交易記錄(錢款證明)應(yīng)該包含項(xiàng)目,以證明交易的每一方都是自愿參加者。
1.傳統(tǒng)現(xiàn)金交易的背景在傳統(tǒng)的現(xiàn)多交易中,端點(diǎn)用戶首先接收來自銀行的聯(lián)邦儲備券(FederalReserve Note),并且銀行從他帳戶的余額中減去等價的錢款數(shù)額。端點(diǎn)用戶利用“公開密鑰”可以證明聯(lián)邦儲備券的可靠性,包括a.可被一磁體吸引的磁性油墨;b.埋在紙中的紅藍(lán)細(xì)線;c.雕像周圍的微細(xì)印刷;d.與USA和券的面額一起印刷的嵌條。
該系統(tǒng)的“秘密密鑰”是如何獲得用于印刷錢幣的原材料以及如何實(shí)際印刷錢幣的細(xì)節(jié)。該信息由政府保存,不會泄露。端點(diǎn)用戶把這些券帶給商家,與其交換貨物或服務(wù)。商家也用儲備券的“公開密鑰”證明他們是合法的。
最后,商家把儲備券帶到銀行,出納員再次檢查“公開密鑰”。如果儲備券是合法的,那么商家銀行帳戶的余額就會增加這些儲備券的面值。
該交易的最終結(jié)果是,端點(diǎn)用戶的銀行余額減少,商家的銀行余額增加相同的數(shù)額,貨物或服務(wù)從商家轉(zhuǎn)移到端點(diǎn)用戶,并且聯(lián)邦儲備券可以再用于其它的交易。
2.用模塊進(jìn)行貨幣交易的舉例由于數(shù)字?jǐn)?shù)據(jù)與聯(lián)邦儲備券不同,容易對它們拷貝和復(fù)制,所以用模塊10和數(shù)字證明進(jìn)行貨幣交易有些復(fù)雜。然而,使用“SALT”和交易序號可以保證數(shù)字證明的可靠性。(在以下討論中,假設(shè)交易的每一方都有自己的帶秘密密鑰的RSA密鑰組,能夠保密。)a.參照圖6,服務(wù)供應(yīng)者(銀行)通過創(chuàng)建一個交易組40制備了模塊10,其中交易組40包含表示存儲在模塊10中貨幣值的貨幣對象。在D1,服務(wù)供應(yīng)者還創(chuàng)建一個交易計數(shù)器對象、一個模數(shù)對象和一個指數(shù)對象,并將供應(yīng)者的秘密密鑰存儲在指數(shù)對象中。在D2,他將密鑰秘密化,使它不能被讀取。接著,在D3和D4,他將交易腳本44存儲在交易組40中以便進(jìn)行貨幣交易,并且鎖定交易組,以致于不能再建立其它對象。(以下將進(jìn)一步詳細(xì)描述該交易腳本干什么。)最后在D5,他廣泛公開相應(yīng)的公開密鑰,使任何人都可以獲得它。
b.端點(diǎn)用戶接收來自服務(wù)供應(yīng)者的模塊10,并且把存儲在模塊10中的數(shù)額記入端點(diǎn)用戶銀行帳戶的借方。利用PC機(jī)或手提式計算機(jī),端點(diǎn)用戶可以質(zhì)詢模塊10,以便證明余額是正確的。
c.參照圖7,當(dāng)在E1,端點(diǎn)用戶希望向商家購買一些物品或服務(wù)時,在E2和E3,商家讀取模塊特有的激光登記號,并將其與隨機(jī)的SALT一起放在一個數(shù)據(jù)包中。然后在E4,商家用商人自己的秘密密鑰對該數(shù)據(jù)包簽名,并且在E5,將所得的經(jīng)加密的數(shù)據(jù)包與購買金額一起發(fā)送給交易組40的輸入數(shù)據(jù)對象。
d.然后,商家調(diào)用由服務(wù)供應(yīng)者編入模塊10的交易腳本。在E6,該交易腳本44從貨幣對象中減去購買金額,在E7,將交易計數(shù)器對象的值加到輸入數(shù)據(jù)對象的內(nèi)容上,并且在E8,用秘密密鑰對所得的數(shù)據(jù)包簽名并將結(jié)果入在輸出數(shù)據(jù)對象中。
e.,然后,在E9,商家從輸出數(shù)據(jù)對象中讀取結(jié)果,并用服務(wù)供應(yīng)者的公開密鑰對其解密。然后,在E10,他確認(rèn)購買的數(shù)額是正確的,并且剩余數(shù)據(jù)與他在步驟c中簽名的數(shù)據(jù)包相同。
f.在E11,在確認(rèn)了模塊10提供的證明可靠且為原件(非復(fù)制件)之后,商家發(fā)送貨物或服務(wù)。之后,商家把數(shù)字證明送到銀行。
g.在E12,銀行用服務(wù)供應(yīng)者的公開密鑰對證明解密,取出購買金額和交易計數(shù),并在E14用商家的公開密鑰對剩余數(shù)據(jù)解密,以揭示模塊的特有激光登記號。然后,銀行在一數(shù)據(jù)庫中用特有的激光登記號對模塊10進(jìn)行查尋,以便確認(rèn)以前沒有提交過該交易的交易計數(shù)。當(dāng)測試通過時,在E15,銀行把交易計數(shù)值加到數(shù)據(jù)庫中,然后使商家的銀行余額增加購買的金額。已由模塊10和商家對證明各部分簽名的事實(shí)確認(rèn)了交易是商家和模塊10兩方自愿同意的。
注意,存在許多不同的方式對交易計數(shù)值、特有的激光登記號、收款人提供的隨機(jī)SALT以及用模塊秘密密鑰、或商家秘密密鑰或兩者加密的購買金額進(jìn)行數(shù)據(jù)組合。許多組合也能為特有性、可靠性和不可否認(rèn)性提供令人滿意的保證,并且對固件的設(shè)計使服務(wù)供應(yīng)者適于書寫交易腳本44,以滿足他的特殊需要。D.數(shù)字現(xiàn)金補(bǔ)充以上在第II.C.節(jié)中對數(shù)字現(xiàn)金錢包的討論沒有解決現(xiàn)金補(bǔ)充的問題。如第II.C.節(jié)所討論的,服務(wù)供應(yīng)者可以簡單地通過添加另一個含服務(wù)供應(yīng)者公開密鑰的模數(shù)對象和指數(shù)對象、一個隨機(jī)SALT對象以及一個交易腳本,為模塊10增加現(xiàn)金補(bǔ)充的能力,從而將錢款添加到余額中。服務(wù)供應(yīng)者可以親自或者通過網(wǎng)絡(luò)遠(yuǎn)距離地對模塊增加錢款。增加錢款的過程如下1.參照圖8,在F1和F2,服務(wù)供應(yīng)者讀取模塊的特有激光登記號(ID號),并訪問交易腳本44,以便返回隨機(jī)SALT對象的值。在F3,模塊10由先前值和隨機(jī)數(shù)發(fā)生器計算一個新的隨機(jī)SALT值,并將其返回至服務(wù)供應(yīng)者。
2.在F4,服務(wù)供應(yīng)者將模塊10返回的隨機(jī)SALT與將要增加的錢款數(shù)額和模塊10特有的激光登記號一起放在一個數(shù)據(jù)包中,并用服務(wù)供應(yīng)者的秘密密鑰對所得的數(shù)據(jù)包加密。然后,把該經(jīng)加密的數(shù)據(jù)包寫回到交易組40的輸入數(shù)據(jù)對象中。
3.服務(wù)供應(yīng)者調(diào)用交易腳本44,該交易腳本用服務(wù)供應(yīng)者的公開密鑰對輸入數(shù)據(jù)對象的內(nèi)容解密,然后對照原來提供的數(shù)據(jù),檢查特有的激光登記號和隨機(jī)SALT的值。在F5,如果SALT匹配,那么從數(shù)據(jù)包中取出錢款金額,并將其加到模塊中貨幣對象的值上。
注意,包括特有的激光登記號并不是嚴(yán)格必須的,但包括它可以確保服務(wù)供應(yīng)者正確了解哪個模塊正在接收資金。E.舉例描述在模塊之間直接傳遞資金以上第II.C.2.g.節(jié)揭示了當(dāng)商家將數(shù)字證明返回他的銀行歸于他的帳戶時所產(chǎn)生的問題。商家銀行必須將證明送回服務(wù)供應(yīng)者以便履行,或者訪問一數(shù)據(jù)庫中服務(wù)供應(yīng)者的記錄從而可以確定交易計數(shù)對象的值是否是特有的。這不方便,且要求有基礎(chǔ)設(shè)施。由于商家銀行必須把用過的證明號記錄到一數(shù)據(jù)庫中,以防止重復(fù)使用,所以它還防止進(jìn)行任何匿名的交易(因?yàn)槿绻褂矛F(xiàn)金,交易就會匿名)。通過在模塊之間進(jìn)行資金轉(zhuǎn)移可以消除所有這些問題。另外,在模塊之間實(shí)現(xiàn)資金轉(zhuǎn)移所需的步驟比第II.C.2.節(jié)中描述的步驟簡單得多。
在以下討論中,假設(shè)商家也有一個模塊,用于收集從端點(diǎn)用戶(客戶)那里接收到的資金。端點(diǎn)用戶擁有的模塊將被稱為付款器,而商家擁有的模塊將被稱為收款器。以下是執(zhí)行資金轉(zhuǎn)移的步驟1.參照圖9、11和12,商家用他的計算機(jī)訪問收款器中的交易腳本44,以便提供隨機(jī)SALT。他從交易組40的輸出對象中讀出該SALT。
2.在G1,商家將SALT和端點(diǎn)用戶的購買金額拷貝到付款器的輸入數(shù)據(jù)對象中,然后在G2,商家訪問付款器中的交易腳本44,以便從余額中減去購買金額,將收款器的SALT與購買金額組合到一數(shù)據(jù)包中,用服務(wù)供應(yīng)者的秘密密鑰對所得的數(shù)據(jù)包進(jìn)行加密,并將其返回到輸出數(shù)據(jù)對象中。
3.然后,在G3,商家讀取該數(shù)據(jù)包并將其拷貝到收款器的輸入數(shù)據(jù)對象中,然后訪問收款器中的交易腳本44,以便用服務(wù)供應(yīng)者的公開密鑰對數(shù)據(jù)包解密,并且在G4,參照收款器原始產(chǎn)生的SALT,檢查SALT。如果它們一致,那么收款器將購買金額加到它的余額上。
這就完成了資金轉(zhuǎn)移。注意該交易將購買金額從付款器有效地轉(zhuǎn)移到收款器,并且交易步驟比II.C.2.中描述的三向交易要簡單得多。商家可以通過一次類似的交易將余額轉(zhuǎn)移到他的銀行帳戶上,在所述交易中,銀行將一個SALT提供給商家的模塊,而商家模塊制備一份將傳送給銀行的有關(guān)余額的證明。商家用模塊收集資金簡化了交易,避免了用數(shù)據(jù)庫確認(rèn)特有性的需要,并且保持了現(xiàn)金交易經(jīng)常引起的端點(diǎn)用戶的匿名性。F.通過網(wǎng)絡(luò)用模塊交易的舉例還可以通過網(wǎng)絡(luò)進(jìn)行上述第II.C.2.、II.D.和II.E.節(jié)描述的交易,商家、端點(diǎn)用戶和模塊之間可以存在物理間距。但是,由于與模塊10的通信中有一個不加密,并且該通信會因此而受到偽造,所以這會引發(fā)潛在的問題。為了避免該問題,兩方都必須產(chǎn)生一個SALT,以便另一方可以證明它能夠用服務(wù)供應(yīng)者的秘密密鑰對該SALT加密的能力,并由此證明了可靠性。由于該協(xié)議的操作涉及在模塊之間轉(zhuǎn)移資金(以上的第II.E.節(jié)),所以以下將描述該協(xié)議的操作。該方法可用來使上述任何交易在網(wǎng)絡(luò)上進(jìn)行。顯然,它能夠通過Internet網(wǎng)進(jìn)行保密的電子貿(mào)易。
1.參照圖10、11和12,在H1,付款器產(chǎn)生一個隨機(jī)SALT,并通過網(wǎng)絡(luò)將其發(fā)送給收款器。
2.在H2,收款器將購買金額加到付款器的SALT后,隨后接是收款器隨機(jī)產(chǎn)生的SALT。然后,收款器用服務(wù)供應(yīng)者的秘密密鑰對該數(shù)據(jù)包加密,并將它送回付款器。
3.在H3,付款器用服務(wù)供應(yīng)者的公開密鑰對數(shù)據(jù)包解密,取出付款器的SALT,并將其與付款器在步驟1中提供的SALT進(jìn)行比較。如果它們一致,那么在H4,付款器從它的余額中減去購買金額,并在H5,產(chǎn)生一個由購買金額和收款器SALT組成的證明,其中用服務(wù)供應(yīng)者的秘密密鑰對證明加密,并且將其返回收款器。
4.在H6,收款器用服務(wù)供應(yīng)者的公開密鑰對數(shù)據(jù)包解密,取出收款器SALT,并將其與收款器步驟2中提供的SALT進(jìn)行比較。在H7,如果它們一致,那么收款器將購買金額加到它的余額上。
SALT的交換可使每個模塊確認(rèn)它正在與另一個模塊通信,并且確認(rèn)所要求的資金轉(zhuǎn)移因此是合法的。步驟3中描述的SALT比較可使付款器在提款之前確認(rèn)收款器是一合法的模塊,并且步驟4中描述的比較可使收款器在存款之前確認(rèn)付款器是一合法的模塊。上述交易在加密數(shù)據(jù)包中提供了最少的必要信息,確認(rèn)資金正從一個模塊10轉(zhuǎn)移到另一個模塊??梢砸阅涿麨榇鷥r包括諸如特有激光登記號等其它信息,以便提供附加信息并對交易進(jìn)行更多的控制。G.軟件授權(quán)和應(yīng)用計數(shù)(usage metering)技術(shù)的舉例模塊10非常適用于在綜合軟件系統(tǒng)使能夠提供特殊軟件特點(diǎn)的任務(wù),并且適用于統(tǒng)計這些特點(diǎn)的應(yīng)用。(該用法模型與上述用于從模塊10中提款的模型相同。)1.準(zhǔn)備參照圖11和12,服務(wù)供應(yīng)者創(chuàng)建一個交易組40并將一配置對象存儲在該組中,細(xì)述了端點(diǎn)用戶可以使用模塊10中的哪個軟件。服務(wù)供應(yīng)者還創(chuàng)建一個包含準(zhǔn)用信貸(它可以以時間為單位而不是實(shí)際的美元數(shù))的貨幣對象,并且存儲和秘密化一對RSA秘密密鑰,以用于鑒定。存儲一交易腳本44,用于接收SALT以及從端點(diǎn)用戶提取的金額,用提款金額減余額,并輸出包含提款金額、銷售量以及配置對象值的RSA經(jīng)簽名的證明。
2.應(yīng)用在使用模塊10內(nèi)軟件的周期間隔中,PC程序生成一個隨機(jī)SALT以及使用模塊10的收費(fèi)金額,并將該信息發(fā)送給模塊10。模塊10減少余額并返回證明。PC機(jī)對證明解密并確認(rèn)SALT是相同的,提款金額是正確的,以及存儲在配置對象中的信息授權(quán)使用模塊10內(nèi)的軟件。如果所有這些測試都成功,那么模塊10在向模塊10索要另一個證明前執(zhí)行一段規(guī)定的時間,或者執(zhí)行給定數(shù)目的操作。
該應(yīng)用模型存在許多可能的變化。例如,交易腳本44還可以將實(shí)際時間匯集到證明中,以便PC機(jī)上運(yùn)行的應(yīng)用程序可以保證其執(zhí)行時間精確測量了的。(這可以要求服務(wù)供應(yīng)者在初始化期間創(chuàng)建一個時鐘偏移對象,以便為測量時間提供基準(zhǔn)。)H.對交易接觸式存儲器的模擬該應(yīng)用模型描述了如何用模塊10模擬更簡單的交易接觸式存儲器TM(Transation Touch Memory,以下稱“TTM”)(DS1962),或者可以以接近等效或類似的方式進(jìn)行工作的任何類似的裝置或替代物的行為。TTM的主要特點(diǎn)是存在一個與存儲塊相關(guān)的計數(shù)器,該計數(shù)器以這樣的方式工作,即當(dāng)改變存儲塊的內(nèi)容時自動使計數(shù)器增值。
1.準(zhǔn)備通過創(chuàng)建一個配置對象,一個交易計數(shù)器對象和一個交易腳本對象,可以將該簡單的特點(diǎn)編入模塊10中,其中交易腳本對象將輸入對象的內(nèi)容與交易計數(shù)器對象的值合并,并將它們放在配置對象中,在該過程中自動對計數(shù)器增值。鎖定所有這三個對象42,但不將它們秘密化。
2.應(yīng)用為了增加或提取錢款,端點(diǎn)用戶直接讀取配置對象和交易計數(shù)器對象的值,然后對配置對象解密并參照計數(shù)器對象的值檢查來自解密數(shù)據(jù)包的交易計數(shù)。端點(diǎn)用戶還參照模塊10的登記號檢查來自加密數(shù)據(jù)包的特有激光登記號。如果兩者一致,那么認(rèn)為余額有效。對余額加上或減去一金額,使交易計數(shù)增1,并且再次對數(shù)據(jù)包加密且將其存儲在輸入數(shù)據(jù)對象中。然后,調(diào)用交易腳本44,將數(shù)據(jù)和交易計數(shù)器的值移至配置對象,在該過程中自動增加計數(shù)器的值。(交易腳本44保證當(dāng)改變配置對象中的數(shù)據(jù)時,將增加計數(shù)器對象的值。)由于模塊10本身不必進(jìn)行任何加密,所以這一簡單的操作可以進(jìn)行的相當(dāng)快。但是,與利用TTM一樣,端點(diǎn)用戶現(xiàn)在必須用一個保密的計算設(shè)備進(jìn)行加密和解密操作。因此與那些依賴于模塊加密能力的應(yīng)用相比,該應(yīng)用受到的保護(hù)較弱。I.郵政計費(fèi)業(yè)務(wù)的技術(shù)舉例該應(yīng)用模型描述了用模塊10分發(fā)郵資證明的應(yīng)用。構(gòu)成證明的數(shù)字信息以兩維條形碼的形式被印在信封上,服務(wù)供應(yīng)者(U.S.P.S.)可以閱讀和鑒別條形碼??梢越Y(jié)合模塊10使用在接至激光打印機(jī)的普通PC機(jī)上運(yùn)行的計算機(jī)程序,打印郵資證明。
1.準(zhǔn)備服務(wù)供應(yīng)者創(chuàng)建一個組包含貨幣寄存器、每個模塊公用的RSA秘密密鑰(指數(shù)對象和模數(shù)對象)和交易腳本44。腳本44將SALT和(端點(diǎn)用戶計算機(jī)提供的)要提的金額與特有的激光登記號合并在一起,用秘密密鑰對該數(shù)據(jù)包加密,從余額中減去提款,并將加密證明放在PC機(jī)可以閱讀的輸出對象中。
服務(wù)供應(yīng)者用規(guī)定錢款額對余額初始化,鎖定余額和腳本44,將RSA密鑰對象秘密化,并且鎖定該交易組,以便不能增加更多的腳本。然后,可以在柜臺上銷售用該方式準(zhǔn)備的模塊,以便與基于PC機(jī)的郵資計費(fèi)程序一起使用。
2.應(yīng)用當(dāng)要打印第一張信封時,PC程序通過計算日期的單向散列(例如,保密散列標(biāo)準(zhǔn),F(xiàn)IBS PUB 180)和該部分的特有激光登記號,準(zhǔn)備第一SALT。將該信息連同要提取的郵資金額一起傳送給模塊10。將所得的證明以及散列生成數(shù)(對于第一散列為1)、特有的激光登記號、標(biāo)志的明文命名、日期和希望用來識別端點(diǎn)用戶的其它信息印刷成兩維條形碼。通過對先前的SALT再進(jìn)行單向散列并增加散列生成數(shù),可以生成后續(xù)的SALT。
當(dāng)服務(wù)供應(yīng)者收到信封時,大多數(shù)看面值,并不閱讀數(shù)字條形碼。但是,可以閱讀條形碼的統(tǒng)計樣本,并且用公開密鑰對提供的信息解密,以及核實(shí)信息。檢查差異,并在現(xiàn)有法律下起訴欺騙行為。由于服務(wù)供應(yīng)者可以由特有的激光登記號、日期以及散列生成號重新創(chuàng)建SALT,并由此核實(shí)交易不僅是現(xiàn)時的而且與特定的模塊10鏈接,所以可以進(jìn)行核實(shí)。
注意,上述存在許多可能的變化,它們導(dǎo)致類似的結(jié)果。大多數(shù)相似的欺騙是復(fù)制品,在該行為中,用戶捕獲發(fā)送給打印機(jī)的數(shù)字信息,產(chǎn)生郵資證明,并對相同的證明制作許多復(fù)制件。服務(wù)供應(yīng)者簡單通過閱讀散列生成數(shù)和特有的登記號并在一數(shù)據(jù)庫對其進(jìn)行查找以確信該用戶不在復(fù)制同一證明,便可以容易地探明這一現(xiàn)象。(該檢查比要求RSA解密的完整證明核查更頻繁。)J.訂閱信息業(yè)務(wù)該應(yīng)用模型描述了這樣一種應(yīng)用,即服務(wù)供應(yīng)者通過互連網(wǎng)以加密形式為同意對信息付款的用戶制作可用信息。該應(yīng)用的工作方式與上述第A節(jié)中描述的保密電子郵件應(yīng)用模型正好相同,只是服務(wù)供應(yīng)者就其以電子郵件方式發(fā)給用戶的加密信息給用戶開帳單。帳單信息是從RSA的公開密鑰登記中獲得的,該登記允許服務(wù)供應(yīng)者根據(jù)他的公開密鑰或他的模塊10的特有激光序號進(jìn)行識別并給用戶開帳單。K.擔(dān)保秘密密鑰保密的登記為了向商家獨(dú)立確認(rèn)端點(diǎn)用戶的身份,服務(wù)供應(yīng)者希望保留一個登記,該登記包含特定模塊10的公開密鑰以及姓名、地址和模塊10發(fā)向的個人的其它識別信息。為此,服務(wù)供應(yīng)者必須確保登記中的公開密鑰與只有模塊10知道的秘密密鑰對應(yīng)。為了保證這一要求,當(dāng)從模塊10中取出公開密鑰并將其放在登記中時,模塊10必須由服務(wù)供應(yīng)者擁有。在登記中記錄下該信息后,服務(wù)供應(yīng)者可以將模塊10傳送給登記中命名的端點(diǎn)用戶。
對于端點(diǎn)用戶來說,當(dāng)他接收到模塊10時,能確認(rèn)服務(wù)供應(yīng)者或服務(wù)供應(yīng)者雇員不知道秘密密鑰也是很重要的。由于理想的登記系統(tǒng)應(yīng)該不需要任何一方信任另一方,所以這是重要的。只有當(dāng)能夠使第一方確信另一方不可能知道秘密密鑰,系統(tǒng)工作才能使每個人滿意。
實(shí)現(xiàn)這一要求的方法是,服務(wù)供應(yīng)者向模塊10發(fā)一命令,使它產(chǎn)生用隨機(jī)數(shù)生成一個完整的RSA密鑰集,然后自動使指數(shù)中的一個秘密化,致使沒有人能夠發(fā)現(xiàn)秘密密鑰的值。該密鑰集具有特定的類型,不同于服務(wù)供應(yīng)者編入罐中的密鑰集,因此用模塊直接做生意的任何人都能自己確定只有模塊10知道秘密密鑰。
1.準(zhǔn)備為該應(yīng)用創(chuàng)建一個保護(hù)口令的交易組40,然后在該組中創(chuàng)建一個由模塊生成的RSA密鑰集。(生成密鑰集之后,自動鎖定模數(shù)和一個指數(shù),而模塊10的固件自動將第二指數(shù)秘密化)。然后,服務(wù)供應(yīng)者創(chuàng)建一個交易腳本44,它將用秘密密鑰對來自輸入對象的數(shù)據(jù)加密,并將加密結(jié)果放在輸出對象中。為了滿足應(yīng)用的任何附加目的,交易腳本44可以有選擇地將附加信息(例如,交易計數(shù)器)加到來自輸入對象的數(shù)據(jù)上。還可以以服務(wù)供應(yīng)者的判斷力增加其它對象42和交易腳本44。當(dāng)完成時服務(wù)供應(yīng)者鎖定交易組40。
接著,服務(wù)供應(yīng)者從交易組40中閱讀RSA模數(shù)和公共指數(shù),并將它們與識別端點(diǎn)用戶的信息一起記錄在登記中。最后,服務(wù)供應(yīng)者將模塊10運(yùn)給端點(diǎn)用戶,而后再將可用來訪問交易組40的口令傳送給端點(diǎn)用戶。
2.應(yīng)用當(dāng)商家希望通過Internet或其它網(wǎng)絡(luò)獲得對端點(diǎn)用戶的肯家的識別時,商家會生成一個專用的數(shù)據(jù)包,并將它發(fā)送給端點(diǎn)用戶,然后端點(diǎn)用戶把數(shù)據(jù)傳送到輸入對象中,并調(diào)用交易腳本44,用模塊10生成的密鑰對數(shù)據(jù)加密。將所得的加密數(shù)據(jù)包送回商家。然后,商家訪問服務(wù)供應(yīng)者提供的數(shù)據(jù)庫,以獲得屬于端點(diǎn)用戶的公開密鑰,并試圖用端點(diǎn)用戶的公開密鑰對加密數(shù)據(jù)包解密。如果解密成功,那么商家已經(jīng)證明在網(wǎng)絡(luò)遠(yuǎn)程連接的地方實(shí)際存在端點(diǎn)用戶的模塊10。通過保證在遠(yuǎn)地存在端點(diǎn)用戶的模塊10,該識別結(jié)果使數(shù)據(jù)包的內(nèi)容以及因此由該數(shù)據(jù)包內(nèi)容代表的任何金融交易(可以是端點(diǎn)用戶要求的)有效并合法化。
在這里描述的模型中,進(jìn)行金融交易的權(quán)力來自服務(wù)供應(yīng)者保存的登記。因此,該信息必須是準(zhǔn)確的,并且模塊10的秘密密鑰必須對各方保密。由于每個模塊10都有它自己特有的RSA密鑰集,所以該模型沒有對模塊10進(jìn)行表示貨幣獨(dú)立于服務(wù)供應(yīng)者保存的登記的規(guī)定。而是使登記與模塊能夠用其秘密密鑰簽名的能力一同起確定作用,以識別對于任何其它方來說為遠(yuǎn)距離的端點(diǎn)用戶。L.對交易量征稅此應(yīng)用適用于一種交易模型,在該模型中,服務(wù)供應(yīng)者試圖向端點(diǎn)用戶收取服務(wù)費(fèi)用,該費(fèi)用是模塊10傳遞貨幣總量的一個百分?jǐn)?shù)。模型類似于上述第C、D、E和F節(jié)描述的模型,但附加了一個破壞者對象,該對象能夠使任何特定的交易腳本44在預(yù)定的日期和時間截止。該模型還要求使用一附加的貨幣對象,用一合適的交易腳本44對其編程,以累加流出模塊10的所有貨幣的總值。
1.服務(wù)供應(yīng)者創(chuàng)建一個交易組40,它包含如上第D和E節(jié)描述的貨幣對象等。服務(wù)供應(yīng)者還創(chuàng)建一個附加的貨幣對象,起量累加器的作用。服務(wù)供應(yīng)者還創(chuàng)建交易腳本44,如在D和E中一樣,用于提款或存款,只是用于向模塊10加錢的交易腳本包括一個破壞者對象集,以便在將來的某一預(yù)定時刻截止,并且用于提款的交易腳本44包括一個一條將提款金額加到貨幣對象上的命令,貨幣對象起量累加器的作用。然后,服務(wù)供應(yīng)者鎖定交易組并將模塊運(yùn)送給端點(diǎn)用戶。
2.應(yīng)用如以上第D和E節(jié)所述,端點(diǎn)用戶用模塊10存款和提款。在使用模塊10期間,在起量累加器作用的貨幣對象中,累加由模塊10化費(fèi)的所有貨幣的累積總額。當(dāng)時限截止時,端點(diǎn)用戶不再能夠向他的模塊10加錢了,盡管需要時在還有存款之前他可以繼續(xù)提款。然后,端點(diǎn)用戶將模塊10還給服務(wù)供應(yīng)者進(jìn)行恢復(fù)。服務(wù)供應(yīng)者讀取剩余的錢款以及量累加器中記錄的錢款。服務(wù)供應(yīng)者向端點(diǎn)用戶開服務(wù)費(fèi)用的帳單,該服務(wù)費(fèi)用是量累加器中數(shù)額的一個百分?jǐn)?shù)。如果端點(diǎn)用戶愿意支付這筆款項(xiàng),繼續(xù)他的服務(wù),那么破壞并重建交易組40,然后將端點(diǎn)用戶返還時留在模塊10中的錢款金額編回交易組40的貨幣對象中。然后,只要端點(diǎn)用戶支付服務(wù)費(fèi)用,服務(wù)供應(yīng)者就把經(jīng)恢復(fù)的模塊還給端點(diǎn)用戶。
上述系統(tǒng)可使服務(wù)供應(yīng)者定期收取服務(wù)費(fèi)用,不必監(jiān)視和關(guān)心端點(diǎn)用戶進(jìn)行的每項(xiàng)金融交易。如量寄存器的內(nèi)容所確定的,費(fèi)用基于實(shí)際應(yīng)用。與模塊一起使用的固件定義舉例對象 模塊固件接收并運(yùn)行的最基本的數(shù)據(jù)結(jié)構(gòu)。下節(jié)提供了有效對象以其定義的表。組對象的一個自含集。一個對象的作用域限于它作為成員的組。組ID 一個數(shù),最好在0和255之間,表示一特定的組。對象ID一個數(shù),最發(fā)在0和255之間,表示一特定組內(nèi)的一個特殊對象。對象類型 最好是一個字節(jié)的分類符,它描述了一個特定的對象。PIN 一個由字母和數(shù)字表示的個人身份識別號,其長度最好為8個字節(jié)。公共PIN 對諸如審計跟蹤訪問等共享資源進(jìn)行控制的PIN。還用來控制主機(jī)創(chuàng)建和刪除組的能力。組PIN 對訪問某一組內(nèi)對象之特殊操作進(jìn)行控制的PIN。審計跟蹤 對發(fā)生在鎖定模塊之后的交易的記錄。鎖定對象 通過執(zhí)行鎖定對象命令已鎖定的對象。一旦對象鎖定,就不能直接閱讀了。秘密對象 通過執(zhí)行秘密化對象命令而秘密化的對象。一旦對象秘密化,就不能直接讀或?qū)懥恕fi定組用鎖定組的命令已鎖定的組。鎖定組后,不能創(chuàng)建對象。復(fù)合對象 若干對象的組合。個體對象繼承了復(fù)合對象的屬性。對象定義舉例RSA模數(shù)一大的整數(shù),最好其長度最多為1024位。它是兩個大的素數(shù)的乘積,每個素數(shù)的位數(shù)長度約為所需模數(shù)的一半。RSA模數(shù)在以下等式中使用,用于對消息M加密和解密(1)加密C=Me(模N)(2)解密M=Cd(模N)其中,C是密文,d和e是RSA指數(shù)(參見下文),而N是RSA模數(shù)。RSA指數(shù)(上述等式1和2中所示的)的e和d都是RSA的指數(shù)。它們一般是較大的數(shù),但小于模數(shù)(N)。RSA指數(shù)可以是秘密的,或公開的。當(dāng)在模塊中創(chuàng)建RSA指數(shù)時,可以聲明它們是其中的一種。一經(jīng)創(chuàng)建,指數(shù)可以由公開指數(shù)轉(zhuǎn)換成秘密指數(shù)。但指數(shù)秘密化之后,將保持秘密化,它所屬的交易組40受到破壞。交易腳本 交易腳本是模塊執(zhí)行的一系列指令。當(dāng)調(diào)用交易腳本時,模塊固件解釋腳本中的指令,并將結(jié)果放在輸出數(shù)據(jù)對象中(參見下文)。實(shí)際腳本只是一個對象表。對象排列的次序規(guī)定了對對象進(jìn)行的操作。交易腳本44最好只要128字節(jié)。交易計數(shù)器 交易計數(shù)器對象的長度最好為4個字節(jié),并且當(dāng)創(chuàng)建時通常初始值為零。每次調(diào)用引用該對象的交易腳本時,交易計數(shù)器增1。一旦鎖定交易計數(shù)器,就只能進(jìn)行閱讀,并且成為一個不能撤消的計數(shù)器。貨幣寄存器 貨幣寄存器對象的長度最好為4個字節(jié),并且可用來表示貨幣或一些其它形式的信貸。一旦已經(jīng)創(chuàng)建該對象,就必須將其鎖定,以防用戶竄改它的值。一旦鎖定,只有通過調(diào)用交易腳本才能改變該對象的值。進(jìn)行貨幣交易的一般交易組40可以具有一個從貨幣寄存器中提款的腳本和一個向貨幣寄存器存款的腳本。時鐘偏移 該對象最好為4個字節(jié)數(shù),它包含模塊實(shí)時時鐘讀數(shù)與一些方便時刻(例如1970年1月1日上午1200)的差。然后,通過把時鐘偏移的值與實(shí)時時鐘相加,從模塊中獲得真實(shí)的時間。SALT SALT對象的長度最好為20個字節(jié),并且當(dāng)創(chuàng)建時應(yīng)該用隨機(jī)數(shù)據(jù)對其初始化。當(dāng)主機(jī)發(fā)出生成隨機(jī)SALT的命令時,模塊將先前的SALT與模塊的隨機(jī)數(shù)(最好由隨機(jī)發(fā)生加電時產(chǎn)生)合并,以產(chǎn)生一新的隨機(jī)數(shù)。如果沒有將SALT對象秘密化,那么以后可以通過發(fā)出一個閱讀對象命令進(jìn)行閱讀。配置數(shù)據(jù) 這是一個用戶定義的結(jié)構(gòu),其最大長度最好為128個字節(jié)。該對象一般用來存儲其交易組40特定的配置信息。例如,可用配置數(shù)據(jù)對象規(guī)定貨幣寄存器對象的格式(即它表示的貨幣類型)。由于該對象沒有預(yù)定的結(jié)構(gòu),所以交易對象決不能使用它。輸入數(shù)據(jù) 輸入數(shù)據(jù)對象只是一個輸入緩沖器,其最大長度最好為128個字節(jié)。一個交易組可以具有多個輸入對象。主機(jī)用輸入數(shù)據(jù)對象存儲交易腳本44將處理的數(shù)據(jù)。輸出數(shù)據(jù) 交易腳本將輸出數(shù)據(jù)對象用作輸出緩沖器。當(dāng)創(chuàng)建交易組時,自動創(chuàng)建該對象。其長度最好為512字節(jié),并且繼承了其交易組的口令保護(hù)。隨機(jī)填充當(dāng)腳本解釋器遇到該類型的對象時,它自動填充當(dāng)前信息,致使它的長度比先前模數(shù)的長度短1位。當(dāng)創(chuàng)建交易組時,自動創(chuàng)建該對象的句柄。它是一個秘密對象并且不可以用閱讀對象命令閱讀。工作寄存器 腳本解釋器將該對象用作工作空間,并且該對象可以在交易腳本中使用。當(dāng)創(chuàng)建交易組時,自動創(chuàng)建該對象的句柄。它是一個秘密對象并且不可以用閱讀對象命令閱讀。ROM數(shù)據(jù) 當(dāng)創(chuàng)建交易組時,自動創(chuàng)建該對象。它是一個鎖定對象,并且可以用寫對象命令改變它。該對象的長度為8字節(jié)并且其內(nèi)容等同于8×Micro-In-A-CanTM的ROM數(shù)據(jù)較佳的模塊固件命令集設(shè)置公共的PIN(01H)發(fā)送(至模塊)01H,舊PIN,新PIN,PIN選擇字節(jié)接收數(shù)據(jù)如果成功,CSB(命令狀態(tài)字節(jié))=0,否則為合適的差錯代碼輸出長度=0輸出數(shù)據(jù)=0注意PIN選項(xiàng)字節(jié)可以是對以下任何值的逐位“或”操作PIN_TO_ERASE00000001b(要求PIN作主擦除)PIN_TO_CREATE 00000010b(要示PIN作組創(chuàng)建)最初模塊的PIN(個人身份識別號)為0(空),選項(xiàng)字節(jié)為0.一旦建立了PIN,只有通過提供舊的PIN或通過主擦除才有改變它。但是,如果在選項(xiàng)字節(jié)中設(shè)置了PIN_TO_ERASE,那么只有通過設(shè)置公共PIN命令才能改變PIN。
設(shè)置公共PIN命令的差錯代碼可能有ERR_BAD_COMMON_PIN (公共PIN匹配失敗)ERR_BAD_PIN_LENGTH (新的PIN長度>8字節(jié))ERR_BAD_OPTION_BYTE (不認(rèn)識的選項(xiàng)字節(jié))對于本節(jié)描述的所有命令,主機(jī)接收到的數(shù)據(jù)將是返回數(shù)據(jù)包的形式。返回數(shù)據(jù)包具有以下結(jié)構(gòu)命令狀態(tài)字節(jié) (如果命令成功,為0,否則為差錯代碼,1字節(jié))輸出數(shù)據(jù)長度 (命令輸出長度,2字節(jié))輸出數(shù)據(jù) (命令輸出,以上規(guī)定的長度)主擦除(02H)發(fā)送數(shù)據(jù)02H,公共PIN接收數(shù)據(jù)如果命令成功,則CSB=0,否則為ERR_BAD_COMMON_PIN輸出長度=0輸出數(shù)據(jù)=0注意如果PIN選項(xiàng)的LSB(最低有效位)清零(即,不要求PIN作主擦除),那么,為公共PIN的值發(fā)送0。一般,該文本總假定需要PIN。如果沒有建立PIN,應(yīng)該把零發(fā)成PIN。這對公共PIN和組PIN都是適用的(見下文)。如果PIN正確,那么固件刪除所有的組(見下文)以及組內(nèi)的所有對象。將公共PIN和公共PIN選項(xiàng)字節(jié)重新設(shè)置為零。
擦除每樣?xùn)|西后,模塊發(fā)送返回數(shù)據(jù)包。CSB如以上所述。將輸出數(shù)據(jù)長度和輸出數(shù)據(jù)字段設(shè)置為零。創(chuàng)建組(03H)發(fā)送數(shù)據(jù)03H,公共PIN,組名,組PIN
接收數(shù)據(jù)如果命令成功,則CSB=0,否則為適當(dāng)?shù)牟铄e代碼如果成功,則輸出長度=1,否則為0如果成功,則輸出數(shù)據(jù)=組ID,否則為0注意組名的最大長度為16字節(jié),并且最大的PIN長度為8字節(jié)。如果在公共PIN選項(xiàng)字節(jié)中設(shè)置PIN_TO_CREATE的位,并且發(fā)送PIN與公共PIN不匹配,那么模塊將把OSC設(shè)置成ERR_BAD_COMMON-PIN。
創(chuàng)建組命令的差錯返回代碼可能有ERR_BAD_COMMON_PIN (不正確的公共PIN)ERR_BAD_NAME_LENGTH (如果組名長度>16字節(jié))ERR_BAD_PIN_LENGTH (如果組PIN的長度>8字節(jié))ERR_MIAC_LOCKED (已鎖定模塊)ERR_INSUFFICIENT_RAM(沒有足夠的存儲區(qū)供新組使用)設(shè)置組PIN(04H)發(fā)送數(shù)據(jù)04H,組ID,舊的GPIN,新的GPIN接收數(shù)據(jù)如果命令成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼輸出長度=0輸出數(shù)據(jù)=0注意組PIN只限制訪問由命令數(shù)據(jù)包中發(fā)送的組ID確定的組內(nèi)的對象。
設(shè)置組PIN命令的差錯代碼可能有ERR_BAD_GROUP_PIN (組PIN匹配失敗)ERR_BAD_PIN_LENGTH(新的組PIN的長度>8字節(jié))創(chuàng)建對象(05H)發(fā)送數(shù)據(jù)05H,組ID,組PIN,對象類型,對象屬性,對象數(shù)據(jù)接收數(shù)據(jù)如果命令成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼如果成功,輸出長度=1,否則為0如果成功,輸出數(shù)據(jù)=對象ID,否則為0注意如果創(chuàng)建對象命令成功,那么模塊固件返回組ID確定的組內(nèi)的對象ID。如果主機(jī)提供的PIN不正確,或者鎖定組命令(以下描述)已鎖定了組,那么返回CSB中的差錯代碼。如果對象因任何原因而失效,那么對象創(chuàng)建也失敗。例如,如果正在創(chuàng)建的對象是一個RSA模數(shù)(0類型),并且它的長度大于1024位。如果它服從所有的交易腳本規(guī)則,那么交易腳本創(chuàng)建將成功。
創(chuàng)建對象命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_GROUP_LOCKED(組已鎖定)ERR_MIAC_LOCKED (模塊已鎖定)ERR_INVALID_TYPE(規(guī)定的對象類型失效)ERR_BAD_SIZE(對象長度失效)ERR_INSUFFICIENT_RAM(沒有足夠的存儲空間供新對象使用)對象類型 RSA模數(shù) 0RSA指數(shù) 1貨幣寄存器2交易計數(shù)器3交易腳本 4時鐘偏移 5隨機(jī)SALT 6
配置對象7輸入數(shù)據(jù)對象8輸出數(shù)據(jù)對象9對象屬性 鎖定的 00000001b秘密化的00000010b也可以在創(chuàng)建之后,通過使用以下描述的鎖定對象和秘密化對象的命令,鎖定對象并使對象秘密化。鎖定對象(06H)發(fā)送數(shù)據(jù)06H,組ID,組PIN,對象ID接收數(shù)據(jù)如果命令成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼輸出長度=0輸出數(shù)據(jù)=0注意如果組ID,組PIN和對象ID都正確,那么模塊將鎖定規(guī)定的對象。鎖定對象是一個不可撤消的操作。
鎖定對象命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_GROUP_LOCKED (組已鎖定)ERR_MIAC_LOCKED(模塊已鎖定)ERR_BAD_GROUP_ID (規(guī)定的組不存在)ERR_BAD_OBJECT_ID (規(guī)定的對象不存在)秘密化對象(07H)發(fā)送數(shù)據(jù)07H,組ID,組PIN,對象ID接收數(shù)據(jù)如果成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼注意如果組ID,組PIN和對象ID有效,那么將該對象秘密化,秘密化的對象共享鎖定對象的所有性質(zhì),但它們是不可讀的。只有通過交易腳本才能修改秘密化的對象。注意鎖定一個秘密化的對象是合法的,但由于對象秘密化是一個比對象鎖定更強(qiáng)的操作,所以這是沒有意義的。將對象秘密化是一個不可撤消的操作。
秘密化對象命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_GROUP_LOCKED (組已鎖定)ERR_MIAC_LOCKED (模塊已鎖定)ERR_BAD_GROUP_ID (規(guī)定的組不存在)ERR_BAD_OBJECT_ID (規(guī)定的對象不存在)使對象可破壞(08H)發(fā)送數(shù)據(jù)08H,組ID,組PIN,對象ID接收數(shù)據(jù)如果成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼注意如果組ID,組PIN和對象ID有效,那么使對象可破壞。如果某一對象可破壞,那么在組破壞器起作用后,交易腳本不能使用該對象。如果交易組內(nèi)不存在破壞器的對象,那么可破壞對象的屬性位不起作用。使對象可破壞是一個不可撤消的操作。
使對象可破壞命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_GROUP_LOCKED (組已鎖定)ERR_MIAC_LOCKED (模塊已鎖定)ERR_BAD_GROUP_ID (規(guī)定的組不存在)ERR_BAD_OBJECT_ID (規(guī)定的對象不存在)鎖定模塊(09H)發(fā)送數(shù)據(jù)09H,公共PIN接收數(shù)據(jù)如果成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼如果成功,輸出長度=2,否則為0如果成功,輸出數(shù)據(jù)=審計跟蹤,否則為0注意如果主機(jī)提供的公共PIN正確,并且先前沒有鎖定模塊,那么命令將成功。當(dāng)鎖定模塊時,它將不接收任何新的組或?qū)ο?。這意味著自動鎖定所有的組。系統(tǒng)或諸組不用的RAM將被用來進(jìn)行審計跟蹤。模塊未被成功鎖定,就不進(jìn)行審計跟蹤。
審計跟蹤記錄的長度為6字節(jié),并且具有以下結(jié)構(gòu)組ID|對象ID|日期/時間標(biāo)志一旦建立了審計跟蹤,每次執(zhí)行交易腳本,就把上述形式的記錄存儲在第一個字節(jié)大小可用的位置上。注意,由于模塊必須在審計跟蹤開始之前鎖定,所以組ID和對象ID都不能變化。這總是允許這樣的應(yīng)用,它處理審計跟蹤,以便唯一識別被執(zhí)行的交易腳本。一旦審計跟蹤用完了所有可用的存儲空間,它將把新的交易記錄存儲在最舊的交易記錄上。
鎖定模塊命令的差錯代碼可能有ERR_BAD_COMMON_PIN (提供的公共PIN不正確)ERR_MIAC_LOCKED(模塊已鎖定)鎖定組(0AH)發(fā)送數(shù)據(jù)0AH,組ID,組PIN接收數(shù)據(jù)如果命令成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼輸出長度=0輸出數(shù)據(jù)=0注意如果提供的組PIN是正確的,那么模塊BIOS將不允許在規(guī)定的組內(nèi)創(chuàng)建更多的對象。由于組完全是自含式實(shí)體,所以通過執(zhí)行刪除組命令(以下描述)可以刪除它們。
鎖定組命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_GROUP_LOCKED (組已鎖定)ERR_MIAC_LOCKED (模塊已鎖定)ERR_BAD_GROUP_ID (規(guī)定的組不存在)調(diào)用交易腳本(0BH)發(fā)送數(shù)據(jù)0BH,組ID,組PIN,對象ID接收數(shù)據(jù)如果命令成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼如果成功,輸出長度=1,否則為0輸出數(shù)據(jù)=估計的完成時間注意模塊返回的時間估計是六分之一秒。如果返回CSB中的差錯代碼,那么時間估計將為0。
執(zhí)行交易腳本命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_BAD_GROUP_ID (規(guī)定的組不存在)ERR_BAD_OBJECT_ID (組中不存在腳本對象)閱讀對象(0CH)發(fā)送數(shù)據(jù)0CH,組ID,組PIN,對象ID接收數(shù)據(jù)如果命令成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼如果成功,輸出長度=對象長度,否則為0如果成功,輸出數(shù)據(jù)=對象數(shù)據(jù),否則為0注意如果組ID,組PIN和對象ID都正確,那么模塊檢查指定對象的屬性字節(jié)。如果對象沒有秘密化,那么模塊把對象數(shù)據(jù)發(fā)送組主機(jī)。如果組PIN無效,或者對象已秘密化,那么模塊返回輸出長度中的0,以及返回數(shù)據(jù)包的數(shù)據(jù)字段。
閱讀對象命令的差錯代碼可能有ERR_BAD_GROUP_PIN(不正確的組PIN)ERR_BAD_GROUP_ID (規(guī)定的組不存在)ERR_BAD_OBJECT_ID(組中不存在對象)ERR_OBJECT_PRIVATIZED(對象已秘密化)寫對象(0DH)發(fā)送數(shù)據(jù)0DH,組ID,組PIN,對象ID,對象大小,對象數(shù)據(jù)接收數(shù)據(jù)如果成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼輸出長度=0輸出數(shù)據(jù)=0注意如果組ID,組PIN和對象ID都正確,那么模塊檢查指定對象的屬性字節(jié)。如果對象沒有鎖定或者沒有秘密化,那么模塊將對象先前的大小和數(shù)據(jù)清零,并用新的對象數(shù)據(jù)代替。注意,對象類型和屬性字節(jié)不受影響。
寫對象命令的差錯返回代碼可能有ERR_BAD_GROUP_PIN(不正確的組PIN)ERR_BAD_GROUP_ID (規(guī)定的組不存在)ERR_BAD_OBJECT_ID(組中不存在對象)ERR_BAD_OBJECT_SIZE (規(guī)定了不合法的對象大小)ERR_OBJECT_LOCKED(對象已鎖定)ERR_OBJECT_PRIVATIZED(對象已秘密化)讀組名(0EH)發(fā)送數(shù)據(jù)0EH,組ID接收數(shù)據(jù)CSB=0輸出長度=組名的長度輸出數(shù)據(jù)=組名注意組名長度最大值為16字節(jié)。在組名中,所有的字節(jié)值都是合法的。刪除組(0FH)發(fā)送數(shù)據(jù)0FH,組ID,組PIN接收數(shù)據(jù)如果成功,CSB=0,否則為適當(dāng)?shù)牟铄e代碼輸出長度=0輸出數(shù)據(jù)=0注意如果組PIN和組ID正確,那么模塊將刪除指定的組。刪除一個組會自動破壞該組內(nèi)的所有對象。如果已經(jīng)鎖定模塊,刪除組命令將失效。
刪除組命令的差錯代碼可能有ERR_BAD_GROUP_PIN (不正確的組PIN)ERR_BAD_GROUP_ID (指定的組不存在)ERR_MIAC_LOCKED(模塊已鎖定)獲取命令狀態(tài)信息(10H)發(fā)送數(shù)據(jù)10H接收數(shù)據(jù)
CSB=0輸出長度=6輸出數(shù)據(jù)=模塊狀態(tài)結(jié)構(gòu)(見下文)注意該操作不需要PIN,并且永遠(yuǎn)不會失敗。狀態(tài)結(jié)構(gòu)定義如下最后執(zhí)行的命令 (1字節(jié))最后命令的狀態(tài) (1字節(jié))接收到的時間命令(4字節(jié))獲取模塊配置信息(11H)發(fā)送數(shù)據(jù)11H接收數(shù)據(jù)CSB=0輸出長度=4輸出數(shù)據(jù)=模塊配置結(jié)構(gòu)注意該操作不需要PIN,并且永遠(yuǎn)不會失敗。配置結(jié)構(gòu)定義如下組數(shù)(1字節(jié))標(biāo)志字節(jié)(見下文)(1字節(jié))審計跟蹤的大小/空RAM(2字節(jié))標(biāo)志字節(jié)是對任何以下值的逐位“或”操作00000001b (鎖定模塊)00000010b (需要訪問的公共PIN)讀審計跟蹤信息(12H)發(fā)送數(shù)據(jù)12H,公共PIN接收數(shù)據(jù)如果命令成功,CSB=0,否則為合適的差錯代碼如果成功,輸出長度=審計跟蹤結(jié)構(gòu)大小(5),否則為0如果成功,輸出數(shù)據(jù)=審計跟蹤信息結(jié)構(gòu),否則為0注意如果發(fā)送的公共PIN有效,并且模塊已鎖定,那么它返回以下審計跟蹤配置信息所用的交易記錄數(shù) (2字節(jié))空的交易記錄數(shù)(2字節(jié))規(guī)定審計跟蹤是否因先前的讀命令而卷動的布爾符號(1字節(jié))讀審計跟蹤信息命令的差錯代碼可能有ERR_BAD_COMMON_PIN(公共PIN不正確)ERR_MIAC_NOT_LOCKED (不鎖定模塊)讀審計跟蹤(13H)發(fā)送數(shù)據(jù)13H,公共PIN接收數(shù)據(jù)如果命令成功,CSB=0,否則為合適的差錯代碼如果成功,輸出長度=新記錄的#*6,否則為0輸出數(shù)據(jù)=新的審計跟蹤記錄注意如果發(fā)送的公共PIN有效,并且模塊已鎖定,那么它將把所有新的交易記錄傳送給主機(jī)。
讀審計跟蹤命令的差錯代碼可能有ERR_BAD_COMMON_PIN(公共PIN不正確)ERR_MIAC_NOT_LOCKED (不鎖定模塊)讀組審計跟蹤(14H)發(fā)送數(shù)據(jù)14H,組ID,組PIN
接收數(shù)據(jù)如果命令成功,CSB=0,否則為合適的差錯代碼如果成功,輸出長度=對組的記錄或#*6,否則為0如果成功,輸出數(shù)據(jù)=對組的審計跟蹤記錄注意該命令與讀審計跟蹤命令相同,只是僅將包含有發(fā)送數(shù)據(jù)中指定的組ID的記錄返回給主機(jī)。這允許交易組記錄跟蹤它們自己的活動,不需要參照其它組的記錄。
讀組審計跟蹤命令的差錯代碼可能有ERR_BAD_GROUP_ID(組ID不存在)ERR_BAD_GROUP_PIN (公共PIN不正確)ERR_MIAC_NOT_LOCKED (不鎖定模塊)讀實(shí)時時鐘(15H)發(fā)送數(shù)據(jù)15H,公共PIN接收數(shù)據(jù)如果公共PIN匹配,CSB=0,否則ERR_BAD_COMMON_PIN輸出長度=4輸出數(shù)據(jù)=實(shí)時時鐘的4個最高字節(jié)注意該值不用時鐘偏移調(diào)整。該命令通常由服務(wù)供應(yīng)者使用,以便在交易組創(chuàng)建期間計算時鐘偏移。讀經(jīng)調(diào)整的實(shí)時時鐘(16H)發(fā)送數(shù)據(jù)16H,組ID,組PIN,偏移對象的ID接收數(shù)據(jù)如果成功,CSB=0,否則為合適的差錯代碼如果成功,輸出長度=4,否則為0
輸出數(shù)據(jù)=實(shí)時時鐘+時鐘偏移ID注意如果組ID和組PIN有效,并且對象ID是時鐘偏移的ID,那么該命令成功,模塊將時鐘偏移加到RTC的4個最高字節(jié)的當(dāng)前值上,并將該值返回在輸出數(shù)據(jù)字段中。注意,可以寫一個交易腳本,進(jìn)行相同的任務(wù),并把結(jié)果放在輸出數(shù)據(jù)對象中。
讀經(jīng)調(diào)整的實(shí)時時鐘命令的差錯代碼可能有ERR_BAD_GROUP_PIN(組PIN不正確)ERR_BAD_GROUP_ID (指定的組不存在)ERR_BAD_OBJECT_TYPE (對象ID不是時鐘偏移)獲取隨機(jī)數(shù)據(jù)(17H)發(fā)送數(shù)據(jù)17H,長度(L)接收數(shù)據(jù)如果成功,CSB=0,否則為合適的差錯代碼如果成功,輸出長度=L,否則為0如果成功,輸出數(shù)據(jù)=隨機(jī)數(shù)據(jù)的L字節(jié)注意該命令提供了一個良好的保密有用的隨機(jī)數(shù)源。
獲取隨機(jī)數(shù)據(jù)命令的差錯代碼可能有ERR_BAD_SIZE (需要的字節(jié)數(shù)>128)獲取固件版本ID(18H)發(fā)送數(shù)據(jù)18H接收數(shù)據(jù)CSB=0輸出長度=固件版本ID串的長度輸出數(shù)據(jù)=固件版本ID串注意該命令把固件版本ID作為一個Pascal類型的串(長度+數(shù)據(jù))返回。獲取空的RAM(19H)發(fā)送數(shù)據(jù)19H接收數(shù)據(jù)CSB=0輸出長度=2輸出數(shù)據(jù)=包含空的RAM數(shù)量的2字節(jié)值注意如果模塊已鎖定,輸出數(shù)據(jù)字節(jié)將均為0,表示所有未被交易組使用的存儲空間都保留下來用于審計跟蹤。改變組名(1AH)發(fā)送數(shù)據(jù)1AH,組ID,組PIN,新的組名接收數(shù)據(jù)如果成功,CSB=0,否則為合適的差錯代碼輸出長度=0輸出數(shù)據(jù)=0注意如果模塊中存在指定的組ID,并且提供的PIN是正確的,那么用主機(jī)提供的新的組名替代交易組名。如果提供組ID為0,那么發(fā)送的PIN必須是公共PIN。如果它是正確的,那么用主機(jī)提供的新的名字替代模塊名。
改變組名命令的差錯代碼可能有ERR_BAD_GROUP_PIN(組PIN不正確)ERR_BAD_GROUP_ID (指定的組不存在)ERR_BAD_NAME_LENGTH (新的組名>16字節(jié))差錯代碼定義ERR_BAD_COMMAND(80H)當(dāng)模塊固件不認(rèn)識主機(jī)剛發(fā)送的命令時,產(chǎn)生該差錯代碼。
ERR_BAD_COMMON_PIN(81H)當(dāng)命令需要一公共PIN并且提供的PIN與模塊的公共PIN不匹配時,并返回該差錯代碼。最初,將公共PIN設(shè)置為0。
ERR_BAD_GROUP_PIN(82H)交易組可以有它們自己的PIN,圖11。如果已設(shè)置該P(yáng)IN(由設(shè)置組PIN命令設(shè)置),那么必須提供它來訪問組內(nèi)的任何對象。如果提供的組PIN與實(shí)際的組PIN不匹配,那么模塊將返回ERR_BAD_GROUP_PIN差錯代碼。
ERR_BAD_PIN_LENGTH(83H)有2個命令可以改變PIN值。它們是設(shè)置組PIN命令和設(shè)置公共PIN命令。這兩個命令都需要新的PIN和舊的PIN。如果提供的舊的PIN是正確的,但新的PIN的長度大于8個字符,那么將返回ERR_BAD_PIN_LENGTH差錯代碼。
ERR_BAD_OPTION_BYTE(84H)選項(xiàng)字節(jié)只應(yīng)用于公共PIN。當(dāng)執(zhí)行設(shè)置公共PIN命令時,主機(jī)提供的最后字節(jié)是選項(xiàng)字節(jié)(命令章節(jié)中有描述)。如果模塊不認(rèn)識該字節(jié),那么它將返回ERR_BAD_OPTION_BYTE差錯代碼。
ERR_BAD_NAME_LENGTH(85H)當(dāng)創(chuàng)建交易組命令時,主機(jī)提供的一個數(shù)據(jù)結(jié)構(gòu)是組名。組名的長度不可以超過16個字符。如果提供的名字長于16字符,那么返回ERR_BAD_NAME_LENGTH差錯代碼。
ERR_INSUFFICIENT_RAM(86H)
當(dāng)模塊中沒有足夠的堆時,創(chuàng)建交易組命令和創(chuàng)建對象命令返回該差錯代碼。
ERR_MIAC_LOCKED(87H)當(dāng)已鎖定模塊時,不能創(chuàng)建或破壞任何組或?qū)ο?。?chuàng)建或刪除對象的任何嘗試都將產(chǎn)生ERR_MIAC_LOCKED差錯代碼。
ERR_MIAC_NOT_LOCKED(88H)如果已鎖定模塊,那么不存在審計跟蹤。如果執(zhí)行一個審計跟蹤命令,那么將返回該差錯代碼。
ERR_GROUP_LOCKED(89H)一旦鎖定了某個交易組,就不可能在該組內(nèi)創(chuàng)建對象。對象屬性和類型也被凍結(jié)。創(chuàng)建對象或改變它們屬性或類型字節(jié)的任何嘗試都將產(chǎn)生ERR_GROUP_LOCKED差錯代碼。
ERR_BAD_OBJECT_TYPE(8AH)當(dāng)主機(jī)向模塊發(fā)出創(chuàng)建對象命令時,它提供的一個參數(shù)是對象類型(見命令章節(jié))。如果固件不認(rèn)識該對象類型,那么它將返回ERR_BAD_OBJECT_TYPE差錯代碼。
ERR_BAD_OBJECT_ATTR(8BH)當(dāng)主機(jī)向模塊發(fā)出創(chuàng)建對象命令時,它提供的一個參數(shù)是對象屬性字節(jié)(見命令章節(jié))。如果固件不認(rèn)識該對象屬性類型,那么它將返回ERR_BAD_OBJECT_ATTR差錯代碼。
ERR_BAD_SIZE(8CH)當(dāng)創(chuàng)建或?qū)懸粋€對象時,常會產(chǎn)生ERR_BAD_SIZE差錯代碼。只有當(dāng)主機(jī)提供的對象數(shù)據(jù)具有無效長度時,才會發(fā)生。
ERR_BAD_GROUP_ID(8DH)在交易組層次上操作的所有命令都要求在命令數(shù)據(jù)包中提供組ID。如果模塊中不存在指定的組ID,那么它將產(chǎn)生ERR_BAD_GROUP_ID差錯代碼。
ERR_BAD_OBJECT_ID(8EH)在對象層次上操作的所有命令都要求在命令數(shù)據(jù)包中提供對象ID。如果特定交易組(交易組也在命令數(shù)據(jù)包中指定)內(nèi)不存在指定的對象ID,那么它將產(chǎn)生ERR_BAD_OBJECT_ID差錯代碼。
ERR_INSUFFICIENT_FUNDS(8FH)如果調(diào)用執(zhí)行金融交易的腳本對象,并且貨幣寄存器的值小于需要提取的金額,那么返回ERR_INSUFFICIENT_FUNDS差錯代碼。
ERR_OBJECT_LOCKED(90H)鎖定對象是只讀的。如果試圖執(zhí)行寫對象命令,并且它規(guī)定了鎖定對象的對象ID,那么模塊將返回ERR_OBJECT_LOCKED差錯代碼。
ERR_OBJECT_PRIVATE(91H)秘密對象是不能直接讀或?qū)懙?。如果試圖執(zhí)行讀對象命令或?qū)憣ο竺睿⑶宜?guī)定了秘密對象的對象ID,那么模塊將返回ERR_OBJECT_PRIVATE差錯代碼。
ERR_OBJECT_DESTRUCTED(92H)如果對象是可破壞的,并且交易組的破壞器在工作,那么腳本不可以使用該對象。如果調(diào)用的腳本使用已被破壞的對象,那么模塊將返回ERR_OBJECT_DESTRUCTED差錯代碼。
最好將本發(fā)明的實(shí)施例放在耐用的硬幣式不銹鋼罐中。應(yīng)該理解,可以將例示的模塊放在任何實(shí)質(zhì)上帶關(guān)節(jié)的物品中。帶關(guān)節(jié)的物品例子包括信用卡、戒子、手表、皮夾、錢包、項(xiàng)鏈、珠寶、ID徽章、鋼筆、書寫板等。
模塊最好是單個芯片的“信托計算機(jī)”。用術(shù)語“信托”表示計算機(jī)是極其保密的,未獲承認(rèn)的方法不能竄改。模塊包含一數(shù)字協(xié)處理器,被優(yōu)化用來進(jìn)行數(shù)學(xué)加強(qiáng)的加密。BIOS最好是不能改變的,并且特別是為非常保密的交易設(shè)計的。
每個模塊具有一個隨機(jī)“種子”發(fā)生器,該發(fā)生器具有創(chuàng)建秘密/公開密鑰集的能力。秘密密鑰永遠(yuǎn)不會離開模塊,并且只有模塊知道。另外,當(dāng)錯誤進(jìn)入模塊時通過積極進(jìn)行自破壞,防止秘密密鑰被發(fā)現(xiàn)??梢杂靡粋€個人身份識別號(PIN)將模塊與用戶聯(lián)系在一起。
當(dāng)用模塊進(jìn)行交易時,由模塊和與模塊通信的系統(tǒng)這兩者之一或兩者創(chuàng)建授權(quán)證明。證明可以包含各種信息。特別是,證明可以包含1)誰是模塊用戶,借助于專用的登記號。
2)交易何時發(fā)生,借助于交易的真實(shí)時間標(biāo)志。
3)交易發(fā)生在何地,借助于經(jīng)登記的模塊接口位置標(biāo)識。
4)保密信息,借助于消息摘要上的獨(dú)特排序的交易和數(shù)字簽名。
5)模塊狀態(tài),表示成有效、丟失、或截止。
盡管附圖中示出并且在以上詳細(xì)說明中描述了本發(fā)明方法和設(shè)備的一個較佳實(shí)施例,但應(yīng)該理解,本發(fā)明不限于所揭示的實(shí)施例,本發(fā)明可以不脫離以下權(quán)利要求書敘述和限定的本發(fā)明的精神,進(jìn)行眾多的重新布置、變化和替代。
權(quán)利要求
1.一種用于保密交易的電子模塊,其特征在于,包括輸入/輸出電路,用于與數(shù)據(jù)處理電路連通;數(shù)學(xué)協(xié)處理器電路,它與所述輸入/輸出電路電氣連接;微處理器電路,它與所述輸入/輸出電路電氣連接;和存儲器電路,它與所述微處理器電路電氣連接,所述電子模塊是可編程的,用以在所述電子模塊和所述數(shù)據(jù)處理電路之間進(jìn)行保密的加密數(shù)據(jù)傳輸。
2.如權(quán)利要求1所述的電子模塊,其特征在于,所述數(shù)據(jù)處理電路是另一個電子模塊。
3.如權(quán)利要求1所述的電子模塊,其特征在于,還包括一個單線接口,它與所述輸入/輸出電路相連。
4.如權(quán)利要求1所述的電子模塊,其特征在于,所述存儲器電路適于存儲在所述電子模塊與所述數(shù)據(jù)處理電路之間進(jìn)行加密數(shù)據(jù)傳輸期間使用的秘密加密/解密密鑰。
5.如權(quán)利要求1所述的電子模塊,其特征在于,所述加密交易是作了時間標(biāo)記的。
6.一種用于保密交易通信的系統(tǒng),其特征在于,包括第一模塊,它包括輸入/輸出電路;隨機(jī)數(shù)據(jù)發(fā)生裝置,用于產(chǎn)生隨機(jī)數(shù);和第一交易組,用于請求所述隨機(jī)數(shù)發(fā)生裝置產(chǎn)生所述隨機(jī)數(shù),并且用于向所述輸入/輸出電路提供所述隨機(jī)數(shù);和服務(wù)供應(yīng)設(shè)備,它包括用于從所述第一模塊的所述輸入/輸出電路讀取所述隨機(jī)數(shù)的裝置;用于把所述隨機(jī)數(shù)與第一數(shù)據(jù)合并并且用秘密密鑰對所述隨機(jī)數(shù)與所述第一數(shù)據(jù)的合并加密以產(chǎn)生第一證明的裝置,由此所述第一模塊的所述輸入/輸出電路適于接收所述第一證明。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述服務(wù)供應(yīng)設(shè)備包括第二模塊。
8.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一模塊還包括一個標(biāo)識符,用于識別所述第一模塊,并且所述第一交易組將所述標(biāo)識符提供給所述輸入/輸出電路。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述用于讀的裝置還用于從所述第一模塊的所述輸入/輸出電路中讀取所述標(biāo)識符。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述第一模塊還包括第二交易組。
11.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述模塊還包括用于對完整交易進(jìn)行時間標(biāo)記的裝置。
12.一種在模塊和服務(wù)供應(yīng)設(shè)備之間傳遞加密信息的方法,其特征在于,包括以下步驟a)在所述模塊中創(chuàng)建第一隨機(jī)數(shù);b)把所述隨機(jī)數(shù)傳送給所述服務(wù)供應(yīng)設(shè)備;c)用所述服務(wù)供應(yīng)設(shè)備中的秘密密鑰至少對所述隨機(jī)數(shù)加密,從而產(chǎn)生一個證明;d)至少將所述證明傳送給所述模塊;e)用所述模塊中的公開密鑰對所述證明解密;f)將所述第一隨機(jī)數(shù)與在步驟e)的經(jīng)解密的第一證明中找到的數(shù)進(jìn)行比較,確定兩個數(shù)是否匹配。
13.如權(quán)利要求12所述的方法,其特征在于,步驟b)還包括將模塊標(biāo)識符傳送給所述服務(wù)供應(yīng)設(shè)備的步驟。
14.如權(quán)利要求12所述的方法,其特征在于,所述服務(wù)供應(yīng)設(shè)備是另一個模塊。
15.如權(quán)利要求12所述的方法,其特征在于,所述方法包括單線總線。
16.如權(quán)利要求15所述的方法,其特征在于,所述單線總線基本上是一根線總線。
17.一種在模塊和服務(wù)供應(yīng)設(shè)備之間傳遞加密信息的方法,其特征在于,包括以下步驟a)在所述服務(wù)供應(yīng)設(shè)備中創(chuàng)建第一隨機(jī)數(shù);b)把所述隨機(jī)數(shù)傳送給所述模塊;c)用所述模塊中的秘密密鑰至少對所述隨機(jī)數(shù)加密,從而產(chǎn)生一個證明;d)至少將所述第一證明傳送給所述服務(wù)供應(yīng)設(shè)備;e)用所述服務(wù)供應(yīng)設(shè)備中的公開密鑰對所述第一證明解密;f)將所述第一隨機(jī)數(shù)與在步驟e)的經(jīng)解密第一證明中找到的數(shù)進(jìn)行比較,確定兩個數(shù)是否匹配。
18.如權(quán)利要求17所述的方法,其特征在于,所述服務(wù)供應(yīng)設(shè)備是另一個模塊。
19.如權(quán)利要求17所述的方法,其特征在于,所述方法包括單線總線。
20.如權(quán)利要求18所述的方法,其特征在于,所述單線總線基本上是一根線總線。
21.一種用模塊對加密數(shù)據(jù)解密的方法,其特征在于,包括以下步驟接收第一加密數(shù)據(jù)和第二加密數(shù)據(jù);用存儲在所述模塊中的秘密密鑰對所述第一加密數(shù)據(jù)解密,從而產(chǎn)生第一解密密鑰;將所述第一解密密鑰提供給一電子系統(tǒng);通過所述電子系統(tǒng)用所述第一解密密鑰對所述第二加密數(shù)據(jù)解密,從而產(chǎn)生一個有用的信息。
22.如權(quán)利要求21所述的方法,其特征在于,所述加密數(shù)據(jù)是一個電子郵件信息。
全文摘要
本發(fā)明涉及一種用于進(jìn)行保密交易的電子模塊。具體地說,該電子模塊能夠通過一保密的加密技術(shù)與服務(wù)供應(yīng)設(shè)備來往傳遞信息,從而可以用電子方式保密地傳送貨幣和其它有價值的數(shù)據(jù)。模塊可以被編程,對實(shí)時保持跟蹤,記錄交易供以后查詢,并且能夠產(chǎn)生加密密鑰對。
文檔編號G07F7/08GK1198233SQ96197307
公開日1998年11月4日 申請日期1996年9月26日 優(yōu)先權(quán)日1995年9月29日
發(fā)明者斯蒂芬·M·柯里, 唐納德·W·魯密斯, 克里斯多夫·W·??怂?申請人:達(dá)拉斯半導(dǎo)體有限公司