6.4 根CA的更新
這里只描述對某些終端實體來說是根CA的情況。
這里所描述流程的基礎是CA利用舊私鑰保護新私鑰同時利用新私鑰保護舊私鑰。因此,當CA更新密鑰對時,如果證書要在X.500目錄服務器發布,則必須生成兩個額外的cACertificate屬性值(這樣共有四個:oldWithOld、oldWithNew、newWithOld以及 newWithNew)。
當一個CA更改密鑰對的時候,那些已經通過帶外方式持有該CA舊公鑰的終端實體受到的影響最大。這些終端實體需要訪問由舊私鑰保護的CA新公鑰。然而,它們只在一個有限的時間段需要這一證書(直到它們通過帶外方式獲得新的CA公鑰)。通常,當這些終端實體的證書到期的時候,這自然便實現了。
用來保護新舊CA公鑰的數據結構不是新的數據結構,是標準的證書結構(也可能包含擴展項)。
注1:為了支持v1版本證書,目前的方案沒有利用任何X.509v3的證書擴展項。密鑰標識(KeyIdentifier)擴展項的存在是為了提高效率。
注2:可以將這一方案進行推廣,以適應CA在它的任一終端實體證書的有效期內多次更新自己密鑰對的情形,但這種推廣似乎沒有什么價值。不作這種推廣僅僅意味著CA密鑰對的有效期必須比用這對密鑰簽發的所有證書的有效期都長。
注3:本方案確保終端實體最晚將在它所擁有的由CA舊公鑰簽發的最后一個證書過期時獲得CA新公鑰(通過帶外方法)。發生在其它時候的證書和/或密鑰更新操作并不要求這一點(這依賴于終端實體設施)。
6.4.1 CA操作員的行為
要更新CA的密鑰,CA操作員要完成以下操作:
a) 產生新密鑰對;
b) 產生一個用新私鑰為舊公鑰簽名的證書 (“old with new”證書);
c) 產生一個用舊私鑰為新公鑰簽名的證書 (“new with old”證書);
d) 產生一個用新私鑰為新公鑰簽名的證書 (“new with new”證書);
e) 通過數據倉庫或其它方式發布這些新證書(可能使用CAKeyUpdAnn消息);
f) 導出CA新公鑰,這樣終端實體就可以通過帶外方式獲得 (如果需要的話)。
舊CA私鑰將不再使用。但舊CA公鑰還會延續使用一段時間。當CA所屬的終端實體都已經安全地獲得了CA新公鑰的時候,舊公鑰就不再使用了(防抵賴除外)。
“old with new”證書的有效期必須從舊密鑰生成的時間開始,到舊公鑰到期的時候結束。
“new with old”證書的有效期必須從新密鑰對生成的時間開始,到足以保證所有終端實體都得到了新的CA公鑰時結束(最晚到舊公鑰到期的時候)。
“new with new”證書的有效期必須從新密鑰對生成的時間開始,到CA下一次更新其密鑰時或CA下一次更新其密鑰之前結束。
6.4.2 驗證證書
通常在驗證簽名的時候,驗證者要驗證包含簽名者公鑰的證書。然而,一旦允許CA更新密鑰,就會出現很多新的可能性,如表1所示:
6.4.2.1 在情況1、情況4、情況5和情況8下的驗證
在這樣的情況下,驗證者擁有CA公鑰的一份本地拷貝,可以用來直接驗證證書。這種情況與沒有密鑰更新時是一樣的。
第8種情況會在CA操作員已經生成了新密鑰和將新密鑰導入系統之間的時候出現。當此間隙期間CA操作員已經發布了簽名者和驗證者的證書的時候,情況5會出現(CA操作員要盡量避開這樣的情況)。
6.4.2.2 在情況2下的驗證
在情況2下,驗證者必須得到CA的舊公鑰。驗證者執行下列操作:
a) 在數據倉庫中查找caCertificate屬性,獲得OldWithNew證書(基于有效期來判斷,注意主體和簽發者字段必須匹配);
b) 利用CA新密鑰(驗證者本地擁有的)驗證該證書是否正確;
c) 如果正確,利用CA舊密鑰驗證簽名者的證書。
當CA操作員先為簽名者簽發了證書,更新CA密鑰后,又為驗證者簽發證書時,會發生這種情況,因此這是一種很典型的情況。
6.4.2.3 在情況3的驗證
在第3種情況下,驗證者必須要取得CA的新公鑰,驗證者執行下列操作:
a) 在數據倉庫中查找caCertificate屬性,獲得NewWithOld證書(基于有效期來判斷,注意主體和簽發者字段必須匹配);
b) 利用CA舊密鑰(驗證者本地擁有的)驗證該證書是否正確;
c) 如果正確,利用CA新密鑰驗證簽名者的證書。
當CA操作員先為驗證者簽發了證書,更新CA密鑰后,又為簽名者簽發證書時,會發生這種情況,因此這也是一種很典型的情況。
6.4.2.4 在情況6下的驗證失敗
在這種情況下CA已經為驗證者簽發了包含新密鑰的PSE但尚未更新數據倉庫中的屬性。這意味著驗證者無法得到可信賴的CA的舊密鑰,所以驗證失敗。
此失敗是由CA操作員的錯誤造成的。
6.4.2.5 在情況7下的驗證失敗
在這種情況下,CA已經用新密鑰為簽名者簽發了證書但尚未更新數據倉庫中的屬性。這意味著驗證者無法得到可信賴的CA舊密鑰,所以驗證失敗。
此失敗也是由CA操作員的錯誤造成的。
6.4.3 作廢 —— CA密鑰的改變
如上所述,一旦允許更改CA密鑰,那么證書的驗證將變得更為復雜。對于作廢檢查也存在同樣的問題,因為CA可能利用新私鑰而不是用戶PSE中已經存在的私鑰簽發CRL。
對各種情形的分析與證書驗證相同。
推薦文章: