2

登録ユーザーのパスワード(AES暗号化)をHTTPリクエストを介してサーバーに送信するコンピューターセキュリティコース用のJava SEベースのアプリケーション(大学イントラネット)を開発しています。次の手順を実行します。

  1. ユーザーはイントラネットアプリに登録します。
  2. クライアントは、AESで暗号化された学生のパスワードを含むHTTPリクエストを送信します。
  3. PHPスクリプトは、AES暗号文を復号化してハッシュします。
  4. ハッシュ化されたパスワードはデータベースに保存されます。

AESについて読んだことから、暗号化プロセスの一部として秘密鍵が必要になります。サーバースクリプトは暗号を復号化するために秘密鍵を必要とするので、毎回同じ秘密鍵を使用するのは悪い考えですか?スクリプトが暗号文を受信すると、一方向ハッシュ関数を使用して暗号文をデータベースに保存します。

4

2 に答える 2

3

本当に対称サイファーを使いたいのなら

わかりました。各エンティティ(Bluetooth接続など)に同じキーを入力して、2つのエンティティが通信するようにします。その場合、質問はすでに尋ねられており、私はあなたにこのようないくつかの答えをグーグルで検索させます

確かに欲しいのはHTTPSです

しかし、どうやらあなたはクライアントとサーバーの間の安全な通信が欲しいだけです。その場合、HTTPSを使用する必要があります(HTTPを使用するため)。HTTPSは、ハンドシェイクを使用し、対称鍵アルゴリズムを使用して通信を確保することで、これらすべてを実行します。

要件をどのように満たすか

あなたの場合、ログインページがHTTPSで提供されている場合:

  • パスワードは、送信時にクライアントによって事実上暗号化されます
  • サーバーによって自動的に復号化されるので、
  • PHPでハッシュし、データベースに保存します。
于 2011-11-20T21:16:20.117 に答える
1

私は他のコメントに同意します-可能であればHTTPSが進むべき道です。

ただし、質問に直接答える場合は、そうです。毎回同じ秘密鍵を使用することは(それ自体で/ソルトなしで)非常に悪い考えです。何らかの理由でHTTPSが選択できない場合は、実装の可能性に応じて、少なくともソルトおよび/またはワンタイムパッドの使用を検討してください。

ソルト(暗号) ワンタイムパッド

この記事は役に立つかもしれないようです:

AESアルゴリズムを使用したデータ暗号化の復号化、Java暗号化拡張機能を備えたキーとソルト

お役に立てば幸いです。

于 2011-11-20T22:41:02.307 に答える