淺析 HTTPS 和 SSL/TLS 協(xié)議

名詞說(shuō)明

1.ssl協(xié)議:通過(guò)認(rèn)證屯伞、數(shù)字簽名確保完整性芜辕;使用加密確保私密性律杠;確钡卺客戶端和服務(wù)器之間的通訊安全
2.tls協(xié)議:在SSL的基礎(chǔ)上新增了諸多的功能难菌,它們之間協(xié)議工作方式一樣
3.https協(xié)議:https over tls,tls協(xié)議是https協(xié)議的核心
4.CA:Certificate Authority蔑滓,也稱為電子商務(wù)認(rèn)證中心郊酒,是負(fù)責(zé)發(fā)放和管理數(shù)字證書(shū)的權(quán)威機(jī)構(gòu)
對(duì)稱加密:加密和解密使用相同密鑰的加密算法。它的速度快键袱,通常在加密大量數(shù)據(jù)時(shí)使用
非對(duì)稱加密:需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密燎窘,公鑰與私鑰。公鑰加密的只能用私鑰解密蹄咖,反之私鑰加密的也只能用公鑰解密荠耽。通常用于重要信息的安全傳輸,缺點(diǎn)是速度比對(duì)稱加密慢很多

HTTPS 簡(jiǎn)介

HTTPS (全稱:Hyper Text Transfer Protocol over SecureSocket Layer)比藻,是以安全為目標(biāo)的 HTTP 通道铝量,在HTTP的基礎(chǔ)上通過(guò)傳輸加密和身份認(rèn)證保證了傳輸過(guò)程的安全性。


HTTPS 在HTTP 的基礎(chǔ)下加入SSL银亲,HTTPS 的安全基礎(chǔ)是 SSL慢叨,因此加密的詳細(xì)內(nèi)容就需要 SSL。 整體架構(gòu)如下:

HTTPS 存在不同于 HTTP 的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在 HTTP與 TCP 之間)务蝠。這個(gè)系統(tǒng)提供了身份驗(yàn)證與加密通訊方法拍谐。它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊,例如交易支付等方面馏段。

SSL 與 TLS 協(xié)議

協(xié)議架構(gòu)

SSL 協(xié)議

SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security轩拨,TLS)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密院喜。

SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間亡蓉,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:

  • SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上喷舀,為高層協(xié)議提供數(shù)據(jù)封裝砍濒、壓縮、加密等基本功能的支持硫麻。

  • SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上爸邢,用于在實(shí)際的數(shù)據(jù)傳輸開(kāi)始前,通訊雙方進(jìn)行身份認(rèn)證拿愧、協(xié)商加密算法杠河、交換加密密鑰等。

TLS

  • TLS:Transport Layer Security浇辜,安全傳輸層協(xié)議(TLS)用于在兩個(gè)通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性券敌。該協(xié)議由兩層組成: TLS 記錄協(xié)議(TLS Record)和 TLS 握手協(xié)議(TLS Handshake)。較低的層為 TLS 記錄協(xié)議奢赂,位于某個(gè)可靠的傳輸協(xié)議(例如 TCP)上面陪白。安全傳輸層協(xié)議(TLS)用于在兩個(gè)通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性。該協(xié)議由兩層組成: TLS 記錄協(xié)議(TLS Record)和 TLS 握手協(xié)議(TLS Handshake)膳灶。TLS 的最大優(yōu)勢(shì)就在于:TLS 是獨(dú)立于應(yīng)用協(xié)議咱士。高層協(xié)議可以透明地分布在 TLS 協(xié)議上面。然而轧钓,TLS 標(biāo)準(zhǔn)并沒(méi)有規(guī)定應(yīng)用程序如何在 TLS 上增加安全性序厉;它把如何啟動(dòng) TLS 握手協(xié)議以及如何解釋交換的認(rèn)證證書(shū)的決定權(quán)留給協(xié)議的設(shè)計(jì)者和實(shí)施者來(lái)判斷。

安全傳輸層協(xié)議(TLS)用于在兩個(gè)通信應(yīng)用程序之間提供保密性和數(shù)據(jù)完整性毕箍。

該協(xié)議由兩層組成: TLS記錄協(xié)議(TLS Record)和TLS握手協(xié)議(TLS Handshake)弛房。

較低的層為TLS記錄協(xié)議,位于某個(gè)可靠的傳輸協(xié)議(例如TCP)上面而柑。

TLS記錄協(xié)議提供的連接安全性具有兩個(gè)基本特性:

  • 私有——對(duì)稱加密用以數(shù)據(jù)加密(DES文捶、RC4等)荷逞。對(duì)稱加密所產(chǎn)生的密鑰對(duì)每個(gè)連接都是唯一的,且此密鑰基于另一個(gè)協(xié)議(如握手協(xié)議)協(xié)商粹排。記錄協(xié)議也可以不加密使用种远。
  • 可靠——信息傳輸包括使用密鑰的MAC進(jìn)行信息完整性檢查。安全哈希功能(SHA顽耳、MD5等)用于MAC計(jì)算坠敷。記錄協(xié)議在沒(méi)有MAC的情況下也能操作,但一般只能用于這種模式射富,即有另一個(gè)協(xié)議正在使用記錄協(xié)議傳輸協(xié)商安全參數(shù)膝迎。

TLS記錄協(xié)議用于封裝各種高層協(xié)議。作為這種封裝協(xié)議之一的握手協(xié)議允許服務(wù)器與客戶機(jī)在應(yīng)用程序協(xié)議傳輸和接收其第一個(gè)數(shù)據(jù)字節(jié)前彼此之間互相認(rèn)證胰耗,協(xié)商加密算法和加密密鑰限次。TLS握手協(xié)議提供的連接安全具有三個(gè)基本屬性:

  • 可以使用非對(duì)稱的,或公共密鑰的密碼術(shù)來(lái)認(rèn)證對(duì)等方的身份宪郊。該認(rèn)證是可選的掂恕,但至少需要一個(gè)結(jié)點(diǎn)方。
  • 共享解密密鑰的協(xié)商是安全的弛槐。對(duì)偷竊者來(lái)說(shuō)協(xié)商加密是難以獲得的懊亡。此外經(jīng)過(guò)認(rèn)證過(guò)的連接不能獲得加密,即使是進(jìn)入連接中間的攻擊者也不能乎串。
  • 協(xié)商是可靠的店枣。沒(méi)有經(jīng)過(guò)通信方成員的檢測(cè),任何攻擊者都不能修改通信協(xié)商叹誉。

TLS的最大優(yōu)勢(shì)就在于:TLS是獨(dú)立于應(yīng)用協(xié)議鸯两。高層協(xié)議可以透明地分布在TLS協(xié)議上面。然而长豁,TLS標(biāo)準(zhǔn)并沒(méi)有規(guī)定應(yīng)用程序如何在TLS上增加安全性钧唐;它如何啟動(dòng)TLS握手協(xié)議以及如何解釋交換的認(rèn)證證書(shū)的決定權(quán)留給協(xié)議的設(shè)計(jì)者和實(shí)施者來(lái)判斷。

TLS和SSL的關(guān)系

1.TLS與SSL的差異

1)版本號(hào):TLS記錄格式與SSL記錄格式相同匠襟,但版本號(hào)的值不同钝侠,TLS的版本1.0使用的版本號(hào)為SSLv3.1。

2)報(bào)文鑒別碼:SSLv3.0和TLS的MAC算法及MAC計(jì)算的范圍不同酸舍。TLS使用RFC-2104定義的HMAC算法帅韧。SSLv3.0使用了相似的算法,兩者差別在于SSLv3.0中啃勉,填充字節(jié)與密鑰之間采用的是連接運(yùn)算忽舟,而HMAC算法采用的異或運(yùn)算。但是兩者的安全程度是相同的。

3)偽隨機(jī)函數(shù):TLS使用了稱為PRF的偽隨機(jī)函數(shù)來(lái)將密鑰擴(kuò)展成數(shù)據(jù)塊叮阅,是更安全的方式刁品。

4)報(bào)警代碼:TLS支持幾乎所有的SSLv3.0報(bào)警代碼,而且TLS還補(bǔ)充定義了很多報(bào)警代碼帘饶,如解密失斞普铩(decryption_failed)、記錄溢出(record_overflow)及刻、未知CA(unknown_ca)、拒絕訪問(wèn)(access_denied)等竞阐。

5)密文族和客戶證書(shū):SSLv3.0和TLS存在少量差別缴饭,即TLS不支持Fortezza密鑰交換、加密算法和客戶證書(shū)骆莹。

6)certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息計(jì)算MD5和SHA-1散列碼時(shí)颗搂,計(jì)算的輸入有少許差別,但安全性相當(dāng)幕垦。

7)加密計(jì)算:TLS和SSLv3.0在計(jì)算主密值(master secret)時(shí)采用的方式不同丢氢。

8)填充:用戶數(shù)據(jù)加密之前需要增加的填充字節(jié)。在SSL中先改,填充后的數(shù)據(jù)長(zhǎng)度喲啊達(dá)到密文快長(zhǎng)度的最小整數(shù)倍疚察。而在TLS中,填充后的數(shù)據(jù)長(zhǎng)度可以是密文塊長(zhǎng)度的任意整數(shù)倍(但填充的最大長(zhǎng)度為255字節(jié))仇奶,這種方式可以防止基于對(duì)報(bào)文長(zhǎng)度進(jìn)行分析的攻擊貌嫡。

2.TLS的主要增強(qiáng)內(nèi)容

TLS的主要目標(biāo)是使SSL更安全,并使協(xié)議的規(guī)范更精確和完善该溯。TLS在SSL v3.0的基礎(chǔ)上岛抄,提供了以下增加內(nèi)容:

1)更安全的MAC算法

2)更嚴(yán)密的警報(bào)

3)“灰色區(qū)域”規(guī)范的更明確的定義

3.TLS對(duì)于安全性的改進(jìn)

1)對(duì)于消息認(rèn)證使用密鑰散列法:TLS使用“消息認(rèn)證代碼的密鑰散列法”(HMAC),當(dāng)記錄在開(kāi)放的網(wǎng)絡(luò)(如因特網(wǎng))上傳送時(shí)狈茉,該代碼確保記錄不會(huì)被變更夫椭。SSLv3.0還提供鍵控消息認(rèn)證,但HMAC比SSLv3.0使用(消息認(rèn)證代碼)MAC功能更安全氯庆。

2)增強(qiáng)的偽隨機(jī)功能(PRF):PRF生成密鑰數(shù)據(jù)蹭秋。在TLS中,HMAC定義PRF点晴。PRF使用兩種散列算法保證其安全性感凤。如果任一算法暴露了,只要第二種算法未暴露粒督,則數(shù)據(jù)仍然是安全的陪竿。

3)改進(jìn)的已完成消息驗(yàn)證:TLS和SSLv3.0都對(duì)兩個(gè)端點(diǎn)提供已完成的消息,該消息認(rèn)證交換的消息沒(méi)有被變更。然而族跛,TLS將此已完成消息基于PRF和HMAC值之上闰挡,這也比SSLv3.0更安全。

4)一致證書(shū)處理:與SSLv3.0不同礁哄,TLS試圖指定必須在TLS之間實(shí)現(xiàn)交換的證書(shū)類型长酗。

5)特定警報(bào)消息:TLS提供更多的特定和附加警報(bào),以指示任一會(huì)話端點(diǎn)檢測(cè)到的問(wèn)題桐绒。TLS還對(duì)何時(shí)應(yīng)該發(fā)送某些警報(bào)進(jìn)行記錄夺脾。

HTTPS 通信握手過(guò)程

SSL協(xié)議提供的服務(wù)主要有:

1)認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器茉继;

2)加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊冗职取;

3)維護(hù)數(shù)據(jù)的完整性烁竭,確保數(shù)據(jù)在傳輸過(guò)程中不被改變菲茬。

SSL協(xié)議的工作流程:

服務(wù)器認(rèn)證階段:

1)客戶端向服務(wù)器發(fā)送一個(gè)開(kāi)始信息“Hello”以便開(kāi)始一個(gè)新的會(huì)話連接;

2)服務(wù)器根據(jù)客戶的信息確定是否需要生成新的主密鑰派撕,如需要?jiǎng)t服務(wù)器在響應(yīng)客戶的“Hello”信息時(shí)將包含生成主密鑰所需的信息婉弹;

3)客服根據(jù)收到的服務(wù)器響應(yīng)信息,產(chǎn)生一個(gè)主密鑰终吼,并用服務(wù)器的公開(kāi)密鑰加密后傳給服務(wù)器镀赌;

4)服務(wù)器恢復(fù)該主密鑰,并返回給客戶一個(gè)用主密鑰認(rèn)證的信息衔峰,以此讓客戶認(rèn)證服務(wù)器佩脊。

用戶認(rèn)證階段:

在此之前,服務(wù)器已經(jīng)通過(guò)了客戶認(rèn)證垫卤,這一階段主要完成對(duì)客戶的認(rèn)證威彰。經(jīng)認(rèn)證的服務(wù)器發(fā)送一個(gè)提問(wèn)給客戶,客戶則返回(數(shù)字)簽名后的提問(wèn)和其公開(kāi)密鑰穴肘,從而向服務(wù)器提供認(rèn)證歇盼。

關(guān)于數(shù)字證書(shū)

證書(shū)內(nèi)容:如發(fā)行機(jī)構(gòu)、有效期评抚、公司信息等
● 摘要:證書(shū)內(nèi)容等經(jīng)過(guò)hash之后生成摘要
● 數(shù)字簽名:CA使用私鑰對(duì)摘要豹缀,加密之后生成簽名
● 數(shù)字證書(shū)主要由證書(shū)內(nèi)容、公鑰慨代、數(shù)字簽名邢笙、使用的hash算法等組成

證書(shū)驗(yàn)證分為真實(shí)性驗(yàn)證與有效性驗(yàn)證:

真實(shí)性驗(yàn)證:
● 通過(guò)內(nèi)置根證書(shū)的公鑰對(duì)數(shù)字簽名解密,得到一個(gè)hash值侍匙,這個(gè)hash值就是摘要
● 使用證書(shū)內(nèi)的hash算法將證書(shū)內(nèi)容進(jìn)行hash之后得到一個(gè)hash值氮惯,用這個(gè)新的hash值與上一步的hash值進(jìn)行對(duì)比
● 若相同,證明證書(shū)真實(shí)有效,若不同妇汗,則證明被串改過(guò)

有效性驗(yàn)證:
● CRL帘不。CA會(huì)提供一份證書(shū)失效名單,瀏覽器會(huì)緩存并定期更新該名單杨箭。
● OCSP寞焙。CA提供實(shí)時(shí)接口查詢

關(guān)于數(shù)字簽名中,CA使用的私鑰的問(wèn)題:
● CA也會(huì)生成一對(duì)私鑰互婿、公鑰捣郊,私鑰對(duì)用戶證書(shū)進(jìn)行加密
● 而公鑰會(huì)內(nèi)置在操作系統(tǒng)的安裝當(dāng)中成為系統(tǒng)默認(rèn)的根證書(shū)
● 在真實(shí)性驗(yàn)證中,客戶端使用內(nèi)置根證書(shū)中的公鑰對(duì)用戶的證書(shū)進(jìn)行解密

參考文章

SSL vs TLS - What's the Difference?: https://www.globalsign.com/en/blog/ssl-vs-tls-difference

聊聊HTTPS和SSL/TLS協(xié)議 | 程序師 - 程序員擒悬、編程語(yǔ)言模她、軟件開(kāi)發(fā)、編程技術(shù) http://www.techug.com/post/https-ssl-tls.html

詳解SSL/TLS http://www.mamicode.com/info-detail-1846390.html (推薦閱讀)

【HTTPS懂牧、SSL、TLS三者之間的聯(lián)系和區(qū)別_Enweitech Software Works-CSDN博客_ssl和tls】https://blog.csdn.net/enweitech/article/details/81781405

http://www.reibang.com/p/55ff4c3b4b5c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尊勿,一起剝皮案震驚了整個(gè)濱河市僧凤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌元扔,老刑警劉巖躯保,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異澎语,居然都是意外死亡途事,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門擅羞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尸变,“玉大人,你說(shuō)我怎么就攤上這事减俏≌倮茫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵娃承,是天一觀的道長(zhǎng)奏夫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)历筝,這世上最難降的妖魔是什么酗昼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮梳猪,結(jié)果婚禮上麻削,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好碟婆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布电抚。 她就那樣靜靜地躺著,像睡著了一般竖共。 火紅的嫁衣襯著肌膚如雪蝙叛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,166評(píng)論 1 284
  • 那天公给,我揣著相機(jī)與錄音借帘,去河邊找鬼。 笑死淌铐,一個(gè)胖子當(dāng)著我的面吹牛肺然,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腿准,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼际起,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了吐葱?” 一聲冷哼從身側(cè)響起街望,我...
    開(kāi)封第一講書(shū)人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弟跑,沒(méi)想到半個(gè)月后灾前,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孟辑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年哎甲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饲嗽。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炭玫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喝噪,到底是詐尸還是另有隱情础嫡,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布酝惧,位于F島的核電站榴鼎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晚唇。R本人自食惡果不足惜巫财,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哩陕。 院中可真熱鬧平项,春花似錦赫舒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扣讼,卻和暖如春缺猛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椭符。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工荔燎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人销钝。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓有咨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蒸健。 傳聞我的和親對(duì)象是個(gè)殘疾皇子座享,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344