0

特定のユーザーについて書かれた個人データを保存するサービスを作成しています。これは、作成者とターゲットのみが表示できる必要があります。クライアント側で暗号化を実行し、結果のガベージのみをサーバーに保存したいと思います。

インターネットでは、 を使用するように指示されています。これは、1 人のユーザーのデータに適しています。

問題

私のサービスでは、他のユーザーは、自分とターゲット ユーザーだけが表示できるはずのデータを入力できます。これは、クライアント側の暗号化でどのように達成できますか?

これを純粋にクライアント側で行うことは可能ですか?

アップデート

これを検討した後、純粋にクライアント側で実行できるとは思えません。私は次の可能な方法を思いつきました:

すべてのトラフィックは SSL 接続を使用します

  • RSAキーを生成し、秘密キーをAESで暗号化します(salted パスフレーズを使用)
    • ブラウザ内で生成されたソルト
  • パスフレーズソルト、公開鍵、暗号化された秘密鍵をサーバーに保存します
  • 公開鍵で暗号化されたすべてのユーザー データは、最初にパスフレーズを入力してブラウザー内で秘密鍵を復号化し、次に RSA 秘密鍵を使用してデータを復号化することで復号化されます

  • ユーザーが別のユーザーとデータを共有したい場合は、そのデータを他のユーザーの公開鍵で暗号化します

私の提案する方法は安全ですか?

サーバーに保存されるものの例:

+----------+---------------------+---------------+
|Public Key|Encrypted Private Key|Passphrase Salt|
+----------+---------------------+---------------+
4

1 に答える 1