[OpenSSH]

プロジェクトの目標


私たちの目標は単純です: telnet と rlogin は安全ではない。 だから、すべてのオペレーティングシステムは ssh を含んで出荷されるべきである。 (下のイラスト参照。)

SSH プロトコルには 2種類あります: SSH プロトコル バージョン 1 (SSH1) と SSH プロトコル バージョン 2 (SSH2) です。 これらの間には互換性がありません。

古いほうの SSH プロトコル バージョン 1 には、 2つの変種がありました: バージョン 1.3 と バージョン 1.5 です。 OpenSSH ではどちらもサポートされています。これらは両方とも鍵配送のために 非対称暗号 (asymmetric cryptography algorithm) である RSA (もうアメリカ合衆国の特許が切れたので、今では誰でも好きに使えます) を使い、その後のデータ隠蔽のためにいくつかの対称暗号 (symmetric algorithms) のうちの ひとつを使います。これは 3DES または Blowfish です (他にも RC4 のような暗号方式が少数存在していましたが、セキュリティ上問題がありました)。 プロトコル バージョン 1 の実装には対称暗号として IDEA を含んでいるものも ありましたが、これはいくつかの国で特許が取られており、 他の 2つの方式で充分用は足りるので、OpenSSH では使われていません。

SSH プロトコル バージョン 1 はデータが途中で改竄されていないか検査するために 簡単な CRC を使っていましたが、これには欠陥があることが わかりました。不正なデータを挿入する 攻撃 (insertion attack) が可能になってしまうのです。しかし、 何年にもわたって ssh につぎあてが当てられた結果、 この攻撃は非常に実現が難しくなっています。 3DES 暗号化アルゴリズムを用いた場合、この攻撃はかなり見込みが 低くなります (この問題はもうすぐ解決するでしょう)。

もうひとつの SSH の潮流は プロトコル バージョン 2 です。 SSH プロトコル バージョン 2 は RSA に関する特許問題を避けることを意図してつくられました (現在すでに特許は切れているため、この問題はもうなくなっています)。 また SSH1 の問題だった CRC によるデータ改竄のチェックも修正されました。 非対称的アルゴリズムである DSADH を使うことによって、プロトコル バージョン 2 はすべての特許問題をクリアしています。 CRC 問題も本物の HMAC アルゴリズムによって解決されています。SSH 2 プロトコルでは 他の多くの新機能に加えて、さまざまな対称暗号方式が選べるようになりました。

SSH プロトコル バージョン 1.3 および 1.5 を含んだ OpenSSH のコードは 1999年 12月 1日に出荷されました。

OpenSSH は、その多彩な暗号化機能のために GPL 化されていない OpenSSL ライブラリに依存しています。

私たちがプロトコル バージョン 1 の実装を出荷するとすぐに、 OpenBSD 以外のグループがこれに多大な感心をよせてきました。 Damien Miller や Philip Hands、その他少数の人々が OpenSSH を Linux や その他いろいろな Unix オペレーティングシステムに移植しはじめました。 私たちは、自分たち自身の苦労から、オリジナルの ssh のコードがあまりに 複雑すぎると感じはじめていました。書き換えなければならない オペレーティングシステム依存の部分がとにかく多すぎるのです。 私たちの、絶対安全で岩のように堅実なコードを書くというアプローチは このような極端な差異を避けています。そのため、開発プロセスすべてが 私たち全員にとって簡単になるように、私たちは核となる開発と移植版の開発とを 分けることにしました。これは今のところ非常にうまくいっています。 (基本となるコードの行数と、移植版のコードの行数を比べると その違いがよくわかるでしょう。)

これ以降、OpenSSH の作業を行っている OpenBSD プロジェクトのメンバーは プロトコル バージョン 2 もサポートするよう力をつくしました。これはおもに Markus Friedl の功績によるものです。 2000年 5月 4日現在、SSH プロトコル バージョン 2 の実装は十分に実用的です。


まだ“みえみえ”ログインしてるの?


OpenSSH www@openbsd.org
$OpenBSD: goals.html,v 1.19 2006/06/12 14:51:42 saad Exp $