溫故而知新之HTTPS

前言:

對于HTTPS其實很早之前就有過學(xué)習(xí)笤闯,但對其一直是一知半解,知道的并不深入全面棍厂,因此用了些時間颗味,好好地閱讀了極客時間關(guān)于HTTPS的一些專欄,并總結(jié)一下嘗試著用自己的話來描述一下牺弹。

一浦马、沒有安全的 HTTP 和它的巡禮之年

HTTP最初的目的:傳輸超文本文件,因此一直是明文傳輸文件张漂,而且不安全晶默。由于是明文傳輸,所以就很容易被中間人所截取航攒,一切通信的內(nèi)容也被這個中間人所掌握磺陡。這也就是常說的中間人攻擊。

1.1 什么是安全

那如何定義通信過程是安全的呢:機密性漠畜,完整性币他,身份驗證以及不可否認(rèn):

機密性:簡單來說就是數(shù)據(jù)是加密過的,除了參與通信之外的人都是都是看不了的憔狞。

完整性:數(shù)據(jù)在通信的過程中是完整的蝴悉,沒加經(jīng)過篡改的。

身份認(rèn)證:通信雙方可以驗證對方的真實身份

不可否認(rèn):不能否認(rèn)已經(jīng)發(fā)生過的行為

因為是明文傳輸瘾敢,所以在一些對安全要求高的場景就不能很好的滿足需求拍冠,因此在原有的基礎(chǔ)上引入了加密方案尿这,在TCP和HTTP之間加入了一個安全層SSL/TLS

HTTP -> TCP

HTTP -> 安全層(SSL/TLS) -> TCP

1.2 什么是SSL/TLS?

SSL全名叫Secure Sockets Layer中文名叫 安全套接層庆杜,在 OSI 模型中儲運第五層會話層的位置射众。這玩意兒是由網(wǎng)景公司所發(fā)明,并在其發(fā)展到 V3 的時候被 IETF 改名為 TLC(Transport Layer Security)欣福,并對其進(jìn)行標(biāo)準(zhǔn)化责球。而 TLS 發(fā)展到現(xiàn)在也經(jīng)歷了三個版本,最新的版本是2018年所制定的拓劝,牢牢的將密碼學(xué)的發(fā)展與當(dāng)今互聯(lián)網(wǎng)的現(xiàn)狀相結(jié)合雏逾,持續(xù)提高安全與性能,因此也成為信息安全領(lǐng)域的權(quán)威標(biāo)準(zhǔn)郑临。

而它的職責(zé)也很簡單:

  • 對發(fā)起 HTTP 請求的數(shù)據(jù)進(jìn)行加密操作
  • 對接收到 HTTP 的內(nèi)容進(jìn)行解密操作

當(dāng)瀏覽器客戶端和服務(wù)端在使用 TLS 進(jìn)行通信時光羞,需要選擇一組合理的加密算法來實現(xiàn)安全通信孝宗,而這些算法的組合通常被稱為:加密套件腰埂。它的命名是很規(guī)范的西饵,基本形式就是:密鑰交換算法 + 簽名算法 + 對稱加密算法 + 摘要算法。其中躺翻,簽名算法可以進(jìn)行身份驗證丧叽,摘要算法可以保證數(shù)據(jù)的完整性,而對稱加密算法則可以保證數(shù)據(jù)的機密性公你。(值得注意的是踊淳,在2019年不安全的 TLS 1.0 和 1.1 默認(rèn)被禁用(Safari TP 91、Google Chrome 72+陕靠、Firefox Nightly)

二迂尝、安全的 HTTPS 和它的故事

2.1 對稱加密

前面我們提到,HTTP協(xié)議在進(jìn)行傳輸?shù)臅r候是通過明文進(jìn)行傳輸?shù)募艚妫虼瞬话踩⒖D敲慈绻枰WC傳輸信息的機密性,最簡單的方法不外于將其進(jìn)行加密税肪,這樣第三方的人在拿到這些信息的時候溉躲,也就不能獲取信息里面的內(nèi)容了。因此這就引入了加密的第一個概念:對稱加密益兄。

對稱加密其實很簡單:加密和解密都使用的是相同的密鑰签财,是對稱的,這里的密鑰就是用于解開加密信息的鑰匙偏塞。

簡單來說就是客戶端會給服務(wù)端發(fā)送它支持的加密的方法的列表,以及一個隨機數(shù)邦鲫,然后服務(wù)器端在接受到這些東西后灸叼,會從客戶端所支持的加密方法列表中選取一種神汹,然后同時生成一個隨機數(shù)給客戶端,這樣兩端就都確定了加密方法和隨機數(shù)古今,也就可以通過這些信息來生成對應(yīng)的密鑰了屁魏。這樣做的話即使黑客在獲取到瀏覽器與服務(wù)器所傳輸?shù)男畔ⅲ玫降囊仓皇且淮畞y碼捉腥,而他也沒有相應(yīng)的密鑰氓拼,也就保證了信息傳輸?shù)臋C密性。

TLS中所提供的對稱加密算法有很多抵碟,其中最常用的當(dāng)屬 AES(Advanced Encryption Standard)既高級加密標(biāo)準(zhǔn)桃漾,密鑰的長度可以是128,192拟逮,256撬统,是當(dāng)今用的最為廣泛的對稱加密算法。當(dāng)然除了上面這個AES之外敦迄,我們國家也存在這自己的一套對稱加密算法:SM1 和 SM4恋追。其中SM1算法不公開,屬于國家機密罚屋,而 SM4 則是公開的苦囱,可以自行使用,這兩個算法的最大的優(yōu)勢就在于:國家支持脾猛!

對稱加密還有一個分組的概念撕彤,他可以讓算法用固定的長度的密鑰加密任意長度的明文,從而將密鑰轉(zhuǎn)化為密文尖滚。最新的分組模式叫做AEAD喉刘,在加密的同時還增加了認(rèn)證的功能。

對稱加密就是通過上面的這些東西漆弄,來完成一個簡單卻安全的加密方式的睦裳。

2.2 非對稱加密

對稱加密看起來的確是解決了我們所說的安全要素中的機密性的要求,但它仍然存在一個致命的漏洞就是:密鑰交互的方式仍然是明文的撼唾。也正是為了解決密鑰安全的問題,我們就需要使用非堆成加密的方法蛛蒙,那什么是非堆成加密呢抖格?非對稱加密簡單來說就是有兩把私鑰掌呜,一把是公鑰,可以公開給任何人使用模暗,一把是私鑰,需要嚴(yán)格保密。這就形成了一個非對稱性。具體舉個栗子來講就是:有 A、B 兩把密鑰,如果你用 A 密鑰來加密,那么只能使用 B 密鑰來解密;反過來,如果你要 B 密鑰來加密,那么只能用 A 密鑰來解密睁本。

非對稱加密除了可以對信息進(jìn)行加密外凡泣,很多非對稱加密算法還有簽名的功能惹资,這樣就可以提供身份認(rèn)證,保證通信雙方可以確定對面的身份褪测。

而從實現(xiàn)上來講猴誊,所有的非對稱加密算法,都是基于各種數(shù)學(xué)難題來設(shè)計實現(xiàn)的侮措,這些難題的特點在于:正向計算很簡單懈叹,反向推倒是無解的。其中比較經(jīng)典的非對稱加密算法包括:RSA分扎,ECC以及SM2澄成。

RSA

RSA 是所使用的數(shù)學(xué)難題是:兩個大的質(zhì)數(shù)相乘的結(jié)果很容易計算,但根據(jù)這個結(jié)果去做質(zhì)因分解得到原先的兩個質(zhì)數(shù)畏吓,則需要很大的計算量墨状。就比如這個:

https://lists.gforge.inria.fr/pipermail/cado-nfs-discuss/2019-December/001139.html

前段時間美國一群大佬宣布菲饼,240哥十進(jìn)制的整數(shù)分解成功肾砂,找到了它的兩個大質(zhì)數(shù)因子,不過這個成本也是很大的巴粪。

ECC && SM2

ECC和 SM2 都是是基于橢圓曲線的數(shù)學(xué)難題設(shè)計的通今。普遍的觀點認(rèn)為,橢圓曲線的難度高于大質(zhì)數(shù)難題肛根,160 位密鑰的 ECC 加密強度辫塌,相當(dāng)于 1088 位密鑰的 RSA。因為密鑰短派哲,所以相應(yīng)的計算量臼氨、消耗的內(nèi)存和帶寬也就少,加密解密的性能就上去了芭届,因此對于互聯(lián)網(wǎng)行業(yè)來講吸引力也是相當(dāng)大的储矩。而SM2除了加密強度和國際標(biāo)準(zhǔn)和ECC差不多以外感耙,還屬于國家所支持的非對稱加密算法。

需要注意的是持隧,非對稱加密的安全性上雖然可以滿足我們的需求即硼,但它卻存在這一個比較大的問題就是L:性能。由于非對稱加密在所需要的算法運算非常復(fù)雜屡拨,因此在性能上得不到很好的保證只酥。也正是由于這個原因,現(xiàn)在的TLS主要采用的是一種叫混合加密的方式來進(jìn)行加密呀狼。

混合加密

混合加密其實很簡單裂允,就是使用非對稱加密的方式,解決密鑰交換的問題哥艇,然后用隨機數(shù)產(chǎn)生對稱算法使用的會話密鑰绝编,在對其使用公鑰加密,并傳送給通信對象貌踏。通信對象拿到密文后用私鑰解開并取出會話密鑰十饥。這樣就是實現(xiàn)了堆成密鑰的安全交換了,后續(xù)就可以使用這個對稱密鑰來進(jìn)行對稱加密哩俭。

2.3 摘要算法(Digest Algorithm)

在前面我們有提到過安全的幾大要素绷跑,其中機密性我們可以通過上面的對稱加密 + 非對稱加密來解決。而在完整性方面凡资,我們則需要使用摘要算法來解決砸捏。

簡單理解,我們可以將摘要算法理解為一種特殊的壓縮算法隙赁,他可以將任意長度的數(shù)據(jù)壓縮成固定長度且獨一無二的摘要字符串垦藏,且這個加密的過程也是單向的,加密后的數(shù)據(jù)無法解密伞访,不能從摘要中反向推出原文掂骏。

學(xué)習(xí)資料:

https://time.geekbang.org/column/article/176569

https://time.geekbang.org/column/intro/189——安全篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市厚掷,隨后出現(xiàn)的幾起案子弟灼,更是在濱河造成了極大的恐慌,老刑警劉巖冒黑,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件田绑,死亡現(xiàn)場離奇詭異,居然都是意外死亡抡爹,警方通過查閱死者的電腦和手機掩驱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人欧穴,你說我怎么就攤上這事民逼。” “怎么了涮帘?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵拼苍,是天一觀的道長。 經(jīng)常有香客問我调缨,道長映屋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任同蜻,我火速辦了婚禮,結(jié)果婚禮上早处,老公的妹妹穿的比我還像新娘湾蔓。我一直安慰自己,他們只是感情好砌梆,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布默责。 她就那樣靜靜地躺著,像睡著了一般咸包。 火紅的嫁衣襯著肌膚如雪桃序。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天烂瘫,我揣著相機與錄音媒熊,去河邊找鬼。 笑死坟比,一個胖子當(dāng)著我的面吹牛芦鳍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播葛账,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼柠衅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了籍琳?” 一聲冷哼從身側(cè)響起菲宴,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎趋急,沒想到半個月后喝峦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡宣谈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年愈犹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡漩怎,死狀恐怖勋颖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勋锤,我是刑警寧澤饭玲,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站叁执,受9級特大地震影響茄厘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谈宛,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一次哈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吆录,春花似錦窑滞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撬槽,卻和暖如春此改,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背侄柔。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工共啃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暂题。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓勋磕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敢靡。 傳聞我的和親對象是個殘疾皇子挂滓,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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

  • 先放一張以太坊的架構(gòu)圖: 在學(xué)習(xí)的過程中主要是采用單個模塊了學(xué)習(xí)了解的,包括P2P,密碼學(xué)啸胧,網(wǎng)絡(luò)赶站,協(xié)議等。直接開...
    麻臉大叔閱讀 11,147評論 1 10
  • 目錄 一纺念、https概述 1. 什么是HTTP贝椿? 2. 什么是HTTPS? 3. SSL/TLS...
    出走的流星閱讀 12,775評論 4 27
  • 昨天順手把站點上了HTTPS陷谱,但是為什么要上HTTPS烙博,不能因為你瀏覽器給我顯示‘安全’瑟蜈,我就認(rèn)為他是安全的,還是...
    喵帕斯0_0閱讀 1,033評論 5 12
  • 原文鏈接:http://blog.jobbole.com/86660/ 1 前言 百度已經(jīng)于近日上線了全站 HTT...
    xlhzj閱讀 1,092評論 0 2
  • 我真得感到自己很榮幸渣窜,能夠有緣結(jié)緣137這個充滿愛和正能量的大家庭铺根,認(rèn)識很多家人,我也學(xué)到了很多知識乔宿。孩子通過讀經(jīng)...
    邯鄲如玉閱讀 319評論 0 3