公開鍵暗号による Challenge & Responseって?

件のIBM developerWorksサイトのOpenSSH解説ウェブページの第1回では、『RSA/DSA鍵の仕組み』という章でSSHのRSA/DSA鍵を使ったユーザ認証に関して、

ここから先がかなりおもしろいところです。Remoteboxのsshdは乱数を生成し、先にコピーしておいた公開鍵を使用してそれを暗号化します。次いで、この暗号化した乱数をlocalboxで実行されているsshに送り返します。それを受けてsshは、私有鍵を使用してこの乱数の暗号化を解除してそれをremoteboxに送り返します。これは要するに「ほら、対応する私有鍵を間違いなく持っていますよ。メッセージの暗号化を解除できましたよ。」と言っていることになります。
という説明を行なっている。詳しくは省くが、これはいわゆる"Challenge & Response"と呼ばれるスキームに基づく認証方法を、公開鍵暗号の仕掛けを用いて実現したものと言える。

で、これは一見正しそうに見えるかもしれないのだが、

  1. このタイプのユーザ認証を行なうのはSSH1プロトコルのみなんだが、章のタイトルに入っているDSAはSSH2プロトコルじゃないと使えないのさ
  2. DSAは電子署名にしか使えず『乱数を公開鍵で暗号化する』なんてことは当然できないので、DSAを引合いに出す以上電子署名という形で説明しなきゃダメ(で、電子署名の説明を『データを秘密鍵で暗号化して…』とか始めたりするんだよな…)
  3. で、128歩くらい譲ってSSH1プロトコルの説明だと思って読んでも、これでは重要なところが抜けてる
というように、非常に不正確な内容と言わざるを得ない。

このうち 1. と 2. は言うまでもなく明らかなので、最後の項目についてだけちょっと補足しておこうか。とも思ったんだけど、内容は2chのUNIX板sshスレッドで指摘したことと同じなので、それに対する説明ですべてが尽きてる気もするんで、とりあえずそっちを見てみてそれでもまだなんか疑問とかあったらメールしてちょ。

2002.5.30 追記:
そういえば、上のリンクで出て来るMITMって言葉について思い出したことがあったもんで、二つのMITMって?という文章を追加したっす。

あと、この著者最後まで一貫してRSA 鍵は SSH1 でしか使えないという論調で通してるんだけど、この記事が書かれた 2001 年 7 月にはとっくに SSH2 @ OpenSSH でも RSA 鍵が使えるようになってるんだよねー。こういう情報の遅さも致命的なんだよなぁ。いまどき SSH1 プロトコルを使うなんてのもそもそも危ないことなんだしね。


稲村 雄 =JANE=
Last modified: Thu May 30 12:29:08 JST 2002