HTTPS加密原理及加密算法
時(shí)間:2023-02-19 03:08:01 | 來源:建站知識(shí)
時(shí)間:2023-02-19 03:08:01 來源:建站知識(shí)
HTTPS加密原理及加密算法:
前言:
當(dāng)我們輸入U(xiǎn)RL訪問頁面的時(shí)候,是不是會(huì)自動(dòng)給我們加上HTTP或者HTTPS,先只知道一個(gè)是加密,一個(gè)是不加密,但是其中原理,并未深究,當(dāng)我學(xué)習(xí)了計(jì)算機(jī)網(wǎng)絡(luò)之后,突然覺得這些知識(shí)原來都是聯(lián)系的。
如果我們要學(xué)習(xí)HTTPS的原理,那我們應(yīng)該先掌握HTTP是什么
(1)認(rèn)識(shí)http
定義:超文本傳輸協(xié)議(http,hypertext transfer protocol) , 它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng),所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP最初的目的是為了提供一種發(fā)布和接收HTML頁面的方法。
HTTP協(xié)議通過請(qǐng)求/響應(yīng)的方式,在客戶端和服務(wù)端之間進(jìn)行通信。
1.簡要過程
(舉個(gè) 當(dāng)你輸入一個(gè)url進(jìn)行頁面訪問的時(shí)候, 比如訪問百度
http://www.baidu.com )
scheme://hostname[:port]/path/filename?name=xxx&id=xxx#ch服務(wù)類型(HTTP或者HTTPS)://主機(jī)名(域名/ip)[:端口號(hào)]/文件路徑/資源名稱?參數(shù)=參數(shù)值#片段標(biāo)志符**
有時(shí)候我們會(huì)省略端口號(hào),是因?yàn)閔ttp協(xié)議的默認(rèn)端口為80,https的默認(rèn)端口為443
訪問流程如下【常見面試題】
- 使用DNS域名解析(域名和服務(wù)器IP對(duì)應(yīng)關(guān)系保存在hosts文件中),找到對(duì)應(yīng)服務(wù)器IP
- 發(fā)起TCP(傳輸連接協(xié)議)三次握手建立連接( 建立連接三次 )
- 建立tcp連接后發(fā)起請(qǐng)求(包括端口路徑,請(qǐng)求參數(shù)和各種信息)
- 服務(wù)器響應(yīng)(response)http請(qǐng)求(瀏覽器獲取HTML頁面
- 瀏覽器解析html代碼,并請(qǐng)求相關(guān)css,js和圖片資源
- 瀏覽器渲染頁面
- 釋放連接四次
總結(jié):
瀏覽器緩存——>DNS域名解析——>TCP連接——>HTTP請(qǐng)求與響應(yīng)——->DOM渲染——>TCP關(guān)閉注:詳細(xì)內(nèi)容可見參考鏈接——URL解析過程,寫得很清楚詳細(xì)
2.知識(shí)補(bǔ)充
(1)DNS(域名系統(tǒng))
根服務(wù)器獲對(duì)應(yīng)頂級(jí)域名的ip,然后再逐級(jí)從定義域名ip向下查找各個(gè)下屬域服務(wù)的,找到完整的域名ip。這是一個(gè)迭代查詢的過程 ,是一個(gè)
由近及遠(yuǎn)的過程,采取就近原則,再自頂向下搜索 (2)tcp建立連接(三次 )
相當(dāng)于:A:你聽得到嗎?B:我聽得到,你聽得到嗎?A:我聽得到
思考:為什么不是四次握手或者兩次握手?不是兩次握手的原因:為了防止失效的連接請(qǐng)求報(bào)文段突然又傳送到主機(jī)B,因而產(chǎn)生錯(cuò)誤。失效的連接請(qǐng)求報(bào)文段是指:主機(jī)A發(fā)出的連接請(qǐng)求沒有收到主機(jī)B的確認(rèn),于是經(jīng)過一段時(shí)間后,主機(jī)A又重新向主機(jī)B發(fā)送連接請(qǐng)求,且建立成功,順序完成數(shù)據(jù)傳輸。考慮這樣一種特殊情況,主機(jī)A第一次發(fā)送的連接請(qǐng)求并沒有丟失,而是因?yàn)榫W(wǎng)絡(luò)節(jié)點(diǎn)導(dǎo)致延遲達(dá)到主機(jī)B,主機(jī)B以為是主機(jī)A又發(fā)起的新連接,于是主機(jī)B同意連接,并向主機(jī)A發(fā)回確認(rèn),但是此時(shí)主機(jī)A根本不會(huì)理會(huì),主機(jī)B就一直在等待主機(jī)A發(fā)送數(shù)據(jù),導(dǎo)致主機(jī)B的資源浪費(fèi)。(這就是缺少第三次握手(A再給B確認(rèn)))
TCP連接和HTTP請(qǐng)求之間的聯(lián)系?HTTP是比TCP更高層次的應(yīng)用層協(xié)議,根據(jù)規(guī)則,只有低層協(xié)議建立之后才能,才能進(jìn)行更高層協(xié)議的連接,因此,首先要建立TCP連接,一般TCP連接的端口號(hào)是80
一個(gè)TCP連接可發(fā)送多個(gè)HTTP請(qǐng)求,可保持TCP連接,一個(gè) TCP 連接中 HTTP 請(qǐng)求依次發(fā)送。
瀏覽器是如何提高頁面加載效率的呢?- 維持和服務(wù)器已經(jīng)建立的 TCP 連接,在同一連接上順序處理多個(gè)請(qǐng)求。
- 和服務(wù)器建立多個(gè) TCP 連接。
(3)tcp四次揮手
A:我沒有數(shù)據(jù)發(fā)給你了,你如果還有數(shù)據(jù)發(fā)給我,就繼續(xù)發(fā)吧B:我知道了,我發(fā)完了告訴你B:我也發(fā)完了,你可以關(guān)了 A:我知道了,我斷開了,可以確認(rèn)斷開了
(2)認(rèn)識(shí)https
定義: HTTPS(全稱: Hyper Text Transfer Protocol over SecureSocket Layer,超文本傳輸安全協(xié)議),是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版。
(3)為什么要用https?
就是因?yàn)閔ttp不安全(DNS欺騙,ARP欺騙)
在 HTTP協(xié)議通過請(qǐng)求/響應(yīng)的方式,在客戶端和服務(wù)端之間進(jìn)行通信,他們之間**沒有任何身份確認(rèn)**的過程,**數(shù)據(jù)全部明文傳輸**【報(bào)文不是二進(jìn)制而是文本】,所以很容易被攻擊被竊取,被替換,被修改
http缺點(diǎn):明文不加密(會(huì)被竊聽)【加密算法】,不驗(yàn)證身份(可能被偽裝)【數(shù)字證書】,不驗(yàn)證信息完整(可能被修改)【數(shù)字簽名】
1.ARP(將IP地址映射成物理地址)欺騙:
ARP缺點(diǎn):當(dāng)收到ARP應(yīng)答包后,不會(huì)去驗(yàn)證自己是否向?qū)Ψ街鳈C(jī)發(fā)送過ARP請(qǐng)求包,就直接把這個(gè)返回包中的IP地址與MAC地址的對(duì)應(yīng)關(guān)系保存進(jìn)ARP緩存表中,如果原有相同IP對(duì)應(yīng)關(guān)系,則原有的會(huì)被替換。
1、單項(xiàng)欺騙 A、B、C三個(gè)人,A與C正常通信, B想知道A給C發(fā)的內(nèi)容, 就偽造ARP響應(yīng)包,更改A的ARP表,所以A發(fā)送給C的信息會(huì)先傳送到B,B可以丟棄數(shù)據(jù)包,這樣C就收不到A發(fā)的數(shù)據(jù)了,但是C還是可以正常給A發(fā)送數(shù)據(jù)的,這就是單項(xiàng)欺騙 2.雙向欺騙 同樣是A、B、C三個(gè)人,B同時(shí)給A、C發(fā)送響應(yīng)包 B告訴A它的ip是C的ip,Mac地址還是B的, 告訴C它的ip是自己的,Mac地址是A的,這樣A、C的通信就都會(huì)經(jīng)過B,這就叫雙向欺騙 3.區(qū)別 單向欺騙:是指欺騙網(wǎng)關(guān) 雙向欺騙:是欺騙網(wǎng)關(guān)跟被攻擊的兩個(gè)機(jī)器
預(yù)防措施:
- 在主機(jī)上靜態(tài)綁定MAC地址
- 在主機(jī)上設(shè)置ARP防火墻
- 利用交換機(jī)的房ARP欺騙技術(shù),比如DAI
2.DNS(域名解析成對(duì)應(yīng)IP)欺騙
首先欺騙者向目標(biāo)機(jī)器發(fā)送構(gòu)造好的ARP應(yīng)答數(shù)據(jù)包,ARP欺騙成功后,嗅探到對(duì)方發(fā)出的DNS請(qǐng)求數(shù)據(jù)包,分析數(shù)據(jù)包取得ID和端口號(hào)后,向目標(biāo)發(fā)送自己構(gòu)造好的一個(gè)DNS返回包,對(duì)方收到DNS應(yīng)答包后,發(fā)現(xiàn)ID和端口號(hào)全部正確,即把返回?cái)?shù)據(jù)包中的域名和對(duì)應(yīng)的IP地址保存進(jìn)DNS緩存表中,而后來的當(dāng)真實(shí)的DNS應(yīng)答包返回時(shí)則被丟棄。
防御措施:
有效防止DNS欺騙攻擊的方法就是禁用VPS服務(wù)器DNS緩存
- 啟動(dòng)注冊(cè)表編輯器(Regedit.exe);
- 在以下注冊(cè)表項(xiàng)中找到MaxCacheEntryTtlLimit值:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Dnscache/Parameters;
- 在編輯菜單上,單擊修改,鍵入數(shù)值1并確定;
- 后退出注冊(cè)表編輯器?! ?/li>
保護(hù)內(nèi)部設(shè)備、不要過分依賴DNS、定時(shí)檢查
服務(wù)器安全以及使用DNSSEC替代DNS等
(4)加密方式
為了保證消息的可靠,所以我們需要對(duì)明文進(jìn)行加密
1.對(duì)稱加密
單密鑰加密:公用一個(gè)密鑰來對(duì)消息進(jìn)行加密解密,客戶端和服務(wù)器約定好一個(gè)加密的密鑰,然后通過密鑰對(duì)信息進(jìn)行加密,然后傳輸,然后解密
常見對(duì)稱加密算法DES,AES
DES算法:數(shù)據(jù)加密標(biāo)準(zhǔn) 以64比特的明文為一個(gè)單位來進(jìn)行加密的 , 超過64比特的數(shù)據(jù)要求64比特的大小分組 , DES使用的密鑰長度為64比特,但由于每隔7個(gè)比特設(shè)置一個(gè)奇偶校驗(yàn)位(檢驗(yàn)錯(cuò)誤),因此其密鑰長度實(shí)際為56比特 。
算法簡單過程
(1)明文數(shù)據(jù)分組,每組8字節(jié)(64位)
(2)初始置換,分成L0,R0兩部分(每部分32位,根據(jù)置換規(guī)則表置換)
(3)64位明文,進(jìn)行了16輪相同的加密過程,在運(yùn)算過程中數(shù)據(jù)和密鑰結(jié)合
大致是Ln=Rn-1(第一輪L1=R0,原來的右半部分成為新的左半部分);
Rn = L(n - 1)⊕f(Rn-1,kn) (第一輪R1=L0⊕f(R0,K1),左邊部分經(jīng)過F函數(shù)后進(jìn)行異或成為新的右邊部分)
注:f是以Rn-1和Kn為參數(shù)輸出的32位函數(shù),Kn是第N層輸入的48位密鑰
(3.1)f函數(shù)的四步運(yùn)算:密鑰置換(Kn的生成),擴(kuò)展置換,s-盒置換;p-盒置換
(3.1.1)密鑰置換(兩種置換規(guī)則PC-1,PC-2)
奇偶校驗(yàn)位不算,剩56位,pc-1將56位分為28位的兩部分
將28位的兩部分進(jìn)行循環(huán)左移,每輪循環(huán)左移的位數(shù)按照輪數(shù)來,然后置換完之后合并(然后去掉8位,9 18 22 25 35 38 43 54變成48位,)再通過pc-2置換生成子密鑰
(3.1.2)擴(kuò)展運(yùn)算
數(shù)據(jù)右半部分(Rn)從32位擴(kuò)展到48位,改變了位置次序,重復(fù)了一些位
然后數(shù)據(jù)48位和子密鑰(Kn)進(jìn)行異或
(3.1.3)s-盒置換
把48位數(shù)據(jù)變成32位
代替運(yùn)算由8個(gè)不同的代替盒(S盒)完成 , 經(jīng)過S-盒代替,形成8個(gè)4位分組結(jié)果。
(3.1.4)p-盒置換
將上面的32位輸出作為p盒置換的輸入
然后將每個(gè)輸入映射到輸出
輸出結(jié)果和左半部分Ln異或
然后左右不分交換,進(jìn)行下一輪迭代
Ln = Rn-1; Rn = Ln-1 ⊕ f (Rn-1 , Kn-1)
(4)逆置換
加密后的L16和R16作為輸入塊,進(jìn)行逆置換得到最終密文輸出(逆置換就是
初始置換的逆運(yùn)算)
加密是秘鑰循環(huán)左移,解密是秘鑰循環(huán)右移
雖然感覺使用密鑰加密之后還蠻安全的,但是我們雖然對(duì)消息進(jìn)行了加密,但是最開始客戶端和服務(wù)端進(jìn)行密鑰約定的時(shí)候,還是使用的明文,就很容易密鑰也被泄露,中間人得到了密鑰,依然可以對(duì)消息進(jìn)行讀取。
2.非對(duì)稱加密
(加密解密使用的是不同的密鑰,所以是非對(duì)稱):(一組密鑰,一個(gè)公鑰,一個(gè)私鑰,并且只知道公鑰無法推斷出私鑰,而且
通過公鑰加密的內(nèi)容,只有私鑰才可以解開,而通過私鑰加密的內(nèi)容,只有公鑰才可以解開。 )
小紅生成一對(duì)密鑰,一公一私。發(fā)過去公鑰key1
然后現(xiàn)在小灰有了小紅的公鑰key1,小灰自己生成一個(gè)密鑰key2(公鑰),用key1對(duì)key2進(jìn)行加密,發(fā)給小紅
小紅現(xiàn)在使用自己的密鑰,解開了公鑰key1,然后有了key2,然后,就可以使用key2進(jìn)行加密通信了。
相同的,小灰要和小紅通信也是一樣的。
常見非對(duì)稱加密算法RSA,DSA
RSA算法:(涉及n,e1,e2三個(gè)參數(shù))原理:(將兩個(gè)大質(zhì)數(shù)相乘十分容易,但是想要對(duì)其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。)
(1)兩個(gè)很大的質(zhì)數(shù)p,q,n=p*q,n的二進(jìn)制表示密鑰長度
(2)
歐拉函數(shù) φ(n)是小于或等于n的正整數(shù)中與
n互質(zhì)(整數(shù)之間最大公約數(shù)為1)的數(shù)的數(shù)目。
r = φ(N) = φ(p)φ(q) = (p-1)(q-1)。 (舉個(gè) ,
φ(5) = 4,因?yàn)?i>1,2,3,4均和
5互質(zhì) )
(3)e1,e2相關(guān)
e1可以隨意取和r互質(zhì)的數(shù),e2要求(e2*e1)mod(r)=1。(n,e1),(n,e2)就是密鑰對(duì)。其中(n,e1)為公鑰,(n,e2)為私鑰。
e2這個(gè)元素很關(guān)鍵,我們知道了n,e1,在傳遞過程中,那怎么知道e2,那就需要知道p,q,然后就需要因式分解n.
RSA加解密算法完全一樣, 設(shè)A為明文,B為密文,則:A=B^e2 mod n;B=A^e1 mod n
這個(gè)好像是比對(duì)稱的更好了,但是,加密解密過程更復(fù)雜,更慢了。但是如果中間人得到了小紅的公鑰key1呢?
3.數(shù)字證書和數(shù)字簽名
如上所說,為了解決公鑰來源的不安全性,引入第三方 數(shù)字證書認(rèn)證中心(CA)
服務(wù)器可以向CA來申請(qǐng)數(shù)字證書
小紅:拿著公鑰key1和其他信息去CA申請(qǐng)數(shù)字證書
CA:
(CA公鑰公開,私鑰特別保護(hù),CA拿到信息之后,使用單向hash算法,比如常見的MD5,對(duì)信息進(jìn)行加密,加密后稱為摘要,CA私鑰對(duì)摘要進(jìn)行加密變成數(shù)字簽名,數(shù)字簽名和各種信息合在一起成為數(shù)字證書)
小紅:把證書發(fā)給小灰
小灰:驗(yàn)證證書真假(
各大瀏覽器和操作系統(tǒng)已經(jīng)維護(hù)了所有權(quán)威證書機(jī)構(gòu)的名稱和公鑰 ),去看是哪個(gè)機(jī)構(gòu),然后從本地拿到機(jī)構(gòu)的公鑰解密數(shù)字簽名,然后按照相同的規(guī)則小灰把其他的信息(不是摘要)也生成一信息摘要,摘要一致,證書有效,然后從解碼的信息中得到小紅的公鑰key1
A1:公鑰,123:其他信息(時(shí)間 host各種需要的信息) ,C2:CA私鑰
A1(123)---> CA C2(MD5(A1+123))+A1+123+MD5 最后對(duì)比MD5(A1+123)是否一致
小灰:然后自己生成的公鑰key2,使用小紅的公鑰加密key2,發(fā)給小紅,小紅用自己的私鑰解開得到key2,然后進(jìn)行通信
無法篡改的原因?1.拿到證書,如果偽造證書,但是你沒有CA的密鑰C2
2.如果直接使用原數(shù)據(jù),可以解密后看數(shù)據(jù),證書里面是有host的,如果你的網(wǎng)站的host和證書不一致,也不行
4.單向加密算法
只能單向?qū)γ魑倪M(jìn)行加密,而不能逆向通過密文得到明文。不需要使用密鑰。因?yàn)闆]有密鑰,所以就無法通過密文得到明文。
MD5,全稱Message Digest Algorithm 5,翻譯過來就是消息摘要算法第5版,是計(jì)算機(jī)安全領(lǐng)域廣泛使用的一種散列函數(shù),用于確保信息傳輸?shù)耐暾?是一種單向加密算法,一種不可逆的加密方式。MD5值長度固定為128位 ? 1. 原文處理 ? 如果原文.length%512!=448,需要填充使得求余等于448, 填充的方法是第一位填充1,其余位填充0。填充完后,信息的長度就是512*N+448。 然后剩余的位數(shù)512-448記錄原文長度,把長度二進(jìn)制放在后面,最后的信息為512(n+1) ? 2. 設(shè)置初始值 ? MD5的哈希結(jié)果長度為128位,按每32位分成一組共4組。 4組結(jié)果是由4個(gè)初始值A(chǔ)、B、C、D經(jīng)過不斷演變得到 ,這四個(gè)值是官方設(shè)置的。 ? 3. 循環(huán)加工ABCD ? 循環(huán)次數(shù):原文.length/512,然后每次循環(huán)里面有64次子循環(huán),上圖是一次子循環(huán) ? F:線性函數(shù)四種,交替使用 ? 紅色田:相加 ? Mi:處理后的原文,每份512/16=32,子循環(huán)里面循環(huán)使用一小份 ? Ki:常量,每次循環(huán)不同 4. 拼接ABCD
(5)https原理
1.HTTPS是什么?
https將如上的技術(shù)整合,達(dá)到性能和安全的最大化,(整合技術(shù)稱為SSL( Secure Scoket Layer 安全套接層 )),所以https不是新的協(xié)議,而是http穿上了外套。
HTTP+ 加密 + 認(rèn)證 + 完整性保護(hù) =HTTPS
HTTP+SSL = HTTPS
https使用: 提供了消息安全傳輸?shù)耐ǖ?,但是每次消息的加解密十分耗時(shí),消息系統(tǒng)資源 ,然后購買證書也很貴 在一些對(duì)安全性比較高的場(chǎng)景下,比如銀行系統(tǒng),購物系統(tǒng)中我們必須要使用https進(jìn)行通信,其他一些對(duì)安全性要求不高的場(chǎng)景,我們其實(shí)沒必要使用https。
非對(duì)稱加密對(duì)比于對(duì)稱加密來說,處理速度慢,但是更安全,所以兩者加起來,使用非對(duì)稱加密的加密方式獲得對(duì)稱加密中要使用到的密鑰,然后對(duì)稱加密的速度更快。
2.https協(xié)議的缺點(diǎn)
https握手階段比較費(fèi)時(shí),會(huì)使頁面加載時(shí)間延長50%,增加10%~20%的耗電。
https緩存不如http高效,會(huì)增加數(shù)據(jù)開銷。
SSL證書也需要錢,功能越強(qiáng)大的證書費(fèi)用越高。
SSL證書需要綁定IP,不能再同一個(gè)ip上綁定多個(gè)域名,ipv4資源支持不了這種消耗。
3.知識(shí)補(bǔ)充
SSL(Secure Socket Layer,安全套接字層)/TLS(Transport Layer Security,傳輸層安全協(xié)議)介紹
(1)SSL的基本概念
TLS 是以SSL 為原型開發(fā)的協(xié)議,有時(shí)會(huì)統(tǒng)一稱該協(xié)議為 SSL。*當(dāng)前主流的版本是SSL3.0 和 TLS1.0
SSL位于應(yīng)用層和傳輸層之間,所以可以為任何基于TCP等可靠連接的應(yīng)用層協(xié)議提供安全性保證,用于Web瀏覽器和服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸.
SSL{SSL記錄層:位于可靠的傳輸之上(比如TCP),提供壓縮,認(rèn)證,加密等功能
SSL握手層:位于ssl記錄層之上,提供數(shù)據(jù)傳輸前的身份驗(yàn)證,協(xié)商算法,交換密鑰等功能。}
(2)SSL/TLS握手階段(建立通信連接)
(1)瀏覽器發(fā)出加密通信的請(qǐng)求(ClientHello)
提供的信息如下 (1) 支持的協(xié)議版本,比如TLS 1.0版。 (2) 一個(gè)客戶端生成的隨機(jī)數(shù),稍后用于生成"對(duì)話密鑰"。 (3) 支持的加密方法,比如RSA公鑰加密。 (4) 支持的壓縮方法。
通常一臺(tái)服務(wù)器只能有一張數(shù)字證書:客戶端發(fā)送的信息之中不包括服務(wù)器的域名,后來加入擴(kuò)展
(2)服務(wù)器回應(yīng)(SeverHello)
(1) 確認(rèn)使用的加密通信協(xié)議版本,比如TLS 1.0版本。如果瀏覽器與服務(wù)器支持的版本不一致,服務(wù)器關(guān)閉加密通信。 (2) 一個(gè)服務(wù)器生成的隨機(jī)數(shù),稍后用于生成"對(duì)話密鑰"。 (3) 確認(rèn)使用的加密方法,比如RSA公鑰加密。 (4) 服務(wù)器證書(數(shù)字證書和公鑰)。
(3)4.3 客戶端回應(yīng)(檢驗(yàn)證書是否正確可信任,沒有問題,取出公鑰)
(1) 一個(gè)隨機(jī)數(shù)。該隨機(jī)數(shù)用服務(wù)器公鑰加密,防止被竊聽。 (2) 編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送。 (3) 客戶端握手結(jié)束通知,表示客戶端的握手階段已經(jīng)結(jié)束。這一項(xiàng)同時(shí)也是前面發(fā)送的所有內(nèi)容的hash值,用來供服務(wù)器校驗(yàn)。
(4)4.4 服務(wù)器的最后回應(yīng)
(1)編碼改變通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送。 (2)服務(wù)器握手結(jié)束通知,表示服務(wù)器的握手階段已經(jīng)結(jié)束。這一項(xiàng)同時(shí)也是前面發(fā)送的所有內(nèi)容的hash值,用來供客戶端校驗(yàn)。
思考:加密信息進(jìn)行通信處理速度變慢問題?但是?當(dāng)使用SSL時(shí),處理速度會(huì)變慢
- 通信慢:在HTTP的基礎(chǔ)上,必須進(jìn)行SSL通信,整體通信量增加
- 由于大量消耗CPU資源及內(nèi)存等資源,處理速度變慢:SSL加密處理,消耗更多資源。
**每次使用公鑰加密計(jì)算量太大,如何減少耗用的時(shí)間?** 解決方法:每一次對(duì)話(session),客戶端和服務(wù)器端都生成一個(gè)"對(duì)話密鑰"(session key),用它來加密信息。由于"對(duì)話密鑰"是對(duì)稱加密,所以運(yùn)算速度非???,而服務(wù)器公鑰只用于加密"對(duì)話密鑰"本身,這樣就減少了加密運(yùn)算的消耗時(shí)間。
(3)SSL/TLS協(xié)議提供的服務(wù)主要有:
- 認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
- 加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;
- 維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過程中不被改變。
基本思路:公鑰加密
客戶端先向服務(wù)器端索要公鑰,然后用公鑰加密信息,服務(wù)器收到密文后,用自己的私鑰解密
公鑰放在數(shù)字證書中,證書可信,公鑰即可信
(6)總結(jié)-兩張圖
(7)參考資料1.
tcp三次握手,四次揮手2.
TLS/SSL工作原理3.
深入理解HTTPS工作原理4.《圖解HTTP》
5.