(57)【要約】【課題】スマートカードに書き込みが不可能な状態で、アプリケーションによるコールによってスマートカードへの書き込みが必要な処理が行われた場合であっても、ユーザーに対して適切なガイダンスを表示して、アプリケーションが処理を継続することができるスマートカード暗号化サービスプロバイダを提供する。【解決手段】保存手段１０ｄは、スマートカードＳへの書き込みが不可能な場合には、秘密鍵、公開鍵またはデジタル証明書を、コンピュータ２のハードディスク２ａに保存させるか、または保存を行わないかを、ユーザーに選択させる。【選択図】          図５
2004152042.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにインストールされ、
前記コンピュータにインストールされたアプリケーションから直接またはＡＰＩを介してコールされることで、該アプリケーションに公開鍵方式の暗号化機能を提供し、
公開鍵方式の秘密鍵および公開鍵を生成可能な鍵生成手段と、
前記秘密鍵、前記公開鍵、または認証局から発行された、該公開鍵のデジタル証明書を、前記コンピュータに接続されたスマートカードリーダライタに挿入されたスマートカードに保存可能な保存手段とを備えるスマートカード暗号化サービスプロバイダであって、
前記保存手段は、前記スマートカードへの書き込みが不可能な場合には、前記秘密鍵、前記公開鍵または前記デジタル証明書を、前記コンピュータのハードディスクに保存させるか、または保存を行わないかを、ユーザーに選択させることを特徴とするスマートカード暗号化サービスプロバイダ。
【請求項２】
コンピュータにインストールされ、
前記コンピュータにインストールされたアプリケーションから直接またはＡＰＩを介してコールされることで、該アプリケーションに公開鍵方式の暗号化機能を提供し、
公開鍵方式の秘密鍵および公開鍵を生成可能な鍵生成手段と、
前記コンピュータに接続されたスマートカードリーダライタに挿入されたスマートカード内に、前記秘密鍵、前記公開鍵、または認証局から発行された、該公開鍵のデジタル証明書を保存する、所定の名前が付けられた鍵コンテナを作成可能な鍵コンテナ作成手段と、
該鍵コンテナ作成手段によって作成された前記鍵コンテナ内に、前記秘密鍵、前記公開鍵、または前記デジタル証明書を保存する保存手段とを備えるスマートカード暗号化サービスプロバイダであって、
前記鍵コンテナ作成手段は、前記スマートカードへの書き込みが不可能な場合には、前記鍵コンテナを、前記コンピュータのハードディスク内に作成するか、または作成を行わないかを、ユーザーに選択させることを特徴とするスマートカード暗号化サービスプロバイダ。
【請求項３】
前記アプリケーションに指定された前記名前に対応する前記鍵コンテナを、前記スマートカードリーダライタに挿入されたスマートカード内および前記ハードディスク内から検索する鍵コンテナ検索手段と、
該鍵コンテナ検索手段によって検索された前記鍵コンテナ内に保存された、前記秘密鍵、前記公開鍵または前記デジタル証明書を、前記アプリケーションに取得させる取得手段とを備えることを特徴とする請求項２記載のスマートカード暗号化サービスプロバイダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータにインストールされ、前記コンピュータにインストールされたアプリケーションから直接またはＡＰＩを介してコールされることで、アプリケーションに公開鍵方式の暗号化機能を提供し、公開鍵方式の秘密鍵および公開鍵を生成可能な鍵生成手段と、前記秘密鍵、前記公開鍵、または認証局から発行された、公開鍵のデジタル証明書を、前記コンピュータに接続されたスマートカードリーダライタに挿入されたスマートカードに保存可能な保存手段とを備えるスマートカード暗号化サービスプロバイダに関する。
【０００２】
【従来の技術】
近年、インターネットを介した個人情報の通信や電子取引等の際に、情報のセキュリティを確保する、最も利便性の高い方法として、公開鍵方式が普及している。これに伴い、パーソナルコンピュータ用のＯＳ等にも、アプリケーションに暗号化機能を提供する暗号化サービスプロバイダが標準実装されるようになっている。このような暗号化サービスプロバイダの代表的な例としては、Ｗｉｎｄｏｗｓ（登録商標）に標準装備された“Ｍｉｃｒｏｓｏｆｔ  Ｂａｓｅ  ＣＳＰ”等がある。
【０００３】
図７に、暗号化サービスプロバイダとして、ソフトウェア暗号化サービスプロバイダ７６とスマートカード暗号化サービスプロバイダ７８とを備えたコンピュータ７０のブロック概念図を示す。
ソフトウェア暗号化サービスプロバイダ７６およびスマートカード暗号化サービスプロバイダ７８は、“ＣｒｙｐｔｏＡＰＩ”等の暗号化ＡＰＩ７４を介して、ブラウザ等のアプリケーション７２に暗号化機能を提供するソフトウェアである。
【０００４】
ソフトウェア暗号化サービスプロバイダ７６およびスマートカード暗号化サービスプロバイダ７８等の暗号化サービスプロバイダの前記暗号化機能は一般に、公開鍵方式でいうところの秘密鍵と公開鍵とを生成する鍵生成手段や、鍵生成手段で生成した秘密鍵ならびに公開鍵、および認証局から発行された公開鍵のデジタル証明書を保存する鍵コンテナを作成する鍵コンテナ作成手段や、所定の名前の鍵コンテナを検索する鍵コンテナ検索手段や、前記秘密鍵、前記公開鍵、または前記デジタル証明書を前記鍵コンテナ内に保存する保存手段や、保存手段によって鍵コンテナ内に保存された前記秘密鍵、前記公開鍵または前記デジタル証明書をアプリケーション７２に取得させる取得手段や、秘密鍵または公開鍵（他人の公開鍵を含む）を用いて平文を暗号化する暗号化手段や、秘密鍵や公開鍵（他人の公開鍵を含む）を用いて暗号文を復号化する復号化手段等を備えている。
【０００５】
前記Ｍｉｃｒｏｓｏｆｔ  Ｂａｓｅ  ＣＳＰ等に代表されるソフトウェア暗号化サービスプロバイダ７６は、鍵生成手段で生成した秘密鍵や公開鍵、および認証局から発行された公開鍵のデジタル証明書を、保存手段によって、コンピュータ７０のハードディスク７０ａ内に作成された鍵コンテナ内に保存することができる。
【０００６】
一方、スマートカード暗号化サービスプロバイダ７８は、スマートカードリーダライタＷが接続されたコンピュータ７０にインストールされ、鍵生成手段で生成した秘密鍵や公開鍵、および認証局から発行された公開鍵のデジタル証明書を、保存手段によって、コンピュータ７０に接続されたスマートカードリーダライタＷに挿入されたスマートカードＳ内に作成された鍵コンテナ内に保存することができる。
スマートカード（ＩＣカードとも呼ばれる）は、携帯性に優れるのみでなく、保存された情報に対するセキュリティに優れているため、特に秘密鍵の保存に適した媒体である。なお、スマートカード（ＩＣカード）に秘密鍵や公開鍵等を保存する従来の技術としては、特許文献１が開示されている。
【０００７】
ブラウザ等のアプリケーション７２は、特定の相手にのみ復号化可能な暗号文を作成したい場合には、相手の公開鍵を得て、暗号化サービスプロバイダ（７６または７８）の暗号化手段によって平文をその公開鍵で暗号化して暗号文を作成する。これにより、その公開鍵に対応する、その特定の相手の秘密鍵でしか復号化できない暗号文を作成することができる。
また、アプリケーション７２は、コンピュータ７０にのみ復号化可能な暗号文を他者から得たい場合には、暗号化サービスプロバイダ（７６または７８）の鍵作成手段で秘密鍵と対応する公開鍵のペアを作成し、保存手段によって保存させる。そして、他者に、その公開鍵を公開し、その公開鍵で暗号化した暗号文を作成させることで、保存した秘密鍵でしか復号化できない暗号文を作成することができる。なお、この際、自分の公開鍵にデジタル証明書を付加させることで、その公開鍵が自分のものであることを、他者に対して証明することができる。
【０００８】
なお、本詳細な説明における暗号化サービスプロバイダの暗号化手段は、説明の簡単のために、公開鍵方式の秘密鍵または公開鍵で平文を直接暗号化するものとして説明している。
しかし、一般的には、平文を共通鍵方式の暗号鍵で暗号化し、その暗号鍵を、相手の公開鍵方式の公開鍵で暗号化し、共通鍵方式の前記暗号鍵で暗号化された暗号文と、前記公開鍵で暗号化された、共通鍵方式の暗号鍵とを、その相手に送る手法が普及している。その相手は、前記公開鍵に対応する秘密鍵によって、暗号化された前記暗号鍵を復号化し、得られたその暗号鍵によって、前記暗号文を復号化することで、元の平文を得ることができる。この手法を用いるのは、公開鍵方式の秘密鍵または公開鍵による暗号化および復号化処理は、共通鍵方式の暗号鍵による暗号化および復号化処理に比較して時間が掛かり、大きなデータサイズの平文の暗号化には向かないためである。
本詳細な説明においては、公開鍵方式の秘密鍵または公開鍵で平文を直接暗号化する手法を説明しているが、これは前記普及している手法と本質的に異なるものではなく、本詳細な説明中の「平文」を、「平文の暗号化に用いた共通鍵方式の暗号鍵」と読み替え、「暗号文」を、「公開鍵方式の秘密鍵または公開鍵で暗号化された共通鍵方式の暗号鍵」と読み替えることで、前記普及している手法の説明に対応させることができる。
【０００９】
一般に、ブラウザ等のアプリケーション７２は、他者とデータの送受を行う際には、ＳＳＬの技術を用いるなどして、上記の様な処理をバックグラウンドで行い、秘密鍵や公開鍵の生成や保存、およびデジタル証明書の保存などを、コンピュータ７０のユーザーには意識させないよう構成されることが多い。
【００１０】
【特許文献１】
特開平１０−３３６１７２号公報（第４図）
【００１１】
【発明が解決しようとする課題】
コンピュータ７０において、アプリケーション７２によって、暗号化ＡＰＩ７４を介して、スマートカード暗号化サービスプロバイダ７８の、鍵コンテナを作成する命令（鍵コンテナ作成手段）がコールされると、鍵コンテナ作成手段は、スマートカードリーダライタＷに挿入されたスマートカードＳの記憶手段に、鍵コンテナを作成する。
また、アプリケーション７２によって、秘密鍵や公開鍵を生成する命令（鍵生成手段）がコールされたり、公開鍵のデジタル証明書を保存する命令（保存手段）がコールされると、スマートカード暗号化サービスプロバイダ７８は、生成した秘密鍵もしくは公開鍵、またはアプリケーション７２から渡されたデジタル証明書を、保存手段によってスマートカードリーダライタＷに挿入されたスマートカードＳに保存する。
【００１２】
しかしながら、スマートカードＳは、常に書き込み可能な状態にあるとは限らない。例えば、コンピュータ７０にスマートカードリーダライタＷが接続されていない場合や、スマートカードリーダライタＷにスマートカードＳが挿入されていない場合や、スマートカードＳの記憶手段に空き領域がない場合や、スマートカードＳまたはスマートカードＳに組み込まれたプログラムが、スマートカードリーダライタＷに適合していない場合等、スマートカードＳへの書き込みが不可能な場合には、スマートカード暗号化サービスプロバイダ７８は、スマートカードＳ内に鍵コンテナを作成したり、スマートカードＳに秘密鍵、公開鍵またはデジタル証明書を保存させることができない。
鍵コンテナ作成手段、鍵生成手段または保存手段の実行時等、スマートカードＳに書き込みを行う処理を行う際に、スマートカードＳが書き込みを行えない状態にある場合、従来のスマートカード暗号化サービスプロバイダ７８は、エラーとして処理を中断している。
【００１３】
アプリケーション７２は、鍵コンテナ作成手段、鍵生成手段または保存手段をコールした場合等に、スマートカード暗号化サービスプロバイダ７８が処理を行えずに前記エラーが通知されると、前述の様な他者との暗号化によるデータ通信が行えず、処理を中断せざるを得ないという課題がある。
【００１４】
また、コンピュータ７０の通常のユーザーは、前述の通り、アプリケーション７２がバックグラウンドで行っている暗号化の処理を意識していないことが多いため、突然アプリケーション７２の処理が中断されてしまった際に、適切な操作を行えないという課題がある。
【００１５】
本発明は上記課題を解決すべくなされ、その目的とするところは、スマートカードに書き込みが不可能な状態で、アプリケーションによるコールによってスマートカードへの書き込みが必要な処理が行われた場合であっても、ユーザーに対して適切なガイダンスを表示して、アプリケーションが処理を継続することができるスマートカード暗号化サービスプロバイダを提供することにある。
【００１６】
【課題を解決するための手段】
本発明に係るスマートカード暗号化サービスプロバイダは、上記課題を解決するために、以下の構成を備える。すなわち、コンピュータにインストールされ、前記コンピュータにインストールされたアプリケーションから直接またはＡＰＩを介してコールされることで、該アプリケーションに公開鍵方式の暗号化機能を提供し、公開鍵方式の秘密鍵および公開鍵を生成可能な鍵生成手段と、前記秘密鍵、前記公開鍵、または認証局から発行された、該公開鍵のデジタル証明書を、前記コンピュータに接続されたスマートカードリーダライタに挿入されたスマートカードに保存可能な保存手段とを備えるスマートカード暗号化サービスプロバイダであって、前記保存手段は、前記スマートカードへの書き込みが不可能な場合には、前記秘密鍵、前記公開鍵または前記デジタル証明書を、前記コンピュータのハードディスクに保存させるか、または保存を行わないかを、ユーザーに選択させることを特徴とする。
これによれば、スマートカードに秘密鍵、公開鍵またはデジタル証明書を保存できないときには、これらをハードディスクに保存させるか、保存を行わないかを、ユーザーに選択させるため、ユーザーは必要に応じて適切な判断を行え、また、これらをハードディスクに保存すれば、アプリケーションは処理を継続することが可能となる。
【００１７】
さらに、コンピュータにインストールされ、前記コンピュータにインストールされたアプリケーションから直接またはＡＰＩを介してコールされることで、該アプリケーションに公開鍵方式の暗号化機能を提供し、公開鍵方式の秘密鍵および公開鍵を生成可能な鍵生成手段と、前記コンピュータに接続されたスマートカードリーダライタに挿入されたスマートカード内に、前記秘密鍵、前記公開鍵、または認証局から発行された、該公開鍵のデジタル証明書を保存する、所定の名前が付けられた鍵コンテナを作成可能な鍵コンテナ作成手段と、該鍵コンテナ作成手段によって作成された前記鍵コンテナ内に、前記秘密鍵、前記公開鍵、または前記デジタル証明書を保存する保存手段とを備えるスマートカード暗号化サービスプロバイダであって、前記鍵コンテナ作成手段は、前記スマートカードへの書き込みが不可能な場合には、前記鍵コンテナを、前記コンピュータのハードディスク内に作成するか、または作成を行わないかを、ユーザーに選択させることを特徴とする。
これによれば、スマートカード内に鍵コンテナを作成できないときには、鍵コンテナをハードディスク内に作成するか、作成を行わないかを、ユーザーに選択させるため、ユーザーは必要に応じて適切な判断を行え、また、鍵コンテナをハードディスクに保存すれば、アプリケーションは処理を継続することが可能となる。
【００１８】
さらに、前記アプリケーションに指定された前記名前に対応する前記鍵コンテナを、前記スマートカードリーダライタに挿入されたスマートカード内および前記ハードディスク内から検索する鍵コンテナ検索手段と、該鍵コンテナ検索手段によって検索された前記鍵コンテナ内に保存された、前記秘密鍵、前記公開鍵または前記デジタル証明書を、前記アプリケーションに取得させる取得手段とを備えることを特徴とする。
これによれば、アプリケーションは、鍵コンテナの作成された場所がスマートカード内であるかハードディスク内であるかを意識することなく、鍵コンテナ検索手段で鍵コンテナの名前を指定すれば、指定した鍵コンテナ内の秘密鍵、公開鍵またはデジタル証明書を、取得手段によって取得することが可能となる。
【００１９】
【発明の実施の形態】
以下、本発明に係るスマートカード暗号化サービスプロバイダの好適な実施の形態を添付図面に基づいて詳細に説明する。
【００２０】
図１に、本発明に係るスマートカード暗号化サービスプロバイダ１０と、ソフトウェア暗号化サービスプロバイダ８とを備えたコンピュータ２のブロック図を示す。
コンピュータ２としては、ＣＰＵ等を備えた制御手段や、ハードディスク２ａやＲＡＭ等の記憶手段や、キーボードやマウス等の入力手段や、モニタ等の表示手段等を備えた一般的なパーソナルコンピュータ等を用いることができる。
ソフトウェア暗号化サービスプロバイダ８およびスマートカード暗号化サービスプロバイダ１０は、“ＣｒｙｐｔｏＡＰＩ”等の暗号化ＡＰＩ６を介して、ブラウザ等のアプリケーション４に暗号化機能を提供するソフトウェアとして、コンピュータ２にインストールされている。
【００２１】
前記Ｍｉｃｒｏｓｏｆｔ  Ｂａｓｅ  ＣＳＰ等に代表されるソフトウェア暗号化サービスプロバイダ８は、公開鍵方式でいうところの秘密鍵と公開鍵とを生成する鍵生成手段や、鍵生成手段で生成した秘密鍵ならびに公開鍵、および認証局から発行された公開鍵のデジタル証明書を保存する鍵コンテナを作成する鍵コンテナ作成手段や、ハードディスク２ａ内の所定の名前の鍵コンテナを検索する鍵コンテナ検索手段や、前記秘密鍵、前記公開鍵、または前記デジタル証明書を前記鍵コンテナ内に保存する保存手段や、保存手段によって保存された前記秘密鍵、前記公開鍵または前記デジタル証明書をアプリケーション４に取得させる取得手段や、秘密鍵または公開鍵（他人の公開鍵を含む）を用いて平文を暗号化する暗号化手段や、秘密鍵や公開鍵（他人の公開鍵を含む）を用いて暗号文を復号化する復号化手段等を備えている。
【００２２】
図２に、スマートカード暗号化サービスプロバイダ１０の内部構成を示した、コンピュータ２のブロック図を示す。図２に示すように、スマートカード暗号化サービスプロバイダ１０は、公開鍵方式でいうところの秘密鍵と公開鍵とを生成する鍵生成手段１０ａや、鍵生成手段１０ａで生成した秘密鍵ならびに公開鍵、および認証局から発行された公開鍵のデジタル証明書を保存する鍵コンテナを作成する鍵コンテナ作成手段１０ｂや、スマートカードＳ内およびハードディスク２ａ内の所定の名前の鍵コンテナを検索する鍵コンテナ検索手段１０ｃや、鍵生成手段１０ａで生成した秘密鍵ならびに公開鍵、および認証局から発行された公開鍵のデジタル証明書を鍵コンテナ内に保存する保存手段１０ｄや、保存手段１０ｄによって保存された秘密鍵、公開鍵またはデジタル証明書をアプリケーション４に取得させる取得手段１０ｅや、秘密鍵または公開鍵（他人の公開鍵を含む）を用いて平文を暗号化する暗号化手段１０ｆや、秘密鍵や公開鍵（他人の公開鍵を含む）を用いて暗号文を復号化する復号化手段１０ｇ等を備えている。
【００２３】
アプリケーション４がスマートカード暗号化サービスプロバイダ１０の暗号化機能を使用する際には、鍵コンテナ作成手段１０ｂで鍵コンテナを新規作成するか、または鍵コンテナ検索手段１０ｃで既存の鍵コンテナを指定（言い換えると、鍵コンテナの名前を指定）するかして、その鍵コンテナのハンドルを取得し、その鍵コンテナにアクセスすることによって、秘密鍵、公開鍵またはデジタル証明書等を保存したり、取得したりすることが可能となる。
なお、鍵コンテナとは、公開鍵方式の秘密鍵、公開鍵、デジタル証明書等を保存するための、セキュリティが確保された保存領域である。
【００２４】
（鍵コンテナ作成手段１０ｂ）
鍵コンテナ作成手段１０ｂは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。鍵コンテナ作成手段１０ｂは、起動されると、コンピュータ２内にインストールされた図示しないスマートカードリーダライタドライバを介して、スマートカードリーダライタＷに挿入されたスマートカードＳ内に、所定の名前が付けられた鍵コンテナを作成する。
【００２５】
鍵コンテナ作成手段１０ｂの、暗号化ＡＰＩ６に対するインタフェース仕様を、図３に示す。鍵コンテナ作成手段１０ｂは、ＣＰＡｃｑｕｉｒｅＣｏｎｔｅｘｔを、ｄｗＦｌａｇｓにＣＲＹＰＴ＿ＮＥＷＫＥＹＳＥＴを指定してコールすることで実行される。
鍵コンテナ作成手段１０ｂは、鍵コンテナを作成し、その鍵コンテナに、所定の長さの文字列からなる名前を付け、鍵コンテナと名前とを関連付けてスマートカードＳ内に保存する。また、この名前は、コンピュータ２のＲＡＭ等の記憶領域にも一時的に格納され、その先頭アドレスがポインタｐｓｚＣｏｎｔａｉｎｅｒに格納されることで、暗号化ＡＰＩ６を介してアプリケーション４に通知される。また、ｐｈＰｒｏｖに、作成された鍵コンテナのハンドルが代入され、暗号化ＡＰＩ６を介してアプリケーション４に通知される。
以降、アプリケーション４は、その名前を指定することで、鍵コンテナ検索手段によってその鍵コンテナを検索できる。また、そのハンドルを使用することで、その鍵コンテナにアクセスすることができる。
【００２６】
鍵コンテナ作成手段１０ｂの内部処理フローを図４に示す。鍵コンテナを作成する際、まず、スマートカードリーダライタドライバを介して、スマートカードリーダライタＷに挿入されたスマートカードＳ内に、鍵コンテナ作成手段１０ｂによって付けられた所定の名前と関連付けられた鍵コンテナを作成する命令を実行する（ステップ１）。ステップ２で、この命令のレスポンスが、正常終了であった場合には、その名前はコンピュータ２のＲＡＭ等の記憶領域にも一時的に格納され、その記憶領域を指し示すポインタが前記ｐｓｚＣｏｎｔａｉｎｅｒに代入され、また、ｐｈＰｒｏｖに、作成された鍵コンテナのハンドルが代入され（ステップ３）、鍵コンテナ作成手段１０ｂの処理は終了する。
【００２７】
ステップ２において、スマートカードＳに保存ができない状態であった場合には、スマートカードリーダライタドライバから、鍵コンテナ作成手段１０ｂに、スマートカードＳに書き込みが行えないことの通知（例えばエラーレスポンス等）が通知される。この書き込み不可能であることの通知がされると、鍵コンテナ作成手段１０ｂは、コンピュータ２のモニタ等の表示手段に、鍵コンテナをハードディスク２ａ内に作成するか、または作成を行わないかを選択させる表示を行う（ステップ４）。この表示は、例えば図６に示す様な、「カードが準備されていません。ＨＤに格納しますか？」と記述されたダイアログ２０等によって行う（ステップ５）。ダイアログ２０には、「Ｙｅｓ」のボタン２０ａと、「Ｎｏ」のボタン２０ｂとが設けられており、ユーザーは、いずれかのボタンを選択して押下することで、鍵コンテナをハードディスク２ａ内に作成するか否かを選択することができる。
【００２８】
ダイアログ２０で「Ｎｏ」のボタンが選択された場合には、鍵コンテナ作成手段１０ｂは、ＣＰＡｃｑｕｉｒｅＣｏｎｔｅｘｔの戻り値に、鍵コンテナを作成できなかったことを意味するフラグを立てて、処理を終了する（ステップ８）。ダイアログ２０で「Ｙｅｓ」のボタンが選択された場合には、鍵コンテナ作成手段１０ｂは、コンピュータ２のハードディスク２ａ内に、鍵コンテナ作成手段１０ｂによって付けられた所定の名前と関連付けられた鍵コンテナを作成する命令を実行する（ステップ６）。その名前はコンピュータ２のＲＡＭ等の記憶領域にも一時的に格納されて、その記憶領域を指し示すポインタが前記ｐｓｚＣｏｎｔａｉｎｅｒに代入され、また、ｐｈＰｒｏｖに、作成された鍵コンテナのハンドルが代入され（ステップ７）、鍵コンテナ作成手段１０ｂの処理は終了する。
【００２９】
ダイアログ２０で「Ｎｏ」が選択された場合を除き、以降、アプリケーション４は、ｐｓｚＣｏｎｔａｉｎｅｒに示された名前を指定することで、鍵コンテナ検索手段１０ｃによってスマートカードＳまたはハードディスク２ａ内に作成された鍵コンテナを検索でき、また、ｐｈＰｒｏｖに示されたハンドルを使用することで、その鍵コンテナにアクセスすることができる。このため、アプリケーション４は、作成された鍵コンテナがスマートカードＳ内にあるか、ハードディスク２ａ内にあるかを意識する必要がない。
【００３０】
なお、スマートカードリーダライタドライバが、スマートカードＳに書き込みが不可能であると判断する場合とは、例えば、コンピュータ２にスマートカードリーダライタＷが接続されていない場合や、コンピュータ２に接続されたスマートカードリーダライタＷにスマートカードＳが挿入されていない場合や、スマートカードＳの記憶手段の残り容量が十分でない場合や、スマートカードＳに組み込まれたプログラムが、スマートカードリーダライタＷに適合しない場合等が挙げられる。
なお、スマートカードＳに書き込みが不可能と判断するこれら各場合の判断は、スマートカードリーダライタドライバが行わず、スマートカード暗号化サービスプロバイダ１０が、スマートカードリーダライタドライバを介して取得可能なスマートカードリーダライタＷの状態プロパティを用いて行うよう構成しても良い。
【００３１】
（鍵コンテナ検索手段１０ｃ）
鍵コンテナ検索手段１０ｃは、スマートカードＳ内またはハードディスク２ａ内に作成された、既存の特定の鍵コンテナを検索し、その鍵コンテナのハンドルをアプリケーション４が取得するための機能をもつ。
鍵コンテナ検索手段１０ｃは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。
本実施の形態においては、鍵コンテナ検索手段１０ｃの暗号化ＡＰＩ６に対するインタフェースは、鍵コンテナ作成手段１０ｂと同じＣＰＡｃｑｕｉｒｅＣｏｎｔｅｘｔが用いられる。暗号化ＡＰＩ６は、引数のｄｗＦｌａｇｓにＣＲＹＰＴ＿ＮＥＷＫＥＹＳＥＴを指定せず、ｐｓｚＣｏｎｔａｉｎｅｒに検索したい鍵コンテナの名前を指定することで、その名前に対応する鍵コンテナのハンドル（ｐｈＰｒｏｖ）を取得することができる。
【００３２】
鍵コンテナ検索手段１０ｃは、まず、スマートカードＳ内に、ｐｓｚＣｏｎｔａｉｎｅｒに指定された鍵コンテナの名前に対応する鍵コンテナがあるかどうかを検索する。スマートカードＳ内にその鍵コンテナがあった場合には、ｐｈＰｒｏｖにその鍵コンテナのハンドルを代入して、処理を終了する。
スマートカードＳ内にその鍵コンテナがない場合には、鍵コンテナ検索手段１０ｃは、ハードディスク２ａ内にその鍵コンテナがあるかどうかを検索する。ハードディスク２ａ内にその鍵コンテナがあった場合には、ｐｈＰｒｏｖにその鍵コンテナのハンドルを代入して、処理を終了する。
なお、アプリケーション４は、ｐｈＰｒｏｖに示されたハンドルを使用することで、その鍵コンテナにアクセスすることができるため、作成された鍵コンテナがスマートカードＳ内にあるか、ハードディスク２ａ内にあるかを意識する必要がない。
【００３３】
一方、スマートカードＳ内にもハードディスク２ａ内にも、ｐｓｚＣｏｎｔａｉｎｅｒに指定された名前に対応する鍵コンテナがない場合には、鍵コンテナ検索手段１０ｃは、ＣＰＡｃｑｕｉｒｅＣｏｎｔｅｘｔの戻り値に、鍵コンテナを検索できなかったことを意味するフラグを立てて、処理を終了する。
【００３４】
（保存手段１０ｄ）
保存手段１０ｄは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。また、例えば鍵生成手段１０ａで作成した秘密鍵や公開鍵を保存する場合などにおいて、スマートカード暗号化サービスプロバイダ１０内でも内部的に起動される場合もある。
【００３５】
保存手段１０ｄには、引数等の手段によって、鍵コンテナのハンドル、および保存対象（秘密鍵、公開鍵またはデジタル証明書等）のハンドルを渡すことができる。
保存手段１０ｄは、渡された鍵コンテナのハンドルが指し示す鍵コンテナに対して、渡された保存対象のハンドルが指し示す保存対象を保存する。ここで、その鍵コンテナがスマートカードＳ内にある場合には、スマートカードＳにアクセスして保存対象の書き込みを行い、ハードディスク２ａ内にある場合には、ハードディスク２ａにアクセスして保存対象の書き込みを行う。
なお、保存対象（秘密鍵、公開鍵またはデジタル証明書等）のハンドルではなく、保存対象の実体（データ自体）を、引数（ポインタ）等の手段によって、保存手段１０ｄに渡すよう構成しても良い。
【００３６】
（取得手段１０ｅ）
取得手段１０ｅは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。
取得手段１０ｅは、鍵コンテナ内に保存された秘密鍵、公開鍵、デジタル証明書等のハンドルを、暗号化ＡＰＩ６を介してアプリケーション４に取得させる機能をもつ。
なお、本実施の形態においては、「秘密鍵、公開鍵、デジタル証明書等のハンドルを取得すること」と、「秘密鍵、公開鍵、デジタル証明書等を取得すること」とを同義に用いるが、取得手段１０ｅは、秘密鍵、公開鍵、デジタル証明書等の実体（データ自体）を取得可能に設けても良い。
【００３７】
取得手段１０ｅには、引数によって、鍵コンテナのハンドルと、取得したい保存対象の種別（秘密鍵、公開鍵またはデジタル証明書等）と、取得した保存対象のハンドルの格納領域（ポインタ）を渡すことができる。
取得手段１０ｅは、渡された鍵コンテナのハンドルが指し示す鍵コンテナにアクセスして、その鍵コンテナに保存された秘密鍵、公開鍵またはデジタル証明書等の保存対象のハンドルを、引数で渡されたハンドルの格納領域に代入することで、暗号化ＡＰＩ６を介してアプリケーション４に保存対象のハンドルを渡す。
【００３８】
（鍵生成手段１０ａ）
鍵生成手段１０ａは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。
鍵生成手段１０ａは、公開鍵方式の秘密鍵や公開鍵を生成して、保存手段１０ｄによってそれらを指定された鍵コンテナに保存する機能をもつ。
【００３９】
鍵生成手段１０ａには、引数によって、鍵コンテナのハンドルと、生成した秘密鍵や公開鍵のハンドルの格納領域（ポインタ）を渡すことができる。
鍵生成手段１０ａは、秘密鍵および公開鍵を作成すると共に、その秘密鍵および公開鍵と、引数で渡された鍵コンテナのハンドルとを保存手段１０ｄに渡すことで、その秘密鍵および公開鍵を、引数で指定された鍵コンテナに保存させる。
また、その秘密鍵と公開鍵のハンドルを、引数で渡された格納領域に代入することで、暗号化ＡＰＩ６を介してアプリケーション４に秘密鍵および公開鍵のハンドルを渡す。
【００４０】
（暗号化手段１０ｆ）
暗号化手段１０ｆは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。
暗号化手段１０ｆは、アプリケーション４が指定した所定の平文を、アプリケーション４が指定した所定の公開鍵または秘密鍵を用いて暗号化する機能をもつ。
【００４１】
暗号化手段１０ｆには、引数によって、平文のデータと、暗号化に用いる秘密鍵または公開鍵のハンドルとを渡すことができる。
暗号化手段１０ｆは、引数で渡された平文を、引数で渡された秘密鍵または公開鍵を用いて暗号化して、作成した暗号文を、暗号化ＡＰＩ６を介してアプリケーション４に渡す。
【００４２】
（復号化手段１０ｇ）
復号化手段１０ｇは、暗号化ＡＰＩ６を介してアプリケーション４によりコールされることで起動される。
復号化手段１０ｇは、アプリケーション４が指定した所定の暗号文を、アプリケーション４が指定した所定の公開鍵または秘密鍵を用いて復号化する機能をもつ。
【００４３】
復号化手段１０ｇには、引数によって、暗号文のデータと、復号化に用いる秘密鍵または公開鍵のハンドルとを渡すことができる。
復号化手段１０ｇは、引数で渡された暗号文を、引数で渡された秘密鍵または公開鍵を用いて復号化して、作成した平文を、暗号化ＡＰＩ６を介してアプリケーション４に渡す。
【００４４】
本実施の形態に係るスマートカード暗号化サービスプロバイダ１０によれば、スマートカードＳに書き込みが不可能な状態で、鍵コンテナ作成手段１０ｂが実行された場合には、鍵コンテナ作成手段１０ｂは、鍵コンテナをコンピュータ２のハードディスク内に作成するか、作成を行わないかを、ユーザーに選択させる。これにより、スマートカードＳに書き込みが不可能な状態であっても、状況に応じて、鍵コンテナをハードディスク２ａ内に作成してアプリケーション４の処理を続行させるか、処理を中止させるかを、ユーザーが判断できるようになり、アプリケーション４の処理が無条件に中断されることがなくなる。
【００４５】
また、鍵コンテナが、スマートカードＳに作成された場合、ハードディスク２ａ内に作成された場合のいずれであっても、アプリケーション４は、鍵コンテナ作成手段１０ｂから取得した鍵コンテナのハンドルを用いて鍵生成手段１０ａや保存手段１０ｄや取得手段１０ｅを実行すれば、鍵生成手段１０ａや保存手段１０ｄや取得手段１０ｅは、スマートカードＳまたはハードディスク２ａ内に作成された、そのハンドルに対応する鍵コンテナにアクセスする。同様に、鍵コンテナがスマートカードＳに作成された場合、ハードディスク２ａ内に作成された場合のいずれであっても、アプリケーション４は、鍵コンテナ作成手段１０ｂから取得した鍵コンテナの名前を用いて鍵コンテナ検索手段１０ｃを実行すれば、鍵コンテナ検索手段１０ｃは、スマートカードＳおよびハードディスク２ａ内のそのハンドルに対応する鍵コンテナを検索する。従って、アプリケーション４が鍵コンテナの保存場所を意識する必要がない。
【００４６】
なお、上記実施の形態においては、鍵コンテナ作成手段１０ｂが実行された際に、スマートカードＳに書き込みが可能かどうかを判断し、不可能であればハードディスク２ａに保存するかどうかをユーザーに選択させるように構成されている（請求項２に対応している）が、本発明はそれに限定されず、鍵コンテナ作成手段１０ｂが実行された際には、スマートカードＳに鍵コンテナを作成せず、コンピュータ２のＲＡＭ等の記憶手段上に仮想的な鍵コンテナを作成しておき、（アプリケーション４または鍵生成手段１０ａによって）保存手段１０ｄが実行された際に、ＲＡＭ上の鍵コンテナおよび保存対象をスマートカードＳに保存するよう構成してもよい。この場合、保存手段１０ｄ実行時に、スマートカードＳに保存が不可能であった場合には、ＲＡＭ上の鍵コンテナおよび保存対象を、ハードディスク２ａに保存するかどうかをユーザーに選択させるよう、保存手段１０ｄを構成する（請求項１に対応している）。
また、秘密鍵や公開鍵やデジタル証明書等の保存対象を、鍵コンテナ内ではなく、直接スマートカードＳまたはハードディスク２ａに保存可能に構成し、保存手段１０ｄが実行された際に、保存対象をスマートカードＳに保存するよう構成し、この保存手段１０ｄ実行時に、スマートカードＳへの書き込みが不可能であった場合には、保存対象を、ハードディスク２ａに保存するかどうかをユーザーに選択させるように構成してもよい（請求項１に含まれる）。
【００４７】
保存手段１０ｄによってスマートカードＳに書き込み可能か否かをチェックするよう構成した場合の、保存手段１０ｄの処理フローを、図５に示す。
まず、スマートカードリーダライタドライバを介して、スマートカードリーダライタＷに挿入されたスマートカードＳ内に、秘密鍵や公開鍵やデジタル証明書等の保存対象を作成する命令を実行する（ステップ１）。ステップ２で、この命令のレスポンスが、正常終了であった場合には、処理は終了する。
【００４８】
ステップ２において、スマートカードＳに保存ができない状態であった場合には、スマートカードリーダライタドライバから、保存手段１０ｄに、スマートカードＳに書き込みが行えないことの通知（例えばエラーレスポンス等）が通知される。この書き込み不可能であることの通知がされると、保存手段１０ｄは、コンピュータ２のモニタ等の表示手段に、保存対象をハードディスク２ａ内に保存するか、または保存を行わないかを選択させる表示を行う（ステップ４）。この表示は、図６に示す、前出の鍵コンテナ作成手段１０ｂで用いたダイアログ２０と同様のものを用いてよい。ユーザーは、「Ｙｅｓ」のボタン２０ａと、「Ｎｏ」のボタン２０ｂとのいずれかのボタンを選択して押下することで、保存対象をハードディスク２ａ内に保存するか否かを選択することができる。
【００４９】
ダイアログ２０で「Ｎｏ」のボタンが選択された場合には、鍵コンテナ作成手段１０ｂは、保存手段１０ｄの戻り値に、鍵コンテナを作成できなかったことを意味するフラグを立てて、処理を終了する（ステップ８）。
ダイアログ２０で「Ｙｅｓ」のボタンが選択された場合には、コンピュータ２のハードディスク２ａ内に、保存対象を保存する命令を実行し（ステップ６）、処理は終了する。
【００５０】
この構成によっても、スマートカードＳに書き込みが不可能な状態であっても、状況に応じて、保存対象をハードディスク２ａ内に保存してアプリケーション４の処理を続行させるか、処理を中止させるかを、ユーザーが判断できるようになり、アプリケーション４の処理が無条件に中断されることがなくなる。
【００５１】
【発明の効果】
本発明に係るスマートカード暗号化サービスプロバイダによれば、スマートカードに書き込みが不可能な状態で、アプリケーションによるコールによってスマートカードへの書き込みが必要な処理が行われた場合であっても、ユーザーに対して適切なガイダンスを表示して、アプリケーションが処理を継続することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明に係るスマートカード暗号化サービスプロバイダと、ソフトウェア暗号化サービスプロバイダとを備えたコンピュータのブロック図である。
【図２】本発明に係るスマートカード暗号化サービスプロバイダの内部構成を示した、コンピュータのブロック図である。
【図３】鍵コンテナ作成手段の、暗号化ＡＰＩに対するインタフェース仕様を示す図である。
【図４】鍵コンテナ作成手段の内部処理フローを示す図である。
【図５】保存手段の別例の内部処理フローを示す図である。
【図６】鍵コンテナ（または保存対象）の保存先をユーザーに選択させるための表示（ダイアログ）の例を示す図である。
【図７】従来のスマートカード暗号化サービスプロバイダと、ソフトウェア暗号化サービスプロバイダとを備えたコンピュータのブロック図である。
【符号の説明】
２  コンピュータ
２ａ  ハードディスク
４  アプリケーション
６  暗号化ＡＰＩ
８  ソフトウェア暗号化サービスプロバイダ
１０  スマートカード暗号化サービスプロバイダ
１０ａ  鍵生成手段
１０ｂ  鍵コンテナ作成手段
１０ｃ  鍵コンテナ検索手段
１０ｄ  保存手段
１０ｅ  取得手段
１０ｆ  暗号化手段
１０ｇ  復号化手段
２０  ダイアログ
２０ａ  Ｙｅｓボタン
２０ｂ  Ｎｏボタン
Ｓ  スマートカード
Ｗ  スマートカードリーダライタ
【図１】
2004152042.tif 000003
【図２】
2004152042.tif 000004
【図３】
2004152042.tif 000005
【図４】
2004152042.tif 000006
【図５】
2004152042.tif 000007
【図６】
2004152042.tif 000008
【図７】
2004152042.tif 000009