HTTPS加密原理

引言

HTTPS的使用越來越廣泛,淘寶、京東、當(dāng)當(dāng)?shù)却笮途W(wǎng)站幾乎全站采用HTTPS。本文參考了若干文章并結(jié)合自己理解,簡要敘述HTTPS加密的工作原理。

加密算法簡介

在這之前需要先補充以下幾個概念:

1.對稱加密

使用相同的密鑰進(jìn)行加密和解密。對稱加密使用簡單,計算量小,加密和解密過程較快,常見的對稱加密算法有DES,3DES,lDEA,AES,RC4等。

2.非對稱加密

與對稱加密不同,其加密算法需要兩個密鑰:公開密鑰(public key)和私有密鑰(private key),兩者是一對的。公鑰負(fù)責(zé)加密,私鑰負(fù)責(zé)解密。非對稱加密相比對稱加密安全性好,但加密和解密花費時間長、速度慢,只適合對少量數(shù)據(jù)進(jìn)行加密。常見的非對稱加密算法有RSA,ECC,DSA(數(shù)字簽名)等。

3.Hash算法

將任意長度的數(shù)據(jù)映射為固定長度且唯一的hash值,并且不能通過這個hash值重新計算出原始數(shù)據(jù),如果原始數(shù)據(jù)有任何修改,隨后的哈希都將產(chǎn)生不同的值,因此Hash算法經(jīng)常被用在檢驗數(shù)據(jù)的完整性,常用的算法有MD2,MD4,MD5,SHA等。

HTTPS加密原理

HTTPS簡單來說就是 HTTP 的安全版,相比于HTTP,它在介于 TCP 和 HTTP 之間添加了一層TLS/SSL安全協(xié)議。HTTP 協(xié)議采用明文傳輸信息,存在信息竊聽、信息篡改和信息劫持的風(fēng)險,而協(xié)議 TLS/SSL 具有身份驗證、信息加密和完整性校驗的功能,可以避免此類問題,因此我們可以簡單的認(rèn)為HTTPS就是使用 TLS/SSL 加密的 HTTP 協(xié)議。下面我們就介紹在HTTPS加密過程中采用過的若干加密方案。

1.對稱加密方案

最簡單的方案是僅使用對稱加密:



從上圖的流程中,我們可以很清楚的看到,這個方案是極不安全的,一旦該通信被人劫持,就可以輕易的根據(jù)密鑰解密數(shù)據(jù)。

2.非對稱加密方案

而如果采用非對稱加密,上述的不安全問題將得到解決:



因為私鑰在服務(wù)端手中,即使通信過程中被人劫持了信息,沒有密鑰,劫持者沒有私鑰也無法解密數(shù)據(jù)。這種方法似乎是安全的(后面會講述這個方案存在的隱患),但是非對稱加密耗時耗資源,影響用戶體驗,因此不推薦使用非對稱加密。

3.對稱與非對稱加密結(jié)合方案

使用對稱加密,雖然速度快,但不安全。而非對稱加密雖然較為安全,但速度慢。由此看來,如果兩種方案結(jié)合起來,是不是就能兩全其美了呢?因為對稱加密速度快,我們最好選用對稱加密來加密數(shù)據(jù),但對稱加密不安全,那么我們只要用非對稱加密來保證安全。那如何用非對稱加密保證對稱加密的安全性呢?
由之前可知,對稱加密的不安全性主要體現(xiàn)在密鑰容易在通信過程中被人劫持,那么我們只要從密鑰下手,使用非對稱加密來加密這個對稱密鑰就可以了。但問題又來了,這里又用對稱加密,又用非對稱加密,豈不是更耗時耗資源么?
其實不然,因為非對稱加密僅僅在第一次客戶端請求時才會使用,當(dāng)服務(wù)端獲取到了客戶端的公鑰后,就不必重新使用非對稱私鑰解密獲取對稱密鑰了。兩者結(jié)合的大致流程如下:


中間人攻擊

乍看之下,上面的方案既安全,又快速。但是還是存在著被攻擊的可能,那就是中間人攻擊??蛻舳瞬⒉荒艽_定請求到的服務(wù)端公鑰是否是真的來自于服務(wù)端,也許客戶端在向服務(wù)器請求公鑰的過程中就已經(jīng)被人攻擊,客戶端獲取到的公鑰也可能是中間人偽造的。



上面造成的結(jié)果就是:

  • 服務(wù)端和客戶端之間的通信完全被中間人掌握,中間人可以對信息進(jìn)行竊聽、篡改等。
  • 信息抵賴:服務(wù)器可以否認(rèn)自己發(fā)出的消息,不承認(rèn)相關(guān)信息是自己發(fā)出的。

證書

為了避免中間人攻擊,客戶端需要確保請求到的公鑰是目標(biāo)服務(wù)器提供的,該公鑰不能被偽造,這時候就用到了證書,證書里面包含了網(wǎng)站地址,加密公鑰,以及證書的頒發(fā)機構(gòu)等信息??蛻舳双@取到證書后,會驗證證書的有效性(有效期,頒發(fā)機構(gòu))。關(guān)于證書的機制,下回再弄個單獨的篇章講解~ 這次先說到這里。

結(jié)語

HTTPS其實就是通過服務(wù)端證書非對稱加密的方式實現(xiàn)雙方身份的驗證,第一次客戶端返回給服務(wù)端的對稱密鑰通過服務(wù)端提供的非對稱密鑰進(jìn)行了加密,然后雙方數(shù)據(jù)的傳輸都用客戶端生成的對稱密鑰處理,這樣僅是第一次獲取密鑰時速度稍慢,但之后的處理都是對稱加解密速度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容