2007/03/17

デジタル証明書に秘密鍵をつけること

Q:デジタル証明書に秘密鍵がついていないと認証は通らないか?
A:
デジタル証明書に「秘密鍵」は絶対に一緒にしません。

デジタル証明書を発行するためには「秘密鍵」の入力が必要ですが、秘密鍵を外部に出してしまったら全くデジタル証明の意味がありません。
認証機関によってデジタル証明されているかどうかは、その認証機関の公開鍵で復号できるかどうかで「認証がとおるかどうか」が決まります。
秘密鍵を知らない人がデジタル証明書を作成できないからです。

なお、自分で自分を証明・認証するという「オレオレ証明書」というのもありますが、セキュリティー上は何の意味もない無価値なものです。

----
補足があったので追加します。
私の先ほどの回答は、「SSL通信」を前提に考えていたもので、質問者が話題にしている「電子証明書とエクスポート」についてはトンチンカンな回答になっています。
失礼しました。

電子証明のシステムで「電子署名」は、「秘密鍵」によって暗号化します。
秘密鍵が無いと、質問者が作成したメッセージのダイジェストを暗号化できませんので、電子署名ができなくなります。
そのため、電子入札などに参加できなくなります。(認証が通らないと言えます)

なお、「質問者の電子証明書」は「質問者の公開鍵」を「認証機関の秘密鍵」で暗号化したものです。私の先の回答は「質問者の電子証明書と認証機関の秘密鍵が一緒になることはありえない」という趣旨です。

メッセージの発信者は、「暗号化されていないメッセージ」+「暗号化されたダイジェスト」+「発信者の公開鍵」+「発信者の電子証明書」の4つを受信者に送信します。
受信者はあらかじめ「認証機関の公開鍵」を持っています。
受信者は手持ちの認証機関の公開鍵を使って、「発信者からの電子証明書」を復号化して「発信者の公開鍵」が本物であることを確認します。
次に、暗号化されたダイジェストを「発信者の公開鍵」で復号化して、「暗号化していないメッセージ」が本物であることを確認します。

秘密鍵が無いと「暗号化されていないメッセージ」から「暗号化されたダイジェスト」を作れません。
そのため、認証が通らなくなります。

なお、「秘密鍵」と「証明書をインポートするときのパスワード」とは全く別物です。
電子証明では「秘密鍵の管理」こそが、セキュリティの核心です。
複数のPCにインストールするのはセキュリティ上は望ましくありません。
「証明書のエクスポートウィザード」では、電子証明書をエクスポートするときにユーザーの判断で「秘密鍵」も一緒に他のPCへエクスポートできるようになっています。ただし、同時に元のPCから秘密鍵を削除することができるようになっていることもわかるでしょう。
セキュリティを高めるためです。

----

当初は、SSL通信のためデジタル証明書の話で、クライアントPC側の話だと思って回答した。
ところが補足があって、電子入札で電子署名等をするケースでの電子証明書のことだった。
そこで、回答を改めた。
とはいえ、この回答ではわかってもらえたとは思えない。

暗号理論でいう、秘密鍵と公開鍵、暗号化と復号化、のイメージを理解し、その上で認証システムを理解できていないと、何が何やらわからないだろう。
このネタは本来は中学校程度で学ぶべきことだと思う。
難しいかもしれないが、携帯電話やインターネットで取引するためには欠かせない知識だといえる。
しかしながら、現在のところ大学の一部の課程でしか学ぶ機会は無いようだ。

質問者の方はネット上で検索したらしいが、見つからなかったようだ。いきなり暗号理論の話では「理解できない」となってしまうからだろう。

コンピューターリテラシーとして、ユーザーの必須知識だと思う。