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