2

ここで、実装を依頼されたプロトコルと、その安全性について尋ねました。最初からクズなのは明らかだったから。だから私は尋ねます:

非常に単純なログイン プロトコルを教えてもらえますか (私は暗号化システムが苦手です)。私はアプリケーションのサーバー側とクライアント側の両方を開発しており、独自のメッセンジャー システムを持っているので、十分な自由があります。

あなたの提案のための2つの特別な特徴だけ.

  1. 単純: このアプリケーションが実行されるネットワークは特に安全ではないため、プレーン テキストでのパスワードの送信を避けたいだけです。

  2. 可能であれば、メッセージの交換が長すぎないようにします。短いほど良い。

4

5 に答える 5

4

チャレンジ レスポンス認証を確認する

  • サーバーのログインフォームにランダムなチャレンジ文字列が含まれています
  • ログインすると、javascript はパスワードをハッシュし、それをチャレンジでハッシュします。
  • 次に、サーバーは同じチェックを実行します (DB はハッシュ化されたパスワードを保存する必要がありますが、この方法では、これをブロードキャストする必要があるため、そのハッシュにソルトを効果的に使用できなくなります)
于 2008-10-10T08:14:21.883 に答える
2

パスワード ハッシュをデータベースに格納することは、データベースの内容が権限のないユーザーの手に渡った場合に最適な安全策とは言えません。ハッシュを直接逆にする方法はありませんが、ハッシュされた(パス) 単語を逆にするためのオンライン辞書(ここなど) があります。

DB には、次のようなものを保存する必要があります。

md5(login_name +  domain_or_appname_salt + password);

中間のソルトは、多くの形式の辞書攻撃を防ぎます。

クライアント側 (ブラウザー) には、ユーザー名とパスワードを含むログイン フォームがあります。小さな JavaScript が userame + app_salt_ と password をハッシュするため、login_name と生成されたハッシュのみがサーバーに送信されます。

これで、平文のパスワードが平文でサーバーに送信されることはなくなりました。したがって、ここで HTTPS に依存する必要はありません。

パスワード更新フォームでも同じ手法を使用できます。したがって、サーバーは平文のパスワードを知ることはありません。

これと他の回答からインスピレーションを得ていただければ幸いです。

ハッピーハッキング!

ユベール

于 2008-10-12T12:42:28.787 に答える
2

3 パス プロトコルが便利です。基本的に、それは次のように要約されます。

  • 人物 A は自分のパスワードを暗号化し、人物 B に送信します。
  • B さんは暗号化されたパスワードを暗号化し、A さんに送り返します。
  • 人物 A はそれを復号化し、送り返します。
  • 人物 B はそれを復号化し、平文のパスワードを取得します。

この方法では、パスワードがプレーンテキストで送信されることはなく、暗号化キーも送信されません。非常に高速な対称暗号化に (おそらく) 依存しているため、これも比較的高速なプロトコルです。

于 2008-10-10T08:14:32.070 に答える
0

SASLは安全な認証メカニズムです。SASL のサポートは、リリース 1.5+ の Java 標準ライブラリで提供されます。

于 2008-10-10T09:00:39.793 に答える
0

プロトコルが TCP で実行されている場合は、認証を平文で記述してから、SSL で通信をラップできます。たとえば、プロトコルにポート 1234 を使用している場合は、サーバー上のそのポートを閉じて、クライアントが SSH でそれをトンネリングできるようにします。これはプログラムで行うことができ、非常に一般的なソリューションです。

プロトコルが HTTP で実行される場合、HTTPS を使用する標準的な方法でこれを行うことができます。たとえば、HTTPS 経由の基本認証は、指定したニーズに対して十分に安全です。

一方、ネットワーク上でパスワードを送信したくない場合は、チャレンジ レスポンス認証を行う必要があります。

  1. サーバーはランダムな文字列を送信します
  2. クライアントはランダムな文字列 + パスワードのハッシュを送信します
  3. サーバーはハッシュを検証します。

ただし、これには、サーバー上でパスワードが利用可能になる (プレーンテキストで暗号化される) という欠点があります。パスワードをサーバーに保存したくない場合は、最初の例に戻る必要があります。

于 2008-10-10T08:10:50.500 に答える