TTSSH: TeratermへのSSH拡張
original page...
SSHプロトコルには、いくつかのトラフィック解析に対する脆弱性 (traffic analysis vulnerabilities)が見つかっている。
TTSSHはよく知られた対策方法で修正されている。
この修正はTTSSHの1.5.4版で行われた。
何人かの人がTTSSHはSSHプロトコルversion2をサポートするのか、しないのかを尋ねてきた。
現在サポートされていないし、(私以外の誰かがしなければ)するつもりもない。
申しわけないが、私にはこれを行う時間がない。
どうかこのことについては、質問しないで欲しい。
TTSSHとは
TTSSHはフリーなWindows用SSHクライアントである。
これはTeraterm Proを拡張するDLLとして実装されている。
Teraterm ProはすばらしいフリーなWindows用ターミナルエミュレータ/telnetクライアントであり、
そのソースコードも公開されている。
TTSSHは他のTeratermの拡張機能を犠牲にすることなく、
Teraterm ProにSSHの機能を追加する。
TTSSHもまたフリーであり、ソースコードも公開されている。
TTSSHはオーストラリアで開発されており、
ここから世界中どこへでも持ち出すことができる
(しかし一部の地域では、暗号化ソフトの利用が認められていない :-()。
より正確には、最新版のTTSSH(1.5.4)には以下の特徴がある。
- SSHプロトコル ヴァージョン1.5互換
- 暗号方式: 3DES, Blowfish, DES (RC4とIDEAも含まれているが使ってはいけない
- サーバの認証方式としてssh_known_hostsデータベースを利用可能
(さらに、サーバ鍵をデータベースへ追加することもできる)
- 認証方式として、パスワード、RSA、rhosts、rhosts + RSA、TIS challenge/responseが利用可能
- データ圧縮をサポート
- 完全なX接続の転送を含めた、接続の転送
TTSSHは単にSSHクライアントであり、他のSSHツール(scp、ssh-keygen、ssh-agentなど)は含んでいないことに注意してほしい。
さらに、これはTeratermのせいなのだが、対話的だけにしか利用できない。
プロセス間通信のような非対話的に利用するには、
Unix版クライアントの直接の移植版が必要だ。
What's New
- 2001年3月21日: TTSSH 1.5.4をリリースした。
このヴァージョンで、転送するSSHパスワードにNULを詰める(padding)することでトラフィック解析に対抗した。
- 2001年2月15日: TTSSH 1.5.3のソースとバイナリコードをリリースした。このヴァージョンはRC4とIDEAアルゴリズムを完全に無効にした以外は1.5.2や1.5.1とまったく同じものだ。
これらのアルゴリズムをSSH1で利用することは、セキュリティ問題がある。
- 2001年2月15日: 最近、SSH1プロトコルとその実装の弱点に関する勧告が、いくつか報告された。
TTSSHはそのなかの1個のIDEAの利用の脆弱性だけが影響する。
(RC4の弱点も含まれているが、TTSSHではこれをデフォルトで無効にしている。)
緊急対策は"Setup | SSH ..."メニューでIDEAを無効に(し、RC4がすでに無効になっていることを確認)することだ。
- 2000年9月22日: RSAが特許を持つRSAアルゴリズムが期限切れになった。
これによって、「国際版」TTSSHパッケージをUSAで利用することは完全に合法になった。
- 2000年7月12日: TTSSHソースヴァージョン1.5.2をBSDライセンスでリリースした。
このことはこのソースコードを使って、何をすることも自由であることを意味する。
コードについては何の変更もない。TTSSH 1.5.1は相変わらず最新版のバイナリリリースだ。
- 2000年1月18日: RSAREFセキュリティーバグの警告について、LIBEAY32コードを調査した。
- 1999年12月7日: RSAREFにセキュリティーバグが見つかった。
- 1999年10月18日: TTSSH 1.5.1をリリースした。
1.5版に含まれているポート転送につてのいくつかのバグを修正した。
ありがとう、Dean ThompsonとAttila Filetoth。
このバグはヴァージョン1.5では脆弱性にはならないが、これはただ運がよかっただけだ。
運には頼りたくない(し、他の転送機能にも影響する)ので、新しいヴァージョンをリリースした。
- 1999年9月27日: TTSSH 1.5をリリースした。
いくつかのバグ修正とTIS認証を追加した (Dean Thompsonの手助けに感謝する)。
下記にあるバグ修正リストに目を通してほしい。SSHv2はサポート*していない*;
わたしは、これにリソースをあてることができない。
というのも、この仕事ができるのは年に数週間のUSの外にいる間なのだが、
この時間は他のことで私にとって重要なのである。
誰かがコードを持ってきて追加してくれれば嬉しいのだが:-)。
注記: もしもv1.4で本当に幸せならば、無理にアップグレードする必要はない。
- 1998年12月7日: TTSSH 1.4がリリースされた!
気づいているバグのほとんどを修正した。
X転送を正式にサポートし全ての転送オプションのを追加し、
ちょっとした仕掛 (特に"/ssh-autologin"オプション -- 詳しくはドキュメントページを見よ)。
- 1998年11月3日: これまで多くの人に、いつTTSSHがSSH 2.xをサポートするかを尋ねられた。
残念なことにSSH 2.xはとても大きく、複雑なプロトコルで、スクラッチから書くには多くの作業が必要に思える。
そのうえ、SSH 2.xの機能をTeratermに統合するには、Teraterm本体の変更なしには難しいようにも思える。
申し訳ないが、このプロジェクトを引き受けるのに十分な時間が、将来分かる範囲には無い。
より時間と自由がある人がいればいいのだが...
- 1998年7月7日 ヴァージョン1.3: 海外の友達 (ありがとう jck!) がCORE-SDI patchをSSH挿入攻撃の対策に追加してくれた。
同時にいくつかのバグを修正した。
さぁ!ダウンロードしてくれ!
こちらの手落ちで、ファイルのヴァージョン番号は更新されていないことに、注意してほしい。
ヴァージョンを確認するには、TTXSSH.DLLヴァージョン1.3は158.208バイトです。
- 1998年6月24日: ついにドキュメントを書いた。
- 1998年6月24日: みんなに念を押しておくが、現在私はバグを修正することができない。
というのは、合衆国にいるときにTTSSHの国際版のコードに触れて、
危険にさらしたくないからだ。
(それに私は告訴されたり国外追放させられたくない。)
- 1998年6月24日: "/F"オプションを使って新しい設定ファイルを指定したときに見られるTTSSHのバグに対処するために、
新しいヴァージョンのTTSSH.EXEを作った。
詳しくはドキュメントページを見てほしい。
- 1998年6月6日 ヴァージョン1.2: 接続の転送機能を追加し、少々のバグを修正した。
私は明日アメリカ合衆国に帰るので、
国外にメンテナが見つからなければ、数か月間はこれが最新版であるだろう。
- 1998年6月3日 ヴァージョン1.1: RSA, rhosts, rhosts+RSAのサポートを追加した。
デフォルト認証オプションのダイアログボックスを追加。
ttxssh.exeを追加。
多数のバグを修正(ありがとうDK)。
- 1998年6月1日 ヴァージョン1.02: 他のバグの修正。
SSHでないセッションを使うと、セッション終了時にクラッシュしていた。
- 1998年6月1日 ヴァージョン1.01: おっと!間違ってデバッグヴァジョンをリリースしてしまっていたので、おおくの人は動かなかったようだ。
現在のリリースヴァージョンと置き換えた。
- 1998年5月20日 ヴァージョン1.0: 最初のリリース
TTSSHの取得とインストール
現在TTSSHはWin32版(Windows 95とNT)だけがある。
Windows 3.1をサポートすることは正しい意見だが、わたしはそれを構築するツールを持っていない。
もしかしたら、誰かがこれを解決してくれるかもしれない。
さらに、Intelプラットフォーム版しか存在しない。
繰り返すが、私はこれをコンパイルするツールを持っていないが、
他の誰かがこれを解決することは可能だ。
以下の説明は古いTTSSHを最新のものにする場合にもあてはまる。
ただファイルを上書きするときに"yes"と答えるだけでよい。
- まだしていなければ、
Teraterm 2.3をダウンロードしインストールする。
- TTSSHソフトウエアパッケージをダウンロードする。
- Teraterm 2.3をインストールしてあるディレクトリに展開する。
これによって、LIBEAY32.DLL、TTXSSH.DLL、TTSSH.EXEの各ファイルが作られる。
- "TTSSH.EXE"を実行し、拡張されているか確認する。
"New Connection"ダイアログボックスに"SSH"オプションが、
メニューに、"Setup / SSH..."、"Setup / SSH Authentication..."、"Help / About TTSSH..."というアイテムが新たに追加されているのが確認できる。
- 問題がでたら、MSVCRT.DLLのコピーがSYSTEM32ディレクトリにあるか確認してみなさい。
TTSSHの最新のビルド版では、これを必要としている (ビルド中に失敗したためだ。すまない)。
TTSSHの使い方
TTSSHドキュメントページにある。
政府があなたに知っておいて欲しいこと
このコードにはUS ITAR条例や多くの法に守られた暗号ソフトが含まれている。
これの配布と利用はこの法や条例に制限されるかもしれない。
特に、おそらく合衆国内のサイトでこのコードを公開することは違法である。
私があなたに知っておいて欲しいこと
全ての一般的なフリーソフトウエアに関する能書きが適用される。
どんな保証も無い。
ソフトウェアの全く同一の複製を作り配布することを許可し、いかなる利用に伴う障害も利用者の責任のもとにある。
満喫してくれ!
謝辞
- このコードはIan GoldbergのTop Gun SSH for the Pilotから始まった。
- Eric Youngの暗号ライブラリ、SSLeay 0.8.1を利用している。
彼の著作表示はLIBEAY.TXTにある。
TTXSSHが利用しているLIBEAY32は、完全に外部で構築されている。
- このコードはGNU zlib library (version 1.0.4)を利用している。
このライブラリは(C) 1995-1996 Jean-loup Gailly and Mark Adlerである。
- TTSSH 1.3のアップグレードはJonathan Hardwick, zephyr princeによって行なわれた。
- Dean ThompsonがTISのサポートのテストに協力し、1.5のリリースの助けとなった。
- Attila Filetothがポート転送のいくつかのバグを教えてくれた。
- 最後に、T. Teranishiの協力なしにはありえなかった。とても感謝している!
バグについて
TTSSHはWindows 95とNT 4.0でテストされている。
他のプラットフォームでも動くと思うが、
得られるバグレポートに興味がある。
ヴァージョン1.5.1で修正された1.4のバグ
- SSHセッション中から"New Connection"を使ってSSHでないセッションを開始できるようになった。
- Disconnectiongを行ったあと、同じウインドウで新しいSSHセッションを開始できるようになった。
- コマンドラインからのポート転送オプションが、正しく動くようになった。
- 転送されたポートの接続を拒んだとき、攻撃者のIPアドレスが表示されるようになった。
- 複数のネットワークインターフェイスを持つマシンでも、転送するポートを指定できるようになった。
- 激しくトラフィックの転送を行っているときに固まる可能性を減らすために、バッファリングを追加した (すなわち、SSHv1の転送プロトコルにフロー制御が無いことへの対策である)。
- プロトコルの初期化中にクラッシュさせられることができたのを修正。
- 認証オプションでサーバが利用できるかを反映されるようになった。
- リモート転送が指定されたときに、クライアント-サーバ間の不要な遅延を取り除いた。
- リモート転送が設定されたときの、余計なクライアント・サーバ round tripディレイを無くした。
- 最大パケットサイズを4MBにし、TTSSHをクラッシュさせるためのサービス不能攻撃に対抗する他の修正を行った。
- 防火壁を利用しているユーザに不都合が無いように、非特権ポートをデフォルトにした。
既知のバグ:
- 時々、"close window on disconnect"を指定してあっても、リモートホストを切断してもウインドウが閉じないことがある。
これは、切断を検出したときにダイアログボックスかメッセージボックスを表示すると起きる。
これは明かにTeratermの"特色"で、私には手が出せない。
- 同時に複数の拡張を行っても機能しない (たとえば、同時にSSHとSSLをインストール)。
制限事項
TTSSHをダウンロードして利用することは、完全にフリーである。
もしこれを再配布したければそれを許可するが、
パッケージに含まれたREADME.TXTファイルに目を通すこと。
ソースパッケージの条件は少し緩やかで、
あなた独自のTTSSHを構築したならば、それはもうあなたのものである。
Robert O'Callahan
Yosuke MITSUMASU
Last modified: Fri Mar 23 12:12:10 JST 2001