2

回答:相互 SSL 認証を使用しています。今は何の問題もありません:)

私はサーバープロジェクトに取り組んでいます。XOR 暗号化/復号化方式でクライアントを認証しようとしましたが、これは十分に安全ではありません。ソケットで SSL を使用することにしましたが、使用できません。System.Net.Sockets.Socket ベースの接続があります。つまり、これが必要です: Tcp 接続が着信している場合、クライアントのソケット接続を認証します。(すべてのソケットは、ポートからサーバー ソケットに接続できません)。誰かが私に出発点やいくつかの例を教えてもらえますか? (ここが私のサーバーのデッドポイントです。出来なかったらキャンセルします!)

EDIT1:私のシステムは現在そのように動作しています:

  • クライアントがサーバーに接続されました。

  • サーバーは 16 バイト長のランダム キーを作成し、それを serverKey (XOR) で暗号化し、クライアントに送信しました

  • クライアントはserverKeyでデータを復号化し、clientKeyで暗号化して送り返しました

  • サーバーの復号化されたデータとチェックされたデータは同じです

    (クライアントが接続すると、認証タイムアウトのタイマーが開始されます)

EDIT2:今、私は他の暗号を使用しています。クライアントが接続すると、それが送信され、クライアントはそれを復号化して送り返します。暗号化は次のように機能します。

byte[] を特別な方法 (プロではない) で暗号化します。その後、byte[]のハッシュコードを取得します。このハッシュ アルゴリズムは私が作成したものであり、それを知らない人は、暗号化された byte[] を決して理解しないでください。(すでにハッシュ出力は戻ってきません)。そして最後に、ハッシュと暗号化を組み合わせます (XOR のような特別な方法)。

この方法では、誰もデータを復号化/クラックすることはありません。それ以外の場合は、非対称の暗号化/復号化方法があります ( http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange )。後で (ハード) 非対称暗号化を使用して認証システムをアップグレードできます (それが十分でない場合)。

4

3 に答える 3

0

あなたの質問に対する答えは、相互認証で SSL を使用することです。質問に「SSL」というタグを付けたので、おそらくそれは許容できる解決策です。

「私にはできない」という言葉の意味を説明する必要があります。

于 2013-04-07T00:56:18.740 に答える