FreeBSD QandA 1947

FreeBSD QandA

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


間違い・追加情報を見付けた場合は、 修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで お知らせください。