https 原理理解

來源:互聯網
上載者:User

標籤:https原理

一、什麼是HTTPS
在說HTTPS之前先說說什麼是HTTP,HTTP就是我們平時瀏覽網頁時候使用的一種協議。HTTP協議傳輸的資料都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私資訊非常不安全。為了保證這些隱私資料能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的資料進行加密,從而就誕生了HTTPS。SSL目前的版本是3.0,被IETF(Internet Engineering Task Force)定義在RFC 6101中,之後IETF對SSL 3.0進行了升級,於是出現了TLS(Transport Layer Security) 1.0,定義在RFC 2246。實際上我們現在的HTTPS都是用的TLS協議,但是由於SSL出現的時間比較早,並且依舊被現在瀏覽器所支援,因此SSL依然是HTTPS的代名詞,但無論是TLS還是SSL都是上個世紀的事情,SSL最後一個版本是3.0,今後TLS將會繼承SSL優良血統繼續為我們進行Data Encryption Service。目前TLS的版本是1.2,定義在RFC 5246中,暫時還沒有被廣泛的使用。

二、HTTPS到底安全嗎?
這個答案是肯定的,很安全。Google公司已經行動起來要大力推廣HTTPS的使用,在未來幾周,Google將對全球所有本地區名都啟用HTTPS,使用者只要在搜尋前用Google帳號登入,之後所有的搜尋操作都將使用TLS協議加密。

三、HTTPS的工作原理
HTTPS在傳輸資料之前需要用戶端(瀏覽器)與服務端(網站)之間進行一次握手,在握手過程中將確立雙方加密傳輸資料的密碼資訊。TLS/SSL協議不僅僅是一套加密傳輸的協議,更是一件經過藝術家精心設計的藝術品,TLS/SSL中使用了非對稱式加密,對稱式加密以及HASH演算法。握手過程的簡單描述如下:
1.瀏覽器將自己支援的一套加密規則發送給網站。
2.網站從中選出一組密碼編譯演算法與HASH演算法,並將自己的身份資訊以認證的形式發回給瀏覽器。認證裡麵包含了網站地址,加密公開金鑰,以及認證的頒發機構等資訊。
3.獲得網站認證之後瀏覽器要做以下工作:
a) 驗證認證的合法性(頒發認證的機構是否合法,認證中包含的網站地址是否與正在訪問的地址一致等),如果認證受信任,則瀏覽器欄裡面會顯示一個小鎖頭,否則會給出認證不受信的提示。
b) 如果認證受信任,或者是使用者接受了不受信的認證,瀏覽器會產生一串隨機數的密碼,並用認證中提供的公開金鑰加密。
c) 使用約定好的HASH計算握手訊息,並使用產生的隨機數對訊息進行加密,最後將之前產生的所有資訊發送給網站。
4.網站接收瀏覽器發來的資料之後要做以下的操作:
a) 使用自己的私密金鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的握手訊息,並驗證HASH是否與瀏覽器發來的一致。
b) 使用密碼加密一段握手訊息,發送給瀏覽器。
5.瀏覽器解密並計算握手訊息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之後所有的通訊資料將由之前瀏覽器產生的隨機密碼並利用對稱式加密演算法進行加密。
這裡瀏覽器與網站互相發送加密的握手訊息並驗證,目的是為了保證雙方都獲得了一致的密碼,並且可以正常的加密解密資料,為後續真正資料的傳輸做一次測試。另外,HTTPS一般使用的加密與HASH演算法如下:
非對稱式加密演算法:RSA,DSA/DSS
對稱式加密演算法:AES,RC4,3DES
HASH演算法:MD5,SHA1,SHA256
其中非對稱式加密演算法用於在握手過程中加密產生的密碼,對稱式加密演算法用於對真正傳輸的資料進行加密,而HASH演算法用於驗證資料的完整性。由於瀏覽器產生的密碼是整個資料加密的關鍵,因此在傳輸的時候使用了非對稱式加密演算法對其加密。非對稱式加密演算法會產生公開金鑰和私密金鑰,公開金鑰只能用於加密資料,因此可以隨意傳輸,而網站的私密金鑰用於對資料進行解密,所以網站都會非常小心的保管自己的私密金鑰,防止泄漏。
TLS握手過程中如果有任何錯誤,都會使加密串連斷開,從而阻止了隱私資訊的傳輸。正是由於HTTPS非常的安全,攻擊者無法從中找到下手的地方,於是更多的是採用了假認證的手法來欺騙用戶端,從而擷取明文的資訊,但是這些手段都可以被識別出來,我將在後續的文章進行講述。

以上參考連結:http://www.guokr.com/post/114121/


#me:HTTPS工作原理理解分為兩步

第一步:瀏覽器------>網站

瀏覽器:先HASH握手資訊,然後用自己(瀏覽器)產生的一串隨機數作為密碼來加密,並且把這串隨機數密碼使用網站發來的公開金鑰加密,將 握手資訊的加密結果 和 密碼的加密的結果 和 握手資訊的HASH結果都發送給網站

網站:利用自己的私密金鑰解密得到瀏覽器產生的密碼(這使用的是非對稱式加密演算法),然後再用得到密碼解密握手資訊的加密結果,並驗證加密資訊的HASH值是否和瀏覽器發來的一致~

第二步:網站------->瀏覽器

網站:網站使用密碼(這個密碼是之前用私密金鑰解密得到的,即瀏覽器產生的)加密一段握手訊息,將握手資訊的加密結果和握手訊息的HASH 發送給瀏覽器。

瀏覽器:瀏覽器解密並計算握手訊息的HASH,如果與服務端發來的HASH一致,此時握手過程結束。

之後

所有的通訊資料將由之前瀏覽器產生的隨機密碼並利用對稱式加密演算法進行加密。

這裡瀏覽器與網站互相發送加密的握手訊息並驗證,目的是為了保證雙方都獲得了一致的密碼,並且可以正常的加密解密資料,為後續真正資料的傳輸做一次測試

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.