2012-08-02 133 views
1

我目前正在使用不允許https連接的免費主機,由於我的網站沒有託管任何敏感或私人內容,因此我不會升級到付費託管服務具有。但是由於我的網站確實處理密碼,並且由於許多用戶對不同的網站使用相同的密碼,我希望在處理這些密碼時提供合理的安全/加密數量。使用Javascript/PHP驗證公共密鑰

Secure login: public key encryption in PHP and Javascript,看起來最大的問題在使用密碼的公鑰/私鑰加密技術來保護它,當它通過網絡發送的將是一個攻擊者可以修改發送到客戶端的公鑰,然後攔截加密的密碼,用攻擊者的私鑰解密,然後使用該站點的公鑰將其加密,然後將其發送到站點,實質上首先破壞了加密它的整個點。

當然,任何加密都比不加密更好,但是我希望盡我所能無需購買支持HTTPS的託管服務,這使我能夠回答我的問題。

是否有任何可靠的方法來防止(或只是檢測到&提醒用戶)中間人從替換他們自己的公鑰取代我的網站的公鑰?或者有什麼方法可以驗證服務器發送的公鑰是否真的是服務器的公鑰?如果無法驗證這一點,那麼SSL/TLS如何工作,以及他們如何驗證密鑰(如果SSL不使用公鑰/私鑰,我對此有相當有限的理解)。

我已經明白,與使用TLS/SSL相比,加密表單數據是一項極其薄弱的做法,並且不會阻止那些決定破解加密的人,因此請避免出現任何「你應該使用HTTPS「 - 只有評論(儘管如果你知道一個免費的託管服務提供商,允許HTTPS,我會更樂意聽到他們)

+1

我還沒有嘗試過,但這已經出現了幾次:http://www.switchonthecode.com/tutorials/secure-authentication-without-ssl-using-javascript – Brad 2012-08-02 20:26:26

+1

[This](http:///security.stackexchange.com/questions/1322/can-you-secure-a-web-app-from-firesheep-without-using-ssl)可能會有所幫助。 (從security.stackexchange.com鏈接)。 – Matt 2012-08-02 20:27:29

+0

謝謝布拉德和馬特 - 我會看看那些:) – MatthewSot 2012-08-02 20:35:41

回答

0

SSL工作的原因是根證書分佈在瀏覽器。這個方案存在很多問題,但總的來說,你有一個信任鏈 - 在這種情況下,以瀏覽器的信任(證書存儲,分發,安裝等)結束。當任何證書授權機構私鑰不安全並且這是當前一個備受爭議的問題。

信任鏈:

enter image description here

瀏覽器證書存儲區:

enter image description here

與JavaScript的問題是,你沒有(獲得)信任存儲,所以你無法相信你收到的鑰匙。攻擊者可以簡單地用他自己的密鑰替換它(並且用他的密鑰登錄到你自己的站點)。這將成爲中間進攻中的經典人,而且你對此可以做的很少。

使用公鑰進行加密確實可以爲您提供的一些防止竊聽攻擊。不幸的是,大多數能夠首先訪問連接的攻擊可能能夠創建MITM,例如,當使用WiFi接入點時。

嘗試並找到您的瀏覽器信任存儲,您可能可以查看其中分發的配置的根證書。這種證書和私鑰的樹形結構被稱爲公鑰基礎設施(所以Google它)。

+0

謝謝,這是一個很好的閱讀:) – MatthewSot 2012-08-02 23:53:20

+0

不客氣... – 2012-08-02 23:59:49