Exchange證書 加密

對稱加密
特點:對稱加密的特點是加密和解密通過一個相同的密鑰。
 
比如,我們要加密一組數字
一組數字:12345
密鑰:10
算法:原數字乘於密鑰
加密後的結果:123450
解密的人也是通過密鑰 10,拿123450除以10 就得到了原來的數字 12345,當然算法和密鑰都不會這麼簡單。
 
缺點:對稱加密的一個不便之處就是密鑰的分發,因爲當A發一封加密的信給B的時候,B要想讀這封信,就必須知道密鑰,但是怎麼傳遞密鑰呢?如果通過一封沒有加密的信傳遞密鑰,那麼很容易就被截取了。
 
常見的對稱加密算法: DES ,3DES, RC5
 
 
非對稱加密
非對成加密有一對密鑰,私鑰和公鑰,當使用其中一個來加密的時候,必須用另外一個來解密。這樣就把密鑰分發的問題解決了,公鑰可以隨便分發,公鑰是大家都知道的,私鑰只有私鑰持有人才有。
 
當 A 需要發信給 B 的時候,就使用 B 的公鑰把這封信加密,然後發送給B,只有B有私鑰,所以只有B能夠讀取這封信。這樣即使別人也知道公鑰,但是卻看不到信的內容。
 
但是非對稱加密有個缺點,就是需要複雜的計算,這要耗費很多CPU,並且一般非對稱加密的密鑰都很長,1024 bit 或者 2048 bit。所以一般不會用非對稱加密算法來數據,只用來加密密鑰(對稱加密的密鑰),實際的加密過程還是使用對稱加密。
常見的非對稱加密算法:Diffie-Hellman,RSA
RSA算法是很常用的算法,硬件解碼的話,DES對稱算法要比RSA 快1000倍。
在 Exchange 2007 中,當使用 New-ExchangeCertificate 來申請證書的時候,可以使用參數 KeySize, 這個參數可以指定與要創建的證書關聯的 RSA 公鑰的大小(位)。
可接受的值是 4096、2048 和 1024。默認值爲 2048。

 

 

下圖中可以看到,證書的公鑰使用RSA算法,公鑰長度1024 bits來進行加密的

 

 

 

哈希
 
哈希是用來保證一段數據不被更改,保證數據的完整性。由於哈希得到的重複值的可能性非常小,可以認爲,對一段數據進行哈希得到的結果是一個唯一的結果,不會有另外的數據哈希值和它重複。
比如A發送一封信給B, 那麼爲了保證這封信不被更改,那麼A對這封信的數據進行哈希運算,把哈希結果和信一起發送給B,B接受到這封信之後,對信的數據也進行哈希,如果得到和A相同的結果,則說明這封信沒有被更改過。
一個好的哈希算法,當一段數據中有改動時,會造成哈希值很大的變動。
 
常見的哈希算法:MD5 (Message Digest), SHA 或 SHA1 (Secure Hash Algorithm)
 
一個證書也是一個文件,一段數據,爲了保持證書的完整性,證書也有哈希值。

 

 

打開證書,我們可以看到這個證書的哈希算法(Thumbprint Algorithm)和哈希值(Thumbprint),我們也可以使用 Get-ExchangeCertificate 來得到 Thumbprint

 

 

 

微軟提供了一個小工具來檢驗文件的 MD5 和 SHA1 哈希值,詳見 KB889768

 

MS CA申請證書的時候可以選擇哈希算法

 

 

 

數字簽名

我們可以在一封郵件上加上自己的數字簽名,如果你收到一封帶有數字簽名的郵件,那麼數字簽名就表明此郵件確實來自於發件人,並且郵件內容沒有被更改。

數字簽名其實使用自己的私鑰加密郵件的哈希值,然後發送給收件人。

這裏還是用到非對稱加密,因爲只有一個人有私鑰,當他用私鑰加密,而對應的公鑰可以解密的時候,這個封郵件就可以證明確實來自於發件人。因爲非對稱加密很耗資源,所以不能加密郵件的正文,只需要把正文的哈希碼加密就可以。

 

當用戶 B 收到 A 發來的帶有數字簽名的郵件時,B 首先找到 A 的公鑰,然後試圖用公鑰 A 來解開郵件中加密的哈希值,如果解的開,那麼就證明郵件確實從 A 發來的。然後對郵件正文進行哈希運算,如果得到的結果和郵件中的哈希值一致,就說明這封郵件沒有被更改過。

 

 

 

 

圖:帶有數字簽名的郵件

 

 

 

圖:簽名的證書和加密的證書不能相同,簽名的證書是使用自己的私鑰,而加密的證書是使用對方的公鑰。
 
 
 
證書
爲什麼要使用證書?
比如 B 向 A 傳輸數據,B 首先使用 A 的公鑰來加密數據,然後發送給 A, A 用自己的私鑰解密。
但是這樣有一個問題,C 是一個壞人,他聲稱自己是 A,然後把 假A 的公鑰發給 B,B 用 假A 的公鑰加密數據,然後發送給 假A,毫無疑問,C得到了數據。
現在的問題是,如何防止 C 聲稱自己是 A,解決的方法就是用證書。
 
B 信任證書頒發機構 D,D通過驗證,證明A的確是A,D 頒發一個證書給 A , 證書中列出了A的名字和它的公鑰,B 看到了 A的證書,發現自己信任這個證書頒發機構,那麼它就可以使用證書中所示的公鑰來加密數據,並且發送給A。
由於C 不能通過證書頒發機構 D 的驗證,所以它得不到證書,也就無法冒充 A了。

 

 

 

圖:證書用來保證遠程計算機的身份
 
 
 
證書創建過程
1. 首先有應用程序來生成一對密鑰:公鑰和私鑰。
在Exchange 2003 中,我們用 IIS 中的嚮導申請證書,嚮導創建了公鑰和私鑰。在 Exchange 2007 中,我們用 New-ExchangeCertificate 來申請證書,這個命令也創建了公鑰和私鑰。
 
2. 發送信息到證書頒發機構 (CA)
證書頒發機構需要一些信息來驗證你的身份,或者網站的身份,而且它還需要你生成的公鑰,CA是不需要你的私鑰的,經過驗證,證明了,你的確是真實的身份,或者你的網站名稱是真實的,就可以頒發證書了。
 
3. CA在證書上簽名,然後把頒發證書,這樣所有信任這個CA的客戶端都會認爲你的證書是有效的,並且可以使用上面的公鑰。
 
Exchnage 2007 中,經常犯的一個錯誤就是在 Hub 或者別的機器上運行 New-ExchangeCertificate, 當從CA獲得證書的時候,到 Edge 上導入證書 Import-ExchangeCertificate,這個時候就會發生 私鑰丟失 的情況。原因就是 Edge 並不是當初運行 New-ExchangeCertificate 命令的那臺計算機

 

 

圖:申請證書的過程創建了公鑰和私鑰
 
 
 
SSL怎樣工作
SSL(Secure Socket Layer ) 是由網景開發的,用於瀏覽器和Web服務器之間的加密通訊,當你訪問一個https的站點,SSL 協議就起作用了。
TLS (Transport Level/Layer Security)是根據 SSL 發展而來的,我們可以理解爲TLS 就是用來加密 SMTP 通訊的 SSL。SSL則可以用來加密 HTTP, POP3, IMAP, NTTP and LDAP 等諸多協議。
1.   當你在瀏覽器中輸入 https 開頭的URL時,就向 Web 服務器發起了一個 SSL 的請求。
2.   服務器把自己的證書發送給客戶端 (記住,證書中包含公鑰)
3.   客戶端瀏覽器驗證這個證書(看看是不是信任的證書,有沒有過期,有沒有被吊銷,證書上的名字和自己訪問的相同嗎?)
4.   客戶端瀏覽器生成一個隨機的會話密鑰(session key,然後使用服務器的公鑰加密。
5.   客戶端瀏覽器把加密的會話密鑰發送給Web服務器
6.   Web服務器用自己的私鑰解密 會話密鑰
7.   這樣,客戶端和服務器都知道了 會話密鑰(session key
8.   以後的通話都用會話密鑰(session key來加密了
當加密 POP3 等服務的時候,也是這個過程。
圖:HTTPS 就是 SSL 加密的 http 通訊
TLS 是在SSL 3.0 基礎上發展來的,值得注意的是兩者雖然過程相似,但卻是不相兼容的。當然通訊的過程不只這麼簡單,一些握手,加密,哈希過程請參考文章
查看沒有SSL加密的通訊
如果沒有SSL加密,郵件通訊其實很容易被截獲,我們可以利用一些嗅探器(sniffer)得到通訊內容
 
HTTP: Base64
SMTP: Base64
POP3: Plain Text
IMAP: Plain Text

 

 

圖:POP3 的不加密的話,嗅探器捕捉到的是明文,用戶名和密碼都可以直接看到。

 

圖:SMTP的明文傳送是 base64編碼的。

 

AUTH LOGIN 說明是基本身份驗證,密碼是明文傳送的,我們可以找一個 Base 64 編碼的網站,把Base 64編碼轉換成明文。

比如訪問http://www.hcidata.co.uk/base64.htm

 

 

 

圖:輸入Base64編碼 VXNlcm5hbWU6 就可以轉化成 ASCII 碼:Username:
 
 
 
TLS加密SMTP

 

 

 

在默認的SMTP 虛擬目錄上裝了證書後,就可以使用加密的連接了, telnet 上去後會發現 TLS 和 STARTTLS 命令。

 

 

 

加密MAPI RPC
加入域中的 Outlook 和 Exchange 進行通訊使用 RPC 協議,RPC有默認的加密機制,我們可以在 Outlook 賬戶屬性中選擇加密的通訊。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章