為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴
發(fā)表日期:2018-04 文章編輯:小燈 瀏覽次數(shù):2610
HTTPS常被定義為為HTTP over SSL,超文本傳輸安全協(xié)議。
以往HTTP通訊直接使用的明文傳輸,容易被人抓包,破解數(shù)據(jù)包,而HTTPS經(jīng)由HTTP進(jìn)行通信,但利用SSL/TLS來(lái)加密數(shù)據(jù)包。
HTTP的URL由“http://”起始且默認(rèn)使用端口80,
HTTPS的URL由“https://”起始且默認(rèn)使用端口443。
注意:
SSL是一個(gè)介于HTTP協(xié)議與TCP之間的一個(gè)可選層,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:
如果用右邊的TCP/IP協(xié)議來(lái)劃分,SSL是屬于應(yīng)用層與傳輸層之間的協(xié)議,如果還是用OSI七層協(xié)議劃分,SSL是屬于表示層與會(huì)話層的。
SSL協(xié)議的大概原理就是通過(guò)公鑰加密法,也就是說(shuō),客戶端先向服務(wù)器端索要公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密。
以下是SSL協(xié)議握手的一個(gè)主要過(guò)程,主要分為4個(gè)階段。
SSL客戶端(也是TCP的客戶端)在TCP鏈接建立之后,發(fā)出一個(gè)ClientHello來(lái)發(fā)起握手,這個(gè)消息里面包含了
-- Client支持的SSL協(xié)議版本;
-- Client生成的隨機(jī)數(shù)c1,稍后用于生成"對(duì)話密鑰";
-- Client支持的加密方法;
-- Client支持的壓縮方法;
SSL的服務(wù)器端會(huì)回應(yīng)一個(gè)ServerHello,這個(gè)消息里面包含了以下內(nèi)容
-- Server確認(rèn)使用的加密通信協(xié)議版本;
--Server生成的隨機(jī)數(shù)s1,稍后用于生成"對(duì)話密鑰";
-- Server確認(rèn)使用的加密方法;
-- Server 的SSL證書。
Client收到服務(wù)器回應(yīng)以后,首先驗(yàn)證Server的證書是否有效,如果沒問(wèn)題,從證書里面取出Server的公鑰,然后發(fā)送消息給Server,包含以下內(nèi)容
-- Client生成的隨機(jī)數(shù)c2,需要注意的是,這個(gè)隨機(jī)數(shù)c2是經(jīng)過(guò)Server公鑰加密過(guò)的;
-- 告知Server 握手結(jié)束
Server收到Client消息后,使用私鑰解密Client發(fā)過(guò)來(lái)的第二個(gè)隨機(jī)數(shù),同時(shí)也會(huì)發(fā)送握手結(jié)束的消息給Client。
此時(shí),client和server都持有3個(gè)隨機(jī)數(shù),客戶端和服務(wù)端用商定的算法利用3個(gè)隨機(jī)數(shù)生成一個(gè)對(duì)話秘鑰(session key)
,隨后的通信就用這個(gè)秘鑰進(jìn)行加密解密。之所以用3個(gè)隨機(jī)數(shù),因?yàn)樽C書是靜態(tài)的,增加隨機(jī)數(shù)可以使得密鑰更加有隨機(jī)性。SSL協(xié)議傳輸過(guò)程中,使用的是由相同的3個(gè)隨機(jī)數(shù)生成的對(duì)話秘鑰(session key)
,而生成的規(guī)則是client與server商議好的算法,所以這個(gè)對(duì)話秘鑰(session key)
是相同的,這個(gè)加密方法稱為對(duì)稱加密
。
HTTPS通訊也不一定是絕對(duì)安全的,有可能會(huì)被人劫持,通常是中間人攻擊。
服務(wù)器向客戶端發(fā)送公鑰。
攻擊者截獲公鑰,保留在自己手上。
然后攻擊者自己生成一個(gè)【偽造的】公鑰,發(fā)給客戶端。
客戶端收到偽造的公鑰后,生成加密hash值發(fā)給服務(wù)器。
攻擊者獲得加密hash值,用自己的私鑰解密獲得真秘鑰。
同時(shí)生成假的加密hash值,發(fā)給服務(wù)器。
服務(wù)器用私鑰解密獲得假秘鑰。
中間人攻擊一般發(fā)生在SSL握手協(xié)議中,協(xié)商密鑰的時(shí)候(非對(duì)稱加密階段),而且發(fā)生中間人攻擊,也就是代表攻擊方拿到了證書的公鑰和私鑰。一旦會(huì)話初始化完成,開始進(jìn)行數(shù)據(jù)通訊(對(duì)稱加密階段),想要完成中間人攻擊是非常困難的。
防御中間人攻擊的手段是做好證書的校驗(yàn)
http://www.nsfocus.net/index.php?act=magazine&do=view&mid=841
https://www.jianshu.com/p/9c52693a09dc