糊言亂語

          志未半斤, 才無八兩. 有苦有樂, 糊涂過活。
          posts - 25, comments - 7, trackbacks - 0, articles - 42
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          PKI 技術白皮書 網絡版必讀

          Posted on 2007-12-26 22:23 Stanley Sun 閱讀(190) 評論(0)  編輯  收藏

          PKI 基礎知識
          Microsoft Windows 2000 Server白皮書
          2000年7月5日發布
          摘要
          本白皮書介紹了加密和公鑰基本結構(PKI)的概念和使用 Microsoft Windows 2000 Server 操作系統中的證書服務的基礎知識。如果您還不熟悉加密和公鑰技術,先閱讀本白皮書將有助于理解 Windows 2000 Web 站點上有關這些主題的其它技術白皮書。
          引言
          Microsoft Windows 2000 證書服務提供的集成的公鑰基本結構(PKI)使電子商務能夠在安全的環境中進行。本白皮書介紹了加密和 PKI 的概念。理解這些相關概念是理解證書服務功能的先決條件,證書服務是 Microsoft Windows 2000 Server 操作系統中的一個組件。
          如果您不熟悉加密和公鑰技術,請先閱讀本白皮書,然后在“其它信息”部分列出的鏈接中查找以下相關的技術性更強的白皮書:
          Windows 2000 證書服務
          Windows 2000 PKI 部署和智能卡登錄問題疑難解答
          Microsoft Windows 2000 公鑰基本結構
          公鑰的互操作性
          加密概念
          加密是通過 Intranet、Extranet 和 Internet 進行安全的信息交換的基礎。從業務的角度來看,通過加密實現的安全功能包括:身份驗證,使收件人確信發件人就是他或她所聲明的那個人;機密性,確保只有預期的收件人能夠閱讀郵件;以及完整性,確保郵件在傳輸過程中沒有被更改。從技術的角度來看,加密是利用數學方法將郵件轉換為不可讀格式從而達到保護數據的目的的一門科學。
          本節介紹下列加密概念:
          對稱密鑰加密:一個密鑰
          公鑰加密:兩個密鑰
          單向散列算法
          數字簽名:結合使用公鑰與散列
          密鑰交換:結合使用對稱密鑰與公鑰
          前三個小節分別定義并說明對稱密鑰加密、公鑰加密和散列算法。后兩個小節說明組合使用 這些技術的方法-尤其是,將公鑰算法與散列算法相結合以創建數字簽名,以及將對稱算法與公鑰算法相結合使交換密(私)鑰成為可能。
          對稱密鑰加密:一個密鑰
          對稱密鑰加密,也叫做共享密鑰加密或機密密鑰加密,使用發件人和收件人共同擁有的單個密鑰。這種密鑰既用于加密,也用于解密,叫做機密密鑰(也稱為對稱密鑰或會話密鑰)。對稱密鑰加密是加密大量數據的一種行之有效的方法。.
          對稱密鑰加密有許多種算法,但所有這些算法都有一個共同的目的-以可還原的方式將明文(未加密的數據)轉換為暗文。暗文使用加密密鑰編碼,對于沒有解密密鑰的任何人來說它都是沒有意義的。由于對稱密鑰加密在加密和解密時使用相同的密鑰,所以這種加密過程的安全性取決于是否有未經授權的人獲得了對稱密鑰。這就是它為什么也叫做機密密鑰加密的原因。希望使用對稱密鑰加密通信的雙方,在交換加密數據之前必須先安全地交換密鑰。
          衡量對稱算法優劣的主要尺度是其密鑰的長度。密鑰越長,在找到解密數據所需的正確密鑰之前必須測試的密鑰數量就越多。需要測試的密鑰越多,破解這種算法就越困難。有了好的加密算法和足夠長的密鑰,如果有人想在一段實際可行的時間內逆轉轉換過程,并從暗文中推導出明文,從計算的角度來講,這種做法是行不通的。
          公鑰加密:兩個密鑰
          公鑰加密使用兩個密鑰-一個公鑰和一個私鑰,這兩個密鑰在數學上是相關的。為了與對稱密鑰加密相對照,公鑰加密有時也叫做不對稱密鑰加密。在公鑰加密中,公鑰可在通信雙方之間公開傳遞,或在公用儲備庫中發布,但相關的私鑰是保密的。只有使用私鑰才能解密用公鑰加密的數據。使用私鑰加密的數據只能用公鑰解密。在圖 1 中,發件人擁有收件人的公鑰,并用它加密了一封郵件,但只有收件人掌握解密該郵件的有關私鑰。
          如果您的瀏覽器不支持行內框,請單擊此處查看獨立的頁面。
          圖 1 公鑰加密要求使用一個公鑰和一個私鑰。
          與對稱密鑰加密相似,公鑰加密也有許多種算法。然而,對稱密鑰和公鑰算法在設計上并無相似之處。您可以在程序內部使用一種對稱算法替換另一種,而變化卻不大,因為它們的工作方式是相同的。而另一方面,不同公鑰算法的工作方式卻完全不同,因此它們不可互換。
          公鑰算法是復雜的數學方程式,使用十分大的數字。公鑰算法的主要局限在于,這種加密形式的速度相對較低。實際上,通常僅在關鍵時刻才使用公鑰算法,如在實體之間交換對稱密鑰時,或者在簽署一封郵件的散列時(散列是通過應用一種單向數學函數獲得的一個定長結果,對于數據而言,叫做散列算法)。將公鑰加密與其它加密形式(如對稱密鑰加密)結合使用,可以優化性能。公鑰加密提供了一種有效的方法,可用來把為大量數據執行對稱加密時使用的機密密鑰發送給某人。也可以將公鑰加密與散列算法結合使用以生成數字簽名。
          若要進一步了解關于將公鑰加密與對稱密鑰加密或散列算法結合使用的信息,請參見下面兩節:“數字簽名: 結合使用公鑰與散列算法”和“密鑰交換:結合使用對稱密鑰與公鑰”
          將公鑰加密用于數字簽名
          數字簽名是郵件、文件或其它數字編碼信息的發件人將他們的身份與信息綁定在一起(即為信息提供簽名)的方法。對信息進行數字簽名的過程,需要將信息與由發件人掌握的秘密信息一起轉換為叫做簽名的標記。數字簽名用于公鑰環境中,它通過驗證發件人確實是他或她所聲明的那個人,并確認收到的郵件與發送的郵件完全相同,來幫助確保電子商務交易的安全。
          通常,數字簽名用于以明文(如電子郵件)分發數據的情形。在這種情況下,當郵件本身的敏感性可能無法保證加密的安全性時,確保數據處于其原始格式且并非由假冒者發送,是非常重要的。
          要了解如何結合使用公鑰與散列算法來創建數字簽名,請參見下面的“數字簽名: 結合使用公鑰與散列算法”一節
          常用公鑰算法
          下面是三種最常用的公鑰算法:
          RSA -適用于數字簽名和密鑰交換。Rivest-Shamir-Adleman (RSA) 加密算法是目前應用最廣泛的公鑰加密算法,特別適用于通過 Internet 傳送的數據。這種算法以它的三位發明者的名字命名:Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 算法的安全性基于分解大數字時的困難(就計算機處理能力和處理時間而言)。在常用的公鑰算法中,RSA 與眾不同,它能夠進行數字簽名和密鑰交換運算。Microsoft Base Cryptographic Service Provider (Microsoft Base CSP1) 支持 RSA 加密算法,并且 Microsoft Enhanced Cryptographic Service Provider (Microsoft Enhanced CSP2) 已經內置到包括 Microsoft Internet Explorer 在內的許多軟件產品中。
          DSA-僅適用于數字簽名。數字簽名算法 (Digital Signature Algorithm, DSA) 由美國國家安全署 (United States National Security Agency, NSA) 發明,已經由美國國家標準與技術協會 (National Institute of Standards and Technology, NIST) 收錄到聯邦信息處理標準 (Federal Information Processing Standard, FIPS) 之中,作為數字簽名的標準。DSA 算法的安全性源自計算離散算法的困難。這種算法僅用于數字簽名運算(不適用于數據加密)。Microsoft CSP 支持 DSA 算法。
          Diffie-Hellman-僅適用于密鑰交換。 Diffie-Hellman 是發明的第一個公鑰算法,以其發明者 Whitfield Diffie 和 Martin Hellman 的名字命名。Diffie-Hellman 算法的安全性源自在一個有限字段中計算離散算法的困難。Diffie-Hellman 算法僅用于密鑰交換。Microsoft Base DSS 3 和 Diffie-Hellman CSP 都支持 Diffie-Hellman 算法。
          單向散列算法
          散列-也稱為散列值或消息摘要,是一種與基于密鑰(對稱密鑰或公鑰)的加密不同的數據轉換類型。散列就是通過把一個叫做散列算法的單向數學函數應用于數據,將任意長度的一塊數據轉換為一個定長的、不可逆轉的數字。所產生的散列值的長度應足夠長,因此使找到兩塊具有相同散列值的數據的機會很少。發件人生成郵件的散列值并加密它,然后將它與郵件本身一起發送。而收件人同時解密郵件和散列值,并由接收到的郵件產生另外一個散列值,然后將兩個散列值進行比較。如果兩者相同,郵件極有可能在傳輸期間沒有發生任何改變。
          常用的單向散列函數
          下面是兩個最常用的散列函數:
          MD5。 MD5 是由 Ron Rivest 設計的可產生一個 128 位的散列值的散列算法。MD5 設計經過優化以用于 Intel 處理器。這種算法的基本原理已經泄露,這就是為什么它不太受歡迎的原因。
          SHA-1。與 DSA 公鑰算法相似,安全散列算法 1(SHA-1)也是由 NSA 設計的,并由 NIST 將其收錄到 FIPS 中,作為散列數據的標準。它可產生一個 160 位的散列值。SHA-1 是流行的用于創建數字簽名的單向散列算法。
          數字簽名:結合使用公鑰與散列算法
          可以結合使用公鑰技術與散列算法來創建數字簽名。數字簽名可用作數據完整性檢查并提供擁有私鑰的憑據。
          簽署和驗證數據(由啟用 PKI 的應用程序如 Microsoft Outlook 完成)的步驟如下:
          發件人將一種散列算法應用于數據,并生成一個散列值。
          發件人使用私鑰將散列值轉換為數字簽名。
          然后,發件人將數據、簽名及發件人的證書發給收件人。
          收件人將該散列算法應用于接收到的數據,并生成一個散列值。
          收件人使用發件人的公鑰和新生成的散列值驗證簽名。
          對用戶而言這一過程是透明的。
          散列算法處理數據的速度比公鑰算法快得多。散列數據還縮短了要簽名的數據的長度,因而加快了簽名過程。當創建或驗證簽名時,公鑰算法必須且只需轉換散列值(128 或 160 位的數據)。創建簽名和驗證簽名的詳細步驟取決于所采用的公鑰算法。
          密鑰交換:結合使用對稱密鑰與公鑰
          對稱密鑰算法非常適合于快速并安全地加密數據。但其缺點是,發件人和收件人必須在交換數據之前先交換機密密鑰。結合使用加密數據的對稱密鑰算法與交換機密密鑰的公鑰算法可產生一種既快速又靈活的解決方案。
          基于公鑰的密鑰交換步驟如下:
          發件人獲得收件人的公鑰。
          發件人創建一個隨機機密密鑰(在對稱密鑰加密中使用的單個密鑰)。在 Windows 2000 中,CryptoAPI4 可用于創建機密密鑰。(有關 CryptoAPI 的詳細信息,請參見下面的“證書鏈驗證”一節。)
          發件人使用機密密鑰和對稱密鑰算法將明文數據轉換為暗文數據。
          發件人使用收件人的公鑰將機密密鑰轉換為暗文機密密鑰。
          發件人將暗文數據和暗文機密密鑰一起發給收件人。
          收件人使用其私鑰將暗文機密密鑰轉換為明文。
          收件人使用明文機密密鑰將暗文數據轉換為明文數據。
          同樣,這些步驟是由啟用 PKI 的應用程序(如 Microsoft Outlook)來完成的,并且對用戶來說是透明的。
          公鑰基本結構的概念
          術語公鑰基本結構(PKI)用于描述管制或操縱證書與公鑰及私鑰的策略、標準和軟件。實際上,PKI 是指由數字證書、證書頒發機構 (CA) 以及對電子交易所涉及各方的合法性進行檢查和驗證的其它注冊機構組成的一套系統。PKI 的有關標準仍處于不斷發展之中,即使這些標準已被作為電子商務的要素而廣泛實施。
          本節幫助您理解什么是 PKI 以及創建 PKI 需要哪些服務。這些 PKI 概念將在下面幾個小節中討論:
          證書
          證書頒發機構 (CA)
          不可更改的 CA 層次結構
          注冊
          證書登記
          證書吊銷
          證書鏈驗證
          有關公鑰基本結構如何與 Windows 2000 集成的信息,請參見“其它信息”部分列出的到“Windows 2000 Certificate Services”白皮書的鏈接。
          證書
          公鑰證書,通常簡稱為證書,用于在 Internet、Extranet 和 Intranet 上進行身份驗證并確保數據交換的安全。證書的頒發者和簽署者就是眾所周知的證書頒發機構 (CA),將在下一節中介紹。頒發證書的實體是證書的主體。
          公鑰證書是以數字方式簽名的聲明,它將公鑰的值與持有相應私鑰的主體(個人、設備和服務)的身份綁定在一起。通過在證書上簽名,CA 可以核實與證書上公鑰相應的私鑰為證書所指定的主體所擁有。
          可以為各種目的頒發證書,如 Web 用戶身份驗證、Web 服務器身份驗證、使用安全/多用途 Internet 郵件擴充協議 (Secure/Multipurpose Internet Mail Extensions, S/MIME) 的安全電子郵件、IP 安全性 (IP Security)、安全套接字協議層/事務層安全性 (Secure Sockets Layer/Transaction Layer Security, SSL/TLS) 和代碼簽名。如果在一個組織內部使用 Windows 2000 企業證書頒發機構(在“Windows 2000 Certificate Services”白皮書中說明),證書可用于登錄到 Windows 2000 域。證書還可以由一個 CA 頒發給另一個 CA,以建立證書層次結構。
          可以通過多個名稱來識別主體,如用戶主要名稱(用于最終用戶證書)、目錄名、電子郵件名稱和 DNS 域名等。證書還應包含下列信息:
          證書的有效期。
          證書的序列號,CA 應保證該序列號是唯一的。
          CA 的名稱以及用于簽署該證書的密鑰。
          CA 所遵循的用來確定證書主體身份的策略的標識符(稍后將詳細介紹 CA 策略)。
          在證書中標識的密鑰對(公鑰及相關的私鑰)的用法。
          證書吊銷列表 (CRL) 的位置,這是一個由 CA 維護并發布的列出已被吊銷的證書的文檔。為確保其完整性,CRL 是用 CA 的私鑰簽署的。
          證書提供了一個在公鑰和擁有相應私鑰的實體之間建立關系的機制。目前最常用的證書格式通過 ITU-T X.509 版本 3 (X.509v3) 國際標準定義。RFC 2459 是 X.509v3 的一個配置文件,進一步闡明了 X.509v3 中定義的字段。Windows 2000 PKI 采用 X.509v3 標準。Windows 證書是按照 RFC 2459 中的說明編程的,但仍然叫做 X.509v3 證書。(有關 ITU-T X.509 的詳細信息,請參見“Windows 2000 證書服務”白皮書。)
          ITU-T X.509 并非證書的唯一格式。例如,Pretty Good Privacy (PGP) 安全電子郵件依賴 PGP 所獨有的一種證書。
          證書頒發機構
          證書頒發機構 (CA) 是一個向個人、計算機或任何其它申請實體頒發證書的可信實體。CA 受理證書申請,根據該 CA 的策略驗證申請人的信息,然后使用它的私鑰把其數字簽名應用于證書。然后,CA 將該證書頒發給該證書的主體,作為 PKI 內部的安全憑據。由于不同的 CA 使用不同的方法驗證公鑰與主體之間的綁定,在選擇信任該頒發機構之前,理解該 CA 的策略是非常重要的(稍后解釋)。
          CA 可以是遠程的第三方機構,如 VeriSign。作為選擇,也可以是您創建的供您所在組織使用的 CA,例如,通過安裝 Windows 2000 證書服務即可創建一個 CA。每個 CA 對證書申請人可能有完全不同的身份憑據要求,如 Windows 2000 域帳戶、職員標記、駕駛執照、公證請求或實際住址。
          CA 策略
          CA 根據也已確立的一套標準向申請人頒發證書。CA 在受理證書請求(以及頒發證書、吊銷證書和發布 CRL)時所采用的一套標準被稱為 CA 策略。通常,CA 以一種叫做證書慣例聲明 (Certification Practice Statement, CPS) 的文檔發布其策略。
          不應將 CA 策略與 Windows 2000 的術語“組策略”相混淆,后者通常與域帳戶和應用程序部署服務(如 IntelliMirror)相關聯。(關于 Windows 2000 中的 CA 策略以及組策略在 Windows 2000 PKI 中所扮演的角色的信息,請分別參見“Windows 2000 證書服務”白皮書中“Windows 2000 CA 策略”和“CA 證書分發”部分。)
          證書頒發機構的類型
          CA 的類型5包括以下三種:
          自簽名 CA。在自簽名 CA 中,證書中的公鑰和用于驗證證書的密鑰是相同的。一些自簽名 CA 是根 CA(參見第三項)。
          從屬 CA。在從屬 CA 中,證書中的公鑰和用于核實證書的密鑰是不同的。一個 CA 向另一個 CA 頒發證書的過程叫做交叉認證。
          根 CA。根 CA 是一種特殊的 CA,它受到客戶無條件地信任,位于證書層次結構的最高層。所有證書鏈均終止于根 CA。根頒發機構必須對它自己的證書簽名,因為在證書層次結構中再也沒有更高的認證機構了。
          所有自簽名 CA 都是根 CA,因為到自簽名 CA 時證書鏈就終止了。
          Windows 2000 只能指定一個自簽名 CA 為根 CA。將一個 CA 指定為根 CA 的決策由個人在企業級或本地做出。
          不可更改的 CA 層次結構
          管理員可以創建 CA 的層次結構,從根 CA 證書開始,然后添加中級 CA,每一個 CA 都可以為其從屬 CA 頒發證書。當 CA 向最終實體(用戶)頒發證書時,證書鏈就終止了。
          根 CA 證書的分發費用最高,因為如果您開始改變根證書,就必須重建整個 PKI。如果根證書改變了,就必須吊銷組織內所有客戶端的舊的根證書,并添加新的根證書。另外,必須重新頒發由根 CA 頒發的、再由從屬 CA 頒發給最終實體的所有證書。因此,在部署 CA 層次結構時,使用少量的長壽命根 CA 可提供最經濟的解決方案。根 CA 非常重要-因為它們被無條件地信任,因為它們是證書鏈的頂點-因此,在分發證書時要有一個圈外的身份驗證。也就是說,由于根 CA 是自簽名的,所以必須有人來證明根證書是真品。
          因為最終實體要比 CA 多得多,所以向最終實體頒發證書的 CA 使用私鑰在大量的數據上簽名。用來對數據簽名的密鑰使用得越頻繁,加密數據受到攻擊的可能性就越大。因此,為了保持安全,向最終實體頒發證書的聯機 CA 必須經常更換其簽名密鑰。
          向最終實體頒發證書的 CA 具有的吊銷證書列表,要比中級或根 CA 的列表大得多(這些 CA 僅向其它 CA,更多的是從屬 CA 頒發證書)。其部分原因是因為最終實體要比 CA 證書多得多。另外,有許多理由可以解釋為什么必須吊銷最終實體的證書,如職員改變了工作或離開了公司。
          CA 發布吊銷證書列表(CRL),其中列出了不應再使用的證書。被吊銷證書的有關條目將一直保留在 CRL 列表中,直至證書的有效期 結束之后,CA 才可將該證書從列表中刪除。CRL 中的條目越多,CRL 就越大,其下載時間就越長。通常,只有使用較慢的網絡鏈路(如撥號連接)的用戶才會遇到下載時間問題。CA 還可以管理 CRL 列表的大小。一種方法是維護多個列表,稱為分區 CRL。另一種方法是,縮短已頒發證書的有效期,從而加快 CA 從列表中刪除吊銷證書的速度。(關于 CRL 的詳細信息,請參見“證書吊銷”一節。)
          許多應用程序必須能夠查明證書最近的吊銷狀態信息。只有一個聯機 CA 能夠發布有關證書狀態的當前信息。由脫機 CA 公布的吊銷狀態,必須使用圈外的方法發布到聯機位置。
          大多數容易受到攻擊的 CA 都是處于聯機狀態的、物理安全措施較差并簽署了大量證書的 CA。因此,建立根 CA 和從屬 CA 時,應該平衡一下安全性和可用性。通常,建議采用三級層次結構,即一個脫機的獨立根 CA、一個脫機的獨立從屬策略 CA 和一個聯機從屬頒發企業 CA。
          脫機根 CA。 在設計 CA 的層次結構時,根 CA 的安全級別應設為最高。根 CA 應以脫機狀態保存在安全的位置,并且用它只簽署少量證書。可能的話,應該將 CA 和密鑰保存在專門的保管庫中,并且至少同時有兩位操作員進入該保管庫,一位執行規定的操作,另一位審核其操作。(在 Windows 2000 網絡中,設計了獨立的 CA,以便它們脫機運行。)
          脫機中級 CA。在一個根 CA 下面可以有一個或多個從屬 CA。將中級從屬 CA 設為脫機的機器,可以提高該 CA 的安全性。
          聯機頒發 CA。 CA 鏈中最后一級的 CA 必須處于聯機狀態,因此可用于受理來自眾多客戶機的證書申請。根 CA 下面的聯機 CA 也可以經常發布最新的吊銷狀態信息。管理員可以頻繁地更改這種 CA 的密鑰,因為頒發新證書的開銷(管理方面的開銷)是最低的。從屬 CA 并不完全是可任意使用的,但通過攻擊從屬 CA 并不能得到多少有價值的東西,而且高級 CA 通過吊銷證書即可輕而易舉地阻擋這種攻擊。
          注冊
          注冊 就是主體向 CA 自我介紹的過程。在申請證書時,注冊可以是隱含的,或通過為主體提供擔保的另一個可信實體(如智能卡登記站)來完成,或者在收到來源可信(如來自域管理員)的信息時自動完成。一旦向 CA 進行了注冊,只要符合按照 CA 策略建立的標準,證書即被頒發給該主體。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 锡林浩特市| 保亭| 武胜县| 岱山县| 乌海市| 南木林县| 平果县| 临澧县| 万盛区| 西盟| 循化| 姜堰市| 南郑县| 韩城市| 西乌| 大庆市| 沈阳市| 朝阳区| 崇文区| 八宿县| 阳东县| 海安县| 肥乡县| 壤塘县| 东安县| 肇东市| 隆德县| 滨州市| 古浪县| 竹山县| 江城| 海宁市| 平武县| 信丰县| 佛山市| 嵩明县| 桃园市| 财经| 深州市| 定兴县| 五原县|