LGPKI Application CAルート証明書の配布は各自治体ごとに行われているが、 たとえば東京都の配布サイトでは、「安全な通信を行うための証明書 使用許諾」に同意しないとダ ウンロードできないように説明されている。ここには「禁止事項」が規定され ているのだが、認証局の公開鍵証明書をどう使おうがそんなのは利用者の勝手 だろう*1。 コースターとして使おうがちり紙として使おうが自由だ。 ましてや、「証明書」という性質のデータに著作権などあるはずもないわけで、 そもそも「使用許諾」などと称すものをここで掲げること自体、大きな勘違い に基づいているように思えてならない。
さて、東京都が規定している「禁止事項」の文は次のようになっている。
1.禁止事項
安全な通信を行うための証明書の入手と設定に当たっては、次に掲げる行為を 禁止します。
(1) 本証明書を、証明書ポリシー(CP:Certificate Policy)に定められてい る目的以外に使用すること。
CPに定められている目的以外に使用しない……というが、CPが定める目的とい うのは認証局側が守るべき事項なんじゃないか?
CPとは、認証局がその証明書をどのような目的にしか使用しない、つまり、ど んな証明書しか発行しないということを、消費者に対して約束する(その認証 局証明書を信頼済みルート認証局として登録する利用者に対して保証事項を約 束する)文書である。なのに、CPに定められている目的以外に使うなと我々に 対して要求しているのである。
そもそもそれ以前に、この文書は他人に何かを禁止する性質の文書としての体 をなしていない。なぜなら、「証明書ポリシー(CP:Certificate Policy) に定められている目的」という文が何を指すのかが不明だからだ。
この点について、2月だったかに東京都に電話して尋ねたことがある。「禁止 事項にある『CPに定められている』とは、CPのどの条項のことを指すのですか?」 という趣旨の質問をしたところ、即答できず、折り返し電話ということになっ た。折り返しの電話で得られた回答によると、この「目的」とは以下の部分の ことを指すそうだ。
1.3.2 適用性・適用環境など
アプリケーション証明書は、以下の用途及びアプリケーションでの使用を前提とする。
・Web サーバ証明書
地方公共団体で運営されるWeb サーバ等の各種サーバに適用し、住民・企業等に 対するホームページによる広報及び申請業務等や地方公共団体内の業務システム 等で使用する。また、地方公共団体組織認証基盤として運用される各種サーバに適 用する。Web サーバ証明書の有効期間は、証明書を有効とする日から起算して3 年とする。
・メール用証明書
地方公共団体の広報担当者による住民・企業等向けメールマガジンの発信等に使用 する。メール用証明書の有効期間は、証明書を有効とする日から起算して3 年とす る。
つまり、ルート証明書の「使用許諾」では、サーバ証明書とS/MIME証明書以外 の目的に使うなと規定していることになるわけだが、使うなと言われても、 それは一般の利用者にとって何を意味するのだろうか。
さてここからが本題であるが、じつは、これは具体的に何を指しているのかと いうと、東京都の「安全な通信を行うための証明書の組み込み方」のページに 書かれている、「4.証明書の設定」のことを指すのだ。要点は図1の部分にある。
このように、Windowsの証明書ストアでは、証明書の「プロパティの編集」 機能で、その証明書の利用の範囲を限定する設定が可能になっている。 東京都は、「サーバ認証」と「電子メールの保護」だけを有効にせよと指示し ている。「使用許諾」で「禁止事項」とされてい たのは、この通りの以外の設定をする行為が禁止されていたのである。(電話 で問い合わせた際、そのような趣旨の説明を受けた。)
この「証明書の目的」の限定は重要だ。もし「すべてを有効にする」を選択し ていると、下のチェックボックスのリストに挙げられているあらゆる目的で使 われることを許してしまう。
つまり、もし認証局が悪意を持って、もしくはミスによって目的外の証明書を 発行してしまった場合や、あるいは、認証局のミスで秘密鍵が悪意ある者の手 に流出した場合、それによる攻撃がもたらすなりすまし被害は、ここに挙げら れたあらゆる目的の認証パス検証において生じてしまうわけだが、ここをきち んと設定して、「次の目的だけを有効にする」とし、ルート認証局の証明書発 行ポリシーに定められた目的だけに限定させておけば、万が一の被害を最小限 に抑えることができるわけだ。
実際、図2のように、Windowsのルート証明書ストアに最初から登録されている 各ルート認証局の証明書は、すべてきちんとこの目的の設定がなされている。
ところが、後からユーザが手作業でルート証明書を登録した場合には、「この 証明書の目的をすべて有効にする」がデフォルト設定となっているのだ(図3)。
これは、「すべて有効にする」がデフォルトという Windowsの設計が悪い*2 のだが、それを言っていても始まらないわけで、東京都はユーザに対し、この 設定を怠ることを禁止しているわけである。
じつは、同様の設定を指示している自治体は他にもある。たとえば以下だ。
「信頼されたルート証明機関」から「Application CA」を選んで「表示」 ボタンを押し(図4)、現れた証明書プロパティのウィンドウで「詳 細設定」タブを選んで「プロパティの編集」ボタンを押せと指示されている。
と・こ・ろ・が、だ。
以下の自治体の場合を見てみよう。
これらの自治体はいずれも、図5のように、「詳細設定」ボタンを押せと言っ ている。(「表示」ボタンではなく。)
すると、図6の指示にあるウィンドウが現れるので、ここの「証明書の目的」 欄の「サーバー認証」と「電子メールの保護」だけチェック状態にせよという。
この設定画面は何だろうか? 図1のものとは異なる。
じつはこれ、証明書の使用目的を限定する設定ではないのである。
画面のタイトルにあるように、これは「詳細オプション」であり、「[高度な 目的]の一覧に追加する目的を1つ以上選択してください」という項目の他に、 「エクスポート形式」という項目も並んでいる。これは、ひとつひとつの証明 書に対する設定ではなく、証明書ストア操作画面での操作の好みを設定する (カスタマイズする)ところなのだ。
もっと具体的に言うと、「[高度な目的]の一覧」とは何なのか? だ。その答 えの鍵は、図7の矢印部分のメニューにある。
この「目的(N):」というメニューを開いてみると、図8のようにメニュー項目 が現れる。ここに「<高度な目的>」という項目がある。そして、このメニュー は最初の状態では「<すべて>」が選択されている。
このメニューがどういう機能のものかというと、下にある証明書一覧リストに 表示させる証明書を、その目的設定に従って絞るというものだ。
つまり、このメニューで「<すべて>」が選択されているときは全部の証明書が 表示され、メニューで「サーバー認証」を選択したときは、図1の設定で「サー バー認証」がチェックされている証明書についてだけこの一覧に表示されると いうものだ。
ユーザの立場から言えば、ユーザが「S/MIME署名の検証用に使っているルート 認証局を調べたい」と思ったら、このメニューから「電子メールの保護」を選 べば、それに該当する認証局だけがリストアップされる。そういう仕組みだ。
そして、証明書の目的の種類には数多くのものがあるわけだが、デフォルト設 定では、このメニューには少しだけの項目しかない。たとえば「コード署名」 の項目がメニューにない。というのは、デフォルト設定では「コード署名」は 「<高度な目的>」グループに分類されているからだ。つまり、「高度な目的」 グループに分類されていないものがメニューに単独で現れているのである。
というわけで、図9の設定画面が何なのかというと、これは、このメニューで 「高度な目的」グループに分類するのをどれにするかを選ぶところなのだ。 もし、「コード署名」をメニュー項目として出したいならば、図9の画面で 「コード署名」のチェックを外せばよい。「<高度な目的>」グループから外さ れるからだ。
というわけで、岩手県、福島県、茨城県、栃木県、静岡県、岐阜県、滋賀県、 京都府、兵庫県、岡山県、山口県、沖縄県などが言っていることは、滅茶苦茶 に頓珍漢なのである。これはメニューのカスタマイズをさせているだけなのだ。
沖縄県の例
京都府の例
兵庫県の例
静岡県の例
山口県の例
滋賀県の例
岐阜県の例
岩手県の例
栃木県の例
どうしてこんな愚かなことになってしまっているのだろうか。 何か抜本的な対策が欠けているはずである。
かなり長いエントリだけど本題は以下の2文。というわけで、岩手県、福島県、茨城県、栃木県、静岡県、岐阜県、滋賀県、京都府、兵庫県、岡山県、山口県、沖縄県などが言っていることは、滅茶苦茶に頓珍漢なのである。これはメニューのカスタマイズをさせているだけなのだ。
ホームページを含めて、記事に誤りは付き物です。 4月の5日に公開した「がせビア」もそうですが、誤り自体についてとやかくいうつもりはありません。 問題は、指摘を受けた場合の「対処にかかる時間」です。 ちなみに、「がせビア」ネタのホームページには、9日に再度 誤..