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