2012-07-16 69 views
4

用戶通過Rails應用程序向其他用戶發送消息併發布私人信息。用於Rails應用程序的客戶端數據加密/解密

目標是保護消息,因此係統管理員和數據庫泄漏都不會損害數據。使用收件人密鑰的Javascript客戶端加密,加密數據存儲在數據庫中,並在收件人一方解密。密鑰不存儲在系統中。

有意義嗎?有解決方案嗎? 非常感謝!

更新:我的意思是非對稱密碼學。每個用戶有兩個密鑰:一個公開用於加密,一個用於解密。併爲應用程序本身提供密碼。用戶使用他的密碼登錄,創建一條消息,該消息是使用收件人公鑰(存儲在系統中)加密的客戶端並保存在數據庫中的。收件人使用他的密碼登錄,然後輸入他的私鑰解碼消息。解密也是客戶端,私鑰不會發送到服務器。

+0

唯一的問題我看到:如果密鑰未存儲在系統中,客戶端如何保持它們?本地存儲?然後我無法從兩臺計算機(甚至瀏覽器)登錄系統。只需一個簡單的密碼?它有被強迫的危險。 ... – 2012-07-16 11:41:29

+0

@JoachimSauer I ment非對稱密碼學。公鑰可以存儲在系統中,因爲它不能用於解密。問題更新 – Elder 2012-07-16 13:45:26

+0

仍然,*客戶*將如何獲得(或保留)私鑰?它仍然需要它來解密數據。 – 2012-07-16 13:53:18

回答

2

當然。使用這個http://crypto.stanford.edu/sjcl/。 尤其是看演示http://bitwiseshiftleft.github.com/sjcl/demo/

有一點要記住,你不存儲密鑰的唯一方法是讓用戶對從密碼派生它們(這不應該是他們使用你的網站的一個)。這很好,並且是上面的庫。但是,如果他們忘記密碼,沒有幫助他們,

+0

謝謝,但這不是我要找的。 AES是一種對稱算法,我正在尋找一種非對稱算法,如RSA。 – Elder 2012-07-16 21:25:06

+1

啊,錯過了。有一個支持不對稱加密的分支https://github.com/bitwiseshiftleft/sjcl/commits/ecc。一般來說,有一堆javascript加密庫,但是它們中的任何一個都不知道他們在做什麼。 – imichaelmiers 2012-07-17 01:22:34

+0

感謝您的鏈接! – Elder 2012-07-17 07:58:14

1

在客戶端,您可以使用openpgp.js。使用lib創建密鑰,簽名,加密/解密等非常容易。

相關問題