我也想來(lái)談?wù)凥TTPS

首先聲明此文轉(zhuǎn)載【http://www.open-open.com/lib/view/open1478228259347.html】

安全越來(lái)越被重視

2014年8月份Google在官博上發(fā)表《HTTPS as a ranking signal》

表示調(diào)整其搜索引擎算法毅往,采用HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名將會(huì)更高,鼓勵(lì)全球網(wǎng)站采用安全度更高的HTTPS以保證訪(fǎng)客安全派近。

同一年(2014年)攀唯,百度開(kāi)始對(duì)外開(kāi)放了HTTPS的訪(fǎng)問(wèn),并于3月初正式對(duì)全網(wǎng)用戶(hù)進(jìn)行了HTTPS跳轉(zhuǎn)渴丸。對(duì)百度自身來(lái)說(shuō)侯嘀,HTTPS能夠保護(hù)用戶(hù)體驗(yàn),降低劫持/隱私泄露對(duì)用戶(hù)的傷害谱轨。

而2015年戒幔,百度開(kāi)放收錄HTTPS站點(diǎn)公告。全面支持HTTPS頁(yè)面直接收錄土童;百度搜索引擎認(rèn)為在權(quán)值相同的站點(diǎn)中诗茎,采用HTTPS協(xié)議的頁(yè)面更加安全,排名上會(huì)優(yōu)先對(duì)待献汗。

“HTTP = 不安全”敢订,為什么說(shuō)HTTP不安全王污?

HTTP報(bào)文是由一行行簡(jiǎn)單字符串組成的,是純文本楚午,可以很方便地對(duì)其進(jìn)行讀寫(xiě)昭齐。一個(gè)簡(jiǎn)單事務(wù)所使用的報(bào)文:

HTTP傳輸?shù)膬?nèi)容是明文的,你上網(wǎng)瀏覽過(guò)醒叁、提交過(guò)的內(nèi)容司浪,所有在后臺(tái)工作的實(shí)體,比如路由器的所有者把沼、網(wǎng)線(xiàn)途徑路線(xiàn)的不明意圖者啊易、省市運(yùn)營(yíng)商、運(yùn)營(yíng)商骨干網(wǎng)饮睬、跨運(yùn)營(yíng)商網(wǎng)關(guān)等都能夠查看租谈。舉個(gè)不安全的例子:

一個(gè)簡(jiǎn)單非HTTPS的登錄采用POST方法提交包含用戶(hù)名和密碼的表單,會(huì)發(fā)生什么捆愁?

POST表單發(fā)出去的信息割去,沒(méi)有做任何的安全性信息置亂(加密編碼),直接編碼為下一層協(xié)議(TCP層)需要的內(nèi)容昼丑,所有用戶(hù)名和密碼信息一覽無(wú)余呻逆,任何攔截到報(bào)文信息的人都可以獲取到你的用戶(hù)名和密碼,是不是想想都覺(jué)得恐怖菩帝?

那么問(wèn)題來(lái)了咖城,怎么樣才是安全的呢?

對(duì)于包含用戶(hù)敏感信息的網(wǎng)站需要進(jìn)行怎樣的安全防護(hù)呼奢?

對(duì)于一個(gè)包含用戶(hù)敏感信息的網(wǎng)站(從實(shí)際角度出發(fā))宜雀,我們期望實(shí)現(xiàn)HTTP安全技術(shù)能夠滿(mǎn)足至少以下需求:

服務(wù)器認(rèn)證(客戶(hù)端知道它們是在與真正的而不是偽造的服務(wù)器通話(huà))

客戶(hù)端認(rèn)證(服務(wù)器知道它們是在與真正的而不是偽造的客戶(hù)端通話(huà))

完整性(客戶(hù)端和服務(wù)器的數(shù)據(jù)不會(huì)被修改)

加密(客戶(hù)端和服務(wù)器的對(duì)話(huà)是私密的,無(wú)需擔(dān)心被竊聽(tīng))

效率(一個(gè)運(yùn)行的足夠快的算法握础,以便低端的客戶(hù)端和服務(wù)器使用)

普適性(基本上所有的客戶(hù)端和服務(wù)器都支持這個(gè)協(xié)議)

管理的可擴(kuò)展性(在任何地方的任何人都可以立即進(jìn)行安全通信)

適應(yīng)性(能夠支持當(dāng)前最知名的安全方法)

在社會(huì)上的可行性(滿(mǎn)足社會(huì)的政治文化需要)

HTTPS協(xié)議來(lái)解決安全性的問(wèn)題:HTTPS和HTTP的不同 – TLS安全層(會(huì)話(huà)層)

超文本傳輸安全協(xié)議(HTTPS辐董,也被稱(chēng)為HTTP over TLS,HTTP over SSL或HTTP Secure)是一種網(wǎng)絡(luò)安全傳輸協(xié)議禀综。

HTTPS開(kāi)發(fā)的主要目的简烘,是提供對(duì)網(wǎng)絡(luò)服務(wù)器的認(rèn)證,保證交換信息的機(jī)密性和完整性定枷。

它和HTTP的差別在于孤澎,HTTPS經(jīng)由超文本傳輸協(xié)議進(jìn)行通信,但利用SSL/TLS來(lái)對(duì)包進(jìn)行加密依鸥,即所有的HTTP請(qǐng)求和響應(yīng)數(shù)據(jù)在發(fā)送到網(wǎng)絡(luò)上之前亥至,都要進(jìn)行加密悼沈。如下圖:

安全操作贱迟,即數(shù)據(jù)編碼(加密)和解碼(解密)的工作是由SSL一層來(lái)完成姐扮,而其他的部分和HTTP協(xié)議沒(méi)有太多的不同。更詳細(xì)的TLS層協(xié)議圖:

SSL層是實(shí)現(xiàn)HTTPS的安全性的基石衣吠,它是如何做到的呢茶敏?我們需要了解SSL層背后基本原理和概念,由于涉及到信息安全和密碼學(xué)的概念缚俏,我盡量用簡(jiǎn)單的語(yǔ)言和示意圖來(lái)描述惊搏。

SSL層背后基本原理和概念

介紹HTTPS背后的基本原理和概念,涉及到的概念:加密算法忧换,數(shù)字證書(shū)恬惯,CA中心等。

加密算法

加密算法嚴(yán)格來(lái)說(shuō)屬于編碼學(xué)(密碼編碼學(xué))亚茬,編碼是信息從一種形式或格式轉(zhuǎn)換為另一種形式的過(guò)程酪耳。解碼,是編碼的逆過(guò)程(對(duì)應(yīng)密碼學(xué)中的解密)刹缝。

對(duì)稱(chēng)加密算法

加密算法主要分兩類(lèi):對(duì)稱(chēng)和非對(duì)稱(chēng)加密算法碗暗。在對(duì)稱(chēng)加密算法中,使用的密鑰只有一個(gè)梢夯,發(fā)收信雙方都使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密言疗,這就要求解密方事先必須知道加密密鑰。

但是對(duì)稱(chēng)加密算法有一個(gè)問(wèn)題:一旦通信的實(shí)體多了颂砸,那么管理秘鑰就會(huì)成為問(wèn)題噪奄。

非對(duì)稱(chēng)加密算法(加密和簽名)

非對(duì)稱(chēng)加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(public key)私有密鑰(private key)。公開(kāi)密鑰與私有密鑰是一對(duì)沾凄,如果用公開(kāi)密鑰對(duì)數(shù)據(jù)進(jìn)行加密梗醇,只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密撒蟀,那么只有用對(duì)應(yīng)的公開(kāi)密鑰才能解密叙谨,這個(gè)反過(guò)來(lái)的過(guò)程叫作數(shù)字簽名(因?yàn)樗借€是非公開(kāi)的,所以可以驗(yàn)證該實(shí)體的身份)保屯。

他們就像是鎖和鑰匙的關(guān)系手负。Alice把打開(kāi)的鎖(公鑰)發(fā)送給不同的實(shí)體(Bob,Tom)姑尺,然后他們用這把鎖把信息加密竟终,Alice只需要一把鑰匙(私鑰)就能解開(kāi)內(nèi)容。

那么切蟋,有一個(gè)很重要的問(wèn)題:加密算法是如何保證數(shù)據(jù)傳輸?shù)陌踩炒罚床槐黄平猓坑袃牲c(diǎn):

1.利用數(shù)學(xué)計(jì)算的困難性(比如:離散對(duì)數(shù)問(wèn)題)

2.加密算法是公開(kāi)的,關(guān)鍵在于秘鑰喘鸟,密碼學(xué)中有柯克霍夫斯基原則匆绣,即加密算法的安全性依賴(lài)的是密鑰的保密而不是算法的保密,因此什黑,保證秘鑰的定期更換是非常重要的崎淳。

數(shù)字證書(shū),用來(lái)實(shí)現(xiàn)身份認(rèn)證和秘鑰交換

數(shù)字證書(shū)是一個(gè)經(jīng)證書(shū)授權(quán)中心數(shù)字簽名的包含公開(kāi)密鑰擁有者信息愕把,使用的加密算法以及公開(kāi)密鑰的文件拣凹。

以數(shù)字證書(shū)為核心的加密技術(shù)可以對(duì)網(wǎng)絡(luò)上傳輸?shù)男畔⑦M(jìn)行加密和解密、數(shù)字簽名和簽名驗(yàn)證恨豁,確保網(wǎng)上傳遞信息的機(jī)密性嚣镜、完整性及交易的不可抵賴(lài)性。使用了數(shù)字證書(shū)橘蜜,即使您發(fā)送的信息在網(wǎng)上被他人截獲祈惶,甚至您丟失了個(gè)人的賬戶(hù)、密碼等信息扮匠,仍可以保證您的賬戶(hù)捧请、資金安全。 (比如棒搜,支付寶的一種安全手段就是在指定電腦上安裝數(shù)字證書(shū))

身份認(rèn)證(我憑什么信任你)

身份認(rèn)證是建立每一個(gè)TLS連接不可或缺的部分疹蛉。比如,你有可能和任何一方建立一個(gè)加密的通道力麸,包括攻擊者可款,除非我們可以確定通信的服務(wù)端是我們可以信任的,否則克蚂,所有的加密(保密)工作都沒(méi)有任何作用闺鲸。

而身份認(rèn)證的方式就是通過(guò)證書(shū)以數(shù)字方式簽名的聲明,它將公鑰與持有相應(yīng)私鑰的主體(個(gè)人埃叭、設(shè)備和服務(wù))身份綁定在一起摸恍。通過(guò)在證書(shū)上簽名,CA可以核實(shí)與證書(shū)上公鑰相應(yīng)的私鑰為證書(shū)所指定的主體所擁有赤屋。

了解TLS協(xié)議

HTTPS的安全主要靠的是TLS協(xié)議層的操作立镶。那么它到底做了什么,來(lái)建立一條安全的數(shù)據(jù)傳輸通道呢类早?

TLS握手:安全通道是如何建立的

0 ms

TLS運(yùn)行在一個(gè)可靠的TCP協(xié)議上媚媒,意味著我們必須首先完成TCP協(xié)議的三次握手。

56 ms

在TCP連接建立完成之后涩僻,客戶(hù)端會(huì)以明文的方式發(fā)送一系列說(shuō)明缭召,比如使用的TLS協(xié)議版本栈顷,客戶(hù)端所支持的加密算法等鸠信。

84 ms

服務(wù)器端拿到TLS協(xié)議版本烁焙,根據(jù)客戶(hù)端提供的加密算法列表選擇一個(gè)合適的加密算法,然后將選擇的算法連同服務(wù)器的證書(shū)一起發(fā)送到客戶(hù)端脂男。

112 ms

假設(shè)服務(wù)器和客戶(hù)端協(xié)商后晴竞,得到一個(gè)共同的TLS版本和加密算法,客戶(hù)端檢測(cè)服務(wù)端的證書(shū)狠半,非常滿(mǎn)意噩死,客戶(hù)端就會(huì)要么使用RSA加密算法(公鑰加密)或者DH秘鑰交換協(xié)議,得到一個(gè)服務(wù)器和客戶(hù)端公用的對(duì)稱(chēng)秘鑰神年。

由于歷史和商業(yè)原因已维,基于RSA的秘鑰交換占據(jù)了TLS協(xié)議的大片江山:客戶(hù)端生成一個(gè)對(duì)稱(chēng)秘鑰,使用服務(wù)器端證書(shū)的公鑰加密已日,然后發(fā)送給服務(wù)器端垛耳,服務(wù)器端利用私鑰解密得到對(duì)稱(chēng)秘鑰。

140 ms

服務(wù)器處理由客戶(hù)端發(fā)送的秘鑰交換參數(shù)飘千,通過(guò)驗(yàn)證MAC(Message Authentication Code堂鲜,消息認(rèn)證碼)來(lái)驗(yàn)證消息的完整性,返回一個(gè)加密過(guò)的“Finished”消息給客戶(hù)端护奈。

在密碼學(xué)中缔莲,消息認(rèn)證碼(英語(yǔ):Message Authentication Code,縮寫(xiě)為MAC)霉旗,又譯為消息鑒別碼痴奏、文件消息認(rèn)證碼、訊息鑒別碼厌秒、信息認(rèn)證碼读拆,是經(jīng)過(guò)特定算法后產(chǎn)生的一小段信息,檢查某段消息的完整性鸵闪,以及作身份驗(yàn)證檐晕。它可以用來(lái)檢查在消息傳遞過(guò)程中,其內(nèi)容是否被更改過(guò)蚌讼,不管更改的原因是來(lái)自意外或是蓄意攻擊棉姐。同時(shí)可以作為消息來(lái)源的身份驗(yàn)證,確認(rèn)消息的來(lái)源啦逆。

168 ms

客戶(hù)端用協(xié)商得到的堆成秘鑰解密“Finished”消息伞矩,驗(yàn)證MAC(消息完整性驗(yàn)證),如果一切ok夏志,那么這個(gè)加密的通道就建立完成乃坤,可以開(kāi)始數(shù)據(jù)傳輸了苛让。

在這之后的通信,采用對(duì)稱(chēng)秘鑰對(duì)數(shù)據(jù)加密傳輸湿诊,從而保證數(shù)據(jù)的機(jī)密性狱杰。

到此為止,我是想要介紹的基本原理的全部?jī)?nèi)容厅须,但HTTPS得知識(shí)點(diǎn)不止如此仿畸,還有更多說(shuō),現(xiàn)在來(lái)點(diǎn)干貨(實(shí)戰(zhàn))@屎汀错沽!

那么,教練眶拉,我想用HTTPS

選擇合適的證書(shū)千埃, Let’s Encrypt(It’s free, automated, and open.)是一種不錯(cuò)的選擇 – https://letsencrypt.org/

ThoughtWorks在2016年4月份發(fā)布的技術(shù)雷達(dá)中對(duì)Let’s Encrypt項(xiàng)目進(jìn)行了介紹:

從2015年12月開(kāi)始,Let’s Encrypt項(xiàng)目從封閉測(cè)試階段轉(zhuǎn)向公開(kāi)測(cè)試階段忆植,也就是說(shuō)用戶(hù)不再需要收到邀請(qǐng)才能使用它了放可。Let’s Encrypt為那些尋求網(wǎng)站安全的用戶(hù)提供了一種簡(jiǎn)單的方式獲取和管理證書(shū)。Let’s Encrypt也使得“安全和隱私”獲得了更好的保障朝刊,而這一趨勢(shì)已經(jīng)隨著ThoughtWorks和我們?cè)S多使用其進(jìn)行證書(shū)認(rèn)證的項(xiàng)目開(kāi)始了耀里。

據(jù)Let’s Encrypt發(fā)布的數(shù)據(jù)來(lái)看,至今該項(xiàng)目已經(jīng)頒發(fā)了超過(guò)300萬(wàn)份證書(shū)——300萬(wàn)這個(gè)數(shù)字是在5月8日-9日之間達(dá)成的拾氓。Let’s Encrypt是為了讓HTTP連接做得更加安全的一個(gè)項(xiàng)目备韧,所以越多的網(wǎng)站加入,互聯(lián)網(wǎng)就回變得越安全痪枫。

來(lái)自:http://insights.thoughtworkers.org/talk-about-https/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末织堂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奶陈,更是在濱河造成了極大的恐慌易阳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吃粒,死亡現(xiàn)場(chǎng)離奇詭異潦俺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)徐勃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)事示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人僻肖,你說(shuō)我怎么就攤上這事肖爵。” “怎么了臀脏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵劝堪,是天一觀(guān)的道長(zhǎng)冀自。 經(jīng)常有香客問(wèn)我,道長(zhǎng)秒啦,這世上最難降的妖魔是什么熬粗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮余境,結(jié)果婚禮上驻呐,老公的妹妹穿的比我還像新娘。我一直安慰自己芳来,他們只是感情好含末,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著绣张,像睡著了一般。 火紅的嫁衣襯著肌膚如雪关带。 梳的紋絲不亂的頭發(fā)上侥涵,一...
    開(kāi)封第一講書(shū)人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音宋雏,去河邊找鬼芜飘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛磨总,可吹牛的內(nèi)容都是我干的嗦明。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蚪燕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼娶牌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起馆纳,我...
    開(kāi)封第一講書(shū)人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诗良,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鲁驶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鉴裹,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年钥弯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了径荔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脆霎,死狀恐怖总处,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睛蛛,我是刑警寧澤辨泳,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布虱岂,位于F島的核電站,受9級(jí)特大地震影響菠红,放射性物質(zhì)發(fā)生泄漏第岖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一试溯、第九天 我趴在偏房一處隱蔽的房頂上張望蔑滓。 院中可真熱鬧,春花似錦遇绞、人聲如沸键袱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蹄咖。三九已至,卻和暖如春付鹿,著一層夾襖步出監(jiān)牢的瞬間澜汤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工舵匾, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俊抵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓坐梯,卻偏偏與公主長(zhǎng)得像徽诲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吵血,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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