以下的文字摘錄自 PGP 6.5.1 文件集的密碼法導論第一章。 Network Associates, Inc. 及其附屬公司版權所有, 1990-1999 。保留一切權利。本文件是利用 http://access.adobe.com/ 將 PDF 檔轉換為 HTML 格式,再以手動編輯排版所得。
圖 1-1 。加密和解密
相對於密碼法是保密資料的科學,密碼分析則是分析和破壞保密通訊的科學。古典密碼分析需要對分析推理、數學工具使用、板模尋找等興趣的結合,還需要耐心、決心、以及運氣。密碼分析家也被稱做攻擊客。
密碼術則同時囊括了密碼法和密碼分析。
PGP 也是屬於後者的密碼法。密碼法又有強或弱的區分,詳述於後。密碼法的強度端看將其還原回純文字訊息所會耗去的時間和資源而定。強密碼法所產生的密文若沒有適當的解碼工具來處理,將會非常難破解。有多難呢?即便集合當今世界上所有的電腦全天執行,即使每一台電腦每秒鐘都能嘗試數十億組密碼,這個強密碼法就算到了世界末日仍然不可能被破解。
於是有人可能會認為強密碼法可以有效對抗極端堅毅的密碼分析家。誰能真的這麼說呢?沒有人能夠證明今天還可維護的強密碼法到了明天會不會因為電腦威力的突飛猛進而掛掉。至少現在由 PGP 所使用的強密碼法仍是最好的。無論如何,保持警覺和保守的態度總比費解的權利還要能夠保護你。
一套密碼演算法,加上所有可能的金鑰以及所有可以讓他們工作無間的協定,這就構成了一個密碼系統。 PGP 就是一個密碼系統。
圖 1-2 。傳統加密法
舉例來說,如果我們要把「SECRET」這個字用凱撒的方法來加密,而金鑰的數值是 3 的話,我們要先把字母系統往後偏移到第三個字母 (D) 作為字母系統的開始。
也就是說原先的字母系統應該是
ABCDEFGHIJKLMNOPQRSTUVWXYZ在把每個字母都挪動 3 個位置後,你會得到
DEFGHIJKLMNOPQRSTUVWXYZABC
也就是 D = A 、 E = B 、 F = C ,依此類推。
利用這個結構,原先的純文字「SECRET」就會被加密成「VHFUHW」。要讓別人能夠解讀密文,你需要告訴他們所用的金鑰數值是 3 。
顯然這個密碼法對於今天的標準來說太過薄弱了;嘿!但是它對凱撒可是有用的很,而且它也描繪了傳統密碼法的運作。
回想一下你最喜愛的諜報片角色:用手銬把自己手腕銬在公事包的傢伙。公事包裡頭是甚麼呢?它可能不是飛彈發射的密碼、生化毒氣的分子式、或入侵計畫本身。而是能夠把保密資料解密的金鑰。
對於使用傳統加密進行保密溝通的遞送者和收件者來說,他們必須事先對金鑰取得共識,並且在它們之間保密。如果他們身處不同的地理位置,那更必須信任他們的信差、蝙蝠電話、或任何保密溝通媒介以避免在傳輸過程當中秘密金鑰被公開。從 DES 以至於午夜隊長的秘密解碼戒指,傳統加密法未曾改變的問題都是金鑰傳遞:你如何把金鑰遞送給收件者而避免被某人擷取?
公開金鑰密碼法是一種非對稱性的結構,它使用了一對金鑰來進行加密:一把用來加密資料的公鑰,以及相對應用來解密的私鑰、或也稱作密鑰。你把你的公鑰發表到世界各處,同時保密你的私鑰。任何取得你的公鑰複製的人都可以加密出只有你才能閱讀的資訊。即使你從未遇到那個人也一樣。
在運算上要從公鑰追溯出私鑰是不可能的。任何持有公鑰的人都可以加密資訊,但是無法進行解密。只有擁有相對應私鑰的人才能夠將訊息解密。
圖 1-3. 公開金鑰加密
公開金鑰加密法最主要的優點是它允許沒有事先安排保密管道人們仍然可以保密地交換訊息。遞送者和收件者需要透過保密管道共享秘密金鑰的需求消失了;所有的通訊只會涉及公鑰,而不會有任何私鑰被傳遞或共享。公開金鑰密碼系統的例子如 Elgamal (以它的發明者 Taher Elgamal 的名字所命名)、 RSA (以它的發明者 Ron Rivest 、 Adi Shamir 、 Leonard Adleman 的名字所命名)、 Diffie-Hellman (沒錯,你猜到了,仍然是以它的發明者的名字所命名)、還有 DSA ,也就是數位簽章演算法(由 David Kravitz 所發明)。
因為傳統密碼法一度是唯一可行的遞送秘密訊息的方法,因此秘密管道和金鑰傳遞的昂貴花費限制了只有能夠負擔的人才能夠使用這種密碼法;例如政府和大銀行(或者持有秘密解碼戒指的小孩)。公開金鑰密碼法可以說是一項技術上的革命,提供了普羅大眾一個強密碼法。還記得那個把公事包銬在手腕的人嗎?公鑰加密讓他丟了飯碗啦!(搞不好其實對他來說是種解脫)
然後 PGP 會產生一個階段金鑰,這把階段金鑰是一種只有當時有效的秘密金鑰,是利用任意的滑鼠移動以及鍵盤輸入所產生的亂數。它以非常秘密而快速的傳統加密演算法來加密純文字,而產生出密文。當資料加密完成後,這把階段金鑰接著就會開始以收信者的公鑰被加密。這個被公鑰加密過的階段金鑰將會與密文一併交付給收信者。
圖 1-4 。 PGP 如何加密
解密的過程就是反向運作了。收信者的 PGP 會利用他的私鑰來還原那把暫時的階段金鑰,然後 PGP 再利用這把階段金鑰來將傳統加密過的密文解密。
如 1-5 。 PGP 如何解密
兩種加密方法的結合匯聚了公開金鑰加密法的便利以及傳統加密法的迅速。傳統加密法大約比公鑰加密法要快上 1,000 倍;而公鑰加密法則解決了金鑰傳遞和資料傳輸的課題。雙管齊下,效率和金鑰傳遞兩者同時改善了,而且不會有任何安全上的犧牲。
然而,公鑰大小和傳統密碼法的私鑰大小全然無關。一把 80 位元組的傳統金鑰擁有和 1024 位元組公開金鑰相當的強度;一把 128 位元組大小的傳統金鑰擁有和 3000 位元組大小公開金鑰相當的強度。同樣地,金鑰越大就越保密;但是每一種密碼法的演算法相差甚多,就好像蘋果和橘子一樣有著天壤之別。
雖然公鑰和私鑰在數學上具有相關性,但是單從公鑰要想推知私鑰是非常困難的;雖然只要有足夠的時間和電腦威力,總是有機會解出私鑰。因此挑選正確大小的金鑰就顯得格外重要了:必須夠大才安全、必須夠小才夠快。另外,你也需考慮誰可能會讀取你的檔案、他們多有益力、他們有多少時間、以及他們可能有甚麼資源。
較大的金鑰在密碼法上來說會比較安全,但也會花去較長的運算時間。如果你打算把某個需要藏上幾年的資料加密,你也許會想要用一把非常大的金鑰。當然,誰會知道當明天電腦變得更快更有效率時,測出你的金鑰會花上多久?至少就目前來說, 56 位元組大小的對稱金鑰已經夠安全了。
金鑰會以加密過的形式儲存下來。 PGP 將金鑰儲存在你硬碟上的兩個檔案裡:其中一個用來儲存公鑰,另一個拿來儲存私鑰。這些檔案被稱作金鑰鑰匙圈。當你敻 PGP 時,你需要把收件者的公鑰加進你的公鑰鑰匙圈裡。你的私鑰則儲存在你的私鑰鑰匙圈裡。如果你弄丟了你的私鑰鑰匙圈,你將沒辦法對任何以鑰匙圈裡的金鑰加密過的資訊解密。
數位簽章的功效就和親筆簽名一樣。然後親筆簽名很容易被偽造,而數位簽章幾乎不可能被偽造,而且還能夠證明文件的內容和剛被簽署的時候保持一致。
有些人傾向於使用簽署更勝於加密。例如說,你並不在乎任何人知道你剛存了 1000 元到你的戶頭裡,但是你很想確定和你打交道的傢伙市銀行的出納員。
創造數位簽章的基本方法描繪於圖 1-6 。數位簽章的作法是拿你的私鑰來進行加密,而非像加密資訊那樣使用別人的公鑰。如果這個資訊能夠被你的公鑰解密,那麼它顯然是出自你手中。
圖 1-6 。簡單的數位簽章
PGP 對使用者簽署的純文字使用密碼法上的強雜湊函式。這會產生一個固定長度的資料,稱做訊息摘要(當然,任何訊息的改變都會產生出全然不同的摘要。)
然後 PGP 使用這個摘要和私鑰以產生「簽章」。 PGP 把簽章和純文字一起傳遞。當收件者收到訊息後,就利用 PGP 重新計算摘要,然後驗證這個簽章。不論 PGP 有沒有對純文字加密,對純文字簽署都是很有用的。特別當某些收件者並沒有興趣或沒有辦法去驗證簽章的時候。
一旦採用了保密雜湊函式後,就沒有任何方法把某人的簽章從文件中截下、貼到另一份文件上,或改變任何被簽署過的訊息。任何在簽署過的文件上所動的細小手腳,都會導致數位簽章驗證的結果失敗。
圖 1-7 。保密數位簽章
數位簽章在鑑定以及驗證其他 PGP 使用者的金鑰上扮演了相當重要的角色。
在一個公開金鑰的環境中,確認你拿來加密資料的公鑰確實是那個收信者所擁有而非偽造的,乃是極其重要的事。你當然可以僅用那些被親手交給你的金鑰來加密。但是假設你需要和從未見過面的人交換資訊,你要怎麼分辨你拿到了正確的金鑰呢?
數位憑證,或稱憑證,使得確認某把公鑰是不是真的屬於某個人變成一項簡單的工作。
憑證其實是一種認證,像是你的駕照、身份證、或出生證明之類的。這些東西上都有一些資訊,用以辨識你、並且經過授權以表示另外有人確認了這是你的身份沒錯。某些憑證像是你的護照,重要到能夠完全確認你的身份,所以你不會想要遺失它們,免得別人拿它來假冒成你。
數位憑證是一筆具有類似實際憑證功能的資料。在數位憑證通常包括在一個人的公鑰當中以助於其他人能夠驗證這把金鑰是真的或有效的。通常數位憑證能夠阻止將某人的金鑰代換成另一個的不良意圖。
一個數位憑證由三件事情組成:
在憑證的時候,數位簽章的目的是要聲明這份憑證資訊已經被其他人或實體所驗證了。數位簽章並不能對整個憑證驗證其可信度;它只能擔保說,那些簽署的身份資訊確實是跟隨著或附著在那一把公鑰上。
也就是說,一個憑證通常會是一把公鑰附加上一種或兩種形式的 ID ,以及由其他信任的個體所批准的衷心印戳。
圖 1-8 。 PGP 憑證解剖圖
憑證伺服器
憑證伺服器也被稱做憑證伺服器或金鑰伺服器,是一個允許使用者提交和收回數位憑證的資料庫。憑證伺服器通常會提供一些管理功能讓公司行號能夠維護它們的保密政策 ─ 例如只允許合規定的金鑰被儲存。
公鑰基礎建設
PKI 包含了憑證伺服器所具備的儲存能力,另外又提供了憑證管理能力(發行、撤銷、儲存、收回、以及信任憑證的能力)。 PKI 的主要特色被稱之為憑證中心(Certification Authority, CA) 是由一個人類實體 ─ 一個個人、團體、部門、公司、或任何協會 ─ 認可了並發行它們所有電腦使用者的憑證。( CA 所扮演的角色可以類比成國家政府的護照管理處。) CA 建立憑證並且使用 CA 的私鑰對其進行數位簽署。因為它們的角色是建立憑證,所以 CA 也就成了 PKI 的核心組成。藉由使用 CP 的公鑰,任何人想要驗證憑證授權其實就是在驗證 CA 發行的數位簽署以及憑證內容的完整性(更重要的,是憑證持有者的公鑰和其身份)。
PGP 能夠理解兩種不同的憑證格式:
PGP 憑證格式
一份 PGP 憑證包括(但不限於)下列的資訊:
你可以把 PGP 憑證想成是一把貼上一大堆標籤的公鑰(參見圖 1-9 )。在這些「標籤」上你可以找到足以辨識金鑰持有者的資訊,以及金鑰持有者的簽署,用以聲明這些資訊和金鑰是一併送出的。(這個部分的簽署就稱做自簽;每一份 PGP 憑證都會包含有自簽。)
PGP 憑證格式的一個獨特之處在於一份憑證可以包含有多份簽署。多數人可能會簽署金鑰/身份對以表明他們確認公鑰顯然屬於某個特定的持有者。如果你在公開憑證伺服器上尋找,你會發現許多憑證都有很多簽署;例如 PGP 之父 Phil Zimmermann 的就是。
某些 PGP 憑證包含了擁有多個標籤的公鑰,每一個標籤都包含了不同的金鑰持有身份實體(例如持有者的姓名和公司電子郵件帳號、持有者暱稱和家用電子郵件帳號、持有者的照片 ─ 通通在同一份憑證裡)。每一個身份的簽署列表可能不同;簽署只能證明公鑰裡某個標籤被授權,並不代表金鑰理所有的標籤也都被授權了。(請注意「有效」是對旁觀者而言的 ─ 簽署是一種輿論,而不同的人在簽署一把金鑰前的注意程度並不相同。)
圖 1-9 。 PGP 憑證
X.509 憑證格式
X.509 是另一個非常常見的憑證格式。所有的 X.509 憑證完全是由 ITU-T X.509 國際標準而來的;所以(理論上) X.509 憑證可以適用於任何遵從 X.509 的程式。然後,事實上不同的公司創造了他們自己的 X.509 延伸版本憑證所以沒辦法放在一起運作。
一份驗證需要某人來使一把公鑰和金鑰主人的名字一起生效。在 PGP 憑證下,任何人都可以擔任驗證者的角色;而在 X.509 憑證下,驗證者永遠都是憑證中心或由憑證中心指明的人。(請記住 PGP 憑證也同樣完全支援權力體系架構下的 CA 來驗證憑證。)
一份 X.509 憑證是由一組包括了使用者或設備資訊的標準格式範疇和他們相對應的公鑰所組成的。 X.509 標準定義了憑證裡應有的資訊,以及描述了它們如何組成(資料格式)。所有的 X.509 憑證都具備了下列的資料:
CN=Bob Allen, OU=Total Network Security Division, O=Network(它們提到了主體的一般名字、組織單位、組織、以及國家。)
Associates, Inc., C=US
在 X.509 憑證和 PGP 憑證間有許多差異,其中較顯著的列出如下:
要維護一份 X.509 憑證,你必須要求 CA 發行給你一份憑證。你得提供你的公鑰,證明你持有相對應的私鑰,以及某些關於你的特定資訊。然後你得數位加簽資訊並把所有的東西 ─ 需求 ─ 寄出去給 CA 。然後 CA 執行某些該做的事以驗證你提供的資訊是否都是正確的,如果是的話,它們才會產生新的憑證並且寄回給你。
你可以把 X.509 憑證想程式標準的書面憑證(很像你可能會有的基礎急救訓練證書)附加上一把公鑰。上面有你的名字和一些關於你的資訊,然後加上這份憑證發行者的簽署。
圖 1-10 。一份 X.509 憑證
也許現今最常見到的 X.509 憑證運用是在網頁瀏覽器上。
當你確認某個屬於別人的簽署是有效的,你可以在你的金鑰鑰匙圈的複製當中給予加簽,表住你已經檢查過憑證而且確認那份憑證是有效的了。如果你想讓其他人知道你給予這份憑證加簽了你的認可印戳,你可以把這份簽署輸出到某個憑證伺服器而讓別人看見。
如同在公鑰基礎建設段落所描述的,有些公司設計了一個以上的憑證中心 (CAs) 來直接驗證憑證。對一個使用 PKI 和 X.509 憑證的組織來說, CA 的工作就是要發行憑證給使用者 ─ 通常承擔來自使用者提出憑證要求的回應程序。但對於使用 PGP 憑證而不使用 PKI 的組織來說, CA 僅需檢查所有 PGP 憑證的可信度,並且擇優簽署即可。基本上 CA 的主要目的是要把公鑰和識別資訊打包在一起放到憑證中,以確定第三者可以確認這些被打包的識別資訊和金鑰是可信賴的。
CA 可以說是一個組織裡負責驗證的達官顯要;組織裡任何一個即使大家都相信的人,就像在使用 PKI 一樣,如果沒有被可信的 CA 簽署的話,其憑證就不會有效。
另一個方法是手動核對憑證的指紋。就好比每個人都有獨一無二的指紋,每一個 PGP 憑證也有它獨一無二的指紋。這個指紋其實是使用者憑證的雜湊摘要,會成為憑證中的一項屬性。在 PGP 中,這個指紋會以十六進位的數值或一系列所謂的生統字符,使得他們在語音上保持很大的差異,如此一來要進行核對的手續時就會簡單些。
想要檢驗憑證是否可信,你可以打電話給金鑰主人(也就是你主動開始)並請他讀出他的金鑰指紋給你聽,然後你可以藉此判斷。這項任務只有在你確知金鑰主人的聲音時才有意義;但是你要如何檢驗你不認識的人的身份?有些人因此把他們的金鑰指紋印在名片上。
另一個建立驗證某人的憑證的方法是去信任第三者所做的驗證。
例如說有個 CA 回應了確認曾經發行了一份憑證,他小心地檢查過那把公鑰確實屬於它應該屬於的人。任何人信任 CA 的話,也會自動認定由這個 CA 所簽署的憑證是有效的。
另一個驗證檢驗的觀點是去確認該憑證沒有被撤銷。請閱讀 憑證撤銷的段落以取得更多資訊。
超級引薦人和受信任引薦人
在大多數的情況下,人們完全信任 CA 所建立的憑證是可信的。這表示任何其他人依賴 CA 來進行完全手動驗證程序。這對相當數量的使用者或同一個工作區域中的成員來說是很好的,但 CA 並不可能保持相同等級的驗證品質。在這種情況下,在系統中增設其他的驗證者就很必須了。
一個 CA 同時也可以是一個超級引薦者。一個超級引薦者不只使用金鑰的可信度,同時也使用對其他人信任金鑰的能力。就像是國王將玉璽交給他所信任的大使,所以大使得以授權行動;超級引薦者能夠讓其他人具有受信任引薦者的位階。這些受信任引薦者能像超級引薦者一樣地驗證金鑰。然而,他們並不能提拔出新的受信任引薦者。
超級引薦者和受信任引薦者都是 PGP 術語。在 X.509 環境當中,超級引薦者被稱為最高憑證中心 (root CA)而受信任引薦者隸屬於其下,稱為憑證中心。
最高 CA 使用與稱之為最高 CA 憑證的特殊憑證類別相關的私鑰來簽署憑證。任何被最高 CA 簽署的憑證都會被視為和被其他由最高 CA 簽署過憑證再來簽署的憑證一樣具有效力。這個憑證程序即便是系統中其他 CA 簽署的,也一樣能夠運作 ─ 只要次級 CA 的憑證是經由最高 CA 所簽署的,任何在這個階級關係中的憑證簽署都會具有相同的效力。這個在系統中回溯檢查前一個簽署者的程序稱之為憑證路徑或憑證鍊。
公司行號採用了另一種信任模式,要求使用者去建立憑證驗證。有三種不同的模式:
直接信任
直接信任是最簡單的信任模式。在這個模式中,使用者因為知道一把金鑰從哪裡來而信任它是有效的。所有的密碼系統在某種程度上都使用了這樣的信任形式。例如在網頁瀏覽器上,最高憑證中心金鑰直接被信任,這是因為它們來自製造商。如果還有任何其他的位階,就會從這個直接信任憑證中延伸出去。
在 PGP 中,若使用者不經任何受信任引薦者而兀自信任自己的金鑰,就是使用了直接信任。
圖 1-11 。直接信任
階級信任
在階級系統中,會有許多來自「最高」憑證所延伸出來的信任。這些憑證也許為他們自己擔保、或擔保更低層的憑證。你可比這樣的情形想做是巨大的信任「樹」。「枝葉」憑證的驗證藉由追溯回他們的保證書到另一個保證書,直到直接由最高憑證所信任為止。
圖 1-12 。階級信任
信任網
信任網圍繞著另外兩種模式,但又增加了一個新的觀點:信任是來自旁觀者的眼睛(這也是真實世界的角度),而認為越多資訊越好。他同時也是信任累積模式。一個憑證可能直接地被信任,或者被某個可追溯回直接信任的最高憑證(超級引薦者)所信任,或由其他群的引薦者所信任。
也許你也聽過六級分離這個詞,它的意思是說世界上每個人都可以向別人畫出關聯線;而這樣的關聯線可以精簡到與你直接相關的中介人不超過六個。這就是引薦網。
這也是 PGP 的信任觀點。 PGP 使用數位簽章作為引薦的形式。當任何使用者加簽了別人的金鑰,他就會成為那把金鑰的引薦者。當這樣的程序被持續地進行著,就會形成一張信任網。
在 PGP 環境下,任何使用者都可以像被完全授權般地行動。任何 PGP 使用者都可以驗證其他 PGP 使用者的公鑰憑證。然而這樣的憑證只有在第三方也認為驗證者是可信任的引薦者時,才會被信任。(也就是說,你若要信任我所認為有效的金鑰,得先認定我是可被信任的引薦者。不然的話我對於另一把金鑰的驗證對你來說是毫無意義的。)
儲存在每一個使用者的公鑰鑰匙圈裡的東西代表著
你根據我的金鑰副本指出對我的評斷的計數。這真的是一個名聲系統:有些人們因為被給予簽署而有好的聲望,而人們因而信任他們對其他金鑰的驗證是有效的。
PGP 中的信任等級
對一把金鑰的最高信任等級是絕對的信任,有如信任你自己的金鑰對一樣。 PGP 假設如果你擁有私鑰,你一定完全信任相對應的那把公鑰。任何被你完全信任的金鑰所簽署的金鑰也一樣是有效的。
你可為別人的公鑰設定三種不同的信任等級:
為了把事情弄得更複雜,有效程度也有三種:
要將另一把金鑰定做你的受信任引薦者,你得
例如說,假設你的金鑰鑰匙圈裡有一把 Alice 的金鑰。你對其驗證過而且加簽以示認可。你知道 Alice 對於驗證別人的金鑰是斤斤計較的。所以你把他的金鑰設為完全信任。這使得 Alice 成為你的憑證中心。如果 Alice 加簽了別人的金鑰,那把金鑰在你的金鑰鑰匙圈裡也會同樣地有效。
PGP 需要一個完全信任的簽署或兩個信任邊緣的簽署才能將一把金鑰視為有效。 PGP 將兩個邊緣視為一個完整的方法很像對零售商要求兩個 ID 格式。你也許會認為 Alice 相當值得信賴,也覺得 Bob 相當值得信賴。他們之中任何一個其實都有簽署到偽造金鑰的機會,所以你也許會不想要對任何一個做完全的信任。然而,兩個人同時簽署同一把偽造金鑰的機率實在是小多了。
因此憑證會依事先安排好的有效週期被製造:一個生效日期/時間和一個有效日期/時間。這個憑證在這段有效週期(它的壽命)中會是有效的。然而當憑證過期了,它就不再有效,而它所信賴的金鑰─身份配對也不再確定。(這個憑證仍然可以用來再度確認那些由它在有效期限內所加密或簽署的資訊 ─ 只不過它不應該繼續被信任以及在密碼法事務上被使用。)
還有一個狀況是需要將一份憑證終結的時候;例如當憑證持有者離職或者當那個憑證所對應的私鑰被洩漏之後。這種情況叫做撤銷。已撤銷的憑證遠比過期的憑證還要可疑。過期的憑證只是不能使用而已,可別抱持與已註銷的憑證一樣的擔心。
任何曾經簽署過憑證的人都可以撤回他們憑證上的簽章(他必須用和建立簽章相同的私鑰來做這件事)。撤銷的憑證表示簽署者不再信任這把公鑰及其連帶的身份資料;或者是憑證的公鑰(或相對應的私鑰)已經被洩漏了。一個被撤銷的簽章應該背負著幾乎和被撤銷的憑證一樣多的份量。
在 X.509 憑證中,一份撤銷的簽章,如果該認證上僅有一份由 CA 簽署的簽章,事實上與遭到撤銷的憑證是一樣的。 PGP 憑證提供了額外的功能,於是如果你覺得你的憑證被曝光了,你可以撤銷你的實體憑證(而不是只有其上的簽章)。
只有憑證的持有者(也就是相對應私鑰的持有者)或是被憑證持有者所指派為撤銷者的人才能夠撤銷 PGP 憑證。(指派撤銷者是常有的事,因為通常都是因為遺失了憑證相對應私鑰的密碼串使得使用者需要撤銷憑證 ─ 然而沒有辦法使用私鑰就沒有辦法進行撤銷程序。)只有憑證的發行者才能撤銷 X.509 憑證。
在 PKI 環境中,傳遞某個憑證已經被註銷的最常見方法是透過一個稱做憑證撤銷清單或 CRL 的資料結構;這是由 CA 所出版的。在 CRL 中包含有時間印戳、所有撤銷的認證、系統終未過期的憑證。以註銷的憑證會一直留在清單中直到過期為止,然後就會被移除 ─ 以避免清單變得太長。
CA 會定期(任何有憑證被撤銷的時候,它也會不定期地做這件事)對使用者發佈 CRL 。理論上,這會避免使用者不知情地使用已經曝光的憑證。但是,仍有可能在 CRLs 發佈週期間,有某一把剛曝光的憑證被誤用了。
而密碼串其實就是較長版本的密碼,而且在理論上也更安全。通常由多個字所組成的密碼串,能夠有效地抵抗標準的字典攻擊、也就是嘗試以所有字典當中查得到的字試圖破解你的密碼的攻擊方法。最好的密碼串最好相當之長且複雜,並且包含混雜有大寫及小寫字母、數字、和標點符號。
PGP 使用密碼串來在你的機器上加密你的私鑰。你的私鑰在你的硬碟上被以雜湊表的方式而成為密鑰。你可以透過密碼串來解密及使用你的私鑰。一個密碼串應該是你不容易忘記而別人卻很難猜得到的。它應當要是某個穩固存在你腦海中的長期記憶,而不是臨時抓出而癌賒。為什麼呢?因為如果你忘記了你的密碼串,那可不幸運。沒有你的密碼串,你的私鑰完全絕對地沒有用處,而不能做任何事。還記得本章稍早的引言嗎? PGP 是能夠把政府驅離你的檔案的密碼法。它同樣地也可以把你驅離。當你打算把密碼串改成你永遠記不住的笑話的最後一行前,先把這件事謹記在心。
在這種情況下,把金鑰拆解成許多份,而必須要有超過一個或兩個人出示所持金鑰片段才能組合成有用的金鑰的作法,的確是明智的。如果所能湊到的部分不夠多,這把金鑰就會失效。
一個例子是把金鑰分解成三份,而必須要有其中任兩份才能重新組合回原來的金鑰;或把金鑰拆解成兩份,唯有當兩份俱備的時候才能組合回原先的金鑰。如果在重新組合的過程當中能夠使用保密的網路連線,這些金鑰片段的持有人就不需要為了重新組合金鑰而匯聚一堂。
由 Jedi 於 May 9, 2003 05:49 PM 所發表 | 引用 (4)