據(jù)說這是程序員被黑得最慘的一次 - SSL/TLS協(xié)議原理解析

封面來自百度

本文系作者學(xué)習(xí)后鞏固知識點(diǎn),錯誤之處煩請點(diǎn)出吏颖,本文從敘述一個小故事的視角來介紹 SSL/TLS 的原理搔体,希望對讀者有所啟發(fā)。

背景

程序員小明想給隔壁小紅寫信表白半醉,但是又不想讓信件內(nèi)容被其他人看見疚俱,希望只有小紅才能看見信件內(nèi)容,迫不及待的小明的大腦飛快運(yùn)轉(zhuǎn)起來缩多。

小明

預(yù)備基礎(chǔ)知識

  • 對稱密鑰加密(Symmetric Key Cryptography):加密與解密使用相同密鑰呆奕。對稱加密算法的特點(diǎn)是算法公開夯尽、計算量小、加密速度快登馒、加密效率高。缺點(diǎn)是交易雙方都使用同樣鑰匙咆槽,安全性得不到保證陈轿。

  • 非對稱密鑰加密(Asymmetric Key Cryptography):加密與解密使用不同密鑰。非對稱加密使用一對秘鑰秦忿,一個用來加密麦射,一個用來解密,而且公鑰是公開的灯谣,秘鑰是自己保存的潜秋,其安全性更好。缺點(diǎn)是加密和解密花費(fèi)時間長胎许、速度慢峻呛,只適合對少量數(shù)據(jù)進(jìn)行加密。

  • 哈希算法(Hash Algorithm):又稱散列算法辜窑,雜湊算法钩述,是一種從任意文件中創(chuàng)造小的數(shù)字「指紋」的方法。與指紋一樣穆碎,散列算法就是一種以較短的信息來保證文件唯一性的標(biāo)志牙勘,這種標(biāo)志與文件的每一個字節(jié)都相關(guān),而且難以找到逆向規(guī)律所禀。因此方面,當(dāng)原有文件發(fā)生改變時,其標(biāo)志值也會發(fā)生改變色徘,從而告訴文件使用者當(dāng)前的文件已經(jīng)不是你所需求的文件恭金。

信件加密(對稱加密)

小明想到對信件內(nèi)容進(jìn)行加密,而加密算法一般分為 對稱加密非對稱加密 兩種贺氓。非對稱加密對加密性能較差蔚叨,對加密內(nèi)容有長度限制,所以加密信件內(nèi)容我們只能選擇對稱加密方式辙培。使用對稱加密算法和一個 會話秘鑰 對信件內(nèi)容加密蔑水,當(dāng)小明把加密好的信件送給小紅,小紅收到密信后需要使用同一個會話秘鑰進(jìn)行解密扬蕊,小明該如何才能安全地把會話秘鑰送到小紅手上呢搀别?

信件加密

會話秘鑰加密(非對稱加密)

直接將會話秘鑰和信件打包一起發(fā)出去,如果遇上了和小明一樣懂得加密算法的程序員尾抑,那信件內(nèi)容相當(dāng)于不設(shè)防歇父,所以我們也要想辦法對秘鑰進(jìn)行加密蒂培,因為秘鑰的長度一般都不會太長,所以我們可以使用非對稱加密算法加密秘鑰 榜苫。

非對稱加密秘鑰有兩份护戳,可以任選一把作為 私鑰 ,供自己使用垂睬,另外一把作為 公鑰 媳荒,分發(fā)出去供收信方使用。小明用自己的私鑰對會話秘鑰進(jìn)行加密驹饺,這樣會話密鑰就可以確保安全了钳枕。但是小明仍然無法保證公鑰能安全送到小紅手中,如果公鑰被壞人得到了赏壹,甚至可以假冒成小紅與小明互相通信鱼炒,細(xì)思恐極之下,小明陷入了深思中蝌借。

一對秘鑰

權(quán)威機(jī)構(gòu)

N多年過去了昔瞧,小明通過不懈努力,終于找到了安全傳輸公鑰的辦法菩佑。小明建立了一個權(quán)威機(jī)構(gòu)硬爆,該權(quán)威機(jī)構(gòu)專門頒布一種數(shù)字證書,由于該權(quán)威機(jī)構(gòu)馳名海內(nèi)網(wǎng)并且公認(rèn)信用可靠擎鸠,它頒布數(shù)字證書基本可以確定證書內(nèi)容可靠缀磕,在其之下還有很多各級證書頒布機(jī)構(gòu),受大眾信任程度各不相同劣光。我們的電腦在安裝操作系統(tǒng)時袜蚕,系統(tǒng)順帶安裝了一些受信任的證書頒布機(jī)構(gòu)的證書,證書包含有這些機(jī)構(gòu)秘鑰對應(yīng)的公鑰绢涡。

權(quán)威機(jī)構(gòu)

數(shù)字證書

小明只要去證書頒布機(jī)構(gòu)申請一個數(shù)字證書牲剃,數(shù)字證書中包含了不少于以下幾項內(nèi)容:

  • 證書的發(fā)布機(jī)構(gòu)
  • 證書的有效期
  • 公鑰
  • 證書的所有者
  • 簽名所使用的算法
  • 指紋以及指紋算法
數(shù)字證書

然后將數(shù)字證書發(fā)給小紅,小紅得到數(shù)字證書后雄可,通過證書發(fā)布機(jī)構(gòu)的公鑰(默認(rèn)安裝在系統(tǒng)中)可以對證書內(nèi)容解密凿傅,如果成功解密,說明該證書來源真實可靠数苫,以該證書頒布機(jī)構(gòu)的名譽(yù)保證聪舒。數(shù)字證書中的 證書所有者 保證了公鑰來自于小明,而不是來自于隔壁老王的兒子小王虐急。來源可靠箱残,但是不能保證證書內(nèi)容沒有被別人篡改,這個時候就涉及到了指紋和數(shù)字簽名。

指紋

1. 指紋加密

證書頒布機(jī)構(gòu)在給小明發(fā)證書時被辑,把證書的發(fā)布機(jī)構(gòu)燎悍、證書的有效期公鑰盼理、證書的所有者等信息以明文的形式寫到證書里面谈山,然后用一個指紋算法計算出這些數(shù)字證書內(nèi)容的一個指紋,并把指紋和指紋算法用自己的私鑰進(jìn)行加密得到數(shù)字簽名宏怔,然后這些內(nèi)容一起打包發(fā)給小明勾哩,還會將一個專屬于小明私鑰給到小明,這個私鑰和證書中的公鑰為一對举哟。

指紋

2. 指紋驗證

而這個證書由小明又轉(zhuǎn)送至小紅手中,首先小紅讀取證書中的證書頒發(fā)機(jī)構(gòu)為SecureTrust CA 迅矛,然后會在操作系統(tǒng)中受信任的發(fā)布機(jī)構(gòu)的證書中去找SecureTrust CA的證書妨猩,如果找不到,那說明證書的發(fā)布機(jī)構(gòu)是個水貨發(fā)布機(jī)構(gòu)秽褒,小明的證書和內(nèi)容可能有問題壶硅。 如果在系統(tǒng)中找到了SecureTrust CA的證書,那么從證書中取出SecureTrust CA的公鑰销斟,然后對小明的證書里面的數(shù)字簽名用這個公鑰進(jìn)行解密庐椒,得到指紋和指紋算法,然后使用這個指紋算法計算小明的證書的指紋蚂踊,將這個計算出來指紋與放在證書中的指紋對比约谈,如果一致,說明小明的證書肯定沒有被修改過并且證書是SecureTrust CA發(fā)布的犁钟。

指紋驗證

握手流程

最終小紅可以安全地拿到小明的公鑰棱诱,每次寫信的時候隨機(jī)生成一個會話秘鑰,再使用公鑰對會話秘鑰加密后發(fā)給小明涝动,小明用自己的私鑰解密得到會話秘鑰迈勋,然后對會話秘鑰hash后,將hash值加密發(fā)回給小紅醋粟,小紅使用公鑰解密得到hash值靡菇,然后自己也對會話秘鑰進(jìn)行hash計算,對比自己算出的hash值和對方發(fā)過來的hash值米愿,如果一直就可以確認(rèn)對方是持有私鑰的小明了厦凤。然后雙方就可以使用這個會話秘鑰進(jìn)行通信了。

握手過程

雖然現(xiàn)在信件如果被第三方持有了也無法得知信件內(nèi)容育苟,但是遇上無聊的人他仍然可以對信件內(nèi)容進(jìn)行破壞泳唠。在每次發(fā)送信息時,先對信息的內(nèi)容進(jìn)行一個hash計算得出一個指紋宙搬,將信息的內(nèi)容和這個指紋一起加密后發(fā)送笨腥。接收方在收到后進(jìn)行解密得到明文的內(nèi)容和指紋拓哺,然后接收方再自己對收到信息內(nèi)容做一次hash計算,與收到的指紋進(jìn)行對比看是否匹配脖母,如果匹配就說明信息在傳輸過程中沒有被修改過士鸥。如果不匹配說明中途有人故意對加密數(shù)據(jù)進(jìn)行了修改,立刻中斷通話過程后做其它處理谆级。

小紅發(fā)送信息
服務(wù)端.png

結(jié)語

到這里烤礁,小明終于可以給小紅寫信了,然而小紅已經(jīng)和隔壁老王的兒子小王在一起了肥照。小明氣急脚仔,磨刀霍霍向小王...

欲知后事如何,趕緊點(diǎn)贊舆绎。有錯誤之處煩請指出

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲤脏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子吕朵,更是在濱河造成了極大的恐慌猎醇,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件努溃,死亡現(xiàn)場離奇詭異硫嘶,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)梧税,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門沦疾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人第队,你說我怎么就攤上這事曹鸠。” “怎么了斥铺?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵彻桃,是天一觀的道長。 經(jīng)常有香客問我晾蜘,道長邻眷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任剔交,我火速辦了婚禮肆饶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘岖常。我一直安慰自己驯镊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著板惑,像睡著了一般橄镜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冯乘,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天洽胶,我揣著相機(jī)與錄音,去河邊找鬼裆馒。 笑死姊氓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喷好。 我是一名探鬼主播翔横,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梗搅!你這毒婦竟也來了禾唁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤些膨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钦铺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體订雾,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年矛洞,在試婚紗的時候發(fā)現(xiàn)自己被綠了洼哎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡沼本,死狀恐怖噩峦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抽兆,我是刑警寧澤识补,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站辫红,受9級特大地震影響凭涂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贴妻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一切油、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧名惩,春花似錦澎胡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稚伍。三九已至,卻和暖如春巢株,著一層夾襖步出監(jiān)牢的瞬間槐瑞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工阁苞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留困檩,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓那槽,卻偏偏與公主長得像悼沿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骚灸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

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