特定のユーザーについて書かれた個人データを保存するサービスを作成しています。これは、作成者とターゲットのみが表示できる必要があります。クライアント側で暗号化を実行し、結果のガベージのみをサーバーに保存したいと思います。
インターネットでは、 を使用するように指示されています。これは、1 人のユーザーのデータに適しています。
問題
私のサービスでは、他のユーザーは、自分とターゲット ユーザーだけが表示できるはずのデータを入力できます。これは、クライアント側の暗号化でどのように達成できますか?
これを純粋にクライアント側で行うことは可能ですか?
アップデート
これを検討した後、純粋にクライアント側で実行できるとは思えません。私は次の可能な方法を思いつきました:
すべてのトラフィックは SSL 接続を使用します
- RSAキーを生成し、秘密キーをAESで暗号化します(salted パスフレーズを使用)
- ブラウザ内で生成されたソルト
- パスフレーズソルト、公開鍵、暗号化された秘密鍵をサーバーに保存します
公開鍵で暗号化されたすべてのユーザー データは、最初にパスフレーズを入力してブラウザー内で秘密鍵を復号化し、次に RSA 秘密鍵を使用してデータを復号化することで復号化されます
ユーザーが別のユーザーとデータを共有したい場合は、そのデータを他のユーザーの公開鍵で暗号化します
私の提案する方法は安全ですか?
サーバーに保存されるものの例:
+----------+---------------------+---------------+
|Public Key|Encrypted Private Key|Passphrase Salt|
+----------+---------------------+---------------+