加密解密(0)公鑰,私鑰,對稱加密,非對稱加密簡介

PKI 基礎知識 git

1.摘要

  本白皮書介紹了加密和公鑰基本結構(PKI)的概念和使用 Microsoft Windows 2000 Server 操做系統中的證書服務的基礎知識。若是您還不熟悉加密和公鑰技術,先閱讀本白皮書將有助於理解 Windows 2000 Web 站點上有關這些主題的其它技術白皮書。算法

2.引言

  Microsoft Windows 2000 證書服務提供的集成的公鑰基本結構(PKI)使電子商務可以在安全的環境中進行。本白皮書介紹了加密和 PKI 的概念。理解這些相關概念是理解證書服務功能的先決條件,證書服務是 Microsoft Windows 2000 Server 操做系統中的一個組件。安全

3.加密概念

  加密是經過 Intranet、Extranet 和 Internet 進行安全的信息交換的基礎。從業務的角度來看,經過加密實現的安全功能包括: 身份驗證 ,使收件人確信發件人就是他或她所聲明的那我的; 機密性 ,確保只有預期的收件人可以閱讀郵件;以及 完整性 ,確保郵件在傳輸過程當中沒有被更改。從技術的角度來看,加密是利用數學方法將郵件轉換爲不可讀格式從而達到保護數據的目的的一門科學。ide

本節介紹下列加密概念:函數

  • 對稱密鑰加密:一個密鑰
  • 公鑰加密:兩個密鑰
  • 單向散列算法
  • 數字簽名:結合使用公鑰與散列
  • 密鑰交換:結合使用對稱密鑰與公鑰

前三個小節分別定義並說明對稱密鑰加密、公鑰加密和散列算法。後兩個小節說明 組合使用 這些技術的方法-尤爲是,將公鑰算法與散列算法相結合以建立數字簽名,以及將對稱算法與公鑰算法相結合使交換密(私)鑰成爲可能。性能

4.對稱密鑰加密:一個密鑰

  對稱密鑰加密,也叫作共享密鑰加密或機密密鑰加密,使用發件人和收件人共同擁有的單個密鑰。這種密鑰既用於加密,也用於解密,叫作機密密鑰 (也稱爲 對稱密鑰 或 會話密鑰 )。對稱密鑰加密是加密大量數據的一種行之有效的方法。.測試

對稱密鑰加密有許多種算法,但全部這些算法都有一個共同的目的-以可還原的方式將 明文 (未加密的數據)轉換爲 暗文 。暗文使用加密密鑰編碼,對於沒有解密密鑰的任何人來講它都是沒有意義的。因爲對稱密鑰加密在加密和解密時使用相同的密鑰,因此這種加密過程的安全性取決因而否有未經受權的人得到了對稱密鑰。這就是它爲何也叫作機密密鑰加密的緣由。但願使用對稱密鑰加密通訊的雙方,在交換加密數據以前必須先安全地交換密鑰。優化

衡量對稱算法優劣的主要尺度是其密鑰的長度。密鑰越長,在找到解密數據所需的正確密鑰以前必須測試的密鑰數量就越多。須要測試的密鑰越多,破解這種算法就越困難。有了好的加密算法和足夠長的密鑰,若是有人想在一段實際可行的時間內逆轉轉換過程,並從暗文中推導出明文,從計算的角度來說,這種作法是行不通的。編碼

5.非對稱加密(公鑰加密):兩個密鑰

  公鑰加密使用兩個密鑰- 一個公鑰 和 一個私鑰 ,這兩個密鑰在數學上是相關的。爲了與對稱密鑰加密相對照,公鑰加密有時也叫作不對稱密鑰加密。在公鑰加密中,公鑰可在通訊雙方之間公開傳遞,或在公用儲備庫中發佈,但相關的私鑰是保密的。只有使用私鑰才能解密用公鑰加密的數據。使用私鑰加密的數據只能用公鑰解密。在圖 1 中,發件人擁有收件人的公鑰,並用它加密了一封郵件,但只有收件人掌握解密該郵件的有關私鑰。加密


圖 1 公鑰加密要求使用一個公鑰和一個私鑰。

  與對稱密鑰加密類似,公鑰加密也有許多種算法。然而,對稱密鑰和公鑰算法在設計上並沒有類似之處。您能夠在程序內部使用一種對稱算法替換另外一種,而變化卻不大,由於它們的工做方式是相同的。而另外一方面,不一樣公鑰算法的工做方式卻徹底不一樣,所以它們不可互換。

公鑰算法是複雜的數學方程式,使用十分大的數字。公鑰算法的主要侷限在於,這種加密形式的速度相對較低。實際上,一般僅在關鍵時刻才使用公鑰算法,如在實體之間交換對稱密鑰時,或者在簽署一封郵件的散列時(散列是經過應用一種單向數學函數得到的一個定長結果,對於數據而言,叫作散列算法)。將公鑰加密與其它加密形式(如對稱密鑰加密)結合使用,能夠優化性能。公鑰加密提供了一種有效的方法,可用來把爲大量數據執行對稱加密時使用的機密密鑰發送給某人。也能夠將公鑰加密與散列算法結合使用以生成數字簽名。

若要進一步瞭解關於將公鑰加密與對稱密鑰加密或散列算法結合使用的信息,請參見下面兩節:「數字簽名: 結合使用公鑰與散列算法」和「密鑰交換:結合使用對稱密鑰與公鑰」

6.將公鑰加密用於數字簽名

  數字簽名是郵件、文件或其它數字編碼信息的發件人將他們的身份與信息綁定在一塊兒(即爲信息提供簽名)的方法。對信息進行數字簽名的過程,須要將信息與由發件人掌握的祕密信息一塊兒轉換爲叫作簽名的標記。數字簽名用於公鑰環境中,它經過驗證發件人確實是他或她所聲明的那我的,並確認收到的郵件與發送的郵件徹底相同,來幫助確保電子商務交易的安全。

一般,數字簽名用於以明文(如電子郵件)分發數據的情形。在這種狀況下,當郵件自己的敏感性可能沒法保證加密的安全性時,確保數據處於其原始格式且並不是由假冒者發送,是很是重要的。

要了解如何結合使用公鑰與散列算法來建立數字簽名,請參見下面的「數字簽名: 結合使用公鑰與散列算法」一節

7.經常使用公鑰算法

下面是三種最經常使用的公鑰算法:

  • RSA -適用於數字簽名和密鑰交換。 Rivest-Shamir-Adleman (RSA) 加密算法是目前應用最普遍的公鑰加密算法,特別適用於經過 Internet 傳送的數據。這種算法以它的三位發明者的名字命名:Ron Rivest、Adi Shamir 和 Leonard Adleman。RSA 算法的安全性基於分解大數字時的困難(就計算機處理能力和處理時間而言)。在經常使用的公鑰算法中,RSA 不同凡響,它可以進行數字簽名和密鑰交換運算。Microsoft Base Cryptographic Service Provider (Microsoft Base CSP 1 ) 支持 RSA 加密算法,而且 Microsoft Enhanced Cryptographic Service Provider (Microsoft Enhanced CSP 2 ) 已經內置到包括 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 算法。

8.單向散列算法

  散列-也稱爲 散列值 或 消息摘要 ,是一種與基於密鑰(對稱密鑰或公鑰)的加密不一樣的數據轉換類型。散列就是經過把一個叫作散列算法的單向數學函數應用於數據,將任意長度的一塊數據轉換爲一個定長的、不可逆轉的數字。所產生的散列值的長度應足夠長,所以使找到兩塊具備相同散列值的數據的機會不多。發件人生成郵件的散列值並加密它,而後將它與郵件自己一塊兒發送。而收件人同時解密郵件和散列值,並由接收到的郵件產生另一個散列值,而後將兩個散列值進行比較。若是二者相同,郵件極有可能在傳輸期間沒有發生任何改變。

9.經常使用的單向散列函數

下面是兩個最經常使用的散列函數:

  • MD5 。 MD5 是由 Ron Rivest 設計的可產生一個 128 位的散列值的散列算法。MD5 設計通過優化以用於 Intel 處理器。這種算法的基本原理已經泄露,這就是爲何它不太受歡迎的緣由。
  • SHA-1 。 與 DSA 公鑰算法類似,安全散列算法 1(SHA-1)也是由 NSA 設計的,並由 NIST 將其收錄到 FIPS 中,做爲散列數據的標準。它可產生一個 160 位的散列值。SHA-1 是流行的用於建立數字簽名的單向散列算法。

10.數字簽名:結合使用公鑰與散列算法

  能夠結合使用公鑰技術與散列算法來建立數字簽名。數字簽名可用做數據完整性檢查並提供擁有私鑰的憑據。

簽署和驗證數據(由啓用 PKI 的應用程序如 Microsoft Outlook 完成)的步驟以下:

  • 發件人將一種散列算法應用於數據,並生成一個散列值。
  • 發件人使用私鑰將散列值轉換爲數字簽名。
  • 而後,發件人將數據、簽名及發件人的證書發給收件人。
  • 收件人將該散列算法應用於接收到的數據,並生成一個散列值。
  • 收件人使用發件人的公鑰和新生成的散列值驗證簽名。

對用戶而言這一過程是透明的。

散列算法處理數據的速度比公鑰算法快得多。散列數據還縮短了要簽名的數據的長度,於是加快了簽名過程。當建立或驗證簽名時,公鑰算法必須且只需轉換散列值(128 或 160 位的數據)。建立簽名和驗證簽名的詳細步驟取決於所採用的公鑰算法。

11.密鑰交換:結合使用對稱密鑰與公鑰

  對稱密鑰算法很是適合於快速並安全地加密數據。但其缺點是,發件人和收件人必須在交換數據以前先交換機密密鑰。結合使用加密數據的對稱密鑰算法與交換機密密鑰的公鑰算法可產生一種既快速又靈活的解決方案。

基於公鑰的密鑰交換步驟以下:

  • 發件人得到收件人的公鑰。
  • 發件人建立一個隨機機密密鑰(在對稱密鑰加密中使用的單個密鑰)。在 Windows 2000 中,CryptoAPI 4 可用於建立機密密鑰。(有關 CryptoAPI 的詳細信息,請參見下面的「證書鏈驗證」一節。)
  • 發件人使用機密密鑰和對稱密鑰算法將明文數據轉換爲暗文數據。
  • 發件人使用收件人的公鑰將機密密鑰轉換爲暗文機密密鑰。
  • 發件人將暗文數據和暗文機密密鑰一塊兒發給收件人。
  • 收件人使用其私鑰將暗文機密密鑰轉換爲明文。
  • 收件人使用明文機密密鑰將暗文數據轉換爲明文數據。

一樣,這些步驟是由啓用 PKI 的應用程序(如 Microsoft Outlook)來完成的,而且對用戶來講是透明的。

相關文章
相關標籤/搜索