- PR -

SSLでも「なりすまし」

投稿者投稿内容
blunder
ベテラン
会議室デビュー日: 2003/09/11
投稿数: 65
投稿日時: 2007-01-30 03:03
加納様、ありがとうございます。

引用:

加納正和さんの書き込み (2007-01-29 22:22) より:

。。。そうなんですか?私はまた、以下だと勝手に思ってました。

(1)質問者はSSLとやらを使えばすべてOKだと思った。
(2)あるとき「なりすましとやらにどうやって対応するの」とたずねられた
(3)SSLだから大丈夫です、と答えた
(4)どうして?と尋ねられて解答できなかった
のだと思ってました。



そうでしたか。これはちょっと意外です。私はここが違う理解でした。私は質問者が
SSLでもなりすましができると主張しているのだと思っていました。

引用:

個別なのか。。一応PKIの範囲なはずなのだが、、「証明の確認」は、
私はX.509証明書検証を意図していたつもりでした。



「証明の確認」の意味は私も同じ理解です。
「データ通信」は共通鍵を使ったアプリケーションデータの通信を指すと思ってました。
「確立」ははっきりとしませんが、セッション確立のような気がします。

質問者の意図は、よくはわかりませんが、推測すると、公開鍵は認証用、共通鍵は
データ通信用と考えているのではないかと思います。で、質問者の説は「SSLでもなり
すましはできる」です。おそらく「認証は公開鍵でやるんだから、共通鍵を使った処理
では認証されないだろ、そっちは単なる暗号化なんでしょ、だからデータ通信ではなり
すまし可能なんじゃないの」みたいな推論をしているのではないかと私は思います。

それを「セキュリティ強度?が別個」のような言い方をしているので、わかりにくく
なっています。要は共通鍵を使っているときは、認証のセキュリティ強度?は提供され
ないと言いたいのではないかと思います。

引用:

SSLのレイヤーにRecordやAlertがあることは、SSLを実装する人ならともかく、
SSLを使いたいだけの人には、ほぼ無意味のような気がします。



はい、その通りです。私が言ったのは、ちょっと違った意味でして、SSLでもなりすまし
ができるという説を立てる人は、その辺も知っておいたほうがよいかもしれないというこ
とでした。

引用:

ちなみに、SSLの「なりすまし」は、原理上クライアントとサーバの両方
ありえるのですが、質問者はどちらを意図したのでしょうね。



私の理解ではどちらでもありません。質問者はSSL自体の保護機構を回避することは考え
ておらず、SSLの保護機構が働いていてもなりすましができると主張しているのだと解釈
していました。

「証明の確認は、お互いの確認であり」という文面があったので、SSLレベルでは
クライアント認証、サーバ認証とも行なわれているという前提だったかもしれません
が、「お互いの」がそういう意味だったかどうか定かではありません。

あとの部分ですが、たいへん興味深く拝見させていただきました。せっかくていねいに書
いていただいたのに、もう一つ加納様のおっしゃっていることの真意がつかみきれていな
い気がします。ですので平行線になってしまっているかもしれません。また改めて考えて
みたいです。

では。
blunder
ベテラン
会議室デビュー日: 2003/09/11
投稿数: 65
投稿日時: 2007-01-30 11:42
引用:

加納正和さんの書き込み (2007-01-29 22:22) より:
SSLとセッションIDは、あまり関係ないのに言及したのはそのせいです。
ほとんどの場合、SSL+パスワード認証でなりすましをほぼなくせると
いえばなくせます。なりすますためのパスワードを「盗聴」できない可能性が
高いからという理由です。

セッションIDの振り出しは、SSLと関係ないといえば関係がないので、
あえてパスワードを含めた「データの意味内容」はSSLでは保護しないと書いた
までです。

例えばSSLサーバを構築したとして、パスワードがソーシャルハッキング
でばれていた場合は、たとえSSLサーバであったとしても成りすましは
起こりえます。

という状況なのか、よく分からないので、前の回答になりました。
最近は多いと思ってるのですが、、、よく分からないけど「SSL」しとけばOKみたいな。

SSLだろうがなんだろうが、成りすましはありえます。自分で設計しない限り。

#SSLクライアント認証は、あえて無視しています(成りすまし防止は当然なので)



私の考えも近い気がします。SSL+パスワード認証の強度はいくらSSLを使っていても
パスワードレベルの強度しかないと思います。辞書攻撃可能なレベルといってもいい
ように思います。

SSLでパスワードの盗聴を防いでいるという理解も同じです。

ですから結論はSSLでパスワードの通信経路上での盗聴は防げるが、すでにパスワード
が攻撃者の手に渡っている場合においては、SSLでもなりすましは防げない、でよいの
ではないですか。

引用:

SSLサーバ証明書は二つ意味合いがあって。

(1)公開鍵にてプレマスターシークレットをクライアントで暗号化してサーバにて復号す>る。ついでにHMAC(ぢゃないけど)で完全性を保障する
(2)SSLサーバ証明書の記述内容を検証(証明書検証 certification verify含む)する。



これは何となくわかったようなわからないような感じです。私は証明書はCAの署名が
ついていることに意義があるのかなと思ってました。公開鍵の持ち主が誰か、という
ことをCAが保証してくれてるのかなと思ってました。(1)のプレマスターシックレットの
共有自体は証明書なしでもできると思いますが、その前に認証しておきたいから証明
書がいるのだと思ってました。(2)のほうは同じ考えです。

引用:

本来、証明書検証はクライアントが勝手にやる処理です。証明書のSubjectのCNに
SSLサーバのFQDNを書く仕様も、後づけのような気がしますし。



そうなんですか。

「勝手にやる」というと任意のように聞こえますが、仕様上MUSTだと思ってました。
またCommon Nameフィールドを使うのは過去からの慣習で、後づけで出てきた仕様上
はsubjectAltName拡張を使うようになっているのだとばかり思ってました。ただし
検証のときは両方を見る(subjectAltName優先)のだと思ってました。私はちょっと
うろ覚えです。加納さんのおっしゃる仕様が、もしお分かりであれば教えていただけ
ると嬉しいです。

引用:

#ここまでSSLサーバ証明書を無視するのなら、公開鍵だけ送りあうSSL仕様の方が
#良かったのかな。。。と思わないでもありません。そんなものはありませんが。



認証(証明書)が不要なのだったら、現状のSSLでもDH_anonを使えばよいとは思い
ます。どうせ認証しないのだったら、Diffie-Hellman鍵共有で共通鍵だけ共有できれ
ばよいので、公開鍵を送りあう必要もないでしょう。ですので現状でも認証(証明書)
の機能を外すことはできるようには思います。ただそれをやってしまうと、誰かわか
らない相手と鍵共有しているかもしれないので、いくら暗号化してますといっても
ビット列がスクランブルされているだけになってしまうかもしれませんよね。つまり
暗号化の目的である通信の秘密保持は弱まってしまうと思います。やはり正しい相手
に伝わってこその暗号ではないかと私は思います。

公開鍵だけだと、「誰の」公開鍵かわからないから、わざわざCAに頼んで署名しても
らってるのだとばかり思ってました。もちろん公開鍵が誰のものかが自明の環境で
あれば、わざわざCAに頼むこともないとは思いますが。で、公開鍵が誰の公開鍵かよ
くわからないのに、鍵交換してしまうとまずい(中間者攻撃を受ける恐れがある)と
いうのがSSLの思想で、だからSSLでは認証つき鍵交換を行なっているのだと思ってま
した。ですから私はSSLを使うときは認証を外したいとは思わないですね。ただ世間
の常識とか慣行とかがどうなのかは私も疑問には思います。加納さんのおっしゃる
ように認証(証明書)を無視するタイプの人たちは存在しますよね。

引用:

とは言っていられないのでEVとかの規格が出てきたわけですが。

http://www.verisign.co.jp/server/products/ev_ssl.html
http://www.itmedia.co.jp/news/articles/0611/08/news022.html



はい、これは勉強してみます。

私は加納さんのお話で、どこが本論なのか、どこからが脱線なのかがよく理解できてない
です。お話は大変興味深いのですが、加納さんの頭が良すぎて、次から次へと話題展開
してしまうため、私の頭ではどうも話に追い付いていけないのです。ですが、お話の内
容は、話題豊富であり、楽しく読ませていただいています。こんなことをいうと失礼か
もしれませんが、子供のときのように脱線が多くて話の面白い先生の授業を聞いている
ような感じがします。

ところでこのスレッド、誰も読んでないということはないですか。議論を続けても誰か
らも関心を持たれてないような気がしています。

では。

スキルアップ/キャリアアップ(JOB@IT)