0

クライアントのパスワードを彼のデバイスに保存していますが、クライアントがパスワードをサーバーに送信する必要がある場合があります。

  • クライアントが私(サーバー)に接続すると、
  • 暗号化に使用するキーを彼に渡します。
  • クライアントがキーで暗号化されたパスワードを送信するようにします。
  • サーバーは、(保存された) キーを使用してパスワードを復号化し、パスワードを検証します。

完璧ではないかもしれませんが、クライアントとサーバーに保存された 1 つの静的キーを使用するよりも安全に思えます。

十分に単純に聞こえますが、C ++暗号化ライブラリ(crypto ++)を見ていましたが、複雑すぎるようです。

使いやすいものがあることがわかりました。キーツァー。

しかし、私が必要とする機能を提供していないようです。
Keyczar は、暗号化キーを保持するファイルを生成する必要があるようです。このファイルは、そのツールの 1 つによって生成されますが、その場で行うには面倒です。

これが c++ または keyczar で実行できる場合 (実行できることを見逃している可能性があります)、
その方法を教えてください。

ありがとうございました。

Linux/Mac プラットフォーム。

4

2 に答える 2

1

ユーザーがキーを使用してパスワードを暗号化する直前にキーをユーザーに送信する場合は、パスワードを平文で送信することもできます。(とにかく、クリアテキストのパスワードを再構築するために必要なすべてのデータを送信しています。)

より良い方法は、TLSを使用して、nonce で保護された (リプレイ攻撃を避けるため) ランダムに生成されたセッション キーを使用して会話全体を暗号化することです。

本当に凝りたいのであれば、クライアント側の x509 証明書を使用してクライアントを認証することができます。そうすれば、サーバーにパスワードはまったく必要ありません。(ただし、パスワードを使用して、暗号化された秘密キーをデバイスに保存することもできます。)

アイデアは気に入るが、x509 が非常に複雑であるために TLS が嫌いな場合は、ssh キーを使用してsshセッション管理を統合する方が簡単でしょう。ssh キーは x509 キーよりもはるかに簡単に操作できますが、その単純さは、どこにでも適用できるわけではないことを意味します。

于 2011-04-04T10:54:29.887 に答える
1

鍵交換が保護されていない場合、(リプレイ攻撃の減少を除いて) まったく何も得られません。おそらく、トランスポートを保護する目的でTLS/SSLを調べるだけです

于 2011-04-04T10:47:52.957 に答える