- ベストアンサー
SSH2における鍵の種類RSAとDSAについて
- SSH2認証用の鍵を生成する際に一般的に選択できるRSAとDSAの違いについて調べました。
- SSH2では通信の暗号化にはDiffie-Hellman方式を使用しており、認証用の鍵の種類は通信の暗号化には影響しないと思われます。
- RSAとDSAの暗号化強度が同等である場合、SSHでの利用時の差異は処理スピードのみになるでしょう。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> そこで疑問に思ったのですが、SSH2では通信の暗号化はDiffie-Hellman方式で行われているはずなので、認証用の鍵の種類で暗号化をカバーしているかどうかは、通信の暗号化に影響しないのではないでしょうか。 その通り。 > つまり、認証用の鍵が暗号化をサポート(実装)していても、実際にSSHで使われることはなく、DSAを選択すると、まるでSSHで通信しているときに暗号化が行われないような書き方は間違っているのではないかと思います。 え、どこにそんな事書いてるの。仮に「DSAはユーザ認証しかカバーしない」と書かれていたとしても、それは「SSH2においてDSAでユーザ認証を行うと通信も暗号化されなくなる」という理屈にはならないよね。DSAという符号化方式でできることとできないことが書かれているだけだ。 SSH Ver.2にしたって「ユーザ認証にRSA鍵とDSA鍵のどちらでも使える」というだけだ。 > また、RSAとDSAの暗号化強度が同等であると仮定すると、SSHでの利用時の差異は処理スピードのみでしょうか。 まぁ、強いて差がでるとしたらユーザー認証の速度が0.01秒単位でどっちかが速い程度じゃないかな。 ~~~~詳しい解説~~~~ 前述の通り、ssh-keygenなどで作られるRSA鍵とDSA鍵はユーザ認証にしか使われなく、ユーザ認証が通ったあかつきには別の鍵で暗号化した通信が行われる、というかRSA鍵やDSA鍵でユーザ認証が行われる頃には既に通信用の鍵の交換は終わっていて暗号化通信が始まっている。 当然だよね。でないと公開鍵認証の替わりに使えるパスワード認証はどうやって行ってんだって事になる。パスワード認証をする時には既に暗号化通信が始まってないと全くセキュアじゃない。 これは公開鍵認証でも同じ話。公開鍵は「ユーザーのホーム以下に置かれる」んだから、公開鍵認証をやろうと思ったら先にユーザー名がわかってないといけない。ユーザー名の交換の時に平文だったらユーザー名だけとは言えセキュアとは言いがたいよね。 で、ここまで言ったら分かると思うけど、RSA鍵やDSA鍵は「通信の暗号化には全く関与していない」のは推論する必要もない。RSA鍵やDSA鍵を交換する時には既に暗号化通信が始まっているんだから。 ついでと言ってはなんだけど、通信の暗号化(のための鍵を交換する)DHはセッションハイジャックには無効だ。これは、XとYが鍵交換を始める前にZがその通信を奪い、XZとYZでそれぞれ別の鍵を交換するとZはXYの通信を傍受できるというものだ。ここで、XとYが交換する鍵を奪う事はできない(XとYの鍵をお互いにスルーパスして渡すと通信内容を復号化できないから)。そこでSSHはKnown Hostという仕組みで途中にハイジャックが居ない事を確認するようにしているのだね。最初に繋ぎに行くときに聞かれる奴だ。 まぁごちゃごちゃ書いたけど、原理が分かれば疑問は全て晴れるだろうと思うのでSSHがTCPの接続が完了してから実際に通信し始めるまでのシーケンスを調べてみると良いでしょう。
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
> つまり、ユーザー認証で使う分、RSAとDSAの鍵長が同じであれば、ほとんど違いはなく、どちらを選んでもはずれはないということでしょうか。 そのあたりの話はどちらかと言えば政治的な意味合いが強い。 SSH1の頃はRSAしかなくって、で、このRSAに特許に触れるロジックが含まれる事が分かった。 そのためにSSH2ではRSAも引き続きサポートするけど基本DSAを使いなさいねという事になっていた。 のだが、現在ではRSAに関する特許は期限が切れているのでRSAを使うのも問題なくなったのだ。 そういう訳で現在ではSSH2でもRSAを使う事が推奨されているという話を聞いた事があるけど、どこが推奨しているのかは調べてない。
お礼
なるほど!これでスッキリしました。 ありがとうございました。
お礼
遅くなりました。すみません。 大変わかりやすい解説をありがとうございました。 > RSA鍵やDSA鍵でユーザ認証が行われる頃には既に通信用の鍵の交換は終わっていて暗号化通信が始まっている。 確かに言われてみればそうでした。。。 > え、どこにそんな事書いてるの。 誤解する文章ですみません。個人が書いた内容なので、どのサイトなのかは書きませんが、直接的に「DSAを選択すると通信は暗号化されない」などということは書かれていません。 SSH暗号化方式としてRSAとDSAが比較されていて、(もちろんRSAとDSAはSSHの暗号化方式ではないので、書かれた方の認識の間違いなのは明白ですが。)相違点としてRSAに暗号化をカバーすると書かれてあり、結論としてRSAを選択したほうがいい、という内容でした。 つまり、ユーザー認証で使う分、RSAとDSAの鍵長が同じであれば、ほとんど違いはなく、どちらを選んでもはずれはないということでしょうか。