專利名稱:安全修補(bǔ)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大致系關(guān)于軟件更新,且詳而言之,系關(guān)于分散系統(tǒng)(distributed system)中之軟件更新的安全發(fā)布(secure distribution)。
背景技術(shù):
許多計(jì)算機(jī)媒體或通訊系統(tǒng)由于安全的漏洞而讓數(shù)據(jù)被非法存取 或計(jì)算機(jī)蠕蟲(worm)的散布。因此,造成可觀的損害。通常是用與 安全有關(guān)的軟件更新封閉此類的安全漏洞,這種軟件更新也被稱作修 補(bǔ)(patch)。在分散系統(tǒng)中,可用修補(bǔ)服務(wù)器產(chǎn)生修補(bǔ),然后發(fā)布到許 多修補(bǔ)客戶端,例如,通訊系統(tǒng)的行動(dòng)單元或有嵌入式處理器 (embedded processor)的消費(fèi)者裝置。不過(guò),從不安全系統(tǒng)下載的修補(bǔ)仍須加以保護(hù)以免被惡意修改。 否則,計(jì)算機(jī)病毒或蠕蟲仍能引起有效的攻擊。例如,阻斷服務(wù)(DoS) 攻擊會(huì)針對(duì)GSM網(wǎng)(全球行動(dòng)通訊系統(tǒng)),其中,每一個(gè)無(wú)線電格(radio cell)中只要有一個(gè)主動(dòng)裝置被感染就足以阻斷整個(gè)系統(tǒng)。在先前技術(shù)系統(tǒng)中,公共密鑰密碼系統(tǒng)(public key cryptography, PKC),也被稱作非對(duì)稱密碼(asymmetric cryptography),常用來(lái)藉由 避免在不安全網(wǎng)絡(luò)傳送密鑰(secret key)以保護(hù)套裝軟件的發(fā)布?;?本概念為有兩種鑰匙僅用于加密且為大眾所知的公共密鑰(PK)以及 解密訊息需要知道的私有密鑰(private key),也被稱作密鑰(SK)。該 安全性系取決于由公共密鑰推導(dǎo)出私有密鑰的困難度以及在不知道私 有密鑰的情況下解開加密訊息的困難度。PKC的特殊應(yīng)用為數(shù)字簽名。在此,計(jì)算出一些文件的密碼哈希 計(jì)算總合(cryptographic hash sum),然后用創(chuàng)作者之私有密鑰加密此 哈希計(jì)算總合以建立該數(shù)字簽名。以某種方式把該簽名附加于文件。 任何一位知道創(chuàng)作者之公共密鑰者可計(jì)算文件的哈希計(jì)算總合,用公 共密鑰解密附屬的簽名并且拿結(jié)果與哈希計(jì)算文件作比較。替換地,
藉由以創(chuàng)作者的私有密鑰將哈希計(jì)算總合解密可產(chǎn)生數(shù)字簽名。為了 驗(yàn)證,收文者可再次計(jì)算該哈希計(jì)算總合,用公共密鑰加密且拿結(jié)果 與提供的簽名作比較。正確的數(shù)字簽名可證明其創(chuàng)作者知道私有密鑰(真實(shí)性,authenticity)且自從簽名產(chǎn)生后該文件沒有被以增減或修改內(nèi)容的方式 或者是以重新排列部份內(nèi)容的方式修改(完整性)。后者系以所使用之密 碼哈希計(jì)算函數(shù)的性質(zhì)提供,例如,MD5(訊息摘要算法5)、 SHA-1(保 全哈希計(jì)算算法1)或RIPEMD-160(完整性原語(yǔ)評(píng)價(jià)信息摘要160)。不 過(guò),無(wú)法知道,例如,在簽名產(chǎn)生時(shí)私有密鑰是否已被盜取。由于不被信任的一方,亦即不知道秘密者,也能檢查數(shù)字簽名, 所以非對(duì)稱密碼常用于數(shù)字簽名。不過(guò),PKC的缺點(diǎn)為敏感性高且緩 慢。此外,PKC系統(tǒng)的安全漏洞在于有可能遭受中間人攻擊 (man-in-the-middle attack)。如果能以某種方式證明公共密鑰的真實(shí) 性,就可預(yù)防這種問(wèn)題。在有些情況下,計(jì)算公共密鑰(即所謂的指 紋)的密碼核對(duì)和(cryptographic checksum)再經(jīng)由例如電話直接告訴 收文者就可以。不過(guò),在復(fù)雜又動(dòng)態(tài)改變的環(huán)境中這是不可能的。因 此,為此可使用公共密鑰基礎(chǔ)建設(shè)(PKI),而公共密鑰由可信任的一方 數(shù)字地簽名。不過(guò),PKI基礎(chǔ)建設(shè)的實(shí)施及維護(hù)很昂貴。此外,PKC會(huì)有一些其它的風(fēng)險(xiǎn)及問(wèn)題,例如在使用RSA(瑞未斯 特-希米爾-愛得曼)加密時(shí)。除了PKC太慢以外,明文(plaintext)部份還 要填補(bǔ)隨機(jī)位,否則數(shù)種攻擊仍有是可能的。因此,通常不直接使用 公共密鑰加密明文。反而是,產(chǎn)生隨機(jī)對(duì)話密鑰(random session key) 且使用于傳統(tǒng)的對(duì)稱式加密,例如使用像AES(高級(jí)加密標(biāo)準(zhǔn))或雙魚 (Two-fish)這類的算法。在這些被稱作混合式協(xié)議的協(xié)議中,只將對(duì) 話密鑰以公共密鑰加密再加到密文(ciphertext)中。不過(guò),即使使用混合式協(xié)議,對(duì)話密鑰仍需隨機(jī)填補(bǔ)成,例如, 512或1024個(gè)位長(zhǎng)度。填補(bǔ)不足會(huì)導(dǎo)致安全性降低。此外,如果RSA私有密鑰中的位被硬件或攻擊者翻轉(zhuǎn)(flip)且然后 用此私有密鑰定義訊息,則可將該公共密鑰因式分解,從而安全被完 全破解。這在PKC系統(tǒng)中會(huì)產(chǎn)生相當(dāng)程度的風(fēng)險(xiǎn)。此外,在產(chǎn)生公共密鑰時(shí)可能會(huì)被加上暗門(trapdoor)。知道如
何修改生成算法(creation algorithm)的攻擊者會(huì)有辦法輕易地由公共 密鑰推論出私有密鑰,以致安全再度被完全破解。因此,許多先前技術(shù)的修補(bǔ)系統(tǒng)設(shè)法避開PKC。在可信任服務(wù)器 與客戶端(例如,GSM電話中之嵌入式處理器)之間有對(duì)話的系統(tǒng)中, 序列化密鑰(serialized key)(可能在智能卡(smart card)中)與挑戰(zhàn)-響應(yīng)協(xié)議(challenge response protocol)能提供簡(jiǎn)單且強(qiáng)健的解決方案。 不過(guò),有許多系統(tǒng)無(wú)法應(yīng)用這種方法。例如,當(dāng)在開機(jī)時(shí)間接收器為 固定且被動(dòng)時(shí),不可能做序列化。替換地,各方分享共同秘密的先前技術(shù)系統(tǒng)系使用像HMAC(哈希 計(jì)算訊息身份驗(yàn)證代碼)這類的密碼核對(duì)和。彼之實(shí)施例之一為 GSM/UMTS(全球行動(dòng)通訊系統(tǒng)/通用行動(dòng)通訊系統(tǒng))行動(dòng)電話的驗(yàn)證及 密鑰處理,其系以SIM(用戶識(shí)別模塊,Subscriber Identification Module) 卡發(fā)布密鑰。與PKC相比,此解決方案較為簡(jiǎn)單、較快、且較強(qiáng)健。 不過(guò),盡管HMAC密碼核對(duì)和可證明完整性,對(duì)應(yīng)的密鑰會(huì)被固定于 EP(嵌入式處理器)接收器的韌體內(nèi)。因此,泄露此秘密的HMAC密鑰 會(huì)使所有的核對(duì)和變?yōu)楹翢o(wú)價(jià)值。因此,許多先前技術(shù)修補(bǔ)系統(tǒng)利用數(shù)字簽名。不過(guò),確保完整性 常常不足。如果修補(bǔ)被施加還原工程(reverse engineer),還是可找出安 全漏洞。簽名過(guò)的修補(bǔ)只證明其真實(shí)性,而不是安全性。在作者這邊 只能靠信任來(lái)提供安全性。此外,對(duì)于所有修補(bǔ)客戶端,都用相同公 共密鑰簽名修補(bǔ)會(huì)有相當(dāng)不安全的缺點(diǎn)。如果私有密鑰泄露,則所有 的安全性消失。更有可能的情況是遺失私有密鑰。就此情形而言,無(wú) 法再釋出修補(bǔ)以致所有的修補(bǔ)客戶端愈來(lái)愈不安全。發(fā)明內(nèi)容因此,提供數(shù)種改良的修補(bǔ)服務(wù)器、修補(bǔ)客戶端、以及對(duì)應(yīng)的方 法,其可克服先前技術(shù)的缺點(diǎn)。數(shù)個(gè)實(shí)施例可增加秘密保護(hù)以及密鑰 遺失容忍度(tolerance)。這則可增加投資保障。此外,可改善免于泄 露密鑰的保護(hù)。其它的實(shí)施例在密鑰產(chǎn)生仍有安全漏洞的情形下可減 少弱密鑰(weakkey)的風(fēng)險(xiǎn)。根據(jù)一方面,修補(bǔ)服務(wù)器系連接至修補(bǔ)客戶端,用以提供修補(bǔ)至
該修補(bǔ)客戶端。該修補(bǔ)服務(wù)器包含第一密鑰產(chǎn)生平臺(tái)、與該第一密 鑰產(chǎn)生平臺(tái)不相同的第二密鑰產(chǎn)生平臺(tái)、第一密鑰選擇器、第二密鑰 選擇器、第一簽名產(chǎn)生器、第二簽名產(chǎn)生器、以及發(fā)送器。該第一密 鑰產(chǎn)生平臺(tái)系經(jīng)配置成產(chǎn)生包含多個(gè)第一私有密鑰的第一私有密鑰群 組。該第二密鑰產(chǎn)生平臺(tái)系經(jīng)配置成產(chǎn)生包含多個(gè)第二私有密鑰的第 二私有密鑰群組。該等第一與第二密鑰選擇器系經(jīng)配置成各自從該等 第一與第二私有密鑰群組選定該等第一與第二私有密鑰中之一個(gè)。該 第一簽名產(chǎn)生器系經(jīng)配置成基于該修補(bǔ)與該第一選定私有密鑰而產(chǎn)生 第一數(shù)字簽名。該第二簽名產(chǎn)生器系經(jīng)配置成基于該修補(bǔ)與該第二選 定私有密鑰而產(chǎn)生第二數(shù)字簽名。該發(fā)送器系經(jīng)配置成一起發(fā)送該修 補(bǔ)以及該等第一與第二數(shù)字簽名至該修補(bǔ)客戶端。 在另一實(shí)施例中,該修補(bǔ)服務(wù)器進(jìn)一步包含對(duì)話(session)密鑰產(chǎn)生器,經(jīng)配置成產(chǎn)生隨機(jī)對(duì)話密鑰;第一加密組件,經(jīng)配置成使用對(duì)稱加密算法用該隨隨機(jī)對(duì)話密鑰 加密該修補(bǔ);以及第二加密組件,經(jīng)配置成用主密鑰(masterkey)加密該隨機(jī)對(duì)話 密鑰;其中該發(fā)送器系進(jìn)一步經(jīng)配置成一起發(fā)送呈加密的形式的該修補(bǔ) 以及該等第一與第二數(shù)字簽名和該經(jīng)加密之隨機(jī)對(duì)話密鑰至該修補(bǔ)客 戶端。在另一實(shí)施例中,該修補(bǔ)服務(wù)器之該第一加密組件系進(jìn)一步經(jīng)配 置成使用該對(duì)稱加密算法而用該隨機(jī)對(duì)話密鑰加密該等第一與第二數(shù) 字簽名;以及其中該發(fā)送器系進(jìn)一步經(jīng)配置成一起發(fā)送呈加密的形式的該修補(bǔ) 以及呈加密的形式的該等第一與第二數(shù)字簽名和該經(jīng)加密之隨機(jī)對(duì)話 密鑰至該修補(bǔ)客戶端。根據(jù)另一方面,提供一種提供修補(bǔ)至修補(bǔ)客戶端的方法。使用第 一密鑰產(chǎn)生平臺(tái)產(chǎn)生包含多個(gè)第一私有密鑰的第一私有密鑰群組。使 用不同于該第一密鑰產(chǎn)生平臺(tái)的第二密鑰產(chǎn)生平臺(tái)產(chǎn)生包含多個(gè)第二 私有密鑰的第二私有密鑰群組。從該第一私有密鑰群組選定該等第一 私有密鑰中之一個(gè),且從該第二私有密鑰群組選定該等第二私有密鑰
中之一個(gè)。基于該修補(bǔ)與該第一選定私有密鑰產(chǎn)生第一數(shù)字簽名?;?于該修補(bǔ)與該第二選定私有密鑰產(chǎn)生第二數(shù)字簽名。將該修補(bǔ)以及該 等第一與第二數(shù)字簽名一起發(fā)送至該修補(bǔ)客戶端。 在另一實(shí)施例中,該方法進(jìn)一步包含基于該修補(bǔ)計(jì)算出第一哈希計(jì)算總合(hash sum);以及 基于該第一哈希計(jì)算總合計(jì)算出第二哈希計(jì)算總合; 其中產(chǎn)生該第一數(shù)字簽名包含基于該第二哈希計(jì)算總合以及該第一選定私有密鑰而產(chǎn)生該第一數(shù)字簽名。在另一實(shí)施例中,該方法進(jìn)一步包含 基于該第二哈希計(jì)算總合計(jì)算出第三哈希計(jì)算總合; 其中產(chǎn)生該第二數(shù)字簽名包含基于該第三哈希計(jì)算總合以及該 第二選定私有密鑰而產(chǎn)生該第二數(shù)字簽名。 在另一實(shí)施例中,該方法進(jìn)一歩包含 計(jì)算出多個(gè)哈希計(jì)算總合; 其中該修補(bǔ)包含多筆記錄;其中計(jì)算出該等多個(gè)哈希計(jì)算總合包含基于包含在該修補(bǔ)內(nèi)之 最后一筆記錄計(jì)算出該等多個(gè)哈希計(jì)算總合的第一哈希計(jì)算總合;以 及其中計(jì)算出該等多個(gè)哈希計(jì)算總合進(jìn)一步包含每次基于包含于 該修補(bǔ)內(nèi)之各自的下一筆最近所用的記錄(next last record)以及該等多 個(gè)哈希計(jì)算總合中之各自的最近計(jì)算所得的哈希計(jì)算總合而計(jì)算出該 等多個(gè)哈希計(jì)算總合中之另一哈希計(jì)算總合。在另一實(shí)施例中,產(chǎn)生該第一數(shù)字簽名包含基于該等多個(gè)哈希 計(jì)算總合中之最近計(jì)算出之哈希計(jì)算總合而產(chǎn)生該第一數(shù)字簽名;以 及其中發(fā)送該修補(bǔ)包含 一起發(fā)送該修補(bǔ)以及該等第一與第二數(shù)字簽名和該等多個(gè)哈希計(jì)算總合至該修補(bǔ)客戶端。在另一實(shí)施例中,產(chǎn)生該第二數(shù)字簽名包含基于該等多個(gè)哈希 計(jì)算總合中之最近計(jì)算出之哈希計(jì)算總合而產(chǎn)生該第二數(shù)字簽名;以及其中發(fā)送該修補(bǔ)包含 一起發(fā)送該修補(bǔ)以及該等第一與第二數(shù)字
簽名和該等多個(gè)哈希計(jì)算總合至該修補(bǔ)客戶端。 在另一實(shí)施例中,該方法進(jìn)一步包含產(chǎn)生密鑰指針(key indicator),該密鑰指針包含第一密鑰指針, 其指向已從該第一私有密鑰群組選定的第一私有密鑰,以及第二密鑰 指針,其指向已從該第二私有密鑰群組選定的第二私有密鑰;其中發(fā)送該修補(bǔ)包含 一起發(fā)送該修補(bǔ)以及該等第一與第二數(shù)字 簽名和該密鑰指針至該修補(bǔ)客戶端。在另一實(shí)施例中,產(chǎn)生該密鑰指針包含產(chǎn)生進(jìn)一步包含虛擬指針之該密鑰指針,該虛擬指針鑒定該等第一與第二數(shù)字簽名中之一個(gè) 為虛擬簽名。在另一實(shí)施例中,該方法進(jìn)一歩包含 產(chǎn)生隨機(jī)對(duì)話密鑰;使用對(duì)稱加密算法而用該隨機(jī)對(duì)話密鑰加密該修補(bǔ);以及 用主密鑰加密該隨機(jī)對(duì)話密鑰;其中發(fā)送該修補(bǔ)包含 一起發(fā)送呈加密的形式的該修補(bǔ)以及該等 第一與第二數(shù)字簽名和該經(jīng)加密之隨機(jī)對(duì)話密鑰至該修補(bǔ)客戶端。 在另一實(shí)施例中,該方法進(jìn)一步包含'使用該對(duì)稱加密算法而用該隨機(jī)對(duì)話密鑰加密該等第一與第二數(shù) 字簽名;其中發(fā)送該修補(bǔ)包含 一起發(fā)送呈加密的形式的該修補(bǔ)以及呈加 密的形式的該等第一與第二數(shù)字簽名和該經(jīng)加密之隨機(jī)對(duì)話密鑰至該 修補(bǔ)客戶端。另一方面系關(guān)于一種修補(bǔ)客戶端,其連接至修補(bǔ)服務(wù)器,用以從 該修補(bǔ)服務(wù)器接收修補(bǔ)。該修補(bǔ)客戶端包含第一與第二存儲(chǔ)構(gòu)件 (storage means)、第一與第二密鑰選擇器、以及第一與第二簽名驗(yàn)證組 件。該第一存儲(chǔ)構(gòu)件存儲(chǔ)包含多個(gè)已由第一密鑰產(chǎn)生平臺(tái)產(chǎn)生之第一 公共密鑰的第一公共密鑰群組。該第二存儲(chǔ)構(gòu)件存儲(chǔ)包含多個(gè)第二公 共密鑰的第二公共密鑰群組,該等多個(gè)第二公共密鑰系由不同于該第 一密鑰產(chǎn)生平臺(tái)的第二密鑰產(chǎn)生平臺(tái)產(chǎn)生。該等第一與第二密鑰選擇 器系經(jīng)配置成各自從該第一與第二公共密鑰群組選定該等第一與第二 公共密鑰中之一個(gè)。該第一簽名驗(yàn)證組件系經(jīng)配置成使用該第一選定 公共密鑰驗(yàn)證第一數(shù)字簽名,該第一數(shù)字簽名與該修補(bǔ)一起從該修補(bǔ) 服務(wù)器接收到。該第二簽名驗(yàn)證組件系經(jīng)配置成使用該第二選定公共 密鑰驗(yàn)證第二數(shù)字簽名,該第二數(shù)字簽名與該修補(bǔ)一起從該修補(bǔ)服務(wù) 器接收到。該修補(bǔ)客戶端系經(jīng)配置成只有在驗(yàn)證該等第一與第二數(shù)字簽名的結(jié)果分別顯示該等第一與第二數(shù)字簽名的真實(shí)性(authenticity) 與完整性時(shí),才安裝該修補(bǔ)。在另一實(shí)施例中,該修補(bǔ)客戶端進(jìn)一步包含第一哈希計(jì)算器(hasher),經(jīng)配置成基于該修補(bǔ)計(jì)算出第一哈希 計(jì)算總合;以及第二哈希計(jì)算器,經(jīng)配置成基于該第一哈希計(jì)算總合計(jì)算出第二 哈希計(jì)算總合;其中該第一簽名驗(yàn)證組件系進(jìn)一步經(jīng)配置成基于該第二哈希計(jì)算 總合驗(yàn)證該第一數(shù)字簽名。在另一實(shí)施例中,該修補(bǔ)客戶端進(jìn)一步包含第三哈希計(jì)算器,經(jīng)配置成基于該第二哈希計(jì)算總合計(jì)算出第三 哈希計(jì)算總合;其中該第二簽名驗(yàn)證組件系進(jìn)一步經(jīng)配置成基于該第三哈希計(jì)算 總合驗(yàn)證該第二數(shù)字簽名。在另一實(shí)施例中,該第一簽名驗(yàn)證組件系進(jìn)一步經(jīng)配置成基于 與該修補(bǔ)一起從該修補(bǔ)服務(wù)器接收到的第一哈希計(jì)算總合而驗(yàn)證該第 一數(shù)字簽名;以及其中該第二簽名驗(yàn)證組件系進(jìn)一步經(jīng)配置成基于該第一哈希計(jì)算 總合驗(yàn)證該第二數(shù)字簽名。在另一實(shí)施例中,該第一密鑰選擇器系進(jìn)一步經(jīng)配置成根據(jù)與 該修補(bǔ)一起從該修補(bǔ)服務(wù)器接收到的第一密鑰指針而選定該等第一公 共密鑰中之該一個(gè);以及其中該第二密鑰選擇器系進(jìn)一步經(jīng)配置成根據(jù)與該修補(bǔ)一起從 該修補(bǔ)服務(wù)器接收到的第二密鑰指針而選定該等第二公共密鑰中之該 一個(gè)。在另一實(shí)施例中,該修補(bǔ)客戶端系進(jìn)一歩經(jīng)配置成如果與該修 補(bǔ)一起從該修補(bǔ)服務(wù)器接收到的虛擬指針分別鑒定(identify)該第一或
第二數(shù)字簽名為虛擬簽名,忽略(disregard)驗(yàn)證該第一或第二數(shù)字簽名 的結(jié)果。在另-一實(shí)施例中,該修補(bǔ)客戶端進(jìn)一步包含 存儲(chǔ)主密鑰的第三存儲(chǔ)構(gòu)件;第一解密(decryption)組件,經(jīng)配置成使用該主密鑰解密與該修補(bǔ) 一起從該修補(bǔ)服務(wù)器接收到的經(jīng)加密之隨機(jī)對(duì)話密鑰以得到該隨機(jī)對(duì) 話密鑰;以及第二解密組件,經(jīng)配置成使用該隨機(jī)對(duì)話密鑰藉由施加對(duì)稱解密 算法而解密該修補(bǔ)。在另一實(shí)施例中,該第二解密組件系進(jìn)一歩經(jīng)配置成使用該隨機(jī) 對(duì)話密鑰藉由施加該對(duì)稱解密算法而解密該等第^一與第二數(shù)字簽名。在另一實(shí)施例中,該主密鑰系存儲(chǔ)于該第三存儲(chǔ)構(gòu)件內(nèi)且隱藏于 存儲(chǔ)于該第三存儲(chǔ)構(gòu)件的其它信息之中。在另一實(shí)施例中,在修補(bǔ)客戶端的制造期間,將該主密鑰輸入于 該第三存儲(chǔ)構(gòu)件內(nèi)。在另一實(shí)施例中,在修補(bǔ)客戶端的制造期間,將該第一公共密鑰 群組與該第二公共密鑰群組分別輸入于該等第一與第二存儲(chǔ)構(gòu)件內(nèi)。根據(jù)又另一方面,提供一種安裝修補(bǔ)于修補(bǔ)客戶端中的方法。該 修補(bǔ)系與第一及第二數(shù)字簽名一起從連接至該修補(bǔ)客戶端的修補(bǔ)服務(wù) 器接收到。在該修補(bǔ)客戶端中存儲(chǔ)包含多個(gè)第一公共密鑰的第一公共 密鑰群組,該等第一公共密鑰系已由第一密鑰產(chǎn)生平臺(tái)產(chǎn)生。此外, 在該修補(bǔ)客戶端中存儲(chǔ)包含多個(gè)第二公共密鑰的第二公共密鑰群組, 該等第二公共密鑰系已由不同于該第一密鑰產(chǎn)生平臺(tái)的第二密鑰產(chǎn)生 平臺(tái)產(chǎn)生。該等第一公共密鑰中之一個(gè)以及該等第二公共密鑰中之一 個(gè)系各自從該等第一與第二公共密鑰群組選定。使用該第一選定公共 密鑰驗(yàn)證該第一數(shù)字簽名,且使用該第二選定公共密鑰驗(yàn)證該第二數(shù) 字簽名。只有在驗(yàn)證該等第一與第二數(shù)字簽名的結(jié)果分別顯示該等第 一與第二數(shù)字簽名的真實(shí)性與完整性時(shí),才將該修補(bǔ)安裝于該修補(bǔ)客 戶端內(nèi)。在另一實(shí)施例中,該方法進(jìn)一步包含 基于該修補(bǔ)計(jì)算出第一哈希計(jì)算總合;以及 基于該第一哈希計(jì)算總合計(jì)算出第二哈希計(jì)算總合; 其中驗(yàn)證該第一數(shù)字簽名包含基于該第二哈希計(jì)算總合而驗(yàn)證該第一數(shù)字簽名。在另一實(shí)施例中,該方法進(jìn)一步包含 基于該第二哈希計(jì)算總合計(jì)算出第三哈希計(jì)算總合; 其中驗(yàn)證該第二數(shù)字簽名包含基于該第三哈希計(jì)算總合而驗(yàn)證該第二數(shù)字簽名。在另一實(shí)施例中,該方法進(jìn)--歩包--哈希計(jì)算總合以及該修補(bǔ);基于該第一哈希計(jì)算總合而驗(yàn)證 基于該第一哈希計(jì)算總合而驗(yàn)證從該修補(bǔ)服務(wù)器一起接收到負(fù) 其中驗(yàn)證該第一數(shù)字簽名包1該第一數(shù)字簽名;以及其中驗(yàn)證該第二數(shù)字簽名包1 該第二數(shù)字簽名。在另一實(shí)施例中,該方法進(jìn)一步包含從該修補(bǔ)服務(wù)器一起接收到第一密鑰指針與第二密鑰指針以及該修補(bǔ);其中選定該等第一公共密鑰中之該一個(gè)包含根據(jù)該第一密鑰指 針選定該等公共密鑰中之該一個(gè);以及其中選定該等第二公共密鑰中之該一個(gè)包含根據(jù)該第二密鑰指 針選定該等第二公共密鑰中之該一個(gè)。在另一實(shí)施例中,該方法進(jìn)一步包含從該修補(bǔ)服務(wù)器一起接收到虛擬指針以及該修補(bǔ);以及如果該虛擬指針分別鑒定該第一或第二數(shù)字簽名為虛擬簽名時(shí), 則忽略驗(yàn)證該第一或第二數(shù)字簽名的結(jié)果。在另一實(shí)施例中,該方法進(jìn)一步包含從該修補(bǔ)服務(wù)器一起接收到經(jīng)加密之隨機(jī)對(duì)話密鑰以及該修補(bǔ); 在該修補(bǔ)客戶端中存儲(chǔ)主密鑰;使用該主密鑰解密該經(jīng)加密之隨機(jī)對(duì)話密鑰以得到該隨機(jī)對(duì)話密 鑰;以及使用該隨機(jī)對(duì)話密鑰藉由施加對(duì)稱解密算法而解密該修補(bǔ)。 在另一實(shí)施例中,該方法進(jìn)一步包含 使用該隨機(jī)對(duì)話密鑰藉由施加該對(duì)稱解密算法而解密該等第一與 第二數(shù)字簽名。在另一實(shí)施例中,在該修補(bǔ)客戶端中存儲(chǔ)該主密鑰包含存儲(chǔ)該 主密鑰而隱藏在存儲(chǔ)于該修補(bǔ)客戶端內(nèi)的其它信息之中。 在另一實(shí)施例中,該方法進(jìn)一步包含在該修補(bǔ)客戶端的制造期間,輸入該主密鑰于該修補(bǔ)客戶端內(nèi)。 在另一實(shí)施例中,該方法進(jìn)一步包含在該修補(bǔ)客戶端的制造期間,輸入該第一公共密鑰群組與該第二 公共密鑰群組于該修補(bǔ)客戶端內(nèi)。
為了解釋本發(fā)明的原理,將附圖并入本說(shuō)明書且作為本說(shuō)明書的 一部份。該等附圖不視為是要把本發(fā)明限定成只是用來(lái)圖解說(shuō)明及描 述如何做成及使用本發(fā)明的范例。如附圖所示,由以上本發(fā)明更詳細(xì) 的說(shuō)明可更加明白本發(fā)明的其它特征及優(yōu)點(diǎn),其中圖1系根據(jù)一實(shí)施例而圖標(biāo)修補(bǔ)系統(tǒng)的組件的方塊圖;圖2系根據(jù)一實(shí)施例而圖解說(shuō)明密鑰管理的方塊圖; '圖3系根據(jù)一實(shí)施例而圖解說(shuō)明公共密鑰管理的方塊圖;圖4系根據(jù)一實(shí)施例而圖解說(shuō)明修補(bǔ)發(fā)送的流程圖;圖5系根據(jù)一實(shí)施例而圖解說(shuō)明哈希計(jì)算鏈接的步驟;圖6系根據(jù)一實(shí)施例而顯示私有密鑰選擇的流程圖;圖7系根據(jù)一實(shí)施例而圖解說(shuō)明簽名產(chǎn)生的流程圖;圖8系根據(jù)一實(shí)施例而展示KEK加密的步驟;圖9系根據(jù)另一實(shí)施例而圖解說(shuō)明哈希計(jì)算鏈接的步驟的流程圖;圖IO系根據(jù)另一實(shí)施例而顯示簽名產(chǎn)生的流程圖;圖11系根據(jù)一實(shí)施例而圖解說(shuō)明修補(bǔ)塊的構(gòu)成;圖12系根據(jù)該實(shí)施例而圖解說(shuō)明密鑰指針的組態(tài)的方塊圖;圖13系根據(jù)另一實(shí)施例而圖解說(shuō)明修補(bǔ)塊的配置的方塊圖;圖14系根據(jù)一實(shí)施例而圖標(biāo)傳輸塊的方塊圖;圖15系根據(jù)一實(shí)施例而圖解說(shuō)明修補(bǔ)的安裝過(guò)程的流程圖;圖16系根據(jù)一實(shí)施例而圖解說(shuō)明公共密鑰選擇的流程圖17系根據(jù)一實(shí)施例而展示簽名驗(yàn)證的流程圖;圖18系根據(jù)另一實(shí)施例而圖解說(shuō)明修補(bǔ)安裝的流程圖;圖19系根據(jù)另一實(shí)施例而圖解說(shuō)明簽名驗(yàn)證;以及圖20系根據(jù)另一實(shí)施例而圖解說(shuō)明逐筆記錄的修補(bǔ)解密的流程第一密鑰產(chǎn)生平臺(tái) 第三密鑰產(chǎn)生平臺(tái) 150 公共密鑰矩陣主要組件符號(hào)說(shuō)明100修補(bǔ)服務(wù)器 110 120第二密鑰產(chǎn)生平臺(tái)130 140 修補(bǔ)客戶端 160 密鑰加密密鑰200、 205、 210、 215、 220、 225、 230、 235、 240、 245、 250、 255 私有密鑰260第一私有密鑰群組 270 第二私有密鑰群組280 第三私有密鑰群組300、 305、 310、 315、 320、 325、 330、 335、 340、 345、 350、 355共密鑰360第一公共密鑰群組 370 380 第三密鑰群組400、 410、 420、 430、 440、 450、 460、 470步馬k480、 490、 510、 520、 530、 540、 610、 620、 630、 710、 720、 730、810、 820、 830、 910、 920、 930、 940、 1010、 1020、 1030步驟公.公共密鑰群組膝1100 修補(bǔ)塊 11101120 第二數(shù)字簽名 11301140 密鑰指針 11501210 第一密鑰指針 12201230 第三密鑰指針 1240 1300 修補(bǔ)塊1310、 1320、 1330 數(shù)字簽名 1340 密鑰指針1350、 1360、 1370、 1380 密碼哈希計(jì)算總合1355、 1365、 1375、 1385 記錄第一數(shù)字簽名 第三數(shù)字簽名 修補(bǔ)第二密鑰指針 虛擬指針 1400 傳輸塊1420 加密修補(bǔ)塊 1500、 1510、 1520、 1530、 1540、 1630、 1700、 1710、 1720、 1730 1790、 1800、 1810、 1820、 1830、 1930、 1940、 1950、 1960、 1970-2015、 2020、 2030、 2035、 2040、D,第一數(shù)字簽名 D2D3第三數(shù)字簽名H2第二哈希計(jì)算總合 H31410 加密對(duì)話密鑰1550、 1560 、 1570、 1610、 1620、1740、 1750、 1760、 1770、 1780、1840、 1850、 1900、 1910、 1920、1980、 1990、 2000、 2005、 2010、 2045、 2050步驟第二數(shù)字簽名第一哈希計(jì)算總合第三哈希計(jì)算總合具體實(shí)施方式
現(xiàn)在參考附圖,描述本發(fā)明示范之實(shí)施例。修補(bǔ)客戶端的軟件, 例如,某些裝置的嵌入式處理器可從不安全的系統(tǒng)取得修補(bǔ)。該等實(shí) 施例可保證在進(jìn)行修補(bǔ)時(shí)這些修補(bǔ)沒有被修改。例如,有些病毒或計(jì) 算機(jī)蠕蟲會(huì)做成惡意修補(bǔ)。軟件或修補(bǔ)本身之中未被發(fā)現(xiàn)的安全漏洞 也有可能具有相同的效果。該等實(shí)施例可保護(hù)修補(bǔ)客戶端不會(huì)有此類 情況的負(fù)面影響。圖1系根據(jù)一實(shí)施例圖標(biāo)修補(bǔ)系統(tǒng)的組件。修補(bǔ)服務(wù)器100系連 接至多個(gè)修補(bǔ)客戶端140以提供該等修補(bǔ)客戶端與安全有關(guān)的軟件更 新,亦即,修補(bǔ)。該等修補(bǔ)客戶端可為,例如嵌入式系統(tǒng)、個(gè)人計(jì)算 機(jī)、或媒體/通訊裝置。彼等可通過(guò)任何適當(dāng)?shù)穆?lián)機(jī)而連接至該修補(bǔ)服 務(wù)器100,例如無(wú)線或有線連接。該修補(bǔ)服務(wù)器100可為計(jì)算機(jī)或分布 式計(jì)算機(jī)系統(tǒng)。根據(jù)圖標(biāo)之實(shí)施例,該修補(bǔ)服務(wù)器100包含3個(gè)密鑰產(chǎn)生平臺(tái)110、 120、 130。該等平臺(tái)110、 120、 130可彼此分開且可用來(lái)產(chǎn)生密鑰以 及處理。 一般而言,平臺(tái)系指某種在硬件或軟件或兩者中能執(zhí)行軟件 的架構(gòu)。本實(shí)施例的密鑰產(chǎn)生平臺(tái)110、 120、 130系基于不同的應(yīng)用 系統(tǒng)和硬件且可平行使用。這可改善與密鑰產(chǎn) 根據(jù)該實(shí)施例,該第一密鑰產(chǎn)生平臺(tái)110藉助nCipher的一些 nShield HSM而產(chǎn)生及存儲(chǔ)密鑰。該第二密鑰產(chǎn)生平臺(tái)120可在 Knoppix Linux操作系統(tǒng)下產(chǎn)生及使用密鑰。只在RAM(隨機(jī)存取存儲(chǔ) 器)中運(yùn)作的Knoppix Linux不會(huì)在硬盤上留下蹤跡??蓪a(chǎn)生的密鑰 以加密的形式存儲(chǔ)于外部??捎肙penSSL在該第二密鑰產(chǎn)生平臺(tái)120 完成密鑰處理。此外,可將長(zhǎng)通行短語(yǔ)(pass phrase)分割,藉此由兩 個(gè)不同的人員先后輸入通行短語(yǔ)以開啟私有密鑰供使用。傳統(tǒng)但是在 SELinux(安全性增強(qiáng)Linux)系統(tǒng)或某些等價(jià)的高安全性操作系統(tǒng)下,該 第三密鑰產(chǎn)生平臺(tái)130可用OpenSSL處理密鑰。替換地,第三密鑰產(chǎn) 生平臺(tái)130可使用加密運(yùn)算卡(cryptocard)。為了增加預(yù)防私有密鑰泄露的可靠性,nShield可使用秘密分享("n 個(gè)操作員卡(operator card)中之k個(gè)")。簽名處理過(guò)程可包含獨(dú)立的 主體且可將密鑰拆開分給第一密鑰產(chǎn)生平臺(tái)110的兩位管理人或多組 管理人。本實(shí)施例的修補(bǔ)系統(tǒng)是用多個(gè)簽名簽名修補(bǔ),該等多個(gè)簽名系使 用藉由密鑰產(chǎn)生平臺(tái)110、 120、 130產(chǎn)生及管理的密鑰之變動(dòng)子集。 也可用密鑰產(chǎn)生平臺(tái)110、 120、 130分別產(chǎn)生對(duì)應(yīng)的公共密鑰且于制 造該等修補(bǔ)客戶端140時(shí),輸入于該等修補(bǔ)客戶端140。然后,可將該 等公共密鑰存儲(chǔ)于在該等修補(bǔ)客戶端140中的公共密鑰矩陣150。在被傳輸?shù)皆摰刃扪a(bǔ)客戶端140之前,修補(bǔ)可用隨機(jī)對(duì)話密鑰加 以對(duì)稱加密。接著使用常用于所有修補(bǔ)客戶端140的秘密主密鑰(也 被稱作密鑰加密密鑰(key encryption key, KEK密鑰)160)加密該隨機(jī) 對(duì)話密鑰。相對(duì)于先前技術(shù)PKC系統(tǒng),這可提供增加的速度與簡(jiǎn)單性。 此外,可增加加密算法對(duì)未知弱點(diǎn)的防護(hù)力。由于以同一密鑰加密明 文的較小部份以致攻擊者要找出弱點(diǎn)比較困難。故可由修補(bǔ)服務(wù)器100 安全地存儲(chǔ)KEK密鑰160。在修補(bǔ)客戶端140中,可以隱藏的方式存儲(chǔ)KEK密鑰160以增加 安全性。為此目的,可結(jié)合硬件及軟件的措施。例如,可由數(shù)個(gè)128 位部份(秘密分割)經(jīng)由XOR(互斥)閘控(gating)建立128位密鑰。數(shù) 據(jù)可分散于程序內(nèi)且難以找到。此外,利用在程序中數(shù)個(gè)極為不同的 地方用例如宏執(zhí)行瘋狂的計(jì)算以動(dòng)態(tài)方式指定功能指針(flmction pointer)可提供對(duì)還原工程的反制(countermeasure)并且使除錯(cuò)器無(wú) 法使用。在加密期間以實(shí)際上無(wú)人知道密鑰的方式,可使用這種秘密 分割,而在運(yùn)行時(shí)間期間,只有程序可暫時(shí)建立這種秘密分割。在各個(gè)修補(bǔ)客戶端140賣給使用者之前,可由廠商將公共密鑰矩 陣150與密鑰加密密鑰160插設(shè)于修補(bǔ)客戶端140內(nèi)。廠商可將對(duì)應(yīng) 的密鑰保存于安全的地方。至于在本實(shí)施例中,公共密鑰為固定式, 私有密鑰的改變?yōu)椴豢赡芮抑荒茏鲝U。因此,可將私有密鑰隱藏于修 補(bǔ)服務(wù)器100內(nèi)。各個(gè)修補(bǔ)客戶端140可包含不可重設(shè)之計(jì)數(shù)器,其存儲(chǔ)最近收到 之修補(bǔ)的序號(hào)以避免攻擊重演。這使得可防止施加有已知安全漏洞的 較舊修補(bǔ)。為此目的,該等修補(bǔ)客戶端140例如可核對(duì)和修補(bǔ)一起收 到的時(shí)間戳記與廣播時(shí)間(radio-receivedtime)。各個(gè)修補(bǔ)可包含一些修補(bǔ)記錄。為了防止利用溢位(overflow)的攻 擊,可用軟件限制修補(bǔ)記錄的數(shù)目及大小。可不激活該等修補(bǔ)記錄而 只完成修補(bǔ)。因此,不必計(jì)算單一修補(bǔ)記錄的核對(duì)和。根據(jù)本實(shí)施例,12對(duì)密鑰用來(lái)簽名該等修補(bǔ)。各個(gè)修補(bǔ)可包含3 個(gè)簽名,各個(gè)簽名系基于4個(gè)一組中之一個(gè)密鑰,以下會(huì)有更詳細(xì)的 說(shuō)明。以下的原理會(huì)在第2與3圖中圖解說(shuō)明。圖2圖標(biāo)一組由修補(bǔ)服務(wù)器100產(chǎn)生及管理的私有密鑰200至 255。第一私有密鑰群組260可包含4個(gè)私有密鑰200至215。同樣地, 第二私有密鑰群組270可包含另外4個(gè)私有密鑰220至235,以及第三 私有密鑰群組280可包含另外4個(gè)私有密鑰240至255。第一、第二及 第三密鑰產(chǎn)生平臺(tái)110、 120、 130可分別產(chǎn)生及處理第一、第二及第 三私有密鑰群組260、 270、 280。根據(jù)一實(shí)施例,3個(gè)私有密鑰群組260、 270、 280可具有不同的信任等級(jí)。在密鑰產(chǎn)生平臺(tái)110、 120、 130中,HSM可用來(lái)防止私有密鑰200 至255的非法取出。替換地,可使用例如基于HSM和Knoppix/OpenSSL 的"混合式密鑰"以提供安全存儲(chǔ)和完全信任的優(yōu)點(diǎn)。此外,這可考慮 到控制密鑰產(chǎn)生以及回收密鑰而不需另一 HSM裝置的情形。可將密鑰 200至255的存取權(quán)拆開分給非合作群組(non-cooperating group)。此 外,可利用秘密分享(若為HSM,是"5個(gè)操作員卡中之3個(gè)")的原理。
可將對(duì)應(yīng)的公共密鑰存儲(chǔ)于修補(bǔ)客戶端140的矩陣150內(nèi),圖3圖標(biāo)更多細(xì)節(jié)。第一公共密鑰群組360可包含4個(gè)公共密鑰300至315,彼等各自 對(duì)應(yīng)至第一私有密鑰群組260的私有密鑰200至215。該第一公共密鑰 群組360可已由第一密鑰產(chǎn)生平臺(tái)110產(chǎn)生且在制造修補(bǔ)客戶端140 期間輸入到修補(bǔ)客戶端140內(nèi)??梢延傻诙荑€產(chǎn)生平臺(tái)120產(chǎn)生且 由廠商輸入到修補(bǔ)客戶端140的第二公共密鑰群組370可包含4個(gè)與 第二私有密鑰群組270之私有密鑰相對(duì)應(yīng)的公共密鑰320至335。最后, 第三公共密鑰群組380可由4個(gè)公共密鑰340至355組成,彼等與第 三私有密鑰群組280的4個(gè)私有密鑰240至255相對(duì)應(yīng)。該第三公共 密鑰群組380可已由第三密鑰產(chǎn)生平臺(tái)130產(chǎn)生且在出售前存儲(chǔ)于修 補(bǔ)客戶端140內(nèi)。可以標(biāo)準(zhǔn)化格式產(chǎn)生私有密鑰200至255。這可提供用于密鑰備份 及災(zāi)難復(fù)原的情形。此外,密鑰的產(chǎn)生可不用依賴任何一個(gè)安全供貨 商(security provider)。在應(yīng)用RSA加密的實(shí)施例中,經(jīng)由模數(shù)(亦即, 秘密質(zhì)數(shù)的pgq乘積)與公開指數(shù)(public exponent),公共密鑰300至 355可當(dāng)作C標(biāo)頭直接處理。該等簽名可以PKCSW(公共密鑰密碼系 統(tǒng)標(biāo)準(zhǔn)釘)格式產(chǎn)生,RSA的CryptoCME與BSAFE鏈接庫(kù)以及與HSM 裝置協(xié)作的OpenSSL有支持此格式。在一實(shí)施例中,公共密鑰300至355可為1024個(gè)位長(zhǎng)。不過(guò),在 其它實(shí)施例中,可用其它的密鑰長(zhǎng)度。例如,可使用512位的RSA或 DSA(數(shù)字簽名算法)密鑰以節(jié)省存儲(chǔ)器以及簽名核對(duì)的計(jì)算時(shí)間。與 KEK密鑰160相反,公共密鑰300至355可不必隱藏于修補(bǔ)客戶端140 內(nèi)。根據(jù)本實(shí)施例,KEK密鑰160為用于所有修補(bǔ)客戶端140的主密 鑰且有128個(gè)位的位長(zhǎng)度。例如,KEK密鑰160可為128位的AES密 鑰。替換地,128位的雙魚密鑰或256位的AES密鑰或任何其它適當(dāng) 的密鑰可用來(lái)作為KEK密鑰160。應(yīng)注意,使用12對(duì)密鑰做出修補(bǔ)的簽名只是一特殊的實(shí)施例。替 換地,可使用較少或較多的密鑰群組(修補(bǔ)服務(wù)器100則各自包含較少 或較多的密鑰產(chǎn)生平臺(tái))且各個(gè)公共密鑰/私有密鑰群組可包含比4個(gè)少 或多的公共密鑰/私有密鑰。此外,矩陣中密鑰的排列系經(jīng)選定而僅供
圖解說(shuō)明。可使用各種其它用于存儲(chǔ)公共密鑰及私有密鑰的形式。具 體言之,可用3個(gè)密鑰產(chǎn)生平臺(tái)110、 120、 130分開存儲(chǔ)及處理3個(gè)私有密鑰群組260、 270、 280?;诎踩碛桑踔量煞珠_存儲(chǔ)各個(gè)私 有密鑰群組260、 270、 280的個(gè)別私有密鑰200至255。請(qǐng)參考第4至8、 11、 12及14圖,以下根據(jù)第一實(shí)施例描述修補(bǔ) 服務(wù)器100的操作。在此實(shí)施例中,該等修補(bǔ)客戶端140在讀取整個(gè) 修補(bǔ)后能夠驗(yàn)證由修補(bǔ)服務(wù)器100與修補(bǔ)一起收到的簽名。圖4根據(jù)該實(shí)施例圖標(biāo)修補(bǔ)服務(wù)器100的整體操作。在歩驟400 中,可進(jìn)行哈希計(jì)算鏈接(hash chain)。該哈希計(jì)算鏈接400可包含4 個(gè)步驟,如圖5所示。首先,在步驟510中,藉由哈希計(jì)算修補(bǔ)而計(jì)算出基本哈希計(jì)算 總合H。隨后,在步驟520中,可藉由哈希計(jì)算該基本哈希計(jì)算總合H 與一數(shù)值為O之字節(jié)的串接(HI'O')而計(jì)算出第一哈希計(jì)算總合H"因此, "卩'系指串接而'O'系數(shù)值為0的字節(jié))。然后,在步驟530中,藉由哈 希計(jì)算步驟520計(jì)算出之第一哈希計(jì)算總合a與一數(shù)值為1之字節(jié)'l' 的串接(H,I'1')而計(jì)算出第二哈希計(jì)算總合H2。最后,藉由哈希計(jì)算步 驟530所得之第二哈希計(jì)算總合H2與一數(shù)值為2之字節(jié)'2'的串接 (H2l'2')而計(jì)算出第三哈希計(jì)算總合Hs(步驟540)。應(yīng)注意,根據(jù)本實(shí)施例,各個(gè)修補(bǔ)包含3個(gè)在步驟420基于該3 個(gè)哈希計(jì)算總合Hp H2、及H3而計(jì)算出的簽名(請(qǐng)參考以下說(shuō)明)。在 其它實(shí)施例中,該等修補(bǔ)可包含較少或較多的簽名。因此,在這些實(shí) 施例中,哈希計(jì)算鏈接400會(huì)較短或較長(zhǎng)。請(qǐng)回到圖4,此時(shí)在步驟410中可選定私有密鑰以便在歩驟420 產(chǎn)生簽名。根據(jù)該實(shí)施例,私有密鑰選擇410的個(gè)別步驟系圖標(biāo)于圖6。在步驟610中,可由第一私有密鑰群組260選出第一私有密鑰。 然后,在步驟620中,從第二私有密鑰群組270選出第二私有密鑰。 同樣地,在步驟630中,從第三私有密鑰群組280選出第三私有密鑰。應(yīng)了解,圖中步驟的順序系經(jīng)選定僅供圖解說(shuō)明用。當(dāng)然,可以 任何其它的次序選定該等私有密鑰。替換地,在步驟400進(jìn)行哈希計(jì) 算鏈接之前可選定一些或所有的私有密鑰。此外,在使用私有密鑰群 組260至280數(shù)目不相同的實(shí)施例中,私有密鑰選擇410可因此包含 比圖6中3個(gè)歩驟600至630少或多的選擇步驟。在私有密鑰選擇410之后,在步驟420中可產(chǎn)生3個(gè)數(shù)字簽名D, 至D3,隨后會(huì)將彼等加至待送到修補(bǔ)客戶端140的修補(bǔ)以便能檢查真 實(shí)性與完整性。圖7系圖標(biāo)更多私有密鑰選擇410的細(xì)節(jié)。在步驟710中,使用在步驟610選出的第一私有密鑰,藉由簽名 在歩驟520中計(jì)算出之第一哈希計(jì)算總合f^而可計(jì)算出第一數(shù)字簽名 D"然后,在歩驟720中,使用在歩驟620選出之第二私有密鑰群組 270,藉由簽名在步驟530所得之第二哈希計(jì)算總合H2而可計(jì)算出第 二數(shù)字簽名D2。最后,在歩驟730中,使用在步驟630選出之第三私 有密鑰,藉由簽名在步驟540計(jì)算出的第三哈希計(jì)算總合H3而可計(jì)算 出第三數(shù)字簽名D3。因此,本實(shí)施例所用的3個(gè)簽名各自基于每一種 的一個(gè)密鑰。因此,簽名哈希計(jì)算總合H,至H3的各個(gè)步驟可包含另一哈希計(jì) 算運(yùn)算接著使用各自選定的私有密鑰加密(或解密,這取決于所用的簽 名算法)。替換地,藉由用對(duì)應(yīng)選定之私有密鑰簡(jiǎn)單地加密或解密各個(gè) 哈希計(jì)算總合K至H3而可計(jì)算出數(shù)字簽名D至D3。其它的算法可用 來(lái)產(chǎn)生數(shù)字簽名D,至D3系取決于密鑰產(chǎn)生平臺(tái)110至130用于哪一種 實(shí)作。此外,圖7圖標(biāo)之步驟的特定順序僅供圖解說(shuō)明用。在其它實(shí)施 例中,可以任何次序產(chǎn)生數(shù)字簽名D,至D3或簽名產(chǎn)生420的步驟可 與哈希計(jì)算鏈接400及/或私有密鑰選擇410的步驟交錯(cuò)。例如,在剛 計(jì)算出第一哈希計(jì)算總合H"步驟520)以及選定第一私有密鑰(步驟 610)后,就可進(jìn)行計(jì)算第一數(shù)字簽名D,的步驟710。第二數(shù)字簽名D2 的計(jì)算720可以類似的方式進(jìn)行。此外,對(duì)于將較多或較少數(shù)位簽名 加至修補(bǔ)的實(shí)施例,簽名產(chǎn)生420可因此包含較多或較少的計(jì)算歩驟。在步驟420中產(chǎn)生簽名后,在步驟430可判斷該等簽名中之一個(gè) 是否應(yīng)為虛擬簽名(dummy signature)。使用虛擬簽名使得安全地跳過(guò)被 破解(compromised)或遺失的密鑰成為可能。例如,如果在步驟610 至630中之一個(gè)步驟中,選出的私有密鑰已知被破解時(shí),在步驟430 可判斷對(duì)應(yīng)的數(shù)字簽名應(yīng)為虛擬簽名。對(duì)于此目的,修補(bǔ)服務(wù)器100 可以適當(dāng)?shù)男问酱鎯?chǔ)哪些私有密鑰200至255己被偷或遺失,亦即,
不會(huì)再使用的密鑰。例如,藉由維護(hù)對(duì)應(yīng)査找表可做成此功能。因此, 根據(jù)本實(shí)施例,可安全地跳過(guò)遺失或被偷的密鑰。而不需作廢或更換 這些密鑰。如果要使用虛擬簽名,在歩驟440中可用虛擬簽名取代各由步驟420產(chǎn)生的數(shù)字簽名。替換地,在簽名產(chǎn)生之前,可進(jìn)行是否簽名應(yīng)為 虛擬簽名的判斷430,且如果簽名應(yīng)為虛擬簽名,可跳過(guò)對(duì)應(yīng)的簽名產(chǎn) 生步驟710、 720、 730,而各個(gè)簽名直接使用虛擬簽名。在歩驟450中,可產(chǎn)生密鑰指針。該密鑰指針可記錄在步驟410 從3個(gè)私有密鑰群組260、 270、 280之中選出的密鑰。圖12中圖標(biāo)該 密鑰指針的示范構(gòu)成元素。根據(jù)本實(shí)施例,該密鑰指針為8位整數(shù)值。前兩個(gè)位可表示第一 密鑰指針1210,其指定第一私有密鑰群組260的4個(gè)私有密鑰200至 215中之哪一個(gè)己被選定用來(lái)產(chǎn)生第一數(shù)字簽名D,。例如,如果前兩 個(gè)位的數(shù)值為3,這表示在步驟610中已選定第三私有密鑰210且用于 步驟710。下兩個(gè)位可建立第二密鑰指針1220,其表示第二私有密鑰 群組270的4個(gè)私有密鑰220至235中之哪一個(gè)已被選定(步驟620)用 來(lái)產(chǎn)生第二數(shù)字簽名(步驟720)。同樣地,第三密鑰指針1230可用第 五及第六位指定已在步驟630選定4個(gè)私有密鑰240至255之中的哪 一個(gè)是用來(lái)在步驟730產(chǎn)生第三數(shù)字簽名。在使用較多或較少私有密鑰群組的實(shí)施例中,密鑰指針可因此包 含較多或較少的個(gè)別密鑰指針1210至1230。此外,有些實(shí)施例是每一 私有密鑰群組260、 270、 280包含比4個(gè)多或少的私有密鑰。因此, 各個(gè)第一至第三密鑰指針1210至1230可較長(zhǎng)或較短。此外,個(gè)別密 鑰指針1210至1230的順序可不相同。密鑰指針可進(jìn)一步指定是否已使用虛擬簽名,若是的話,是簽名 中哪一個(gè)為虛擬簽名。為此目的,圖12中密鑰指針用最后兩個(gè)位表示 虛擬指針1240。根據(jù)本實(shí)施例,該虛擬指針1240指定所有3個(gè)簽名 D,至D3中,如果兩個(gè)位的數(shù)值為O時(shí),則該等簽名為有效的簽名。]、 2或3的數(shù)值可分別表示第一、第二或第三簽名為虛擬簽名。替換地, 虛擬指針當(dāng)然可分配不同的數(shù)值?!谄渌鼘?shí)施例中,可使用比3個(gè)多或少的簽名簽名修補(bǔ)。虛擬指
針1240因此可比2個(gè)位長(zhǎng)或短。此外,1個(gè)以上的簽名可為虛擬簽名。在該等實(shí)施例中,虛擬指針1240也可比2個(gè)位長(zhǎng)。 一旦產(chǎn)生密鑰指針 后,在步驟460中可組合修補(bǔ)塊(patch block)。根據(jù)本實(shí)施例,該修補(bǔ) 塊具有圖標(biāo)于圖11的格式。如圖11所示,該修補(bǔ)塊1100可以在歩驟710產(chǎn)生第一數(shù)字簽名 1110開始,接著分別在步驟720與730中產(chǎn)生第二數(shù)字簽名1120與第 三數(shù)字簽名1130。在簽名1]]0至1130之后,該修補(bǔ)塊1100可包含由 步驟450得到的密鑰指針1140。最后,修補(bǔ)塊1140可包含修補(bǔ)1150 本身。圖標(biāo)于圖11之修補(bǔ)塊1100的特定構(gòu)成元素不應(yīng)被視為是要限 定本發(fā)明。在其它實(shí)施例中,可以不同的的方式配置修補(bǔ)塊1100。在修補(bǔ)塊組合460之后,在步驟470可進(jìn)行KEK加密。圖8中系 圖標(biāo)根據(jù)本實(shí)施例之KEK加密470的更多細(xì)節(jié)。在步驟810中,可產(chǎn)生隨機(jī)對(duì)話密鑰,以下也被稱作對(duì)稱密鑰。 通行短語(yǔ)的拆開部份可保全對(duì)話密鑰的產(chǎn)生,例如用nCipher HSM裝 置的操作員卡上的共享秘密。在其它實(shí)施例中,在修補(bǔ)傳輸處理期間 不產(chǎn)生該對(duì)稱密鑰,反而是先行產(chǎn)生且存儲(chǔ)于修補(bǔ)服務(wù)器100。在該等 實(shí)施例中,可將對(duì)稱密鑰隱藏于硬件內(nèi)。這可用各種方式實(shí)現(xiàn)。例如, 由于會(huì)有很多人檢査這個(gè)代碼,由數(shù)個(gè)分散來(lái)源產(chǎn)生密鑰可用于此目 的,使得無(wú)人知道密鑰如何產(chǎn)生的所有細(xì)節(jié),但在必要時(shí)可重建所有 的信息。替換地,可將對(duì)稱密鑰隱藏于某些HSM內(nèi)。此外,該等實(shí)施 例的修補(bǔ)服務(wù)器100可包含一些硬方法(hard method)以便在遺失時(shí) 重建對(duì)稱密鑰。步驟820中可使用隨機(jī)對(duì)話密鑰加密在步驟460組合的修補(bǔ)塊 1100。這可用AES加密來(lái)完成。最后,在步驟830中使用KEK密鑰 160加密該隨機(jī)對(duì)話密鑰。在其它實(shí)施例中,可以相反順序進(jìn)行步驟 820與830。在KEK加密470期間,可以輸出反饋模式(OFB)加密所有的信息 (除了基于一些理由需呈明文的標(biāo)頭部份以外)。這使得修補(bǔ)隨后在修補(bǔ) 客戶端140可被譯碼成串流(stream)。不需填補(bǔ)(padding)且可進(jìn)行 逐筆記錄的解密而不會(huì)有任何問(wèn)題。在替代性的實(shí)施例中,串流加密 可改用加密反饋模式(CFB)。 CFB模式與明文相關(guān)且錯(cuò)誤會(huì)散布至少一
個(gè)修補(bǔ)塊。然而,如果使用OFB模式,即使只有一個(gè)位被某一攻擊者 翻轉(zhuǎn)或添加也會(huì)有與被毀修補(bǔ)塊一樣的致命效果,而且在這兩種情況下在修補(bǔ)客戶端140的數(shù)字簽名驗(yàn)證會(huì)失敗。所以,使用OFB模式能增強(qiáng)安全性。由于在進(jìn)行KEK加密步驟470之前已使數(shù)字簽名Di至D3內(nèi)含于 修補(bǔ)塊1100(步驟460),也根據(jù)本實(shí)施例用加密保護(hù)該等數(shù)字簽名。這 可降低攻擊者找到安全漏洞的風(fēng)險(xiǎn)。為了致使對(duì)稱式KEK加密470更加安全,OFB模式中使用的初始 化向量(initializationvector)可經(jīng)選定為唯一,亦即,使彼等在所有修 補(bǔ)中決不重復(fù)。這可藉由例如在初始化向量的固定部份中包含序號(hào)達(dá) 成。替換地,可使用用于此目的的時(shí)間戳記?,F(xiàn)在請(qǐng)參考圖4,在步驟480中可組合傳輸塊(transmission block)。本實(shí)施例之傳輸塊的構(gòu)成元素系圖標(biāo)于圖14。具體言之,傳輸塊1400可分別由步驟830、 820所得之加密對(duì)話 密鑰1410接著加密修補(bǔ)1420而構(gòu)成。根據(jù)本實(shí)施例,加密對(duì)話密鑰 為128個(gè)位長(zhǎng)。替換地,在其它實(shí)施例中也可使用其它長(zhǎng)度的對(duì)話密 鑰。 '最后,在歩驟490中,可將傳輸塊發(fā)送到修補(bǔ)客戶端140。如前述,在簽名期間的硬件失敗可能會(huì)泄露私有密鑰。為了避免 此風(fēng)險(xiǎn),在送到修補(bǔ)客戶端140(步驟490)之前,可核對(duì)步驟420中產(chǎn) 生的簽名。因此,可用不同的程序核對(duì)各個(gè)簽名Di至D3。例如,可由 廠商驗(yàn)證(尚未出售)修補(bǔ)客戶端140在開機(jī)時(shí)是否有包含待核對(duì)之簽 名的實(shí)際修補(bǔ)。根據(jù)上述實(shí)施例,修補(bǔ)客戶端140中數(shù)字簽名D!至Ds的驗(yàn)證有 可能是只在讀取整個(gè)修補(bǔ)1150之后。不過(guò),在其它的實(shí)施例中,可能 希望在譯碼每筆修補(bǔ)后立即檢査真實(shí)性與完整性。這在第二實(shí)施例中 是有可能的,而現(xiàn)在將參考第9、 10及13圖而予以說(shuō)明。在此實(shí)施例中,修補(bǔ)服務(wù)器100的整體操作可與圖4中的操作相 對(duì)應(yīng),且私有密鑰選擇410、虛擬處理430與440、密鑰指針產(chǎn)生450、 KEK加密470、以及傳輸塊的組合與傳輸480與490可與上述的相同。 不過(guò),可使用經(jīng)修改之哈希計(jì)算鏈接400與簽名產(chǎn)生420。此外,修補(bǔ)
塊組合460可能產(chǎn)生構(gòu)成元素與上述不同的修補(bǔ)塊。首先與本實(shí)施例有關(guān)的修補(bǔ)塊及其構(gòu)成系圖標(biāo)于圖13。與第一實(shí)施例的修補(bǔ)塊1100相似,修補(bǔ)塊1300可由3個(gè)數(shù)字簽 名(D,至D3)1310、 1320、 1330開始,接著密鑰指針1340。密鑰指針 1340可對(duì)應(yīng)至以上參考第11、 12圖所描述的密鑰指針1140。不過(guò), 數(shù)字簽名1310、 1320、 1330的計(jì)算方式可不同于第一實(shí)施例的數(shù)字簽 名,以下將參考圖10而加以解釋。此外,修補(bǔ)的每筆記錄(R,至Rn)1355、 1365、 1375、 1385的前面為密碼哈希計(jì)算總合(H,至HJ1350、 1360、 1370、 1380。根據(jù)本實(shí)施例,哈希計(jì)算總合1350、 1360、 1370、 1380的計(jì)算是 在圖4的歩驟400中進(jìn)行且在圖9中圖標(biāo)更多細(xì)節(jié)。首先,在步驟910中,藉由哈希計(jì)算待傳輸修補(bǔ)之第n筆記錄Rn 1385與由0值位構(gòu)成之哈希計(jì)算總合值"Q"的串接(Rn防可計(jì)算出哈希 計(jì)算總合Hn 1380。在其它的實(shí)施例,在歩驟910中只有將記錄Rn加 以哈希計(jì)算。然后,在歩驟920中,藉由哈希計(jì)算第(n-l)筆記錄Rn_] 1375 與前一個(gè)計(jì)算出之哈希計(jì)算總合Hn 1380的串接(R^IHn)計(jì)算出哈希計(jì) 算總合H^ 1370。接著,在步驟930至940中以類似的方式計(jì)算出哈 希計(jì)算總合Hn-2至H^在其它實(shí)施例中,可跳過(guò)最后一個(gè)步驟940, 且在隨后的歩驟中第一記錄&用來(lái)取代由歩驟940所得之哈希計(jì)算總 合H,。不過(guò),圖標(biāo)于圖9之實(shí)施例的編程(programming)比較簡(jiǎn)單和強(qiáng) 健。根據(jù)本實(shí)施例,經(jīng)修改之簽名產(chǎn)生420系圖標(biāo)于圖10。 在步驟1010中,藉由使用在圖6步驟610選出的第一私有密鑰簽 名(亦即,哈希計(jì)算及譯碼/加密或簡(jiǎn)單譯碼/加密,如在描述圖7時(shí)所 述)第一哈希計(jì)算總合H, 1350而可計(jì)算出第一數(shù)字簽名D, 1310。在步 驟1020中,藉由使用在步驟620選定的第二私有密鑰簽名第一哈希計(jì) 算總合Ht 1350而可因此計(jì)算出第二數(shù)字簽名D2 1320。最后,在步驟 1030中,藉由使用在步驟630所得之第三私有密鑰簽名第一哈希計(jì)算 總合^ 1350而可產(chǎn)生第三數(shù)字簽名D3 1330。圖標(biāo)步驟之順序不應(yīng)被視為要限定本發(fā)明。例如,可以不同的次 序計(jì)算數(shù)字簽名D,至D3。此外,計(jì)算步驟1010至1030可與圖標(biāo)于圖 6之私有密鑰選擇及/或圖標(biāo)于圖9之哈希計(jì)算鏈接交錯(cuò)。例如,在剛 計(jì)算出第一哈希計(jì)算總合H,以及選定對(duì)應(yīng)的私有密鑰后,就可計(jì)算出 數(shù)字簽名D,至D;3。一旦修補(bǔ)服務(wù)器100已將包含加密修補(bǔ)的傳輸塊1400送到修補(bǔ)客 戶端140后,可使用公共密鑰矩陣150與KEK密鑰160而將該修補(bǔ)安 全地安裝于修補(bǔ)客戶端140。此吋參考第15至17圖,其系根據(jù)一實(shí)施 例描述由修補(bǔ)客戶端140完成的安全修補(bǔ)安裝過(guò)程。于只在解密整個(gè) 修補(bǔ)之后驗(yàn)證數(shù)字簽名D,至D3 1110、 1120、 1130的實(shí)施例中,可使 用此修補(bǔ)安裝過(guò)程。首先請(qǐng)參考圖15,在歩驟1500中修補(bǔ)客戶端140可收到傳輸塊 1400。然后,在歩驟1510中可使用KEK密鑰160解密經(jīng)加密之隨機(jī) 對(duì)話密鑰1410。在歩驟1520中,在AES算法下使用在步驟1510之前 得到的隨機(jī)對(duì)話密鑰可解密經(jīng)加密之修補(bǔ)塊1420。使用以上在描述圖 8時(shí)所述之OFB模式可達(dá)成步驟1510與1520的解密。在步驟1530中,可選定待用來(lái)驗(yàn)證簽名的公共密鑰。更多細(xì)節(jié)會(huì) 圖標(biāo)于圖16。首先,在步驟1.610中,使用在步驟1520之前被解密的第一密鑰 指針1210從第一公共密鑰群組360可選出第一公共密鑰。具體言之, 可選定在公共密鑰300至315之中的密鑰(第一密鑰指針1210指向該 密鑰)作為第一公共密鑰。經(jīng)選定的第一公共密鑰可與在步驟610被 選定修補(bǔ)服務(wù)器100的第一私有密鑰相對(duì)應(yīng)(請(qǐng)參考圖6)。因此,步驟 1620與1630可包含各自使用第二與第三密鑰指針1220、 1230,各 自從第二與第三公共密鑰群組370、 380選出第二與第三公共密鑰。第 二與第三公共密鑰可分別與各自在步驟620與630被修補(bǔ)服務(wù)器100 選定的第二與第三私有密鑰相對(duì)應(yīng)。當(dāng)然,可用任何一種次序進(jìn)行公共密鑰選定步驟1610至1630。此 外,在使用比3個(gè)多或少的公共密鑰群組360至380(且因此有比3個(gè) 多或少的私有密鑰群組260至280)的實(shí)施例中,公共密鑰選擇1530可 因此包含較多或較少的選擇步驟。在選定公共密鑰后,在步驟1540可驗(yàn)證簽名1110至1130。圖17 系根據(jù)本實(shí)施例圖標(biāo)簽名驗(yàn)證的子步驟(substep)。
首先,在步驟700中進(jìn)行哈希計(jì)算鏈接。根據(jù)該實(shí)施例,由修補(bǔ)客戶端140進(jìn)行的哈希計(jì)算鏈接700系與由以上在說(shuō)明圖5時(shí)所描述 之修補(bǔ)服務(wù)器100形成的哈希計(jì)算鏈接相對(duì)應(yīng)。然后,在步驟710中,各自從步驟520、 530及540得到的哈希計(jì) 算總合H1、 H2及H3可再度加以哈希計(jì)算。在由修補(bǔ)服務(wù)器100于歩 驟710至730進(jìn)行的簽名歩驟不包含進(jìn)一步的哈希計(jì)算而只有解密/加 密的實(shí)施例中,步驟1710可跳過(guò)。在步驟1710之后,在步驟1520解密經(jīng)加密之修補(bǔ)塊1420時(shí)所得 到的數(shù)字簽名(D,-D3)1110、 1120、 1130可分別用第一、第二及第三公 共密鑰解密。然后,在步驟1750至]770中,由步驟1720至1740得到的經(jīng)解 密之?dāng)?shù)字簽名可與在歩驟1710得到經(jīng)再度哈希計(jì)算之哈希計(jì)算總合 H,至H3相比較。在跳過(guò)歩驟1710的實(shí)施例中,經(jīng)解密之?dāng)?shù)字簽名可 各自直接與哈希計(jì)算總合H)至H3相比較。在步驟1780中,可判斷數(shù)字簽名(DrD3)1110、 1120、 1130之中是 否有虛擬簽名。這可藉由檢查密鑰指針1140的虛擬指針1240達(dá)成。若有的話,在步驟1790中,可決定在其余的安全修補(bǔ)安裝過(guò)程期 間忽略以虛擬指針1240鑒定為虛擬簽名的數(shù)字簽名。在其它實(shí)施例中, 如上述,會(huì)有l(wèi)個(gè)以上的數(shù)字簽名可能為虛擬簽名。在該等實(shí)施例中, 在其余的修補(bǔ)安裝過(guò)程期間可忽略所有的虛擬簽名。如果步驟1780顯示虛擬指針1240指定所有的數(shù)字簽名1110至 1130均為有效的簽名,亦即,沒有虛擬簽名,則不會(huì)進(jìn)行步驟1790且 在安全修補(bǔ)安裝的其余步驟期間會(huì)將所有的數(shù)字簽名1110、 1120、 1130 納入考慮。一旦在步驟1540驗(yàn)證簽名后,在步驟1550中可判斷所有的數(shù)字 簽名1110、 1120、 1130是否正常。根據(jù)本實(shí)施例,如果比較步驟1750 至1770的結(jié)果為相等則成立。若是如此,在步驟1560中可安裝修補(bǔ) 于修補(bǔ)客戶端140內(nèi)。步驟1560可包含向修補(bǔ)客戶端140的使用者 提供修補(bǔ)安裝成功的報(bào)告及/或因此通知修補(bǔ)服務(wù)器100。不過(guò),如果步驟1750至1770中之至少一個(gè)顯示經(jīng)解密之?dāng)?shù)字簽 名與對(duì)應(yīng)哈希計(jì)算總合(已被哈希計(jì)算)不相同時(shí),在歩驟1570中可決 定不將所收到的修補(bǔ)安裝于修補(bǔ)客戶端140內(nèi)。這可包含,例如,向 使用者提供錯(cuò)誤訊息及/或通知修補(bǔ)服務(wù)器100修補(bǔ)安裝失敗。應(yīng)了解,第15至17圖中步驟的特定順序系經(jīng)選定僅供圖解說(shuō)明用。在其它實(shí)施例中,可以不同的次序排列個(gè)別的子步驟,例如,解密步驟1720至1740可與比較步驟1750至1770相互交錯(cuò)。此外,可 將哈希計(jì)算步驟1710分為3個(gè)個(gè)別的子步驟,彼等也可與比較步驟 1720至1770的解密相互交錯(cuò)。此外,哈希計(jì)算鏈接1700的個(gè)別歩驟 510至540可分散于哈希計(jì)算解密與比較步驟1710至1770之中。此外,在使用較多或較少個(gè)私有密鑰及公共密鑰群組的實(shí)施例中, 簽名驗(yàn)證1540可因此包含較多或較少的哈希計(jì)算、解密及比較步驟 1710至1770。此外,在第一解密步驟1720之前或甚至在簽名驗(yàn)證1540開始時(shí) 或公共密鑰選擇1530之前,可進(jìn)行步驟1780與1790的虛擬處理。如 果在該等實(shí)施例的步驟1780中判斷特定的簽名1110、 1120、 1130為虛 擬簽名,則公共密鑰選擇1530與簽名驗(yàn)證1700至1770的對(duì)應(yīng)步驟可 跳過(guò)。例如,如果第三數(shù)字簽名D3為虛擬簽名,則不需計(jì)算步驟540 的第三哈希計(jì)算總合H"選出步驟1630的第三公共密鑰、哈希計(jì)算步 驟1710的第三哈希計(jì)算總合H"解密步驟1740的第三數(shù)字簽名、及/ 或進(jìn)行步驟1770的比較。如上述,本實(shí)施例的修補(bǔ)安裝計(jì)畫使得只在整個(gè)加密修補(bǔ)塊1420 已被解密之后才能驗(yàn)證簽名。不過(guò),有的實(shí)施例是想要在修補(bǔ)有已被 解密的記錄后就立即驗(yàn)證修補(bǔ)是否可安裝。以上在說(shuō)明第9、 10、 13 圖時(shí)己描述該實(shí)施例中之修補(bǔ)服務(wù)器100的操作。此時(shí),參考第18至 20圖描述待由修補(bǔ)客戶端140完成的對(duì)應(yīng)安全修補(bǔ)安裝。在圖18的歩驟1800中,在修補(bǔ)客戶端140可收到傳輸塊1400。 在步驟1810中,使用KEK密鑰160解密內(nèi)含于該傳輸塊1400的加密 隨機(jī)對(duì)話密鑰1410。此步驟可對(duì)應(yīng)至圖15的步驟1510。隨后,在歩驟1820中,在步驟1810得到的隨機(jī)對(duì)話密鑰可用來(lái) 解密內(nèi)含于加密修補(bǔ)塊1420的信息。步驟1820完成解密的方式可與 步驟1520完成解密的方式相同。不過(guò),根據(jù)本實(shí)施例,在步驟1820 中可以只將經(jīng)加密之簽名和經(jīng)加密之密鑰指針解密。隨后在歩驟1840
與1850中可將經(jīng)加密之修補(bǔ)塊1420的其余部份以逐筆記錄的方式解在歩驟1830中,公共密鑰的選定可基于在步驟1820取得的密鑰 指針1340。這可對(duì)應(yīng)至以上在說(shuō)明圖15時(shí)所描述的公共密鑰選擇 1530。然后,在步驟1840中,可驗(yàn)證在步驟1820得到的數(shù)字簽名(D, 至D3)1310、 1320、 1330。圖19中有詳細(xì)圖標(biāo)。首先,在步驟1900中,傳輸塊1400所收到之修補(bǔ)的經(jīng)加密之第 一哈希計(jì)算總合以及經(jīng)加密之第一記錄可用步驟1810得到的隨機(jī)對(duì)話 密鑰解密。達(dá)成的方式可與以上在解釋圖15時(shí)所描述之步驟1520的 解密相同。隨后,在步驟1910中可哈希計(jì)算在步驟1900回收的第一 哈希計(jì)算總合H, 1350。在其它實(shí)施例中,特別是,在步驟1010至1030 由修補(bǔ)服務(wù)器100完成簽名的步驟不包含任何哈希計(jì)算的實(shí)施例中, 可跳過(guò)步驟1910。隨后,在步驟1920至1940中,使用在步驟1830中選出的第一至 第三公共密鑰可分別將由步驟1820得到的數(shù)字簽名(D,至D3)1310至 1330解密。然后,在歩驟1950至1970中,步驟1920至1940的每個(gè) 結(jié)果可分別與步驟1910的結(jié)果比較。反之,在跳過(guò)步驟1910的實(shí)施 例中,由步驟1920至1940得到的經(jīng)解密之簽名可與從步驟1900得到 的哈希計(jì)算總合H,相比較。最后,在步驟1980與1990中可進(jìn)行虛擬簽名的處理。這可對(duì)應(yīng) 至以上在說(shuō)明圖17步驟1780與1790所描述之虛擬簽名的處理。此外,第18與19圖中步驟的特定順序?yàn)閮H供圖解說(shuō)明用且不應(yīng) 被視為要限定本發(fā)明。在其它實(shí)施例中,各個(gè)步驟的次序可不相同, 例如交錯(cuò)的順序。此外,例如,在簽名驗(yàn)證1840開始時(shí)或在公共密鑰 選擇1830之前,可進(jìn)行歩驟1980與1990的虛擬簽名處理。在該等實(shí) 施例中,可跳過(guò)以下所有的歩驟與被虛擬指針1240鑒定為虛擬簽名 之?dāng)?shù)字簽名有關(guān)的公共密鑰選擇1830與簽名驗(yàn)證]900至1970?,F(xiàn)在請(qǐng)參考圖18,在步驟1850中,可以逐筆記錄的方式解密經(jīng)加 密之修補(bǔ)塊1420的其余部份。根據(jù)本實(shí)施例逐筆記錄的修補(bǔ)解密計(jì)畫 系圖標(biāo)于圖20。因此,首先在步驟2000中可檢查所有的簽名D,至D3是否正常。
步驟2000可包含判斷所有的比較步驟1950至1970的結(jié)果是否相等。如上述,對(duì)于此判斷,最后幾個(gè)虛擬簽名可不納入考慮。如果判斷為否,亦即,經(jīng)解密之?dāng)?shù)字簽名Dt至D3中之至少一個(gè) 不同于(經(jīng)哈希計(jì)算之)哈希計(jì)算總合H,,在歩驟2050中可決定不安裝 本修補(bǔ)。這可對(duì)應(yīng)至圖15的步驟1570。不過(guò),如果所有的簽名都正常,內(nèi)含于加密修補(bǔ)塊1420的第二加 密哈希計(jì)算總合與第二加密修補(bǔ)記錄可用在步驟1810得到的隨機(jī)對(duì)話 密鑰解密。步驟2005完成解密的方式可與上述步驟1820完成解密的 方式相同。然后,在步驟2010中,可哈希計(jì)算第一記錄R, 1355(已在 步驟1900得到)與在步驟2005得到之第二哈希計(jì)算總合H2 1360的串 接(Ri陶。結(jié)果可與先前得到的哈希計(jì)算總合Hi 1350(在解密步驟1900)相比 較。如果歩驟2020判定這兩個(gè)哈希計(jì)算總合不相等,則修補(bǔ)解密計(jì)畫 可前進(jìn)到步驟2050而決定不安裝該修補(bǔ)。否則對(duì)于第三至最后一個(gè)哈 希計(jì)算總合以及加密修補(bǔ)塊1420中的記錄,可因此分別重復(fù)步驟2005 至2020。如果步驟2020的比較對(duì)于所有經(jīng)解密之哈希計(jì)算總合和記錄有正 面的解答,則在步驟2030可計(jì)算出最后一筆修補(bǔ)記錄Rn 1385與由O 位構(gòu)成之哈希計(jì)算總合數(shù)值"O"的串接(igO)。在步驟2035,此數(shù)值可 與修補(bǔ)塊1300的最后一個(gè)哈希計(jì)算總合Hn 1380相比較。如果在步驟2040判斷兩個(gè)數(shù)值為相等,則在步驟2045可安裝修 補(bǔ),且可通知使用者及/或修補(bǔ)服務(wù)器IOO修補(bǔ)安裝成功。否則,在步 驟2040決定不安裝該修補(bǔ)。根據(jù)圖標(biāo)于第18至20圖的實(shí)施例,在步驟2045中不是完全安裝 所收到的修補(bǔ)就是不安裝,即使只有一個(gè)修補(bǔ)記錄損壞。在該實(shí)施例 中,修補(bǔ)中只要有一個(gè)翻轉(zhuǎn)的位或增減的字節(jié)就足以阻止修補(bǔ)客戶端 140的激活。這可增加安全性,例如,防止以讓使用者認(rèn)為只是收到畸 形修補(bǔ)的方式修改修補(bǔ)的計(jì)算機(jī)蠕蟲。不過(guò),在其它實(shí)施例中,在不需要有此程度的安全性時(shí),修補(bǔ)的 記錄1355、 1365、 1375、 1385各自對(duì)于步驟2000、 2020或2040的解 答為正面時(shí)就可安裝。因此,對(duì)于步驟2000、 2020或2040的負(fù)面解
答在步驟2050不會(huì)導(dǎo)致忽略整個(gè)修補(bǔ)而只對(duì)記錄1355、 1365、 1375、 1385做一般性的檢查。在此類系統(tǒng)中,藉由在收到修補(bǔ)時(shí)強(qiáng)迫使用者 檢查例如MD5總合或在修補(bǔ)安裝過(guò)程中包含一些初診檢查,仍可增強(qiáng) 安全性。由于OFB模式可使錯(cuò)誤局部化,OFB加密模式只能用于修補(bǔ) 的個(gè)別記錄1355、 1365、 1375、 1385。根據(jù)所描述的實(shí)施例,安全修補(bǔ)安裝過(guò)程系由修補(bǔ)客戶端140自 動(dòng)完成且使用者對(duì)于處理不會(huì)有任何影響。此外,使用者也沒有看見 修補(bǔ)客戶端140內(nèi)部發(fā)生何事的任何可能性。不過(guò),在歩驟1570或2050 仍會(huì)提供使用者錯(cuò)誤訊息或在步驟1560或2045報(bào)告修補(bǔ)已正確安裝。此外,根據(jù)本實(shí)施例,所描述的安全功能被關(guān)掉是不可能的。這 可防止由"影子"變量報(bào)告有關(guān)取消安全密碼(security disable pin)的狀 態(tài)而引起的攻擊。在基于效能的理由關(guān)掉安全功能的實(shí)施例中,可保 證這個(gè)變量不會(huì)被任何軟件修改。這是因?yàn)樵O(shè)定該變量的軟件也會(huì)被由以上實(shí)施例的說(shuō)明顯而易見,本發(fā)明可提供用于更新軟件的方 法與系統(tǒng)且增加秘密保護(hù)和密鑰遺失的容忍度。特別是,藉由使用密 鑰產(chǎn)生平臺(tái)110、 120、 130而可顯著增加安全性。藉由組合源自不同產(chǎn)生平臺(tái)110、 120、 130的密鑰,可降低如果 用于產(chǎn)生密鑰的平臺(tái)110、 120、 130有安全漏洞所致之弱簽名密鑰的 風(fēng)險(xiǎn)。通常這種風(fēng)險(xiǎn)會(huì)在嵌入新密鑰之硬件中造成硅有變化的問(wèn)題, 因此相當(dāng)昂貴。因此,建議在不同平臺(tái)110、 120、 130上產(chǎn)生密鑰的 組合也可降低產(chǎn)品及維護(hù)成本。藉由使用位指針1140、 1340 (其系指向從矩陣150選出的密鑰) 可實(shí)現(xiàn)密鑰遺失(亦即,在無(wú)法使用密鑰的情形下)的保護(hù)。從而, 如果遺失密鑰,可避免變更硬件或使用作廢清單的需要。此外,建議從由12個(gè)密鑰構(gòu)成之矩陣選出的3個(gè)密鑰使用于3個(gè) 數(shù)字簽名D,至D3可增加在密鑰泄露/被偷的情形之下的保護(hù),從而可 供大眾使用。這使得攻擊者更加難以插入假造的修補(bǔ)。為了安排攻擊 需要盜取至少一整組的3個(gè)密鑰(可用不同的方法或?qū)嶓w保護(hù)),而這組 密鑰是由密鑰矩陣的3欄260、 270、 280形成。即使在此情況下,假 若不知的欠周詳(indiscretion),所有修補(bǔ)客戶端140之中只有約64分
之一會(huì)被假造的蠕蟲感染。對(duì)于已知的欠周詳,理論上達(dá)10個(gè)密鑰才 可被破解而不破壞安全性上述有2個(gè)位之密鑰指針1140、 1340的虛擬指針1240可容許破解一個(gè)私有密鑰群組260、 270、 280之中的所有 4個(gè)密鑰。在使用4個(gè)簽名且不容許虛擬簽名的替代實(shí)施例,機(jī)率甚至 由1/64降到1/256(在此必須泄露至少4個(gè)私有密鑰)。不過(guò),在該等實(shí) 施例中,各個(gè)私有密鑰群組必有至少一個(gè)有效密鑰可維持安全性。以上在說(shuō)明第5及9圖時(shí)所描述的哈希計(jì)算鏈接可允許包含不同 的機(jī)構(gòu)在簽名處理時(shí)無(wú)一機(jī)構(gòu)能夠知道所簽名的是否為同一個(gè)修補(bǔ)套 裝軟件。在有些情況下這可提供進(jìn)一步的安全性,同時(shí)成本不變。此外,第5及9圖的哈希計(jì)算鏈接提供重要的安全勝利。最新的 結(jié)果暗示密碼哈希計(jì)算函數(shù)(例如,MD5與SHA-O(保全哈希計(jì)算算法 O))有致命的瑕疵。不清楚SHA-1是否可破解甚至是否可以可用方式 破解。不過(guò),即使用相同的SHA-1哈希計(jì)算值可構(gòu)成有不同意義的文 字,完全不切實(shí)際的是,若由圖標(biāo)于第5及9圖的哈希計(jì)算鏈接提供, 這對(duì)2個(gè)甚至更多個(gè)的鏈接哈希計(jì)算而言是有可能的。建議的概念保證有極佳的修補(bǔ)完整性,其使用數(shù)個(gè)數(shù)字簽名D,至 D3,使用與周全密鑰管理結(jié)合的異質(zhì)公共密鑰。即使在只使用'HSM密 鑰的實(shí)施例中,安全性仍然很高。藉由用可藏在修補(bǔ)客戶端韌體內(nèi)的 KEK密鑰加密可保護(hù)修補(bǔ)內(nèi)容。在可信賴的第三方(TTP)涉入安全處理的實(shí)施例中,只有哈希計(jì)算 值才需要加以簽名。從而可進(jìn)一步增強(qiáng)安全性,因?yàn)榭杀苊怙@露修補(bǔ) 來(lái)源的風(fēng)險(xiǎn)。相較于增益,建議之解決方案的成本低。修補(bǔ)開發(fā)及發(fā)布遠(yuǎn)比密 鑰處理、備份、數(shù)字簽名及加密昂貴,即使在此過(guò)程涉及數(shù)個(gè)實(shí)例的 實(shí)施例中。修補(bǔ)客戶端140的制造成本幾乎不變且添加所描述之安全 修補(bǔ)功能所增加的成本也有限。在修補(bǔ)客戶端140開機(jī)期間解密及簽 名檢查可能需要最少的時(shí)間。不過(guò),安全性勝過(guò)先前技術(shù)簡(jiǎn)單的修補(bǔ) 系統(tǒng)很多。因此,本發(fā)明實(shí)施例可顯著增加修補(bǔ)系統(tǒng)的安全性、可靠 性及效率,而不會(huì)過(guò)當(dāng)?shù)卦黾訉?duì)應(yīng)的成本。盡管已用依照本發(fā)明所述構(gòu)成的實(shí)際實(shí)施例描述本發(fā)明,顯然對(duì) 熟諳此藝者而言,根據(jù)上述教導(dǎo)且在隨附之申請(qǐng)專利范圍的范圍內(nèi)可
做出各種本發(fā)明的修改、變體及改進(jìn)而不脫離本發(fā)明的范疇。此外, 相信本技藝一般技術(shù)人員已熟悉的領(lǐng)域在本文中不需再加以描述以免 不必要地混淆在本文中所描述的發(fā)明。因此,應(yīng)了解,本發(fā)明不受限 于特定的示范實(shí)施例,而只受限于隨附申請(qǐng)專利范圍的范疇。 產(chǎn)業(yè)上利用性本發(fā)明的實(shí)施例可應(yīng)用于計(jì)算機(jī)技術(shù)領(lǐng)域,而因此可用于工業(yè)領(lǐng)域。
權(quán)利要求
1、一種修補(bǔ)服務(wù)器(100),連接至修補(bǔ)客戶端(140),用以提供修補(bǔ)(1150、1355、1365、1375、1385)至所述修補(bǔ)客戶端,該修補(bǔ)服務(wù)器包含第一密鑰產(chǎn)生平臺(tái)(110),經(jīng)配置成產(chǎn)生包含多個(gè)第一私有密鑰(200至215)的第一私有密鑰群組(260);第二密鑰產(chǎn)生平臺(tái)(120),與所述第一密鑰產(chǎn)生平臺(tái)不相同且經(jīng)配置成產(chǎn)生包含多個(gè)第二私有密鑰(220至235)的第二私有密鑰群組(270);第一密鑰選擇器,經(jīng)配置成從所述第一私有密鑰群組選定(410、610)所述第一私有密鑰中的一個(gè);第二密鑰選擇器,經(jīng)配置成從所述第二私有密鑰群組選定(410、620)所述第二私有密鑰中的一個(gè);第一簽名產(chǎn)生器,經(jīng)配置成基于所述修補(bǔ)以及所述第一選定的私有密鑰而產(chǎn)生(420、710、1010)第一數(shù)字簽名(1110、1310);第二簽名產(chǎn)生器,經(jīng)配置成基于所述修補(bǔ)以及所述第二選定的私有密鑰而產(chǎn)生(420、720、1020)第二數(shù)字簽名(1120、1320);以及發(fā)送器,經(jīng)配置成一起發(fā)送(490)所述修補(bǔ)以及所述第一與第二數(shù)字簽名至所述修補(bǔ)客戶端。
2、 如權(quán)利要求1的修補(bǔ)服務(wù)器,進(jìn)一步包含 第一哈希計(jì)算器,經(jīng)配置成基于所述修補(bǔ)而計(jì)算出(400、 510)第一哈希計(jì)算總合;以及第二哈希計(jì)算器,經(jīng)配置成基于所述第一哈希計(jì)算總合而計(jì)算出 (400、 520)第二哈希計(jì)算總合;其中第一簽名產(chǎn)生器進(jìn)一步經(jīng)配置成基于所述第二哈希計(jì)算總合 而產(chǎn)生(420、 710)所述第一數(shù)字簽名。
3、 如權(quán)利要求2的修補(bǔ)服務(wù)器,進(jìn)一歩包含 第三哈希計(jì)算器,經(jīng)配置成基于所述第二哈希計(jì)算總合而計(jì)算出 (400、 530)第三哈希計(jì)算總合;其中所述第二簽名產(chǎn)生器進(jìn)一步經(jīng)配置成基于所述第三哈希計(jì)算總合而產(chǎn)生(420、 720)所述第二數(shù)字簽名。
4、 如權(quán)利要求1的修補(bǔ)服務(wù)器,進(jìn)一步包含哈希計(jì)算器,經(jīng)配置成計(jì)算出(400、910至940)多個(gè)哈希計(jì)算總合; 其中所述修補(bǔ)包含多個(gè)記錄(1355、 1365、 1375、 1385); 其中所述哈希計(jì)算器進(jìn)一步經(jīng)配置成基于包含于所述修補(bǔ)內(nèi)的最 后一個(gè)記錄(1385)而計(jì)算出(400、 910)所述多個(gè)哈希計(jì)算總合的第一哈希計(jì)算總合;以及其中所述哈希計(jì)算器進(jìn)一步經(jīng)配置成基于包含于所述修補(bǔ)內(nèi)的 各自的下一個(gè)最近的記錄以及所述多個(gè)哈希計(jì)算總合中的各自的最近 計(jì)算出的哈希計(jì)算總合而計(jì)算出(400、 920至940)所述多個(gè)哈希計(jì)算總 合中的每一個(gè)進(jìn)一步的哈希計(jì)算總合。
5、 如權(quán)利要求4的修補(bǔ)服務(wù)器,其中所述第一簽名產(chǎn)生器進(jìn)一步 經(jīng)配置成基于所述多個(gè)哈希計(jì)算總合中的最近計(jì)算出的哈希計(jì)算總合 而產(chǎn)生(420、 IOIO)所述第一數(shù)字簽名;以及其中所述發(fā)送器進(jìn)一步經(jīng)配置成一起發(fā)送所述修補(bǔ)以及所述第一 與第二數(shù)字簽名和所述多個(gè)哈希計(jì)算總合至所述修補(bǔ)客戶端。
6、 如權(quán)利要求4或5的修補(bǔ)服務(wù)器,其中所述第二簽名產(chǎn)生器進(jìn) 一步經(jīng)配置成基于所述多個(gè)哈希計(jì)算總合中的最近計(jì)算出的哈希計(jì)算 總合而產(chǎn)生(420、 1020)所述第二數(shù)字簽名;以及其中所述發(fā)送器進(jìn)一步經(jīng)配置成一起發(fā)送所述修補(bǔ)以及所述第一 與第二數(shù)字簽名和所述多個(gè)哈希計(jì)算總合至所述修補(bǔ)客戶端。
7、 如權(quán)利要求1至6的修補(bǔ)服務(wù)器,進(jìn)一步包含 密鑰指針產(chǎn)生器,經(jīng)配置成產(chǎn)生密鑰指針(1140、 1340),所述密鑰指針包含第一密鑰指針(1210),指向已從所述第一私有密鑰群組選定 的第一私有密鑰,以及第二密鑰指針(1220),指向已從所述第二私有密 鑰群組選定的第二私有密鑰;其中所述發(fā)送器進(jìn)一步經(jīng)配置成一起發(fā)送所述修補(bǔ)以及所述第一 與第二數(shù)字簽名和所述密鑰指針至所述修補(bǔ)客戶端。
8、 如權(quán)利要求7的修補(bǔ)服務(wù)器,其中所述密鑰指針產(chǎn)生器進(jìn)一步 經(jīng)配置成產(chǎn)生進(jìn)一步包含虛擬指針(1240)的所述密鑰指針,所述虛擬指 針(1240)鑒定所述第一與第二數(shù)字簽名中的一個(gè)為虛擬簽名。
9、 一種提供修補(bǔ)(1150、 1355、 1365、 1375、 1385)至修補(bǔ)客戶端 (140)的方法,包含使用第一密鑰產(chǎn)生平臺(tái)(110)產(chǎn)生包含多個(gè)第一私有密鑰(200至 215)的第一私有密鑰群組(260);使用不同于所述第一密鑰產(chǎn)生平臺(tái)的第二密鑰產(chǎn)生平臺(tái)(120)產(chǎn)生 包含多個(gè)第二私有密鑰(220至235)的第二私有密鑰群組(270);從所述第一私有密鑰群組選定(410、610)所述第一私有密鑰中的一個(gè),從所述第二私有密鑰群組選定(4,10、 620)所述第二私有密鑰中的一個(gè);基于所述修補(bǔ)與所述第一選定私有密鑰產(chǎn)生(420、 710、 IOIO)第一 數(shù)字簽名(1110、310);基于所述修補(bǔ)與所述第二選定私有密鑰產(chǎn)生(420、 720、 1020)第二 數(shù)字簽名(1120、 1320);以及一起發(fā)送所述修補(bǔ)以及所述第一與第二數(shù)字簽字至所述修補(bǔ)客戶
10、 一種修補(bǔ)客戶端(140),連接至修補(bǔ)服務(wù)器(IOO),用以從所述 修補(bǔ)服務(wù)器接收(1500、 1800)修補(bǔ)(1150、 1355、 1365、 1375、 1385),所述修補(bǔ)客戶端包含存儲(chǔ)第一公共密鑰群組(360)的第一存儲(chǔ)裝置,所述第一公共密鑰 群組(360)包含多個(gè)已由第一密鑰產(chǎn)生平臺(tái)(110)產(chǎn)生的第一公共密鑰 (300至315);存儲(chǔ)第二公共密鑰群組(370)的第二存儲(chǔ)裝置,所述第二公共密鑰 群組(370)包含多個(gè)己由第二密鑰產(chǎn)生平臺(tái)(120)產(chǎn)生的第二公共密鑰 (320至335),所述第二密鑰產(chǎn)生平臺(tái)(120)與所述第一密鑰產(chǎn)生平臺(tái)不 相同;第一密鑰選擇器,經(jīng)配置成從所述第一公共密鑰群組選定(1530、 1610、 1830)所述第一公共密鑰中的一個(gè);第二密鑰選擇器,經(jīng)配置成從所述第二公共密鑰群組選定(1530、 1620、 1830)所述第二公共密鑰中的一個(gè);第一簽名驗(yàn)證組件,經(jīng)配置成使用所述第一選定公共密鑰驗(yàn)證 (1540、 1720、 1750、 1840、 1920、 1950)第一數(shù)字簽名(1110、 1310), 所述第一數(shù)字簽名與所述修補(bǔ)一起從所述修補(bǔ)服務(wù)器接收到;以及第二簽名驗(yàn)證組件,經(jīng)配置成使用所述第二選定公共密鑰驗(yàn)證 (1540、 1730、 1760、 1840、 1930、 1960)第二數(shù)字簽名(1120、 1320), 所述第二數(shù)字簽名與所述修補(bǔ)一起從所述修補(bǔ)服務(wù)器接收到;其中所述修補(bǔ)客戶端經(jīng)配置成只有在驗(yàn)證所述第一與第二數(shù)字 簽名的結(jié)果分別顯示所述第一與第二數(shù)字簽名的真實(shí)性與完整性時(shí), 才安裝(1560、 2045)所述修補(bǔ)。
全文摘要
本發(fā)明提供可增加秘密保護(hù)及密鑰遺失容忍度(key loss tolerance)的修補(bǔ)服務(wù)器、修補(bǔ)客戶端及對(duì)應(yīng)的方法。修補(bǔ)服務(wù)器包含第一密鑰產(chǎn)生平臺(tái)與不同于第一密鑰產(chǎn)生平臺(tái)的第二密鑰產(chǎn)生平臺(tái)。使用第一或第二密鑰產(chǎn)生平臺(tái)各自產(chǎn)生各自包含多個(gè)第一或第二私有密鑰的第一與第二私有密鑰群組。從第一私有密鑰群組選定該等第一私有密鑰中之一個(gè),且從第二私有密鑰群組選定該等第二私有密鑰中之一個(gè)。第一數(shù)字簽名系基于該修補(bǔ)與該第一選定私有密鑰而產(chǎn)生。第二數(shù)字簽名系基于該修補(bǔ)與該第二選定私有密鑰而產(chǎn)生。該修補(bǔ)系與第一與第二數(shù)字簽名一起發(fā)送到修補(bǔ)客戶端。
文檔編號(hào)H04L29/06GK101213814SQ200680023968
公開日2008年7月2日 申請(qǐng)日期2006年5月23日 優(yōu)先權(quán)日2005年6月30日
發(fā)明者A·瓦克特勒, F·許克, R·芬德森 申請(qǐng)人:先進(jìn)微裝置公司