2010-11-21 14 views
1

Botanユーティリティを使用して暗号化を行っています。 SSHを使用してリモートマシンとの接続を初期化すると、セキュアなSSH接続で鍵を交換できます。しかし、時にはinetdを使用して接続を確立することもあります。この場合、inetd接続にはセキュリティはありませんが、リモートマシンと鍵を交換するために使用する必要があります。安全でない接続で暗号化キーを送信する方法?

私は安全ではないチャネルを介して公開鍵を送信し、リモートエンドはこれを使用して安全でないチャネルを介して私に送り返す鍵を暗号化します。キー。

Botanがサポートするこの種のプロトコルの例は何でしょうか?

+1

あなたは鍵交換を行う必要があり、ディフィー・ヘルマンでしたこれは、http://files.randombit.net/botan/tutorial.pdf鍵ペアの生成は12ページにあります。 – AndreKR

+1

ここでの問題は、古典的なMITMです。最初の送信では、リモート側にはあなたが受け取った鍵があなたのものであるか、攻撃者に属しているかどうかを検証する方法です。リモート側がそれを信用すると決めた場合、攻撃者の鍵に信頼を置いて応答を傍受して代理することができます。安全でない、これがtを持っているかどうかを検証する方法はないこのチャンネルのみを使用しています。 – Piskvor

+2

@AndreKR:あらかじめ信頼を確立しておく必要があります。そうしないと、確立しようとしているのは、それ以降の試みで同じリモートエンドポイントと通信していることです。相手側について何らかの保証を提供し、鍵を安全に交換できるようにします。 – Piskvor

答えて

3

これまでの信頼やサイドチャネルを介した通信がなければ、これを行う方法はありません。 Diffie-Hellman kexを使用すると、接続に参加していない他のユーザーに対して安全なチャネルを確立できますが、意図した受信者と通信していることを確認することはできません。

クラシックMITM例:リモートエンドポイントに接続すると、公開鍵を受け取り、その鍵で署名したものを送信します。しかし、あなたが本当の目的地にあなたの鍵を送ったかどうか、あるいはその応答が攻撃者から来ているかどうかを確認する方法がないので、安全なトンネルがありますが、あなたが安全に通信している攻撃者は意図した目的地に接続して、暗号化されずに通過するトラフィックをプロキシすることさえできます)。

実際に目的のエンドポイントと通信していることを確認するには、あらかじめホストの識別情報を交換するか、セキュアチャネルを使用する必要があります。 SSHはこれを「フィンガープリント」を使って行います。ホストを信頼すれば、最初の接続時にあなたに尋ねられ、独立したチャネルを通じてフィンガープリントを確認するはずです。

2

私が同様の状況で行ったことは、最初に私設/公開鍵のペアを交換するように手配したので、私は各クライアントの公開鍵を持っていたので、私に接続すると、私はそれを解読することができたタイムスタンプ。

タイムスタンプが有効でタイムスタンプが有効であれば(私はタイムスタンプの寿命として5秒を使用しました)、安全に通信する方法があったので、鍵を交換します。

しかし、これは何か前もって行う必要がありました。

匿名ユーザーに接続して、不可能なセキュリティが必要な場合。私はこのような問題に非常に役に立った

一つの記事では、信用できないシステム管理者との安全な通信を持ってしようとしている*プログラミングサタンのコンピュータ」、http://www.cl.cam.ac.uk/~rja14/Papers/satan.pdf、。

関連する問題