https能防止大家都有公鑰情況下的信息竊取嗎?能防止中間人攻擊嗎?

https能防止中間人攻擊嗎?

如果用戶和攻擊者都有這個網站的公鑰(公鑰是一樣的吧,參考12306),https還能保護普通用戶與伺服器的安全連接嗎?

========

@iCruiser

是的,公鑰可以保護用戶提交給伺服器的信息(被公鑰加密過),被沒有私鑰的人解密,

但是如何保證用戶從伺服器獲得的數據是真實的?比如我作為中間人惡意的篡改了伺服器返回的頁面,加了個js監聽,把用戶輸入表單數據的同時ajax到我伺服器;因為我也有同樣的公鑰,我在搞到用戶的數據後也可以作惡。


接題主的補充繼續往下答。

不知道題主是否見到過這種提示「當前網站部分內容不安全,是否繼續訪問」。

這種提示一般就是網頁上的部分內容為通過SSL/TLS加密,而另一部分是沒有加密/驗證的。如果是全站https, 然後中間人篡改了部分返回內容,這個時候用戶已經收到了提示。(中間人沒有session key和伺服器的私鑰,無法把自己添加的內容加密/簽名)

另外,題主的很大一個誤解是,客戶端是用伺服器端的公鑰來加密自己上傳的內容,而實際上,公鑰僅僅是參與了「驗證伺服器身份」和「產生會話密鑰」這兩部分功能,而真正的會話內容(比如伺服器返回的網頁、表單、郵件正文等)是通過會話密鑰進行加密的。

===================把評論也直接擺上來算了====================

那麼sslstrip為什麼能用?

答:

那不是針對https本身的,而是通過修改路由信息,把https請求重定向到域名相似的http鏈接,還有偽造類似鎖的標記來欺騙用戶。(類似釣魚)

現在很多攻擊不是針對協議本身,而是針對沒有安全常識或者安全常識不足的用戶。

技術上做的再多,也架不住用戶喜歡「簡單」的心。

如果訪問的網站本身就是個黑站,用什麼協議也保不住用戶了。

==============有時間我會做個較為完整的威脅建模,從應用層到IP層=============

用戶數據保護不是單靠一層就能完成的

(待續)


有種技術叫sslstrip啊,跟著 @玄星 連著答題,這項技術被我擺出來好多次了。。

中間人攻擊不一定僅僅是對數據進行監聽,中間人還可以修改數據。sslstrip就是將本應該是HTTPS傳送的數據強行替換成了HTTP協議。

具體的原理我不想再寫一遍了,直接上這個演講:https://youtu.be/MFol6IMbZ7Y

總的來說,網頁對中間人攻擊是毫無防備的,最不濟中間人也能用DNS污染做一個偽造頁面來釣魚。最有效的解決方法就是所有用戶都使用HTTPS Everywhere這類的插件強制使用HTTPS,不過大部分人在遇到HTTPS用不了的時候,為了節約時間,都會默默地去用回HTTP協議,一點防範意識都沒有。那個SR的Ross Ulbricht就是戴了Tor還被人sslstrip掉了。


你忘了世界上有樣東西叫做PKI,每一個伺服器的公鑰證書都是由CA簽發的,可以由CA發布的證書驗證

至於CA本身的可信程度,由運營CA的負責,審核申請證書的人,以及證書私鑰泄漏後拉黑證書都是信任機制的一部分

驗證的同時生成session key,用來加密之後所有的會話通信。照理來說應該整個頁面所有內容都加密,不允許你插個不加密內容進去


可以的,HTTPS就是安裝了ssl證書的,網站會很安全關於SSL證書詳情你可以看看這個ssl證書_https證書_ssl數字證書


中間人看到的數據是密文,可以理解為一堆亂碼,想要改了之後別人還能解密出來不太可能


其實https的安全是基於SSL/TLS證書的驗證,而這種驗證都是出於信任的原則,我們信任瀏覽器,瀏覽器信任一些根證書,如果這些CA機構的根證書的私鑰保管得好沒有泄露給任何其他組織,而且所使用的加密套件不是過期的,那麼這種https網站應該是能夠防止中間人攻擊的(即被攻擊後瀏覽器能夠發現並彈出警告提示)。


https是安裝過SSL證書的訪問方式,不能阻擋攻擊但是可以對信息進行加密傳輸,這樣就算是信息被竊取也是竊取的亂碼屬於加密過的信息,46-256位加密演算法也保證了信息基本不會被破解。SSL免費申請:https://www.zzidc.com/SSL


@玄星 「把https請求重定向到域名相似的http鏈接」

我估計您明白sslstrip是什麼,但是這句話挺容易造成誤解的。準確來講不是重定向,而是壓根就沒發出去https請求。它利用的原理是將HTTP頁面上的"https://"替換成"http://"。或者用戶在地址欄輸入http://mybank.com時,實際上瀏覽器首先請求的是http://mybank.com,即使伺服器有http://mybank.com到 https 的重定向,但是中間人可以阻止http://mybank.com 請求發到伺服器,相反中間人作為代理去向伺服器請求,全程都是http的,這個攻擊就賭用戶不知道https。如果用戶直接輸入 https:// www.alipay.com 中間人無法做sslstrip攻擊。

@Rix Tox 說的HTTPS Everywhere是一個辦法,另一個辦法是HSTS,同樣強制HTTPS,並禁止用戶忽略證書警告。HTTP嚴格傳輸安全


推薦閱讀:

https 頁面上如何嵌入像優酷這樣的非 https 的外部資源?
網站從http轉到https需要多久?
開啟全站HTTPS後 , 用 Firefox 打開提示此連接不受信任,如何徹底解決這個問題?
登陸所有網頁都是「此網站安全證書存在問題」的情況用https刪除後面的s這個方法解決是什麼原理?
http/2 和 PWA有何關聯?

TAG:編程 | 網路安全 | SSL | HTTPS | 計算機網路 |