2011-01-13 19 views
0

私はポート1234でリッスンしているサーバーを持っているとしましょう。私はこのポートに接続する必要があるいくつかのクライアントソフトウェアを持っています。しかし、私は、悪意のあるユーザーがクライアントソフトウェアをバイパスし、他の手段(コンソールや別のソフトウェアなど)でポートに接続しないようにしたい。安全な方法でクライアント接続を認証するにはどうすればよいですか?

信頼できるクライアントソフトウェアとサーバは、必要に応じて秘密鍵を共有することができます。私は平文でこのようなキーを送信したくないが、認証後のデータは平文である可能性がある。具体的には、悪意のあるユーザーが信頼できるクライアントソフトウェアを使用してサーバー攻撃に対する正しい応答を計算している中間者攻撃を回避する方法を見つけようとしています。

ここからアクセスできますか?

サーバのリスンポートはlocalhostにのみバインドでき、クライアントはまずssh経由でマシンにアクセスする必要があります。次に、クライアントソフトウェアはsshライブラリを使用して、ローカルポートに接続するサーバ上でコマンドを実行できます(このシナリオでは、悪意のあるユーザはパスワードを持たないため、マシンにアクセスするためにsshを使用できません)。しかし、すべてのトラフィックは暗号化されており、これは追加のオーバーヘッドです。おそらく、認証を行うだけのsshに似たプログラムがありますが、そのあとにプレーンテキストでチャネルを残しますか?

更新:

私はすべてのトラフィックを暗号化に関連するオーバーヘッドを決定するためにテストを実行しました。

spew.rbは100万行を出力します。

CONTROL:

[email protected]> time ssh localhost /home/fantius/spew.rb > /dev/null 

real 0m40.704s 
user 0m19.981s 
sys  0m1.400s 

トップ45%のCPU使用率(ほぼ二を示す:

[email protected]> time /home/fantius/spew.rb > /dev/null 

real 0m35.015s 
user 0m34.934s 
sys  0m0.084s 

トップ

TEST(4つのコアの完全な一個のコア)25%のCPU使用率を示しフルコア)

私はすべての暗号化のコスト最小です。確かに、これはデータ重視のテストです。

答えて

0

あなたはリンクを保護するために何かをすることができます/は転覆されます。あなたはリンクを盗聴されないようにSSLで行くことができます、あなたはアプリにキーを埋め込むことができます。しかし、それらのキーはユーザーの手元にあり、抽出することができます(それを隠す作業にかかわらず)。ほとんどの場合、悪意のあるユーザーがリモートアプリケーションをエミュレート/置換/バイパスすることを「困難」にすることができます。あなたは決してそれを不可能にすることはできません。

SSLオーバーヘッドはほとんどありません - 後で実際にデータを送信する場合よりも、初期ハンドシェイクで一般的に高いオーバーヘッドがあります。リンクを開いたままにしておくと、ハンドシェイクのオーバーヘッドは1回限りのものになり、長いセッションでは無関係になります。キーが再ネゴシエートされると、時折オーバーヘッドが爆発しますが、長期的なリンクでは最小限に抑えられます。

中間者の人は、あなたができることはほとんどありません。銀行はすでに、人々の口座を枯渇させるトロイの木馬が乾燥しているのと同様に、十分な問題を抱えています。誰かが真ん中にいれば、彼らは何でも好きなことをすることができます。十分な監視をすれば、通信プロトコル全体を複製してアプリを複製することができます。

+0

バイナリから秘密鍵を抽出することができれば、完全なアクセス権が得られます。sshは、中間者攻撃に多少なりとも抵抗力があると私は理解しています。少なくとも、クライアントがサーバーから発行されたチャレンジを解決することを要求するシンプルなシステム以上のものです。しかし、私はその追加の抵抗の性質を知らない。 – Fantius

+0

侵入者がユーザのシステム上にいる場合、侵入者は自分自身をTCPスタックに挿入し、SSL層に到達する前にデータストリームを取得できます。 「ミドル」は正確な中間を意味するものではなく、2つのエンドポイント間のどこかを意味します。あなたのサーバー上に侵入者がいるため、同人は行く。 SSL層から出てくるデータをキャプチャできます。 –

+0

http://en.wikipedia.org/wiki/Secure_Shell#Security_issuesによれば、古いSSHは新しいSSHよりMITMの方が脆弱です。私が理解しようとしているのはMITMに対するこの新しい抵抗です。 – Fantius

関連する問題