前言
總括: 本文詳細講述了SSL協議中的數據加密的過程,數字證書、對稱加密、非對稱加密和SSL握手過程等概念。www.emoneybtc.com
SSL
只要你聽過HTTPS,不可能沒聽過SSL協議吧,SSL協議是一種安全協議。對於互聯網協議沒有了解的童鞋可以參考博主另一篇博客:internet協議入門
HTTP+SSL = HTTPS
HTTPS之所以安全就是因為加持了SSL這個外掛來對傳輸的數據進行加密,那麼具體的加密方法又是什麼呢?
請聽我娓娓道來。先看下面兩個概念:
對稱加密非對稱加密
你知道上面兩個概念是什麼意思麼??
OK,不管你懂不懂,我先用我的方式來給你解釋下:
親,你作過弊麼??不要告訴我在你漫長的學生生涯裡你沒作過弊(那你的學生生涯得多枯燥),作弊我們常用的方法是啥?(說把答案寫在胳膊大腿紙條上的同學請你出去,謝謝?) 當然是加密了!比如我出於人道主義,想要幫助小明同學作弊,首先考試前我們會約定好一個暗號來傳遞選擇題的答案,摸頭發——A,摸耳朵——B,咳嗽——C,跺腳——D,於是一個加密方法就誕生了。
這個加密方法只有我和小明知道,老師雖然看我抓耳撓腮但他頂多把我當成神經病,並沒有直接證據說我作弊。好,這種我和小明知道,別人不知道的加密方法就是一種對稱加密算法,對稱加密算法也是我們日常最常見的加密算法。這種算法?只有一把,加密解密都用同一把鑰匙,一旦?洩露就全玩完了。
隨時時代的進步,人們發現實際上加密和解密不用同一把?也是可以的,只要加密和解密的兩把?存在某種關系就行了。
於是,層出不窮的非對稱加密算法就被研究了出來,那麼它基於什麼樣的道理呢?請嚴格記住下面這句話:
將a和b相乘得出乘積c很容易,但要是想要通過乘積c推導出a和b極難。即對一個大數進行因式分解極難。
聽不懂因式分解的童鞋先去面壁5分鐘,這麼多年數學白學了?甩給你維基百科鏈接,自行補課:因式分解
好的,我們繼續,非對稱加密算法就多了兩個概念——公鑰c和私鑰b。
用法如下:公鑰加密的密文只能用私鑰解密,私鑰加密的密文只能用公鑰解密。
公鑰我們可以隨便公開,因為別人知道了公鑰毫無用處,經過公鑰加密後的密文只能通過私鑰來解密。而想要通過公鑰推導出a和b極難。但很明顯的是,使用非對稱加密效率不如對稱加密,因為非對稱加密需要有計算兩個密鑰的過程。
我們通過密碼學中的兩個典型的愛麗絲和鮑勃人物來解釋這個非對稱加密算法的過程:
客戶端叫做愛麗絲,服務器叫做鮑勃。
愛麗絲: 鮑勃我要給你發送一段消息,把你的公鑰給我吧;
鮑勃: OK,這是我的公鑰:234nkjdfdhjbg324**;
愛麗絲:收到公鑰,我給你發送的消息經過公鑰加密之後是這樣的:#$#$@#@!$%*(@;
鮑勃:好的,收到了,親,我來用我的私鑰解密看下你真正要給我發送的內容;
上述過程就是一個非對稱加密的過程,這個過程安全麼?好像是很安全,即使查理(通信中的第三位參加者)截取了密文和公鑰沒有私鑰還是沒法得到明文。
可如果第三者查理發送給愛麗絲他自己的公鑰,然後愛麗絲用查理給的公鑰加密密文發送了出去,查理再通過自己的私鑰解密,這不就洩露信息了麼?我們需要想個辦法讓愛麗絲判斷這個公鑰到底是不是鮑勃發來的。於是就有了數字證書的概念。