放在李云龍身上,SSL/TLS協(xié)議原理可以這么解釋
在電視劇《亮劍》片尾,有這么一個(gè)劇情,李云龍長(zhǎng)期與田雨分居,張白鹿趁虛而入,試圖搶走李云龍。
突然發(fā)現(xiàn),這一段可以用來(lái)解釋SSL/TLS原理,再完美不過(guò)了。
假如老李長(zhǎng)命百歲,張白鹿賊心不死,田雨成了一名計(jì)算機(jī)天才,事情會(huì)怎么發(fā)展呢?
由于工作的關(guān)系,李云龍和田雨長(zhǎng)期分居,不過(guò)現(xiàn)在好了,有了計(jì)算機(jī),彼此雖然不能見(jiàn)面,但可以通過(guò)網(wǎng)絡(luò),進(jìn)行聊天,傳輸一些數(shù)據(jù)。
張白鹿發(fā)現(xiàn)了李云龍和田雨在網(wǎng)絡(luò)上聊天,她想,畢竟兩人沒(méi)有面對(duì)面聊天,能不能篡改他們之間的聊天內(nèi)容呢?
果不其然,張白鹿意外發(fā)現(xiàn),可以把田雨傳輸給李云龍的數(shù)據(jù)攔下來(lái),篡改后再發(fā)給李云龍。
“太好了,李云龍和田雨離定了!”
這時(shí)張白鹿就發(fā)動(dòng)的,便是中間人攻擊(Man-in-the-MiddleAttack)
后來(lái)李云龍和田雨發(fā)現(xiàn)不對(duì)勁,傳輸?shù)臄?shù)據(jù)內(nèi)容,會(huì)被張白鹿篡改,但田雨和張白鹿已經(jīng)撕破臉皮,也找不到她,怎么辦?為了應(yīng)對(duì)張白鹿的攻擊,李云龍和田雨開始對(duì)數(shù)據(jù)進(jìn)行加密。
田雨做了兩把一模一樣的鑰匙,趁著休息日,到李云龍的指揮部,把其中一把鑰匙交給了他。由于鑰匙只有他們兩人知道,所以鑰匙也被稱為“密鑰。”
當(dāng)田雨要給李云龍發(fā)送數(shù)據(jù)前,先用密鑰對(duì)數(shù)據(jù)進(jìn)行加密,待李云龍收到后,再使用密鑰對(duì)數(shù)據(jù)進(jìn)行解密。
密鑰沒(méi)有通過(guò)網(wǎng)絡(luò)傳遞,所以張白鹿無(wú)法獲取,即便傳輸?shù)臄?shù)據(jù)被攔截,數(shù)據(jù)內(nèi)容也無(wú)法被篡改。萬(wàn)一哪天張白鹿真的獲得了密鑰,也沒(méi)關(guān)系,依樣畫葫蘆,再送給李云龍一個(gè)新的密鑰就好了。
李云龍和田雨使用相同的密鑰,所以這種加密算法被稱之為對(duì)稱加密算法。
這樣一來(lái),張白鹿的詭計(jì)落了空,無(wú)法竊取他們倆的數(shù)據(jù)了。
過(guò)了很長(zhǎng)時(shí)間,技術(shù)不斷發(fā)展,計(jì)算機(jī)計(jì)算速度越來(lái)越來(lái)快。張白鹿尋思,能不能暴力破解密鑰?
還真的成功了!田雨設(shè)計(jì)的密鑰長(zhǎng)度只有56bit,在以前不可能被暴力破解,現(xiàn)在計(jì)算速度快,幾天時(shí)間便輕輕松松搞定了!
于是,張白鹿又開始監(jiān)聽(tīng)和篡改李云龍和田雨之間傳輸?shù)臄?shù)據(jù)。
怎么辦?田雨能想到的第一個(gè)辦法,是增加密鑰長(zhǎng)度,直接把密鑰長(zhǎng)度增加至256bit,這樣一來(lái),張白鹿不可能通過(guò)暴力破解的方法,破解密鑰了。
好景不長(zhǎng),李云龍?jiān)缇驼J(rèn)識(shí)到讀書的重要性,現(xiàn)在要出國(guó)留學(xué),不可能再和田雨面對(duì)面交換密鑰,而且有時(shí)候田雨還需要和其他人溝通交流,不可能跟那么多人私下見(jiàn)面,商量一個(gè)密鑰。
有什么辦法,可以既不見(jiàn)面,又能保證數(shù)據(jù)不被張白鹿竊取和篡改呢?
聰明的田雨又想到了一個(gè)辦法。通過(guò)特定的算法,生成一個(gè)密鑰對(duì)(含一個(gè)公鑰和一個(gè)私鑰),同時(shí)也告訴李云龍生成一個(gè)密鑰對(duì),公鑰均對(duì)外公開,私鑰自己留著。
當(dāng)田雨要向李云龍發(fā)送數(shù)據(jù)時(shí),先用私鑰加密hash值,,再用李云龍的公鑰加密數(shù)據(jù),數(shù)據(jù)到達(dá)李云龍后,李云龍用自己的私鑰解密數(shù)據(jù),最后用田雨的公鑰解密hash值,對(duì)比兩個(gè)hash值,即可驗(yàn)證數(shù)據(jù)的完整性。
由于李云龍和田雨用不同密鑰解密,因此這種算法被稱為非對(duì)稱加密算法。
有了非對(duì)稱加密,張白鹿竊取和篡改數(shù)據(jù)難度提高了不少,但她賊心不死,鉆研了幾天后,又找到了新的竊密方法。
既然李云龍和田雨要交換公鑰,那攔截公鑰,換成自己的不就行了?
田雨要給李云龍發(fā)送消息時(shí),用自己的私鑰加密了數(shù)據(jù)的hash值,之后用張白鹿的公鑰加密數(shù)據(jù)。張白鹿攔截后,便能使用自己的私鑰解密數(shù)據(jù),這時(shí)數(shù)據(jù)的內(nèi)容就能看到了!
這樣一來(lái),張白鹿只要篡改完數(shù)據(jù),再用自己的私鑰加密hash值、用李云龍的公鑰加密數(shù)據(jù)發(fā)給李云龍。李云龍還以為真是田雨發(fā)的數(shù)據(jù),其實(shí)這些數(shù)據(jù)已經(jīng)被張白鹿篡改過(guò)了。
一切又回到了原點(diǎn)。
這時(shí)候,田雨找到了師長(zhǎng),想讓師長(zhǎng)做保。
師長(zhǎng)知道田雨的困難后,對(duì)田雨說(shuō):“沒(méi)關(guān)系,我來(lái)做證人,保證公鑰的真實(shí)性。”
于是,李云龍和田雨在傳輸數(shù)據(jù)前,會(huì)把自己的公鑰和一些其他信息交給師長(zhǎng),師長(zhǎng)用自己的私鑰加密數(shù)據(jù),加密完的數(shù)據(jù)成為數(shù)字證書,證書包含了師長(zhǎng)的公鑰。
當(dāng)李云龍收到田雨傳遞過(guò)來(lái)的師長(zhǎng)加密之后的數(shù)字證書后,李云龍?jiān)偻ㄟ^(guò)師長(zhǎng)發(fā)布的證書,來(lái)解密田雨的數(shù)字證書,最終獲得田雨的公鑰。
問(wèn)題又來(lái)了,怎么保證師長(zhǎng)的證書不被劫持呢?張白鹿完全可以將一個(gè)假的證書發(fā)給田雨。
小瞧師長(zhǎng)了!師長(zhǎng)會(huì)把自己的證書,集成在瀏覽器或操作系統(tǒng)里,李云龍拿到瀏覽器或者操作系統(tǒng)的時(shí)候,已經(jīng)有證書了,沒(méi)必要從網(wǎng)絡(luò)獲取,張白鹿也就無(wú)法劫持了。
沒(méi)錯(cuò),師長(zhǎng)就是頒發(fā)數(shù)字證書的機(jī)構(gòu),它會(huì)對(duì)公鑰的合法性進(jìn)行檢驗(yàn)。
至此,張白鹿再也沒(méi)有辦法竊取和篡改李云龍和田雨之間的通信,小三上位的夢(mèng)想,徹底破裂了。