加密和 PKI 基礎知識 (轉)
2000 Server白皮書
2000年7月5日釋出
摘要
本白皮書介紹了和公鑰基本結構(PKI)的概念和使用 Microsoft Server 操作中的證書服務的基礎知識。如果您還不熟悉加密和公鑰技術,先閱讀本白皮書將有助於理解 Windows 2000 站點上有關這些主題的其它技術白皮書。
引言
Microsoft Windows 2000 證書服務提供的整合的公鑰基本結構(PKI)使電子商務能夠在的環境中進行。本白皮書介紹了加密和 PKI 的概念。理解這些相關概念是理解證書服務功能的先決條件,證書服務是 Microsoft Windows 2000 Server 中的一個。
如果您不熟悉加密和公鑰技術,請先閱讀本白皮書,然後在“其它資訊”部分列出的連結中查詢以下相關的技術性更強的白皮書:
- Windows 2000 證書服務
- Windows 2000 PKI 部署和智慧卡登入問題疑難解答
- Microsoft Windows 2000 公鑰基本結構
- 公鑰的互操作性
加密概念
加密是透過 Intr、Extranet 和 Internet 進行安全的資訊的基礎。從業務的角度來看,透過加密實現的安全功能包括:身份驗證,使收件人確信發件人就是他或她所宣告的那個人;機密性,確保只有預期的收件人能夠閱讀;以及完整性,確保郵件在傳輸過程中沒有被更改。從技術的角度來看,加密是利用數學方法將郵件轉換為不可讀格式從而達到保護資料的目的的一門科學。
本節介紹下列加密概念:
- 對稱金鑰加密:一個金鑰
- 公鑰加密:兩個金鑰
- 單向雜湊演算法
- 數字簽名:結合使用公鑰與雜湊
- 金鑰交換:結合使用對稱金鑰與公鑰
前三個小節分別定義並說明對稱金鑰加密、公鑰加密和雜湊演算法。後兩個小節說明組合使用 這些技術的方法-尤其是,將公鑰演算法與雜湊演算法相結合以建立數字簽名,以及將對稱演算法與公鑰演算法相結合使交換密(私)鑰成為可能。
對稱金鑰加密:一個金鑰
對稱金鑰加密,也叫做共享金鑰加密或機密金鑰加密,使用發件人和收件人共同擁有的單個金鑰。這種金鑰既用於加密,也用於,叫做機密金鑰(也稱為對稱金鑰或會話金鑰)。對稱金鑰加密是加密大量資料的一種行之有效的方法。.
對稱金鑰加密有許多種演算法,但所有這些演算法都有一個共同的目的-以可還原的方式將明文(未加密的資料)轉換為暗文。暗文使用加密金鑰編碼,對於沒有解密金鑰的任何人來說它都是沒有意義的。由於對稱金鑰加密在加密和解密時使用相同的金鑰,所以這種加密過程的安全性取決於是否有未經授權的人獲得了對稱金鑰。這就是它為什麼也叫做機密金鑰加密的原因。希望使用對稱金鑰加密通訊的雙方,在交換加密資料之前必須先安全地交換金鑰。
衡量對稱演算法優劣的主要尺度是其金鑰的長度。金鑰越長,在找到解密資料所需的正確金鑰之前必須測試的金鑰數量就越多。需要測試的金鑰越多,這種演算法就越困難。有了好的加密演算法和足夠長的金鑰,如果有人想在一段實際可行的時間內逆轉轉換過程,並從暗文中推匯出明文,從計算的角度來講,這種做法是行不通的。
公鑰加密:兩個金鑰
公鑰加密使用兩個金鑰-一個公鑰 和一個私鑰,這兩個金鑰在數學上是相關的。為了與對稱金鑰加密相對照,公鑰加密有時也叫做不對稱金鑰加密。在公鑰加密中,公鑰可在通訊雙方之間公開傳遞,或在公用儲備庫中釋出,但相關的私鑰是保密的。只有使用私鑰才能解密用公鑰加密的資料。使用私鑰加密的資料只能用公鑰解密。在圖 1 中,發件人擁有收件人的公鑰,並用它加密了一封郵件,但只有收件人掌握解密該郵件的有關私鑰。
如果您的不支援行內框,請單擊此處檢視獨立的頁面。
圖 1 公鑰加密要求使用一個公鑰和一個私鑰。
與對稱金鑰加密相似,公鑰加密也有許多種演算法。然而,對稱金鑰和公鑰演算法在設計上並無相似之處。您可以在內部使用一種對稱演算法替換另一種,而變化卻不大,因為它們的工作方式是相同的。而另一方面,不同公鑰演算法的工作方式卻完全不同,因此它們不可互換。
公鑰演算法是複雜的數學方程式,使用十分大的數字。公鑰演算法的主要侷限在於,這種加密形式的速度相對較低。實際上,通常僅在關鍵時刻才使用公鑰演算法,如在實體之間交換對稱金鑰時,或者在簽署一封郵件的雜湊時(雜湊是透過應用一種單向數學獲得的一個定長結果,對於資料而言,叫做雜湊演算法)。將公鑰加密與其它加密形式(如對稱金鑰加密)結合使用,可以。公鑰加密提供了一種有效的方法,可用來把為大量資料對稱加密時使用的機密金鑰傳送給某人。也可以將公鑰加密與雜湊演算法結合使用以生成數字簽名。
若要進一步瞭解關於將公鑰加密與對稱金鑰加密或雜湊演算法結合使用的資訊,請參見下面兩節:“數字簽名: 結合使用公鑰與雜湊演算法”和“金鑰交換:結合使用對稱金鑰與公鑰”
將公鑰加密用於數字簽名
數字簽名是郵件、或其它數字編碼資訊的發件人將他們的身份與資訊繫結在一起(即為資訊提供簽名)的方法。對資訊進行數字簽名的過程,需要將資訊與由發件人掌握的秘密資訊一起轉換為叫做簽名的標記。數字簽名用於公鑰環境中,它透過驗證發件人確實是他或她所宣告的那個人,並確認收到的郵件與傳送的郵件完全相同,來幫助確保電子商務交易的安全。
通常,數字簽名用於以明文(如電子郵件)分發資料的情形。在這種情況下,當郵件本身的敏感性可能無法保證加密的安全性時,確保資料處於其原始格式且並非由假冒者傳送,是非常重要的。
要了解如何結合使用公鑰與雜湊演算法來建立數字簽名,請參見下面的“數字簽名: 結合使用公鑰與雜湊演算法”一節
常用公鑰演算法
下面是三種最常用的公鑰演算法:
- RSA-適用於數字簽名和金鑰交換。Rivest-Shamir-Adleman (RSA) 加密演算法是目前應用最廣泛的公鑰加密演算法,特別適用於透過 Internet 傳送的資料。這種演算法以它的三位發明者的名字命名:Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 演算法的安全性基於分解大數字時的困難(就處理能力和處理時間而言)。在常用的公鑰演算法中,RSA 與眾不同,它能夠進行數字簽名和金鑰交換運算。Microsoft Base Cryptographic Service Provr (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 Diff和 Martin Hellman 的名字命名。Diffie-Hellman 演算法的安全性源自在一個有限欄位中計算離散演算法的困難。Diffie-Hellman 演算法僅用於金鑰交換。Microsoft Base DSS 3 和 Diffie-Hellman CSP 都支援 Diffie-Hellman 演算法。
單向雜湊演算法
雜湊-也稱為雜湊值 或訊息摘要,是一種與基於金鑰(對稱金鑰或公鑰)的加密不同的資料轉換型別。雜湊就是透過把一個叫做雜湊演算法的單向數學函式應用於資料,將任意長度的一塊資料轉換為一個定長的、不可逆轉的數字。所產生的雜湊值的長度應足夠長,因此使找到兩塊具有相同雜湊值的資料的機會很少。發件人生成郵件的雜湊值並加密它,然後將它與郵件本身一起傳送。而收件人同時解密郵件和雜湊值,並由接收到的郵件產生另外一個雜湊值,然後將兩個雜湊值進行比較。如果兩者相同,郵件極有可能在傳輸期間沒有發生任何改變。
常用的單向雜湊函式
下面是兩個最常用的雜湊函式:
- MD5。 MD5 是由 Ron Rivest 設計的可產生一個 128 位的雜湊值的雜湊演算法。MD5 設計經過最佳化以用於 。這種演算法的基本原理已經洩露,這就是為什麼它不太受歡迎的原因。
- SHA-1。與 DSA 公鑰演算法相似,安全雜湊演算法 1(SHA-1)也是由 NSA 設計的,並由 NIST 將其收錄到 FIPS 中,作為雜湊資料的標準。它可產生一個 160 位的雜湊值。SHA-1 是流行的用於建立數字簽名的單向雜湊演算法。
數字簽名:結合使用公鑰與雜湊演算法
可以結合使用公鑰技術與雜湊演算法來建立數字簽名。數字簽名可用作資料完整性檢查並提供擁有私鑰的憑據。
簽署和驗證資料(由啟用 PKI 的應用程式如 Microsoft 完成)的步驟如下:
- 發件人將一種雜湊演算法應用於資料,並生成一個雜湊值。
- 發件人使用私鑰將雜湊值轉換為數字簽名。
- 然後,發件人將資料、簽名及發件人的證書發給收件人。
- 收件人將該雜湊演算法應用於接收到的資料,並生成一個雜湊值。
- 收件人使用發件人的公鑰和新生成的雜湊值驗證簽名。
對而言這一過程是透明的。
雜湊演算法處理資料的速度比公鑰演算法快得多。雜湊資料還縮短了要簽名的資料的長度,因而加快了簽名過程。當建立或驗證簽名時,公鑰演算法必須且只需轉換雜湊值(128 或 160 位的資料)。建立簽名和驗證簽名的詳細步驟取決於所採用的公鑰演算法。
金鑰交換:結合使用對稱金鑰與公鑰
對稱金鑰演算法非常適合於並安全地加密資料。但其缺點是,發件人和收件人必須在交換資料之前先交換機密金鑰。結合使用加密資料的對稱金鑰演算法與交換機密金鑰的公鑰演算法可產生一種既快速又靈活的解決方案。
基於公鑰的金鑰交換步驟如下:
- 發件人獲得收件人的公鑰。
- 發件人建立一個隨機機密金鑰(在對稱金鑰加密中使用的單個金鑰)。在 Windows 2000 中,Crypto4 可用於建立機密金鑰。(有關 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 Extensions, S/MIME) 的安全電子郵件、安全性 (IP Security)、安全套接字協議層/事務層安全性 (Secure Sockets Layer/Transaction Layer Security, /TLS) 和程式碼簽名。如果在一個組織內部使用 Windows 2000 企業證書頒發機構(在“Windows 2000 Certificate Services”白皮書中說明),證書可用於登入到 Windows 2000 域。證書還可以由一個 CA 頒發給另一個 CA,以建立證書層次結構。
可以透過多個名稱來識別主體,如使用者主要名稱(用於終端使用者證書)、目錄名、電子郵件名稱和 域名等。證書還應包含下列資訊:
- 證書的有效期。
- 證書的序列號,CA 應保證該序列號是唯一的。
- CA 的名稱以及用於簽署該證書的金鑰。
- CA 所遵循的用來確定證書主體身份的策略的識別符號(稍後將詳細介紹 CA 策略)。
- 在證書中標識的金鑰對(公鑰及相關的私鑰)的用法。
- 證書吊銷列表 (CRL) 的位置,這是一個由 CA 維護併發布的列出已被吊銷的證書的文件。為確保其完整性,CRL 是用 CA 的私鑰簽署的。
證書提供了一個在公鑰和擁有相應私鑰的實體之間建立關係的機制。目前最常用的證書格式透過 ITU-T X.509 版本 3 (X.509v3) 國際標準定義。 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 證書多得多。另外,
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987344/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PKI基礎 (轉)
- HTML基礎知識(轉)HTML
- SQLAlchemy 基礎知識 - autoflush 和 autocommit(轉)SQLMIT
- [轉]Linux基礎知識Linux
- 交換機基礎知識(轉)
- korn shell基礎知識(轉)
- SSL和CA基礎知識
- GMAC和PHY基礎知識Mac
- 【轉】JavaScript物件的基礎知識JavaScript物件
- 裸裝置基礎知識(轉)
- PKI技術基礎I
- PKI技術基礎II
- 基礎知識
- 前端-html和css基礎知識前端HTMLCSS
- oracle架構的基礎知識(轉)Oracle架構
- SQL Server 連線基礎知識(轉)SQLServer
- 基礎知識6——建立和管理角色
- AI 基礎知識AI
- Webpack 基礎知識Web
- Dart基礎知識Dart
- RabbitMQ基礎知識MQ
- webpack基礎知識Web
- javascript基礎知識JavaScript
- ThinkPHP基礎知識PHP
- Laravel基礎知識Laravel
- Redis基礎知識Redis
- Docker基礎知識Docker
- 程式基礎知識
- Envoy基礎知識
- DockerFile基礎知識Docker
- Nginx基礎知識Nginx
- CSS基礎知識CSS
- Java基礎知識Java
- PRML 基礎知識
- BGP基礎知識
- PHP基礎知識PHP
- React基礎知識React
- httpclient基礎知識HTTPclient