HTTPS-透徹學習匯總

來源:互聯網
上載者:User

標籤:代理   授權   完整   介紹   社交網站   升級   使用者   偽造   也有   

SSL和SSH和OpenSSH,OpenSSL有什麼區別

 

一、SSL的作用

  不使用SSL/TLS的HTTP通訊,就是不加密的通訊。所有資訊明文傳播,帶來了三大風險。

竊聽風險(eavesdropping):第三方可以獲知通訊內容。篡改風險(tampering):第三方可以修改通訊內容。冒充風險(pretending):第三方可以冒充他人身份參與通訊。

  SSL/TLS協議是為瞭解決這三大風險而設計的,希望達到:

所有資訊都是加密傳播,第三方無法竊聽。具有校正機制,一旦被篡改,通訊雙方會立刻發現。配備身份認證,防止身份被冒充。

  具體解決原理請繼續往下閱讀。

二、SSL的曆史

1994年,NetScape公司設計了SSL協議(Secure Sockets Layer)的1.0版,但是未發布。1995年,NetScape公司發布SSL 2.0版,很快發現有嚴重漏洞。1996年,SSL 3.0版問世,得到大規模應用。1999年,互連網標準化組織ISOC接替NetScape公司,發布了SSL的升級版TLS 1.0版。2006年和2008年,TLS進行了兩次升級,分別為TLS 1.1版和TLS 1.2版。最新的變動是2011年TLS 1.2的修訂版。目前,應用最廣泛的是TLS 1.0,接下來是SSL 3.0。但是,主流瀏覽器都已經實現了TLS 1.2的支援。TLS 1.0通常被標示為SSL 3.1,TLS 1.1為SSL 3.2,TLS 1.2為SSL 3.3。

  通俗的講,TLS、SSL是個加密套件,負責對HTTP(或其他協議)的資料進行加密。TLS是SSL的升級版。現在提到HTTPS,加密套件基本指的是TLS。

  傳輸加密的流程

  原先是應用程式層將資料直接給到TCP進行傳輸,現在改成應用程式層將資料給到TLS/SSL,將資料加密後,再給到TCP進行傳輸。

三、HTTP缺陷

  HTTP在網路上都是以明文傳輸的,很容易遭受中間人攻擊。也就意味著,監聽發送端、接收端中間的任意節點都可以知道你們傳輸的內容是什麼。這些節點可能是路由器、代理等。

  在發送端對密碼進行加密?沒用的,雖然別人不知道你原始密碼是多少,但能夠拿到加密後的帳號密碼,照樣能登陸。

四、HTTPS是如何保障安全的

  HTTP是應用程式層協議,位於HTTP協議之下是傳輸協議TCP。TCP負責傳輸,HTTP則定義了資料如何進行封裝。

HTTP –> TCP (明文傳輸)  

  HTTPS相對於HTTP有哪些不同呢?其實就是在HTTP跟TCP中間加多了一層加密層TLS/SSL。

  傳輸加密的流程

  原先是應用程式層將資料直接給到TCP進行傳輸,現在改成應用程式層將資料給到TLS/SSL,將資料加密後,再給到TCP進行傳輸。:

  在原來的五層模型中嵌入了SSL/TSL層,用來為傳輸中的資料進行加密的服務,從這張圖上可以看出,當資料從HTTP層往下流的時候經過SSL層的Data Encryption Service,然後再把資料群組合到TCP層進而傳輸,而當資料從另一端的TCP層向上流的時候,將加密後的資料往上交付,SSL層會為其解密,然後再交付給HTTP層。

  概括的講,就是一個端到端的加、解密流程而已

  就是這麼回事。將資料加密後再傳輸,而不是任由資料在複雜而又充滿危險的網路上明文裸奔,在很大程度上確保了資料的安全。這樣的話,即使資料被中間節點截獲,壞人也看不懂。

五、非對稱式加密與認證

  SSL/TLS協議的基本思路是採用公開金鑰加密法,也就是說,用戶端先向伺服器端索要公開金鑰,然後用公開金鑰加密資訊,伺服器收到密文後,用自己的私密金鑰解密。這就存在了兩個問題:

  1.公開金鑰如何擷取?

    瀏覽器是怎麼獲得XX的公開金鑰的?當然,使用者可以自己去網上查,XX也可以將公開金鑰貼在自己的首頁。然而,對於一個動不動就成敗上千萬的社交網站來說,會給使用者造成極大的不便利,畢竟大部分使用者都不知道“公開金鑰”是什麼東西。

  2.資料轉送僅單向安全

    公開金鑰加密的資料,只有私密金鑰能解開,於是使用者發給伺服器的帳號、密碼是安全了,半路不怕被攔截。但是有個很大的問題:伺服器用私密金鑰加密的資料,公開金鑰也能解開。加上公開金鑰是公開的,伺服器發給使用者的隱私資料相當於在網上換了種方式裸奔。(中間Proxy 伺服器拿到了公開金鑰後,毫不猶豫的就可以解密使用者的資料)

   解決問題1:

    這裡要涉及兩個非常重要的概念:認證、CA(憑證授權單位)。

    認證,可以暫時把它理解為網站的身份證。這個身份證裡包含了很多資訊,其中就包含了上面提到的公開金鑰。

    也就是說,當小明、小王、小光等使用者訪問XX的時候,再也不用滿世界的找某個伺服器的公開金鑰了。當他們訪問某伺服器的時候,這台伺服器就會把認證發給瀏覽器,告訴他們說,乖,用這個裡面的公開金鑰加密資料。

    這裡有個問題,所謂的“認證”是哪來的?這就是下面要提到的CA負責的活了。

    CA(憑證授權單位),可以頒發認證的CA有很多(國內外都有),但是只有少數CA被認為是權威、公正的,這些CA頒發的認證,瀏覽器才認為是信得過的,我們的作業系統中會預先安裝好一些認證發布機構的認證。比如VeriSign。(CA自己偽造認證的事情也不是沒發生過。。。)憑證發行的細節這裡先不展開,可以先簡單理解為,網站向CA提交了申請,CA審核通過後,將憑證發行給網站,使用者訪問網站的時候,網站將認證給到使用者。

  解決問題2:

    上面提到,通過私密金鑰加密的資料,可以用公開金鑰解密還原。那麼,這是不是就意味著,網站傳給使用者的資料是不安全的?

      答案是:是!!!(三個歎號表示強調的三次方)

    看到這裡,可能你心裡會有這樣想:用了HTTPS,資料還是裸奔,這麼不靠譜,還不如直接用HTTP來的省事。但是,為什麼業界對網站HTTPS化的呼聲越來越高呢?這明顯跟我們的感性認識相違背啊。因為:HTTPS雖然用到了公開祕密金鑰加密,但同時也結合了其他手段,如對稱式加密,來確保授權、加密傳輸的效率、安全性。

    概括來說,整個簡化的加密通訊的流程就是:

1.小明訪問XX,XX將自己的認證給到小明(其實是給到瀏覽器,小明不會有感知)2.瀏覽器從認證中拿到XX的公開金鑰A2.瀏覽器產生一個只有自己自己的對稱金鑰B,用公開金鑰A加密,並傳給XX(其實是有協商的過程,這裡為了便於理解先簡化)4.XX通過私密金鑰解密,拿到對稱金鑰B5.瀏覽器、XX 之後的資料通訊,都用密鑰B進行加密注意:對於每個訪問XX的使用者,產生的對稱金鑰B理論上來說都是不一樣的。比如小明、小王、小光,可能產生的就是B1、B2、B3.

六、認證可能存在的問題

  認證非法可能有兩種情況:

    認證是偽造的:壓根不是CA頒發的
    認證被篡改過:比如將XX網站的公開金鑰給替換了

  舉個例子:這個世界上存在一種東西叫做代理,於是,上面小明登陸XX網站有可能是這樣的,小明的登陸請求先到了Proxy 伺服器,Proxy 伺服器再將請求轉寄到的授權伺服器。

小明 –> 邪惡的Proxy 伺服器 –> 登陸授權伺服器

  然後,這個世界壞人太多了,某一天,Proxy 伺服器動了壞心思(也有可能是被入侵),將小明的請求攔截了。同時,返回了一個非法的認證。如果善良的小明相信了這個認證,那他就再次裸奔了。因為這個認證中有邪惡伺服器的公開金鑰,而不是授權伺服器的公開金鑰,小明會使用邪惡伺服器的公開金鑰加密,此時邪惡伺服器就可以使用自己的私密金鑰擷取資料包中內容。當然不能這樣,那麼,是通過什麼機制來防止這種事情的發生的呢。

  下面,我們先來看看”認證”有哪些內容,然後就可以大致猜到是如何進行預防的了。

七、認證內容

  在正式介紹認證的格式前,先插播個小廣告,科普下數位簽章和摘要,然後再對認證進行非深入的介紹。為什麼呢?因為數位簽章、摘要是認證防偽非常關鍵的武器。

  數位簽章與摘要

    “摘要”就是對傳輸的內容,通過hash演算法計算出一段固定長度的串(是不是聯想到了文章摘要),供下載者驗證下載後的檔案是否完整,或者說是否和伺服器上的檔案”一模一樣“,而且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致,“數字摘要“是https能確保資料完整性和防篡改的根本原因。

    “簽名”,通過CA的私密金鑰對這段摘要進行加密,加密後得到的結果就是“數位簽章”。數位簽章只能驗證資料的完整性,資料本身是否加密不屬於數位簽章的控制範圍。

明文 –> hash運算 –> 摘要 –> CA的私密金鑰加密 –> 數位簽章

  結合上面內容,我們知道,這段數位簽章只有CA的公開金鑰才能夠解密。

  接下來,我們再來看看神秘的“認證”究竟包含了什麼內容,然後就大致猜到是如何對非法認證進行預防的了。內容非常多,這裡我們需要關注的有幾個點:

    認證包含了頒發認證的機構的名字 — CA

    認證內容本身的數位簽章(用CA私密金鑰加密)

    認證持有人的公開金鑰(對應伺服器的私密金鑰)

    認證簽名用到的hash演算法(使用同一個hash演算法來驗證簽名)

參考:

  SSL/TLS協議運行機制的概述

  HTTPS科普掃盲貼

  安全科普:HTTPS初探

  

 

HTTPS-透徹學習匯總

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.