一、SSL/TSL
- SSL
- TLS的前身,由netscape開發的安全協定
- TLS
- 與具體的網絡傳輸協定無關
- 既可以用于HTTP,也可以用于TCP
1.1 加密算法
1.1.1 對稱加密
- 雙方使用同一個密鑰進行加解密;
- 加解密速度快,通常在消息發送方需要加密大量資料時使用;
問題:
- 在第一次與陌生人進行通信時,如何安全的傳遞密鑰
1.1.2 非對稱加密(公鑰加密)
- 雙方使用不同的密鑰進行加解密;
- 公鑰
- 公開給所有需要與自己通信的對象;
- 公鑰加密的内容隻能通過對應的私鑰進行解密;
- 用于内容加密,由内容發送者持有
- 私鑰
- 個人私密擁有;
- 私鑰加密的内容,任何對應的公鑰都能進行解密;
- 用于表征身份,即産生數字簽名
- 數字簽名
- 對消息内容進行哈希計算,得到hashcode,利用私鑰對hashcode進行加密
- 可以辨別身份,因為私鑰唯一,公鑰與私鑰是一對,公鑰能解密成功,證明消息的發送方一定是私鑰的持有者
- 可以校驗消息的一緻性,消息和數字簽名一同發送給接收方,如果消息被篡改,hashcode和數字簽名中儲存的hashcode不一樣,數字簽名中的hashcode無法修改,否則解密不會成功
- 數字簽名
- 公鑰
- 加解密速度慢;
- 公鑰可以公開釋出,不需要考慮密鑰安全傳遞的問題
問題:
- 隻使用一套公私鑰,則隻能實作公鑰持有者(例如用戶端)向私鑰持有者(例如服務端)的單向資訊加密,私鑰持有者(例如服務端)向公鑰持有者(例如用戶端)發送的資訊不安全;
- 雖然公鑰可以公開釋出,但在與陌生人第一次建立通信時,如何确認收到的公鑰是對方發送的,而不是通信被截獲之後僞造的。
1.2 數字證書
- 數字證書
- 将公鑰與私鑰持有者的身份資訊進行綁定
- 内容包括:
- 證書的釋出機構
- 證書的有效期
- 公鑰
- 證書所有者
- 指紋算法
- hash算法等,将證書中的明文内容計算hash值
- 簽名所使用的算法
- CA認證機構利用自身的私鑰對hash值進行加密
- 指紋
- 指證書内容的hash值經過CA私鑰加密後生成的内容
- CA(certification authority)
- 頒發數字證書的權威機構
1.2.1 确認公鑰的身份的真實性
- 數字證書中包含公鑰以及公鑰釋出者的身份資訊,且加上了CA的數字簽名
- 将公鑰身份真實性的确認問題轉化為
- CA公鑰的真實性
- 内置在作業系統中,受信任的根證書頒發機構
- 數字證書内容的一緻性,未經篡改
- 公鑰身份真實性的确認問題
- 由CA認證機構完成,并對結果負有法律責任
- CA公鑰的真實性
1.2.2 雙向通信的安全性
- 通信内容采用對稱加密
- 對稱加密能實作雙向加密,且加密速度快
- 對稱加密中的密鑰采用非對稱加密方式傳遞
- 用戶端使用公鑰對對稱加密中的密鑰進行加密,傳輸給服務端
1.2.3 CA認證過程
- 服務提供者向CA認證機構注冊,得到數字證書
- 服務提供者在建立第一次通信時将證書下發,用戶端進行解密
- 利用作業系統内置的CA認證機構釋出的公鑰對證書進行解密得到證書内容的hash值
- 根據指紋算法将證書内容重新計算一遍hash值并進行比較,确定公鑰的真實性

1.3 SSL/TSL通信過程
- client向server發送請求;
- server向client下發CA憑證;
- client比較證書中所有者的資訊與正在通路的服務提供者的資訊是否一緻,确認公鑰的身份一緻性;
- client校驗證書是否為合法機構頒發,确認公鑰的真實性;
- client生成一個随機值(對稱密鑰),然後用證書中的公鑰對該對稱密鑰加密;
- server利用非對稱私鑰解密client發送的資訊,從中得到對稱密鑰;
- 之後server和client就可以通過對稱密鑰進行資訊互動。
1.4 IIS中生成自簽名證書與SSL綁定
- 生成自簽名證書
SSL/TSL一、SSL/TSL - SSL綁定
SSL/TSL一、SSL/TSL