本講詳細講述了SSL協議中的數據加密的過程,數字證書、對稱加密、非對稱加密和SSL握手過程等概念。算法
只要你聽過HTTPS,不可能沒聽過SSL協議吧,SSL協議是一種安全協議。對於互聯網協議沒有了解的童鞋能夠參考博主另外一篇博客:internet協議入門瀏覽器
HTTP+SSL = HTTPS安全
HTTPS之因此安全就是由於加持了SSL這個外掛來對傳輸的數據進行加密,那麼具體的加密方法又是什麼呢?服務器
請聽我娓娓道來。先看下面兩個概念:dom
對稱加密區塊鏈
非對稱加密加密
你知道上面兩個概念是什麼意思麼??.net
OK,無論你懂不懂,我先用個人方式來給你解釋下:開發
親,你做過弊麼??不要告訴我在你漫長的學生生涯裏你沒做過弊(那你的學生生涯得多枯燥),做弊咱們經常使用的方法是啥?(說把答案寫在胳膊大腿紙條上的同窗請你出去,謝謝?) 固然是加密了!好比我出於人道主義,想要幫助小明同窗做弊,首先考試前咱們會約定好一個暗號來傳遞選擇題的答案,摸頭髮——A,摸耳朵——B,咳嗽——C,跺腳——D,因而一個加密方法就誕生了。rem
這個加密方法只有我和小明知道,老師雖然看我抓耳撓腮但他頂多把我當成神經病,並無直接證聽說我做弊。好,這種我和小明知道,別人不知道的加密方法就是一種對稱加密算法,對稱加密算法也是咱們平常最多見的加密算法。這種算法?只有一把,加密解密都用同一把鑰匙,一旦?泄露就全玩完了。
隨時時代的進步,人們發現實際上加密和解密不用同一把?也是能夠的,只要加密和解密的兩把?存在某種關係就好了。
因而,層出不窮的非對稱加密算法就被研究了出來,那麼它基於什麼樣的道理呢?請嚴格記住下面這句話:
將a和b相乘得出乘積c很容易,但要是想要經過乘積c推導出a和b極難。即對一個大數進行因式分解極難。
聽不懂因式分解的童鞋先去面壁5分鐘,這麼多年數學白學了?甩給你維基百科連接,自行補課:因式分解
好的,咱們繼續,非對稱加密算法就多了兩個概念——公鑰c和私鑰b。
用法以下:公鑰加密的密文只能用私鑰解密,私鑰加密的密文只能用公鑰解密。
公鑰咱們能夠隨便公開,由於別人知道了公鑰毫無用處,通過公鑰加密後的密文只能經過私鑰來解密。而想要經過公鑰推導出a和b極難。但很明顯的是,使用非對稱加密效率不如對稱加密,由於非對稱加密須要有計算兩個密鑰的過程。
咱們經過密碼學中的兩個典型的愛麗絲和鮑勃人物來解釋這個非對稱加密算法的過程:
客戶端叫作愛麗絲,服務器叫作鮑勃。
愛麗絲: 鮑勃我要給你發送一段消息,把你的公鑰給我吧;
鮑勃: OK,這是個人公鑰:234nkjdfdhjbg324**;
愛麗絲:收到公鑰,我給你發送的消息通過公鑰加密以後是這樣的:#$#$@#@!$%*(@;
鮑勃:好的,收到了,親,我來用個人私鑰解密看下你真正要給我發送的內容;
上述過程就是一個非對稱加密的過程,這個過程安全麼?好像是很安全,即便查理(通訊中的第三位參加者)截取了密文和公鑰沒有私鑰仍是無法獲得明文。
可若是第三者查理髮送給愛麗絲他本身的公鑰,而後愛麗絲用查理給的公鑰加密密文發送了出去,查理再經過本身的私鑰解密,這不就泄露信息了麼?咱們須要想個辦法讓愛麗絲判斷這個公鑰究竟是不是鮑勃發來的。因而就有了數字證書的概念。
數字證書就是互聯網通信中標誌通信各方身份信息的一串數字,提供了一種在Internet上驗證通訊實體身份的方式,數字證書不是數字身份證,而是身份認證機構蓋在數字身份證上的一個章或印(或者說加在數字身份證上的一個簽名)。
上面官方的解釋看起來就頭大。其實它就是一段信息。
數字證書內容大致以下:
簽發證書的機構
鮑勃的加密算法
鮑勃所使用的Hash算法
鮑勃的公鑰
證書到期時間
等等
數字證書是由權威機構——CA機構統一來進行發行,咱們絕對信任這個機構,至於CA機構的安全性…反正99.99%之下都是安全的。
爲了防止中間有人對證書內容進行更改,有了一個數字簽名的概念,所謂的數字簽名就是把以上全部的內容作一個Hash操做,獲得一個固定長度而後再傳給鮑勃。然而若是別人截取了這個證書而後更改內容,同時生成了新的Hash值那怎麼辦?處於這個考慮,CA機構在頒發這個證書的時候會用本身的私鑰將Hash值加密,從而防止了數字證書被篡改。
好,咱們來梳理下整個過程:
第一步:首先,當愛麗絲開啓一個新的瀏覽器第一次去訪問鮑勃的時候,會先讓愛麗絲安裝一個數字證書,這個數字證書裏包含的主要信息就是CA機構的公鑰。
第二步:鮑勃發送來了CA機構頒發給本身的數字證書,愛麗絲經過第一步中已經獲得的公鑰解密CA用私鑰加密的Hash-a(這個過程就是非對稱加密),而後再用傳遞過來的HASH算法生成一個Hash-b,若是Hash-a === Hash-b就說明認證經過,確實是鮑勃發過來的。
如上,是整個數字證書的使用過程就是這樣的。
多說一句,非對稱加密實際應用的例子除了SSL還有不少,好比SSH、電子簽名等;
如上提到的,非對稱加密計算量很大,效率不如對稱加密,咱們打開網頁最注重的是啥?是速度!是速度!是速度!???
這點SSL就玩的很巧妙了,通訊雙方經過對稱加密來加密密文,而後使用非對稱加密的方式來傳遞對稱加密所使用的密鑰。這樣效率和安全就都能保證了。
先用語言來闡述下:
第一步:愛麗絲給出支持SSL協議版本號,一個客戶端隨機數(Client random,請注意這是第一個隨機數),客戶端支持的加密方法等信息;
第二步:鮑勃收到信息後,確認雙方使用的加密方法,並返回數字證書,一個服務器生成的隨機數(Server random,注意這是第二個隨機數)等信息;
第三步:愛麗絲確認數字證書的有效性,而後生成一個新的隨機數(Premaster secret),而後使用數字證書中的公鑰,加密這個隨機數,發給鮑勃。
第四步:鮑勃使用本身的私鑰,獲取愛麗絲髮來的隨機數(即Premaster secret);(第3、四步就是非對稱加密的過程了)
第五步:愛麗絲和鮑勃經過約定的加密方法(一般是AES算法),使用前面三個隨機數,生成對話密鑰,用來加密接下來的通訊內容;
俗話說一圖勝千言,我畫了一個圖來講明這個過程:
OK,整個進行數據加密的過程結束。咱們再來回憶下內容:
CA機構頒發數字證書給鮑勃;
愛麗絲和鮑勃進行SSL握手,愛麗絲經過數字證書肯定鮑勃的身份;
愛麗絲和鮑勃傳遞三個隨機數,第三個隨機數經過非對稱加密算法進行傳遞;
愛麗絲和鮑勃經過一個對稱加密算法生成一個對話密鑰,加密接下來的通訊內容。
內容來源:知乎
原文做者:Damonare
原文連接:http://t.cn/RHuMxI7
Blockathon|48小時極客競賽,區塊鏈馬拉松等你挑戰(成都)
時間:2018年9月14-16日
地點:成都高新區天府五街200號菁蓉國際廣場2號樓A座12樓中韓互聯網+新技術孵化器
招募50名開發者(識別下圖二維碼或點擊「閱讀原文」便可報名)
報名費100元爲參賽押金,參賽者我的緣由不能到場參加活動概不退款;參賽者全程參與活動,待活動結束後現場退還。9月14日18:00開始第一次簽到,9月15日和16日天天早上都要記得簽到哦。
主辦方免費提供2天的食物、飲料,併爲每一位參會者準備一件文化衫