初識(shí) Https,大白話講解

本文為原創(chuàng)文章,如需轉(zhuǎn)載請(qǐng)注明出處,謝謝!

概述:
1.簡(jiǎn)述 Https 每個(gè)環(huán)節(jié)都做了什么
2.解釋 Https 為什么安全

文中將使用 Client 和 Server 代表客戶(hù)端和服務(wù)端

前提

Https 涉及加密的知識(shí):

  • 對(duì)稱(chēng)加密炬丸、非對(duì)稱(chēng)加密(公鑰加密)
  • 消息摘要 Message Digest、消息認(rèn)證碼 Message Authentication Code
  • 數(shù)字簽名 Digital Signature
  • 證書(shū)認(rèn)證 Certification Authority

如果讀者對(duì)上面任何一個(gè)名詞陌生捂人,請(qǐng)參考這篇文章:
https://foofish.net/https-story-1.html

我讀完此文御雕,受益匪淺矢沿!之后的文章我會(huì)在每一環(huán)節(jié)的闡述中捎帶、粗略地解釋一下上面的內(nèi)容酸纲,還是強(qiáng)烈建議不懂上述內(nèi)容的同學(xué)認(rèn)真地學(xué)一下那篇文章捣鲸。

一、Client 向 Server 提供支持的加密算法

首先 Client 向 Server 發(fā)送一條消息闽坡,包括 Client 各種支持的加密算法栽惶、協(xié)議版本以及壓縮算法。目的是通知 Server 在所給的算法中選擇一種疾嗅,以便于之后通信的加解密外厂。

同時(shí),Client 會(huì)在本端生成一段隨機(jī)數(shù)作為之后對(duì)稱(chēng)加密的私鑰代承,現(xiàn)在來(lái)簡(jiǎn)單解釋一下對(duì)稱(chēng)加密和 Client 的私鑰汁蝶。舉個(gè)平時(shí)的栗子,你肯定要和你女朋友共享銀行卡的密碼(不要問(wèn)為什么)论悴,假設(shè)你是 Client掖棉,女朋友是 Server,銀行卡是之后傳輸?shù)拿芪陌蚬溃阍O(shè)置的密碼就是密鑰幔亥。你在家里悄悄地把密碼告訴了你女朋友,密碼天知地知你知你女朋友知察纯,這時(shí)候就算銀行卡丟了也不怕帕棉,因?yàn)闆](méi)有第三個(gè)知道密碼(密鑰),所以錢(qián)(機(jī)密信息)就不會(huì)被竊取饼记,這就是對(duì)稱(chēng)加密香伴。

二、Server 響應(yīng) Client握恳,傳送證書(shū)以及確認(rèn)信息

Server 收到 Client 的消息后瞒窒,會(huì)做出一次響應(yīng)∠缤荩回復(fù)信息中主要包含圖中的三部分崇裁,其中證書(shū)是最重要的一部分,現(xiàn)在就來(lái)說(shuō)一下證書(shū)都包含哪些東西束昵,其作用到底是什么拔稳。這一部分要說(shuō)的內(nèi)容比較多,做好心理準(zhǔn)備~

首先锹雏,說(shuō)一下證書(shū)中都包含哪些信息:一些個(gè)人信息巴比,如用戶(hù)的姓名、組織、郵箱地址等轻绞,除此之外包含了服務(wù)器生成的公鑰采记。公鑰就是公鑰加密(非對(duì)稱(chēng)加密)的組成部分之一,還有一部分就是私鑰政勃,現(xiàn)在繼續(xù)上一節(jié)的栗子講什么是公鑰加密唧龄。

有一天,你在家中告訴你女朋友銀行卡密碼奸远,恰巧隔墻有耳(攻擊者竊取了密鑰)既棺,于是你的錢(qián)財(cái)就受到了威脅,因?yàn)槟莻€(gè)人隨時(shí)可能盜刷你的銀行卡懒叛。那怎么解決呢丸冕?你想了個(gè)好辦法,你買(mǎi)了一把鎖(公鑰)薛窥,只配兩把鑰匙(私鑰)胖烛,你和你女朋友各執(zhí)一把。然后你和你女朋友說(shuō)诅迷,我每周會(huì)往床頭的柜子里寫(xiě)一個(gè)密碼條(對(duì)稱(chēng)加密的密鑰)洪己,那就是咱們銀行卡的密碼。這樣一來(lái)竟贯,除你二人沒(méi)人能打開(kāi)柜子拿到密碼,就保證了安全逝钥。

所以公鑰加密就是 Server 生成一對(duì)密鑰(公鑰和私鑰)屑那,然后私鑰自己保留,相當(dāng)于一把鑰匙艘款,公鑰相當(dāng)于是一把鎖持际,任何人都可以拿到,但鑰匙卻只有一把哗咆,這樣用此鎖鎖住的東西就絕對(duì)安全了蜘欲。

明白了什么是公鑰加密后,現(xiàn)在又面臨了一個(gè)問(wèn)題晌柬,Server 在給 Client 傳送公鑰的過(guò)程中姥份,公鑰被攻擊者掉包了。也就是 Client 誤使用了攻擊者的鎖年碘,這樣密鑰就被攻擊者套走了澈歉,之后的通信就完全暴露了,所以 Client 需要清楚鎖到底是不是從 Server 傳來(lái)的屿衅,這就需要將鎖(公鑰)放到證書(shū)中埃难,并將證書(shū)交給權(quán)威機(jī)構(gòu)(CA)做認(rèn)證,只有 CA 認(rèn)證過(guò)的鎖 Client 才會(huì)使用。

那么下一個(gè)問(wèn)題來(lái)了涡尘,CA 是如何讓 Client 相信公鑰是安全的呢忍弛?就是使用數(shù)字簽名技術(shù),現(xiàn)在來(lái)簡(jiǎn)單解釋一下什么是數(shù)字簽名考抄。

簡(jiǎn)單來(lái)說(shuō)细疚,數(shù)字簽名就是反著使用公鑰加密,剛才說(shuō)過(guò)公鑰加密中鑰匙只有一把(私鑰只有一個(gè))座泳,所以數(shù)字簽名就是用鎖來(lái)試鑰匙惠昔,如果鎖被打開(kāi)了,
證明鎖一定是你的挑势,因?yàn)橹挥心阌需€匙镇防,賴(lài)賬也沒(méi)用。

具體來(lái)說(shuō)潮饱,CA 使用自己的私鑰通過(guò)某種 Hash 算法對(duì) Server 證書(shū)中的公鑰進(jìn)行 Hash 運(yùn)算得到了一個(gè) Hash 串来氧,然后將 Hash 串寫(xiě)在證書(shū)里一并交給 Client,便于 Client 進(jìn)行認(rèn)證香拉。Client 使用 CA 提供的公鑰(鎖啦扬,任何人都能拿到)通過(guò) Hash 運(yùn)算也得到一個(gè) Hash 串,和證書(shū)中的做對(duì)比凫碌,如果相同則證明證書(shū)一定是 CA 認(rèn)證過(guò)的扑毡,是安全的,這就是用鎖去試驗(yàn)鑰匙的過(guò)程盛险。

三瞄摊、Client 檢驗(yàn)證書(shū)合法性

上一節(jié)中其實(shí)已經(jīng)說(shuō)了 Client 如何認(rèn)證證書(shū)合法性了,假若證書(shū)驗(yàn)證沒(méi)通過(guò),一般情況下程序會(huì)拋出異常,處理異常時(shí)可以選擇與 Server 斷開(kāi)連接数初。這一節(jié)主要說(shuō)證書(shū)認(rèn)證通過(guò)之后,Client 又做了那些事惯驼。

證書(shū)成功認(rèn)證之后,Client 首先會(huì)對(duì)第一步中生成的那段隨機(jī)數(shù)進(jìn)行 Hash 運(yùn)算递瑰,然后使用證書(shū)中的公鑰對(duì)隨機(jī)數(shù)進(jìn)行加密祟牲。之后會(huì)生成一條消息,并將 Hash 串和密文放到消息中發(fā)送給 Server抖部。

在消息傳遞的過(guò)程中疲眷,解密的私鑰只有 Server 才有,所以密文在傳輸過(guò)程中絕對(duì)安全您朽。還有一個(gè)風(fēng)險(xiǎn)就是攻擊者可能會(huì)把消息篡改狂丝,這時(shí)换淆,Hash 串的作用就體現(xiàn)出來(lái)了。通過(guò) Hash 串防篡改的技術(shù)就是消息摘要几颜,現(xiàn)在來(lái)簡(jiǎn)單地說(shuō)一下消息摘要倍试。

簡(jiǎn)單來(lái)說(shuō),消息摘要就是通過(guò)不可逆的算法生成一段 Hash 串蛋哭,也就是一旦 Hash 串生成了县习,就無(wú)法在通過(guò)其他手段將其還原回原來(lái)的樣子。所以如果原始內(nèi)容的 Hash 值確定了谆趾,就證明了內(nèi)容的完整和可靠性躁愿,一旦內(nèi)容被修改,Hash 串必定和之前不同沪蓬。

四彤钟、 Server 解密取出隨機(jī)數(shù),并向 Client 發(fā)送握手消息

Server 收到 Client 發(fā)送的消息后跷叉,將密文用私鑰解密得到了隨機(jī)數(shù)逸雹。然后需要用同樣的消息摘要算法對(duì)隨機(jī)數(shù)進(jìn)行運(yùn)算,將算出來(lái)的 Hash 串與消息中的 Hash 串對(duì)比云挟,如果內(nèi)容完全一致梆砸,則繼續(xù)后面的流程,如果不一致就會(huì)斷開(kāi)連接园欣。

如果隨機(jī)數(shù)無(wú)誤帖世,Server 就會(huì)準(zhǔn)備一條握手消息,并且會(huì)使用之前和 Client 確認(rèn)過(guò)的對(duì)稱(chēng)加密算法對(duì)消息加密沸枯,密鑰就是隨機(jī)數(shù)狮暑。同樣的,為防止消息被篡改辉饱,需要用消息摘要對(duì)消息進(jìn)行處理。

密鑰通過(guò)公鑰加密的方式傳遞過(guò)來(lái)拣展,之后每條消息都用此密鑰加密彭沼,從而保證了內(nèi)容的安全。

五备埃、總結(jié)完整過(guò)程

這里盜用一張圖

相信看完前面的內(nèi)容已經(jīng)大致明白了 https 的流程姓惑,看著上面??的圖,可把流程大致總結(jié)為:

  • 用公鑰加密的方式安全地運(yùn)送 random key
  • 之后用 random key 作為密鑰進(jìn)行對(duì)稱(chēng)加密按脚,保障通信內(nèi)容的安全

到這里有同學(xué)肯定會(huì)有這樣的疑問(wèn):
既然公鑰加密就已經(jīng)能保證安全了于毙,為何不所有通信都用公鑰加密呢?這其實(shí)就說(shuō)到了公鑰加密的一個(gè)致命缺點(diǎn)辅搬,就是公鑰加密的效率很低唯沮,所以公鑰加密只使用一次脖旱。而對(duì)稱(chēng)加密的效率高于公鑰加密,所以在之后的通信中會(huì)頻繁的使用介蛉。

可以說(shuō) https 安全的精髓就在于非對(duì)稱(chēng)加密和對(duì)稱(chēng)加密的完美結(jié)合使用萌庆!

我也是個(gè)初學(xué)者,可能有些細(xì)節(jié)描述的不準(zhǔn)確
如寫(xiě)的有問(wèn)題币旧,可在簡(jiǎn)書(shū)中給我留言践险!感謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吹菱,一起剝皮案震驚了整個(gè)濱河市巍虫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鳍刷,老刑警劉巖占遥,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異倾剿,居然都是意外死亡筷频,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)前痘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凛捏,“玉大人,你說(shuō)我怎么就攤上這事芹缔∨餮ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵最欠,是天一觀的道長(zhǎng)示罗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)芝硬,這世上最難降的妖魔是什么蚜点? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮拌阴,結(jié)果婚禮上绍绘,老公的妹妹穿的比我還像新娘。我一直安慰自己迟赃,他們只是感情好陪拘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著纤壁,像睡著了一般左刽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酌媒,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天欠痴,我揣著相機(jī)與錄音迄靠,去河邊找鬼。 笑死斋否,一個(gè)胖子當(dāng)著我的面吹牛梨水,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播茵臭,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疫诽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了旦委?” 一聲冷哼從身側(cè)響起奇徒,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缨硝,沒(méi)想到半個(gè)月后摩钙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡查辩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年胖笛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宜岛。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡长踊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出萍倡,到底是詐尸還是另有隱情身弊,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布列敲,位于F島的核電站阱佛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏戴而。R本人自食惡果不足惜凑术,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望所意。 院中可真熱鬧淮逊,春花似錦、人聲如沸扁眯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姻檀。三九已至,卻和暖如春涝滴,著一層夾襖步出監(jiān)牢的瞬間绣版,已是汗流浹背胶台。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杂抽,地道東北人诈唬。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像缩麸,于是被迫代替她去往敵國(guó)和親铸磅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容