目錄
一、HTTPS是什么
為什么要進(jìn)行加密
二、“加密” 是什么
三、HTTPS的工作過程
(1)引入對稱加密
對稱密鑰的特點(diǎn):
(2)引入非對稱加密
非對稱加密的特點(diǎn):
(3)中間人攻擊
(4)引入證書
1、證書的介紹
2、證書驗(yàn)證過程
3、幾個關(guān)鍵問題(黑客不能篡改證書的原因)
1)黑客能不能修改證書里的公鑰?
2)黑客能不能修改證書里的公鑰,也嘗試重新生成簽名,替換原來的簽名?
3)黑客能不能自己去公證機(jī)構(gòu)申請一個證書,把服務(wù)器的證書替換成自己的?
一、HTTPS是什么
? ? ? ? HTTPS也是應(yīng)用層協(xié)議,它是基于HTTP,引入了加密層,S是safe(安全)的意思,HTTPS 就是 HTTP + SSL(加密層)。HTTP協(xié)議內(nèi)容是按照文本的方式,進(jìn)行明文傳輸?shù)?,這就可能導(dǎo)致在傳輸過程中,數(shù)據(jù)被篡改的情況,還有黑客如果黑進(jìn)某個設(shè)備,就能竊取到這些傳輸數(shù)據(jù),你的設(shè)備信息就會被泄露。
為什么要進(jìn)行加密
? ? ? ? 這里介紹一個臭名昭著的運(yùn)營商劫持,我們下載一個天天動聽,如果未被劫持,就是天天動聽的下載鏈接,如圖:
? ? ? ? 但是被劫持后,就變成QQ瀏覽器的下載鏈接了,如圖:
? ? ? ? 運(yùn)營商能進(jìn)行劫持,也是因?yàn)樗麄冏陨碛心芰M(jìn)行劫持,各大企業(yè)、公司都會用到運(yùn)營商提供的路由器 / 交換機(jī),進(jìn)行網(wǎng)絡(luò)傳輸時,數(shù)據(jù)會經(jīng)過這些設(shè)備,運(yùn)營商就可以做一些程序,把經(jīng)過這些設(shè)備的網(wǎng)絡(luò)數(shù)據(jù),截取到,然后再進(jìn)行篡改里面的數(shù)據(jù),比如說把上面天天動聽的下載地址,改成QQ瀏覽器,這就是其所謂的運(yùn)營商劫持了,其實(shí)還能劫持其他的信息,比如Referer,以前的偷流量事件。下圖介紹一下更換下載鏈接的大概流程:
? ? ? ? 當(dāng)前大部分網(wǎng)站設(shè)置成HTTPS就是拜運(yùn)營商所賜的,因?yàn)镠TTPS可以把數(shù)據(jù)進(jìn)行加密,不容易把網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)進(jìn)行篡改或者竊取。
? ? ? ? 思考一下,運(yùn)營商為啥要這么搞呢?原因是因?yàn)楸唤疱X蒙蔽了雙眼。
????????
? ? ? ? 其實(shí)不止運(yùn)營商可以對網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行劫持,黑客也可以,而且如果被黑客劫持了,后果會更加嚴(yán)重、危險(xiǎn),泄露了個人信息、手機(jī)的一些應(yīng)用賬號、密碼等,這就更加危險(xiǎn)了,所以,對HTTP數(shù)據(jù)包,進(jìn)行加密,套上一層加密層非常重要。
二、“加密” 是什么
? ? ? ? 加密 就是把 明文(要傳輸?shù)男畔ⅲ┻M(jìn)行一系列變換,生成 密文;相反,解密 就是 把 密文,進(jìn)行一系列的變換,還原為 明文。
? ? ? ? 在這個 加密 和 解密 過程中,往往需要一個或者多個中間數(shù)據(jù),進(jìn)行輔助轉(zhuǎn)換,這個中間數(shù)據(jù)就稱為 “密鑰”(鑰的正確讀音是:yue,第四聲;但平常我們都說成 yao,第四聲)。
? ? ? ? 引入 加密,是為了保證數(shù)據(jù)安全的有效手段;這里,我們只需要把 加密 的成本盡可能降低,使 破解成本 高于 加密成本 + 數(shù)據(jù)本身價(jià)值,我們就稱為?數(shù)據(jù) 是安全的。
? ? ? ? 這里舉個83版《火燒圓明園》的例子,當(dāng)時有人要謀反,干掉慈禧太后,這時候恭親王奕訴就給慈禧太后傳了個折子和有孔的紙張,折子里面表面就是聊聊家常,沒有其他的內(nèi)容,但是這時候,把有空的紙張和折子折疊后,就會出現(xiàn):當(dāng)心肅順,端華,戴恒(這幾個人都是當(dāng)時的權(quán)臣,后來被慈溪一鍋端了)。如圖:
? ? ? ? 明文:
? ? ? ? 把帶孔紙張和折子折疊后(密文):
? ? ? ? 上面這就涉及到密碼學(xué),里面有三個比較重要的屬性:明文、密文、秘鑰。
? ? ? ? 明文:就是要傳輸?shù)恼鎸?shí)數(shù)據(jù),要表達(dá)的實(shí)際意思。(折子)
? ? ? ? 密文:針對密文加密過后得到的結(jié)果,往往是不直觀,不易理解的。(折子和帶孔紙張重疊后)
? ? ? ? 密鑰:在加密和解密過程中,非常重要的中間 “鑰匙”,輔助加密、解密的轉(zhuǎn)換。(帶孔紙張)
? ? ? ? 加密、解密在現(xiàn)在,已經(jīng)發(fā)展成一個獨(dú)立的學(xué)科了:密碼學(xué)。而密碼學(xué)的奠基人,也正是計(jì)算機(jī)祖師爺之一:艾倫? 麥席森? 圖靈。圖靈大佬因遭英國皇家的迫害,41歲就英年早逝了;在2013年12月24日,英國女王伊麗莎白才終于向圖靈大佬頒發(fā) 皇家赦免。在計(jì)算機(jī)領(lǐng)域中,最高榮譽(yù)就是以他的名字命名的:圖靈獎。(像大佬致敬?。。。?/p>
三、HTTPS的工作過程
? ? ? ? 其實(shí),只要針對HTTPS數(shù)據(jù)進(jìn)行解密,就能得到HTTP的數(shù)據(jù)格式;上面說的運(yùn)營商劫持、黑客入侵,本質(zhì)上都是明文傳輸惹的禍,所以我們需要對上述傳輸?shù)臄?shù)據(jù),進(jìn)行加密,使其變成 “密文”,對數(shù)據(jù)起到保護(hù)作用,加密就是HTTPS的工作過程。
? ? ? ? 加密的方式有很多,其主要分為兩大類:對稱加密 和 非對稱加密。
(1)引入對稱加密
? ? ? ? 通過加密的方式,針對http數(shù)據(jù)進(jìn)行加密;而對稱加密,就是客戶端和服務(wù)器對加密后的http數(shù)據(jù),進(jìn)行解密,需要用到的密鑰 是一樣的。
對稱密鑰的特點(diǎn):
? ? ? ? 1、客戶端和服務(wù)器使用的密鑰一樣。
? ? ? ? 2、不同的客戶端,使用的密鑰不同。
? ? ? ? 3、因?yàn)榧用芙饷苡玫亩际峭粋€密鑰,所以運(yùn)算速度快。
? ? ? ? 下面介紹加密解密的大概流程,如圖:
? ? ? ? 注意:這里每個客戶端的密鑰都要不同,如果很多的客戶端的密鑰都相同,黑客還是能很容易的拿到密鑰,對網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)進(jìn)行解密,拿到明文。這也意味著,每個客戶端連接服務(wù)器的時候,都需要自己生成一個隨機(jī)密鑰,并且把這個密鑰告訴服務(wù)器(也可以是服務(wù)器生成,把密鑰告訴客戶端)。
? ? ? ? ? 但是,因?yàn)槊荑€生成的時候,只有單方知道,對面不知道,所以密鑰也要進(jìn)行網(wǎng)絡(luò)傳輸,黑客就不能拿到嗎?答案肯定是能的;所以,對稱加密也是不安全的,黑客仍然能比較輕松的拿到密鑰,那么,后續(xù)的加密一系列操作也都沒用了,黑客有密鑰,就能進(jìn)行解密,獲得明文。如圖:
? ? ? ? 因此,針對密鑰,我們還要再進(jìn)行一次加密,這就是非對稱加密的內(nèi)容了。
(2)引入非對稱加密
? ? ? ? 非對稱加密:就是加密和解密的密鑰不同,加密使用的一個密鑰,解密使用的就是另一個密鑰了。
非對稱加密的特點(diǎn):
? ? ? ? 1、加密 和 解密 使用的 密鑰 不同。
? ? ? ? 2、引入公鑰和私鑰,公鑰加密對稱密鑰,會進(jìn)行網(wǎng)絡(luò)傳輸;私鑰解密對稱密鑰,不會進(jìn)行網(wǎng)絡(luò)傳輸。
? ? ? ? 3、因?yàn)榧用?、解密使用的密鑰不同,所以運(yùn)算速度慢。
? ? ? ? 這里的非對稱加密,不能針對 后續(xù)傳輸?shù)?header、body進(jìn)行加密,因?yàn)閔eader和body內(nèi)容還是比較長、比較多的,如果針對這些進(jìn)行加密、解密,就會消耗很多的CPU資源,如果只是加密、解密一些header、body,也還好,CPU扛得住,但我們知道,服務(wù)器是要面對很多用戶的,這么多的用戶,對這些的請求、返回的響應(yīng),都進(jìn)行加密、解密,CPU必然是吃不消的,這消耗的CPU資源是非常龐大的。(這里使用 公鑰 對 對稱密鑰進(jìn)行加密,保證對稱密鑰的安全性,服務(wù)器這邊使用私鑰對加密后的對稱密鑰進(jìn)行解密,拿到對稱密鑰)
? ? ? ? 所以,我們是對http數(shù)據(jù)包使用對稱密鑰加密,保證http數(shù)據(jù)的安全性,再使用公鑰把對稱密鑰進(jìn)行加密,保證對稱密鑰的安全性,服務(wù)器會有一個私鑰,這個私鑰可以對加密后的對稱密鑰進(jìn)行解密(拿到對稱密鑰);私鑰也不會進(jìn)行網(wǎng)絡(luò)傳輸,私鑰也只有服務(wù)器才知道(公鑰和私鑰都是服務(wù)器生成的),客戶端、黑客都不知道。這樣黑客即使知道公鑰,不知道私鑰,就不能把加密后的對稱密鑰進(jìn)行解密,就不能對加密數(shù)據(jù)進(jìn)行解密,不能拿到明文。
? ? ? ? 注意:公鑰和密鑰都是服務(wù)器生成的,是成對出現(xiàn)的,私鑰也不會進(jìn)行網(wǎng)絡(luò)傳輸;對稱密鑰把數(shù)據(jù)進(jìn)行加密后,還會對 對稱密鑰 進(jìn)行加密使用公鑰進(jìn)行加密,因?yàn)楹诳蜎]有私鑰,無法把公鑰還原成對稱密鑰,就無法對數(shù)據(jù)進(jìn)行解密,拿到明文了。
? ? ? ? 下圖介紹非對稱加密,網(wǎng)絡(luò)傳輸?shù)拇蟾帕鞒?,如圖:
? ? ? ? 上圖的首次連接,客戶端隨機(jī)生成 對稱密鑰,然后向服務(wù)器索要 公鑰,客戶端 使用 公鑰 加密 對稱密鑰,傳給服務(wù)器,服務(wù)器使用私鑰,解密拿到 對稱密鑰,再告知客戶端我拿到 對稱密鑰了;
????????這個過程就是交換密鑰的過程,也是SSL內(nèi)部完成的工作,因?yàn)镠TTPS的底層也是TCP,當(dāng)TCP的三次握手完成后,就要進(jìn)行SSL的握手了(交換密鑰的過程),后續(xù)的網(wǎng)絡(luò)交互,才是真正的傳輸業(yè)務(wù)數(shù)據(jù)(http請求 / 響應(yīng))。
? ? ? ? 但上述引入了非對稱加密,任然存在重大安全漏洞,黑客任然有機(jī)會拿到私鑰,就是下面中間人攻擊的內(nèi)容了。
(3)中間人攻擊
? ? ? ? 因?yàn)樯晒€和私鑰的算法是公開的,所以黑客也能生成公鑰和私鑰,當(dāng)黑客黑進(jìn)某個設(shè)備后,客戶端和服務(wù)器在建立連接,客戶端向服務(wù)器索要公鑰時,黑客黑進(jìn)的設(shè)備在它們(客戶端和服務(wù)器中間)中間,就可以把自己的公鑰返回給客戶端,服務(wù)器發(fā)給客戶端的公鑰,用自己的私鑰解密 加密后的對稱密鑰,被黑進(jìn)的設(shè)備也能拿到就能拿到對稱密鑰了;
????????這時候,客戶端和服務(wù)器進(jìn)行網(wǎng)絡(luò)交互時,被黑進(jìn)的設(shè)備就能通過黑客的私鑰,解密 密文(加密后的對稱密鑰),拿到對稱密鑰,就可以用對稱密鑰解密密文了,然后可以進(jìn)行篡改、也可以竊取重要信息;黑客拿著這個明文,再用服務(wù)器給的公鑰進(jìn)行加密,發(fā)給服務(wù)器,服務(wù)器也能用自己的私鑰,解密 密文(加密后的對稱密鑰),那拿到對稱密鑰,構(gòu)造完響應(yīng),進(jìn)行加密再返回,之后的操作也和上面一樣,這樣客戶端和服務(wù)器都不會察覺到有異?,F(xiàn)象,但明文數(shù)據(jù)卻已經(jīng)泄露了。
? ? ? ? 下圖是其大概流程:
????????
? ? ? ? 那怎么辦呢,怎么讓客戶端能識別出,首次連接,返回的公鑰是黑客的還是服務(wù)器的,如果能進(jìn)行判斷,這樣網(wǎng)絡(luò)傳輸數(shù)據(jù)的安全性就能大大提高。這也就是下面引入證書的內(nèi)容了。
(4)引入證書
1、證書的介紹
? ? ? ? 證書是公證機(jī)構(gòu)提供的,證書其實(shí)是一個結(jié)構(gòu)化數(shù)據(jù),里面會包含很多屬性,但也是字符串形式的,證書會包含一系列的信息,例如:服務(wù)器的主域名、服務(wù)器生成的公鑰、證書有效期、公證機(jī)構(gòu)信息、證書簽名等等。
? ? ? ? 引入證書就是為了讓客戶端這邊,能夠識別出,收到的公鑰是不是服務(wù)器傳過來的。
????????這個證書是第三方提供的,所以服務(wù)器這邊要去第三方申請一個證書(提交材料會包含服務(wù)器的地址、域名等等),第三方這邊同意后就會給給服務(wù)器頒發(fā)一個證書。
? ? ? ? 在客戶端和服務(wù)器連接后,客戶端會向服務(wù)器索要證書,服務(wù)器收到請求后就會返回服務(wù)器拿到的證書,里面就會包含公鑰,下面的大概流程圖:
? ? ? ? 這里有個關(guān)鍵的問題:黑客是否能修改證書里的公鑰?答案肯定是不行的!!因?yàn)榭蛻舳耸盏阶C書后,會對證書進(jìn)行驗(yàn)證真?zhèn)蔚牟僮?/span>。下面介紹證書驗(yàn)證過程。
2、證書驗(yàn)證過程
? ? ? ? 證書包含很多信息:服務(wù)器的主域名、證書有效時間、服務(wù)器的公鑰、公證機(jī)構(gòu)信息、證書簽名等等。
? ? ? ? 這里面的信息有一個非常重要:證書簽名,公證機(jī)構(gòu)在頒發(fā)證書前,會給這個證書計(jì)算出一個校驗(yàn)和,然后再使用公證機(jī)構(gòu)的私鑰(不是服務(wù)器),對這個校驗(yàn)和進(jìn)行加密,就得到了證書簽名(本質(zhì)就是加密后的校驗(yàn)和);
????????客戶端收到證書后,會通過一系列的算法(CRC、MD5等),得到一個較短的字符串,也就是校驗(yàn)和A;然后用公證機(jī)構(gòu)的公鑰,對 證書簽名 進(jìn)行解密,拿到校驗(yàn)和B;再進(jìn)行比較,如果校驗(yàn)和A和校驗(yàn)和B一樣,也就說明,這次拿到的證書是服務(wù)器發(fā)過來的。
下面是客戶端拿到證書后做的事(證書的驗(yàn)證過程):
? ? ? ? 1)按照校驗(yàn)和的算法,把證書的其他字段都重新計(jì)算一遍,得到校驗(yàn)和1。
? ? ? ? 2)使用系統(tǒng)內(nèi)置的公證機(jī)構(gòu)的公鑰,用公鑰解密證書簽名,得到校驗(yàn)和2。
? ? ? ? 3)進(jìn)行對比,判斷 校驗(yàn)和1 和 校驗(yàn)和2 是否相同;相同就說明證書是服務(wù)器傳過來的,就是原版證書,沒有被修改過;如果證書被人篡改過(比如黑客修改了證書的公鑰,替換成自己的),此時按照校驗(yàn)和算法算出了的校驗(yàn)和1,肯定和校驗(yàn)和2不同,此時客戶端就能識別出來了(此時瀏覽器就會跳出一個告警頁面,你訪問網(wǎng)站有風(fēng)險(xiǎn),這種情況可能是證書的有效期過期了,也可能是證書的公鑰被修改過)。
? ? ? ? 下面介紹幾個關(guān)鍵問題,也是利用了證書的特性,導(dǎo)致黑客不能篡改證書的原因:
3、幾個關(guān)鍵問題(黑客不能篡改證書的原因)
黑客黑進(jìn)某個設(shè)備,在網(wǎng)絡(luò)傳輸?shù)闹虚g,截獲到密文,然后能不能進(jìn)行下面幾個操作?
1)黑客能不能修改證書里的公鑰?
? ? ? ? 不行;因?yàn)槿绻薷牧俗C書里的公鑰,按照校驗(yàn)和的算法,把證書的字段都計(jì)算一遍,算出來的校驗(yàn)和肯定會和原來的不同(使用公證機(jī)構(gòu)的公鑰,解密證書簽名得到的校驗(yàn)和,跟這個校驗(yàn)和也會不同)。
2)黑客能不能修改證書里的公鑰,也嘗試重新生成簽名,替換原來的簽名?
? ? ? ? 不行;如果修改了證書簽名(使用了黑客自己的私鑰進(jìn)行加密),那么用系統(tǒng)內(nèi)置的公證機(jī)構(gòu)的公鑰,進(jìn)行解密證書簽名,就會解析失敗,客戶端也就自然可以知道這個證書不對了;還有就是黑客不知道公證機(jī)構(gòu)的私鑰是什么,那也就無法生成正確的證書簽名了,私鑰也只有公證機(jī)構(gòu)會知道。
3)黑客能不能自己去公證機(jī)構(gòu)申請一個證書,把服務(wù)器的證書替換成自己的?
? ? ? ? 不行;因?yàn)樽C書里面包含了一個信息:服務(wù)器的主域名(域名也是唯一的),黑客去申請也只能拿到黑客設(shè)備的域名證書,不能是服務(wù)器的域名。所以客戶端看到證書里面的域名不是服務(wù)器,自然就能辨別真假證書了。
因?yàn)橛辛俗C書的特性,就能徹底把黑客篡改證書的路堵死了。
? ? ? ? 當(dāng)然,上面所討論的安全,也不是絕對的安全;上述的安全本質(zhì)上都是基于非對稱加密體系,非對稱加密也不是無懈可擊的,只不過破解這樣的加密體系,需要的計(jì)算量非常龐大,超出了現(xiàn)有的計(jì)算機(jī)算力上限。文章來源:http://www.zghlxwxcb.cn/news/detail-854611.html
? ? ? ? 所以,現(xiàn)如今各國都忙著搞量子計(jì)算機(jī),相比于現(xiàn)在的計(jì)算機(jī),量子計(jì)算機(jī)的算力提升非常大,如果美國先搞出來,那破解一下網(wǎng)絡(luò)傳輸?shù)男畔?,就能輕而易舉的知道各國的機(jī)密了;相當(dāng)于誰先搞出來,誰就贏麻了(秦始皇(嬴政)吃麻椒,贏麻了)。文章來源地址http://www.zghlxwxcb.cn/news/detail-854611.html
都看到這了,點(diǎn)個贊再走吧,謝謝謝謝謝
到了這里,關(guān)于網(wǎng)絡(luò)原理 - HTTP / HTTPS(5)——https協(xié)議的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!