2013-03-14 100 views
3

我正在開發一個Web應用程序,它將在客戶端加密數據,然後將數據發送到服務器。服務器將存儲加密的數據,但而不是有能力解密數據。關鍵是保持客戶端的數據安全,以至於即使服務器主機也不能訪問數據。這可以通過服務器只接收加密數據並從不接收密鑰來保證。客戶端加密的Web應用程序

我打算在客戶端使用Javascript進行加密和解密。此外,連接將通過SSL進行保護。

我在這裏閱讀文章:http://www.matasano.com/articles/javascript-cryptography/這表明Javascript不應該用於加密,但它不能解決我的使用案例。

這是一個安全的解決方案嗎?有沒有辦法讓我更安全?

+1

這隻要你不實際注入JS代碼竊取的關鍵似乎是足夠安全的。 – millimoose 2013-03-14 21:06:44

+1

該頁面上的其他內容除了您的服務器以外都沒有。用戶在其瀏覽器中沒有運行任何擴展程序,允許擴展程序訪問他們訪問的網頁(這是很多)。實際上,您的情況已被該文章所涵蓋 - 因爲它繼續說明RNG在瀏覽器中如何不安全,因此從理論上講,您無能爲力。像大多數安全問題一樣,您永遠無法說「它很安全」。你可以表達一定程度的信心。 – Nik 2013-03-14 21:26:12

+0

@Nik:無論客戶端是否發生加密,這些瀏覽器擴展程序都不會從任何* web應用程序竊取數據?我對使用Javascript加密客戶端的感覺並不好,但我不知道第三方腳本或擴展是否是原因。 – 2013-03-14 21:41:37

回答

-1

雖然這種設置沒有任何內在的錯誤,但由於客戶有責任維護自己機器的安全,所以我認爲您可能正在陷入可能導致更多問題的情況。

一個是用戶希望能夠訪問他們的數據,無論如何。如果他們在另一個JS關閉的系統上,那麼他們將無法訪問他們的數據。

另外,如果用戶忘記密碼/密鑰會發生什麼?由於您沒有存儲它,因此無法恢復數據並且實際上已丟失。沒有任何事情可以做,即使這不是你的錯,用戶也不會這樣看。

只是一些思考。

11

查看Host-Proof Hosting模式(自2005年7月起)。

在眨眼草圖:

鎖定的數據雲,在瀏覽器鍵的內側。

主機以加密形式的敏感數據,以便客戶端只能訪問 並通過提供密碼短語這是從來沒有 發送到服務器進行操作。服務器被限制爲持久存儲,並且 檢索瀏覽器發送的任何加密數據,並且絕不會以其明文形式訪問敏感數據。它。所有的 加密和解密都發生在瀏覽器內部。

要點是你需要仍然使用TLS/SSL並且完全信任主機同時提供HTML作爲JavaScript資源。

此外,Web-browser encryption of personal health information有一個類似於您正在尋找的解決方案。

Encryption data flow

相關問題