2018-08-23:http與https之間的區(qū)別涂佃、SSL加密過(guò)程

超文本傳輸協(xié)議HTTP協(xié)議被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容,不提供任何方式的數(shù)據(jù)加密,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文叠骑,就可以直接讀懂其中的信息,因此削茁,HTTP協(xié)議不適合傳輸一些敏感信息宙枷,比如:信用卡號(hào)、密碼等支付信息付材。

為了解決HTTP協(xié)議的這一缺陷朦拖,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS。為了數(shù)據(jù)傳輸?shù)陌踩嵯危琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議璧帝,SSL依靠證書(shū)來(lái)驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密富寿。

一睬隶、HTTP和HTTPS的基本概念

HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個(gè)客戶端和服務(wù)器端請(qǐng)求和應(yīng)答的標(biāo)準(zhǔn)(TCP)页徐,用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議苏潜,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少变勇。

HTTPS:是以安全為目標(biāo)的HTTP通道恤左,簡(jiǎn)單講是HTTP的安全版贴唇,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL飞袋,因此加密的詳細(xì)內(nèi)容就需要SSL戳气。

HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個(gè)信息安全通道,來(lái)保證數(shù)據(jù)傳輸?shù)陌踩裳迹涣硪环N就是確認(rèn)網(wǎng)站的真實(shí)性瓶您。

二、HTTP與HTTPS有什么區(qū)別纲仍?

HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的呀袱,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全郑叠,為了保證這些隱私數(shù)據(jù)能加密傳輸夜赵,于是網(wǎng)景公司設(shè)計(jì)了SSL(Secure Sockets Layer)協(xié)議用于對(duì)HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密,從而就誕生了HTTPS锻拘。

簡(jiǎn)單來(lái)說(shuō)油吭,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議署拟,要比http協(xié)議安全婉宰。

HTTPS和HTTP的區(qū)別主要如下:

1、https協(xié)議需要到ca申請(qǐng)證書(shū)推穷,一般免費(fèi)證書(shū)較少心包,因而需要一定費(fèi)用。

2馒铃、http是超文本傳輸協(xié)議蟹腾,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議区宇。

3娃殖、http和https使用的是完全不同的連接方式,用的端口也不一樣议谷,前者是80炉爆,后者是443。

4卧晓、http的連接很簡(jiǎn)單芬首,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸逼裆、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議郁稍,比http協(xié)議安全。




HTTP胜宇、HTTPS在我們?nèi)粘i_(kāi)發(fā)中是經(jīng)常會(huì)接觸到的耀怜。我們也都知道恢着,一般 Android 應(yīng)用開(kāi)發(fā),在請(qǐng)求 API 網(wǎng)絡(luò)接口的時(shí)候财破,很多使用的都是 HTTP 協(xié)議然评;使用瀏覽器打開(kāi)網(wǎng)頁(yè),也是利用 HTTP 協(xié)議狈究。看來(lái) HTTP 真是使用廣泛啊盏求,但是抖锥,HTTP 是不安全的。利用網(wǎng)絡(luò)抓包工具就可以知道傳輸中的內(nèi)容碎罚,一覽無(wú)余磅废。比如我經(jīng)常會(huì)使用 Fiddler 來(lái)抓包,搜集一些有趣的 API 接口荆烈。

那么問(wèn)題來(lái)了拯勉,如何保證 HTTP 的安全性呢?基本上所有的人都會(huì)脫口而出:使用 HTTPS 協(xié)議憔购。99.9% 的人都知道 HTTPS 會(huì)將傳輸?shù)膬?nèi)容進(jìn)行加密宫峦,但是接著問(wèn)具體加密的過(guò)程和步驟,很多人就啞口無(wú)言了玫鸟。

為了防止出現(xiàn)這種尷尬的局面导绷,所以今天你就要好好看看這篇的內(nèi)容了。以后就可以裝個(gè)逼屎飘,哈哈妥曲!

加密類型

先科普一下,加密算法的類型基本上分為了兩種:

對(duì)稱加密钦购,比較有代表性的就是 AES 加密算法檐盟;非對(duì)稱加密,經(jīng)常使用到的 RSA 加密算法就是非對(duì)稱加密的押桃;

對(duì)稱加密的意思就是說(shuō)雙方都有一個(gè)共同的密鑰葵萎,然后通過(guò)這個(gè)密鑰完成加密和解密,這種加密方式速度快怨规,但是安全性不如非對(duì)稱加密好陌宿。

舉個(gè)例子,現(xiàn)在學(xué)霸小明這里有一道數(shù)學(xué)題的答案:123 波丰。他想把答案?jìng)鹘o自己一直暗戀的小紅壳坪。所以他們雙方在考試開(kāi)考前,約定了一把密鑰:456 掰烟。那么小明就把答案內(nèi)容經(jīng)過(guò)密鑰加密爽蝴,即 123 + 456 = 579 沐批,將 579 寫(xiě)在小紙條上扔給小紅。如果此時(shí)別人撿到了小紙條蝎亚,不知道他們是加密傳輸?shù)木藕ⅲ吹缴厦娴?579 ,會(huì)誤以為答案就是 579 发框;如果是小紅撿到了躺彬,她拿出密鑰解密,579 - 456 = 123 梅惯,得到了正確的答案宪拥。

這就是所謂的對(duì)稱加密,加解密效率高铣减,速度快她君,但是雙方任何一方不小心泄露了密鑰,那么任何人都可以知道傳輸內(nèi)容了葫哗。

講完了對(duì)稱加密缔刹,我們看看啥是非對(duì)稱加密。

非對(duì)稱加密就是有兩把密鑰劣针,公鑰和私鑰校镐。私鑰自己藏著,不告訴任何人捺典;而公鑰可以公開(kāi)給別人灭翔。

經(jīng)過(guò)了上次作弊后,小紅發(fā)現(xiàn)了對(duì)稱加密如果密鑰泄露是一件可怕的事情辣苏。所以她和小明決定使用非對(duì)稱加密肝箱。小紅生成了一對(duì)公鑰和私鑰,然后把公鑰公開(kāi)稀蟋,小明就得到了公鑰煌张。小明拿到公鑰后,把答案經(jīng)過(guò)公鑰加密退客,然后傳輸給小紅骏融,小紅再利用自己的私鑰進(jìn)行解密,得到答案結(jié)果萌狂。如果在這個(gè)過(guò)程中档玻,其他人得到傳輸?shù)膬?nèi)容,而他們只有公鑰茫藏,是沒(méi)有辦法進(jìn)行解密的误趴,所以也就得不到答案,只有小紅一個(gè)人可以解密务傲。

因此凉当,相比較對(duì)稱加密而言枣申,非對(duì)稱加密安全性更高,但是加解密耗費(fèi)的時(shí)間更長(zhǎng)看杭,速度慢忠藤。

對(duì)稱加密和非對(duì)稱加密的具體應(yīng)用我還是深有體會(huì)的,因?yàn)樗诘墓臼亲鼋鹑谥Ц斗矫娴穆ケⅲ约咏饷芑旧纤闶翘焯煲?jiàn)了模孩。

說(shuō)完加密類型后,我們?cè)賮?lái)看看 HTTPS 贮缅。我們先來(lái)看一個(gè)公式:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HTTPS = HTTP + SSL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 從這個(gè)公式中可以看出瓜贾,HTTPS 和 HTTP 就差在了 SSL 上。所以我們可以猜到携悯,HTTPS 的加密就是在 SSL 中完成的。所以我們的目的就是要搞懂在 SSL 中究竟干了什么見(jiàn)不得人的事了筷笨?

這就要從 CA 證書(shū)講起了憔鬼。CA 證書(shū)其實(shí)就是數(shù)字證書(shū),是由 CA 機(jī)構(gòu)頒發(fā)的胃夏。至于 CA 機(jī)構(gòu)的權(quán)威性轴或,那么是毋庸置疑的,所有人都是信任它的仰禀。CA 證書(shū)內(nèi)一般會(huì)包含以下內(nèi)容:證書(shū)的頒發(fā)機(jī)構(gòu)照雁、版本證書(shū)的使用者、證書(shū)的公鑰答恶、證書(shū)的有效時(shí)間饺蚊、證書(shū)的數(shù)字簽名 Hash 值和簽名 Hash 算法…

正好我們把客戶端如何校驗(yàn) CA 證書(shū)的步驟說(shuō)下吧。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1).? CA 證書(shū)中的 Hash 值悬嗓,其實(shí)是用證書(shū)的私鑰進(jìn)行加密后的值(證書(shū)的私鑰不在 CA 證書(shū)中)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2).? 然后客戶端得到證書(shū)后污呼,利用證書(shū)中的公鑰去解密該 Hash 值,得到 Hash-a 包竹;? ? ? ? 3).? 然后再利用證書(shū)內(nèi)的簽名 Hash 算法去生成一個(gè) Hash-b;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4).? 最后比較 Hash-a 和 Hash-b 這兩個(gè)的值燕酷,如果相等,那么證明該證書(shū)是對(duì)的周瞎,服務(wù)端是可以被信任的苗缩;如果不相等,那么就說(shuō)明該證書(shū)是錯(cuò)誤的声诸,可能被篡改了酱讶,瀏覽器會(huì)給出相關(guān)提示,無(wú)法建立起 HTTPS 連接彼乌。除此之外浴麻,還會(huì)校驗(yàn) CA 證書(shū)的有效時(shí)間和域名匹配等得问。

接下來(lái)我們就來(lái)詳細(xì)講一下 HTTPS 中的 SSL 握手建立過(guò)程,假設(shè)現(xiàn)在有客戶端 A 和服務(wù)器 B :

1. 首先软免,客戶端 A 訪問(wèn)服務(wù)器 B 宫纬,比如我們用瀏覽器打開(kāi)一個(gè)網(wǎng)頁(yè) https://www.baidu.com ,這時(shí)膏萧,瀏覽器就是客戶端 A 漓骚,百度的服務(wù)器就是服務(wù)器 B 了。這時(shí)候客戶端 A 會(huì)生成一個(gè)隨機(jī)數(shù)1榛泛,把隨機(jī)數(shù)1 蝌蹂、自己支持的 SSL 版本號(hào)以及加密算法等這些信息告訴服務(wù)器 B 。

2. 服務(wù)器 B 知道這些信息后曹锨,確認(rèn)一下雙方的加密算法孤个,然后服務(wù)端也生成一個(gè)隨機(jī)數(shù) B ,并將隨機(jī)數(shù) B 和 CA 頒發(fā)給自己的證書(shū)一同返回給客戶端 A 沛简。

3.?客戶端 A 得到 CA 證書(shū)后齐鲤,會(huì)去校驗(yàn)該 CA 證書(shū)的有效性,校驗(yàn)方法在上面已經(jīng)說(shuō)過(guò)了椒楣。校驗(yàn)通過(guò)后给郊,客戶端生成一個(gè)隨機(jī)數(shù)3 ,然后用證書(shū)中的公鑰加密隨機(jī)數(shù)3 并傳輸給服務(wù)端 B 捧灰。服務(wù)端 B 得到加密后的隨機(jī)數(shù)3淆九,然后利用私鑰進(jìn)行解密,得到真正的隨機(jī)數(shù)3毛俏。

4. 最后炭庙,客戶端 A 和服務(wù)端 B 都有隨機(jī)數(shù)1、隨機(jī)數(shù)2煌寇、隨機(jī)數(shù)3煤搜,然后雙方利用這三個(gè)隨機(jī)數(shù)生成一個(gè)對(duì)話密鑰。之后傳輸內(nèi)容就是利用對(duì)話密鑰來(lái)進(jìn)行加解密了唧席。這時(shí)就是利用了對(duì)稱加密擦盾,一般用的都是 AES 算法。

5. 客戶端 A 通知服務(wù)端 B 淌哟,指明后面的通訊用對(duì)話密鑰來(lái)完成迹卢,同時(shí)通知服務(wù)器 B 客戶端 A 的握手過(guò)程結(jié)束。

6. 服務(wù)端 B 通知客戶端 A徒仓,指明后面的通訊用對(duì)話密鑰來(lái)完成腐碱,同時(shí)通知客戶端 A 服務(wù)器 B 的握手過(guò)程結(jié)束。

SSL 的握手部分結(jié)束,SSL 安全通道的數(shù)據(jù)通訊開(kāi)始症见,客戶端 A 和服務(wù)器 B 開(kāi)始使用相同的對(duì)話密鑰進(jìn)行數(shù)據(jù)通訊喂走。

到此,SSL 握手過(guò)程就講完了谋作∮蟪Γ可能上面的流程太過(guò)于復(fù)雜,我們簡(jiǎn)單地來(lái)講:

客戶端和服務(wù)端建立 SSL 握手:客戶端通過(guò) CA 證書(shū)來(lái)確認(rèn)服務(wù)端的身份遵蚜;互相傳遞三個(gè)隨機(jī)數(shù)帖池,之后通過(guò)這隨機(jī)數(shù)來(lái)生成一個(gè)密鑰;互相確認(rèn)密鑰吭净,然后握手結(jié)束睡汹;數(shù)據(jù)通訊開(kāi)始,都使用同一個(gè)對(duì)話密鑰來(lái)加解密寂殉;

我們可以發(fā)現(xiàn)囚巴,在 HTTPS 加密原理的過(guò)程中把對(duì)稱加密和非對(duì)稱加密都利用了起來(lái)。即利用了非對(duì)稱加密安全性高的特點(diǎn)友扰,又利用了對(duì)稱加密速度快彤叉,效率高的好處。


轉(zhuǎn)載自https://baijiahao.baidu.com/s?id=1595441779997706095&wfr=spider&for=pc

https://blog.csdn.net/xionghuixionghui/article/details/68569282

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末焕檬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子澳泵,更是在濱河造成了極大的恐慌实愚,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件兔辅,死亡現(xiàn)場(chǎng)離奇詭異腊敲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)维苔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)碰辅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人介时,你說(shuō)我怎么就攤上這事没宾。” “怎么了沸柔?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵循衰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我褐澎,道長(zhǎng)会钝,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任工三,我火速辦了婚禮迁酸,結(jié)果婚禮上先鱼,老公的妹妹穿的比我還像新娘。我一直安慰自己奸鬓,他們只是感情好焙畔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著全蝶,像睡著了一般闹蒜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抑淫,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天绷落,我揣著相機(jī)與錄音,去河邊找鬼始苇。 笑死砌烁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的催式。 我是一名探鬼主播函喉,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荣月!你這毒婦竟也來(lái)了管呵?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤哺窄,失蹤者是張志新(化名)和其女友劉穎捐下,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體萌业,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坷襟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了生年。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婴程。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抱婉,靈堂內(nèi)的尸體忽然破棺而出档叔,到底是詐尸還是另有隱情,我是刑警寧澤蒸绩,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布蹲蒲,位于F島的核電站,受9級(jí)特大地震影響侵贵,放射性物質(zhì)發(fā)生泄漏届搁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卡睦。 院中可真熱鬧宴胧,春花似錦、人聲如沸表锻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)瞬逊。三九已至显歧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間确镊,已是汗流浹背士骤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕾域,地道東北人拷肌。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像旨巷,于是被迫代替她去往敵國(guó)和親巨缘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348