1前端 | 分分鐘讓你理解HTTPS

本文來(lái)自@Keely袁慶玲;來(lái)源:https://juejin.im/post/5ad6ad575188255c272273c4

目前來(lái)看大多數(shù)網(wǎng)站都從HTTP轉(zhuǎn)向HTTPS捍掺,不在支持HTTP训枢,所以了解下HTTPS對(duì)于程序員來(lái)說(shuō)是很有必要的...

正文從這里開(kāi)始 ~

一、HTTP存在的問(wèn)題

1.1 可能被竊聽(tīng)

HTTP 本身不具備加密的功能醉旦,HTTP 報(bào)文使用明文方式發(fā)送饶米。由于互聯(lián)網(wǎng)是由聯(lián)通世界各個(gè)地方的網(wǎng)絡(luò)設(shè)施組成,所有發(fā)送和接收經(jīng)過(guò)某些設(shè)備的數(shù)據(jù)都可能被截獲或窺視车胡。(例如大家都熟悉的抓包工具:Wireshark)

1.2 認(rèn)證問(wèn)題

  • 無(wú)法確認(rèn)你發(fā)送到的服務(wù)器就是真正的目標(biāo)服務(wù)器(可能服務(wù)器是偽裝的)

  • 無(wú)法確定返回的客戶端是否是按照真實(shí)意圖接收的客戶端(可能是偽裝的客戶端)

  • 無(wú)法確定正在通信的對(duì)方是否具備訪問(wèn)權(quán)限檬输,Web 服務(wù)器上某些重要的信息,只想發(fā)給特定用戶即使是無(wú)意義的請(qǐng)求也會(huì)照單全收匈棘。無(wú)法阻止海量請(qǐng)求下的 DoS 攻擊(Denial of Service褪猛,拒絕服務(wù)攻擊)。

1.3 可能被篡改

請(qǐng)求或響應(yīng)在傳輸途中羹饰,遭攻擊者攔截并篡改內(nèi)容的攻擊被稱為中間人攻擊(Man-in-the-Middle attack伊滋,MITM)。

二队秩、HTTPS介紹

2.1 什么是HTTPS

超文本傳輸安全協(xié)議(英語(yǔ):Hypertext Transfer Protocol Secure笑旺,縮寫(xiě):HTTPS,常稱為HTTP over TLS馍资,HTTP over SSL或HTTP Secure)是一種通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議筒主。HTTPS經(jīng)由HTTP進(jìn)行通信,但利用SSL/TLS來(lái)加密數(shù)據(jù)包。HTTPS開(kāi)發(fā)的主要目的乌妙,是提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證使兔,保護(hù)交換數(shù)據(jù)的隱私與完整性。

2.2 HTTPS怎么解決上述問(wèn)題

HTTPS是在通信接口部分用 TLS(Transport Layer Security 傳輸層安全性協(xié)議)藤韵,TLS協(xié)議采用主從式架構(gòu)模型虐沥,用于在兩個(gè)應(yīng)用程序間通過(guò)網(wǎng)絡(luò)創(chuàng)建起安全的連接,防止在交換數(shù)據(jù)時(shí)受到竊聽(tīng)及篡改泽艘。

201852214711

2.3 SSL和TLS的關(guān)系

傳輸層安全性協(xié)議(英語(yǔ):Transport Layer Security欲险,縮寫(xiě)作 TLS),及其前身安全套接層(Secure Sockets Layer匹涮,縮寫(xiě)作 SSL)是一種安全協(xié)議天试,目的是為互聯(lián)網(wǎng)通信,提供安全及數(shù)據(jù)完整性保障然低。

網(wǎng)景公司(Netscape)在1994年推出首版網(wǎng)頁(yè)瀏覽器喜每,網(wǎng)景導(dǎo)航者時(shí),推出HTTPS協(xié)議雳攘,以SSL進(jìn)行加密带兜,這是SSL的起源。

IETF將SSL進(jìn)行標(biāo)準(zhǔn)化来农,1999年公布第一版TLS標(biāo)準(zhǔn)文件鞋真。隨后又公布RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。在瀏覽器沃于、電子郵件涩咖、即時(shí)通信、VoIP繁莹、網(wǎng)絡(luò)傳真等應(yīng)用程序中檩互,廣泛支持這個(gè)協(xié)議。

2.4 TLS/SSL 協(xié)議

HTTPS 協(xié)議的主要功能基本都依賴于 TLS/SSL 協(xié)議咨演,TLS/SSL 的功能實(shí)現(xiàn)主要依賴于三類基本算法:散列函數(shù) 闸昨、對(duì)稱加密和非對(duì)稱加密,其利用非對(duì)稱加密實(shí)現(xiàn)身份認(rèn)證和密鑰協(xié)商薄风,對(duì)稱加密算法采用協(xié)商的密鑰對(duì)數(shù)據(jù)加密饵较,基于散列函數(shù)驗(yàn)證信息的完整性。

201852214842

2.5 用信鴿來(lái)解釋

密碼學(xué)是一門難以理解的學(xué)科遭赂,說(shuō)起來(lái)也很抽象循诉,而在互聯(lián)網(wǎng)上任何活動(dòng)都可以認(rèn)為是從某臺(tái)服務(wù)器上發(fā)送和接受信息。我們可以假設(shè)這些消息是用信鴿來(lái)傳遞的撇他。

在談之前我們先說(shuō)一下愛(ài)麗絲茄猫、鮑勃和馬洛里狈蚤。他們是廣泛地代入密碼學(xué)和物理學(xué)領(lǐng)域的通用角色。這些名稱是為了方便說(shuō)明議題划纽,如果句子類似“甲想發(fā)送消息給乙”脆侮,當(dāng)議題變得越復(fù)雜,將越難理解及容易混亂勇劣。而在典型的協(xié)議運(yùn)行中靖避,這些人物不一定是一個(gè)“人類”,而可能是一個(gè)可信賴的自動(dòng)式代理人(如電腦程序)芭毙。使用這些名稱有助說(shuō)明的結(jié)構(gòu)筋蓖,有時(shí)也會(huì)用作幽默卸耘。

2.5.1 初步交流

如果愛(ài)麗絲想要給鮑勃發(fā)送一段信息退敦,她會(huì)把信息綁在信鴿的腿上然后送往鮑勃那里。鮑勃收到了信息蚣抗,并閱讀了信息侈百,非常完美。

但如果馬洛里攔截了愛(ài)麗絲的鴿子并且篡改了信息呢翰铡?鮑勃就沒(méi)有辦法去知道愛(ài)麗絲發(fā)出的信息在傳遞過(guò)程中遭到了修改钝域。

這就是 HTTP 如何運(yùn)作的《В看起來(lái)很可怕對(duì)吧例证?我是不會(huì)通過(guò) HTTP 來(lái)發(fā)送我的銀行資信證明的,并且你也不應(yīng)如此迷捧。

2.5.2 隱蔽的密碼

那么如果愛(ài)麗絲和鮑勃都非常的機(jī)智织咧。他們一致認(rèn)同使用一種隱蔽的密碼來(lái)書(shū)寫(xiě)他們的信息。他們會(huì)將信息中的每個(gè)字母按照字母表中的順序前移三位漠秋。比如笙蒙,D→A,E→B庆锦,F(xiàn)→C捅位。如此一來(lái),原文為 “secret message” 的信息就變成了 “pbzobq jbppxdb” 搂抒。

那現(xiàn)在如果馬洛里再截獲了信鴿艇搀,她既不能做出有意義的修改同時(shí)也不會(huì)知道信息的內(nèi)容,因?yàn)樗恢离[蔽的密碼到底是什么求晶。然而鮑勃卻可以很容易反轉(zhuǎn)密碼焰雕,依靠 A → D, B → E, C → F 之類的規(guī)則破譯信息的內(nèi)容。加密后的信息 “pbzobq jbppxdb” 會(huì)被破解還原為 “secret message” 誉帅。

這就是對(duì)稱密匙加密淀散,因?yàn)槿绻阒廊绾渭用芤欢涡畔⒛敲茨阃瑯涌梢越饷苓@段信息右莱。

上述的密碼通常被稱為凱撒碼。在現(xiàn)實(shí)生活中档插,我們會(huì)使用更為奇特和復(fù)雜的密碼慢蜓,但原理相同蛙粘。

2.5.3 我們?nèi)绾螞Q定密匙瓜挽?

如果除了發(fā)信者和收信者之外沒(méi)有人知道使用的是什么密匙,對(duì)稱密匙加密是非常安全的购笆。在凱撒加密中则剃,密匙就是每個(gè)字母變到加密字母需要移動(dòng)多少位的偏移量耘柱。我之前的距離中,使用的偏移量是 3 棍现,但是也可以用 4 或者 12 调煎。

問(wèn)題是如果愛(ài)麗絲和鮑勃在開(kāi)始用信鴿傳信之前沒(méi)有碰過(guò)頭,他們沒(méi)有一個(gè)安全的方式來(lái)確立密匙己肮。如果他們自己來(lái)在信中傳遞密匙士袄,馬洛里就會(huì)截獲信息并發(fā)現(xiàn)密匙。這就使得馬洛里可以在愛(ài)麗絲和鮑勃開(kāi)始加密他們的信息之前或之后谎僻,閱讀到他們信息的內(nèi)容并按照她的意愿來(lái)篡改信息娄柳。

這是一個(gè)中間人攻擊的典型例子,避免這個(gè)問(wèn)題的唯一方法就是收發(fā)信的兩方一起修改他們的編碼系統(tǒng)艘绍。

2.5.4 通過(guò)信鴿傳遞盒子

所以愛(ài)麗絲和鮑勃就想出了一個(gè)更好的系統(tǒng)赤拒。當(dāng)鮑勃想要給愛(ài)麗絲發(fā)送信息時(shí),他會(huì)按照如下的步驟來(lái)進(jìn)行:

  • 鮑勃向愛(ài)麗絲送一只沒(méi)有攜帶任何信息的鴿子诱鞠。

  • 愛(ài)麗絲給鮑勃送回鴿子挎挖,并且這只鴿子帶有一個(gè)有開(kāi)著的鎖的盒子,愛(ài)麗絲保管著鎖的鑰匙般甲。

  • 鮑勃把信放進(jìn)盒子中肋乍,把鎖鎖上然后把盒子送給愛(ài)麗絲。

  • 愛(ài)麗絲收到盒子敷存,用鑰匙打開(kāi)然后閱讀信息墓造。

這樣馬洛里就不能通過(guò)截獲鴿子來(lái)篡改信息了,因?yàn)樗龥](méi)有打開(kāi)盒子的鑰匙锚烦。當(dāng)愛(ài)麗絲要給鮑勃發(fā)送消息的時(shí)候同樣按照上述的流程觅闽。

愛(ài)麗絲和鮑勃所使用的流程通常被稱為非對(duì)稱密鑰加密。之所以稱之為非對(duì)稱涮俄,是因?yàn)榧词故悄惆研畔⒕幋a(鎖上盒子)也不能破譯信息(打開(kāi)鎖住的盒子)蛉拙。

在術(shù)語(yǔ)中,盒子被稱為公匙而用來(lái)打開(kāi)盒子的鑰匙被稱為私匙彻亲。

2.5.5 如何信任盒子

但是會(huì)發(fā)現(xiàn)還是存在問(wèn)題孕锄。當(dāng)鮑勃收到盒子時(shí)他如何能確定這個(gè)盒子來(lái)自愛(ài)麗絲而不是馬洛里截獲了鴿子然后換了一個(gè)她有鑰匙能打開(kāi)的盒子呢吮廉?

愛(ài)麗絲決定簽名標(biāo)記一下盒子,這樣鮑勃收到盒子的時(shí)候就可以檢查簽名來(lái)確定是愛(ài)麗絲送出的盒子了畸肆。

那么鮑勃如何打一開(kāi)始就能識(shí)別出愛(ài)麗絲的簽名呢宦芦?這是個(gè)好問(wèn)題。愛(ài)麗絲和鮑勃也確實(shí)有這個(gè)問(wèn)題轴脐,所以他們決定讓泰德代替愛(ài)麗絲來(lái)標(biāo)記這個(gè)盒子调卑。

那么誰(shuí)是泰德呢?泰德很有名的大咱,是一個(gè)值得信任的家伙恬涧。他會(huì)給任何人簽名并且所有人都信任他只會(huì)給合法的人簽名標(biāo)記盒子。

如果泰德可以確認(rèn)索要簽名的人是愛(ài)麗絲碴巾,他就會(huì)在愛(ài)麗絲的盒子上簽名溯捆。因此馬洛里就不可能搞到一個(gè)有著泰德代表愛(ài)麗絲簽了名的盒子,因?yàn)轷U勃知道泰德只會(huì)給他確認(rèn)過(guò)的人簽名餐抢,從而識(shí)破馬洛里的詭計(jì)现使。

泰德的角色在術(shù)語(yǔ)中被稱為認(rèn)證機(jī)構(gòu)低匙。而你閱讀此文時(shí)所用的瀏覽器打包存有許多認(rèn)證機(jī)構(gòu)的簽名旷痕。

所以當(dāng)你首次接入一個(gè)網(wǎng)站的時(shí)候你可以信任來(lái)自這個(gè)站點(diǎn)的盒子因?yàn)槟阈湃翁┑露┑聲?huì)告訴你盒子是合法的。

2.5.6 沉重的盒子

現(xiàn)在愛(ài)麗絲和鮑勃有了一個(gè)可靠的系統(tǒng)來(lái)進(jìn)行交流顽冶,然他們也意識(shí)到讓鴿子攜帶盒子比原本只攜帶信件要慢一些欺抗。

因此他們決定只有在選擇用對(duì)稱加密來(lái)給信息編碼(還記得凱撒加密法吧?)的密匙時(shí)强重,使用傳遞盒子的方法(非對(duì)稱加密)绞呈。

這樣就可以二者的優(yōu)點(diǎn)兼具了,非對(duì)稱加密的可靠性和對(duì)稱加密的高效性间景。

現(xiàn)實(shí)世界中我們不會(huì)用信鴿這樣慢的送信手段佃声,但用非對(duì)稱加密來(lái)編碼信息仍要慢于使用對(duì)稱加密技術(shù),所以我們只有在交換編碼密匙的時(shí)候會(huì)使用非對(duì)稱加密技術(shù)倘要。

那么相信現(xiàn)在的你已經(jīng)了解了HTTPS是如何工作的了~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末圾亏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子封拧,更是在濱河造成了極大的恐慌志鹃,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泽西,死亡現(xiàn)場(chǎng)離奇詭異曹铃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)捧杉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門陕见,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)秘血,“玉大人,你說(shuō)我怎么就攤上這事评甜≈背罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵蜕着,是天一觀的道長(zhǎng)谋竖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)承匣,這世上最難降的妖魔是什么蓖乘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮韧骗,結(jié)果婚禮上嘉抒,老公的妹妹穿的比我還像新娘。我一直安慰自己袍暴,他們只是感情好些侍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著政模,像睡著了一般岗宣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淋样,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天耗式,我揣著相機(jī)與錄音,去河邊找鬼趁猴。 笑死刊咳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的儡司。 我是一名探鬼主播娱挨,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捕犬!你這毒婦竟也來(lái)了跷坝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤或听,失蹤者是張志新(化名)和其女友劉穎探孝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體誉裆,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顿颅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了足丢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粱腻。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庇配,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绍些,到底是詐尸還是另有隱情捞慌,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布柬批,位于F島的核電站啸澡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏氮帐。R本人自食惡果不足惜嗅虏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望上沐。 院中可真熱鬧皮服,春花似錦、人聲如沸参咙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蕴侧。三九已至择同,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戈盈,已是汗流浹背奠衔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留塘娶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓痊夭,卻偏偏與公主長(zhǎng)得像刁岸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子她我,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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