重要なのは、ユーザーが(サーバーからのサポートを受けて)暗号化されたメッセージをユーザー間で送信できるシンプルなシステムを設計することです。
このシナリオでは、クライアントにローカルストレージがないため、ユーザーが必要に応じて選択、記憶、入力できるパスワードを使用する必要があります。(これはシステム全体を弱めることを私は知っていますが、これは難しい要件です)
もう1つの要件は、サーバーがクリアテキストの秘密鍵やメッセージの復号化に使用できるその他のデータを保存できないことです(たとえば、ユーザーのみが暗号化されたメッセージを読み取ることができ、サーバー管理者は読み取ることができないはずです)。
私のアプローチは、クライアントで非対称キーペアを生成し、秘密キーの暗号化されたコピー(ユーザーパスワードで暗号化された)とともにサーバーで公開キーを公開することです。その後、ユーザーは、受信者が公開した公開鍵を使用して、暗号化されたメッセージを他のユーザーに送信できます。ユーザーがメッセージを復号化する必要がある場合、ユーザーの(暗号化された)秘密鍵がサーバーからクライアントにフェッチされ、ユーザーが提供したパスワードで復号化されてから、メッセージの復号化に使用されます。
これは意味がありますか?このシステム設計に欠陥はありますか?(ユーザーが短いパスワードまたは不正なパスワードを選択することに起因する弱点は別として)このアプローチは、同様のシナリオですでに使用されていますか?
ありがとうございました :)