• ベストアンサー

自己署名証明書(オレオレ証明書)の暗号化について

SSL暗号化通信の仕組み自体は,下記URLの通りとして把握しております. (1*) http://www.twsvc.com/about_ssl (2*) http://www.ibm.com/developerworks/jp/websphere/library/web/web_security/pdf/2_6.pdf これを,オレオレ証明書を用いた暗号化通信で考えると,セキュリティに関する識者である高木氏は,自分の日記にて以下のように書いています. >共通鍵暗号による暗号化通信をしています。鍵は一緒に配送します。この暗号は正常に機能しているでしょうか? >「今の話は共通鍵暗号じゃなくて公開鍵暗号だろ」って? オーケー、では、次の比較に対してどう答えるか。 >1.共通鍵暗号による暗号化通信 >2.公開鍵暗号による暗号化通信で認証なし(認証検証時の警告を無視する使用形態) >3.公開鍵暗号による暗号化通信で認証あり (略) >では、1.と 2. を比べたときはどうか。「3.ほどではないが 1.よりは 2. の方がまし」と言えるだろうか? それは誤りである。 (略) >公開鍵暗号の公開鍵がいっしょに配送されている暗号化通信では、傍受点で、流れてきた鍵を、別途用意した自作鍵に差し替えて流してしまえば、それで暗号化されて戻ってくる暗号文を復号できる。 ※詳細は,高木氏の「PKIよくある勘違い(1)「オレオレ証明書でもSSLは正常に機能する」」をご参照ください. ここで,疑問になるのが,”傍受点で、流れてきた鍵を、別途用意した自作鍵に差し替えて流してしまえばいい”という点です. オレオレ証明書では,ルート証明書にたどり着けないため,ブラウザはオレオレ認証局の公開鍵をもっていない. そのため,サーバ証明書内の公開鍵を取得できない. だから,サーバ証明書送付時にオレオレ認証局の公開鍵を送付する必要がある. オレオレ認証局の公開鍵を用いて,サーバ証明書から公開鍵を抜き出す もしこのとき,オレオレ認証局の公開鍵が自作鍵に置き換えられたとしても,ただ単にサーバ証明書から公開鍵を抜き出すことができず,そこで通信が終了すれば”それで暗号化されて戻ってくる暗号文を復号できる”ことも無いように思えるのですが,いかがでしょうか. (つまり,高木氏の言う差し替えた自作鍵でサーバ証明書内の公開鍵が取得できるかどうか) これができなければ,確かに暗号化通信(というか通信そのもの)自体は破綻していますが,高木氏の懸念しているような「重要な情報の流出」にはつながらないように思えます. 乱文になってしまいまして申し訳ありません. もし,私自身に勘違いや解釈違い等ありましたら,ご指摘いただけると幸いです. よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

いわゆる中間者攻撃の問題です。 サーバA と クライアントB が通信しようとしているときに、 中間者Xが入って、サーバA-中間者X-クライアントB となった場合、 中間者Xは、 サーバAに対してはクライアントBのフリを、 クライアントBに対してはサーバAのフリをします。 つまり、 サーバAから中間者Xが受け取ったデータは、サーバAの鍵で復号したあと、X自身の鍵で暗号化してクライアントBに送り、 クライアントBから中間者Xが受け取ったデータは、自身の鍵で復号したあと、サーバAの鍵で暗号化してクライアントBに送るのです。 そうすることで、見かけ上暗号通信できているようでありながら、Xにはすべてが筒抜けになってしまいます。 この場合、クライアントBが実際に受け取るのは、Xが作ったオレオレ証明書です。 Aがちゃんとした証明書を使っていたら、「サーバAからなぜかオレオレ証明書が送られてきた」と、中間者攻撃の可能性に気付くことができるわけですが サーバAが最初からオレオレ証明書を使っていた場合、送られてきた証明書が、サーバAのものなのか、中間者Xのものなのか、どちらなのかを区別することはできないことになるのです。

gottyato
質問者

お礼

ああ,中間攻撃者の問題だったのですね…. 基本的なところを見落としていました. ありがとうございました.

その他の回答 (2)

  • kadusaya2
  • ベストアンサー率48% (114/235)
回答No.3

その「高木氏の日記」の内容が分からないのでハッキリとは言えませんが、何か・・・、まっ、それは置いといて。(^_^// 共通鍵で暗号化されるのはご理解できていると思います。で、その共通鍵の受け渡しに使われるのは、サーバの秘密鍵と公開鍵(だけ)です。 サーバの秘密鍵はサーバの中にあって、絶対に通信などで外部に出ることはありません。しかし、サーバ公開鍵はサーバ証明書の項目の一部ですので、SSL通信でブラウザに渡されます。 SSL通信自体で、ルート証明書やその公開鍵が必要になることはありません。ルート証明書が無くてもSSL通信は行われます。 ブラウザはサーバ証明書の検証を行います。 まず、サーバ証明書の「機関キー識別子」と同じ識別子を持つルート証明書を、信頼するルート証明機関の中から探します。 信頼するルート証明機関の中で見つからなければ、「サーバ証明書が信頼するルート証明機関から発行されていません」旨のエラーメッセージを表示します。 「信頼するルート証明機関」は、IEのツール→インターネットオプション→コンテンツ→証明書→信頼するルート証明機関の順にクリックしてください。 また、サーバ証明書の署名値をルート証明書の公開鍵で復号化し、サーバ証明書の基本領域(サーバの公開鍵が含まれている部分)をハッシュしたものと比較します。 この比較が異なっていれば、「この証明書は破損しているか、改ざんされています」旨のエラーメッセージが表示されます。 ちなみに、「オレオレ認証局」という言い方は「自称 専門家」が使う言葉で、2chでサーバを鯖と呼ぶのと同じです。 専門用語は「プライベート認証局」で、本当の専門家は本当の専門用語を使います。

  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

オレオレ認証局だけでなく、サーバ証明書も自作したものに置き換えればいいでしょう。 元のサーバ証明書の公開鍵を自作鍵に書き換え、その証明書を自作認証局の 秘密鍵で暗号化すれば、自作サーバ証明書のできあがりです。 高木さんの,”傍受点で、流れてきた鍵を、別途用意した自作鍵に差し替えて 流してしまえばいい”というのは、サーバ証明書の公開鍵の差し替えのことを 言っているのだと思います。

関連するQ&A