是否有任何協議允許2個訪問者通過我的網站安全地進行通信,而沒有我讀取他們的消息的可能性?服務器上的密文
服務器上的密文
回答
要求Google提供像PGP/GPG這樣的端到端加密。對於基於瀏覽器的客戶端實現,您可能想要查看GPG encryption in JavaScript。
我只是GOOGLE了它,不能告訴它是否真的安全(不發送你的私鑰給任何人)。我只想給你一點啓動。
編輯:看起來它不發送客戶端的私鑰對你的服務器進行基於服務器的加密。這是而不是你想要什麼。但我相信即使我不知道是否有人完成了GPG的JavaScript實現也是可能的。
是;例如,如果您的服務器是受SSL/TLS保護的通信中的鏈接,會發生這種情況。
參與者使用公開密鑰加密方案商定祕密的對稱密鑰;然後用它來加密他們的通信。
參與者也可以使用預期接收者的公鑰對其消息進行簡單加密。這樣,只有預期的接收者才能解密該消息。這不是一個非常先進的方案,可能很脆弱。 (其中,如果竊聽者可以猜出恰好是發送的內容,他可以使用預期收件人的公鑰對該消息進行加密,並查看結果是否與正在發送的內容匹配)。
有許多關於密碼協議的文獻可用;對於初學者來說,這裏有一篇關於Key Agreement Protocols的維基百科文章。
使用TLS意味着兩個用戶都需要聯機嗎?我想實際存儲消息。 –
不,您可以使用相同的算法交換對稱密鑰,而不管參與者何時登錄 - 只要步驟按正確的順序進行即可。 –
@destructo_gold如果您將消息存儲在服務器上,我強烈建議使用PGP。它被設計爲加密電子郵件,這幾乎是相同的用例。但是,用戶必須永久保存一些數據(私鑰)到他們的機器上。 – MBober
如果我們在談論不可能然後第二部分S.L.除了密鑰交換必須通過其他方式完成之外,Barth的回答將實現這一點。這可以是電話或電子郵件,甚至另一個網站,但如果它通過您的網站完成,那麼它是開放的man-in-the-middle attack。你可以告訴你的用戶這樣做,你實際上不能幫助他們做到這一點。
在某個地方可能會有一個JavaScript庫實現GPG加密,因此您所要做的就是確保每封郵件在發送到Web服務器之前都在瀏覽器中加密。只要你喜歡,你可以存儲這些消息,它們是加密的。只有具有正確私鑰的用戶才能解密它。
由於網站使用的SSL和TLS容易受到中間人攻擊。我們沒有聽說這類攻擊的原因是中間的大多數人都是可以信賴的,所以攻擊根本不會發生。最近撤銷的證書DigiNotar等證書正是因爲伊朗政府被認爲是一箇中間人,並解密他們自己的公民的SSL流量。
如果您對通過好奇的系統管理員防止隨意窺探感到滿意,則可以通過您的網站完成密鑰交換。
還有一件事:安全性很難。
即使您使用衆所周知的加密技術來做到這一點,實施中存在缺陷的機率也會非常接近1。這並不意味着那些好奇的系統管理員可能會意外地閱讀郵件,但這確實意味着一個有決心和技能的對手將能夠找到方法。只要您負擔得起,您應該聘請專家重新設計或至少要檢查你的協議和實現。
+1,儘管我並不認爲加密實現中的缺陷是悲觀的。另外我認爲SSL和TLS不容易受到設計中的中間人攻擊。這完全取決於你信任誰。 – MBober
@MBober SSL/TLS是爲客戶端 - 服務器通信而設計的,而非客戶端 - 服務器端客戶端,沒有服務器讀取任何東西。當然,您可以通過一對普通的套接字連接來隧道SSL,但客戶端仍然需要某種方式來識別對方。 –
一般來說,如果用戶之間沒有能夠讀取和/或修改他們的消息的安全鏈接,只有通過某種方式來識別彼此(或者至少在一個方向上)時纔可能。
這可能是一個共享密鑰(如密碼短語)或一個已知的公鑰(或由一個已知的CA認證),其中另一個具有相應的私鑰。
就像TLS一樣,可以建立一個安全協議(使用密鑰交換,然後在兩個方向上使用MAC對稱加密)。 (另一種常用於即時消息傳遞的方式是OTR,即Off-the-Record messaging協議。)
如果沒有一種方法來識別另一個端點,那麼最終會出現允許中間人攻擊的方法。沒有證書的SSL/TLS或中間人知道相應私鑰的證書是不安全的,每個其他類似的加密方案都是不安全的。
另一個問題是您說我的網站的訪問者是。這看起來像您將在您的網站上提供的JavaScript中實現客戶端加密。不要這樣做......如果訪問者不相信你不讀取他們的數據,他們也不應該相信你給他們提供非惡意的JavaScript,這可能會實現別的東西,而不是你聲稱的那樣,再次允許MITM,甚至直接發送一份數據給你。
關於這方面的更多細節在Javascript Cryptography Considered Harmful(從稍微不同的角度)討論。
- 1. 生產服務器和本地服務器上的codeigniter加密
- 2. 解密SQL服務器上的數據
- 3. Node.js服務器到服務器加密
- 4. C++解密從服務器上下載的文件
- 5. 瀏覽器加密服務器解密
- 6. 多臺服務器上的加密解密
- 7. 加密服務器上的解密客戶端
- 8. gitignore文件服務器上
- 9. 什麼加密算法最適合加密服務器上的會話文件?
- 10. 服務器上的文件上傳
- 11. php:上傳服務器上的文件
- 12. 上傳服務器上的文件
- 13. Ubuntu服務器上的Mercurial服務器
- 14. 解析服務器,檢索服務器上的所有文件
- 15. 從服務器檢查另一臺服務器上的文件
- 16. 的Git - SSH服務器 - 文件不上服務器
- 17. 服務器上的加密與本地計算機上的加密不同
- 18. 如何在碧玉服務器上啓用URL加密密碼
- 19. 在服務器上存儲開發人員API密鑰/祕密
- 20. sql server加密列將在另一臺服務器上解密
- 21. 服務器密度如何監控他們的服務器?
- 22. 通過服務器到服務器socket.io連接的SSL加密
- 23. 在GPGME上搜索密鑰服務器上的公鑰
- 24. 服務器上的Rsync遠程文件夾與本地文件夾的密碼
- 25. 服務器A上的red5,服務器B上的視頻文件?
- 26. 服務器上
- 27. 服務器上
- 28. 服務器上
- 29. 服務器上
- 30. 服務器上
最近甚至在Slashdot上:http://gpg4browsers.recurity.com/ –
使用Javascript進行加密時存在一些問題。在使用JavaScript解決方案之前,您可能需要考慮本文中提出的幾點:http://www.matasano.com/articles/javascript-cryptography/ – Seth