この記事は電子証明書の中身を覗いてみる(その1)のつづきです
電子署名は証明書の持ち主が、その暗号鍵で暗号化した文字列をPDFに埋め込み、受け取った側は証明書の公開鍵で正しく読めたことで、証明書の持ち主が確かに電子署名をつけたということを確認できる、そういう仕組みなんだっていう話まで聞いたけど、公開鍵や暗号鍵がなりすましでないことをどうやって証明するのかっていうのが今回の話かな。
前回、電子証明書の中身を実際に見てみるということをしました。電子証明書には持ち主の情報とその持ち主の公開鍵が書かれているパートと、その公開鍵とのペアになる暗号鍵のパートがあって、真ん中に電子証明書の発行者のパートがついている場合があって、そういう複数の部分に分かれているというお話をしましたね。
PDFファイルに電子署名をつけると、そのPDFファイルには暗号鍵で暗号化した文字列だけでなく、持ち主の電子証明書の、暗号鍵のパートを抜いたデータもいっしょにくっつけられます。つまり持ち主の公開鍵はPDFファイルといっしょになっているので、持ち主の暗号鍵で暗号化された情報はPDFファイルにくっついている公開鍵で解読できて、持ち主が署名したことを判断できるのです。
なにそれ、なりすましがなりすまし暗号鍵で暗号化した情報となりすまし公開鍵をPDFにくっつけて、受け取った側はなりすまし公開鍵で暗号化情報を読み取れるから大丈夫ですねって話ですか。全然大丈夫じゃないじゃん。
そこで発行元の登場となります。電子証明書の最初のパート、つまり署名をつけようとする人の情報が書かれている部分をもう一度よく見てみましょう。
issuerとしてこの証明書がSECOM Trust.net Co.Ltd.で発行されたということが書かれています。実はこのパートには、opensslコマンドが表示していない情報が含まれていて、それはSECOM Trust.net Co.Ltd.による電子署名なんです。
電子証明書を発行するときに、発行者自身が保管している発行者の暗号鍵を使って、電子署名をつけているのですよ。
えーっとそれはつまり、SECOMがTAKASHI IKEDAさんに電子証明書を発行しました、そのことを証する電子署名をつけて渡しますと、そういうことか。SECOMによって電子証明書がなりすましでないことを保証しているということなんだね、なるほど。SECOMなら大会社だから信用できる、ってなるのかなあ。そのSECOMがなりすましで、なりすましTAKASHI IKEDAさんのなりすまし電子署名を出していたらどうするの。
SECOMがつけている電子署名がなりすまし者のものではないことはどうやって保証されるのか、たかしさんが「こんなのが表示されます」と聞いてこられたものの理由がそこなのです。つまりAcrobat Readerが「SECOMの署名が本物かどうかわからない」と、そのように言っている表示なんです。
電子署名は便利だし安全だというような話を聞いていたから興味をひかれたのに、結局なりすましかどうかの判別ができないなんて、がっかりだな。
まあそう引かないでください。
SECOMの電子署名がなりすましによるものではないことを証明するには、正しいSECOMの公開鍵で確認すればよいのです。正しいSECOMの公開鍵の入手方法としては、別途SECOMのサイトからダウンロードするという方法があります。今回はその手順をご紹介して、Acrobat ReaderがSECOMの電子署名を正しく評価できるようになるところまでをみていきましょう。
まずは信頼できる場所から公開鍵を含む電子証明書をダウンロードしてきます。
今回欲しいのはSECOMのものなので、「SECOM Passport for G-ID」で検索した結果の「セコムパスポート for G-ID」のサイトを辿るか、検索結果の「弊社リポジトリ」をクリックします。
「セコムパスポート for G-ID」にアクセスした場合には、そのページの「リポジトリ」を選択して、左下のページに移動します。
表示された中から、「自己署名証明書 第5世代(G5)」の下のリンクをクリックして「自己署名証明書」をダウンロードします。
次にAcrobat Readerの「環境設定」の画面を開きます。Windowsの場合にはAcrobat Readerの「メニュー」から、MacOSの場合には画面上部のAcrobatから選択することができます。
「環境設定」の中の「署名」をクリックして「デジタル署名」の表示にします。
その中の「IDと信頼済み証明書」の「詳細」をクリックして「デジタルIDと信頼済み証明書の設定」画面を開きます。SECOMの公開鍵情報をここに登録すれば、SECOMの電子署名の正当性を確認できるようになり、TAKASHI IKEDAさんの電子署名も本物であることが確認できるようになります。そこで、次の手順で先ほどダウンロードしてきたSECOMの「自己署名証明書」を登録しましょう。
なんだかあちこちクリックさせられて大変だけど、がんばります。
もうあと少しですよ。
表示した「デジタルIDと信頼済み証明書の設定」の画面の「取り込み」をクリックします。「取り込む連絡先の選択」という画面が表示されます。この中の「連絡先」の方の「参照」ボタンをクリックします。ファイルの選択メニューが表示されるので、ダウンロードしてきた「自己署名証明書」を指定して「開く」をクリックしましょう。ファイル名はg-idca05のものとなっているはずです。
これで「連絡先」の欄にSECOM Passport for G-IDが表示されるはずですので、「取り込み」をクリックして「取り込みの終了」まで表示できれば登録完了です。
信頼済み証明書の一覧の中に「SECOM Passport for G-ID」が入りました。
ふう、大変だったけどこれで問題解消ってとこかな。
もう一個だけやることがあるんです。
「デジタルIDと信頼済み証明書の設定」の一覧の「SECOM Passport for G-ID」を選択した状態で、「信頼性を編集」をクリックしてください。
「証明書の信頼性を編集」の画面が表示されます。この画面の「この証明書を信頼済みのルートとして使用」のチェックボタンをチェックして「OK」をクリックします。これで終了です。
うわあ、あっちをクリックこっちをクリックでこんがらがっちゃったけど、後でまたもう一度見直しておこうっと。
で、これで電子署名の問題はなくなるはずなんだな。
えっと、Acrobat Readerの「すべてのツール」で「証明書を使用」を選択して、「文書へのすべての署名を検証」をクリックっと。
時間がかかるかもってあるけど、とりあえず「OK」っと。
おっ、確かに「すべての署名が有効です。」に変わったぞ。「署名パネル」を見ても問題ないみたい。
無事に解決っと!
はい、なんとか電子署名をつけることができましたね。今回のPDFファイルは「業務委託契約」ですから、委託元にも電子署名をつけてもらう必要があります。そのときにTAKASHI IKEDAさんの電子署名が正しいものであることを確認してもらう必要がありますが、場合によってはその相手側にも今回と同じ手順を踏んで、SECOMの証明書を信頼済み証明書のリストに登録してもらう作業が必要になってきます。
それから、今回の手順では一つ「信頼性」の点で欠けているものがあります。それは電子署名がいつ押されたのかという点です。契約書には通常、契約日時が書かれますが、今回電子署名ということで年月日が書面上には記載されていません。
またここで一旦お話を区切って、次回は契約日の証明のお話をしましょう。