信息加密與PKI

加密概念
加密是通過Intranet、Extranet和Internet進行安全的信息交換的基礎。從業務的角度來看,通過加密實現的安全功能包括:身份驗證,使收件人確信發件人就是他或她所聲明的那個人;機密性,確保只有預期的收件人能夠閱讀郵件;以及完整性,確保郵件在傳輸過程中沒有被更改。從技術的角度來看,加密是利用數學方法將郵件轉換爲不可讀格式從而達到保護數據的目的的一門科學。
本文將介紹下列加密概念:
對稱密鑰加密:一個密鑰
公鑰加密:兩個密鑰
單向散列算法
數字簽名:結合使用公鑰與散列
密鑰交換:結合使用對稱密鑰與公鑰
對稱密鑰加密:一個密鑰
對稱密鑰加密,也叫做共享密鑰加密或機密密鑰加密,使用發件人和收件人共同擁有的單個密鑰。這種密鑰既用於加密,也用於解密,叫做機密密鑰(也稱爲對稱密鑰或會話密鑰)。對稱密鑰加密是加密大量數據的一種行之有效的方法。
對稱密鑰加密有許多種算法,但所有這些算法都有一個共同的目的---可以還原的方式將明文(未加密的數據)轉換爲暗文。暗文使用加密密鑰編碼,對於沒有解密密鑰的任何人來說它都是沒有意義的。由於對稱密鑰加密在加密和解密時使用相同的密鑰,所以這種加密過程的安全性取決於是否有未經授權的人獲得了對稱密鑰。這就是它爲什麼也叫做機密密鑰加密的原因。希望使用對稱密鑰加密通信的雙方,在交換加密數據之前必須先安全地交換密鑰。
衡量對稱算法優劣的主要尺度是其密鑰的長度。密鑰越長,在找到解密數據所需的正確密鑰之前必須測試的密鑰數量就越多。需要測試的密鑰越多,破解這種算法就越困難。有了好的加密算法和足夠長的密鑰,如果有人想在一段實際可行的時間內逆轉轉換過程,並從暗文中推導出明文,從計算的角度來講,這種做法是行不通的。
公鑰加密:兩個密鑰
公鑰加密使用兩個密鑰:一個公鑰 和一個私鑰,這兩個密鑰在數學上是相關的。爲了與對稱密鑰加密相對照,公鑰加密有時也叫做不對稱密鑰加密。在公鑰加密中,公鑰可在通信雙方之間公開傳遞,或在公用儲備庫中發佈,但相關的私鑰是保密的。只有使用私鑰才能解密用公鑰加密的數據。使用私鑰加密的數據只能用公鑰解密。與對稱密鑰加密相似,公鑰加密也有許多種算法。然而,對稱密鑰和公鑰算法在設計上並無相似之處。您可以在程序內部使用一種對稱算法替換另一種,而變化卻不大,因爲它們的工作方式是相同的。而另一方面,不同公鑰算法的工作方式卻完全不同,因此它們不可互換。公鑰算法是複雜的數學方程式,使用十分大的數字。公鑰算法的主要侷限在於,這種加密形式的速度相對較低。實際上,通常僅在關鍵時刻才使用公鑰算法,如在實體之間交換對稱密鑰時,或者在簽署一封郵件的散列時(散列是通過應用一種單向數學函數獲得的一個定長結果,對於數據而言,叫做散列算法)。將公鑰加密與其它加密形式(如對稱密鑰加密)結合使用,可以優化性能。公鑰加密提供了一種有效的方法,可用來把爲大量數據執行對稱加密時使用的機密密鑰發送給某人。也可以將公鑰加密與散列算法結合使用以生成數字簽名。
將公鑰加密用於數字簽名
數字簽名是郵件、文件或其它數字編碼信息的發件人將他們的身份與信息綁定在一起(即爲信息提供簽名)的方法。對信息進行數字簽名的過程,需要將信息與由發件人掌握的祕密信息一起轉換爲叫做簽名的標記。數字簽名用於公鑰環境中,它通過驗證發件人確實是他或她所聲明的那個人,並確認收到的郵件與發送的郵件完全相同,來幫助確保電子商務交易的安全。通常,數字簽名用於以明文(如電子郵件)分發數據的情形。在這種情況下,當郵件本身的敏感性可能無法保證加密的安全性時,確保數據處於其原始格式且並非由假冒者發送,是非常重要的。
常用公鑰算法
下面是三種最常用的公鑰算法:
RSA-適用於數字簽名和密鑰交換。Rivest-Shamir-Adleman (RSA) 加密算法是目前應用最廣泛的公鑰加密算法,特別適用於通過 Internet 傳送的數據。這種算法以它的三位發明者的名字命名:Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 算法的安全性基於分解大數字時的困難(就計算機處理能力和處理時間而言)。在常用的公鑰算法中,RSA 與衆不同,它能夠進行數字簽名和密鑰交換運算。
DSA-僅適用於數字簽名。數字簽名算法 (Digital Signature Algorithm, DSA) 由美國國家安全署 (United States National Security Agency, NSA) 發明,已經由美國國家標準與技術協會 (National Institute of Standards and Technology, NIST) 收錄到聯邦信息處理標準 (Federal Information Processing Standard, FIPS) 之中,作爲數字簽名的標準。DSA 算法的安全性源自計算離散算法的困難。這種算法僅用於數字簽名運算(不適用於數據加密)。
Diffie-Hellman-僅適用於密鑰交換。 Diffie-Hellman 是發明的第一個公鑰算法,以其發明者 Whitfield Diffie 和 Martin Hellman 的名字命名。Diffie-Hellman 算法的安全性源自在一個有限字段中計算離散算法的困難。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位的數據)。創建簽名和驗證簽名的詳細步驟取決於所採用的公鑰算法。
密鑰交換:結合使用對稱密鑰與公鑰
對稱密鑰算法非常適合於快速並安全地加密數據。但其缺點是,發件人和收件人必須在交換數據之前先交換機密密鑰。結合使用加密數據的對稱密鑰算法與交換機密密鑰的公鑰算法可產生一種既快速又靈活的解決方案。
基於公鑰的密鑰交換步驟如下:
發件人獲得收件人的公鑰。
發件人創建一個隨機機密密鑰(在對稱密鑰加密中使用的單個密鑰)。
發件人使用機密密鑰和對稱密鑰算法將明文數據轉換爲暗文數據。
發件人使用收件人的公鑰將機密密鑰轉換爲暗文機密密鑰。
發件人將暗文數據和暗文機密密鑰一起發給收件人。
收件人使用其私鑰將暗文機密密鑰轉換爲明文。
收件人使用明文機密密鑰將暗文數據轉換爲明文數據。
同樣,這些步驟是由啓用PKI的應用程序(如Microsoft Outlook)來完成的,並且對用戶來說是透明的。 
公鑰基本結構的概念
術語公鑰基本結構(PKI)用於描述管制或操縱證書與公鑰及私鑰的策略、標準和軟件。實際上,PKI 是指由數字證書、證書頒發機構(CA) 以及對電子交易所涉及各方的合法性進行檢查和驗證的其它註冊機構組成的一套系統。PKI的有關標準仍處於不斷髮展之中,即使這些標準已被作爲電子商務的要素而廣泛實施。
PKI一般包括:
證書
證書頒發機構 (CA)
不可更改的CA層次結構
註冊
證書登記
證書吊銷
證書鏈驗證
證書
公鑰證書,通常簡稱爲證書,用於在 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 域。證書還可以由一個 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 並非證書的唯一格式。例如,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 的類型包括以下三種:
自簽名 CA。在自簽名 CA 中,證書中的公鑰和用於驗證證書的密鑰是相同的。一些自簽名 CA 是根 CA
從屬 CA。在從屬 CA 中,證書中的公鑰和用於覈實證書的密鑰是不同的。一個 CA 向另一個 CA 頒發證書的過程叫做交叉認證。
根 CA。根 CA 是一種特殊的 CA,它受到客戶無條件地信任,位於證書層次結構的最高層。所有證書鏈均終止於根 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 從列表中刪除吊銷證書的速度。
許多應用程序必須能夠查明證書最近的吊銷狀態信息。只有一個聯機 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 策略建立的標準,證書即被頒發給該主體。
證書登記
證書登記 就是最終實體進行證書申請並從 CA 接收證書的過程。證書申請就是向 CA 提供身份信息,該信息隨後將成爲所頒發證書的一部分。CA 根據一套標準受理申請,該標準可能要求進行脫機的、非自動的身份驗證(圈外的身份驗證)。如果申請被成功受理,CA 隨後將向該用戶頒發證書。
通過註冊機構進行證書登記
一種特殊的證書登記可通過註冊機構 (Registration Authority, RA) 來完成,RA 可爲 CA 提供擔保,以便將公鑰與預期的證書持有人的身份及屬性綁定在一起。RA 是擁有特殊證書的主體。這種特殊的證書包含有可以向CA表明主體身份的信息。通常,RA 在公鑰和主體之間建立綁定,然後在主體生成的申請上簽名,以便向 CA 提供該 RA 即將爲綁定擔保的證據。本質上,使用 RA 是管理委派的一種形式-CA 委派 RA 執行驗證公鑰和實體之間綁定的任務。
RA 生成在主體和公鑰之間建立的牢固綁定的證書。在 Windows 2000 操作系統中,證書服務使用域身份驗證來識別申請大多數類型證書的用戶身份。創建智能卡登錄證書的 Windows 2000 智能卡登記站由 RA 使用。RA 可驗證智能卡收件人的身份,同時提供比域身份驗證單獨完成的主體與公鑰之間的綁定更加牢固的綁定。
證書吊銷
證書具有一個指定的壽命,但 CA 可通過稱爲證書吊銷的過程來縮短這一壽命。CA 發佈一個證書吊銷列表 (CRL),列出被認爲不能再使用的證書的序列號。CRL 指定的壽命通常比證書指定的壽命短得多。CA 也可以在 CRL 中加入證書被吊銷的理由。它還可以加入被認爲這種狀態改變所適用的起始日期。
可將下列情況指定爲吊銷證書的理由:
泄露密鑰
泄露 CA
從屬關係改變
被取代
業務終止
證書持有(這是唯一讓您能夠改變被吊銷證書狀態的理由碼,在證書狀態有問題的情況下非常有用)
由 CA吊銷證書意味着,CA 在證書正常到期之前撤銷其允許使用該密鑰對的有關聲明。在吊銷的證書到期之後,CRL 中的有關條目被刪除,以縮短 CRL 列表的大小。
在驗證簽名期間,應用程序可以檢查 CRL,以確定給定證書和密鑰對是否仍然可信。如果不可信,應用程序可以判斷吊銷的理由或日期對使用有疑問證書是否有影響。如果該證書被用來驗證簽名,且簽名的日期早於 CA 吊銷該證書的日期,那麼該簽名仍被認爲是有效的。
應用程序獲得 CRL 之後,由客戶機緩存 CRL ,在它到期之前客戶機將一直使用它。如果 CA 發佈了新的 CRL,擁有有效 CRL 的應用程序並不使用新的 CRL,直到應用程序擁有的 CRL 到期爲止。
證書鏈確認
Microsoft CryptoAPI 提供了一個標準的框架,應用程序可用此框架來獲得加密服務和數字證書服務。除了 CryptoAPI 爲 Windows 95、Windows 98、Windows NT 和 Windows 2000 提供的標準服務以外,第三方供應商可開發並銷售他們自己的插件模塊,提供附加的加密服務。
在 Windows 網絡中,爲新證書生成一個請求時,該請求中的信息首先被從請求程序傳遞給 CryptoAPI。然後,CryptoAPI 把相應的數據傳遞給一個稱爲加密服務提供程序 (CSP)的程序,該程序安裝在您的計算機上,或安裝在您的計算機可以訪問的某種設備(如智能卡)上。CSP 是一個執行諸如機密密鑰交換、數據的數字簽名以及公鑰身份驗證之類的加密操作的獨立軟件模塊。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章