Https

HTTPS介紹

超文本傳輸安全協(xié)議(Hypertext Transfer Protocol Secure,縮寫:HTTPS,常稱為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種網(wǎng)絡(luò)安全傳輸協(xié)議。在計算機網(wǎng)絡(luò)上,HTTPS經(jīng)由超文本傳輸協(xié)議進(jìn)行通信,但利用SSL/TLS來加密數(shù)據(jù)包。HTTPS開發(fā)的主要目的,是提供對網(wǎng)絡(luò)服務(wù)器的身份認(rèn)證,保護(hù)交換數(shù)據(jù)的隱私與完整性。這個協(xié)議由網(wǎng)景公司(Netscape)在1994年首次提出,隨后擴展到互聯(lián)網(wǎng)上。

HTTPS連接經(jīng)常用于萬維網(wǎng)上的交易支付和企業(yè)信息系統(tǒng)中敏感信息的傳輸。

http協(xié)議直接放置在TCP協(xié)議之上,而HTTPS提出在http和TCP中間加上一層加密層。從發(fā)送端看,這一層負(fù)責(zé)把http的內(nèi)容加密后送到下層的TCP,從接收方看,這一層負(fù)責(zé)將TCP送來的數(shù)據(jù)解密還原成http的內(nèi)容。所以嚴(yán)格地講,HTTPS并不是一個單獨的協(xié)議,而是對工作在一加密連接(TLS或SSL)上的常規(guī)HTTP協(xié)議的稱呼。

下面是一個簡單的HTTPS協(xié)議棧的圖:


101810-4eab94916c2dc161.png

HTTPS解決的問題

HTTP協(xié)議由于是明文傳送,所以存在三大風(fēng)險:

1、被竊聽的風(fēng)險:第三方可以截獲并查看你的內(nèi)容

2、被篡改的危險:第三方可以截獲并修改你的內(nèi)容

3、被冒充的風(fēng)險:第三方可以偽裝成通信方與你通信

HTTP因為存在以上三大安全風(fēng)險,所以才有了HTTPS的出現(xiàn)。

相關(guān)術(shù)語

對稱密碼算法

是指加密和解密使用相同的密鑰,典型的有DES、RC5、IDEA(分組加密),RC4(序列加密);

非對稱密碼算法

又稱為公鑰加密算法,是指加密和解密使用不同的密鑰(公鑰用于加密,私鑰用于解密)。比如A發(fā)送,B接收,A想確保消息只有B看到,需要B生成一對公私鑰,并拿到B的公鑰。于是A用這個公鑰加密消息,B收到密文后用自己的與之匹配的私鑰解密即可。反過來也可以用私鑰加簽公鑰驗簽。也就是說對于給定的公鑰有且只有與之匹配的私鑰可以解密,對于給定的私鑰,有且只有與之匹配的公鑰可以解密。典型的算法有RSA,DSA,DH;

散列算法

散列變換是指把文件內(nèi)容通過某種公開的算法,變成固定長度的值(散列值),這個過程可以使用密鑰也可以不使用。這種散列變換是不可逆的,也就是說不能從散列值變成原文。因此,散列變換通常用于驗證原文是否被篡改。典型的算法有:MD5,SHA,CRC等。
關(guān)于CA及數(shù)字證書

什么是CA

CA(Certificate Authority)是數(shù)字證書認(rèn)證中心的簡稱,是指發(fā)放、管理、廢除數(shù)字證書的機構(gòu)。

CA的作用是檢查證書持有者身份的合法性,并簽發(fā)證書(在證書上簽字),以防證書被偽造或篡改,以及對證書和密鑰進(jìn)行管理。

CA 也擁有一個證書(內(nèi)含公鑰)和私鑰。網(wǎng)上的公眾用戶通過驗證 CA 的簽字從而信任 CA ,任何人都可以得到 CA 的證書(含公鑰),用以驗證它所簽發(fā)的證書。
如果用戶想得到一份屬于自己的證書,他應(yīng)先向 CA 提出申請。在 CA 判明申請者的身份后,便為他分配一個公鑰,并且 CA 將該公鑰與申請者的身份信息綁在一起,并為之簽字后,便形成證書發(fā)給申請者。

如果一個用戶想鑒別另一個證書的真?zhèn)?,他就?CA 的公鑰對那個證書上的簽字進(jìn)行驗證,一旦驗證通過,該證書就被認(rèn)為是有效的。

證書的內(nèi)容

數(shù)字證書的格式遵循X.509標(biāo)準(zhǔn),X.509是由國際電信聯(lián)盟(ITU-T)制定的數(shù)字證書標(biāo)準(zhǔn),規(guī)范了公開密鑰認(rèn)證、證書吊銷列表、授權(quán)證書、證書路徑驗證算法等。

證書的內(nèi)容包括:電子簽證機關(guān)的信息、公鑰用戶信息、公鑰、權(quán)威機構(gòu)的簽字和有效期等等。

下圖就表示一個數(shù)字證書包含的內(nèi)容:

101810-8ac0645c03a14513.png

我們這里能看到頒發(fā)機構(gòu)簽名是由申請者信息經(jīng)過哈希算法得到hash值,然后再用機構(gòu)的私鑰進(jìn)行加密。所以這個簽名只有辦法機構(gòu)的公鑰才能解密,而一般權(quán)威CA機構(gòu)的根證書(含公鑰)都內(nèi)置在瀏覽器中,所以客戶端接收到這個數(shù)字證書后,先把申請者信息用同樣的哈希算法得到hash值h1,然后用公鑰進(jìn)行辦法機構(gòu)簽名解密得到hash值h2,如果h1==h2,則表示證書是有效的。

SSL/TLS概念

SSL/TLS是加密通信協(xié)議,SSL由NetScape在1994年設(shè)計,1999年互聯(lián)網(wǎng)標(biāo)準(zhǔn)化組織ISOC接替NetScape公司,發(fā)布了SSL的升級版TLS 1.0版?,F(xiàn)在主流的瀏覽器等都支持TLS1.2版本,如iOS9中新增App Transport Security(簡稱ATS)特性,強制http轉(zhuǎn)向https,其中加密通信協(xié)議就需要TLS1.2及以上版本。

SSL/TLS協(xié)議的基本思路是采用公鑰加密法,也就是說,客戶端先向服務(wù)器端索要公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。

SSL/TLS協(xié)議的基本過程是這樣的:

(1) 客戶端向服務(wù)器端索要并驗證公鑰。
(2) 雙方協(xié)商生成"對話密鑰"。
(3) 雙方采用"對話密鑰"進(jìn)行加密通信。
所以說SSL/TLS協(xié)議主要是包含非對稱加密(公鑰加密)和對稱加密,用非對稱加密來得到對稱加密的"對話秘鑰",然后用對稱加密來進(jìn)行加密通信。

HTTPS流程步驟

101810-3bc609bef1b24751.png

首先看看組成HTTPS的協(xié)議:HTTP協(xié)議和SSL/TLS協(xié)議。HTTP協(xié)議就不用講了,而SSL/TLS就是負(fù)責(zé)加密解密等安全處理的模塊,所以HTTPS的核心在SSL/TLS上面。整個通信如下:

1、瀏覽器發(fā)起往服務(wù)器的443端口發(fā)起請求,請求攜帶了瀏覽器支持的加密算法和哈希算法。

2、服務(wù)器收到請求,選擇瀏覽器支持的加密算法和哈希算法。

3、服務(wù)器下將數(shù)字證書返回給瀏覽器,這里的數(shù)字證書可以是向某個可靠機構(gòu)申請的,也可以是自制的。

4、瀏覽器進(jìn)入數(shù)字證書認(rèn)證環(huán)節(jié),這一部分是瀏覽器內(nèi)置的TLS完成的:

4.1 首先瀏覽器會從內(nèi)置的證書列表中索引,找到服務(wù)器下發(fā)證書對應(yīng)的機構(gòu),如果沒有找到,此時就會提示用戶該證書是不是由權(quán)威機構(gòu)頒發(fā),是不可信任的。如果查到了對應(yīng)的機構(gòu),則取出該機構(gòu)頒發(fā)的公鑰。

4.2 用機構(gòu)的證書公鑰解密得到證書的內(nèi)容和證書簽名,內(nèi)容包括網(wǎng)站的網(wǎng)址、網(wǎng)站的公鑰、證書的有效期等。瀏覽器會先驗證證書簽名的合法性(驗證過程類似上面Bob和Susan的通信)。簽名通過后,瀏覽器驗證證書記錄的網(wǎng)址是否和當(dāng)前網(wǎng)址是一致的,不一致會提示用戶。如果網(wǎng)址一致會檢查證書有效期,證書過期了也會提示用戶。這些都通過認(rèn)證時,瀏覽器就可以安全使用證書中的網(wǎng)站公鑰了。

4.3 瀏覽器生成一個隨機數(shù)R,并使用網(wǎng)站公鑰對R進(jìn)行加密。

5、瀏覽器將加密的R傳送給服務(wù)器。

6、服務(wù)器用自己的私鑰解密得到R。

7、服務(wù)器以R為密鑰使用了對稱加密算法加密網(wǎng)頁內(nèi)容并傳輸給瀏覽器。

8、瀏覽器以R為密鑰使用之前約定好的解密算法獲取網(wǎng)頁內(nèi)容。

身份驗證技術(shù)

所謂身份驗證就是用公鑰生成可信賴的證書。因為非對稱加密存在一個問題就是沒法驗證拿到的公鑰就是服務(wù)端公開的公鑰。

為了解決以上問題,CA應(yīng)用而生(Certifity Authority),數(shù)字證書認(rèn)證機構(gòu)。在網(wǎng)上找到一張圖,一看就明白了

20180810172942942.png

兩個問題

如何保證公鑰不被篡改?

解決方法:將公鑰放在數(shù)字證書中。只要證書是可信的,公鑰就是可信的。那如何保證證書是可信的呢?證書由CA機構(gòu)進(jìn)行頒發(fā),而游覽器內(nèi)置了這些CA機構(gòu)的根證書,只要由這些CA機構(gòu)辦法的數(shù)字證書即是可信的。

為什么不直接使用公鑰加密,還要加上個對稱加密?

公鑰加密是非對稱加密,加密計算量大,而對稱加密運算速度非???。所以這里只有第一次握手時進(jìn)行公鑰加密來得到對稱加密的"對話密鑰",之后的通信就使用對稱加密來進(jìn)行通信了。
加密算法

HTTPS和HTTP的區(qū)別主要為以下四點:

一、https協(xié)議需要到ca申請證書,一般免費證書很少,需要交費。

二、http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性加密傳輸協(xié)議。

三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。

四、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議比http協(xié)議安全。

HTTPS 的優(yōu)缺點

優(yōu)點

使用HTTPS 協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務(wù)器;
HTTPS 協(xié)議是由 SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比 http 協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性。
HTTPS 是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

缺點

HTTPS 比HTTP耗費更多服務(wù)器資源(https其實就是建構(gòu)在SSL/TLS之上的 http協(xié)議,所以要比較https比http多用多少服務(wù)器資源,主要看SSL/TLS本身消耗多少服務(wù)器資源。)
耗費的資源多,過程也復(fù)雜,想當(dāng)然訪問不如HTTP高效。大流量網(wǎng)站非必要也不會采用,流量成本太高。  
HTTPS 并不能防止站點被網(wǎng)絡(luò)蜘蛛抓取。在某些情形中,被加密資源的URL可僅通過截獲請求和響應(yīng)的大小推得,這就可使攻擊者同時知道明文(公開的靜態(tài)內(nèi)容)和密文(被加密過的明文),從而使選擇密文攻擊成為可能。  
SSL 證書需要錢,功能越強大的證書費用越高,個人網(wǎng)站、小網(wǎng)站沒有必要一般不會用?! ?br> SSL 證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。

?著作權(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)容

  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb閱讀 3,693評論 0 13
  • 本文摘自 騰訊bugly 的文章《全站 HTTPS 來了》,內(nèi)容有修改。 大家在使用百度、谷歌或淘寶的時候,是否注...
    bnotes閱讀 3,877評論 1 9
  • 需求 “人們最初設(shè)計互聯(lián)網(wǎng)時,很少考慮到安全。這樣的結(jié)果是,核心通信協(xié)議本質(zhì)上是不安全的,只能依靠所有參與方的誠信...
    thinkq閱讀 1,149評論 0 3
  • HTTPS介紹 超文本傳輸安全協(xié)議(英語:Hypertext Transfer Protocol Secure,縮...
    齊滇大圣閱讀 9,220評論 8 96
  • 前言 在說HTTPS之前先說說什么是HTTP,HTTP就是我們平時瀏覽網(wǎng)頁時候使用的一種協(xié)議。HTTP協(xié)議傳輸?shù)臄?shù)...
    布丁大人閱讀 2,844評論 2 14

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