3

私は楽しみのためにチャット プログラムを作成しており、暗号化を追加することにしました。しかし、私はこれに慣れていないので、疑問に思っていたのは、これは暗号的に安全であり、これは物事を行うための良い方法ですか?

これはログインしています:

始める:

クライアントがユーザー名を送信

ユーザーが存在する場合、サーバーはユーザーの保存されたソルトを送信します

次に、クライアントは SHA-2 ハッシュ (Salt + 平文パスワード) を送信します。

サーバーはそれをソルト + パスワードの保存されたハッシュ結果と比較し、それが同じ場合、ユーザーは正常にログインしており、そこからの暗号化は AES です。

終わり

欠点はありますか?あるとは思いませんが、暗号化が機能しないと言われるだけのプログラムを作成するのは嫌です! また、暗号化についてさらに読むための良いリンクを持っている人はいますか?

4

6 に答える 6

3

これはデータベース/サーバーへの攻撃に対して安全ではなく、実際にはソルトハッシュを使用する目的を無効にしているようです. クライアントがパスワードの代わりにソルト付きハッシュを送り返す場合、それは基本的にパスワードと同じです。

攻撃者がデータベースを侵害した場合、ログインするために誰かのパスワードをブルート フォースする必要はありません。攻撃者はソルト付きハッシュを使用するだけで、なりたい人になりすますことができます。

SSL を使用している場合は、暗号化されたワイヤを介して平文のパスワードを送信し、サーバーでハッシュすることができます。次に、攻撃者はハッシュをブルート フォースするか、SSL チャネルを攻撃する必要があります。

また、SHA-2 の代わりに、PBKDF2、bcrypt、または scrypt をパスワード ハッシュ アルゴリズムとして使用します。総当たり攻撃に抵抗するものが必要です。

于 2013-02-12T04:07:18.857 に答える
2

ハッシュが侵害されるとユーザー アカウントが侵害されるため、ハッシュの送信が SSL で暗号化されていることを確認してください。

CodesInChaos のコメントで述べたように、SSL でサーバーの公開鍵を検証することは重要かつ必要です。

于 2013-02-11T21:39:07.190 に答える
1

簡単な答えは「いいえ、とにかくそれをチャンスにするのはなぜですか?」です。長い答えは長すぎて複雑です。不明な変数が多すぎて適切な答えを出すことができません。クライアントとサーバー間のリンクは暗号化されていますか?接続しているサーバーのIDを確認しますか?等。

一般的に言って、車輪の再発明はすべきではなく、自家製のクリプトグラピーは避けるべきです。パスワードについては、scryptの使用を検討してください。

ユーザーが入力しているパスワードを確認する場合は、チャレンジレスポンス認証システムの実装を検討するか、少なくともリプレイ攻撃に対する保護を実装することをお勧めします。現在のソリューションは、ソルトハッシュ自体をパスワードにするという点で完全に安全ではありません。パスワードを知らなくてもアカウントにログインできる攻撃者。

繰り返しますが、独自のものを発明しないでください。暗号研究者とコミュニティ全体によって設計および検証されたプロトコルを使用します。ウィキペディアはあなたの研究を始めるのに良い場所です。BruceSchneierによる本「AppliedCryptography」は素晴らしいリソースであり、すべてのソフトウェア開発者はそれを自分のライブラリに持っている必要があります。

于 2013-02-11T21:32:27.130 に答える
1

この交換が SSL を介している限り、問題ないはずです。また、SHA-2 ファミリーのメンバーを使用することに設定している場合は、SHA-512 を使用してください。それ以下のものは今日受け入れられません。

あなたが説明するプロトコルは、基本的に標準的なユーザー/パスのウェブサイト ログイン + ソルト交換です。

ただし、サーバー上でソルティングと SHA ハッシュを行う方がよいでしょう。ユーザーが SSL を介してプレーンテキストでパスワードを送信できるようにし、salt を公開しないようにします。

JChatdは、SSL を介したピアツーピア チャット クライアントの例です。

于 2013-02-11T21:45:48.700 に答える
0

クライアントは username と sha(password) を送信でき、サーバーは変換と比較を行うことができ、サーバーはユーザーのソルトを送信しません

ここに暗号に関する良いコースがあります

https://class.coursera.org/crypto/class/index
于 2013-02-11T21:37:49.047 に答える
0

あなたの説明がわかりません

ユーザーが存在する場合、サーバーはユーザーの保存されたソルトを送信します

ここに送られているのは何ですか?パスワードのハッシュ?
はいの場合、セキュリティはありません。ユーザーがクライアントにパスワードを提供し、クライアントが比較のために暗号化されたハッシュをサーバーに送信するという考え方です。一致する場合、ユーザーは認証されています。

于 2013-02-11T21:40:13.553 に答える