戲說SSL安全連接技術原理
SSL(Secure Socket Layer),中文直譯為安全插接層協(xié)議層,聽不明白?說白了就是在原有的協(xié)議上加上一層加密以及認證這類東西,目的是保證信息安全。舉個簡單的例子我給你發(fā)一串數(shù)據(jù),不用SSL,被邪惡的第三方將其截獲,就能看出我的意圖,如果加上不帶認證的SSL將數(shù)據(jù)加密,即使被第三方得到,他拿到的也是無法看懂的數(shù)據(jù),一點用都沒有。這只是一個比較淺顯的比方,可能有人問:我把我要發(fā)送的數(shù)據(jù)寫一個加密算法加密后再發(fā)出去,這算不算SSL呢?我無法給出正確答案,請直接閱讀下面的文字。
SSL有兩個最核心的技術,一個是加密,一個是認證。認證是比較深層次的東西(至少我這么認為),暫且不說認證,單說加密。
廣義上的SSL是包含只把信息加密的這種作法,只是從字面上來講。如果嚴格遵循SSL提出者寫的規(guī)范,這種加密的作法也有限定,用什么樣的加密方法是有規(guī)定。那如果有人要問SSL用的是什么加密算法?我會反問你,你知道多少種算法呢?看著他們茫然的眼神,我心里暗暗笑,開個玩笑而已,下面簡單介紹一下加密方面的知識。
加密共分為帶鑰匙加密和不帶鑰匙加密,這是以我的習慣劃分。不帶鑰匙加密好理解,就是一個算法,不依賴于任何外部數(shù)據(jù),這種算法不好的地方是一旦被破解就不能使用,就相當于我知道你是用這種方法加密,那么你的信息也毫無安全可言,也就不好在網(wǎng)絡連接這方面使用。
另外一種是帶鑰匙加密,也就是說破解的人既要知道是什么算法也要知道鑰匙是什么,只知道其一不能破解。一旦破解,再換一個鑰匙,還可以繼續(xù)用,這個鑰匙就是參與加密算法的外部數(shù)據(jù)。
那么,帶鑰匙加密的算法又分為兩種,一種是對稱加密的算法,另一種是不對稱加密的算法。對稱是指加密用的什么鑰匙,解密也得用這個鑰匙。不對稱加密是指加密用的是一種鑰匙,解密用的是另外一種鑰匙。SSL用的就是不對稱加密算法。具體用的什么,好像還不止一種,有興趣的讀者可以查詢相關資料,這里只是簡介,將大概原理介紹一下。
假如通信雙方甲和乙,甲給乙發(fā)信息,乙給甲發(fā)信息,如何確保第三方看不到(或看不懂)他們之間發(fā)送的數(shù)據(jù)呢?采用不對稱加密。甲給乙發(fā)信,甲要給它加密,用一個鑰匙加好了,好比現(xiàn)在發(fā)的內(nèi)容是火星文,誰也看不懂,那么乙接收了,要想知道是什么內(nèi)容,就得解密。
前面說這是不對稱加密:一,乙必然要知道這個算法;二,乙必然要知道解密所需要的鑰匙。這個鑰匙哪里來的,甲給的?不是。解密的鑰匙遠比加密的鑰匙重要得多,只能自己知道,別人,哪怕是甲方也不行,因為一旦你的解密鑰匙讓別人知道,加密算法又是公開,那么就等于所有發(fā)給你的信息內(nèi)容也就全部公開了。所以解密密鑰只能自己知道。
由于不對稱加密的兩個密鑰是一對,所以用什么鑰匙解密,就得用相對應的鑰匙加密,這話雖然反過來說比較通順一點,但都是一個意思。這么說來,先前甲方加密數(shù)據(jù)所用的鑰匙和乙方解密數(shù)據(jù)所用的鑰匙是一對,是由乙方來制作。現(xiàn)在清楚了,乙方產(chǎn)生了一個鑰匙對,把其中一個告訴甲方,讓他用來加密,另一個放在自家的保險柜里,只有自己知道,用來解密甲方傳來的信息。甲給乙發(fā)信是這樣的,乙給甲發(fā)信也一樣,用甲給他的鑰匙加密,發(fā)給甲,甲再用自己的鑰匙解密。這就是一個公鑰,一個私鑰。公鑰發(fā)布出去,別人用來加密,私鑰自己拿著用來解密。
有人問公鑰別人知道了,會不會被人推算出私鑰,我可以這么回答,會,只是時間的問題。你說,時間不是問題,我可以等。我告訴你,問題是你沒那么多時間等。
破解不對稱加密,可簡可繁,是根據(jù)密鑰的長短來決定,密鑰越短,破解時間越短,密鑰越長,破解時間越長。一個足夠長的密鑰,等破解出來要等到天荒地老,這是現(xiàn)在的情況,也許過些年這種情況會有改觀。
說完加密,再說認證,認證相對加密來說會復雜一些,還可能說不太清楚,這里一樣只是對原理做一些簡單介紹,認證,打個比方說,你如何證明你的身份,用身份證,什么?你用一個假的身份證,那么我再查你的電子身份證等等。我來調(diào)查你的身份,這個過程就叫認證。認證是為了防止有人假冐成別人發(fā)信息。
再回顧一下,甲和乙發(fā)信息,甲先把公鑰發(fā)給乙,讓乙用來加密信息,這時,如果有一個第三方丙,截獲到公鑰,則他就可以用甲的公鑰加密信息,并且假冒成乙給甲發(fā)信。如果甲在接收乙的公鑰時要求乙提供“身份證”,術語叫證書,那丙就傻眼了。
這種證書是由一些機構簽發(fā),這些機構被稱為證書頒發(fā)機構,這些機構被人信任,證書發(fā)給你時,還是經(jīng)過這機構簽名,就像微軟頒發(fā)給你MVP證書時上面有比爾蓋茨的簽名一樣,不同的是這里是數(shù)字簽名。關于數(shù)字簽名,又是一套很復雜的理論,這里暫不表露。有數(shù)字簽名之后,證書基本上就不能造假。又有人問,如果證書頒發(fā)機構發(fā)給你一個錯誤的證書怎么辦?這是個很嚴肅的問題,責任要由證書頒發(fā)機構承擔。當甲方要求乙出示證書后,乙把證書提交上去,上面有頒發(fā)機構的名字和簽名,也有乙的名字,這樣甲就可以放心地和乙交流,這樣第三方就無從插足。
甲和乙互發(fā)信息聊得火爆,第三方丙即使截獲信息也看不懂,但他不甘寂寞,使出最后一招--篡改。這是個損人不利已的活,對付這種搗蛋的人,可以使用哈希值的辦法,俗稱電子摘要。固定的內(nèi)容對應固定的電子摘要,當通信內(nèi)容被篡改后,接收方再計算一次電子摘要,生成出來的就和原來的對不上了,這不就發(fā)現(xiàn)內(nèi)容被篡改了嗎?
總之SSL利用很多對付監(jiān)聽、偽造和篡改等行為的技術,來保障網(wǎng)絡雙方安全地交流。目前隨著監(jiān)聽與反監(jiān)聽、偽造和反偽造、篡改與反篡改技術的不斷進步,SSL技術也在不斷發(fā)展,兩方面是一對不可調(diào)和的矛盾,卻起到互相促進,共同發(fā)展的作用。表面上十分平靜的互聯(lián)網(wǎng),這里的戰(zhàn)爭悄無聲息卻異常激烈。
文章版權歸西部工控xbgk所有,未經(jīng)許可不得轉載。