https是http協議的安全版本,在HTTP和TCP層中加入了SSL層.https之所以是安全的,就依賴于SSL.本文對https中的重要部分進行詳細分析.

目錄
- 對稱加密
- 非對稱加密
- 摘要算法
- 數字簽名
- 數字證書
- https連接過程
- SSL/TLS握手過程
對稱加密
對稱加密:加密和解密過程采用相同的密鑰進行加密的加密算法.
- 常用的對稱加密算法有AES,DES等.
- 在https協議中,對稱加密用來對傳輸的報文進行加密.
非對稱加密
非對稱加密:加密和解密過程采用不同密鑰進行加密的加密算法.
- 常用的非對稱加密有RSA加密.
- 非對稱加密的密鑰包含公鑰和私鑰,公鑰對外暴露,私鑰為自己私有不對外暴露.通常采用公鑰(私鑰)加密,私鑰(公鑰)解密.
- 非對稱加密對加密內容的長度有限制,且非對稱加密對資源的消耗較大.
- 在https協議中,非對稱加密用來對"會話密鑰"進行加密;對摘要信息進行加密.
數字摘要
摘要算法:采用單項Hash函數將待摘要的內容摘要成一段固定長度的密文,通常是128位.不同內容的的明文摘要后得到的密文必定不相同,而相同的內容經摘要后的密文必定相同.
常見的摘要算法有Base64,SHA256.
在https中,摘要算法能夠保證報文的完整性和防篡改.
數字簽名
將待簽名內容用Hash算法得到內容摘要,將內容摘要用發送者的私鑰進行非對稱加密,兩者所組成的報文成為"數字簽名".
數字簽名是對摘要算法和非對稱加密兩項技術的應用.
數字證書
數字證書一般由CA機構頒發.其生成過程如下:
- 用戶通過非對稱加密生成公鑰和私鑰,然后將公鑰和用戶身份信息發送給CA機構.
- CA機構核實用戶的身份信息之后,對用戶公鑰等信息進行摘要,然后用CA的私鑰對摘要進行加密,得到證書的數字簽名.
- CA將用戶私鑰,證書的數字簽名等組成數字證書后頒發給用戶.
數字證書包含以下內容:
- 證書頒發機構的名稱:CA的名稱.
- 證書的數字簽名:用來檢驗證書內容是否被篡改.
- 證書持有者的公鑰:即服務端所用公鑰
- 證書所用到的Hash算法:客戶端對證書合法性校驗時需要用到
數字證書合法性校驗:
- 客戶端獲得證書后,用CA機構的公鑰,對數字簽名解密后得到證書的摘要信息.
- 將證書持有者的個人信息進行摘要后,對比步驟1中CA所生成的摘要,兩者一致,則證書未被篡改.
- 對證書的過期時間等校驗.
https的連接過程
1.客戶端向服務器發送https請求.
2.服務器將數字證書傳送給客戶端.
3.客戶端對證書的有效性進行校驗,校驗成功后,生成隨機數(AES key),并將此隨機數用服務器的公鑰進行加密后傳送給服務器,作為后續數據傳輸時,對報文進行對稱加密的密鑰.
4.服務端接收客戶端傳輸的內容,用服務器的私鑰對其解密后,得到客戶端傳過來的隨機數.
5.服務器將數據用此隨機數經過對稱加密后,傳送給客戶端.
6.客戶端獲得加密后的報文,用步驟4產生的隨機數進行解密,得到服務器傳回的數據.至此,一次https請求結束.
image.png
補充說明:
1.在https協議中,非對稱加密用于握手階段,對會話密鑰進行加密;對稱加密則用來對報文進行加密.
2.采用此加密策略的原因是:非對稱加密安全系數高,但非常消耗資源,且對加密的內容長度有限制.
歡迎轉載,歡迎指正~