儀間 隆夫 日本ボルチモアテクノロジーズ 技術本部 E&Tグループ コンサルタント

共通鍵と公開鍵で暗号化と認証を実現

PKIは,public keyという名前が示す通り「公開鍵暗号」を核としていますが,それだけではなく複数の暗号技術により成立しています。そのうちの一つの技術が「共通鍵暗号」です。共通鍵暗号で発生する問題を解決するのが,公開鍵暗号です。

 共通鍵暗号では,元のデータである「平文」を暗号化するときと,元データに復号化するときに同じ鍵を使用します。Aさんが暗号化したデータである「暗号文」を,Bさんに送信するときには,暗号文を復号化するための共通鍵も何らかの方法でBさんに渡す必要があります。しかしここで,鍵をどのような手段で相手に安全に渡すかという問題が生じます。この鍵をインターネットで送ったのでは,鍵自体が盗まれる危険があるためです。

 さらに,共通鍵暗号には鍵の管理が難しいという問題もあります。共通鍵暗号は通信相手ごとに共通鍵があるため,だれに対する鍵なのかという管理とその鍵の厳重な保管が必要になるからです。自分がやり取りする相手の数だけ異なる共通鍵を持たねばならないため,相手が多ければ多いほど鍵の管理は難しくなります。

二つの鍵をペアで使う公開鍵暗号

 共通鍵で発生する鍵配送のリスクと鍵管理のリスクを補うために考え出されたのが,公開鍵暗号です。公開鍵暗号では一組の暗号鍵のペアを使用します。ひとつが公開鍵で,もうひとつが秘密鍵(プライベート・キー)です。

図3 共通鍵と公開鍵を使った暗号化の違い共通鍵方式は,鍵の配送や管理の面でリスクを負う。これを補うことができるのが公開鍵方式。秘密鍵と公開鍵を対にして暗号化と復号化を行うことで,共通鍵方式の問題点を解決した。
 この二つは必ずペアになっており,どちらもデータを暗号化する機能があります。ただし,片方で暗号化したデータは,対になるもう片方の鍵でしか復号化できない仕組みになっています。公開鍵で暗号化した暗号文は秘密鍵でしか復号化できません。逆に,秘密鍵で暗号化した暗号文は公開鍵でしか復号化できないのです。

 この二つの鍵は,管理法と使用法(暗号化の意味)が大きく異なります(図3[拡大表示])。秘密鍵はその名の通り絶対に他人に漏れないように厳重に管理します。一方の公開鍵は,だれでもが使えるように広く公開・配布するものです。CAがディジタル証明書を使って保証するのが,この公開鍵です。

 使用法も全く異なります。まず秘密鍵を使って暗号化することで,データの送信元を特定できるようになります。暗号文を受け取った人にとって,送信元が公開している公開鍵でデータを復号化できるということは,文書の送信元が自身の秘密鍵で文書を暗号化したことを裏付けたことと同じになるからです。このため,秘密鍵を使ってデータを暗号化することを,「ディジタル署名」とも呼びます。

 一方,通信相手の公開鍵で暗号化したデータは,相手の秘密鍵でしか復号化できません。つまり,データを渡したい相手の公開鍵で暗号化すれば,安全にデータを送信できます。

 公開鍵は広く公開・配布するものですから,鍵配送のリスクもありません。管理する必要があるのは自分の秘密鍵だけです。このため,鍵管理のリスクも最小化できます。

 ただし,公開鍵を使って共通鍵と同じ強度の安全性を確保するには,共通鍵よりも大きな鍵長を必要とします。このため,暗号化の処理速度が遅くなるという欠点があります。こうした理由からPKIでは,公開鍵暗号と共通鍵暗号を組み合わせて効率的に処理しています。

ハッシュ値の比較で改ざんがないことを確認

 PKIでは,共通鍵暗号と公開鍵暗号のほかにハッシュ関数を使用します。ハッシュ関数には,(1)元データのサイズに関係なく一定のデータ長(百数十ビット程度)のハッシュ値を生成する,(2)ハッシュ値から元データを復元できない,(3)元データがほとんど同じでもハッシュ値は大きく異なる――といった特徴があります。

 こうした特徴を利用することで,本文を知られることなく署名を付け,改ざんをチェックできるようになります。具体的には,(1)元のデータを共通鍵などで暗号化した暗号文と,(2)ハッシュ関数で生成したハッシュ値を秘密鍵で暗号化した暗号文を送付します。受信者側では,受け取った(1)を復号化した後にハッシュ関数で生成したハッシュ値と,受け取った(2)を公開鍵で復号化したものを比較することで,データが改ざんされていないことを検証できます。これらの処理は,ユーザーが意識することなく,すべてアプリケーションが自動的に実行します。

目的と用途で異なる証明書の発行方法

ここまで述べてきたようにPKIの導入は,公開鍵の持ち主を保証する「ディジタル証明書」の交付が重要になります。このディジタル証明書の入手方法には大きく分けて,「証明書発行サービスの利用」と「プライベートCAの構築」という二つの形態があります。

図4 認証局にはプライベートCAとTTP(第三者認証機関)の2形態がある企業などがCA製品を購入して独自に構築するプライベートCAと,広く一般に証明書発行サービスを行うTTPの二つの形態に大きく分けられる。
 証明書発行サービスとは,TTP(trusted third party:第三者認証機関)と呼ばれる企業が,証明書を発行する形態です。既にサイバートラストや日本ベリサイン,日本認証サービスなどがサービスを提供しています。

 もう一つのプライベートCAの構築とは,証明書を発行するためのCAを自社で構築,運用する形態です。CAを運営するためのアプリケーションをはじめから作成することも可能ですが,一般的には,アイルランドのボルチモア・テクノロジーズの「UniCERT」や,米エントラスト・テクノロジーズの「Entrust/PKI」といったCA構築プロダクトを購入してCAを構築します(図4[拡大表示])。

 どちらか一方の形態が優れているというわけではなく,それぞれにメリット,デメリットがあります。それらを見極めた上で,自社に最適な形態を選択することが重要になります。

目的や用途を明確にして導入形態を決める

 では,どのようなポイントにより,自社に最適な形態を決定すればよいのでしょうか。最初に明確にしておくことは,(1)導入目的,(2)使用用途――の二つです。

 一つめの導入目的とは,PKIを何のために導入するかということです。まず,PKIを使って何がしたいのか,どのような効果を期待するのか,また将来はどのように展開するのかなどを明確にします。これはCAが備えるポリシー・コントロールの範囲や柔軟性を判断するためです(表1[拡大表示])。

表1 TTPとプライベートCAの判断基準TTPとプライベートCAにはそれぞれメリットとデメリットがあり,導入目的や利用目的,あるいは企業により重視すべき項目は異なる。判断しにくい場合には,導入のコンサルティングを受けたり,途中で導入形態を変更できるベンダーを選択するのも一つの方法である。
 二つめの証明書の使用目的では,発行対象やアプリケーションなどの項目を検討します。発行対象とは,証明書を発行する対象のことです。社内やグループ企業などに限定するのか,取引先などを含むのか,あるいは一般消費者などまでも含むのかということです。

 アプリケーションとは,CAを使って実現するサービス範囲です。電子メールの暗号化とディジタル署名のためのS/MIMEに使うのか,データベースなどへのアクセス・コントロールで相手を特定するために使うのか,Web-EDIなどの取引に使うのかなどを決めておきます。こうした項目は,証明書の発行範囲や発行枚数など,コストや期間,柔軟性を想定する上で必要になります。

 これらのことを明確にした上で,はじめてTTPを利用するのかプライベートCAにするのかを検討します。例えば,CAに独自のセキュリティ・ポリシーや拡張性を持たせることを想定している場合,独自のポリシー・コントロールや拡張が容易なプライベートCAを採用した方がよいでしょう。複数の種類の証明書を発行したり,大量に証明書が必要な場合も,プライベートCAが向いているといえます。

 逆に,PKIのノウハウを早急に習得し,今後の展開を考えたい場合には,導入期間の短縮やコストがポイントになるため,TTPの利用が向いています。まずTTPから始め,ノウハウがたまった時点でプライベートCAに移行するというのも一つの考え方です。

 しかし,目的や用途は多種多様ですし,どの項目を優先するのかというのは企業の方針にかかわる難問です。こうした理由から,CAの導入に際して,方向性を明確にできるコンサルティングを受ける企業も少なくありません。