HTTPS 原理

原文? HTTPS 原理

一朴乖、概念和定義

首先明確幾個(gè)基本概念:

1祖屏、名詞解釋

1.1助赞、密鑰對(duì)

在非對(duì)稱加密技術(shù)中,有兩種密鑰袁勺,分為私鑰和公鑰雹食,私鑰是密鑰對(duì)所有者持有,不可公布期丰,公鑰是密鑰對(duì)持有者公布給他人的群叶。

1.2、公鑰和私鑰

公鑰用來(lái)給數(shù)據(jù)加密钝荡,用公鑰加密的數(shù)據(jù)只能使用私鑰解密街立。私鑰用來(lái)解密公鑰加密的數(shù)據(jù)。

1.3埠通、摘要

摘要就是對(duì)需要傳輸?shù)奈谋臼昀耄鲆粋€(gè)HASH計(jì)算,一般采用SHA1端辱,SHA2來(lái)獲得梁剔。

1.4、簽名

使用私鑰對(duì)需要傳輸?shù)奈谋镜恼M(jìn)行加密舞蔽,得到的密文即被稱為該次傳輸過(guò)程的簽名荣病。

1.5、簽名驗(yàn)證

數(shù)據(jù)接收端渗柿,拿到傳輸文本个盆,但是需要確認(rèn)該文本是否就是發(fā)送發(fā)出的內(nèi)容,中途是否曾經(jīng)被篡改做祝。

因此拿自己持有的公鑰對(duì)簽名進(jìn)行解密(密鑰對(duì)中的 一種密鑰加密的數(shù)據(jù)必定能使用另一種密鑰解密砾省。),得到了文本的摘要混槐,然后使用與發(fā)送方同樣的HASH算法計(jì)算摘要值编兄,再與解密得到的摘要做對(duì)比,發(fā)現(xiàn)二 者完全一致声登,則說(shuō)明文本沒(méi)有被篡改過(guò)狠鸳。

2、理論

在 簽名過(guò)程中悯嗓,收到數(shù)據(jù)的一方需要自己保管好公鑰件舵,但是每一個(gè)發(fā)送方都有一個(gè)公鑰,接收數(shù)據(jù)的人需要保存非常多的公鑰脯厨,這根本就管理不過(guò)來(lái)铅祸。并且本地保存的公鑰有可能被篡改替換,無(wú)從發(fā)現(xiàn)。

怎么解決這一問(wèn)題呢临梗,這時(shí)候就輪到CA登場(chǎng)了N卸蟆!

CA是一個(gè)統(tǒng)一的證書管理機(jī)構(gòu)盟庞,管理所有需要發(fā)送數(shù)據(jù)方的公鑰吃沪,對(duì)公鑰進(jìn) 行認(rèn)證和加密。認(rèn)證加密后的公鑰即是證書什猖,又稱為CA證書票彪,證書中包含了很多信息,最重要的是申請(qǐng)者的公鑰不狮。

CA 機(jī)構(gòu)在給公鑰加密時(shí)降铸,用的是一個(gè)統(tǒng)一的密鑰對(duì),在加密公鑰時(shí)荤傲,用的是其中的私鑰垮耳。

這樣,申請(qǐng)者拿到證書后遂黍,在發(fā)送數(shù)據(jù)時(shí)终佛,用自己的私鑰生成簽名,將簽名雾家、 證書和發(fā)送內(nèi)容一起發(fā)給對(duì)方铃彰,對(duì)方拿到了證書后,需要對(duì)證書解密以獲取到證書中的公鑰芯咧,解密需要用到CA機(jī)構(gòu)的”統(tǒng)一密鑰對(duì)“中的公鑰牙捉,這個(gè)公鑰也就是我 們常說(shuō)的CA根證書。

通常我們到證書頒發(fā)機(jī)構(gòu)去下載并安裝到相應(yīng)的收取數(shù)據(jù)的客戶端敬飒,如:瀏覽器上面邪铲。這個(gè)公鑰只需要安裝一次。有了這個(gè)公鑰之后无拗,就可 以解密證書带到,拿到發(fā)送方的公鑰,然后解密發(fā)送方發(fā)過(guò)來(lái)的簽名英染,獲取摘要揽惹,重新計(jì)算摘要,作對(duì)比四康,以驗(yàn)證數(shù)據(jù)內(nèi)容的完整性搪搏。

HTTPS就是綜合用了加密解密和數(shù)字簽名的實(shí)例,理解了上述概念和過(guò)程闪金,結(jié)合密鑰對(duì)交換的過(guò)程就不難理解HTTPS疯溺。

3、進(jìn)階

HTTPS在傳輸數(shù)據(jù)之前需要客戶端(瀏覽器)與服務(wù)端(網(wǎng)站)之間進(jìn)行一次握手,在握手過(guò)程中將確立雙方加密傳輸數(shù)據(jù)的密碼信息囱嫩。

TLS/SSL協(xié)議不僅僅是一套加密傳輸?shù)膮f(xié)議嗅辣,更是一件經(jīng)過(guò)藝術(shù)家精心設(shè)計(jì)的藝術(shù)品,TLS/SSL中使用了非對(duì)稱加密挠说,對(duì)稱加密以及HASH算法。

握手過(guò)程的簡(jiǎn)單描述如下:

1.瀏覽器將自己支持的一套加密規(guī)則發(fā)送給網(wǎng)站愿题。

2.網(wǎng)站從中選出一組加密算法與HASH算法损俭,并將自己的身份信息以證書的形式發(fā)回給瀏覽器。證書里面包含了網(wǎng)站地址潘酗,加密公鑰杆兵,以及證書的頒發(fā)機(jī)構(gòu)等信息。

3.獲得網(wǎng)站證書之后瀏覽器要做以下工作:

a) 驗(yàn)證證書的合法性(頒發(fā)證書的機(jī)構(gòu)是否合法仔夺,證書中包含的網(wǎng)站地址是否與正在訪問(wèn)的地址一致等)琐脏,如果證書受信任,則瀏覽器欄里面會(huì)顯示一個(gè)小鎖頭缸兔,否則會(huì)給出證書不受信的提示日裙。

b) 如果證書受信任,或者是用戶接受了不受信的證書惰蜜,瀏覽器會(huì)生成一串隨機(jī)數(shù)的密碼昂拂,并用證書中提供的公鑰加密。

c) 使用約定好的HASH計(jì)算握手消息抛猖,并使用生成的隨機(jī)數(shù)對(duì)消息進(jìn)行加密格侯,最后將之前生成的所有信息發(fā)送給網(wǎng)站。

4.網(wǎng)站接收瀏覽器發(fā)來(lái)的數(shù)據(jù)之后要做以下的操作:

a) 使用自己的私鑰將信息解密取出密碼财著,使用密碼解密瀏覽器發(fā)來(lái)的握手消息联四,并驗(yàn)證HASH是否與瀏覽器發(fā)來(lái)的一致。

b) 使用密碼加密一段握手消息撑教,發(fā)送給瀏覽器朝墩。

5.瀏覽器解密并計(jì)算握手消息的HASH,如果與服務(wù)端發(fā)來(lái)的HASH一致驮履,此時(shí)握手過(guò)程結(jié)束鱼辙,之后所有的通信數(shù)據(jù)將由之前瀏覽器生成的隨機(jī)密碼并利用對(duì)稱加密算法進(jìn)行加密。

這里瀏覽器與網(wǎng)站互相發(fā)送加密的握手消息并驗(yàn)證玫镐,目的是為了保證雙方都獲得了一致的密碼倒戏,并且可以正常的加密解密數(shù)據(jù),為后續(xù)真正數(shù)據(jù)的傳輸做一次測(cè)試恐似。另外杜跷,HTTPS一般使用的加密與HASH算法如下:

非對(duì)稱加密算法:RSA,DSA/DSS

對(duì)稱加密算法:AES,RC4葛闷,3DES

HASH算法:MD5憋槐,SHA1,SHA256

其中非對(duì)稱加密算法用于在握手過(guò)程中加密生成的密碼淑趾,對(duì)稱加密算法用于對(duì)真正傳輸?shù)臄?shù)據(jù)進(jìn)行加密阳仔,而HASH算法用于驗(yàn)證數(shù)據(jù)的完整性。

由于瀏覽器生成的密碼是整個(gè)數(shù)據(jù)加密的關(guān)鍵扣泊,因此在傳輸?shù)臅r(shí)候使用了非對(duì)稱加密算法對(duì)其加密近范。

非對(duì)稱加密算法會(huì)生成公鑰和私鑰,公鑰只能用于加密數(shù)據(jù)延蟹,因此可以隨意傳輸评矩,而網(wǎng)站的私鑰用于對(duì)數(shù)據(jù)進(jìn)行解密,所以網(wǎng)站都會(huì)非常小心的保管自己的私鑰阱飘,防止泄漏斥杜。

TLS握手過(guò)程中如果有任何錯(cuò)誤,都會(huì)使加密連接斷開(kāi)沥匈,從而阻止了隱私信息的傳輸蔗喂。

正是由于HTTPS非常的安全,攻擊者無(wú)法從中找到下手的地方咐熙,于是更多的是采用了假證書的手法來(lái)欺騙客戶端弱恒,從而獲取明文的信息,但是這些手段都可以被識(shí)別出來(lái)

4棋恼、SSL返弹、TLS

SSL由從前的網(wǎng)景公司開(kāi)發(fā),有1,2,3三個(gè)版本,但現(xiàn)在只使用版本3

TLS是SSL的標(biāo)準(zhǔn)化后的產(chǎn)物 有1.0 1.1 1.2三個(gè)版本, 目前在用1.0, TLS1.0和SSL3.0幾乎沒(méi)有區(qū)別

事實(shí)上我們現(xiàn)在用的都是TLS爪飘,但因?yàn)闅v史上習(xí)慣了SSL這個(gè)稱呼 平常還是以SSL為多

二义起、HTTPS通訊過(guò)程

HTTPS能夠加密信息,從而避免敏感信息被第三方獲取师崎。很多的銀行網(wǎng)站或電子郵箱等等安全級(jí)別較高的服務(wù)都會(huì)采用HTTPS協(xié)議默终。

HTTPS 由兩部分組成:HTTP +SSL / TLS,就是在HTTP上又加了一層處理加密信息的模塊犁罩。服務(wù)端和客戶端的信息傳輸都會(huì)通過(guò)TLS進(jìn)行加密齐蔽,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)。

服務(wù)端的配置

采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書床估,可以自己制作含滴,也可以向組織申請(qǐng)。

區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過(guò)丐巫,才可以繼續(xù)訪問(wèn)谈况,而使用受信任的公司申請(qǐng)的證書則不會(huì)彈出提示頁(yè)面(startssl就是個(gè)不錯(cuò)的選擇勺美,有1年的免費(fèi)服務(wù))。

這套證書其實(shí)就是一對(duì)公鑰和私鑰碑韵。

如果對(duì)公鑰和私鑰不太理解赡茸,可以想象成一把鑰匙和一個(gè)鎖頭,只是全世界只有你一個(gè)人有這把鑰匙祝闻,你可以把鎖頭給別人占卧,別人可以用這個(gè)鎖把重要的東西鎖起來(lái),然后發(fā)給你联喘,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙屉栓,所以只有你才能看到被這把鎖鎖起來(lái)的東西。

1. 客戶端發(fā)起HTTPS請(qǐng)求

用戶從瀏覽器輸入https網(wǎng)址耸袜,連接到服務(wù)器的443端口。

2. 服務(wù)端接收請(qǐng)求牲平,給客戶端返回證書

證書其實(shí)就是公鑰堤框,當(dāng)然包含了很多信息,如證書的頒發(fā)機(jī)構(gòu)纵柿,過(guò)期時(shí)間等蜈抓。

3. 客戶端解析證書

客戶端會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu)昂儒,過(guò)期時(shí)間等等:

如果發(fā)現(xiàn)異常沟使,則會(huì)彈出一個(gè)警告框,提示證書存在問(wèn)題渊跋。

如果證書沒(méi)有問(wèn)題腊嗡,那么就生成一個(gè)隨機(jī)值。然后用證書對(duì)該隨機(jī)值進(jìn)行加密拾酝。就好像上面說(shuō)的燕少,把隨機(jī)值用鎖頭鎖起來(lái),這樣除非有鑰匙蒿囤,不然看不到被鎖住的內(nèi)容客们。

4. 客戶端向服務(wù)端發(fā)送加密后的隨機(jī)值

客戶端發(fā)送給服務(wù)端用證書加密后的隨機(jī)值,讓服務(wù)端得到這個(gè)隨機(jī)值材诽,之后客戶端和服務(wù)端的通信通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密底挫。

5. 服務(wù)端用私鑰解密收到的加密隨機(jī)值,解出隨機(jī)值

服務(wù)端用私鑰解密得到客戶端傳來(lái)的隨機(jī)值(私鑰)脸侥,然后把內(nèi)容通過(guò)該值進(jìn)行對(duì)稱加密建邓。

所謂對(duì)稱加密就是,將信息和私鑰通過(guò)某種算法混合在一起湿痢,這樣除非知道私鑰涝缝,不然無(wú)法獲取內(nèi)容扑庞,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠彪悍拒逮,私鑰夠復(fù)雜罐氨,數(shù)據(jù)就夠安全。

6. 服務(wù)端向客戶端發(fā)送加密后的信息

這部分信息是服務(wù)端用私鑰加密后的信息滩援,可以在客戶端被還原栅隐。

7. 客戶端解密信息

客戶端用之前生成的私鑰解密服務(wù)端傳過(guò)來(lái)的信息,于是獲取了解密后的內(nèi)容玩徊。

這個(gè)過(guò)程第三方即使監(jiān)聽(tīng)到了數(shù)據(jù)租悄,也沒(méi)法解密。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恩袱,一起剝皮案震驚了整個(gè)濱河市泣棋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌畔塔,老刑警劉巖潭辈,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異澈吨,居然都是意外死亡把敢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門谅辣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)修赞,“玉大人,你說(shuō)我怎么就攤上這事桑阶“馗保” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蚣录,是天一觀的道長(zhǎng)搓扯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)包归,這世上最難降的妖魔是什么锨推? 我笑而不...
    開(kāi)封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮公壤,結(jié)果婚禮上换可,老公的妹妹穿的比我還像新娘。我一直安慰自己厦幅,他們只是感情好沾鳄,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著确憨,像睡著了一般译荞。 火紅的嫁衣襯著肌膚如雪瓤的。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天吞歼,我揣著相機(jī)與錄音圈膏,去河邊找鬼。 笑死篙骡,一個(gè)胖子當(dāng)著我的面吹牛稽坤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播糯俗,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挟伙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼涎跨!你這毒婦竟也來(lái)了女嘲?” 一聲冷哼從身側(cè)響起蓝厌,我...
    開(kāi)封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎淘正,沒(méi)想到半個(gè)月后天揖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跪帝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了些阅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伞剑。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖市埋,靈堂內(nèi)的尸體忽然破棺而出黎泣,到底是詐尸還是另有隱情,我是刑警寧澤缤谎,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布抒倚,位于F島的核電站,受9級(jí)特大地震影響坷澡,放射性物質(zhì)發(fā)生泄漏托呕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一频敛、第九天 我趴在偏房一處隱蔽的房頂上張望项郊。 院中可真熱鬧,春花似錦斟赚、人聲如沸着降。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)任洞。三九已至蓄喇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間交掏,已是汗流浹背妆偏。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耀销,地道東北人楼眷。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像熊尉,于是被迫代替她去往敵國(guó)和親罐柳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

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