斯諾登曝光了美國(guó)國(guó)家安全局與歐美多個(gè)國(guó)家的情報(bào)機(jī)構(gòu)對(duì)網(wǎng)絡(luò)通信的竊聽行為,人們終于明白,網(wǎng)絡(luò)根本沒有安全可言,所有經(jīng)過(guò)網(wǎng)絡(luò)節(jié)點(diǎn)傳輸?shù)臄?shù)據(jù)都可能被攔截和破解,瀏覽器地址欄上顯示加密傳輸?shù)男℃i也不再給人安全的印象,因?yàn)樵谇閳?bào)機(jī)構(gòu)需要的情況下,他們也同樣可以對(duì)這些通信數(shù)據(jù)進(jìn)行解碼。目前,一些歐洲國(guó)家正尋求避免網(wǎng)絡(luò)通信數(shù)據(jù)經(jīng)過(guò)美國(guó)的網(wǎng)絡(luò)節(jié)點(diǎn)傳輸?shù)姆椒?,或者試圖通過(guò)立法來(lái)保障網(wǎng)絡(luò)通信的安全。不過(guò),恐怕這些政治上的努力最終仍無(wú)法阻止歐美各國(guó)情報(bào)機(jī)構(gòu)的竊聽行為,但是從技術(shù)上完全有可能實(shí)現(xiàn),那就是使用完全正向保密(Perfect Forward Secrecy,簡(jiǎn)稱PFS)技術(shù)。
按照斯諾登的說(shuō)法,強(qiáng)大的加密技術(shù)將是應(yīng)對(duì)全球監(jiān)聽的最佳保障。但目前互聯(lián)網(wǎng)主要依賴HTTPS安全連接的加密強(qiáng)度是不夠的。按照目前廣泛采用的加密方式,首先,服務(wù)器發(fā)送一個(gè)公共密鑰到瀏覽器,這個(gè)公共密鑰與一個(gè)私有密鑰相對(duì)應(yīng),可以通過(guò)私有密鑰解開接下來(lái)瀏覽器使用服務(wù)器公共密鑰加密的信息,并與瀏覽器握手建立連接,瀏覽器和服務(wù)器將商定一個(gè)會(huì)話密鑰和加密方法,例如AES,接下來(lái),服務(wù)器和瀏覽器之間就可以開始加密的通信。
私鑰是薄弱點(diǎn)
至此,竊聽加密通信的竊聽者只能獲得經(jīng)過(guò)編碼的“胡言亂語(yǔ)”,但是通過(guò)上面的介紹不難明白,如果得到了服務(wù)器的私鑰,自然就不難從竊聽到的數(shù)據(jù)中提取會(huì)話密鑰,從而解密所有通信數(shù)據(jù)。因而,美國(guó)國(guó)家安全局非常希望能夠從安全郵件服務(wù)Lavabit的創(chuàng)始人拉達(dá)爾·利維森(Ladar Levison)手上獲取Lavabit的私有密鑰,因?yàn)樗怪Z登使用的正是這個(gè)電子郵件服務(wù)。如果美國(guó)國(guó)家安全局能夠獲得Lavabit的私有密鑰,自然就能夠解密并閱讀斯諾登的所有郵件。不過(guò),利維森選擇了關(guān)閉他的郵件服務(wù),而不是將私有密鑰交給美國(guó)國(guó)家安全局。
如果利維森的郵件服務(wù)使用完全正向保密(PFS)技術(shù)的話,他就不必這樣做,因?yàn)镻FS加密技術(shù)并不使用私鑰。此外,在PFS加密通信中,并不需要通過(guò)互聯(lián)網(wǎng)發(fā)送會(huì)話密鑰,而是雙方都通過(guò)純粹的數(shù)學(xué)計(jì)算創(chuàng)建的。為此,PFS需要采用迪菲赫爾曼密鑰交換(Diffie–Hellman key exchange,簡(jiǎn)稱“D-H”)協(xié)議。通過(guò)D-H協(xié)議,服務(wù)器定義一個(gè)數(shù)學(xué)公式,其中既有設(shè)定的參數(shù)(一個(gè)素?cái)?shù)及一個(gè)原根),也有不公開的隨機(jī)數(shù)。雙方將發(fā)送自己的計(jì)算結(jié)果并重復(fù)計(jì)算,一旦彼此的計(jì)算結(jié)果相同,這個(gè)數(shù)字將被作為對(duì)稱加密的會(huì)話密鑰。如果正確實(shí)施PFS加密,在通信結(jié)束之后會(huì)話密鑰將被刪除。任何人也無(wú)法對(duì)通信的內(nèi)容進(jìn)行解密,因?yàn)闊o(wú)論在瀏覽器還是服務(wù)器上都沒有會(huì)話密鑰。
數(shù)學(xué)封鎖竊聽者
NSA之類萬(wàn)能的竊聽者自然是不難得到加密后的通信數(shù)據(jù),同時(shí)也能夠得到服務(wù)器的加密公式和參數(shù),但是無(wú)法知道隨機(jī)數(shù),隨機(jī)數(shù)在計(jì)算公式中被用作指數(shù),要得出可能被用作會(huì)話密鑰的數(shù)字,解密所有通信數(shù)據(jù),竊聽者將不得不嘗試解決兩個(gè)未知隨機(jī)數(shù)的對(duì)數(shù)方程。這雖然不是不可能的事情,但是卻是非常復(fù)雜的,并且服務(wù)器和瀏覽器使用的素?cái)?shù)非常大,例如2 048位,因此可以保證竊聽者無(wú)法通過(guò)蠻力計(jì)算出密鑰。
除了經(jīng)典的D-H協(xié)議,PFS還可以通過(guò)橢圓曲線密鑰交換(ECDHE)協(xié)議產(chǎn)生密鑰。該協(xié)議的數(shù)學(xué)方法較為復(fù)雜,因而,ECDH使用較小的素?cái)?shù)就可以確保安全,這可以減輕CPU的負(fù)擔(dān)以便更快地計(jì)算出會(huì)話密鑰。幾乎所有已知的瀏覽器都已經(jīng)支持通過(guò)DHE和ECDHE實(shí)現(xiàn)PFS加密,但并沒有與任何對(duì)稱加密方法相結(jié)合。服務(wù)器的情況也是如此,很少的服務(wù)器選擇使用PFS進(jìn)行密鑰交換。不過(guò),考慮到目前日益嚴(yán)重的竊聽風(fēng)險(xiǎn),明年情況也可能完全改觀。endprint