專利名稱:保密任意通信業(yè)務的制作方法
技術領域:
本發(fā)明整體上涉及開放通信系統(tǒng)的保密信息,并更特別地涉及用于提供任意通信業(yè)務的鑒權、加密、和完整保護的方法和系統(tǒng)。
相關現(xiàn)有技術的描述開放通信系統(tǒng)需要對信息保密。這包括通信同位體之間的鑒權和數(shù)據(jù)的加密和完整保護。鑒權意味著提供一些裝置來保證未授權用戶不能操作所要求的實體或者所傳送的信息。加密基本上意味著沒有一個未授權的實體能夠讀出我們的消息,并且數(shù)據(jù)完整性保證了我們的消息不被改變、整個消息流來自相同的源、整個消息流流向相同的目的地。
對這類問題的解決方案來自密碼研究。典型地一個加密算法是作為秘密的、或者應被保護的一個輸入值和另一個輸入秘密值的一個函數(shù)。秘密值經(jīng)常被稱為算法的一個密鑰?,F(xiàn)在使用眾所周知的加密算法和安全措施的許多保密通信系統(tǒng)不是基于算法本身,而是基于一個密鑰。只有來自對方當事人的真實密鑰才被加密的假設被稱為Kerkhoff假設。Kerkhoff假設對例如Internet等的開放通信系統(tǒng)來說是重要的,在這些系統(tǒng)中許多不同地點的、許多不同生產(chǎn)商的設備需要相互操作。如果如何處理數(shù)據(jù)的方法是公知的就很容易進行通信。因而,所有Internet通信加密技術都是基于Kerkhoff假設,即眾所周知的基于密鑰值的安全加密算法。
為了建立一個保密通信信道,必須有一些預定協(xié)議來描述通信同位體之間的消息交換。對一個通信系統(tǒng)保密的一個必要的步驟是提供鑒權密鑰的交換。典型地,使用一個公共密鑰算法來完成一個碼交換,例如在Internet密鑰交換協(xié)議(IKE)、傳輸層安全協(xié)議(TLS)、和安全殼協(xié)議(SSH)等中使用的Diffie-Hellman(DH)算法,或者例如在TLS中使用的Rivest-Shamir-Adleman(RSA)算法。
在象SSH、TLS、Internet Protocol Security(IP sec)/IKE等開放保密協(xié)議中,數(shù)字化簽名數(shù)據(jù)或者密鑰交換使用公共密鑰算法??梢允褂脦讉€不同的公共密鑰簽名方法和密鑰交換方法。在多個協(xié)議中,加密負載數(shù)據(jù)和添加完整性檢查標記所使用的基本協(xié)議是非常相似的。然而,多個協(xié)議所支持的鑒權程序、密鑰交換、和不同的對稱算法是有實質性差別的。因此,如果沒有預定保密關系的兩個單元能夠進行保密地互操作,一個問題是至少一個通信同位體必須支持很多不同的密碼算法和加密選項。進一步,大量的不同選項使得密鑰協(xié)商協(xié)議非常大、非常復雜,并且很難簡單地實現(xiàn)。
在US5,892,904中描述了保證一個計算機程序、一個執(zhí)行文件、或者例如Internet等計算機網(wǎng)絡上所接收碼的鑒權和完整性的一種方法。在一個實施例中,這種方法涉及判定一個密碼摘要或者可執(zhí)行文件的“無用數(shù)據(jù)”,并使用密碼摘要形成一個發(fā)行人簽名。使用本領域眾所周知的公共-專用密鑰簽名算法,例如RSA(Rivest-Shamir-Adleman)通用密鑰算法,來形成發(fā)行人簽名。對發(fā)行人簽名附加一個發(fā)行人數(shù)字證書來鑒定發(fā)布發(fā)行人簽名的發(fā)行人的身份。數(shù)字證書包括軟件出版商的名字、與出版商對文件簽名所使用的專用密鑰相對應的一個公共密鑰、證書的一個失效日期、和到證書代理的一個鏈接或者超級鏈接。
WO99/56428描述了從處理器外部的設備下載一個程序到一個處理器的另一種保密方法。程序應被加密,并包含添加的鑒權信息。在允許處理器執(zhí)行程序之前,處理器對程序進行解密和鑒權。
WO99/33224公開了保證一個數(shù)據(jù)流,包括例如視頻或者音頻數(shù)據(jù),只能被授權的接收機所接收的一種方法和系統(tǒng)。接收機也可以查驗所接收的視頻或者音頻數(shù)據(jù)分組的數(shù)量。通過對發(fā)送數(shù)據(jù)流中每個數(shù)據(jù)分組進行加密并記錄接收機中解密分組的數(shù)量來實現(xiàn)這一點。
這些文件中沒有一個描述了不具有預定加密關系的兩個通信同位體之間如何建立一個保密通信信道。在例如特別的網(wǎng)絡(即BluetoothTM、SalutationTM、JiniTM等)中,這也是一個常見的情況。這樣,需要一種方法和系統(tǒng)表示在一個客戶和一個任意通信業(yè)務之間如何建立保密通信。
在現(xiàn)有協(xié)議中,如果兩個單元應該能夠互操作,至少一個通信同位體必須支持大量的不同密碼算法和加密選項,使得密鑰協(xié)商協(xié)議不僅大,而且復雜。
這樣,本發(fā)明的一個目標是提供一個解決方案,其中所需要的預定密碼算法盡可能少。
本發(fā)明的另一個目標是減少由支持的選項和密碼算法的數(shù)量而決定的密鑰協(xié)商協(xié)議的復雜性。
還有一個目標是提供一個解決方案,其中減小了輸出限制的問題。
上面提到的目標基本上可以如下實現(xiàn)從一個通信客戶想使用的一個特定業(yè)務處下載一個簽名的計算機軟件(例如一個JiniTMProxy),這個軟件包含必要的算法以與服務器進行鑒權密鑰的交換。進一步,在一個保密業(yè)務會話中,計算機程序包含必要的算法以加密和保護在客戶和業(yè)務之間發(fā)送的所有數(shù)據(jù)。
更特別地,本發(fā)明涉及一個加密通信情況,在此一個通信客戶想使用一個特定業(yè)務進行通信。用戶使用一個全球網(wǎng)絡業(yè)務(例如Internet、一個本地網(wǎng))或者甚至一個特別網(wǎng)絡(即在飛行中相同物理位置的實體之間生成的一個網(wǎng)絡)可以獲得這種業(yè)務。也假定使用這種業(yè)務的所有單元使用一個通用的計算平臺,即所有單元可以下載和執(zhí)行以一種共同語言寫的一個程序。廣泛應用的這種計算平臺和語言一個例子是JavaTM虛擬機器和JavaTM字節(jié)碼計算語言。假設客戶只有兩個預定的密碼能力對任意數(shù)據(jù)進行數(shù)字化簽名的能力;和驗證任意數(shù)據(jù)一個數(shù)字化簽名的能力。
能夠提供一個保密通信業(yè)務的服務器對一個計算機程序進行數(shù)字化簽名,包含必要的算法以使用與一個公共密鑰成對的專用密鑰與服務器進行驗證密鑰的交換。服務器組合簽名碼和簽名以及可選的一個或者多個證書,這些證書驗證了服務器的公共密鑰。服務器公共密鑰能用于驗證用戶簽名的密碼。
想使用一種業(yè)務進行通信的一個用戶通過網(wǎng)絡下載具有簽名碼和一個可能證書的軟件包,并且檢查下載軟件包的簽名。如果客戶保留著與簽名對應的一個信托公共密鑰,或者客戶信托包含在證書的一些公共密鑰之中,那么客戶將下載碼作為一個信托加密碼。
然后在客戶的通用計算平臺上執(zhí)行加密碼,并且如果需要相互鑒權,可以要求客戶執(zhí)行一個加密功能。這個功能將一些任意數(shù)據(jù)作為輸入,并將數(shù)據(jù)的數(shù)字簽名加上客戶附加的一個特別標記作為輸出??蛻粢部赡芊祷匕瑯I(yè)務所使用的公共密鑰的一個證書來驗證客戶簽名。業(yè)務碼與他原來的服務器完成驗證密鑰的交換。如果成功,就與服務器建立起一個保密通信鏈路。
在本發(fā)明的第一個實施例中,通過利用本身簽名的密鑰交換碼,因此節(jié)省了一個公共密鑰簽名的產(chǎn)生、一個公共密鑰的驗證、和在客戶與服務器之間的一次傳輸,使得驗證密鑰交換更有效。
在本發(fā)明的第二個實施例中,密鑰交換和通信的保護相隔離。這種方法的好處是幾個不同的業(yè)務可以使用一個主要密鑰來保護,而不是每個業(yè)務都必須完成一個繁重的公共密鑰交換。
通過允許下載用于密鑰交換和數(shù)據(jù)通信保護所需要的加密協(xié)議碼,一個客戶或者服務器需要支持的預定加密功能的數(shù)量是有限的??商娲氖?,通過本身簽名的加密碼來保證安全。這也使得使用新算法來保護通信更容易,因為當協(xié)議具有安全缺陷時,并且必須重寫整個協(xié)議或者部分協(xié)議時,只需要更新服務器上的程序。
由于客戶所需要的必要密碼功能只是簽名和驗證簽名,經(jīng)常在輸出管理方面沒有問題,所以這些功能一般不受限制。
詳細描述參考
圖1,本發(fā)明描述了一個安全通信的情況100,在此一個通信客戶110想和提供特別業(yè)務的一個服務器120進行通信。客戶110可以通過一個全球網(wǎng)絡(例如Internet)、一個本地網(wǎng)絡、或者一個特別網(wǎng)絡130來接入服務器120。進一步,假定使用業(yè)務的所有單元使用一個通用的計算平臺140,即所有單元可以下載和執(zhí)行用一種通用語言寫的一個計算程序。廣泛使用的這種計算平臺和語言的一個例子是JavaTM虛擬機器和JavaTM字節(jié)碼計算語言。提供業(yè)務的單元,即服務器120,能夠全面掌握網(wǎng)絡中不同客戶110使用的語言和通用的計算平臺。
下面本發(fā)明將描述使用JavaTM JiniTM技術作為想連接通信業(yè)務的一個通信客戶的例子。JavaTM JiniTM技術使得計算機和設備能夠很快形成特別的網(wǎng)絡,而不用任何規(guī)劃、安裝、或者人工干預。每個設備提供的業(yè)務,網(wǎng)絡中其他設備也可以使用。這些設備也提供他們自己的接口,這保證了可靠性和兼容性。每個設備和業(yè)務都登記在一個查找業(yè)務中,并且當新業(yè)務加入網(wǎng)絡時,他們通過一個稱為發(fā)現(xiàn)和參加的添加協(xié)議。為了使用一個業(yè)務,一個人或者一個程序使用查找業(yè)務定位這個業(yè)務。從查找業(yè)務將業(yè)務接口復制到要求使用的設備。這樣查找業(yè)務像一個接線板一樣,將尋找一個業(yè)務的一個客戶和那個業(yè)務相連接。業(yè)務在哪里實現(xiàn)是不重要的,因為每個業(yè)務提供了與一個下載JiniTM代理相互作用所必須的所有條件。
在一個特別的無線網(wǎng)絡中,信托是其中一個中心問題。由于我們不能相信媒體,唯一的選擇是使用密碼術。一個主要問題是我們不能假定特別節(jié)點之間的任何預置的加密關系。由于特別網(wǎng)絡中所有節(jié)點都具有公共密鑰對,并且所有節(jié)點都考慮了其他節(jié)點的公共密鑰,這有益于在特別網(wǎng)絡中生成加密連接,可以使用基于驗證的任何公共密鑰。
與標準方法不同的是,本發(fā)明不用假定客戶和服務器必須共享不同的對稱密鑰加密或者消息驗證碼(MAC)算法的很大集合。代替地,本發(fā)明假定客戶只具有兩種預定的密碼能力-通過使用一個公共密鑰算法和一個單向哈什函數(shù),客戶可以對任意數(shù)據(jù)進行數(shù)字化地簽名;和-客戶可以驗證任意數(shù)據(jù)的一個公共密鑰簽名的正確性。用于簽名數(shù)據(jù)的算法是從相當小數(shù)量的可能算法中選出來的。
用于簽名或者驗證任意數(shù)據(jù)簽名的軟件程序或者硬件,在物理上置于客戶處,使得一個敵意的人不能進行改變或者操縱。用于簽名或者驗證簽名的軟件或者硬件不完全需要使用通用的計算平臺,例如相反可以使用計算平臺中定義的APIs(應用程序接口)。
使用上面描述的密碼能力,一個客戶可以安全地下載一個JiniTM代理,并使用JiniTM代理來執(zhí)行他代表的一個鑒權和密鑰管理協(xié)議。這給根據(jù)加密解決方案所使用的業(yè)務一個完全的自由。下面將參考圖2的流程圖描述本發(fā)明的第一個實施例。
在任何通信開始之前,服務器準備了客戶能下載的一個JiniTM代理。服務器對JiniTM代理進行簽名,因而允許客戶在執(zhí)行JiniTM代理之前驗證JiniTM代理的完整性和來源。JiniTM代理碼典型地包括與服務器的一個專用密鑰相對應的一個公共密鑰、和與服務器進行驗證密鑰交換所需的方法。
1、希望提供保密通信的服務器具有使用通用平臺的計算機語言,即Java,編寫的一個計算機程序。用JiniTM術語來說,服務器具有一個JiniTM代理。JiniTM代理包含與服務器進行驗證密鑰交換的必要算法和所需的方法。進一步,代理包含在一個保密業(yè)務會話之中、在一個客戶和一個服務器之間對發(fā)送數(shù)據(jù)進行加密和保護所需的算法。然而,代理不必包含執(zhí)行密碼計算需要的所有碼。相反,如果可行,代理可能使用通用平臺中定義的APIs。
2、服務器使用他的專用密鑰對JiniTM代理進行數(shù)字化簽名。使用上面所述的預定算法和格式計算簽名。這保證客戶能夠驗證簽名。
3、服務器組合簽名碼和簽名,并可選地包括證明服務器公共密鑰的一個或者多個證書。服務器的公共密鑰用于驗證服務器的鑒權。
在JiniTM和類似的環(huán)境下,尋找業(yè)務的一個客戶啟動了通信。一旦發(fā)現(xiàn)了這個業(yè)務,客戶下載要執(zhí)行的業(yè)務代理,區(qū)別在于在執(zhí)行之前驗證業(yè)務代理的鑒權。
4、一個客戶使用Jini查找業(yè)務200搜索一個業(yè)務。
5、當客戶找到這個業(yè)務并想使用他時,客戶下載與業(yè)務對應的一個代理和簽名以及可選的證書210。
6、客戶驗證下載數(shù)據(jù)軟件包的簽名。如果客戶具有與簽名對應的一個信托公共密鑰,或者客戶信托的一些公共密鑰包含在證書之中,那么客戶將下載碼作為一個信托碼220。
7、如果代理驗證是正確的,客戶使用通用計算平臺執(zhí)行下載碼。可能添加合適的運行時間限制;特別地,下載碼只能和指定的230通信,不必能夠和其他服務器通信。
如果需要相互鑒權,下載碼可以要求客戶生成一個簽名標簽??蛻艨赡芫芙^執(zhí)行任何其他的密碼功能。標簽生成功能需要一些任意數(shù)據(jù)并輸出一個標簽,他基本上是數(shù)據(jù)的一個數(shù)字簽名加上客戶添加的一個特別標記。標記是必須的,為了保證得出的結果被識別為一個標簽。客戶也可能返回包含一個公共密鑰的一個證書,這個公共密鑰用于驗證客戶所作的簽名。標簽的標記典型地指定了客戶要求代理指定的業(yè)務和一個時間標記。在客戶機器對數(shù)據(jù)和標簽進行數(shù)字化簽名之前,應該向客戶機器的用戶顯示這個標記。在那個時候用戶可能拒絕對標簽進行簽名。這樣JiniTM代理和服務器可以彼此如下進行鑒權。
8、代理和原來的服務器240進行驗證密鑰的交換。實際使用的協(xié)議基本上可以是任何標準的驗證和密鑰交換協(xié)議,例如DH或者RSA。JiniTM代理也可以從客戶處要求一個證書來驗證公共密鑰,以驗證上面提到的標簽的簽名。如果鑒權成功,代理與服務器250建立一個保密通信鏈路。
編寫加密碼的業(yè)務提供者可以按照自己的愿望來實現(xiàn)密鑰交換算法,但是應當遵循優(yōu)秀的密碼原理。這樣的加密級別是由服務器使用的算法決定的。
在本發(fā)明的第一個實施例中,服務器對密鑰交換碼自己進行簽名節(jié)省了一個公共密鑰簽名的生成、一個公共密鑰簽名的驗證、和客戶和服務器之間的一次傳輸。這是可能的,因為密鑰交換碼簽名的核查在實際的密鑰交換之前。因此服務器的公共密鑰的鑒權信息對客戶來說是可用的。例如如果使用Diffie-Hellman,業(yè)務碼中可以包含服務器的公共密鑰交換值。因此可以通過唯一的一次從客戶到服務器傳輸來完成密鑰交換,并且節(jié)省了一次傳輸。
在本發(fā)明的第二個實施例中,如圖3所示,密鑰交換和純粹的通信保護相隔離。這種方法的優(yōu)點是可以使用一組主密鑰來保護幾個不同的業(yè)務,以代替每個業(yè)務必須執(zhí)行的一個繁重的公共密鑰交換。這樣,代替搜索一個業(yè)務的是客戶300搜索一個密鑰交換服務器310??蛻?00從密鑰交換服務器310接收一組主密鑰和那些密鑰的一個識別符。當客戶300想在密鑰交換服務器所處的同一域中使用一個業(yè)務時,客戶搜索提供一個業(yè)務的一個服務器320、從服務器320下載一個軟件包、和在通用計算平臺330上執(zhí)行那個軟件包。下載的加密碼可以要求客戶300完成一個加密功能,他將主密鑰組識別符作為輸入,并將主密鑰組作為輸出。當進行密鑰交換時,下載的業(yè)務碼使用這個主密鑰組。
本發(fā)明描述了使用JiniTM技術的例子,對節(jié)點的唯一要求是他們要支持一個通用的計算平臺,即特別網(wǎng)絡中所有節(jié)點都能夠下載和執(zhí)行用一種通用語言編寫的程序,并且具有生成和驗證簽名的能力。當建立保密WAP(無線應用協(xié)議)業(yè)務時,例如也可以使用本發(fā)明,即通過下載一個程序碼來定義加密算法。
如上所述已經(jīng)描述了本發(fā)明,很明顯本發(fā)明可以有多種變化。這些變化不被認為脫離了本發(fā)明的保護范圍,并且本領域熟練技術人員對本發(fā)明所作的一切修改很明顯都屬于權利要求書的保護范圍之內。
權利要求
1.在一個客戶和一個服務器之間建立一個保密通信信道的一種方法,所述客戶和所述服務器具有一個通用的計算平臺,以支持對任意數(shù)據(jù)的數(shù)字簽名和驗證,其特征在于從所述服務器向所述客戶下載一個數(shù)字簽名數(shù)據(jù)軟件包,所述軟件包包含與所述服務器進行驗證密鑰交換的程序;在所述客戶處驗證所述下載的數(shù)據(jù)軟件包的所述數(shù)字簽名;和如果所述驗證正確,在所述通用計算平臺上執(zhí)行所述下載的數(shù)據(jù)軟件包。
2.如權利要求1所述的方法,進一步,其特征在于,所述下載的數(shù)據(jù)軟件包要求所述客戶完成一個加密功能,所述功能將一些任意數(shù)據(jù)作為輸入、并將所述數(shù)據(jù)的一個數(shù)字簽名和客戶添加的一個標記作為輸出,以進行相互驗證。
3.如權利要求2所述的方法,其特征在于,所述標記是識別所要求業(yè)務的一個文本和一個時間標記。
4.如前述任何一項權利要求所述的方法,其特征在于,所述通用計算平臺是Java虛擬機器和Java字節(jié)碼計算語言。
5.如前述任何一項權利要求所述的方法,其特征在于,所述服務器是提供一組主密鑰的一個密鑰交換服務器,以保護和幾個業(yè)務的通信。
6.在一個客戶和一個服務器之間建立一個保密通信信道的一個系統(tǒng),所述客戶和所述服務器具有一個通用的計算平臺,以支持對任意數(shù)據(jù)的數(shù)字簽名和驗證,其特征在于裝置用于從所述服務器向所述客戶下載一個數(shù)字簽名數(shù)據(jù)軟件包,所述軟件包包含與所述服務器進行驗證密鑰交換的程序;裝置用于在所述客戶處驗證所述下載的數(shù)據(jù)軟件包的所述數(shù)字簽名;和如果所述驗證正確,裝置用于在所述通用計算平臺上執(zhí)行所述下載的數(shù)據(jù)軟件包。
7.如權利要求6所述的系統(tǒng),進一步,其特征在于,所述下載的數(shù)據(jù)軟件包具有要求所述客戶完成一個加密功能的裝置,所述功能將一些任意數(shù)據(jù)作為輸入、并將所述數(shù)據(jù)的一個數(shù)字簽名和客戶添加的一個標記作為輸出,以進行相互驗證。
8.如權利要求7所述的系統(tǒng),其特征在于,所述標記是識別所要求業(yè)務的一個文本和一個時間標記。
9.如權利要求6-8中任何一項所述的系統(tǒng),其特征在于,所述通用計算平臺是Java虛擬機器和Java字節(jié)碼計算語言。
10.如權利要求6-9中任何一項所述的系統(tǒng),其特征在于,所述服務器是一個密鑰交換服務器,他具有的裝置能夠提供一組主密鑰以保護幾種業(yè)務的通信。
全文摘要
本發(fā)明涉及開放系統(tǒng)的保密信息,并且更特別地涉及對任意通信業(yè)務提供鑒權、加密、和完整保護的一種方法和系統(tǒng)。想進行一項特殊業(yè)務的一個客戶從那個業(yè)務下載一個簽名的程序碼,他包含與那個業(yè)務進行鑒權密鑰交換所必須的碼。假定客戶只支持兩種基本的密碼功能使用一個公共密鑰算法和一個單向哈什函數(shù)對任意數(shù)據(jù)進行簽名,和驗證任意數(shù)據(jù)的一個公共密鑰簽名。通過允許下載密鑰交換和數(shù)據(jù)保密通信所需的加密協(xié)議,客戶或者服務器需要支持的預定加密功能的數(shù)量是有限的。由于只需要更新服務器的程序,這使得對保密通信的更新變得更容易。
文檔編號G09C1/00GK1446418SQ0181401
公開日2003年10月1日 申請日期2001年7月5日 優(yōu)先權日2000年8月11日
發(fā)明者C·格赫曼恩 申請人:艾利森電話股份有限公司