私は暗号化の専門家ではありません。実際に使用した経験はほとんどありません。いずれにせよ、私のアプリケーションの 1 つが暗号化をセットアップすることを要求する時が来ました。プログラムは、多くの損害を引き起こす可能性のある非常に重要なものを管理しないことに注意してください.
とにかく、私が使用しているこのスキームが一般的であるかどうか、および欠陥があるかどうかを確認しようとしていました(完全に愚かで恐ろしく欠陥のある設計がある可能性があるため、私は尋ねています)。
わかりました、クライアント -> サーバー通信があります。クライアントは、2048 ビットの RSA キーの公開部分にハード コードできます。クライアントが安全な接続を開始したい場合、クライアントは自分のユーザー名、パスワードの md5 ハッシュ、およびランダムな UUID のハッシュを送信します。これらはすべてサーバーの公開鍵に対して暗号化されています。サーバーは情報を受け取り、秘密鍵を使用して復号化します。データベースをチェックして、彼のログイン + パスが機能するかどうかを確認し、機能する場合は、DB の「セッション」テーブルに新しいエントリを作成します。これには、SessionID、UID (ユーザー ID)、および UUID ハッシュが含まれます。対応するセッション ID の UUID をキーフレーズとして使用すると、サーバーは Blowfish の暗号化された単語「Success!」を含むメッセージを返信します。+ ランダムな UUID (このメッセージはデジタル署名されているため、サーバーから送信されたかどうかを判断できます)。その時点から、クライアントがサーバーに情報を送信すると、平文の sess_id が含まれ、対応するセッション ID のフグの秘密 (DB に暗号化されて保存されます) を暗号化/復号化のキーとして使用して、フグの暗号化メッセージが含まれます。
具体的には、このシステムが「機能するはず」なのか、それとも MITM などの脆弱性が明らかに明白に存在することに誰かが気付いたのか、私は興味があります。