引言
Microsoft Windows
將一個綜合的公鑰基礎結構 (PKI) 引入到 Windows 平台
這利用和擴展了Windows 公鑰 (PK) 加密服務(該服務是過去幾年中引入的)
提供了一整套服務和管理工具
以創建
部署和管理基於 PK 的應用程序
它允許應用程序開發人員利用 Windows NT 的共享機密安全機制或基於 PK 的安全機制
作為其相應的安全機制
同時
企業還因此能夠基於統一工具和策略機制
來管理該環境和應用程序
本文最後對 Windows
中 PKI 作了概述
概念
加密技術是一門保護數據的科學
加密算法從數學上將輸入
明文
數據與
加密密鑰
結合起來
生成加密數據(暗記文)
雖然有了一個好的加密算法
但要逆轉加密過程
並將僅以暗記文開始的數據反推成明文數據
從計算角度上是不可行的
此轉換過程還需要其他數據
即
解密密鑰
傳統上
密鑰(或對稱密鑰)加密
加密與解密密鑰是相同的
因而可以共享敏感數據
對於想要使用密鑰加密進行通信的雙方
只有安全地交換加密/解密密鑰後
才能相互交換加密數據
而
PK 加密
基本屬性則是
加密和解密使用不同的密鑰
用公鑰加密密鑰進行的加密是
單向
功能
明文雖然可以很容易地轉變為暗記文
但加密密鑰卻與解密過程無關
要將暗記文轉回到明文
則需要解密密鑰(與加密密鑰有關
但不相同)
因此
對於 PK 加密來說
每個用戶都有一對密鑰
由一個
公鑰
和一個
私鑰
組成
在公鑰可用的前提下
可以讓其他人將加密數據發給您
而該數據只能用您的私鑰來解密
相似地
可用您的私鑰來轉換數據
這樣
其他人就會驗證出該數據是由您發送的
第二種功能是數字簽名的基礎
下面將對它進行論述
PK 加密中
公鑰與私鑰是分開的
由此產生了很多新技術
最重要的新技術有
數字簽名
分布式身份驗證
使用公鑰的密鑰協議
以及未預設共享機密情況下進行的批量數據加密
有許多人們熟知的 PK 加密算法
其中一些算法是通用的
如 RSA (Rivest
Shamir
Adleman) 和 ECC (Elliptic Curve Cryptography)
因為它們能支持以上所有操作
其他算法則僅支持這些功能的一個子集
一些示例中包括數字簽名算法 — 即 DSA
是美國政府的數字簽名標准(FIPS
)的一部分
該算法僅用於數字簽名
還包括 Diffie
Hellman (D
H)
它用於私鑰協議
以下幾段簡要論述了 PK 加密的主要用途
這些內容是以 Bob 和 Alice 兩個用戶為例
來講述這些操作的
它假定 Bob 和 Alice 可以交換信息
但沒有任何預設的共享的機密
數字簽名
也許
公鑰加密最引人注目的特征就是創建和驗證
數字簽名
它以數學轉換為基礎
該轉換將私鑰與待
簽名
的數據結合在一起
這樣
只有擁有私鑰的人才有可能創建數字簽名
任何能訪問此相應公鑰的人均能驗證該數字簽名
對已簽名的數據進行的任何修改(即使只修改了大型文件的一位)都會使數字簽名無效
數字簽名本身就是數據
因此可將其與所保護的簽名數據一起傳輸
例如
Bob 可以創建一個給 Alice 的電子郵件消息
並把簽名與消息文本一起發送
用它給 Alice 提供驗證消息來源所需的信息
此外
數字簽名還提供了一種方法
以驗證數據在從源到目標的傳送過程中
沒有被篡改過(無論是意外的還是蓄意的)
因此
數字簽名可用來提供一個能高度保障數據完整性的機制
身份驗證
可用 PK 加密來提供可靠的分布式
身份驗證
服務
實體身份驗證
可以保證
數據發件人就是收件人所認為的那個實體
驗證的一種方法是
數據接收人 Alice 向數據發送人 Bob 發送一個質詢
該質詢是用 Bob 的公鑰進行加密的
Bob 對此質詢進行解密
並把它發回給 Alice
證明他有與 Alice 發布質詢所用公鑰相關聯的私鑰
另一種方法是
Alice 向 Bob 發送一個明文質詢
Bob 將該質詢與其他信息(已有數字簽名)結合起來
然後
Alice 就用 Bob 的公鑰來驗證該簽名
並證實 Bob 有與此關聯的私鑰
該質詢能夠使該消息是唯一的
並可防止有敵意的第三方利用答復進行攻擊
這兩種情況都稱為
證明所有權
協議
因為發送人在此過程中證明自己有特定的私鑰
使用公鑰的密鑰協議
PK 加密的另一個功能是
它允許雙方就使用公共的非安全通信網絡的共享機密達成一致
實際就是 Bob 和 Alice 每人都生成一個隨機數
分別形成了共享機密密鑰的一半
然後
Bob 用 Alice 的公鑰
對自己的那一半機密進行加密
再把機密發送給 Alice
而 Alice 則用 Bob 的公鑰對自己的那一半機密進行加密
再把機密發送給 Bob
雙方都可以將對方發來的消息進行解密
將共享機密中不是自己生成的那一半提取出來
然後將兩個一半密碼結合起來
生成共享機密
協議完成後
共享的機密就可以用於保障其他通信的安全了
未預設共享機密的批量數據加密
PK 加密帶來的第四個主要技術是
無須建立預設共享機密
就可以進行批量數據加密
從計算角度上看
現有的 PK 算法與密鑰算法是密切相關的
這就不適於加密大量數據
要既能利用 PK 加密技術
又能進行有效的批量加密
通常要將 PK 和密鑰技術結合起來使用
它是這樣實現的
先選擇一個密鑰加密算法
並生成一個
隨機會話密鑰
進行數據加密
如果 Bob 要發送消息
他先用 Alice 的公鑰對該會話密鑰進行加密
隨後
生成的暗記文密鑰與加密數據一同發給 Alice
Alice 可用她的私鑰來恢復該會話密鑰
然後用該會話密鑰解密數據
在私鑰加密中
Alice 和 Bob 信任他們的共享機密
因為他們已就此達成一致或是以安全的方式交換的
他們還一致同意將其安全地進行存儲
防止被有惡意的第三方竊取
相反
使用 PK 加密技術
Alice 和 Bob 都只需要保護其各自的私鑰即可
他們需要共享的唯一信息就是對方的公鑰
他們需要能夠用高保障來標識彼此的公鑰
但不需保密公鑰
對使用 PK 加密而言
能夠信任公鑰與已知實體的關系是至關重要的
Alice 信任 Bob 的公鑰
有可能是因為 Bob 以安全的方式將它直接傳遞給了 Alice
但這是以 Alice 和 Bob 此前已有安全通信為前提的
更可能是
Alice 通過非安全機制(如從公共目錄)獲得了 Bob 的公鑰
所以必須有其他的機制使 Alice 確信
她所謂的來自
Bob
的公鑰
的確是 Bob 的公鑰
這樣的機制之一就是基於
證書頒發機構
(CA) 頒發的證書
證書
證書提供了一種機制
用於確立對公鑰和擁有相應私鑰的實體之間關系的信任
證書就是一種特殊類型的數字簽名式的聲明
證書的主題則是一個特殊的
主題公鑰
該證書是由頒發者(保存另一對私鑰和公鑰)簽名的
通常
證書也含有與主題公鑰有關的其他信息
如有相應私鑰的實體標識信息
因此
當頒發一個證書時
頒發者就證明了主題公鑰和主題標識信息之間綁定關系的有效性
現用證書的最常見格式是以 ITU
T X
標准為基礎的
這是 Windows
PKI 中使用的一個基本技術
但是
它並不是唯一的證書格式
例如
Pretty Good Privacy (PGP) 安全電子郵件采用的是一種 PGP 獨有的證書
證書頒發機構
證書頒發機構 (CA) 僅是一個頒發證書的實體或服務
CA 可作為綁定擔保人
這是在頒發證書中包含的主題公鑰與主題標識信息之間的綁定
不同的 CA 可選用不同的方法來驗證這種綁定
所以在選用擔保公鑰的頒發機構之前
了解該機構的策略和步驟是很重要的
信任和驗證
當 Alice 收到一個簽名的消息時
面臨的根本問題就是
她是否應該
信任
該簽名是有效的
並的確是由自稱的
簽名人
簽名的
Alice 可以確認該簽名數學上是有效的
即
她可以使用已知的公鑰來驗證該簽名的完整性
但是
Alice 仍需確定
驗證該簽名所用的公鑰是否的確屬於自稱第一個簽名的那個實體
如果 Alice 並不完全相信該公鑰是屬於 Bob 的
她需要獲得有力的證據
證明該密鑰屬於 Bob
如果 Alice 可以找到一個 Bob 公鑰的證書(由 Alice 絕對信任的 CA 頒發的)
那麼
Alice 就會相信
Bob 的公鑰
的確是 Bob 的
即
如果 Alice 找到的證書具有以下特征
她就會相信
她收到的確實是 Bob 的公鑰
證書具有其頒發者加密的有效簽名
證書可證實名稱
Bob
與 Bob 的公鑰之間存在綁定關系
證書是由 Alice 信任的頒發者頒發的
假定 Alice 找到了 Bob 公鑰的這樣一個證書
然後她可以使用頒發證書的 CA (Ira) 的公鑰來驗證其真偽(假設下一個需要驗證的是 Ira)
但是
Alice 再次面臨這樣的困境
即她怎麼知道該公鑰是不是真的屬於 Ira 的呢?所以
Alice 需要找到一個證書
能證實 Ira 的身份標識以及 Ira 與
Ira 的公鑰
之間的綁定關系
最終
Alice 會建立一條
證書鏈
從 Bob 和
Bob 的公鑰
開始
經過一系列 CA
在頒發給 Alice 絕對信任的人的證書處結束
這個證書稱為
可信根證書
因為它成為公鑰/標識綁定層次結構的根(頂層節點)
Alice 相信它是真實的
如果 Alice 明確信任某一特定可信根證書
那麼也就是絕對信任了該可信根頒發的所有證書
以及該可信根證實的任何從屬 CA 頒發的證書
這組 Alice 明確信任的可信根證書
是 Alice 必須以安全方式獲取的唯一信息
這組證書是 Alice 的信任系統以及她對公鑰基礎結構的信任基石
From:http://tw.wingwit.com/Article/os/xtgl/201311/8639.html