https怎么保證安全不皆,怎么加密贯城?

每當(dāng)我們討論到信息安全的時(shí)候,我們最長(zhǎng)接觸到的信息加密傳輸?shù)姆绞侥^(guò)于 HTTPS 了霹娄,當(dāng)我們?yōu)g覽器地址欄閃現(xiàn)出綠色時(shí)能犯,就代表著這個(gè)網(wǎng)站支持 HTTPS 的加密信息傳輸方式,并且你與它的連接確實(shí)被加密了犬耻。但是 HTTPS 并不是一個(gè)單一的東西踩晶,它只是我們常見(jiàn)的 HTTP 協(xié)議和某個(gè)加密協(xié)議的一個(gè)混合,這個(gè)加密協(xié)議通常會(huì)是 TLS枕磁。那么 HTTPS 為什么安全呢渡蜻?其實(shí)我們需要先考慮 HTTP 為什么不安全。

假設(shè)你坐在一個(gè)教室里计济,你現(xiàn)在非常想把某個(gè)信息傳遞給教室里的另一個(gè)人茸苇,一般來(lái)說(shuō),會(huì)選擇沦寂,傳紙條学密。傳紙條這個(gè)比喻其實(shí)非常正確,這就是互聯(lián)網(wǎng)的一個(gè)基礎(chǔ)協(xié)議 TCP/IP 協(xié)議基本的工作模式传藏。而通常腻暮,HTTP 協(xié)議的數(shù)據(jù)是使用 TCP/IP 協(xié)議進(jìn)行發(fā)送的。HTTP 指的是你在紙條上寫(xiě)明你要傳送的目的地是哪個(gè)同學(xué)的坐位漩氨,然后再是要傳遞的內(nèi)容西壮。途徑的同學(xué)拿到紙條后根據(jù)紙條上顯示的地址依次傳過(guò)去就好了遗增。這樣要面臨的第一個(gè)問(wèn)題就是:途徑的同學(xué)可以完全知道你寫(xiě)了什么叫惊。

這就是 HTTP 面臨的第一個(gè)問(wèn)題,這個(gè)問(wèn)題通常被叫做 “竊聽(tīng)” 或者 “嗅探” 做修,指的是和你在同一個(gè)網(wǎng)絡(luò)下或者是途徑的路由上的攻擊者可以偷窺到你傳輸?shù)膬?nèi)容霍狰。這是 HTTPS 要解決的第一個(gè)問(wèn)題。這種問(wèn)題通常是通過(guò)“加密”來(lái)解決的饰及。從非常原始的角度來(lái)考慮蔗坯,其實(shí)就是雙方約定一個(gè)暗號(hào)。用什么字母去替代什么字母之類(lèi)的燎含。不過(guò)考慮到互聯(lián)網(wǎng)每天有無(wú)數(shù)信息需要加密宾濒,這種原始的加密方法似乎不太適合。不過(guò)實(shí)際上方法也差不多屏箍,一般是采用一種叫做 AES 的算法來(lái)解決的绘梦。這種算法需要一個(gè) 密鑰 key 來(lái)加密整個(gè)信息橘忱,加密和解密所需要使用的 key 是一樣的,所以這種加密一般也被稱為“對(duì)稱加密”卸奉。AES 在數(shù)學(xué)上保證了钝诚,只要你使用的 key 足夠足夠足夠足夠的長(zhǎng),破解是幾乎不可能的榄棵。

我們先假設(shè)這種破解確實(shí)是不可能的凝颇,而且目前也確實(shí)沒(méi)有對(duì) AES 本身能發(fā)動(dòng)起有效的攻擊的案例出現(xiàn)。

我們?cè)倩氐竭@個(gè)教室疹鳄,你接著要傳小紙條拧略,你把地址寫(xiě)上后,把要傳輸?shù)膬?nèi)容用 AES 蹭蹭蹭加密了起來(lái)瘪弓。剛準(zhǔn)備傳辑鲤,問(wèn)題來(lái)了。AES 不是有一個(gè) key 嗎杠茬?key 怎么給目的地霸氯臁?如果我把密鑰直接寫(xiě)在紙條上瓢喉,那么中間的人不依然可以解密嗎宁赤?在現(xiàn)實(shí)中你可以通過(guò)一些其它方法來(lái)把密鑰安全傳輸給目的地而不被其他人看見(jiàn),但是在互聯(lián)網(wǎng)上栓票,要想這么做難度就很大了决左,畢竟傳輸終究要經(jīng)過(guò)這些路由,所以要做加密走贪,還得找一個(gè)更復(fù)雜的數(shù)學(xué)方法佛猛。

于是聰明的人們發(fā)明了一種更復(fù)雜的加密算法——非對(duì)稱加密。這種加密或許理解起來(lái)比較困難坠狡,這種加密指的是可以生成一對(duì)密鑰 (k1, k2)继找。凡是 k1 加密的數(shù)據(jù),k1 自身不能解密逃沿,而需要 k2 才能解密婴渡;凡是 k2 加密的數(shù)據(jù),k2 不能解密凯亮,需要 k1 才能解密边臼。這種算法事實(shí)上有很多,常用的是 RSA假消,其基于的數(shù)學(xué)原理是兩個(gè)大素?cái)?shù)的乘積很容易算柠并,而拿到這個(gè)乘積去算出是哪兩個(gè)素?cái)?shù)相乘就很復(fù)雜了。好在以目前的技術(shù),分解大數(shù)的素因數(shù)確實(shí)比較困難臼予,尤其是當(dāng)這個(gè)大數(shù)足夠大的時(shí)候(通常使用2的10次方個(gè)二進(jìn)制位這么大)亿傅,就算是超級(jí)計(jì)算機(jī)解密也需要非常長(zhǎng)的時(shí)間。

現(xiàn)在利用這種非對(duì)稱加密的方法瘟栖,我們來(lái)設(shè)想一個(gè)場(chǎng)景葵擎。你繼續(xù)想要傳紙條,但是傳紙條之前你先準(zhǔn)備把接下來(lái)通訊的對(duì)稱加密密鑰給傳輸過(guò)去半哟。于是你用 RSA 技術(shù)生成了一對(duì) k1酬滤、k2,你把 k1 用明文發(fā)送了出去寓涨,路經(jīng)有人或許會(huì)截取盯串,但是沒(méi)有用,k1 加密的數(shù)據(jù)需要用 k2 才能解密戒良。而此時(shí)体捏,k2 在你自己的手里。k1 送達(dá)目的地后糯崎,目的地的人會(huì)去準(zhǔn)備一個(gè)接下來(lái)用于對(duì)稱加密傳輸?shù)拿荑€ key几缭,然后用收到的 k1 把 key 加密了,把加密好的數(shù)據(jù)傳回來(lái)沃呢。路上的人就算截取到了年栓,也解密不出 key。等到了你自己手上薄霜,你用手上的 k2 把用 k1 加密的 key 解出來(lái)某抓,現(xiàn)在全教室就只有你和你的目的地?fù)碛?key,你們就可以用 AES 算法進(jìn)行對(duì)稱加密的傳輸啦惰瓜!這時(shí)候你和目的地的通訊將無(wú)法再被任何人竊聽(tīng)否副!

當(dāng)然,這時(shí)候你可能會(huì)問(wèn)兩個(gè)問(wèn)題崎坊。

既然 非對(duì)稱加密 可以那么安全备禀,為什么我們不直接用它來(lái)加密信息,而是去加密 對(duì)稱加密 的密鑰呢流强?

這是因?yàn)?非對(duì)稱加密 的密碼對(duì)生成和加密的消耗時(shí)間比較長(zhǎng)痹届,為了節(jié)省雙方的計(jì)算時(shí)間,通常只用它來(lái)交換密鑰打月,而非直接用來(lái)傳輸數(shù)據(jù)。

使用 非對(duì)稱加密 是完全安全的嗎蚕捉?

聽(tīng)起來(lái)確實(shí)是挺安全的奏篙,但實(shí)際上,還有一種更惡劣的攻擊是這種方法無(wú)法防范的,這就是傳說(shuō)中的“中間人攻擊”秘通。我們繼續(xù)讓你坐在教室里傳小紙條∥希現(xiàn)在你和目的地上途徑一個(gè)中間人,他有意想要知道你們的消息肺稀。由于這個(gè)描述比較復(fù)雜第股,我們將你稱為 A,你的目的地稱為 B话原,而中間人稱為 M夕吻。當(dāng)你要和 B 完成第一次密鑰交換的時(shí)候,途徑了 M繁仁。M 知道你要進(jìn)行密鑰交換了涉馅,它把小紙條扣了下來(lái),假裝自己是 B黄虱,偽造了一個(gè) key 稚矿,然后用你發(fā)來(lái)的 k1 加密了 key 發(fā)還給你,你以為你和 B 完成了密鑰交換捻浦,實(shí)際上你是和 M 完成了密鑰交換晤揣。同時(shí) M 和 B 完成一次密鑰交換,讓 B 誤以為和你完成了密鑰交換≈觳樱現(xiàn)在碉渡,由 A -> B完整的加密,變成了 A(加密連接1) -> M(明文)->B(加密連接2)的情況了母剥。這時(shí)候 M 依然可以知道 A 和 B 傳輸中的全部信息滞诺。

對(duì)于這種事,我們似乎很難找到一個(gè)解決方法來(lái)解決這個(gè)問(wèn)題环疼,除非我們能從源頭保證习霹,你密鑰交換的對(duì)象是安全的。這時(shí)候我們就要認(rèn)識(shí)互聯(lián)網(wǎng) HTTPS 和你傳紙條的微妙區(qū)別了炫隶。你傳紙條時(shí)淋叶,你和你的目的地的關(guān)系幾乎是對(duì)等的。而你訪問(wèn)網(wǎng)站時(shí)伪阶,你訪問(wèn)的對(duì)象通常是一個(gè)比較大的服務(wù)供應(yīng)商煞檩,他們有充沛的資源,也許可以證明他們的合法性栅贴。

這時(shí)候我們會(huì)引入一個(gè)第三方叫做 CA斟湃。CA 是一些非常權(quán)威的專(zhuān)門(mén)用于認(rèn)證一個(gè)網(wǎng)站合法性的組織。服務(wù)商可以向他們申請(qǐng)一個(gè)證書(shū)檐薯,使得他們建立安全連接時(shí)可以帶上 CA 的簽名凝赛。而 CA 的安全性由操作系統(tǒng)或?yàn)g覽器來(lái)認(rèn)證注暗。你的 Windows、Mac墓猎、Linux捆昏、Chrome、Safari 等會(huì)在安裝時(shí)帶上一個(gè)他們認(rèn)為安全的 CA 證書(shū)列表毙沾。如果和你建立安全連接的人帶著這些人的簽名骗卜,那么認(rèn)為這個(gè)安全連接是安全的,沒(méi)有遭到中間人攻擊左胞。

CA 證書(shū)通常情況下是安全的寇仓。因?yàn)橐坏┠硞€(gè) CA 頒發(fā)出的某個(gè)證書(shū)被用于了非法用途,瀏覽器和操作系統(tǒng)一般會(huì)通過(guò)更新將整個(gè) CA 頒發(fā)過(guò)的全部證書(shū)全部視為不安全罩句。這使得 CA 通常在頒發(fā)證書(shū)時(shí)是比較小心的焚刺。

所以通過(guò) 對(duì)稱加密 + 非對(duì)稱加密 + CA認(rèn)證 這三個(gè)技術(shù)混合在一起,才使得 HTTP 的后面加上了一個(gè) S —— Security门烂。實(shí)際上 HTTPS 的協(xié)議比我這里描述的更復(fù)雜一些乳愉,我這里說(shuō)的主要是基本的實(shí)現(xiàn)原理。因?yàn)槠渲腥魏我画h(huán)稍有閃失屯远,就會(huì)使得整個(gè)加密都將變得不安全蔓姚。這也是為什么 HTTPS 的加密協(xié)議從SSL 1.0 升級(jí)到 SSL 3.0 再被 TLS 1.0 現(xiàn)在被 TLS 1.2 取代,其背后都是一環(huán)環(huán)細(xì)節(jié)上的修改慨丐,以防任何地方的閃失坡脐。

但即使如此,你的 HTTPS 盡可能的保證了你傳輸?shù)陌踩拷遥@種安全也不是絕對(duì)的备闲。比如 CA 證書(shū)出了問(wèn)題被用于了中間人攻擊,在短期內(nèi)捅暴,你的安全將會(huì)陷入直接的麻煩直到瀏覽器或操作系統(tǒng)重新更新了你的 CA 列表或者你手動(dòng)調(diào)整了這個(gè)列表恬砂。但大多情況下不必杞人憂天,它基本上是安全的蓬痒。

當(dāng)然了泻骤,路由也可以選擇直接丟包,它看不到的梧奢,也不讓你看到狱掂。

作者:程序員Delton
鏈接:http://www.reibang.com/p/b894a7e1c779
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)亲轨,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處趋惨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓶埋,隨后出現(xiàn)的幾起案子希柿,更是在濱河造成了極大的恐慌诊沪,老刑警劉巖养筒,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曾撤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡晕粪,警方通過(guò)查閱死者的電腦和手機(jī)挤悉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)巫湘,“玉大人装悲,你說(shuō)我怎么就攤上這事∩蟹眨” “怎么了诀诊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)阅嘶。 經(jīng)常有香客問(wèn)我属瓣,道長(zhǎng),這世上最難降的妖魔是什么讯柔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任抡蛙,我火速辦了婚禮,結(jié)果婚禮上魂迄,老公的妹妹穿的比我還像新娘粗截。我一直安慰自己,他們只是感情好捣炬,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布熊昌。 她就那樣靜靜地躺著,像睡著了一般湿酸。 火紅的嫁衣襯著肌膚如雪婿屹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天稿械,我揣著相機(jī)與錄音选泻,去河邊找鬼。 笑死美莫,一個(gè)胖子當(dāng)著我的面吹牛页眯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厢呵,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窝撵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了襟铭?” 一聲冷哼從身側(cè)響起碌奉,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤短曾,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后赐劣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嫉拐,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年魁兼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了婉徘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咐汞,死狀恐怖盖呼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情化撕,我是刑警寧澤几晤,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站植阴,受9級(jí)特大地震影響蟹瘾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜墙贱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一热芹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惨撇,春花似錦伊脓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至剖淀,卻和暖如春纯蛾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纵隔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工翻诉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捌刮。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓碰煌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绅作。 傳聞我的和親對(duì)象是個(gè)殘疾皇子芦圾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

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