小朋友都能懂的計算機(jī)安全 - 網(wǎng)絡(luò)劫持

1 張三被勒索
張三去某地旅游,在一個小酒店入住。酒店很便宜,一天只要80元,但看著有點(diǎn)像黑店??!

不過張三是誰,闖蕩江湖這么多年,who怕who??!
晚上百無聊賴,他連上酒店的wifi,先上銀行網(wǎng)站給爸媽轉(zhuǎn)了1000塊錢,這是這個月的生活費(fèi)。張三是個孝順兒子!
然后他鬼使神差的打開了一個小電影網(wǎng)站,欣賞了幾個動作片,放松一下。
第二天結(jié)賬的時候,賬單嚇了張三一跳:1800!
什么?明明是80??!老板不緊不慢的說:其中1720是保密費(fèi)。你是不是上了一些不該上的網(wǎng)站?然后老板展示了幾張圖片,正是張三看過的動作片中的截圖。

張三很火,但是也很擔(dān)心:勒索1800塊錢是小事,我昨天還做了銀行轉(zhuǎn)賬,不會把我的賬號密碼拿去,把我的錢都給轉(zhuǎn)走了吧?里面還有今年辛辛苦苦賺來的2萬多塊錢!
打工人不容易?。?/p>
他趕緊拿出手機(jī),關(guān)掉wifi連接,用流量查了一下余額。還好,錢還在!
為什么老板因為小電影勒索他,而不竊取他的銀行卡密碼呢?
原因是:張三上的銀行網(wǎng)站使用了HTTPS加密:

而小電影網(wǎng)站沒有用HTTPS,所以可以被酒店的WIFI捕獲所有發(fā)送的信息。
沒有使用HTTPS的網(wǎng)站類似這樣:
我也很震驚,這個china.com竟然沒有HTTPS。實際上很多正規(guī)的小電影網(wǎng)站都是HTTPS的,不信你去看看。
這樣的真實事情,每天都發(fā)生在世界的各地!
你永遠(yuǎn)不知道你會不會成為下一個目標(biāo)。所以認(rèn)真讀完這篇文章,你就不會成為受害者。
2 中間人劫持
張三正是遭受常見的網(wǎng)絡(luò)陷阱:中間人劫持。大致過程是這樣的:

張三通過酒店WIFI上網(wǎng)的過程是這樣的:
瀏覽器發(fā)送消息給酒店WIFI 酒店WIFI發(fā)送消息給網(wǎng)站。 網(wǎng)站把內(nèi)容發(fā)送給WIFI。 WIFI把網(wǎng)站內(nèi)容發(fā)給瀏覽器。
在這個過程中WIFI就是中間人。實際上瀏覽器和網(wǎng)站中間還有很多中間人,比如運(yùn)行商。
網(wǎng)站如果沒有HTTPS網(wǎng)站,發(fā)送的信息都明文的,類似這樣的文字:

傳了什么消息,中間人看的一清二楚。一旦遭受中間人劫持,中間人可以做很多事情:
監(jiān)控你的行為,然后勒索你,就像張三這樣的情況

篡改你的發(fā)送信息: 你本來要給李四轉(zhuǎn)賬1000 中間人修改成給他自己轉(zhuǎn)賬10萬。

記錄你的銀行卡密碼,朋友聊天記錄等
請大家注意,這里要害你的不是網(wǎng)站,而是中間人。中間人不光害你,他們也害網(wǎng)站。所以你和網(wǎng)站都是受害者!
如果你上了黑心網(wǎng)站,詐騙你的錢財,那是網(wǎng)站的問題,不是中間人的問題,那是另外一套詐騙方式了。
為了解決中間人劫持的問題,網(wǎng)站可以使用HTTPS,強(qiáng)迫瀏覽器和網(wǎng)站的通信加密。這個過程變成了這樣:

雖然信息發(fā)送還是要經(jīng)過酒店WIFI,但發(fā)送的都是密文,酒店WIFI看不懂,只能簡單的幫你轉(zhuǎn)發(fā),什么事情都做不了。
如果你是沖著小電影來的吃瓜群眾,就記住下面的結(jié)論:
使用公共WIFI的時候盡量不要上非HTTPS的網(wǎng)站,地址欄帶小鎖的網(wǎng)站才是安全的。 如果你必須得上,不要傳敏感的信息。假設(shè)WIFI的老板知道你的一切網(wǎng)絡(luò)活動。 在家是不是就可以不用在意HTTPS?還是要注意!雖然WIFI是你的,但你和網(wǎng)站中間仍然有很多中間人,比如運(yùn)行商。
這真的很重要,請轉(zhuǎn)發(fā)給需要的人,讓社會少一分傷害!
技術(shù)原理
大致的原理前面已經(jīng)講清楚了,簡單來說就是加密。但這里還有很多細(xì)節(jié)。
1. 用同一套密碼做加密 - 對稱加密

瀏覽器和服務(wù)器擁有同一套秘鑰來加密和解密。瀏覽器發(fā)送消息之前先加密,服務(wù)器收到密文后用同一套秘鑰解密。
但這里的問題是:
瀏覽器怎么知道秘鑰是什么? 如果瀏覽器可以從網(wǎng)站獲取秘鑰,那中間人也可以輕松獲取秘鑰!
所以為了加密要先解決秘鑰的交換問題。
2. 用非對稱加密方式協(xié)商密碼 - 公鑰加密
還好有數(shù)學(xué)家研究出了一個加密算法,叫做公鑰加密。公鑰加密有兩把鑰匙:
一把是公開的,所有人都可以獲取 一把是私有的,只有網(wǎng)站自己知道
這兩把鑰匙的神奇之處在于:
用公開鑰匙加密,只有私有鑰匙才能解密 用私有鑰匙加密,只有公開鑰匙才能解密
這樣就可以協(xié)商密碼了:
瀏覽器從網(wǎng)站獲得網(wǎng)站的公鑰 瀏覽器自己生成一個密碼,用公鑰加密,發(fā)送出去 密文傳到WIFI上的時候,WIFI沒有私鑰,無法解開 WIFI只能乖乖的把密文原封不動的傳給網(wǎng)站 網(wǎng)站有私鑰,可以解開,這樣瀏覽器和網(wǎng)站就成功交換了密碼 從此,它們用這個密碼加密數(shù)據(jù),中間人無計可施
當(dāng)然實際的密碼交換過程比這個要復(fù)雜一些,但核心原理就是這樣的。
3. 數(shù)字證書和CA認(rèn)證機(jī)構(gòu)
但這事還沒完!中間人可以最開始就冒充網(wǎng)站,把它自己的公鑰給瀏覽器:

瀏覽器試圖獲取某小電影網(wǎng)站的公鑰 經(jīng)過WIFI的時候,WIFI直接把自己的公鑰給了瀏覽器。 瀏覽器用WIFI的公鑰加密,發(fā)送密碼。 WIFI用自己的私鑰解密,獲得了密碼。從此瀏覽器發(fā)送的消息,WIFI都知道了。 WIFI把篡改后的信息,再用網(wǎng)站的公鑰加密和網(wǎng)站溝通。
為了解決這個問題:
公鑰必須得監(jiān)管!不能隨便誰的公鑰都可以。
生成了公鑰后,要先找監(jiān)管機(jī)構(gòu)蓋個章,生成一個數(shù)字證書,這些機(jī)構(gòu)被稱為CA機(jī)構(gòu)。世界上被認(rèn)可的CA機(jī)構(gòu)是有限的。他們簽發(fā)證書一般都是收費(fèi)的。
當(dāng)瀏覽器獲得一個公鑰時,看看這個公鑰是誰簽發(fā)的。如果是它不認(rèn)識的機(jī)構(gòu)簽發(fā)的,就提醒用戶:這個證書是無效的。

這樣中間人發(fā)來的公鑰是無效的,瀏覽器一下就識別出來了。
所有電腦上都維護(hù)了自己信任的CA機(jī)構(gòu):
我們也可以手工修改添加自己信任的機(jī)構(gòu):比如把自己的公司加入到信任列表中去。這樣自己公司可以簽發(fā)證書。
如此,基本上就徹底避免了中間人攻擊。
這真的很重要,請轉(zhuǎn)發(fā)給需要的人,讓社會少一分傷害!
