java-信息安全(七)-基於非對稱加密,對稱加密等理解HTTPS

概述

java-信息安全(一)-BASE64,MD5,SHA,HMAChtml

java-信息安全(二)-對稱加密算法DES,3DES,AES,Blowfish,RC2,RC4java

java-信息安全(四)-數據簽名、數字證書
算法

java-信息安全(五)-非對稱加密算法RSA瀏覽器

若是想要理解好https,請儘可能瞭解好以上信息等。安全

參看文章:服務器

http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.htmlsession

https://cattail.me/tech/2015/11/30/how-https-works.htmldom

http://www.cnblogs.com/binyue/p/4500578.htmlpost

基本概念

  HTTPS實際上是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會經過TLS進行加密,因此傳輸的數據都是加密後的數據。網站

  Https是一種基於SSL/TLS的Http協議,全部的http數據都是在SSL/TLS協議封裝之上傳輸的。

  Https協議在Http協議的基礎上,添加了SSL/TLS握手以及數據加密傳輸,也屬於應用層協議。

  ——>HTTP協議運行在TCP之上,全部傳輸的內容都是明文,客戶端和服務器端都沒法驗證對方的身份。

  ——>HTTPS是運行在SSL/TLS之上的HTTP協議,SSL/TLS運行在TCP之上。全部傳輸的內容都通過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密。

  TLS/SSL中使用了非對稱加密,對稱加密以及HASH算法

圖例【基於RSA模型】

第一步

  瀏覽器給出協議版本號、一個客戶端生成的隨機數(Client random),以及客戶端支持的一套加密規則發送給網站服務器。

第二步

  服務器從中選出一組加密算法與HASH算法,並將本身的身份信息以證書的形式發回給瀏覽器、以及一個服務器生成的隨機數(Server random)。證書裏面包含了網站地址,加密公鑰,以及證書的頒發機構等信息。

第三步

  瀏覽器確認數字證書有效,而後生成一個新的隨機數(Premaster secret),並使用數字證書中的公鑰,加密這個隨機數,發給服務器。

  得到網站證書以後瀏覽器要作如下工做:

    a) 驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等),若是證書受信任,則瀏覽器欄裏面會顯示一個小鎖頭,不然會給出證書不受信的提示。

    b) 若是證書受信任,或者是用戶接受了不受信的證書,瀏覽器會生成一串隨機數的密碼,並用證書中提供的公鑰加密。

    c) 使用約定好的HASH計算握手消息,並使用生成的隨機數對消息進行加密,最後將以前生成的全部信息發送給網站。

第四步

  服務器使用本身的私鑰,獲取瀏覽器發來的隨機數(即Premaster secret)。

  網站接收瀏覽器發來的數據以後要作如下的操做:

    a) 使用本身的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發來的握手消息,並驗證HASH是否與瀏覽器發來的一致。

    b) 使用密碼加密一段握手消息,發送給瀏覽器。

第五步

  瀏覽器和服務器根據約定的加密方法,使用前面的三個隨機數,生成"對話密鑰"(session key),用來加密接下來的整個對話過程。

 

HTTPS通常使用的加密與HASH算法

  非對稱加密算法:RSA,DSA/DSS

  對稱加密算法:AES,RC4,3DES

  HASH算法:MD5,SHA1,SHA256

相關文章
相關標籤/搜索