Q. SSH1(プロトコル 1) と SSH2(プロトコル 2) とがあると聞きました。
どうちがうのでしょうか? また、どちらがより望ましいのでしょうか?
A. SSH1(プロトコル 1) には プロトコル 1.3 と 1.5 があり、
基本的に RSA 公開鍵暗号を用いて認証を行い、通信の隠蔽のために
3DES や Blowfish などの暗号を用います。
通常、「ssh の RSA 認証」と呼ばれる場合には、プロトコル 1 を指す場
合が多いようです。OpenSSH のバージョンによってはこれを RSA1 などと
呼ぶ場合もあります。
SSH2(プロトコル 2) は以前まであった RSA の特許問題の回避を意図して
DSA 公開鍵暗号を用いて認証を行うように実装されたものです。
現在では、RSA の特許問題が解消したので、プロトコル 2 の RSA 認証
というのも存在しています。
相違ですが、プロトコル 1 がデータが改竄されていないかどうかの
チェックに単純な CRC を用いていたのに対して、プロトコル 2 では
より強力な HMAC アルゴリズムによるチェックに改善されています。
また、プロトコル 2 では通信の隠蔽のための対称アルゴリズムを
選べるように設計されているので、理論的にはプロトコル 2 の
方が安全です。
FreeBSD 間でのみの通信が前提となるのなら SSH2 だけにしても問題は
ありませんが、他の OS、ことに Windows 系の OS との組合せでは
クライアントが SSH2 をサポートしてないということもあります。
注意しなければならないことは、プロトコル 1 と 2 の間には互換性が
なく、プロトコル 2 しかサポートしない設定の sshd とはプロトコル 1
しかサポートしていないクライアント(TTSSH など)は通信ができない
ということです。こういったことから、一概にどちらが良いかは
安全性ばかりでは断定はできません。
これらのプロトコル間の相違、実装の歴史、他 OS のクライアントの
実装状況については <URL:http://www.openssh.com/ja/> 以下のドキュメ
ント群が参考になるでしょう。
また、アルゴリズムとプロトコルそして鍵の保管場所の相違などについて
まとめると:
[OpenSSH 2.3 ベース]
例えば 4.3-RELEASE, 4.4-RELEASE の ssh はこちらです。
アルゴリズム プロトコル 秘密鍵 公開鍵
RSA1 SSH1 ~/.ssh/identify ~/.ssh/identify.pub
DSA SSH2 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
RSA SSH2 未サポート
[OpenSSH 2.9 ベース]
4.5-RELEASE, 5.0-CURRENT の ssh はこちらです。
アルゴリズム プロトコル 秘密鍵 公開鍵
RSA1 SSH1 ~/.ssh/identify ~/.ssh/identify.pub
DSA SSH2 ~/.ssh/id_dsa ~/.ssh/id_dsa.pub
RSA SSH2 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
という対応があります(2.3 ベースの OpenSSH のプロトコル 2 には
RSA 認証はありません)。また、鍵のペアの生成の際に ssh-keygen(1)
を使用する場合、ベースとなった OpenSSH のバージョンに依存して
オプションが異なります。
詳しいことは ssh-keygen(1) の man page を参照してください。
グループ名: ssh