專利名稱:用于判斷服務器證書有效性的設備、方法以及計算機軟件產品的制作方法
技術領域:
本發(fā)明涉及一種通信設備、證書發(fā)布設備以及通信系統(tǒng)等等,具體而言,涉及用于在通信過程中使用服務器證書來執(zhí)行服務器驗證的通信設備、證書發(fā)布設備以及通信系統(tǒng)等等。
背景技術:
作為用于克服在服務器-客戶端通信時在因特網(wǎng)上的竊聽以及服務器欺騙問題的技術,美國專利5657390公開了一種涉及SSL(SecureSocket Layer,安全套接層)的技術,并且RFC2246(IETF)公開了一種涉及TLS(Transport Layer Security,傳輸層安全)的技術,該技術是SSL的改進型版本(以下把這些技術統(tǒng)稱為“SSL”)。
圖1是示出了在SSL通信時通信系統(tǒng)的系統(tǒng)配置的框圖。
所述通信系統(tǒng)包括基于證書授權中心(CA)操作的服務器證書生成設備1000以及存儲庫2000、由應用程序供應商使用的多個應用程序服務器3000a~3000k以及由用戶使用的多個終端4000a~4000n。所述存儲庫2000以及每個應用程序服務器3000a~3000k以及終端4000a~4000n與因特網(wǎng)5000相連。
所述服務器證書生成設備1000是一種計算機設備,用于(1)為每個終端4000a~4000n發(fā)布CA證書6000,(2)為每個應用程序服務器3000a~3000k發(fā)布服務器證書7000,以及(3)向存儲庫2000分發(fā)服務器證書撤銷列表(以下也稱為“CRL”)8000。
所述存儲庫2000是用于依照每個終端4000a~4000n的分發(fā)請求向每個終端4000a~4000n分發(fā)CRL 8000的計算機設備,其包括CRL存儲單元2100以及通信單元2200,其中CRL存儲單元2100用于存儲從服務器證書生成設備1000分發(fā)的CRL 8000,通信單元2200用于當從終端4000a~4000n接收到分發(fā)請求時,把存儲在CRL存儲單元2100中的CRL 8000發(fā)送到每個終端4000a~4000n。
每個應用程序服務器3000a~3000k是一種計算機設備,用于在SSL通信中向已經(jīng)提出通信請求的每個終端4000a~4000n分發(fā)服務器證書7000,并且每個應用程序服務器包括服務器單元3100、服務器證書存儲單元3200以及通信單元3300。
每個終端4000a~4000n包括客戶端單元4100、服務器證書驗證單元4200、時鐘4300以及通信單元4400,其中所述服務器證書驗證單元4200具有CA證書存儲單元4210以及CRL存儲單元4220。
在所述終端4000a~4000n開始與所述應用程序服務器3000a~3000k通信以前,所述CA使服務器證書生成設備1000預先發(fā)布服務器證書7000并且向各個應用程序服務器3000a~3000k分發(fā)這種服務器證書7000。每個應用程序服務器3000a~3000k把所分發(fā)的服務器證書7000存儲到服務器證書存儲單元3200中。
此外,所述CA向每個終端4000a~4000n分發(fā)CA證書6000,所述CA證書6000包括與CA的私有密鑰成對的CA公有密鑰,其中所述CA私有密鑰用于標記(sign)服務器證書7000。然后,每個終端4000a~4000n把CA證書6000存儲到CA證書存儲單元4210中。
同時,所述CA檢驗服務器證書7000的無效性。當斷定這種服務器證書7000是無效時,所述CA使服務器證書生成設備1000把這種服務器證書7000的序號添加至當前CRL 8000,以便生成新的CRL8000,并且把它分發(fā)至存儲庫2000。
所述存儲庫2000把所接收到的CRL 8000存儲到CRL存儲單元2100中。所述終端4000a~4000n定期地請求存儲庫2000中的通信單元2200來分發(fā)所述CRL 8000。
所述存儲庫2000依照各個終端4000a~4000n的請求把CRL8000分發(fā)至各個終端4000a~4000n。在進行此種操作時,所述存儲庫2000從所述CRL存儲單元2100讀取CRL 8000,并且使通信單元2200將其發(fā)送到每個終端4000a~4000n。每個終端4000a~4000n把所接收到的CRL 8000存儲到CA證書存儲單元4210中。
圖2是示出了圖1中示出的服務器證書7000的最小結構的例子的列表。應該注意的是,服務器證書在SSL中采用x509的格式。
所述服務器證書7000包括版本7001、序號7002、簽名算法7003、發(fā)布方7004、有效期7005、名稱7006、公有密鑰7007和簽名7008。
所述版本7001指示x509格式的版本。所述序號7002是由發(fā)布方分配給服務器證書的唯一編號。所述簽名算法7003指示在創(chuàng)建標記的過程中由發(fā)布方使用的算法。所述發(fā)布方7004是用于發(fā)布此服務器證書的證書授權中心的名稱。所述有效期7005指示服務器證書保持有效的周期。所述名稱7006是為其發(fā)布服務器證書的對象名稱。公有密鑰7007是服務器公有密鑰。并且簽名7008是由CA利用其CA私有密鑰來創(chuàng)建的簽名,其中所述CA私有密鑰位于此服務器證書中排除此簽名的部分上。
圖3是示出了圖1中示出的CRL證書8000的最小結構的例子的圖表。
所述CRL 8000包括版本8001、簽名算法8002、發(fā)布方8003、更新時間8004、下一更新時間8005、撤銷證書8006、簽名算法8007以及簽名8008。
所述版本8001是此證書撤銷列表的版本。所述簽名算法8002指示在標記此證書撤銷列表時由發(fā)布方使用的算法。所述發(fā)布方8003指示發(fā)布CRL 8000的CA的名稱。所述更新時間8004是發(fā)布此證書撤銷列表的日期與時間。所述下一更新時間8005是所述證書撤銷列表下次將被更新的日期與時間。所述撤銷證書8006是各個撤銷服務器證書的序號8006b以及撤銷時間8006b的列表。在由所述CA基于發(fā)布方的名稱來向外發(fā)布的服務器證書中,由CA判斷為無效的每一服務器證書的序號將被描述為序號8006b,以及其撤銷時間8006b。所述簽名算法8007是在標記此證書撤銷列表時由發(fā)布CA使用的算法。以及簽名8008是由CA利用其CA私有密鑰來創(chuàng)建的簽名,其中所述CA私有密鑰位于CRL 8000排除此簽名的部分上。
接下來,給出對以下這種情況的描述,即終端4000a~4000n以及應用程序服務器3000a~3000k執(zhí)行未加密通信。
圖4是舉例說明執(zhí)行未加密通信的情況的順序圖。應注意的是,此處給出的描述是針對在終端4000a以及應用程序服務器3000a之間執(zhí)行通信的情況。
在終端4000a中,所述客戶端單元4100指示通信單元4400把請求1發(fā)送至應用程序服務器3000a(S801)。然后,所述通信單元4400把請求1發(fā)送至應用程序服務器3000a的通信單元3300(S802)。
在應用程序服務器3000a中,所述通信單元3300把所接收到的請求1輸出至服務器單元3100(S803)。所述服務器單元3100處理這種請求1以便生成響應1,并且指示通信單元3300將其發(fā)送到終端4000a(S804)。然后,所述通信單元3300把這種響應1發(fā)送至終端4000a的通信單元4400(S805)。
所述終端4000a的通信單元4400向客戶端單元4100輸出響應1(S806)。
在不加密所述請求1和響應1的情況下依照上述順序來執(zhí)行通信。
接下來,給出對以下這種情況的描述,即終端4000a~4000n以及應用程序服務器3000a~3000k實現(xiàn)加密通信。
圖5是舉例說明執(zhí)行加密通信情況的順序圖。應注意的是,此處給出的描述是針對在終端4000a以及應用程序服務器3000a之間執(zhí)行通信的情況。
在終端4000a中,所述客戶端單元4100指示通信單元4400把請求2以加密形式發(fā)送至應用程序服務器3000a(S900)。然后,所述通信單元4400向應用程序服務器3000a的通信單元3300發(fā)送ClientHello分組,所述ClientHello分組包括(1)作為公用密鑰的元素使用的客戶端隨機數(shù)和(2)所述通信單元4400可支持的加密類型,以便開始SSL握手(S901)。
在所述應用程序服務器3000a中,所述通信單元3300根據(jù)ClientHello分組確定所述加密類型,生成(1)作為公用密鑰元素的服務器隨機數(shù)和(2)用于唯一地指定所述通信的會話ID,并且發(fā)送ServerHello分組中所確定的加密類型、所述服務器隨機數(shù)和會話ID(S902)。然后,所述通信單元3300從服務器證書存儲單元3200讀取服務器證書7000(S903),向終端4000a的通信單元4400發(fā)送這種作為證書分組的服務器證書7000(S904),并且向通信單元4400發(fā)送ServerHelloDone(S907)。
所述終端4000a的通信單元4400從所述證書分組中讀取服務器證書7000,并且將其發(fā)送到服務器證書驗證單元4200(S905)。所述服務器證書驗證單元4200驗證這種服務器證書7000是否為無效,并且向所述通信單元4400通知驗證結果(S906)。當所述服務器證書無效時,所述通信單元4400向應用程序服務器3000a的通信單元3300發(fā)送告警分組,以便斷開會話,并且向客戶端單元4100返回一錯誤。同時,當所述服務器證書有效時,所述通信單元4400生成用于計算用于加密的公用密鑰的預掌握(premaster)密鑰,利用包含在服務器證書7000中的服務器公有密鑰對該預掌握密鑰進行加密,在ServerHelloDone分組到達之后,向應用程序服務器3000a的通信單元3300發(fā)送ClientKeyExchange分組,所述ClientKeyExchange分組包括經(jīng)過加密的預掌握密鑰(S908),并且還向通信單元3300發(fā)送ChangeCipherSpec分組(S909)。ChangeCipherSpec分組是表示加密啟動的分組。所述通信單元4400根據(jù)客戶端隨機數(shù)、服務器隨機數(shù)以及預掌握密鑰生成用于加密的公用密鑰C,并且利用所生成的公用密鑰C來對指示握手完成的Finished分組進行加密,以便向應用程序服務器3000a的通信單元3300發(fā)送這種經(jīng)過加密的分組(S910)。
應用程序服務器3000a的通信單元3300從ClientKeyExchange分組讀取經(jīng)過加密的預掌握密鑰,利用服務器私有密鑰將其解密為預掌握密鑰,并且根據(jù)經(jīng)過解密的預掌握密鑰、所述服務器隨機數(shù)以及客戶端隨機數(shù)來生成用于加密的公用密鑰D。當SSL握手已經(jīng)正常地進行時,那么通信單元3300擁有的公用密鑰C以及通信單元4400擁有的公用密鑰D變?yōu)橄嗤K鐾ㄐ艈卧?300利用公用密鑰D來解密所接收到的Finished分組,并且當這種解密繼續(xù)時,加密這種Finished分組以便將其發(fā)送到終端4000a的通信單元4400(S911)。所述Finished分組之后的后續(xù)通信應該以加密的形式來執(zhí)行。
終端4000a的通信單元4400解密所接收的Finished分組,并且當這種解密繼續(xù)時,把請求2以加密的形式發(fā)送至應用程序服務器3000a的通信單元3300(S912)。
應用程序服務器3000a的通信單元3300對所述請求2進行解密,并且向服務器單元3100發(fā)送解密后的請求2(S913)。所述服務器單元3100處理這種請求2以便生成響應2,并且指示通信單元3300將其發(fā)送到終端4000a(S914)。然后,所述通信單元3300對響應2進行加密,并且把加密后的響應2發(fā)送至終端4000a的通信單元4400(S915)。
終端4000a的通信單元4400對加密后的響應2進行解密,并向客戶端單元4100輸出解密后的響應2(S916)。
所述通信是依照上述方式以加密的形式進行的。
接下來,給出對由服務器證書驗證單元4200執(zhí)行的驗證的描述。
圖6是示出了當驗證服務器證書7000時由服務器證書驗證單元4200執(zhí)行的操作的流程圖。
所述服務器證書驗證單元4200從所接收的服務器證書7000讀取有效期7005,并且根據(jù)時鐘4300獲得當前時間(S9051)。然后,所述服務器證書驗證單元4200把當前時間與所述有效期7005的開始和期滿日期進行比較,并且在當前時間不在服務器證書7000的有效期7005之內時,通知通信單元4400表示周期期滿的錯誤代碼,以結束驗證(S9057)。
同時,在當前時間在服務器證書7000的有效期7005之內時,所述服務器證書驗證單元4200從服務器證書7000讀取發(fā)布方7004,并且在CA證書存儲單元4210中搜索該發(fā)布方7004的CA證書6000。在存在與發(fā)布方7004對應的CA證書6000時,所述服務器證書驗證單元4200從該CA證書6000中讀取CA公有密鑰,并且使用CA公有密鑰來檢驗服務器證書7000上的簽名7008。當所述簽名7008無效時,所述服務器證書驗證單元4200通知通信單元4400表示驗證錯誤的錯誤代碼,并且結束驗證(S9057)。
當所述簽名7008有效時,所述服務器證書驗證單元4200從服務器證書7000中讀取序號7002。然后,所述服務器證書驗證單元4200從CRL存儲單元4220讀取CRL 8000,并且檢驗該序號7002是否包括在CRL 8000中。當所述CRL 8000包括序號7002時,所述服務器證書驗證單元4200斷定服務器證書7000被撤銷,并且通知通信單元4400表示撤銷的錯誤代碼,從而結束所述驗證(S9057)。同時,當CRL8000不包括序號7002時,所述服務器證書驗證單元4200斷定服務器證書7000是有效的,并且通知通信單元4400所述驗證已經(jīng)正常地結束。
如上所述,所述終端4000a~4000n在與應用程序服務器3000a~3000k通信時,通過使用SSL執(zhí)行加密通信來防止竊聽以及服務器欺騙。
然而,現(xiàn)存的方法具有如下問題。
首先,在現(xiàn)有通信系統(tǒng)中,CRL的大小是不固定的,因此CRL的大小隨著被撤銷的服務器證書數(shù)目的增加而變得非常大(幾十千字節(jié)~幾百千字節(jié))。這產生了需要終端具有巨大存儲容量來存儲這種CRL的問題。此外,當CRL大小變得越大時,在驗證所述服務器證書時,檢測服務器證書的序號是否包括在CRL中所花費的時間會越長。此外,當所述CRL大小變得越大時,所述終端從存儲庫獲得CRL所經(jīng)由的通信通路需要能夠處理巨大的數(shù)據(jù)量,并且這種存儲庫還需要能夠存儲大量的數(shù)據(jù)。
此外,還存在另一問題,終端需要具有精確的時鐘以便在進行有效期驗證時對當前時間與服務器證書的有效期進行比較。
換言之,為了根據(jù)表示這種服務器設備有效的服務器證書來與服務器設備進行通信,現(xiàn)有的通信系統(tǒng)要求終端(通信設備)具有足夠的資源,諸如大容量存儲器能力、非常精確的時鐘以及通信接口。
本發(fā)明是鑒于上述技術問題而構思的,本發(fā)明的目的在于提供一種能夠根據(jù)用于指示這種服務器設備有效性的服務器證書、使用少量資源與服務器設備進行通信的通信設備、證書發(fā)布設備以及通信系統(tǒng)等等。
發(fā)明內容
為了實現(xiàn)上述目的,根據(jù)本發(fā)明的通信設備是一種用于根據(jù)指示所述服務器設備有效性的服務器證書來與服務器設備進行通信的通信設備,該通信設備包括撤銷序號獲取單元,用于從存儲庫設備獲得撤銷序號,其中所述存儲庫設備存儲所述撤銷序號,所述撤銷序號是用作判斷服務器證書有效性的標準的信息;撤消編號存儲單元,用于存儲所獲得的撤消編號;標識號讀取單元,用于從所述服務器證書中讀出用于識別所述服務器證書的標識號;證書判斷單元,用于通過把所讀出的標識號與撤消編號存儲單元中存儲的撤消編號進行比較,以判斷所述服務器證書的有效性;以及通信控制單元,用于當所述服務器證書被斷定為有效時,建立與服務器設備的通信,以及當服務器證書被斷定為無效時,不建立與服務器設備的通信。
更具體地說,當所述標識號等于或者大于撤消編號時,所述證書判斷單元可以斷定服務器證書是有效的。
因此,不必(1)像通常所要求的那樣,使用時鐘來判斷服務器證書的有效期是否已經(jīng)期滿,或者(2)像通常所要求的那樣,從所述存儲庫獲得并且存儲大規(guī)模CRL并且在這種大規(guī)模CRL中搜索服務器證書的標識號。這使通信設備能夠只從存儲庫獲得一個撤消編號并且使用該撤消編號來判斷所有服務器證書是否都有效。因此,所述通信設備以及存儲庫只需要具備少量的資源(例如存儲容量),這使得通信設備能夠根據(jù)指示這種服務器設備有效性的服務器證書來與服務器設備通信。
此外,具有上述結構的通信設備還可以包括撤消編號判斷單元,用于判斷撤消編號的有效性,其中當所述撤消編號判斷單元斷定撤消編號有效時,所述證書判斷單元使用撤消編號來判斷服務器證書的有效性。更具體地說,所述撤消編號判斷單元可以通過把指示存儲庫設備有效性的存儲庫證書的標識號與撤消編號存儲單元中所存儲的撤消編號進行比較來判斷撤消編號的有效性。此外,當存儲庫證書的標識號等于或者大于由撤消編號存儲單元所存儲的撤消編號時,所述撤消編號判斷單元可以斷定所述存儲庫設備是有效的。
因此,對于通信設備而言,能夠(1)使用與服務器設備通信時所使用的方法相同的方法來獲得存儲庫證書,以便使用這種存儲庫證書來驗證所述存儲庫,(2)當存儲庫有效時,獲得加密通信中的撤消編號,并且(3)只獲得有效的撤消編號,以便使用該有效撤消編號來判斷所有服務器證書是否都有效。
此外,所述撤消編號判斷單元可以通過把由撤消編號獲取單元所獲得的所述撤消編號與撤消編號存儲單元中所存儲的撤消編號進行比較來判斷撤消編號的有效性。更具體地說,當所獲得的撤消編號等于或者大于由撤消編號存儲單元所存儲的撤消編號時,所述撤消編號判斷單元可以斷定由撤消編號獲取單元所獲得的撤消編號是有效的。
因此,對于通信設備而言,能夠當所述存儲庫是有效的時獲得未加密通信中的撤消編號,并且只獲得有效的撤消編號,以便使用該撤消編號判斷所有服務器證書是否都是有效的。
而且,根據(jù)本發(fā)明的證書發(fā)布設備是用于發(fā)布指示服務器設備的有效性的服務器證書的證書發(fā)布設備,包括撤消編號存儲單元,用于存儲撤消編號,所述撤消編號是用作判斷服務器證書有效性的標準的信息;以及發(fā)布單元,用于發(fā)布新的服務器證書,其中所述發(fā)布部件發(fā)布包括有標識號的新的服務器證書,該標識號指示等于或者大于由撤消編號存儲單元存儲的撤消編號的值。
更具體地說,具有上述結構的所述證書發(fā)布設備還包括撤消編號更新單元,用于當被通知服務器證書的所述標識號待撤消時,把撤消編號存儲單元中所存儲的撤消編號更新為大于待撤消服務器證書的標識號的編號。
因此,不必令通信設備(1)像通常所要求的那樣,使用時鐘來判斷服務器證書的有效期是否已經(jīng)期滿,或者(2)像通常所要求的那樣,從所述存儲庫獲得并且存儲大規(guī)模CRL并且從這種大規(guī)模CRL中搜索服務器證書的標識號。這使所述通信設備能夠只從存儲庫獲得一個撤消編號并且使用該撤消編號來判斷所有服務器證書是否都有效。因此,所述通信設備以及存儲庫只需要具備少量的資源(例如存儲容量),這使得通信設備能夠根據(jù)指示這種服務器設備有效性的服務器證書來與服務器設備通信。
此外,具有上述結構的證書發(fā)布設備還包括撤消編號更新單元,用于指定服務器證書的標識號、正在接近的期滿日期,并且把撤消編號存儲單元中所存儲的撤消編號更新為大于所述標識號的編號。
因此,能夠撤消接近期滿的服務器證書。
此外,在撤消編號更新單元更新了由撤消編號存儲單元存儲的撤消編號的情況下,所述發(fā)布單元為具有被分配有小于已更新撤消編號的標識號的服務器證書的服務器發(fā)布新的服務器證書。
因此,對于服務器設備而言,能夠根據(jù)其新的服務器證書來對其進行驗證。
根據(jù)上述描述可知,根據(jù)本發(fā)明的通信設備,不必(1)像通常所要求的那樣,使用時鐘來判斷服務器證書的有效期是否已經(jīng)期滿,或者(2)像通常所要求的那樣,從所述存儲庫獲得并且存儲大規(guī)模CRL并且從這種大規(guī)模CRL中搜索服務器證書的標識號。這使通信設備能只從存儲庫獲得一個撤消編號并且使用該撤消編號來判斷所有服務器證書是否都有效。因此,所述通信設備以及存儲庫只需要具備少量的資源(例如存儲容量),這使得通信設備能夠根據(jù)指示這種服務器設備有效性的服務器證書來與服務器設備通信。
此外,根據(jù)本發(fā)明的通信設備,對于通信設備而言,能夠(1)使用與服務器設備通信時所使用的方法相同的方法來獲得存儲庫證書,以便使用該存儲庫證書來驗證所述存儲庫,(2)當存儲庫有效時,獲得加密通信中的撤消編號,并且(3)只獲得有效的撤消編號,以便使用該撤消編號來判斷所有服務器證書是否都有效。
此外,根據(jù)本發(fā)明的通信設備,能夠當所述存儲庫有效時獲得未加密通信中的撤消編號,并且只獲得有效的撤消編號,以便使用該撤消編號判斷所有服務器證書是否都是有效的。
而且,根據(jù)本發(fā)明的證書發(fā)布設備,不必讓通信設備(1)像通常所要求的那樣,使用時鐘來判斷服務器證書的有效期是否已經(jīng)期滿,或者(2)像通常所要求的那樣,從所述存儲庫獲得并且存儲大規(guī)模CRL并且從這種大規(guī)模CRL中搜索服務器證書的標識號。這使通信設備能只從存儲庫獲得一個撤消編號并且使用該撤消編號來判斷所有服務器證書是否都有效。因此,所述通信設備以及存儲庫只需要具備少量的資源(例如存儲容量),這使得通信設備能夠根據(jù)指示這種服務器設備有效性的服務器證書來與服務器設備通信。
此外,根據(jù)本發(fā)明的證書發(fā)布設備,能夠撤消接近期滿的服務器證書。
此外,根據(jù)本發(fā)明的證書發(fā)布設備,對于服務器設備而言,能夠根據(jù)新的服務器證書來對服務器設備進行驗證。
由此,當廣泛應用因特網(wǎng)并且當具有少量資源的聯(lián)網(wǎng)設備投入市場時,只需要非常少量的資源來執(zhí)行服務器驗證的本發(fā)明如今非常適用。
應注意的是,不僅能夠把本發(fā)明具體化為具有上述結構的通信設備和證書發(fā)布設備,而且還可以具體化為由服務器設備、用于發(fā)布指示服務器設備有效性的服務器證書的證書發(fā)布設備以及由根據(jù)這種服務器證書來與服務器設備通信的通信設備組成的通信系統(tǒng)。此外,本發(fā)明還可以被具體化為一種通信方法,依照其步驟,包括具有上述結構的通信設備和證書發(fā)布設備裝備有的特征單元,并且進一步被具體化為使計算機執(zhí)行這種步驟的程序。還應該注意的是,能夠經(jīng)由諸如CD-ROM的記錄介質并且經(jīng)由諸如因特網(wǎng)的傳輸介質來分發(fā)此程序。
作為涉及此申請的技術背景的其它信息,將2003年4月3日提交的日本專利申請No.2003-100866的內容引入于此,以供參考。
結合附圖根據(jù)如下描述將使本發(fā)明的這些以及其他目的、優(yōu)勢以及特征變得更加明顯,所述附圖舉例說明了本發(fā)明的具體實施例。在所述附圖中圖1是示出了在SSL通信時通信系統(tǒng)的系統(tǒng)配置的框圖;
圖2是示出了圖1中示出的服務器證書7000的最小結構的例子的列表;圖3是示出了圖1中示出的CRL證書8000的最小結構的例子的圖表;圖4是舉例說明執(zhí)行未加密通信的情況的順序圖;圖5是舉例說明執(zhí)行加密通信情況的順序圖。
圖6是示出了當驗證服務器證書7000時由服務器證書驗證單元4200執(zhí)行的操作的流程圖;圖7是示出了依照本發(fā)明的第一實施例的通信系統(tǒng)1的整體配置的框圖;圖8是示出了圖7中示出的服務器證書75的結構例子的圖表;圖9是示出了圖7中示出的撤銷信息90的結構例子的圖表;圖10是示出了圖7中示出的服務器證書歷史記錄表110a的例示結構的圖表;圖11是示出了當為服務器證書設置序號時由服務器證書形成單元107執(zhí)行的操作的流程圖;圖12是示出了當進行證書有效期管理時由服務器證書有效期搜索單元111執(zhí)行的操作的流程圖;圖13是示出了當由于其有效期到達而搜索撤銷證書時由撤銷證書搜索單元113執(zhí)行的操作的流程圖;圖14是示出了響應于撤銷通知,在搜索撤銷證書時由撤銷證書搜索單元113執(zhí)行的操作的流程圖;圖15是示出了當形成撤銷信息時由撤銷信息簽名單元116執(zhí)行的操作的流程圖;圖16是示出了在獲得撤銷信息時由服務器證書驗證單元430中的每一單元執(zhí)行的操作的流程圖;圖17是示出了執(zhí)行加密通信的情況的順序圖;圖18是示出了當驗證服務器證書75時由服務器證書驗證單元430執(zhí)行的操作的流程圖;圖19是當存在四個服務器時服務器證書75的序號和撤銷序號之間的關系的圖表;和圖20是示出了依照本發(fā)明第二實施例的通信系統(tǒng)2的整體配置的框圖。
發(fā)明詳述(第一實施例)以下描述了按照本發(fā)明第一實施例的通信系統(tǒng)。
圖7是示出了依照本發(fā)明第一實施例的通信系統(tǒng)1的整體配置的框圖。
所述通信系統(tǒng)1是一種用于使用CA證書60、服務器證書75和撤銷信息90作為基礎工具來驗證應用程序服務器的系統(tǒng),意在提供一種公有密鑰基礎結構(PKI)來確保使用公有密匙加密方法進行的通信的安全。這種通信系統(tǒng)1包括均由證書授權中心(以下也稱為“CA”)使用的服務器證書生成設備10和存儲庫20、由諸如視頻內容的應用程序供應商使用的多個應用程序服務器30a~30k、由用戶使用的多個終端40a~40n以及用于使存儲庫20、應用程序服務器30a~30k和終端40a~40n相互連接的因特網(wǎng)50。應注意的是,由于每個應用程序服務器30a~30k均具有相同的結構,故而在圖表中僅僅舉例說明了應用程序服務器30a的詳細結構。同樣,由于每個終端40a~40n均具有相同的結構,故而在圖表中僅僅舉例說明了終端40a的詳細結構。
服務器證書生成設備10是一種計算機設備,用作基本服務器,用于提供用于通信系統(tǒng)1的基本工具。具體而言,所述服務器證書生成設備10(1)預先向每個終端40a~40n發(fā)布CA證書60,(2)根據(jù)來自于每個應用程序服務器30a~30k的證書標記請求(以下也稱為“CSR”)70發(fā)布專用于每個應用程序服務器30a~30k的服務器證書75,并且所述服務器證書75包括從“0”開始以“1”為增量增加的序號,并且所述序號對于系統(tǒng)而言是唯一的,(3)例如當其服務器證書75接近期滿時,在這種應用程序服務器的服務器證書75將要被撤銷的情況下,向應用程序服務器給予證書撤銷(證書更新請求)的預先通知,并且(4)向存儲庫20發(fā)送撤銷信息20,所述撤銷信息20包括序號(以下也稱為“撤銷序號”或者“撤銷編號”),所述序號需要從“0”開始以單調編號遞增,并且當就服務器證書75是否被撤銷做出判斷時進行使用。
應注意的是,CA證書60包括例如該證書的發(fā)布方、其簽名算法、該證書的有效期(例如十年)、CA的公有密鑰(CA公有密鑰)以及由與這種CA公有密鑰成對的CA私有密鑰(CA私有密鑰)創(chuàng)建的簽名。同時,CSR 70例如包括做出此CSR的服務器的名稱以及該服務器的公有密鑰(服務器公有密鑰)。
存儲庫20是一種計算機設備,用于存儲由服務器證書生成設備10通知的最新的撤銷信息90。當經(jīng)由因特網(wǎng)從任一終端40a~40n請求撤銷信息90時,作為響應,所述存儲庫20在未加密通信中將撤銷信息90分發(fā)到請求終端。
每個應用程序服務器30a~30k是一種計算機設備,并且向服務器證書生成設備10做出CSR 70,所述請求包括服務器的名稱并且必要時包括該服務器的公有密鑰(例如當存在來自于服務器證書生成設備10的證書撤銷通知時),并且保存由服務器證書生成設備10僅僅為每個應用程序服務器30a~30k發(fā)布的服務器證書75?;趤碜杂谌我唤K端40a~40n的用于下載其應用程序的請求,每個應用程序服務器30a~30k按照SSL通信協(xié)議來發(fā)送其服務器證書75,并且作為響應,在服務器證書75被驗證之后,使用會話密鑰(公用密鑰)在加密通信中來分發(fā)所請求的應用程序。應注意的是,所述過程相當于當以未加密形式執(zhí)行通信時使用的常規(guī)的過程。
每個終端40a~40n是一種諸如網(wǎng)絡設備(例如視頻解碼器)的計算機設備,用于預先獲得由服務器證書生成設備10發(fā)布的CA證書60并且對其進行存儲。此外,每個終端40a~40n定期地(例如一月一次)請求存儲庫20的通信單元202來分發(fā)撤銷信息90,并且存儲該分發(fā)信息90中包括的最新的撤銷編號。然后,當從任一應用程序服務器30a~30k下載應用程序時,每個終端40a~40n按照SSL通信協(xié)議來基于從該服務器發(fā)送的服務器證書75、預存的CA證書60以及撤銷信息90中的撤銷編號來驗證服務器。然后,在驗證所述服務器之后,每個終端40a~40n使用會話密鑰在加密通信中交換請求和響應。
因此,本發(fā)明能夠防止對請求以及響應進行的竊聽。
圖8是示出了圖7中示出的服務器證書75的結構例子的圖表。應注意的是,如在常規(guī)方法中那樣,此服務器證書75還可以具有x509格式。
這種服務器證書75包括如下字段版本751、序號752、簽名算法753、發(fā)布方754、有效期755、服務器名稱756、服務器公有密鑰757以及簽名758。
所述版本751指示x509格式的版本,其中例如存儲“1”。所述序號752是由發(fā)布方分配給服務器證書的唯一編號,其中例如存儲“17”。所述簽名算法753指示在標記此服務器證書時由發(fā)布方使用的算法。所述發(fā)布方754是用于發(fā)布此服務器證書的證書授權中心的名稱,其中例如存儲“Panasign”。所述有效期755表示服務器證書保持有效的周期,其中例如存儲如下內容發(fā)布服務器證書75的日期與時間(有效期的開始日期,2003.04.01...)以及在那之后十三個月的日期與時間(有效期的結束日期2004.05.01...)。所述名稱756是為其發(fā)布服務器證書的對象的名稱,其中例如存儲“Hariwood movie”。所述服務器公有密鑰757是服務器公有密鑰,其中例如存儲有Hariwoodmovie的公有密鑰“Pubk_11”。并且所述簽名758是關于此服務器證書中除簽名以外部分的特征的簽名,被稱為指紋,其中例如存儲如下內容通過利用CA私有密鑰對服務器名稱“Hariwood movie”以及服務器公有密鑰“Pubk_11”的組合進行加密獲得的值。
因此,具有利用上述結構從相應應用程序服務器接收服務器證書75的每個終端40a~40n,可以通過利用CA公有密鑰來對其簽名758進行解密來驗證該服務器證書75是否是由CA發(fā)布的授權證書。
圖9是示出了圖7中示出的撤銷信息90的例示結構的圖表。
如圖9所示,該撤銷信息90包括如下字段發(fā)布方91、撤銷編號92和簽名93。
作為發(fā)布此撤銷信息90的證書授權中心的名稱的所述發(fā)布方91與將在撤銷信息90中描述的服務器證書75中包括的發(fā)布方754相同?!癙anasign”存儲于此字段中。在由發(fā)布CA發(fā)布的服務器證書75的那些當中,此時,所述撤銷編號92是最小的有效序號。例如,此字段中只存儲“0x0011”。并且簽名93是關于此服務器證書中除簽名之外的部分的特征的簽名,即為發(fā)布方91和撤銷編號92創(chuàng)建的簽名。例如存儲通過利用CA私有密鑰對發(fā)布方91和撤消編號92的組合進行加密而獲得的值。
因此,利用上述結構從存儲庫20已經(jīng)接收了撤銷信息90的每個終端40a~40n,可以通過利用CA公有密鑰對其簽名93進行解密來驗證該撤銷信息90是否是由CA發(fā)布的授權信息,并且可以通過把該服務器證書75的序號的數(shù)值大小與撤銷編號92的數(shù)值大小進行比較來判斷從應用程序服務器接收的服務器證書75是否被撤銷。
接下來,對服務器證書生成設備10、存儲庫20、應用程序服務器30a~30k和終端40a~40n的每一結構給出詳細說明。
如圖7所示,所述服務器證書生成設備10包括密鑰對生成單元101、CA證書生成單元102、CA私有密鑰存儲單元103、時鐘104、序號存儲單元105、CSR接收單元106、服務器證書形成單元107、簽名單元108、服務器證書發(fā)送單元109、服務器證書歷史存儲單元110、服務器證書有效期搜索單元111、服務器證書撤銷通知單元112、撤銷證書搜索單元113、證書撤銷通知單元114、撤銷編號存儲單元115、撤銷信息簽名單元116和撤銷信息通知單元117等。
所述密鑰對生成單元101生成用于標記服務器證書75的CA私有密鑰以及用于驗證簽名的CA公有密鑰。然后,所述密鑰對生成單元101向CA證書生成單元102輸出該生成的CA公有密鑰和CA私有密鑰,并且向CA私有密鑰存儲單元103進一步輸出所述CA私有密鑰。
所述CA證書生成單元102根據(jù)由密鑰對生成單元101生成的CA公有密鑰等等以及使用由密鑰對生成單元101生成的CA私有密鑰創(chuàng)建的簽名來生成CA證書60,并且把所生成的CA證書60發(fā)送到每個終端40a~40n。
所述CA私有密鑰存儲單元103存儲由密鑰對生成單元101生成的CA私有密鑰。
所述時鐘104準確地表示當前時間。
所述序號存儲單元105存儲待分配給將要被發(fā)布的下一服務器證書75的序號。更具體地說,當所述服務器證書生成設備10已發(fā)布了序號為“4”的服務器證書75時,所述序號存儲單元105應該存儲序號“5”。應注意的是,由序號存儲單元105存儲的默認序號是“0”。
在接收到來自于每個應用程序服務器30a~30k的CSR 70后,所述CSR接收單元106向服務器證書形成單元107輸出該接收到的CSR70。應注意的是,每一CSR 70包括服務器名稱和服務器公有密鑰。
所述服務器證書形成單元107把服務器證書75所需的多條信息放置在一起。更具體地說,所述服務器證書形成單元107設置如下信息從序號存儲單元105讀出的序號作為序號752;從時鐘104獲得的當前時間作為有效期755的開始日期和時間;以及當前時間之后十三個月的日期與時間作為有效期755的結束日期,即期滿日期。然后,所述服務器證書形成單元107把CSR 70中包含的名稱和服務器公有密鑰分別設置為名稱756和服務器公有密鑰757,并且把預定版本、發(fā)布方和簽名算法分別設置為版本751、發(fā)布方754和簽名算法753,以便向簽名單元108輸出服務器證書75所必需的信息。
在把服務器證書75的必要信息放置在一起之后,所述服務器證書形成單元107輸出服務器證書75的這種必要信息中的名稱756、序號752以及有效期755的所述結束日期(期滿日期),并且把所述輸出信息存儲到服務器證書生成設備10的服務器證書歷史表110a中。此外,所述服務器證書形成單元107使序號存儲單元105存儲通過使待發(fā)布的服務器證書75的序號加“1”而獲得的值(例如當新發(fā)布的服務器證書75的序號是“17(0x0011)”時,存儲“16(0x0010)”)作為將分配給下一證書的序號。
所述簽名單元108從CA私有密鑰存儲單元103讀取CA私有密鑰,并且通過把該讀出的CA私有密鑰與已經(jīng)從服務器證書形成單元107輸出的版本751、序號752、簽名算法753、發(fā)布方754、有效期755、名稱756以及服務器公有密鑰757相關聯(lián)來生成簽名758。然后,在完成服務器證書75之后,所述簽名單元108向服務器證書發(fā)送單元109輸出該服務器證書75。
所述服務器證書發(fā)送單元109把從簽名單元108輸出的服務器證書75發(fā)送到已經(jīng)做出CSR 70的應用程序服務器。在進行這樣的操作時,所述服務器證書發(fā)送單元109通知所述撤銷證書搜索單元113新的服務器證書75將被發(fā)送。
每當所述服務器證書形成單元107形成新的服務器證書75時,所述服務器證書歷史存儲單元110把所述名稱、服務器序號以及服務器的有效期順序地存儲到服務器證書歷史表110a中。
圖10是示出了存儲在服務器證書歷史存儲單元110中的服務器證書歷史表110a的示例性結構的圖表。
如圖10所示,所述服務器證書歷史表110a由多個記錄和字段組成,這些記錄和字段用于存儲涉及通信系統(tǒng)1中當前有效的各個服務器證書75的如下信息的每個服務器名稱1101;服務器證書序號1102以及有效期1103。
利用上述結構使用服務器證書歷史表110a能夠(1)根據(jù)各個服務器名稱1101指定具有服務器證書75的應用程序服務器30a~30k,(2)根據(jù)序號1102,指定當前有效的服務器證書75的序號中的最小序號(在圖表中“Se min”以“0x0011”示出)以及最大序號(在圖表中“Semax”以“0x0110”示出),并且(3)管理由服務器證書期滿日期到達所引起的服務器證書的撤銷等等。
所述服務器證書有效期搜索單元111定期地查閱存儲在服務器證書歷史存儲單元110中的服務器證書歷史表110a中描述的有效期,以便搜索在一個月內其有效性期滿的服務器證書75。更具體地說,所述服務器證書有效期搜索單元111從時鐘104讀出當前時間,以便搜索其有效性在從這種當前時間開始一個月內期滿的服務器證書75。如果存在其有效性在從當前時間開始一個月內期滿的任何服務器證書75,那么所述服務器證書有效期搜索單元111通知撤銷證書搜索單元113具有最大序號的服務器證書75的序號,并以此作為將實際被撤銷的序號(例如在圖10中,當“Hariwood movie”和“Big wavegame”的期滿日期接近一個月時,被分配有較大值的“Big wave game”的序號“0x0012”應該被通知給撤銷證書搜索單元113)。
所述服務器證書撤銷通知單元112接收將撤銷的服務器證書75的序號,并且將該序號通知給所述撤銷證書搜索單元113。換言之,當如下情況(1)~(3)的至少一個應用時,所述CA始終檢驗應用程序服務器的服務器證書75的安全性,并且從所述服務器證書撤銷通知單元112接收將被撤銷的服務器證書75的序號(例如在圖10中,當“Robot trainer”的服務器證書75將要被撤消時,其序號“0x0049”將被接受)作為將實際撤銷的序號,其中所述情況例如是(1)應用程序服務器的服務器私有密鑰被暴露;(2)應用程序服務器停止操作;以及(3)應用程序服務器的名稱被改變。
所述撤銷證書搜索單元113列出在服務器證書歷史表110a中的所有序號,這些序號等于或者小于由服務器證書有效期搜索單元111或者服務器證書撤銷通知單元112通知的將被撤消的序號,并且向證書撤銷通知單元114通知與該序號對應的服務器名稱。然后,在更新與所列出的序號對應的所有服務器證書75之后,所述撤銷證書搜索單元113把撤銷編號更新為一個值,所述值是通過把將被撤銷的服務器證書的那些序號中最大序列號的值加“1”來獲得的,并且撤銷證書搜索單元113把該更新后的撤銷編號存儲到撤銷編號存儲單元115中。此外,在更新與上述列出的序號對應的所有服務器證書75之后,所述撤銷證書搜索單元113從服務器證書歷史存儲單元110中刪除涉及與該列出序號對應的服務器證書75的信息。
所述證書撤銷通知單元114請求具有由撤銷證書搜索單元113通知的名稱的應用程序服務器30a~30k中的應用程序服務器,更新它們的服務器證書75。該應用程序服務器響應于更新所述服務器證書的這種請求來更新它們的服務器證書75。當執(zhí)行此操作時,所述服務器證書發(fā)送單元109通知撤銷證書搜索單元113所更新的服務器證書75將被發(fā)送。
所述撤銷編號存儲單元115將當前有效且是從服務器證書發(fā)送單元109發(fā)送的服務器證書75的所有序號中最小的序號作為撤銷編號存儲。應注意的是,默認撤銷編號是“0”。在撤銷編號存儲單元115中存儲的撤銷編號隨后被發(fā)送給撤銷信息簽名單元116。
所述撤銷信息簽名單元116通過把撤銷信息90所需的發(fā)布方91、撤銷編號92和簽名放置在一起來形成撤銷信息90,并且向撤銷信息通知單元117輸出該撤銷信息90。應注意的是,所述簽名93是通過利用存儲在CA私有密鑰存儲單元103中的CA私有密鑰來對發(fā)布方91和撤銷編號92的組合進行加密來生成的。
所述撤銷信息通知單元117向存儲庫20通知撤銷信息90。
所述存儲庫20包括撤銷信息存儲單元201和通信單元202。
在接收到來自于服務器證書生成設備10的撤銷信息90后,所述存儲庫20的撤銷信息存儲單元201存儲該接收到的撤銷信息90。
所述通信單元202是用于按照未加密通信的上述協(xié)議等等來經(jīng)由因特網(wǎng)50與終端40a~40n通信的接口。當存在來自于終端40a~40n之一的來分發(fā)所述撤銷信息90的請求時,所述通信單元202把在撤銷信息存儲單元201中存儲的撤銷信息90發(fā)送到已經(jīng)做出所述請求的每個終端。此通信不需要被加密。此外,不需要對所述存儲庫20執(zhí)行服務器驗證。
每個應用程序服務器30a~30b均包括密鑰對生成單元301、CSR生成單元302、服務器私有密鑰存儲單元303、服務器證書存儲單元304、應用程序服務器單元305和通信單元306。
在安裝每個應用程序服務器30a~30k時,所述密鑰對生成單元301生成服務器公有密鑰和服務器私有密鑰,這兩個密鑰是用于使用RSA加密技術進行加密與解密的一對密鑰。
所述CSR生成單元302生成用于請求CA來生成服務器證書75的模板(template),即包括服務器公有密鑰和服務器名稱的CSR 70,并且把該生成的CSR 70發(fā)送至服務器證書生成設備10。
所述服務器私有密鑰存儲單元303存儲由密鑰對生成單元301生成的服務器私有密鑰。
所述服務器證書存儲單元304存儲從服務器證書生成設備10接收的服務器證書75。
在接收到來自于服務器證書生成設備10的更新服務器證書75的請求后,所述密鑰對生成單元301生成新的服務器公有密鑰和新的服務器私有密鑰,并且在安裝所述服務器時,CSR生成單元302使用這種新的服務器公有密鑰來生成CSR 70,以請求服務器證書生成設備10生成新的服務器證書75。然后,所述服務器證書存儲單元304接收并且存儲來自于服務器證書生成設備10的新的服務器證書75。
所述應用程序服務器305處理經(jīng)由通信單元306接收的CSR 70,以便生成響應,并向通信單元306輸出該生成的響應。
所述通信單元306是用于按照上述加密通信協(xié)議等等來經(jīng)由因特網(wǎng)50與終端40a~40n通信的接口。所述通信單元306(1)分析從每個終端40a~40n發(fā)送的請求/命令,(2)根據(jù)該分析的結果,從服務器證書存儲單元304讀取服務器證書75以用于執(zhí)行服務器驗證,以便把所讀出的服務器證書75發(fā)送至相應的終端,(3)利用存儲在服務器私有密鑰存儲單元303中的服務器私有密鑰對從終端接收的加密類型進行解密,以便生成用于加密通信的公用密鑰,(4)當在加密通信中接收到來自于任何終端40a~40n的請求時,對該請求進行解密并向應用程序服務器305輸出解密后的請求,并且(5)加密由應用程序服務器305請求的響應,并向相應的終端輸出加密后的響應。
每個終端40a~40n包括應用程序客戶端單元410、通信單元420以及服務器證書驗證單元430。
所述應用程序客戶端單元410向每個應用程序服務器30a~30k輸出請求并且從每個應用程序服務器30a~30k接收響應。
所述通信單元420是用于按照上述加密或者未加密通信協(xié)議等等來經(jīng)由因特網(wǎng)50與應用程序服務器30a~30k以及存儲庫20進行通信的接口。所述通信單元420(1)分析從每個應用程序服務器30a~30k發(fā)送的命令,(2)按照這種分析結果請求服務器證書驗證單元430來進行處理,(3)把從客戶端單元410以及服務器證書驗證單元430傳遞的數(shù)據(jù)發(fā)送到相應應用程序服務器,(4)把從服務器證書驗證單元430傳遞的數(shù)據(jù)發(fā)送到存儲庫20,并且(5)接收來自于存儲庫20的撤銷信息90。
更具體地說,所述通信單元420請求通信單元306開始加密通信。然后,所述通信單元420接收來自于通信單元306的服務器證書75,并向服務器證書驗證單元430輸出所接收到的服務器證書75。當被通知來自于服務器證書驗證單元430的這種服務器證書75的異常或者被撤銷時,所述通信單元420向所述通信單元306通知服務器證書75的這種異常,以便斷開所述會話,并且向應用程序客戶端單元410通知一錯誤。同時,當服務器證書75上的簽名正常,并且不撤銷該服務器證書75時,所述通信單元420生成預掌握密鑰,利用服務器證書75中包含的服務器公有密鑰來對該預掌握密鑰進行加密,并且把加密后的預掌握密鑰發(fā)送至通信單元306。此外,所述通信單元420使用如此獲得的數(shù)據(jù)來生成用于加密通信的加密密鑰,以便使用這種加密密鑰以加密形式執(zhí)行后續(xù)通信。此外,所述通信單元420請求存儲庫20的通信單元202分發(fā)撤銷信息90,并向簽名驗證單元434輸出從存儲庫20接收的撤銷信息90。
所述服務器證書驗證單元430包括撤銷信息請求單元431、簽名驗證單元432、CA證書存儲單元433、簽名驗證單元434、撤銷編號驗證單元435、撤銷編號存儲單元436、證書序號提取單元437以及撤銷判斷單元438等等。
所述撤銷信息請求單元431請求通信單元420定期地獲得來自于存儲庫20的撤銷信息90。
在從通信單元420接收到服務器證書75后,所述簽名驗證單元432從CA證書存儲單元433讀取CA公有密鑰,使用該CA公有密鑰來驗證服務器證書75上的簽名,并且向所述通信單元420通知所述簽名是否異常。
所述CA證書存儲單元433預存從服務器證書生成設備10中獲得的CA證書60。
在從通信單元420接收到撤銷信息90后,所述簽名驗證單元434從CA證書存儲單元433讀取CA公有密鑰,使用該CA公有密鑰來驗證撤銷信息90上的簽名,并且如果所述簽名有效,那么向撤銷編號驗證單元435輸出撤銷編號。
所述撤銷編號驗證單元435從撤銷編號存儲單元436讀出當前撤銷編號,并且只有當該輸入的撤銷編號大于當前撤銷編號時,才把從簽名驗證單元434輸入的撤銷編號作為新的撤銷編號存儲到撤銷編號存儲單元436中。
所述撤銷編號存儲單元436預存“0”作為默認撤銷編號,并且每次從撤銷編號驗證單元435輸出撤銷編號時,存儲最新更新的撤銷編號。
所述證書序號提取單元437從輸入的服務器證書75中提取序號,并且將其輸出至撤銷判斷單元438。
所述撤銷判斷單元438從撤銷編號存儲單元436讀取撤銷編號,并且把它與提取出的序號相比較。當所提取出的序號小于撤銷編號時,所述撤銷判斷單元438向通信單元420通知所述服務器證書75撤銷。
接下來,給出對服務器證書生成設備10、應用程序服務器30a~30k和終端40a~40n的每一操作的詳細說明。
圖11是示出了當為服務器證書設置序號時由服務器證書形成單元107執(zhí)行的操作的流程圖。
首先,所述服務器證書形成單元107設置“0”作為將為服務器證書75設置的序號Se的默認值(S11),并且等待經(jīng)由CSR接收單元106待接收的CSR 70(S12)。在接收到CSR 70(在S12中為是)后,所述服務器證書形成單元107從序號存儲單元105讀出序號Se(S13),使用從時鐘104讀出的當前時間和CSR 70等等來形成服務器證書75(S14),在向簽名單元108輸出所形成的服務器證書75之后,將待存儲在序號存儲單元105中的序號Se增加“1”(S15),并且將服務器證書75的重要元素(即名稱、序列號和有效期)存儲在服務器證書歷史表110a中(S16)。通過重復這些過程(S12~S16),基于每個證書來發(fā)布其序號單調遞增的服務器證書75。
接下來,給出對由服務器證書有效期搜索單元111執(zhí)行的證書有效期管理的描述。
圖12是示出了當進行證書有效期管理時由服務器證書有效期搜索單元111執(zhí)行的操作的流程圖。應注意的是,此過程是依照預定時間間隔定期執(zhí)行的。
所述服務器證書有效期搜索單元111首先在服務器證書歷史表110a中搜索序號,以便獲得在服務器證書歷史表110a中存儲的所有序號中的最小序號Se min以及最大序號Se max,并且把其期滿數(shù)據(jù)比其他序號的期滿數(shù)據(jù)到來得更早的序號、即最小序號Se min設置為序號Se(S21)。然后,所述服務器證書有效期搜索單元111判斷這種序號的有效性是否在一個月內期滿(S22)。當斷定這種序號的期滿日期接近一個月時(在S22中是“是”),所述服務器證書有效期搜索單元111把該序號設置為將實際撤銷的所有序號中的最大值Se end,并且把序號Se加“1”,以便搜索下一記錄的有效期(S23)。在增加所述序號Se之后,所述服務器證書有效期搜索單元111判斷直到最后記錄的序號Se max的服務器證書歷史表110a中所有記錄的有效期的來臨是否都已經(jīng)被檢驗了(S24)。當斷定直到最后的記錄還沒有都進行完檢驗時(在S24中為“否”),那么服務器證書有效期搜索單元111重復地執(zhí)行步驟S22~S24,以便獲得將實際撤銷的所有序號中的最大序號Se end。
當斷定在一個月內沒有序號期滿時(在S22中為“否”),或者當直到最后的記錄都已經(jīng)完成了檢驗時(在S24中為“是”),所述服務器證書有效期搜索單元111向撤銷證書搜索單元113通知將實際撤銷的所有序號中的最大值Se end(S25)。
通過重復上述過程,其期滿日期接近的服務器證書75的序號被隨時地通知給撤銷證書搜索單元113。
接下來,給出當由于撤銷證書有效期來臨而搜索撤銷證書時由撤銷證書搜索單元113執(zhí)行的處理的描述。
圖13是示出了當由于其有效期來臨而搜索撤銷證書時由撤銷證書搜索單元113執(zhí)行的操作的流程圖。
所述撤銷證書搜索單元113等待所述服務器證書有效期搜索單元111來通知將實際撤銷的所有序號的最大值Se end(S31)。當被通知待實際撤銷的序號的最大值Se end時(在S31中為“是”),所述撤銷證書搜索單元113向證書撤銷通知單元114通知與從最小序號Se min直到最大序號值Se end的序號對應的服務器名稱(S32)。因此,所述證書撤銷通知單元114把撤銷通知80發(fā)送至每個相應的應用程序服務器30a~30k。然后,已經(jīng)接收到撤銷通知80的每個應用程序服務器30a~30k發(fā)送CSR 70,由此,將要為該應用程序服務器30a~30k的每個發(fā)布被分配有單調遞增的序號的新服務器證書75。
隨后,所述撤銷證書搜索單元113等待待最新發(fā)布的所有服務器證書,每個服務器證書均被分配有增加的序號(S33)。
當所有服務器證書75已經(jīng)被發(fā)布(在S33中為“是”)時,所述撤銷證書搜索單元113刪除與序號Se min~Se end對應的全部記錄(S34),并且將通過向待實際撤銷的序號的最大值Se end加“1”而獲得的值作為撤銷序號存儲在撤銷編號存儲單元115中(S35)。
通過重復上述過程,其有效性接近期滿的服務器證書75逐個經(jīng)歷撤銷。因此,其服務器證書75將被撤銷的應用程序服務器30a~30k需要把它們的當前服務器證書更新為被分配有遞增序號的證書。
接下來,給出當響應于來自服務器證書撤銷通知單元112的撤銷通知而搜索撤銷證書時由撤銷證書搜索單元113執(zhí)行的處理的描述。
圖14是示出了響應于撤銷通知,在搜索撤銷證書時由撤銷證書搜索單元113執(zhí)行的操作的流程圖。應注意的是,這種過程是依照預定時間間隔定期執(zhí)行的。
所述撤銷證書搜索單元113等待將從服務器證書撤銷通知單元112發(fā)送的撤銷通知(S41)。在接收到撤銷通知后,所述撤銷證書搜索單元113指定所通知的序號Se(S42),并且向證書撤銷通知單元114通知與從最小序號Se min到該指定序號Se的序號對應的服務器名稱(S43)。因此,所述證書撤銷信息單元114把撤銷信息80發(fā)送至每個相應的應用程序服務器30a~30k。然后,已經(jīng)接收到撤銷信息80的每個應用程序服務器30a~30k發(fā)送CSR 70,以便獲得被分配有單調增加的序號的最新發(fā)布的服務器證書75。
然后,所述撤銷證書搜索單元113等待將被最新發(fā)布的所有服務器證書(S44)。
當所有服務器證書75已經(jīng)被發(fā)布(在S44中為“是”)時,所述撤銷證書搜索單元113刪除與從序號Se min直到指定序號Se的序號對應的全部記錄(S45),并且將通過向待實際撤銷的指定序號Se加“1”而獲得的值作為撤銷序號存儲在撤銷編號存儲單元115中(S46)。
通過重復上述過程,不僅被認為是撤銷目標的服務器證書75、而且被分配有比該服務器證書的序號更小的序號的所有服務器證書75都經(jīng)歷撤銷。因此,其服務器證書75將被撤銷的應用程序服務器30a~30k需要把它們的當前服務器證書更新為被分配有增加的序號的證書。
接下來,對在形成撤銷信息時由撤銷信息簽名單元116執(zhí)行的過程給出描述。
圖15是示出了在形成撤銷信息時由撤銷信息簽名單元116執(zhí)行的操作的流程圖。
所述撤銷信息簽名單元116從撤銷編號存儲單元115讀出撤銷序列號Se的默認值“0”,并且對其進行設置(S51)。然后,所述撤銷信息簽名單元116通過把該撤銷序號Se、預存發(fā)布方以及使用從CA私有密鑰存儲單元103讀出的CA私有密鑰創(chuàng)建的簽名放置在一起來形成撤銷信息90,并且把形成的撤銷信息90輸出至撤銷信息通知單元117。
然后,所述撤銷信息簽名單元116監(jiān)控撤銷編號存儲單元115,以便等待撤銷序號改變(S52)。此處,其序號等于或者小于通過從撤銷序號減掉“1”而獲得的值的所有服務器證書75被認為是要經(jīng)歷撤銷的。由此,實際上應該在步驟S52執(zhí)行的僅僅是判斷撤銷序號的值是否已經(jīng)增加。當所述撤銷序號增加時,所述撤銷信息簽名單元116從撤銷編號存儲單元115讀出增加的撤銷序號Se(S53),通過把該撤銷序號Se、預存發(fā)布方以及使用從CA私有密鑰存儲單元103讀出的CA私有密鑰創(chuàng)建的簽名放置在一起來形成撤銷信息90(S54),并且把形成的撤銷信息90輸出到撤銷信息通知單元117。
通過重復上述過程,其撤銷序號在必要時增加的撤銷信息90被順序地存儲到存儲庫20的撤銷信息存儲單元201中。
接下來,對于在獲得撤銷信息時由每個終端40a~40n的服務器證書驗證單元430執(zhí)行的過程給出描述。
圖16是示出了在獲得撤銷信息時由服務器證書驗證單元430中的每個單元執(zhí)行的操作的流程圖。應注意的是,這種過程是依照預定時間間隔定期執(zhí)行的(一月一次)。
首先,每個終端40a~40n的撤銷信息請求單元431定期地(一月一次)從存儲庫20獲得撤銷信息90,并且存儲所述撤銷編號。更具體地說,所述撤銷信息請求單元431根據(jù)內部定時器等待一個月經(jīng)過(S61)。當已經(jīng)過去一個月時(在S61中為“是”),所述撤銷信息請求單元431請求存儲庫20分發(fā)撤銷信息90(S62),并且等待撤銷信息90將被分發(fā)(S63)。
當執(zhí)行此操作時,如果所獲得的撤銷信息90的撤銷編號是錯誤的,那么被授權的應用程序服務器有可能被驗證為未被授權的應用程序服務器,反之亦然。因此,應該進行如下檢驗。
在接收到撤銷信息90后(在S63中為“是”),所述簽名驗證單元434首先驗證該撤銷信息90上的簽名是否有效(S64)。由于只有服務器證書生成設備10被允許來標記撤銷信息90,所以所述簽名驗證單元434認為如果其簽名是有效的,那么所述撤銷信息90是授權數(shù)據(jù)。
接下來,檢驗所述撤銷編號是否是大于當前所存儲的撤銷編號的編號。更具體地說,所述撤銷編號驗證單元435獲得所分發(fā)的撤銷序號(S65),以便判斷該所分發(fā)的撤銷序號的值是否大于由撤銷編號存儲單元436存儲的撤銷序號的值(S66)。在服務器證書75的每次撤銷時,撤銷編號是單調遞增,因此撤銷編號從不減少。
由此,當所接收到的撤銷信息90的撤銷編號大于當前撤銷編號時(在S66中為“是”),所述分發(fā)的撤銷序號應該被存儲(S67)。另一方面,當所接收到的撤銷信息90的撤銷編號小于當前撤銷編號時(在S66中為“否”),所接收到的撤銷信息應該給破壞,被認為這種撤銷編號是錯誤的或者存在某些差錯(S68)。
通過重復上述過程,服務器證書驗證單元430能夠只存儲單調遞增的被授權的撤銷編號。
接下來,給出對于在終端40a~40n和應用程序服務器30a~30k之間以加密形式執(zhí)行通信的情況的描述。
圖17是示出了執(zhí)行加密通信的情況的順序圖。應注意的是,此處給出的描述是針對在終端40a和應用程序服務器30a之間執(zhí)行通信的情況。
在終端40a中,所述應用程序客戶端單元410指示通信單元420把請求3以加密形式發(fā)送至應用程序服務器30a(S100)。然后,所述通信單元420向應用程序服務器30a的通信單元306發(fā)送ClientHello分組,所述ClientHello分組包括客戶端隨機數(shù)和所述通信單元420可以支持的加密類型,以便開始SSL握手(S101)。
在應用程序服務器30a中,所述通信單元306根據(jù)ClientHello分組來確定加密類型,并且把由此確定的加密類型連同服務器隨機數(shù)和ServerHello分組中的會話ID一起發(fā)送(S102)。然后,所述通信單元306從服務器證書存儲單元304讀取服務器證書75(S103),把該服務器證書75作為Certificate分組發(fā)送至應用程序服務器30a的通信單元420(S104),并且還把ServerHelloDone分組發(fā)送到通信單元420(S107)。
所述終端40a的通信單元420從Certificate分組中讀取服務器證書75,并且將其發(fā)送到服務器證書驗證單元430(S105)。所述服務器證書驗證單元430驗證該服務器證書75是否無效,并且向所述通信單元306通知驗證結果(S106)。如果所述服務器證書75是無效的,那么所述通信單元420向通信單元306發(fā)送警告分組,以便斷開會話,并且向應用程序客戶端單元410返回一錯誤。同時,當所述服務器證書75是有效的時,所述通信單元420生成用于計算用于加密的公用密鑰的預掌握密鑰,利用在服務器證書75中包含的服務器公有密鑰來加密這種預掌握密鑰,在ServerHelloDone分組到達之后向通信單元306發(fā)送ClientKeyExchange分組,所述ClientKeyExchange分組包括加密后的預掌握密鑰(S108),并且還向通信單元306發(fā)送ChangeCipherSpec分組(S109)。ChangeCipherSpec分組是指示加密啟動的分組。所述通信單元420根據(jù)客戶端隨機數(shù)、服務器隨機數(shù)以及預掌握密鑰來生成用于加密的公用密鑰A,并且利用生成的公用密鑰A來對表示握手完成的Finished分組進行加密,以便向應用程序服務器30a的通信單元306發(fā)送該加密后的分組(S110)。
應用程序服務器30a的通信單元306從ClientKeyExchange分組中讀取加密后的預掌握密鑰以便利用服務器私有密鑰將其解密為預掌握密鑰,并且根據(jù)該預掌握密鑰、所述服務器隨機數(shù)以及客戶端隨機數(shù)來生成用于加密的公用密鑰B。當SSL握手已經(jīng)被正常地進行時,那么通信單元306具有的公用密鑰A以及通信單元420具有的公用密鑰B變?yōu)橄嗤?。所述通信單?06利用公用密鑰B來對所接收到的FinisheB分組進行解密,并且當該解密繼續(xù)時,對該FinisheB分組進行加密以便將其發(fā)送到通信單元420(S111)。所述Finished分組之后的后續(xù)通信應該以加密的形式來執(zhí)行。
終端40a的通信單元420對所接收的Finished分組進行解密,并且當該解密繼續(xù)時,把請求3以加密形式發(fā)送至應用程序服務器30a的通信單元306(S112)。
應用程序服務器30a的通信單元306解密所述請求3,并且把解密后的請求3發(fā)送至應用程序服務器單元305(S113)。所述應用程序服務器單元305處理該請求3以便生成響應3,并且指示通信單元306將其發(fā)送到終端40a(S114)。然后,所述通信單元306把響應3以加密形式發(fā)送至終端40a的通信單元420中(S115)。
終端40a的通信單元420對所加密的響應3進行解密,并向應用程序客戶端單元410輸出解密后的響應3(S116)。
所述通信是依照上述方式以加密的形式被執(zhí)行的。
圖18是示出了當驗證服務器證書75時由服務器證書驗證單元430執(zhí)行的操作的流程圖。
在獲得所述服務器證書75之后,所述服務器證書驗證單元430的簽名驗證單元432從由此獲得的服務器證書75中讀取發(fā)布方,并且在CA證書存儲單元433中搜索該發(fā)布方的CA證書60。然后,所述簽名驗證單元432從搜索出的CA證書60中讀取CA公有密鑰,并且使用這種CA公有密鑰來檢驗服務器證書75上的簽名。更具體地說,所述簽名驗證單元432等待將被分發(fā)的服務器證書75(S81),并且當它被分發(fā)時(在S81中為“是”),從該服務器證書75中獲得發(fā)布方(S82),并且在CA證書存儲單元433中搜索同一發(fā)布方的CA證書60(S83)。然后,所述簽名驗證單元432從搜索出的CA證書60中讀取CA公有密鑰(S84),并且通過利用CA公有密鑰將其解密來判斷服務器證書75上的簽名是否有效(S85)。
當服務器證書75的簽名被判斷為無效時(在S85中為“簽名NG”),那么簽名驗證單元432向通信單元420通知指示簽名驗證錯誤的錯誤代碼(S90),并且結束驗證。另一方面,當判斷所述簽名是有效時(在S85中是“簽名OK”),所述證書序號提取單元437從該服務器證書75中讀取序號(服務器序號)(S86)。然后,所述撤銷判斷單元438從撤銷編號存儲單元436讀取撤銷編號,并且把它與通過證書序號提取單元437讀出的序號相比較,即就它們的大小而言,判斷服務器序號和撤銷序號之間的關系(S88)。
當所述序號小于撤銷編號時(在S88中為“否”),所述撤銷判斷單元438斷定所述服務器證書75已被撤銷,并且向通信單元420通知指示撤銷的錯誤代碼(S90),以便結束所述驗證。同時,當所述序號大于或者等于撤銷編號時(在S88中為“是”),所述撤銷判斷單元438斷定該服務器證書75是有效的,并且向通信單元420通知所述驗證已經(jīng)正常地結束。
通過上述過程,只有當應用程序服務器30a發(fā)送包括有效簽名以及等于或者大于撤銷編號的序號的服務器證書75時,所述服務器證書75才被驗證。
接下來,對于通過服務器證書生成設備10生成的服務器證書75以及撤銷編號之間的關系給出描述。
圖19是當存在四個服務器時服務器證書75的序號和撤銷序號之間的關系的圖表。
出于描述的目的,此處假定該服務器是A、B、C以及D,每個服務器分別在時間“a”、“b”、“c”以及“d”安裝,并且各個服務器具有的服務器證書75的序號是“0”、“1”、“2”以及“3”。
當在時間“e”就服務器C的服務器證書75的安全性給予考慮時,在該時間點把如下信息存儲在服務器證書歷史記錄存儲單元110中,所述信息為
因此,所述服務器證書生成設備10的撤銷證書搜索單元113搜索具有小于“2”的序號的服務器證書75,這是服務器C具有的服務器證書75的序號。結果,服務器A以及服務器B的服務器證書75被搜索出來。因此,服務器證書生成設備10的證書撤銷通知單元114請求服務器A、B以及C更新它們的服務器證書75(給出通知它們的服務器證書75將撤銷)。結果,每個服務器A、B以及C請求生成新的服務器證書75,并且分別被分配有序號“4”、“5”以及“6”的新的服務器證書75被最新生成,以便被分別發(fā)送給各個應用程序服務器A、B以及C。此處生成的每一服務器證書75的有效期應該是“e+13月”。因此,存儲在所述服務器證書歷史信息存儲單元110中的數(shù)據(jù)應該如下被更新
在每一服務器的服務器證書75被更新之后,所述服務器證書生成設備10的撤銷編號存儲單元115把撤銷編號改變?yōu)樾蛱枴?”,該序號在該時間點是有效的并且是最小的,并且使存儲庫20的撤銷信息存儲單元201存儲包括該序號的撤銷信息90。換言之,這種新的撤銷編號“3”是通過由于撤銷的原因而將服務器C具有的原始服務器證書75的序號“2”加“1”來獲得的。
每個終端40a~40n定期地獲得并且存儲來自于存儲庫20的撤銷編號。當執(zhí)行此操作時,如果錯誤的撤銷編號被存儲,那么被授權的服務器有可能被驗證為未被授權的服務器,反之亦然。因此,應該進行如下檢驗。首先,檢驗撤銷信息上的簽名。由于只有CA被允許來標記撤銷信息,所以如果其簽名是有效的,那么所述撤銷信息被認為是授權數(shù)據(jù)。接下來,它檢驗所述撤銷編號是否大于當前存儲的撤銷編號。撤銷編號由于服務器證書的撤銷而增加,但是從不減少。因此,當所述撤銷編號小于當前撤銷編號時,這種撤銷編號會被破壞,同時認為這種撤銷編號是錯誤的或者存在某些差錯。
同時,當發(fā)生使用服務器C的服務器證書75的服務器欺騙時,被欺騙的服務器的服務器證書75的序號是“2”。然而,由于在該時間點的撤銷編號是“3”,所以根據(jù)其序號小于撤消編號的任何服務器證書75應該被撤銷的規(guī)則,這種被欺騙的服務器不可能得到信任。
此外,所述服務器證書有效期搜索單元111始終檢驗服務器證書歷史存儲單元110,以便搜索其有效性在從當前時間開始一個月內期滿的服務器證書75。例如,當d+12個月已經(jīng)過去,服務器D具有的服務器證書75的有效期將在一個月中期滿。由此,所述服務器證書有效期搜索單元111向撤銷證書搜索單元113通知服務器D具有的服務器證書75的序號“3”,并且證書撤銷通知單元114請求服務器D更新其服務器證書75。此外,當存在具有被分配有比服務器D具有的服務器證書75更小的序號的服務器證書75的服務器時,所述證書撤銷通知單元114還請求該服務器更新其服務器證書75。在這些服務器證書75被更新之后,所述撤銷編號被更新為“4”,該值是通過把服務器D具有的服務器證書75的序號加“1”來獲得的。
如上所述,當更新其有效期接近的服務器證書75時,其序號小于其有效期接近的服務器證書75的序號的所有服務器證書75應該被更新,并且應該把通過將其期滿日期接近的服務器證書75的序號加“1”而獲得的值設置為新的撤銷編號。因此,即使當存在使用期滿的服務器證書75的欺騙服務器時,對于不具有時鐘的設備而言,它可以可能的,并且因此不能獲得精確的時間來根據(jù)所述撤銷編號確認該服務器證書75被撤銷。
應注意的是,在本實施例中,更新的序號按照“4”、“5”、“6”的順序被分配給服務器A、B和C,但是本發(fā)明不局限于此順序。
此外,在第一實施例中,默認序號是“0”,每當發(fā)布新的的服務器證書75時該序號被加“1”,但是可以自由地設置默認序號,并且每次發(fā)布服務器證書時可以增加不同的值,只要這種值單調遞增就行。
此外,在第一實施例中,把“0”用作默認撤銷編號,但是默認撤銷編號還可以是等于或者小于默認序號的其它值。換言之,例如當服務器證書75的默認序號被設定為“1”時,所述默認撤銷編號可以是“0”或者“1”。
此外,在本實施例中,由于將發(fā)布的服務器證書75被分配有單調遞增的序號,服務器證書75的默認序號被設置為等于或者大于默認撤銷編號的值,所以能夠享有這樣的功能,所述功能相當于在查閱撤銷序號時將被實現(xiàn)的那個功能,這就是為什么在本實施例中撤銷編號不被用作參考的原因。然而,所述撤銷編號實際上可以被查閱,以便發(fā)布其序號等于或者大于該撤銷編號的服務器證書75。
如上所述,根據(jù)第一實施例,給予具有即將期滿的服務器證書的應用程序服務器一撤銷通知,并且為這種應用程序服務器發(fā)布新的服務器證書,以便通過將其撤銷來使其原始的服務器證書不能使用。因此,對于每個終端40a~40n而言,無需檢驗服務器證書的有效期或者裝備有精確的時鐘。而且,由于只有一個撤銷序號被并入撤銷信息90,并且每個終端40a~40n存儲該撤銷信息90,以便根據(jù)該服務器證書75的序號和撤消編號之間就其大小而言的關系來檢驗服務器證書75的有效性,所以所述終端40a~40n不需要具有常規(guī)情況下的資源。因此,只需要少量資源,這意味著本發(fā)明適用于聯(lián)網(wǎng)設備等等。
(第二實施例)以下描述了按照本發(fā)明第二實施例的通信系統(tǒng)。
圖20是示出了依照本發(fā)明第二實施例的通信系統(tǒng)2的整體配置的框圖。應注意的是,與圖7中示出的通信系統(tǒng)1的單元相同的單元被分配有相同的數(shù)字,并且省略了對這部分內容進行的描述。
通信系統(tǒng)2包括均由證書授權中心使用的服務器證書生成設備11和存儲庫21、由諸如視頻內容的應用程序供應商使用的多個應用程序服務器30a~30k、由用戶使用的多個終端41a~41n以及用于使存儲庫21、應用程序服務器30a~30k和終端41a~41n相互連接的因特網(wǎng)50,如同根據(jù)第一實施例的通信系統(tǒng)1的情形。
在根據(jù)第一實施例的通信系統(tǒng)1中,所述服務器證書生成設備10向存儲庫20發(fā)送撤銷信息90,然后把撤銷信息90發(fā)送至每個終端40a~40n。然而,由于服務器證書生成設備11向存儲庫21發(fā)送只由撤銷編號構成的撤銷信息90b,所以根據(jù)第二實施例的通信系統(tǒng)2極大地不同于通信系統(tǒng)1。
此外,在通信系統(tǒng)1中,所述存儲庫20把撤銷信息90以加密形式發(fā)送至每個終端40a~40n,并且這種終端40a~40n中的每一個均根據(jù)撤銷信息90上的簽名來檢驗所接收的撤銷信息90是否無效。然而,由于服務器證書生成設備11向存儲庫21發(fā)布服務器證書75,然后把這種服務器證書75依照它們的撤銷編號分發(fā)要求發(fā)送至終端41a~41n,就像在應用程序服務器30a~30k的情況下一樣,所以所述通信系統(tǒng)2極大地不同于第一實施例。然后,每個終端41a~41n在這種存儲庫21上執(zhí)行服務器驗證,并且在每個終端41a~41n共享SSL會話密鑰之后,所述存儲庫21將撤銷編號以加密形式分發(fā)。
如此,象在應用程序服務器30a~30k的情況下那樣,所述服務器證書生成設備11包括密鑰對生成單元101、CA證書生成單元102、CA私有密鑰存儲單元103、時鐘104、序號存儲單元105、CSR接收單元106、服務器證書形成單元107、簽名單元108、服務器證書發(fā)送單元109、服務器證書歷史存儲單元110、服務器證書有效期搜索單元111、服務器證書撤銷通知單元112、撤銷證書搜索單元113和證書撤銷通知單元114,以便服務器證書生成設備11接收從存儲庫21發(fā)送的CSR 70,向存儲庫21發(fā)布服務器證書75,并且當該服務器證書75要經(jīng)歷撤銷時,向存儲庫21發(fā)送撤銷通知80。此外,除上述部件以外,所述服務器證書生成設備11不包括服務器證書生成設備10具有的撤銷信息簽名單元116,但是進一步設置有撤銷編號存儲單元121和撤銷編號通知單元122,而不是撤銷編號存儲單元115和撤銷信息通知單元117。象在撤銷編號存儲單元115的情況下那樣,所述撤銷編號存儲單元121把由服務器證書發(fā)送單元109發(fā)布的服務器證書75的所有序號中具有最小有效序號的撤銷編號存儲為撤銷編號。應注意的是,默認撤銷編號是“0”。存儲在撤銷編號存儲單元121中的撤銷編號被發(fā)送給撤銷編號通知單元122。所述撤銷編號通知單元122向存儲庫21只通知不包括簽名的撤銷編號,并且被存儲在撤銷編號存儲單元121中作為撤銷信息90b。
所述存儲庫21包括密鑰對生成單元203、CSR生成單元204、服務器私有密鑰存儲單元205、服務器證書存儲單元207、撤銷信息存儲單元208和通信單元209。
所述存儲庫21使用SSL與終端41a~41n通信,就像應用程序服務器30a~30k的情況下一樣。為此,每次安裝服務器并且從服務器證書生成設備11接收到撤銷通知80時,所述密鑰對生成單元203生成新的服務器公有密鑰和新的服務器私有密鑰。服務器公有密鑰被發(fā)送給CSR生成單元204,并且服務器私有密鑰被存儲到服務器私有密鑰存儲單元205中。
所述CSR生成單元204根據(jù)服務器公有密鑰和預存的服務器名稱來生成CSR 70,并且把所生成的CSR 70發(fā)送到服務器證書生成設備11。隨后,所述服務器證書生成設備11根據(jù)所接收的CSR 70生成服務器證書75,并且把所生成的服務器證書75發(fā)送到存儲庫21。每次接收該新的服務器證書75時,所述服務器證書存儲單元207存儲新的服務器證書75。
每次從服務器證書生成設備11接收到只由撤銷編號構成的撤銷信息90b時,所述撤銷信息存儲單元208存儲新的撤銷編號。
所述通信單元209是用于按照上述加密協(xié)議等等來經(jīng)由因特網(wǎng)50與終端41a~41n通信的接口。更具體地說,當接收到來自于每個終端41a~41n的用于開始通信的請求時,所述通信單元209從服務器證書存儲單元207讀取服務器證書75以便執(zhí)行服務器驗證,并且把所讀出的服務器證書75發(fā)送到每個終端41a~41n。此外,所述通信單元209利用存儲在服務器私有密鑰存儲單元205中的服務器私有密鑰對從每個終端41a~41n接收的加密類型進行解密,以便生成用于加密通信的公用密鑰。隨后,當存在來自于加密通信中的任何終端41a~41n的用于撤銷編號的請求時,所述通信單元209從撤銷信息存儲單元208讀取撤銷信息90b,并且把該撤銷信息90b以加密形式輸出到已經(jīng)做出請求的終端。同時,當在未加密通信中接收到請求時,所述通信單元209斷開通信。
終端41a~41n的每個均包括應用程序客戶端單元410、替代通信單元420的通信單元440以及替代服務器證書驗證單元430的服務器證書驗證單元450。所述服務器證書驗證單元450包括簽名驗證單元432、CA證書存儲單元433、撤銷編號存儲單元436以及撤銷判斷單元438,如同服務器證書驗證單元430的情況,并還包括替代撤銷信息請求單元431的撤銷信息請求單元451、替代證書序號提取單元437的證書序號提取單元452以及替代撤銷編號驗證單元435的撤銷編號驗證單元453。
每個終端41a~41n的撤銷信息請求單元451定期地(例如一月一次)請求通信單元440從存儲庫21獲得撤銷編號。
所述簽名驗證單元432從CA證書存儲單元433讀取CA證書60,以便驗證服務器證書75上的簽名,并且如果這種簽名不正常的話,向通信單元440通知異常。
所述證書序號提取單元452從輸入的服務器證書75中提取序號,并且將所提取的序號輸出至撤銷判斷單元438和撤銷編號驗證單元453。
所述撤銷編號驗證單元453讀出在撤銷編號存儲單元436中存儲的撤銷編號,以便把它與從存儲庫21中獲得的序號(撤銷編號)相比較,以及把所讀出的撤銷編號與從證書序號提取單元452輸出的序號進行比較。然后,當從存儲庫21中獲得的序號小于在撤銷編號存儲單元436中存儲的撤銷編號時,所述撤銷編號驗證單元453向通信單元440通知由于某些原因而存在異常的事實。此外,當從應用程序服務器30a~30k或者存儲庫21提取的服務器證書75的序號小于撤銷編號時,所述撤銷編號驗證單元453向通信單元440通知該服務器證書75已被撤銷。
所述通信單元440是用于按照上述加密或者未加密通信協(xié)議來經(jīng)由因特網(wǎng)50與應用程序服務器30a~30k以及存儲庫21通信的接口。除與應用程序服務器30a~30k通信以外,就像在通信單元420的情況下,所述通信單元440(1)分析從存儲庫21發(fā)送的命令,(2)根據(jù)這種分析結果來請求服務器證書驗證單元430來進行處理,(3)把從應用程序客戶端單元410和服務器證書驗證單元450傳遞的數(shù)據(jù)發(fā)送到存儲庫21,并且(4)從存儲庫21接收服務器證書75和撤銷信息90b。換言之,所述通信單元440使用圖17中示出的通信協(xié)議在加密通信中接收撤銷信息90b。
更具體地說,依照來自撤銷信息請求單元451的用于請求撤銷信息90b的請求,所述通信單元440請求存儲庫21的通信單元209開始加密通信。結果,所述通信單元440從存儲庫21的通信單元209接收服務器證書75。
然后,所述通信單元440把所接收到的服務器證書75輸出至簽名驗證單元432和證書序號提取單元452。當由簽名驗證單元432通知該服務器證書75異常時,所述通信單元440向存儲庫21中的通信單元209通知服務器證書75的這種異常,以便斷開所述會話。
同時,當服務器證書75上的簽名正常,或者不使該服務器證書75撤銷時,所述通信單元440生成預掌握密鑰,利用服務器證書75中包含的服務器公有密鑰來對該預掌握密鑰進行加密,并且把加密后的預掌握密鑰發(fā)送至存儲庫21的通信單元209。此外,所述通信單元440使用該所獲得的數(shù)據(jù)來生成用于加密通信的加密密鑰,以便使用該加密密鑰以加密形式執(zhí)行后續(xù)通信。換言之,所述通信單元440以加密形式把用于請求撤銷編號的請求發(fā)送至存儲庫21。然后,當從存儲庫21接收到加密后的撤銷信息90b時(撤銷編號),所述通信單元440解密所接收到的經(jīng)過加密的撤銷編號,并且把解密后的撤銷編號輸出到撤銷編號驗證單元453。
所述撤銷編號驗證單元453從撤銷編號存儲單元436讀出當前撤銷編號,并且把它與由存儲庫21通知的撤銷編號相比較。當執(zhí)行此操作時,如果所通知的撤銷編號小于當前撤銷編號,那么可以判斷出所通知的撤銷編號是無效的,并且此處理終止。這是因為撤銷編號是單調遞增的,因此撤銷編號從未被替換為小于當前撤銷編號的撤銷編號。同時,當所通知的撤銷編號等于當前撤銷編號時,所述過程結束,由此斷定沒有撤銷編號改變。此外,當所通知的撤銷編號大于當前撤銷編號時,所述撤銷編號驗證單元453把該所通知的撤銷編號與從證書序號提取單元452輸入的存儲庫21的序號進行比較。當所通知的撤銷編號小于存儲庫21的序號時,所述撤銷編號驗證單元453斷定所通知的撤銷編號是無效的,并且結束處理。這是因為如果該所通知的撤銷編號是有效的,那么這意味著存儲庫21的序號是無效的,即所述服務器證書75被撤銷,因此具有這種無效服務器證書75的從存儲庫21中獲得的撤銷編號是不可信賴的。因此,當所通知的撤銷編號等于或者大于存儲庫21的序號時,所述撤銷編號驗證單元453把該所通知的撤銷編號存儲到撤銷編號存儲單元436中作為新的撤銷編號。
同時,對撤銷編號的攻擊包括通過把更小的值欺騙性地設置為撤銷編號來使過去被撤銷的服務器證書75有效;并且把較大的值設置為撤銷編號以導致溢出。這些攻擊相抗衡的是使撤銷編號按照上述方式經(jīng)歷有效性檢查。
利用上述結構,能夠只存儲有效的撤銷編號,而不需要檢驗所獲得的撤銷信息90b的簽名。
應注意的是,作為本發(fā)明的又一實施例,還可以構想出如下結構。
所述證書發(fā)布設備包括撤銷編號存儲單元,用于存儲撤銷編號;服務器證書信息存儲單元,用于存儲涉及過去發(fā)布的每個服務器證書的如下信息標識號、有效期以及所述服務器證書被發(fā)布到的對象;以及證書發(fā)布單元,用于發(fā)布新的服務器證書,其中所述證書發(fā)布部件發(fā)布被分配有等于或者大于由撤銷編號存儲單元存儲的撤銷編號的標識號的新的服務器證書。
此外,當撤銷服務器證書時,所述服務器證書發(fā)布設備(1)獲得所述服務器證書的標識號,(2)確定大于所述標識號的編號作為新的撤銷編號,(3)把所述新的撤銷編號存儲到撤銷編號存儲單元中,(4)在服務器證書信息存儲單元中搜索以便讀出其標識號等于或者小于服務器證書的標識號的服務器證書(以下簡稱為“待更新的服務器證書”),并且(5)向具有待更新的所述服務器證書的服務器發(fā)布新的服務器證書,其中所述服務器證書的標識號等于或者大于新的撤銷編號。
此外,所述服務器證書發(fā)布設備(1)在服務器證書信息存儲單元中搜索其有效期接近的服務器證書,以便獲得所述服務器證書的標識號,(2)確定大于所述標識號的編號作為新的撤銷編號,(3)把所述新的撤銷編號存儲到撤銷編號存儲單元中,(4)在所述服務器證書信息存儲單元中搜索以便讀出其標識號等于或者小于服務器證書標識號的服務器證書(以下簡稱為“待更新的服務器證書”),并且(5)向具有待更新的所述服務器證書的服務器發(fā)布其標識號等于或者大于新的撤銷編號的新服務器證書。
工業(yè)實用性根據(jù)本發(fā)明的通信設備、證書發(fā)布設備以及通信系統(tǒng)提供了使用少量資源來完成欺騙檢驗等等的作用,并且適合于用作諸如視頻解碼器的聯(lián)網(wǎng)設備以及能夠進行服務器驗證的計算機設備,諸如移動電話以及個人數(shù)字助理。
權利要求
1.一種用于根據(jù)指示服務器設備有效性的服務器證書來與所述服務器設備進行通信的通信設備,包括撤銷編號獲取單元,用于從存儲庫設備獲得撤銷編號,所述存儲庫設備存儲所述撤銷編號,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;撤銷編號存儲單元,用于存儲所獲得的撤銷編號;標識號讀取單元,用于從所述服務器證書中讀出用于識別所述服務器證書的標識號;證書判斷單元,用于通過把所讀出的標識號與所述撤銷編號存儲單元中存儲的所述撤銷編號進行比較來判斷所述服務器證書的有效性;以及通信控制單元,用于當所述服務器證書被判斷為有效時,建立與所述服務器設備的通信,并且當所述服務器證書被判斷為無效時,不建立與所述服務器設備的通信。
2.如權利要求1所述的通信設備,其中當所述標識號等于或者大于所述撤銷編號時,所述證書判斷單元斷定所述服務器證書是有效的。
3.如權利要求1所述的通信設備,還包括撤銷編號判斷單元,用于判斷所述撤銷編號的有效性,其中當所述撤銷編號判斷單元斷定所述撤銷編號有效時,所述證書判斷單元使用所述撤銷編號來判斷所述服務器證書的有效性。
4.如權利要求3所述的通信設備,其中所述撤銷編號判斷單元通過把指示所述存儲庫設備有效性的存儲庫證書的標識號與由所述撤銷編號存儲單元存儲的所述撤銷編號進行比較來判斷所述撤銷編號的有效性。
5.如權利要求4所述的通信設備,其中當所述存儲庫證書的標識號等于或者大于由所述撤銷編號存儲單元存儲的所述撤銷編號時,所述撤銷編號判斷單元斷定所述存儲庫設備是有效的。
6.如權利要求3所述的通信設備,其中所述撤銷編號判斷單元通過把由所述撤銷編號獲取單元所獲得的所述撤銷編號與所述撤銷編號存儲單元所存儲的撤銷編號進行比較來判斷所述撤銷編號的有效性。
7.如權利要求6所述的通信設備,其中當所述獲得的撤銷編號等于或者大于由所述撤銷編號存儲單元所存儲的撤銷編號時,所述撤銷編號判斷單元斷定由所述撤銷編號獲取單元所獲得的撤銷編號是有效的。
8.一種用于發(fā)布指示服務器設備有效性的服務器證書的證書發(fā)布設備,包括撤銷編號存儲單元,用于存儲撤銷編號,所述撤消編號是用作判斷所述服務器證書有效性的標準的信息;以及發(fā)布單元,用于發(fā)布新的服務器證書,其中所述發(fā)布單元發(fā)布包括有標識號的新的服務器證書,該標示號指示等于或者大于由所述撤銷編號存儲單元存儲的所述撤銷編號的值。
9.如權利要求8所述的證書發(fā)布設備,還包括撤銷編號更新單元,用于當被通知所述服務器證書的所述標識號將被撤銷時,把所述撤銷編號存儲單元存儲的撤銷編號更新為大于將被撤銷的服務器證書的標識號的編號。
10.如權利要求9所述的證書發(fā)布設備,其中在所述撤銷編號更新單元更新了由所述撤銷編號存儲單元存儲的撤銷編號的情況下,所述發(fā)布單元為其服務器證書被分配有小于所更新的撤銷編號的標識號的服務器發(fā)布新的服務器證書。
11.如權利要求8所述的證書發(fā)布設備,還包括撤銷編號更新單元,用于指定服務器證書的標識號,正在接近的期滿日期,并且把由所述撤銷編號存儲單元存儲的撤銷編號更新為大于所述標識號的一編號。
12.如權利要求11所述的證書發(fā)布設備,其中在所述撤銷編號更新單元更新了由所述撤銷編號存儲單元存儲的撤銷編號的情況下,所述發(fā)布單元為其服務器證書被分配有小于已更新撤銷編號的標識號的服務器發(fā)布新的服務器證書。
13.一種包括服務器設備、用于發(fā)布指示該服務器設備有效性的服務器證書的證書發(fā)布設備以及根據(jù)所述服務器證書與該服務器設備通信的通信設備的通信系統(tǒng),其中所述證書發(fā)布設備包括第一撤銷編號存儲單元,用于存儲撤銷編號,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;以及發(fā)布單元,用于發(fā)布新的服務器證書,其中所述發(fā)布單元發(fā)布包括有標識號的新的服務器證書,該標示號指明等于或者大于由所述第一撤銷編號存儲單元存儲的所述撤銷編號的值,以及所述通信設備包括撤銷編號獲取單元,用于從存儲庫設備獲得撤銷編號,所述存儲庫設備存儲所述撤銷編號,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;第二撤銷編號存儲單元,用于存儲所獲得的撤銷編號;標識號讀取單元,用于從所述服務器證書中讀出用于識別所述服務器證書的標識號;證書判斷單元,用于通過把所讀出的標識號與所述第二撤銷編號存儲單元存儲的所述撤銷編號進行比較來判斷所述服務器證書的有效性;以及通信控制單元,用于當所述服務器證書被判斷為有效時,建立與所述服務器設備的通信,并且當所述服務器證書被判斷為無效時,不建立與所述服務器設備的通信。
14.一種用于根據(jù)指示服務器設備有效性的服務器證書來與所述服務器設備進行通信的通信方法,包括撤銷編號獲取步驟,用于從存儲庫設備獲得撤銷編號,所述存儲庫設備存儲所述撤銷編號,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;撤銷編號存儲步驟,用于把所獲得的撤銷編號存儲到記錄單元中;標識號讀取步驟,用于從所述服務器證書中讀出用于識別所述服務器證書的標識號;證書判斷步驟,用于通過把所讀出的標識號與所述記錄單元存儲的所述撤銷編號進行比較來判斷所述服務器證書的有效性;以及通信控制步驟,用于當所述服務器證書被判斷為有效時,建立與所述服務器設備的通信,而且當所述服務器證書被判斷為無效時,不建立與所述服務器設備的通信。
15.一種用于發(fā)布指示服務器設備有效性的服務器證書的證書發(fā)布方法,包括撤銷編號存儲步驟,用于把撤銷編號存儲到記錄單元中,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;以及發(fā)布步驟,用于發(fā)布新的服務器證書,其中在所述發(fā)布步驟中,發(fā)布包括有標識號的新的服務器證書,所述標識號指明等于或者大于由所述記錄單元存儲的所述撤銷編號的值。
16.一種用于根據(jù)指示服務器設備有效性的服務器證書來與所述服務器設備進行通信的通信設備的程序,所述程序使計算機執(zhí)行如下步驟撤銷編號獲取步驟,用于從存儲庫設備獲得撤銷編號,所述存儲庫設備存儲所述撤銷編號,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;撤銷編號存儲步驟,用于把所獲得的撤銷編號存儲到記錄單元中;標識號讀取步驟,用于從所述服務器證書中讀出用于識別該服務器證書的標識號;證書判斷步驟,用于通過把所讀出的標識號與所述記錄單元存儲的所述撤銷編號進行比較來判斷所述服務器證書的有效性;以及通信控制步驟,用于當所述服務器證書被判斷為有效時,建立與所述服務器設備的通信,而且當所述服務器證書被判斷為無效時,不建立與所述服務器設備的通信。
17.一種用于發(fā)布指示服務器設備有效性的服務器證書的證書發(fā)布設備的程序,所述程序使計算機執(zhí)行如下步驟撤銷編號存儲步驟,用于把撤銷編號存儲到記錄單元中,所述撤銷編號是用作判斷所述服務器證書有效性的標準的信息;并且發(fā)布步驟,用于發(fā)布新的服務器證書,其中在所述發(fā)布步驟中,發(fā)布包括有標識號的新的服務器證書,所述標識號指明等于或者大于由所述記錄單元存儲的所述撤銷編號的值。
全文摘要
終端(40a)包括撤銷編號驗證單元(435),用于從存儲撤銷編號的存儲庫(20)獲得撤銷編號,所述撤銷編號是用作判斷服務器證書(75)有效性的標準的信息;撤銷編號存儲單元(436),用于存儲所獲得的撤銷編號;證書序號提取單元(437),用于從服務器證書(75)讀出用于識別該服務器證書(75)的標識號;撤銷判斷單元(438),用于通過把所讀出的標識號與所述撤銷編號存儲單元(436)存儲的撤銷編號進行比較來判斷所述服務器證書(75)的有效性;以及通信單元(420),用于當所述服務器證書(75)被判斷為有效時,建立與應用程序服務器(30a)的通信,并且當所述服務器證書(75)被判斷為無效時,不建立與應用程序服務器(30a)的通信。
文檔編號H04L9/32GK1771710SQ20048000933
公開日2006年5月10日 申請日期2004年3月5日 優(yōu)先權日2003年4月3日
發(fā)明者浜井信二 申請人:松下電器產業(yè)株式會社