HTTPS-SSL與對(duì)稱加密和非對(duì)稱加密(轉(zhuǎn)載)

作者: Damonare 原文鏈接SSL協(xié)議之?dāng)?shù)據(jù)加密過(guò)程詳解
同時(shí)推薦另一篇文章,兩篇結(jié)合著理解卸例,效果更好哦好乐!
https加密原理


SSL

只要你聽(tīng)過(guò)HTTPS,不可能沒(méi)聽(tīng)過(guò)SSL協(xié)議吧绰沥,SSL協(xié)議是一種安全協(xié)議篱蝇。對(duì)于互聯(lián)網(wǎng)協(xié)議沒(méi)有了解的童鞋可以參考博主另一篇博客:internet協(xié)議入門

HTTP+SSL = HTTPS

HTTPS之所以安全就是因?yàn)榧映至薙SL這個(gè)外掛來(lái)對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,那么具體的加密方法又是什么呢徽曲?

請(qǐng)聽(tīng)我娓娓道來(lái)零截。先看下面兩個(gè)概念:

  • 對(duì)稱加密

  • 非對(duì)稱加密

你知道上面兩個(gè)概念是什么意思么???

??OK秃臣,不管你懂不懂涧衙,我先用我的方式來(lái)給你解釋下:

親哪工,你作過(guò)弊么???不要告訴我在你漫長(zhǎng)的學(xué)生生涯里你沒(méi)作過(guò)弊(那你的學(xué)生生涯得多枯燥)弧哎,作弊我們常用的方法是啥雁比?(說(shuō)把答案寫在胳膊大腿紙條上的同學(xué)請(qǐng)你出去,謝謝??)當(dāng)然是加密了撤嫩!比如我出于人道主義偎捎,想要幫助小明同學(xué)作弊,首先考試前我們會(huì)約定好一個(gè)暗號(hào)來(lái)傳遞選擇題的答案序攘,摸頭發(fā)——A茴她,摸耳朵——B,咳嗽——C程奠,跺腳——D丈牢,于是一個(gè)加密方法就誕生了,這個(gè)加密方法只有我和小明知道瞄沙,老師雖然看我抓耳撓腮但他頂多把我當(dāng)成神經(jīng)病赡麦,并沒(méi)有直接證據(jù)說(shuō)我作弊。好帕识,這種我和小明知道泛粹,別人不知道的加密方法就是一種對(duì)稱加密算法,對(duì)稱加密算法也是我們?nèi)粘W畛R?jiàn)的加密算法。這種算法??只有一把肮疗,加密解密都用同一把鑰匙晶姊,一旦??泄露就全玩完了。

隨時(shí)時(shí)代的進(jìn)步伪货,人們發(fā)現(xiàn)實(shí)際上加密和解密不用同一把??也是可以的们衙,只要加密和解密的兩把??存在某種關(guān)系就行了。

于是碱呼,層出不窮的非對(duì)稱加密算法就被研究了出來(lái)蒙挑,那么它基于什么樣的道理呢?請(qǐng)嚴(yán)格記住下面這句話:

將a和b相乘得出乘積c很容易愚臀,但要是想要通過(guò)乘積c推導(dǎo)出a和b極難忆蚀。即對(duì)一個(gè)大數(shù)進(jìn)行因式分解極難

聽(tīng)不懂因式分解的童鞋先去面壁5分鐘,這么多年數(shù)學(xué)白學(xué)了姑裂?甩給你維基百科鏈接馋袜,自行補(bǔ)課??:因式分解

好的,我們繼續(xù)舶斧,非對(duì)稱加密算法就多了兩個(gè)概念——公鑰c和私鑰b欣鳖。

用法如下:公鑰加密的密文只能用私鑰解密,私鑰加密的密文只能用公鑰解密茴厉。

公鑰我們可以隨便公開(kāi)泽台,因?yàn)閯e人知道了公鑰毫無(wú)用處什荣,經(jīng)過(guò)公鑰加密后的密文只能通過(guò)私鑰來(lái)解密。而想要通過(guò)公鑰推導(dǎo)出a和b極難怀酷。但很明顯的是稻爬,使用非對(duì)稱加密效率不如對(duì)稱加密,因?yàn)榉菍?duì)稱加密需要有計(jì)算兩個(gè)密鑰的過(guò)程胰坟。

我們通過(guò)密碼學(xué)中的兩個(gè)典型的愛(ài)麗絲和鮑勃人物來(lái)解釋這個(gè)非對(duì)稱加密算法的過(guò)程:

客戶端叫做愛(ài)麗絲因篇,服務(wù)器叫做鮑勃泞辐。

愛(ài)麗絲: 鮑勃我要給你發(fā)送一段消息笔横,把你的公鑰給我吧;

鮑勃: OK咐吼,這是我的公鑰:234nkjdfdhjbg324**吹缔;

愛(ài)麗絲:收到公鑰,我給你發(fā)送的消息經(jīng)過(guò)公鑰加密之后是這樣的:##@#@!$%*(@;

鮑勃:好的锯茄,收到了厢塘,親,我來(lái)用我的私鑰解密看下你真正要給我發(fā)送的內(nèi)容肌幽;

上述過(guò)程就是一個(gè)非對(duì)稱加密的過(guò)程晚碾,這個(gè)過(guò)程安全么?好像是很安全喂急,即使查理(通信中的第三位參加者)截取了密文和公鑰沒(méi)有私鑰還是沒(méi)法得到明文格嘁。??非對(duì)稱加密的典型代表算法:RSA算法,筆者在另一篇博客:RSA算法詳解中也有詳細(xì)的介紹廊移。

可如果第三者查理發(fā)送給愛(ài)麗絲他自己的公鑰糕簿,然后愛(ài)麗絲用查理給的公鑰加密密文發(fā)送了出去,查理再通過(guò)自己的私鑰解密狡孔,這不就泄露信息了么懂诗?我們需要想個(gè)辦法讓愛(ài)麗絲判斷這個(gè)公鑰到底是不是鮑勃發(fā)來(lái)的。

于是就有了數(shù)字證書(shū)的概念:

數(shù)字證書(shū)就是互聯(lián)網(wǎng)通訊中標(biāo)志通訊各方身份信息的一串?dāng)?shù)字苗膝,提供了一種在Internet上驗(yàn)證通信實(shí)體身份的方式殃恒,數(shù)字證書(shū)不是數(shù)字身份證,而是身份認(rèn)證機(jī)構(gòu)蓋在數(shù)字身份證上的一個(gè)章或尤杞摇(或者說(shuō)加在數(shù)字身份證上的一個(gè)簽名)芋类。

??上面官方的解釋看起來(lái)就頭大。其實(shí)它就是一段信息界阁。

數(shù)字證書(shū)內(nèi)容大體如下:

  • 簽發(fā)證書(shū)的機(jī)構(gòu)
  • 鮑勃的加密算法
  • 鮑勃所使用的Hash算法
  • 鮑勃的公鑰
  • 證書(shū)到期時(shí)間
  • 等等

數(shù)字證書(shū)是由權(quán)威機(jī)構(gòu)——CA機(jī)構(gòu)統(tǒng)一來(lái)進(jìn)行發(fā)行侯繁,我們絕對(duì)信任這個(gè)機(jī)構(gòu),至于CA機(jī)構(gòu)的安全性…反正99.99%之下都是安全的泡躯。??

為了防止中間有人對(duì)證書(shū)內(nèi)容進(jìn)行更改贮竟,有了一個(gè)數(shù)字簽名的概念丽焊,所謂的數(shù)字簽名就是把以上所有的內(nèi)容做一個(gè)Hash操作,得到一個(gè)固定長(zhǎng)度然后再傳給鮑勃咕别。然而如果別人截取了這個(gè)證書(shū)然后更改內(nèi)容技健,同時(shí)生成了新的Hash值那怎么辦?處于這個(gè)考慮惰拱,CA機(jī)構(gòu)在頒發(fā)這個(gè)證書(shū)的時(shí)候會(huì)用自己的私鑰將Hash值加密雌贱,從而防止了數(shù)字證書(shū)被篡改。

好偿短,我們來(lái)梳理下整個(gè)過(guò)程:

  • 第一步:首先欣孤,當(dāng)愛(ài)麗絲開(kāi)啟一個(gè)新的瀏覽器第一次去訪問(wèn)鮑勃的時(shí)候,會(huì)先讓愛(ài)麗絲安裝一個(gè)數(shù)字證書(shū)昔逗,這個(gè)數(shù)字證書(shū)里包含的主要信息就是CA機(jī)構(gòu)的公鑰降传。
  • 第二步:鮑勃發(fā)送來(lái)了CA機(jī)構(gòu)頒發(fā)給自己的數(shù)字證書(shū),愛(ài)麗絲通過(guò)第一步中已經(jīng)得到的公鑰解密CA用私鑰加密的Hash-a(這個(gè)過(guò)程就是非對(duì)稱加密)勾怒,然后再用傳遞過(guò)來(lái)的HASH算法生成一個(gè)Hash-b婆排,如果Hash-a === Hash-b就說(shuō)明認(rèn)證通過(guò),確實(shí)是鮑勃發(fā)過(guò)來(lái)的笔链。

如上段只,是整個(gè)數(shù)字證書(shū)的使用過(guò)程就是這樣的。

多說(shuō)一句鉴扫,非對(duì)稱加密實(shí)際應(yīng)用的例子除了SSL還有很多赞枕,比如SSH電子簽名等幔妨;

如上提到的鹦赎,非對(duì)稱加密計(jì)算量很大,效率不如對(duì)稱加密误堡,我們打開(kāi)網(wǎng)頁(yè)最注重的是啥古话?是速度!是速度锁施!是速度陪踩!??????

這點(diǎn)SSL就玩的很巧妙了??,通信雙方通過(guò)對(duì)稱加密來(lái)加密密文悉抵,然后使用非對(duì)稱加密的方式來(lái)傳遞對(duì)稱加密所使用的密鑰肩狂。這樣效率和安全就都能保證了。

SSL協(xié)議的握手過(guò)程

先用語(yǔ)言來(lái)闡述下:

  1. 第一步:愛(ài)麗絲給出支持SSL協(xié)議版本號(hào)姥饰,一個(gè)客戶端隨機(jī)數(shù)(Client random傻谁,請(qǐng)注意這是第一個(gè)隨機(jī)數(shù)),客戶端支持的加密方法等信息列粪;
  2. 第二步:鮑勃收到信息后审磁,確認(rèn)雙方使用的加密方法谈飒,并返回?cái)?shù)字證書(shū),一個(gè)服務(wù)器生成的隨機(jī)數(shù)(Server random态蒂,注意這是第二個(gè)隨機(jī)數(shù))等信息杭措;
  3. 第三步:愛(ài)麗絲確認(rèn)數(shù)字證書(shū)的有效性,然后生成一個(gè)新的隨機(jī)數(shù)(Premaster secret)钾恢,然后使用數(shù)字證書(shū)中的公鑰手素,加密這個(gè)隨機(jī)數(shù),發(fā)給鮑勃瘩蚪。
  4. 第四步:鮑勃使用自己的私鑰泉懦,獲取愛(ài)麗絲發(fā)來(lái)的隨機(jī)數(shù)(即Premaster secret);(第三募舟、四步就是非對(duì)稱加密的過(guò)程了)
  5. 第五步:愛(ài)麗絲和鮑勃通過(guò)約定的加密方法(通常是AES算法)祠斧,使用前面三個(gè)隨機(jī)數(shù)闻察,生成對(duì)話密鑰拱礁,用來(lái)加密接下來(lái)的通信內(nèi)容;

俗話說(shuō)一圖勝前言辕漂,我畫(huà)了一個(gè)圖來(lái)說(shuō)明這個(gè)過(guò)程:

SSL協(xié)議握手過(guò)程.jpg

OK呢灶,整個(gè)進(jìn)行數(shù)據(jù)加密的過(guò)程結(jié)束。我們?cè)賮?lái)回憶下內(nèi)容:

  • CA機(jī)構(gòu)頒發(fā)數(shù)字證書(shū)給鮑勃钉嘹;
  • 愛(ài)麗絲和鮑勃進(jìn)行SSL握手鸯乃,愛(ài)麗絲通過(guò)數(shù)字證書(shū)確定鮑勃的身份;
  • 愛(ài)麗絲和鮑勃傳遞三個(gè)隨機(jī)數(shù)跋涣,第三個(gè)隨機(jī)數(shù)通過(guò)非對(duì)稱加密算法進(jìn)行傳遞缨睡;
  • 愛(ài)麗絲和鮑勃通過(guò)一個(gè)對(duì)稱加密算法生成一個(gè)對(duì)話密鑰,加密接下來(lái)的通信內(nèi)容陈辱。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奖年,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沛贪,更是在濱河造成了極大的恐慌陋守,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件利赋,死亡現(xiàn)場(chǎng)離奇詭異水评,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)媚送,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門中燥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人塘偎,你說(shuō)我怎么就攤上這事疗涉∮姆祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵博敬,是天一觀的道長(zhǎng)友浸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)偏窝,這世上最難降的妖魔是什么收恢? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮祭往,結(jié)果婚禮上伦意,老公的妹妹穿的比我還像新娘。我一直安慰自己硼补,他們只是感情好驮肉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著已骇,像睡著了一般离钝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上褪储,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天卵渴,我揣著相機(jī)與錄音,去河邊找鬼鲤竹。 笑死浪读,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辛藻。 我是一名探鬼主播碘橘,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吱肌!你這毒婦竟也來(lái)了痘拆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岩榆,失蹤者是張志新(化名)和其女友劉穎错负,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體勇边,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犹撒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粒褒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片识颊。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出祥款,到底是詐尸還是另有隱情清笨,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布刃跛,位于F島的核電站抠艾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桨昙。R本人自食惡果不足惜检号,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛙酪。 院中可真熱鬧齐苛,春花似錦、人聲如沸桂塞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)阁危。三九已至玛痊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間欲芹,已是汗流浹背卿啡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工吟吝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留菱父,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓剑逃,卻偏偏與公主長(zhǎng)得像浙宜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蛹磺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348