0

問題は次のとおりです。サーバーとインターフェイスするデスクトップアプリケーションを開発していて、クライアントはログインする必要があります。SkypeやIMアプリケーションのようなものです。クライアントに自動的にログインするオプションを提供したい。アプリケーションがロードされるたびにクレデンシャルを入力する必要はありません。

クライアントの情報を保護しながら、どうすればこれを達成できますか?

ありがとう、私はこの問題を何日も考えていました、そして私は解決策を思い付くことができないようです。この段階では、ヘルプやガイダンスはすべてゴールドになります。

4

1 に答える 1

1

サーバーへの安全な通信チャネルを使用している場合(たとえば、SSLを使用している場合)、ユーザー名とパスワードのハッシュを送信できます(SHA-512などの暗号化された安全なハッシュ関数を使用します-実行可能な衝突やプリイメージは知られていません)攻撃)。

ローカルに保存するのは、ユーザー名とパスワードのハッシュです。サーバーへの通信チャネルが安全であるとすると、送信された情報は他の誰にも表示されません(リプレイ攻撃は不可能です)。また、暗号化された安全なハッシュ関数を使用するということは、それが一方向性関数であり、元の入力に「戻る」ことがないことを意味します。

別の方法は、ログインが成功したときにサーバーから認証のトークンを取得することです。次に、プロトコルは、特定の期間内にトークンと組み合わせたユーザーの認証を受け入れることができます。そうすれば、パスワードのハッシュをローカルに保存する必要はなく、ユーザー名とトークンだけを保存できます。したがって、誰かがトークンを取得すると、ある時点で期限切れになります。ただし、正しいユーザー名とパスワードの組み合わせでのみ、別のトークンを使用してトークンを再発行しないでください。さらに、トークンを使用してログインした場合も、ユーザーがパスワードを変更/表示できないようにする必要があります。さらに先に進みたい場合は、トークンを特定のIPアドレスからのみ機能するように制限することもできます。

于 2012-04-14T10:26:21.557 に答える