咱們都知道 HTTPS 傳輸安全,爲何安全呢?密碼學保證?下面介紹一些 HTTPS 用到的技術。算法
SSL(Secure Sockets Layer),中文叫安全套接層,是網景公司 90 年代中期設計來解決 HTTP 協議明文傳輸的缺點(嗅探、劫持、篡改)。瀏覽器
到 1999 年,IETF 把 SSL 標準化,標準化以後名稱改成 TLS(Transport Layer Security),中文叫傳輸層安全協議。安全
什麼是 HTTPS?網絡
HTTPS = HTTP + SSL/TLS。網站
即不安全的 HTTP 協議加上 SSL/TLS 等於安全的 HTTPS。加密
加密和解密是一對互逆的數學運算:操作系統
加密:明文 + 密鑰 = 密文設計
解密:密文 + 密鑰 = 明文對象
對稱加密的意思就是加密和解密使用相同的密鑰,例如在壓縮文件上設置密碼,解密就須要輸入相同的密碼。數學
非對稱加密則使用不一樣的密鑰(公鑰和私鑰)進行加密解密。
網站和瀏覽器之間要實現安全的密鑰交換該如何實現?
方案一:使用對稱加密算法
若是單純使用對象加密算法,瀏覽器和網站之間必需要交換密鑰,密鑰直接用明文傳輸很容易被竊取,沒法保證密鑰的安全性。
方案二:使用非對稱加密算法
思考一下,方案二是否安全和完美?
依舊不安全,方案二能夠在必定程度上防止嗅探,但沒法防範網絡數據篡改(中間人攻擊)。
在網站和瀏覽器交換密鑰的過程當中,中間人接收網站發送的密鑰 y 保存下來,改用本身生成的密鑰對僞形成網站與瀏覽器交互,同時使用密鑰 y 僞形成瀏覽器與網站交互。
方案二不安全的根源是缺少可靠的身份認證,瀏覽器沒法鑑別本身收到的密鑰是否是來自網站。
所以須要引入 CA 證書機制(身份認證),基於 CA 證書進行密鑰交換(具體 CA 機制可查看另外一篇介紹 CA 的文章)。
此時獲得方案三:
這就是 HTTPS 加密傳輸的過程。