JP2004048742A - ベース暗号サービスプロバイダ(csp)の方法および装置 - Google Patents

ベース暗号サービスプロバイダ(csp)の方法および装置 Download PDF

Info

Publication number
JP2004048742A
JP2004048742A JP2003180213A JP2003180213A JP2004048742A JP 2004048742 A JP2004048742 A JP 2004048742A JP 2003180213 A JP2003180213 A JP 2003180213A JP 2003180213 A JP2003180213 A JP 2003180213A JP 2004048742 A JP2004048742 A JP 2004048742A
Authority
JP
Japan
Prior art keywords
cryptographic
function
logic
smart card
support
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003180213A
Other languages
English (en)
Other versions
JP4564243B2 (ja
JP2004048742A5 (ja
Inventor
Daniel C Griffin
ダニエル シー.グリフィン
Eric C Perlin
エリック シー.パーリン
Glenn D Pittaway
グレン ディー.ピッタウェイ
Klaus U Schutz
クラウス ユー.シュッツ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004048742A publication Critical patent/JP2004048742A/ja
Publication of JP2004048742A5 publication Critical patent/JP2004048742A5/ja
Application granted granted Critical
Publication of JP4564243B2 publication Critical patent/JP4564243B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/08Payment architectures
    • G06Q20/10Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
    • G06Q20/105Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems involving programming of a portable memory device, e.g. IC cards, "electronic purses"

Abstract

【課題】暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成可能なインタフェースロジックのための装置および方法を提供すること。
【解決手段】インタフェースロジックは、少なくとも1つの管理機能を暗号提供ロジックに提供する。その管理機能は、次の4つの管理機能、すなわち識別管理機能、ファイル管理機能、コンテナ管理機能、および暗号法管理機能のうち少なくとも1つを含んでいる。
【選択図】    図1

Description

【0001】
【発明の属する技術分野】
本発明は、一般に、コンピューティングデバイスに関し、より詳細には、例えば、異なるタイプのスマートカードなど、異なるタイプのポータブルトークンデバイスを、コンピューティングデバイスに動作可能にインタフェースする際に使用する方法および装置に関する。
【0002】
【従来の技術】
暗号法は、通例、データが安全に記憶され、かつ/または伝送されるような方法で、データを認証し、符号化し、または暗号化/解読するために利用されている。暗号法は、コンピュータおよびネットワークの数、サイズおよび複雑性が増すにつれ、より一層一般的なものになっている。
【0003】
一例として、パーソナルコンピュータ(PC)などのコンピューティングデバイスにおいては、一般に、公開鍵/秘密鍵のペアを使用することにより、通信当事者間で交換されるデータの非対称暗号化を行う。非対称暗号化は、公開鍵暗号化アルゴリズムを使用している。公開鍵アルゴリズムは、2つの異なる鍵(鍵ペアとして知られる)、すなわち、公開鍵と秘密鍵を使用する。これらの2つの鍵は、一般に、それらを数学的に関係付けるきわめて大きな素数から導出される。しかし、実際には、一方の鍵をもう一方から導出することは不可能である。それらの名前が示唆するように、公開鍵は公開され、一方、秘密鍵は秘密にされる。一般的な静的マシンに集中したPC環境においては、秘密鍵が、それを生成したPCから離れることは絶対にない場合がある。
【0004】
鍵の一方で暗号化された情報(すなわちデータ)は、鍵のもう一方でのみ解読することができる。したがって、例えば、秘密鍵で暗号化されたデータは公開鍵でのみ、逆に、公開鍵で暗号化されたデータは秘密鍵でのみ解読することができる。
【0005】
さらなる安全策として、通信セッションの間、セッション鍵を使用することができる。セッション鍵は、基本的に、通信当事者間で共用される一時的な秘密鍵または秘密である。受信者は、セッション鍵を解読すると、暗号化されているデータを解読することができる。解読したメッセージの保全性は、そのメッセージをハッシュしてメッセージダイジェストを生成し、そのダイジェストの値を、送信者が計算して暗号化メッセージ中に含めたダイジェストと比較することによって確認することができる。
【0006】
このような暗号法技術に関連する問題の1つは、例えば、通信当事者の公開鍵の1つであると称する公開鍵を不正に差し出すことによって、第三者が通信当事者の一方のなりすましを図る可能性があることである。その通信当事者に宛てられた、その不正な公開鍵によって暗号化されたメッセージまたはハッシュはどれも、その第三者が持っている秘密鍵で解読できると考えられる。
【0007】
この問題およびその他の問題に対処するために、通信当事者はディジタル証明書を利用することができる。ディジタル証明書は、例えばVeriSign,Inc.など、認証局(CA)と呼ばれる信頼のおける機関またはエンティティが発行する資格認定書である。この資格認定書は、一般に、公開鍵、およびその証明書の対象者(すなわち、適用される通信当事者)を識別するデータを含む。証明書は、通常、CAがその証明書の対象者を確認し、また、証明書とともに含まれる公開鍵がその対象者に所属するものであることを確認した後でのみ、CAによって発行される。証明書はまた、その証明書が変更されたり偽造されたりしたものではないことを保証するため、CAの公開鍵で署名された、証明書の内容のダイジェストも含む。
【0008】
CAはまた、本質的に信頼できる自己署名証明書、すなわちルート証明書を提供することもできる。CAは、他のCAの階層によってそれ自身を証明することができる。このような情報は、通常、証明書内に含まれている。ディジタル証明書を使って文書およびソフトウェアに署名する場合、この情報が、信頼関係を確立するためにユーザに表示することができる安全かつ確認可能なフォームで、署名された項目とともに記憶される。
【0009】
長い間には、ディジタル証明書がPC上に蓄積しがちになる。これらのディジタル証明書は、通常、証明書ストアに収集される。一般に、ユーザが、証明書ストア内でディジタル証明書を記憶し、検索し、削除し、列挙し、確認し、または保持することができるようにするツールが、アプリケーションプログラミングインタフェース(API)機能として提供されている。
【0010】
これを考慮して、ワシントン州、レッドモンドのMicrosoft社は、汎用および専用コンピュータ、PC、ポータブルデバイスなどを含めた、様々な「マシン」で使用するためのソフトウェア、オペレーティングシステム、およびその他のアプリケーションを開発している。Microsoft社は、暗号サービスを求めるアプリケーションと、このような暗号サービスを提供できるプログラム/デバイスの間の、制御された/拡張可能なインタフェースを提供する暗号API(以下、「CryptoAPI」と呼ぶ)を開発した。CryptoAPI内では、証明書ストア内のディジタル証明書を管理し、また、ディジタル証明書をデータファイルに添付するために使用できるツール(例えば関数)が提供されている。例えば、CryptoAPIは、一般にCAによって発行され、もはや有効ではないディジタル証明書が記載された、証明書廃止リスト(CRL)を保持している。また、CryptoAPIは、信頼のおけるエンティティが署名した項目を識別する、証明書信頼リスト(CTL)もサポートする。証明書ストア内の様々なディジタル証明書、CRLおよびCTLは、通常、例えばディスクファイルやシステムレジストリなど、マシン内の不揮発性メモリ内に保持されている。
【0011】
要求された暗号サービスを提供することができる暗号プログラム/デバイスは、マシンに追加されて必要な一意の暗号トークンを提供する、汎用および/または専用のハードウェア/ソフトウェアを含むことができる。したがって、例えば、CryptoAPIは、新規/追加の暗号デバイス/トークンがマシンに追加されることを可能にし、要求しているアプリケーションと追加された暗号デバイス/トークン間のインタフェースとして動作する。このタイプのAPI機能/インタフェースはよく知られており、例えば、それをはるかに詳細に記載している1997年11月18日にSpiesらに対して発行された文献もある(例えば、特許文献1参照)。
【0012】
上述のAPI機能/インタフェースは、基本的に、暗号デバイスが所定の場所に固定され、常に利用可能であり、ローカルマシンによってのみ使用されることを前提としているため、静的マシンに集中したトークンを使った場合にはうまく動作する傾向がある。しかし、トークンのいくつかがポータブルである場合には、API機能/インタフェースは必ずしも必要とするトークンの位置を突き止めることができない。
【0013】
【特許文献1】
米国特許第5,689,565号明細書
【0014】
【発明が解決しようとする課題】
その結果、最近のスマートカード(SC)、およびその他のタイプのポータブルトークン搬送デバイスおよび/またはリムーバブル処理デバイスの人気とともに、設計者は、特定のSCなどがCryptoAPIで動作できるようにする特定のフォームのインタフェースロジックを提供することが要求されるようになっている。これによっていくつかの問題が生じた。例えば、PCまたはその他の同様のコンピューティングデバイスは、異なるタイプのSCをサポートできる必要がある場合には、その異なるSCのそれぞれについて、正しいインタフェースロジック、例えばソフトウェアを保持することが必要になる。さらに、多くの場合において明らかになっているように、インタフェースロジックは、構築および設計するのが非常に複雑な場合がある。これらおよびその他の理由から、ポータブルトークンメカニズムおよび/またはその他の同様のリムーバブル/非リムーバブル処理デバイスを、様々な形態のコンピューティングデバイスおよび/または機器内のロジックをサポートする、特定の暗号法に動作可能に結合するための、改良された方法および装置の必要がある。
【0015】
【課題を解決するための手段】
上述およびその他のニーズは、例えば、本発明の特定の実施形態による装置によって満たされる。その装置は、暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成することができるインタフェースロジックを含む。このインタフェースロジックは、少なくとも1つの管理機能を暗号提供ロジックに提供する。管理機能は、次の4種類の管理機能、すなわち識別管理機能、ファイル管理機能、コンテナ管理機能、暗号法管理機能のうち少なくとも1つを含む。
【0016】
その他の実施形態によれば、ある方法が提供される。その方法は、暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成することができるインタフェースロジックを提供するステップ、および、暗号提供ロジックに動作可能に結合された場合に、識別確認アクティビティ、ファイルアクセスアクティビティ、コンテナアクセスアクティビティ、および暗号アルゴリズムアクティビティを含むアクティビティグループから選択した、少なくとも1つのアクティビティを実行するように、インタフェースロジックを構成するステップを含む。
【0017】
さらに別の実施形態では、コンピュータ可読媒体の権利を主張する。コンピュータ実行可能命令は、暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成することができるインタフェースロジックを確立するステップ、および、識別サポート機能、ファイルアクセスサポート機能、コンテナアクセスサポート機能、および暗号法サポート機能を含むサポート機能グループから選択された少なくとも1つのサポート機能を、インタフェースロジックに確立させるステップを含む動作を、コンピューティングまたはその他の同様のデバイスに実行させることができるコンピュータ可読媒体によって提供される。
【0018】
本発明の様々な方法および構成を、添付の図面を参照しながら以下の詳細な説明を読むことによって、より完全に理解することができるであろう。
【0019】
【発明の実施の形態】
概略
以下のセクションでは、様々なコンピューティングデバイスなどにおいて使用するための、例示的な改良された結合/インタフェーススキームを説明する。本発明の特定の態様によれば、この例示的結合/インタフェーススキームを、ハードウェア、ファームウェア、ソフトウェアまたはそれらのいずれかの組合せを含むロジックとして実装することができる。結果として得られるロジックは、例えば、複数の異なるポータブルトークンデバイスおよび/またはその他の同様のリムーバブル/非リムーバブル処理デバイスに、「基礎」レベルのサポートを提供するように構成することができる。その一例がスマートカードである。
【0020】
以下の説明の多くでは、Microsoft(登録商標)社のCryptoAPIに基づくオペレーティングシステムのサブコンポーネントおよび関連モジュールの既存の特徴を考慮しているが、本発明の範囲はそれよりもはるかに広く、それらに限定されるものではない。例えば、結合/インタフェーススキームおよび技術は、静的トークンとポータブルトークンの両方をサポートする環境における、様々な開発者/ベンダ、および/または彼らの製品の機能、責任、および/または関連する能力に関して、役立つ境界線を定義する。したがって、例示的方法および装置はポータブルであり、またはそうでない場合には、その他の環境、マシン、および/またはオペレーティングシステムに適合可能である。
【0021】
例示的コンピューティングデバイス構成
図1は、本発明の特定の例示的実施形態による、改良された結合/インタフェーススキームおよび技術に適し、かつ/またはそれらをサポートするコンピュータ130の一般的な例を示す例示的構成図である。様々なタイプのコンピューティングデバイスが、これらのスキームおよび技術から恩恵を得ることができる。したがって、「マシン」という用語を、それらのスキームおよび技術の全てまたは一部を実施することが可能な、いずれかのタイプのデバイスまたは機器を表すためにも使用することがしばしばある。
【0022】
図1を参照すると、コンピュータ130は、1つまたは複数の処理装置132、システムメモリ134、および、システムメモリ134を含めて、様々なコンポーネントをプロセッサ132に結合するバス136を含む。バス136は、様々なバスアーキテクチャのいずれかを使った、メモリバスまたはメモリコントローラ、周辺バス、アクセラレイティッドグラフィックスポート、およびプロセッサまたはローカルバスを含めた、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。システムメモリ134は、読出し専用メモリ(ROM)138およびランダムアクセスメモリ(RAM)140を含む。起動時などに、コンピュータ130内のエレメント間の情報の転送を援助する、基本ルーチンを含む基本入出力システム(BIOS)142は、ROM138に記憶されている。
【0023】
コンピュータ130は、ハードディスク(図示せず)からの読出し、およびそれへの書込みのためのハードディスクドライブ144、リムーバブル磁気ディスク148からの読出し、およびそれへの書込みのための磁気ディスクドライブ146、および、CD−ROMやその他の光媒体などのリムーバブル光ディスク152からの読出し、およびそれへの書込みのための光ディスクドライブ150をさらに含む。ハードディスクドライブ144、磁気ディスクドライブ146、および光ディスクドライブ150は、SCSIインタフェース154または特定のその他の適切なインタフェースによって、バス136に接続される。ドライブおよびそれらに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性ストレージを、コンピュータ130に提供する。本明細書に記載の例示的環境は、ハードディスク、リムーバブル磁気ディスク148、およびリムーバブル光ディスク152を利用しているが、当業者は、例示的動作環境においては、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ランダムアクセスメモリ(RAM)、読出し専用メモリ(ROM)など、コンピュータがアクセス可能なデータを記憶することができるその他のタイプのコンピュータ可読媒体も使用できることを理解されたい。
【0024】
ハードディスク、磁気ディスク148、光ディスク152、ROM138、またはRAM140上には、オペレーティングシステム158、1つまたは複数のアプリケーションプログラム160、その他のプログラムモジュール162、およびプログラムデータ164を含めて、いくつかのプログラムモジュールを記憶することができる。ユーザは、キーボード166およびポインティングデバイス168などの入力デバイスを介して、コマンドおよび情報をコンピュータ130に入力することができる。その他の入力デバイス(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含めることができる。これらおよびその他の入力デバイスは、バス136に結合されたインタフェース170を介して、処理装置132に接続される。モニタ172またはその他のタイプの表示デバイスも、ビデオアダプタ174などのインタフェースを介してバス136に接続される。パーソナルコンピュータは、一般に、モニタに加えて、スピーカおよびプリンタなど、その他の周辺出力デバイス(図示せず)を含む。
【0025】
コンピュータ130は、一般に、リモートコンピュータ176などの1台または複数のリモートコンピュータへの論理接続を使った、ネットワーク化された環境で動作する。リモートコンピュータ176は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の一般的なネットワークノードであってよく、図1にはメモリストレージデバイス178しか示していないが、一般に、コンピュータ130に関連して上記に説明したエレメントの多くまたはすべてを含む。図1に示す論理接続は、ローカルエリアネットワーク(LAN)180および広域ネットワーク(WAN)182を含む。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいては一般的である。
【0026】
コンピュータ130は、LANネットワーキング環境で使用される場合は、ネットワークインタフェースまたはアダプタ184を介してローカルネットワーク180に接続される。コンピュータ130は、WANネットワーキング環境で使用される場合は、一般に、モデム186、または、インターネットなどの広域ネットワーク182を介して通信を確立するためのその他の手段を含む。モデム186は内蔵でも外付けでもよく、シリアルポートインタフェース156を介してバス136に接続される。ネットワーク化された環境においては、パーソナルコンピュータ130に関連して示すプログラムモジュール、またはそれらの一部を、リモートのメモリストレージデバイスに記憶することができる。図示のネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立するためのその他の手段も使用できることを理解されたい。
【0027】
一般に、コンピュータ130のデータプロセッサは、コンピュータの様々なコンピュータ可読記憶媒体中に、異なる時間に記憶された諸命令によってプログラムされる。一般に、プログラムおよびオペレーティングシステムは、例えばフロッピー(登録商標)ディスクまたはCD−ROMで配布され、それらから、コンピュータの補助メモリ中にインストールまたはロードされる。実行時、それらは、少なくとも一部が、コンピュータの主電子メモリ中にロードされる。本明細書に記載の発明は、マイクロプロセッサまたはその他のデータプロセッサと関連して、下記に説明するステップを実施するための命令またはプログラムを含む場合の、これらおよびその他の様々なタイプのコンピュータ可読記憶媒体を含む。本発明はまた、下記に記載の方法および技術に従ってプログラムされている場合のコンピュータ自体も含む。
【0028】
説明のために、本明細書では、オペレーティングシステムなどのプログラムおよびその他の実行可能プログラムコンポーネントを別個のブロックとして説明するが、このようなプログラムおよびコンポーネントは、様々な時点で、コンピュータの異なるストレージコンポーネントに存在し、また、コンピュータのデータプロセッサによって実行されることを理解されたい。
【0029】
トークンの可搬性、およびアプリケーションプログラム160をサポートする、関連する暗号機能をサポートするために、コンピュータ130は、少なくとも1つのポータブルトークンインタフェースをさらに含む。例えば、適用可能なトークンデータ/命令で符号化されている場合には、磁気ディスク148または光ディスク152をトークンキャリアまたはデバイスとみなすことができる。しかし、さらに将来は、ポータブルトークンインタフェースが、コンピュータ130への追加ハードウェアの結合を含む可能性がある。したがって、図示のように、例えば、スマートカードリーダ200を、シリアルポート156などのポートを介して、バス136に接続することができる。スマートカードリーダ200は、その他の入出力デバイスと同様に、アプリケーションプログラムおよび/またはその他のモジュールによってサポートされる。スマートカードリーダ200は、スマートカード202を受けて、スマートカード202を処理装置132に動作可能に結合するように構成される。スマートカードリーダ200は、複数のスマートカードをサポートすることができる。当業者は、その他のタイプ/形態のポータブルトークン、および/またはその他の同様のリムーバブル/非リムーバブル処理メカニズムが、その他のインタフェースデバイスを利用できることを理解されよう。
【0030】
さらなる例によれば、適用可能であれば、ユニバーサルシリアルバス(USB)ポート204をバス136に結合して、スマートカードリーダおよび/またはその他のタイプのポータブルトークンデバイス206をサポートすることができる。ポータブルトークンデバイスの基本的概念は、暗号機能をサポートするために必要とされる場合には、ユーザがそれを1つまたは複数のコンピュータシステムに供給できるということである。リムーバブル/非リムーバブル処理メカニズムの基本的概念も同じであり得るが、ただし、製造者またはその他の技術者/管理者によってデバイスまたは機器中に構成されたスマートカードの場合のように、特定の実施形態ではそのメカニズムを実質的に永久的に構成することができる点が異なる。一例として、セットトップボックスまたはその他のデバイス内に埋め込まれ、通常は消費者が取り外すことはない加入者カードが挙げられる。
【0031】
例示的ポータブルトークンおよび/またはその他の同様の処理デバイス
図2は、例示的スマートカード202を示す構成図である。図示のように、スマートカード202は、オンボードコントローラまたはプロセッサ206に結合されたコネクタ204を含む。プロセッサ206は、さらにオンボードメモリ208に結合されている。メモリ208は、一般に、データの損失なしにスマートカード202をマシンからマシンに移動させることが可能な、不揮発性メモリである。プロセッサ206は、スマートカード202に電源が投入されると、メモリ208および/またはコンピュータ130によって与えられる命令に応答可能になる。
【0032】
この構成の場合、暗号鍵にかなりのセキュリティを提供するように、スマートカードを構成することができる。ユーザがスマートカード202によって提供されるサービスを起動、またはそれらにアクセスしようとすると、さらなるセキュリティまたは識別データ(例えば、個人識別番号(PIN)またはストリング、個人的および/またはその他の生物測定学上の情報/データ)をコンピュータ130に入力するようにユーザに要求することにより、さらなるセキュリティを提供することができる。例えば、カード所有者は、PINを入力して秘密鍵を起動すること、または指紋をスキャンさせることが要求される場合がある。例えばトークンキャリアとして、スマートカード202は、好ましくは、少なくとも1組の非対象鍵ペアを保持する。対象鍵は、コンピュータ130のより強力な処理装置132によって処理されることが好ましい。
【0033】
スマートカードの開発者は、通常、自分が望むように、自由にスマートカードを開発/プログラムし、また、以前に定義されたインタフェースは複雑でエラーを発生し易いため、これらのスマートカードへのインタフェースにおいて問題が発生する場合がある。現在、スマートカードには、物理インタフェースレベルを超えるスタンダードはほとんどない。カリフォルニア州、レッドウッドシティのRSA研究所から入手可能な、公開鍵暗号法スタンダード#11:暗号トークンインタフェーススタンダードが、現在、ポータブルトークンの使用を規定するためのドラフト段階にある。しかし、現在のドラフト中で提案されている解決策/インタフェースは、本明細書で記載しているような、様々なオブジェクトおよびメソッドの呼出し技術を使ったクリーン/汎用インタフェースを提供しない。
【0034】
さらに、インタフェースレベルを超える指定スタンダードはどれも、それぞれが自分達自身の要件、スタンダードおよびプラクティスを持っている可能性があるスマートカードベンダにとっては逆効果であるというのが、一般的なコンセンサスであるように思われる。
【0035】
本発明の特定の態様によれば、このような様々なデバイスの製造者および実装者のプランおよび/または要望が、非常に必要とされ、ロバストに実装可能な結合/インタフェーススキーマおよび技術によって考慮され、サポートされる。本発明の特定のさらなる態様によれば、必要不可欠なインタフェースをサポートするための重要なコードを開発する負担は、基本的に、オペレーティングシステムおよび/またはそのサブコンポーネントの開発者にシフトされている。
【0036】
従来のソフトウェアアーキテクチャソリューション
図3を参照する。図3は、1つまたは複数のアプリケーション302と、1つまたは複数のスマートカード308a〜n間のインタフェースを提供するために実装された、従来のソフトウェアアーキテクチャソリューション300の例示的な一部を示す構成図である。
【0037】
この例では、呼び出しているアプリケーション302とスマートカード308a〜nの間の従来のインタフェースは、呼び出しているアプリケーション302をサポートするように動作可能に構成された暗号API304を含む。インタフェースは、1つまたは複数の暗号サービスプロバイダ(CSP)306a〜nをさらに含む。この例では、一意の異なるスマートカード308a〜nのそれぞれについて、対応するCSP306a〜nがある。
【0038】
従来、各スマートカード308a〜nは特定のデータおよび/またはデータ交換、および関数の呼出しを必要とするため、信頼できるCSP306a〜nを開発することは、きわめて困難であることがわかっている。様々なソフトウェア開発者またはその他の同様のベンダは、通常、インタフェース内の彼らそれぞれのロジックに対する責任を負うため、そのような努力はさらに複雑化されている。したがって、例えば、図3では、ベンダ1をスマートカード(SC)308aおよび対応するCSP306aを提供するものとして図示してあり、一方、ベンダ0は暗号API304を提供する。経験により、暗号API304を考慮して、またその他の(おそらくまだ決定されていない)スマートカードリーダ、スマートカード、および対応するCSPも考慮してロバストCSP306aを生産するために、ベンダ1に負わされる負担は大きすぎる可能性があることがわかっている。
【0039】
したがって、インタフェース操作、および様々なスマートカードおよび同様のデバイスの機能を分析した結果、スマートカードベンダに負わされている負担を実質的に低減する、改良された設計が得られた。さらに、本明細書で提示する、結果として得られた結合/インタフェーススキームおよび技術は、複数の専用/限定用途インタフェースではなく、より標準化された、または汎用のインタフェースを提供する。
【0040】
改良されたソフトウェアアーキテクチャソリューション
図4を参照する。図4は、本発明の特定の例示的実施形態による、改良されたソフトウェアアーキテクチャ400を示す構成図である。
【0041】
ここで、ソフトウェアアーキテクチャ400は、1つまたは複数のスマートカード(SC)308a〜nおよび/またはその他の同様のデバイスのサービス/機能を要求し、かつ/または使用するように構成可能な、1つまたは複数のアプリケーション302を含む。図3に示すように、アプリケーション302は、暗号API304に動作可能に結合されている。暗号API304とSC308a〜nの間の動作は、ベースCSP402であり、必要に応じて、1つまたは複数のスマートカード特有モジュール404a〜nである。さらに、この実施形態では、ベースCSP402とともに、1つまたは複数の管理API406が含まれている。
【0042】
特定の例示的態様によれば、ベースCSP402によって提供される機能には、SC308a〜nの少なくとも一部に共通である、1つまたは複数のインタフェースサポート機能が含まれる。例として、特定の実施形態では、ベースCSPは、少なくとも4種類の共通インタフェースサポートアクティビティ、すなわち、PIN管理、ファイル管理、コンテナ管理、および暗号操作を提供/サポートする。SC308a〜nのそれぞれは、特定の時点で、このようなアクティビティおよび/またはインタフェース機能を必要とするプロセスに関与するため、これらのインタフェースサポートアクティビティは、「汎用カテゴリ」を表すとみなすことができる。
【0043】
したがって、図4では、ベースCSP402は、PINマネージャ408、ファイルマネージャ410、コンテナマネージャ412、および暗号マネージャ414の機能を含む。これらの管理モジュールは、スマートカードベンダがより容易に対話することができ、また恩恵を引き出すことができる、十分に定義されたインタフェースを提供するように構成されている。したがって、本発明の特定の実施形態によれば、ベースCSP402は、暗号機能、および、スマートカードによって提供されるデータストレージ、スマートカードおよびその機能を発見し、それらにアクセスする際のCryptoAPIの機能などのその他の機能を動作可能にサポートする、「ミニドライバ」として動作するように構成される。
【0044】
PINマネージャ408、ファイルマネージャ410、コンテナマネージャ412、および/または暗号マネージャ414を使って、ベースCSP402は、スマートカード308a〜nが提供できる様々な適用可能な特徴を提示する。暗号API304とスマートカード308a〜nの両方が、それらの開発者やベンダなどに関係なく、ベースCSP402によって提供される定義済みインタフェース機能セットを有する。モジュラーの論理構成においては、追加される新しい/異なるスマートカード308a〜nのそれぞれは、ベースCSP402によって提示された共通機能の使用法をそのときにのみ必要とするだけである。スマートカード308a〜nは、せいぜい、スマートカードロジックとベースCSP402の間で交換された情報を、必要に応じて変換または処理するスマートカード特有モジュールを提供する必要があるだけである。さらに、本発明の特定の実施形態によれば、ベースCSPを、暗号API304の大幅な変更が必要ないように、あるいは全く変更する必要がないように設計することができる。さらに、1つまたは複数のカード管理API406を、スマートカード308a〜n、および場合によっては暗号API304に、新規/追加サポートを提供するように実装することができる。
【0045】
PINマネージャ408は、例えば、ユーザが、自分がスマートカードを使用する認可を受けたユーザであることをスマートカードに納得させるために、必要な情報を入力するログオン操作などの、識別機能をサポートするように構成される。したがって、例えば、特定の実施形態では、ベースCSPが、ユーザを認証するために使用できる、証明書、RSA呼出しなど、ユーザのPINまたはその他の同様の情報の受信/処理をサポートする。一例では、PINを使って、カードに対してユーザを認証することができる。カードに対して認証されると、ユーザは、次いで、カード上のRSA秘密鍵を使って、自分自身をシステムに対して認証させることができる。一般に、ユーザが自分自身をシステムに対して認証させるためには、証明書も必要とされる。したがって、スマートカード上にその証明書を記憶すると便利である。これらおよびその他の様々な信頼のおける認証技術などはよく知られており、したがって、それらについての詳細な説明は本明細書の範囲外である。
【0046】
したがって、暗号API304が、暗号の関連付けを行い、またはコンテキストを作成することによって、その後、アプリケーション302が、スマートカード308a〜nによって提供される暗号機能およびその他の機能を利用できるようにする際に、暗号API304を援助するようにPINマネージャ408を構成することができる。このような機能および/またはその他の機能を遂行するために、PINマネージャ408は、1つまたは複数のAPIを含むことができる。
【0047】
本発明の特定の例示的実施形態によれば、ファイルマネージャ410は、アクセスメモリ208(例えば図2参照)およびその中に提供されているデータファイルおよび/またはファイル構造を発見し、かつ/またはそれらにアクセスする機能を、アプリケーション302に提供するように構成される。多くの場合、スマートカード308a〜nは、メモリおよび/またはその中に記憶されているデータファイルのすべてまたは選択された一部に対するそのようなアクセスを、許可/不許可することができる可能性がある。特定の実施形態では、このような構成は、多くのオペレーティングシステムでは一般的な、読出し、書込み、および/または消去の許可など、特定ファイルへのアクセス許可を含むことができる。したがって、このような機能および/またはその他の機能を遂行するために、ファイルマネージャ410は、1つまたは複数のAPIを含むことができる。
【0048】
本発明の特定の実施形態によれば、コンテナマネージャ412は、コンテナおよび/またはそれらの内容、あるいは、スマートカード308a〜nに関連づけられ、少なくとも一時的にメモリ208中で保持される、その他のコンテナ関連の情報について、発見、アクセス、および/または制御を行うように構成される。本明細書で使用しているように、コンテナという用語は、一般に、代表的にはオブジェクトベースまたはその他の同様のロジックの設計(例えば、ソフトウェアプログラミング方法)において提供される、1つまたは複数のオブジェクトを指す。コンテナは、一般に、1つまたは複数のオブジェクトを論理的に含む。コンテナは空のことがある。コンテナはまた、他のコンテナを含むことができる。コンテナマネージャ412は、アプリケーション302、暗号API304、および/またはスマートカードがこのようなコンテナのアクティビティを実行する際に、それをサポートすることができる。例えば、コンテナを使って、公開鍵/秘密鍵のペアを記憶することができる。これは、しばしば、鍵コンテナと呼ばれる。コンテナマネージャ412は、1つまたは複数のAPIを含むことができる。
【0049】
その他の特定の実施形態では、スマートカード(またはその他の同様のデバイス)がそのロジック、機能、データの記憶、コンテナ、証明書、鍵などを管理できるように、さらなる管理API406が提供される。このような追加およびオプションのAPIを、特に、1つまたは複数のスマートカードをサポートするように構成することができる。
【0050】
本発明の特定の例示的実施形態によれば、暗号マネージャ414は、暗号操作のためのインタフェースサポートを提供するように構成される。一例では、暗号マネージャ414を、1つまたは複数の鍵ペア、アルゴリズム、証明書などを利用することができる、スマートカード308a〜nの暗号ロジックによって、データの暗号化、解読、ハッシュ、メッセージのダイジェスト、署名などをサポートするように構成することができる。暗号マネージャ414はまた、1つまたは複数のAPIを含むこともできる。
【0051】
例示的スマートカードインタフェースの構成
このセクションでは、本発明のさらなる特定の実施形態による、さらなる例示的実施形態の詳細を提供する。ここでの目的は、本発明の範囲を限定することではなく、さらに他の実施形態に適合させることが可能な、特定の実施形態に特有の特徴および技術を紹介することである。
【0052】
このことを念頭に置いて、Microsoft(登録商標)Windows(登録商標)オペレーティングシステム、およびその中に提供されているCryptoAPIで使用するための例示的スキームおよび技術を提供する。ここでは、ベースCSPを、CryptoAPI、および必要に応じて、1つまたは複数のスマートカード特有モジュールで動作するように提供する。さらなる例示的実施形態に従って、オプションのスマートカード管理APIについても説明する。特定の実施形態においては、これらのスマートカード管理APIの1つまたは複数は、ベースCSPを除いても有益であることを認識されたい。
【0053】
この構成およびその他の同様の構成の基本的な設計目標は、スマートカードまたはその他の同様の処理/ロジック構成の飛躍的なパフォーマンス、セキュリティ、およびロバスト性を提供することである。この例では、ベースCSPおよび/または管理APIが、スマートカード、CryptoAPI、および呼び出しているアプリケーションの動作可能な結合/インタフェースのニーズを、完全に、またはそのほとんどをサポートする基盤を提供するように設計される。上述のように、ベースCSPおよび管理APIは、有利には、CryptoAPIを介してアプリケーションをサポートする必要が生じる可能性がある、様々なタイプのスマートカードおよび/またはその他の同様のデバイスの、全部ではないがほとんどにおいて共通であり、かつ/または共通であると期待される特定の機能に対する、必要なサポートを提供する。
【0054】
この例では、CryptoAPIは、スマートカード特有の機能から抽出されたものである。したがって、CryptoAPIは、アプリケーション/スマートカード間のインタフェース中に第1のレベルを形成する。例えば、特定のAPIは、様々なスマートカードまたはその他の同様のデバイスの利用法のシナリオを完全にサポートするように、このレベルにおいて提供される。ベースCSPは、この例示的アプリケーション/スマートカード間のインタフェース中に第2のレベルを形成する。特定の実施形態では、スマートカード管理APIはまた、この第2のレベルに常駐する。アプリケーション/スマートカード間のインタフェースの第3のレベルは、必要に応じて、1つまたは複数のスマートカード特有モジュールを含む。ここで、スマートカード特有のモジュールは、ベンダ特有の、およびカード特有の実装依存性から抽象化される可能性が高い。このようなスマートカード特有モジュールは、例えば、1つまたは複数のカード特有APIによって定義される。
【0055】
この例では、共通のスマートカード機能には、PINで保護される可能性が高い、秘密鍵の記憶(少なくとも1つの秘密鍵について)が含まれる。秘密鍵は、このように、「デフォルト」の鍵コンテナ内に記憶することができる。この例で実施しているように、たった1つの鍵が提供/許可される場合には、それは鍵交換タイプである。スマートカードの機能にはまた、少なくとも1つのスマートカードのログオン証明書の記憶も含まれる。ここで、例えば、証明書は、公開読出し可能で、PINによる書込み保護を施すことができる。
【0056】
この例では、共通のスマートカード機能には、複数の証明書および/または鍵のサポートも含まれる。複数の鍵を記憶することもできる。「デフォルト」の鍵コンテナを与えることが役立つ場合もあるが、各秘密鍵は、関連する鍵コンテナ名を持つことができる。各秘密鍵は、例えば、鍵タイプ(例えば、署名、鍵交換など)など、それに関連付けられた1組のプロパティを備えることができる。その他の例示的な鍵のプロパティには、鍵の寿命、鍵のサイズ、および/または関連する証明書および公開鍵の識別情報が含まれる。
【0057】
複数の証明書を、可能には異なる使用法で、記憶することができる。特定の実施形態では、秘密鍵ごとに複数の証明書をサポートすることが望ましい場合がある。各証明書は、基本的に、関連付けられた秘密鍵にそれをリンクする、識別情報を有することができる。
【0058】
共通機能には、スマートカードの公開データ部分中に記憶することができるルート証明書も含めることができる。このルートへのアクセスは、ユーザの公開証明書データにアクセスする場合と同じはずである。ルート証明書は、MicrosoftルートやVisaルートなど、ユーザの主要信頼ポイントであってよい。このような機能は、ユーザプロファイル、したがってユーザのルートストアを、ユーザが利用することができない、または修正することができない環境においては役立つ場合がある。その一例が、キオスクにおけるサーバの認証である。
【0059】
スマートカード上で、汎用証明書ストア機能も共通にすることができる。これは、全般的なカードの記憶が増大するにつれて一層役立つようになる場合がる。ユーザは、例えば、全ルートストアをカード上に保持するように、あるいは一部のCA(認証局)証明書を保持するように決めることができる。
【0060】
データの再方向付けも、別の潜在的な共通機能である。ここで、例えば、スマートカードの公開データ部分は、URLまたは、ユーザの個人データの残りの部分を識別する、同様のものを含むことができる。この機能の興味深い使用法には、ユーザデータの集中型記憶が含まれる。この場合、これには、ユーザの証明書、カード上に記憶された鍵で暗号化された「あまり重要ではない」秘密鍵、アドレス帳データなどを含めることができる。
【0061】
CryptoAPIの挙動、およびアプリケーション/スマートカード間のインタフェース構成500が満たすニーズをよりよく理解するためには、スマートカードに関連する使用法のシナリオを考えてみることが役立つ。以下のカード使用法シナリオは、クライアントデバイス上においてそれぞれのスマートカードのユーザ操作が実行されたときからの、ベースCSPの追跡に基づいたものである。
【0062】
2つの例示的シナリオは、スマートカードのログオン、およびスマートカードユーザの登録を含む。以下の追跡のそれぞれは、所与のシナリオで使用されるCryptoAPIの呼出し、および、もしあれば、そのAPIコールの結果生じる、その後のスマートカード操作から成る。
【0063】
ログオン開始プロセス:
Figure 2004048742
【0064】
【表1】
Figure 2004048742
【0065】
−このコンテナはすでに開かれているため、キャッシュデータを使用する。
【0066】
【表2】
Figure 2004048742
【0067】
証明書伝搬プロセスの開始:
Figure 2004048742
このコンテナの鍵のタイプはすでにわかっており、それは署名ではない。
CryptDestroyKey
CryptDestroyHash
CryptReleaseContext
Pin Change
【0068】
【表3】
Figure 2004048742
【0069】
ユーザの登録:
Figure 2004048742
Figure 2004048742
【0070】
電子署名
【0071】
【表4】
Figure 2004048742
【0072】
例示的CryptoAPI操作
CPAcquireContext
特定の実施形態では、AcquireContextを呼び出すことによって、そのようなデータをできるだけ早くキャッシュするように、CSPQueryCapabilities、CSPQueryFreeSpace、およびCSPQueryKeySizes関数が呼び出される。次の例示的シナリオでは、指定されたコンテナを備えたスマートカードが見つかると、例えば、コンテキストフラグ、コンテナ名、対応するスマートカードのシリアル番号、スマートカードにキャッシュされているデータへのポインタ、スマートカード選択ヒューリスティックス、および/またはコンテナ指定レベルなど、ユーザのコンテキストデータを使って、新しいHCRYPTPROVが作成される。
【0073】
CryptAcquireContextの呼出しに応答して、ベースCSPは、呼出し側が指定したコンテナを、特定のカード/リーダにマッチさせようと試みる。呼出し側は、例えば、以下に記載するように、様々なレベルの特有性でコンテナ名を与えることができ、そのコンテナ名は、より特有な要求からより特有ではない要求の順に、すなわち、リーダ名およびコンテナ名、リーダ名およびデフォルトコンテナ(例えばNULL)、コンテナ名のみ、および/またはデフォルトコンテナ(例えばNULL)のみの順でソートされる。一般に、リーダ名が提供される最初の2つの場合については、ベースCSPは、指定されたリーダをサーチして、そのリーダに挿入されているスマートカード上で、要求された操作を実行する。リーダ名が提供されない次の2つの場合には、ベースCSPは、現在の要求に適したカード/リーダについて、命令されたサーチを実行する。この場合、ベースCSPにすでにわかっているスマートカードから開始して、現在わかっているすべてのスマートカード/リーダへと続く。上記のそれぞれの場合について、ベースCSPを、例えば、キャッシュされているカードデータのリスト中で、マッチするスマートカードをサーチするように構成することができる。したがって、このようなキャッシュは、ベースCSPがそれまでに遭遇したスマートカードのリスト、および関連するカード状態情報を含むことができる。一般に、マッチするスマートカードがキャッシュ中に見つかった場合には、そのキャッシュ項目に関連するスマートカードハンドルをテストすることができる。これは、スマートカードが依然としてリーダ中にあるかどうかを判断するための1つの方法である。
【0074】
コンテナ操作
この例示的実施形態では、コンテナ操作を、CryptAcquireContextによって要求することができる。例えば、コンテナ操作は、新しいコンテナの作成(CRYPT_NEWKEYSET)、既存のコンテナを開くこと、および/またはコンテナの削除(CRYPT_DELETEKEYSET)を含むことができる。ユーザコンテキストを特定のスマートカードおよびリーダに関連付けるために使用されるヒューリスティックスは、要求されたコンテナ操作、および使用されたコンテナ指定のタイプまたはレベルに基づくことができる。
【0075】
ここで、コンテナ作成操作を、例えば以下のように制限することができる。
【0076】
サイレントコンテキストなし−鍵コンテナの作成では、常に、例えばPINプロンプトなどのユーザインタフェース(UI)を示すことができなければならない。
【0077】
既存のコンテナを上書きしない−指定したコンテナが選択したスマートカード上にすでに存在する場合は、別のスマートカードを選択するか、その操作を失敗する(これは、カード指定のタイプまたはレベルによることが可能)。
【0078】
以下の例示的コンテキストフラグを利用することができる。
CRYPT_SILENT−この場合、例えば、この操作の間、UIは何も表示されない。
CRYPT_MACHINE_KEYSET−例えば、この操作の間、キャッシュされているデータは何も使用されない。
CRYPT_VERIFYCONTEXT−例えば、カード上の公開データにのみアクセスすることができる。
【0079】
「コンテナ操作」および「コンテナの指定」に加えて、上記のCryptAcquireContextフラグなど、カード選択の間のその他のユーザオプションについても考慮しなければならない。
【0080】
カード選択の挙動
特定の例示的シナリオでは、ユーザは、スマートカードを挿入するように促される。ユーザコンテキストがサイレントの場合には、この操作は失敗し、UIは何も表示されない。そうでない場合には、ユーザは、UIに応答して、スマートカードを挿入するか、またはおそらく「キャンセル」をクリックすることができる。ユーザがキャンセルすると、操作は失敗する。
【0081】
特定のコンテナ指定を使うと、指定したリーダ中のスマートカードのみをマッチの対象とみなすことができるので、スマートカード選択プロセスの複雑さを低減することができる。したがって、例えば、ベースCSPは要求されたリーダを見つける。それが見つからない場合には、プロセスは失敗する。リーダ中にスマートカードがなかった場合には、例えばUIを介して、スマートカードを挿入するようユーザを促すように、ベースCSPを構成することができる。
【0082】
リーダ中にスマートカードが挿入され、動作可能に接続されると、ベースCSPは、選択されたスマートカード上のデフォルトコンテナの名前の判断を支援する。例示的なコンテナ操作には、例えば、既存のコンテナを開くこと、コンテナの削除、および/または指定されたコンテナを見つけることが含まれる。指定されたコンテナがスマートカード上に見つけられなかった場合には、再び、カードを挿入するように、特定の方法でユーザを促すことができる。新しいコンテナを作成するときに、指定されたコンテナがスマートカード上にすでに存在していた場合には、プロセスは失敗する。
【0083】
本発明のさらなる特定の態様によれば、該当するスマートカードをユーザコンテキストにマッチさせるように、ベースCSPを構成することができる。与えられた基準を満たす、キャッシュされているスマートカードは複数存在する可能性があるため、これは有益である。
【0084】
特定の実施形態では、ベースCSPにわかっている各スマートカードは、特定の方法で記憶されている(例えば、プロセス全体にわたって、すでにアクセスされたカードのリストをキャッシュすることができる)。既存のコンテナを開くために、ベースCSPは、識別された(例えば指定された)コンテナ名を、スマートカードのコンテナ名のキャッシュ中で探す。コンテナ名は、デフォルトコンテナを指定する、GUIDまたはNULLの場合がある。キャッシュされているSCARDHANDLEに対して、そのフレッシュネスを確認するための操作が試みられる。
【0085】
キャッシュされているカードが取り外され、コンテキストがサイレントであると判断された場合には、ベースCSPは、別のマッチするスマートカードをサーチし続けることができる。キャッシュされているスマートカードが取り外され、コンテキストが非サイレントである場合には、ユーザにスマートカードの挿入を促すUIを表示することができる。ユーザがUI内の「キャンセル」をクリックすると、ベースCSPはマッチするカードをサーチし続けることができる。ベースCSPのキャッシュ中にマッチするカードが見つからない場合には、例えば、適切な(appropriate)コールバックフィルタを用いてSCardUIDlgSelectCard()呼出しを使うことにより、要求されたコンテナを備えた、マッチするカードを見つけることができる。SCardUIDlgSelectCardに提供されたコールバックは、列挙された各カードについて、ベースCSPキャッシュのエントリを作成する。
【0086】
コールバックは、遭遇したスマートカードのそれぞれについて、新しいスマートカードキャッシュエントリを作成し、それを、ベースCSPのグローバルリストまたはその他の同様のデータ構造中に入れる。カードキャッシュ構造では、提供されたSCARDHANDLEおよび新しいPINキャッシュハンドルを保持するために、新しいカード特有データ構造を作成することができる。
【0087】
この例示的構成においては、ユーザにPINを催促する場合には、コンテナ作成においてCRYPT_SILENTが許可されない。この場合、カード選択のUIが必要なことがある。その他の操作については、呼出し機能は、デフォルトコンテナに対して「確認」コンテキストを得、次いで、CryptSetProvParamを呼び出して、その後の操作のためにユーザPINをキャッシュすることができる。しかし、コンテナ作成の場合には、このような操作を実行する対象となるコンテナがまだない場合がある。
【0088】
ベースCSPにすでにわかっている各カードについて、記憶されているSCARDHANDLEをリフレッシュすることができる。以下のチェックを行うこともできる。すなわち、スマートカードが除去されている場合にはサーチを続ける。また、スマートカードが依然として存在するが、すでに指定されたコンテナを備えている場合には、サーチを続ける。また、スマートカードが利用可能であるが、CSPQueryCardFreeSpaceの呼出しによって、カードにさらなる鍵コンテナのための十分な記憶がないことが示された場合には、サーチを続ける。そして、それ以外の場合には、上記の基準を満たす最初の利用可能なスマートカードを、コンテナ作成のために使用することができる。
【0089】
マッチするスマートカードがベースCSPキャッシュ中に見つからない場合には、列挙されたカードをフィルタにかけるために使用するコールバックを利用して、候補スマートカードがまだ指定されたコンテナを備えていず、また、CSPQueryFreeSpaceが、そのカードが追加コンテナ用の十分なスペースを有することを示していることを確認することができる。適切なカードが何も見つからない場合には、スマートカードを挿入するようユーザを促すUIを表示することができる。
【0090】
コンテナの削除を試みるときに、指定されたコンテナ名がNULLである場合には、プロセスは失敗する。これは、特定のリーダが指定されていない、曖昧な場合であるとみなすことができる。
【0091】
すでにベースCSPにわかっているスマートカードのそれぞれについて、記憶されているSCARDHANDLEをリフレッシュして、以下のチェックを行うことができる。すなわち、スマートカードが指定されたコンテナを備えていない場合には、サーチを続ける。また、コンテキストがサイレントであり、スマートカードが指定されたコンテナを備えているが、取り外されている場合には、サーチは失敗する。また、コンテキストが非サイレントであり、スマートカードが指定されたコンテナを有しているが、取り外されている場合には、スマートカードを挿入するようユーザに促すUIを表示することができる。また、マッチするスマートカードがベースCSPのキャッシュ中に見つからない場合には、列挙カードをフィルタにかけるために使用されるコールバックを使って、候補カードが指定されたコンテナを備えていることを確認する。また、コンテキストが非サイレントであり、適切なスマートカードが見つからない場合には、スマートカードを挿入するようユーザに促すUIを表示することができる。そして、その他の場合には、プロセスは失敗する。
【0092】
本発明の特定の実施形態によれば、以下のAPIが定義される。
【0093】
【表5】
Figure 2004048742
【0094】
PCSP_PROV_CTXとして初期化する。
pszContainer
【0095】
呼出し機能は、例えば、完全修飾されたコンテナロケーションまたは単純なコンテナ名のいずれかを指定することができる。前者は、リーダ名とコンテナ名の両方を含むことができる。ベースCSPは、完全修飾されたコンテナがあるかどうかに応じて、異なるセマンティックスを使用して適切なカードの位置を突き止めるように構成することができる。
【0096】
【表6】
Figure 2004048742
【0097】
呼出し側の要求が有効であることを確認する。
【0098】
鍵タイプ−サポートされる鍵タイプは、AT_SIGNATUREおよびAT_KEYEXCHANGEである。
【0099】
鍵サイズ−CSPEnumKeySizes()を呼び出して、指定された鍵サイズが有効であることを確認する。鍵サイズが指定されていない場合には、その機能によって返されたデフォルト鍵サイズを使用することができる。
【0100】
鍵コンテナ−ユーザコンテキスト中に指定されているコンテナがすでに存在し、要求されたタイプの鍵を備えており、また、コンテキストがサイレントである場合には、プロセスは失敗する。そうでない場合には、その鍵の置換えをユーザに確認するためのUIが表示される。次いで、CSPCreateContainer()を呼び出して、例えば、鍵作成フラグ、コンテナ名、鍵サイズなどを指定することができる。
【0101】
【表7】
Figure 2004048742
【0102】
【表8】
Figure 2004048742
【0103】
スマートカードインタフェース層
本発明の特定の態様によれば、PCSCと暗号法の関連はこのレベルまで抽象化され、この場合、カードデータのキャッシングおよび論理カードファイルシステムのフォーマットを処理することができる。
【0104】
スマートカードインタフェース操作
スマートカードインタフェース操作を行う目的の1つは、カード特有操作と、直接、ベースCSPが行う機能呼出しの間の密結合を確立することである。特定の場合においては、カードインタフェース操作は、カード特有操作からできるだけ多くの一般コードを取り除き、カードデータのキャッシュ層としての役割を果たすことである。一般に、スマートカードから読み出すことができるデータはどれも、ベースCSPプロセス中に記憶することができる。その後、そのデータに対する要求があると、キャッシュされたコピーのフレッシュネスがチェックされ、次いで、適切な場合にはそれが使用される。スマートカードインタフェース操作は、キャッシュされたデータが利用可能でない場合にのみ、カード特有操作を呼び出す。これは、スマートカードとの通信はきわめて遅くなりがちなため、有利である。一方、キャッシュされているデータはどれも、使用する前にその妥当性を確認することが重要である。確認しない場合、スマートカードに基づいた認証のセキュリティが危うくなる可能性がある。キャッシュのフレッシュネスチェックがこの問題を解決する。
【0105】
証明書の列挙
特定の実施形態では、「証明書読出し」操作において、コンテナの識別を指定し、対応する証明書の位置を突き止めるように、ベースCSPを構成することができる。この場合、証明書の列挙はなく、コンテナの列挙があるだけである。もちろん、すべてのコンテナが証明書を持っているわけではない。2つまたはそれ以上の証明書の間で鍵を共用することが望ましい場合もある。そのために、コンテナの列挙に加えて、証明書の列挙をサポートする必要がある場合がある。
【0106】
証明書の列挙は、ファイルフィルタ中で「UserCert」というプレフィックスを指定することにより、CSPEnumFilesを呼び出すことによって行うことができる。証明書については、デフォルト鍵コンテナに属するものが何かあれば、証明書のファイル名GUIDがコンテナのGUID名と同じ場合がある。一般に、証明書については、1つの鍵について複数の証明書をサポートするように、対応する鍵コンテナの名前を、記憶されている証明書データ中に含めることができる。しかし、証明書とその鍵コンテナが、必ずしも同じGUID名を共用する必要はない。
【0107】
例示的スマートカード機能
【0108】
【表9】
Figure 2004048742
【0109】
鍵コンテナ
鍵コンテナ名を、論理カードファイル名として指定することができる。すなわち、リーダ名とコンテナ名の両方を指定する、完全修飾されたコンテナ名は、カードインタフェースの機能には渡されないはずである。適用可能なAPIのそれぞれを、スマートカードのコンテキスト情報を受け取るように構成することができるため、完全修飾された名前のコンテナ名部分を渡すことはできる。
【0110】
【表10】
Figure 2004048742
【0111】
【表11】
Figure 2004048742
【0112】
例示的暗号操作
特定の実施形態によれば、データパディングを利用することができる。RsaEncryptのような関数を使って、データパディングを処理してスマートカードにディスパッチするか、または、要求された公開鍵をスマートカードから抽出することができる。スマートカードが公開鍵のエクスポートをサポートしている場合には、例えば、RSA暗号化操作、カーブに基づいた暗号化操作、および/または同様のものをサポートするように、ベースCSPを構成することができる。特定の例示的実施形態によれば、ベースCSPは、公開鍵のエクスポートをサポートしないカードを「サポート」しない。この場合、公開鍵は、それらのそれぞれのコンテナデータとともにキャッシュすることができる。
【0113】
【表12】
Figure 2004048742
【0114】
カードインタフェースのキャッシング
特定の実施形態では、スマートカードがリムーバブルなので、「ライトスルー」キャッシュスキームが利用されている。このスキームでは、最後の書込み者が勝ち取る。ベースCSPは、データの矛盾のために書込み操作を失敗するように要求されることはない。例えば、プロセスBが最後にXを読み出してから、プロセスAが項目Xをスマートカードに書き込んでいる場合がある。プロセスBは、その後、Xを書き込む可能性があり、その場合、これは、プロセスA中にキャッシュされているXを、矛盾しているとみなす。この状況を緩和するために、キャッシュには、リーダが一貫したデータを得られるようにするための助けとなる、タイムアウト(機能停止)を設けるべきである。様々なタイプのデータに対して異なるタイムアウトを使用することが可能である。
【0115】
キャッシュの実装は、例えば、よく知られたカード上のロケーションに記憶されている、1組のカウンタに基づくことが可能である。このカウンタは、書込み操作を行っているベースCSPが、インクリメントすることができる。カウンタの値は、キャッシュデータによって正しく反映されている、カード状態への最後の修正を識別する。簡単にするために、限定された細分性で、修正を追跡することができる。例として、以下のカードエリアを、それぞれを全体として、キャッシュによって追跡することができる。[コンテナ|データファイル|PIN]。
【0116】
別の例では、プロセスがスマートカードのデータファイルのいずれかを修正した場合に、カード上の「データファイル」のキャッシュロケーションを、現在のタイムスタンプで更新することができる。いずれかのデータファイルに対する、いずれかの他のプロセスからの、いずれかのその後の読出し操作は、キャッシュミスになる。これは、要求されたファイルがすでに正しくキャッシュされている場合でも、最後の操作の後で別のカード上のファイルが修正されたならば、その要求されたファイルをカードから直接、読み出さなければならないことを意味する。
【0117】
よく知られたカード上のキャッシュのロケーションは、予め決定された名前を有する特定のデータファイルのことがある。したがって、例えば、キャッシュの状態の更新を、このよく知られたファイル名を使って、CardReadFileおよびCardWriteFile操作によって行うことができる。キャッシュの状態を正しく保持するために必要とされるカードとの対話量を低減するために、キャッシュデータを、それ以外のいずれかのデータなしに、それ自身の論理ファイル中に記憶することができる。これによって、ベースCSPは、カードから最低必要量のデータの読出しおよび書込みを行って、キャッシュの状態を保持することができる。
【0118】
本発明の特定の実施形態によれば、カードのキャッシュファイルの内容は、予め定義された構造である。スマートカードを取り外した場合、例えば、そのスマートカードがシリアル番号を使って初期化されている場合には、スマートカードのキャッシュが、ベースCSPをロードしたプロセス中に安全に残っていることが可能である。スマートカードを再挿入した場合、スマートカードのシリアル番号がマッチし、キャッシュファイルが変更を示さないならば、すでにキャッシュされているデータはフレッシュであるとみなすことができる。
【0119】
初期化
ログオンなど、重要な操作の間の応答時間を改善するための最適化として、特定のデータをスマートカードから予め読み出し、キャッシュしておくことができる。例えば、このようなキャッシングは、CryptAcquireContextを呼び出す間に発生し得る。予め読み出すためのスマートカードデータの例としては、いずれかのよく知られたカードデータファイルの内容が挙げられる。これには、カードのシリアル番号およびデフォルトのコンテナ名が含まれる場合がある。したがって、証明書はスマートカード上に記憶されている1つまたはそれ以上のデータ項目であることが多いので、例えば、この時点で、カードからユーザの証明書のいずれかを読み出すと有利である。実際、特定の実施形態では、そうすることによって、ログオンを相当スピードアップさせることができる。ユーザログオンまたは認証プロセス(例えば、Winlogon)などのカードクライアントは、このメカニズムを賢明に使って、例えば、ユーザがPINを入力している間にユーザのスマートカードデータをプレロードする。
【0120】
データの書込み
キャッシュの更新は、トランザクションに基づくことが可能であり、キャッシュの更新を必要としている、すぐ前の操作と同じトランザクション内で行うことができる。現在、スマートカードの実装は、一般に、ロールバックできないミューテックスであるため、スマートカードのトランザクションは、技術的には誤称である。しかし、ミューテックスが解除される前に、キャッシュ状態の更新およびカードデータの更新の両方がその順番で行われる。この例を以下に示す。そこでは、ベースCSPがFooと呼ばれる一般的なデータファイルをカードに書き込んでいる。
【0121】
【表13】
Figure 2004048742
【0122】
データの読出し
ベースCSPからのスマートカードへの読出し要求のそれぞれにおいてCacheFileをカードから読み出すことができる。当該のデータエリアが修正されていない場合(例えば、汚れていない場合)には、可能であれば、キャッシュデータが読出し要求を満たすことがある。当該のデータエリアが汚れている場合、または要求されたデータがキャッシュされていない場合には、カードの読出しが実際に行われて、その結果がキャッシュされる。
【0123】
例として、特定の実施形態では、スマートカード中の機能を、呼び出されたときに以下の動作を行うように構成することができる。これらの動作は、キャッシュの保全性を保証するという目的にかない、結果的にスマートカードへの呼出回数を低減する。
a)ベースCSPが、当該のスマートカードについて作成した、キャッシュされた項目をルックアップする
b)そのような項目が存在しない場合には、fIsCached=Falseである。
c)そうでない場合には、fIsCached=Trueである。項目のキャッシュスタンプを得る。それをmyCacheStampと呼ぶ。
d)このSCARDHANDLE上でトランザクションを開始する。
e)CardReadFile()を使って、キャッシュファイルを読み出す。
f)キャッシュファイル中のどの値が所望のカードデータ項目(コンテナ、一般データ、またはPIN)に対応するかを判断する。これをcurrentCacheStampと呼ぶ。
g)fIsCachedがFalse、またはcurrenetCacheStamp>myCacheStampである場合には、適切なカード特有モジュール(例えばAPI)によって、要求されたデータ項目をスマートカードから読み出す。
h)そうでない場合には、キャッシュデータを使用する。
i)このSCARDHANDLE上でのトランザクションを終了する。
j)スマートカードから項目を読み出さなければならない場合には、新しいデータでキャッシュを更新し、currentCacheStampをその新しいデータに関連付ける。
k)要求されたデータを呼出し側に返す。
【0124】
スマートカードのキャッシングシナリオ
セッションを通じて、ほぼ最低限のデータ量だけをスマートカードから読み出すことが賢明である場合がある。これは、変更されていないデータをスマートカードから2度読み出すべきではないことを意味する。そうではなく、変更されていないデータは、常に、ベースCSPのカードデータのキャッシュから検索されるべきである。この場合、例えば、セッションを、ベースCSPをロードして、所与のスマートカード上で操作を実行するプロセスの存在期間であるとみなすことができる。
【0125】
セッションを通じて、スマートカードのキャッシュはほぼ一貫している。すなわち、例示的ベースCSPを使用した場合、正しくない、期限切れのデータをキャッシュから読み出すことはできない。その他のプロセスが同じスマートカードにアクセスしている場合にさえ、それが言える。
【0126】
シナリオ#1−ユーザログオンのための初期CryptAcquireContext
入力:
Named Reader
Default Container
【0127】
キャッシュされているスマートカードのリストをサーチする。何も見つからない。
【0128】
SCardUIDlgSelectCard()によって、スマートカードを列挙する。このAPIに渡されるコールバックが、リーダ名をフィルタにかける。
【0129】
このカードのためのCARD_DATA構造が作成されて、ベースCSPにわかっているカードのリストに追加される。これは、CSPのカードリストキャッシュ中の最初の項目である。
【0130】
このカードのシリアル番号について、CSPREADFILE()を呼び出す。まだシリアル番号がキャッシュされていないので、この結果、CardReadFile()が呼び出される。
【0131】
このカードのデフォルトコンテナの名前について、CSPReadFile()を呼び出す。まだコンテナ情報がキャッシュされていないので、この結果、CardReadFile()が呼び出される。
【0132】
このコンテナについて、CSPGetContainerInfo()を呼び出す。現在キャッシュされているコンテナ情報がそのコンテナの名前であるため、この結果、CardGetContainerInfo()が呼び出される。
【0133】
シナリオ#2−ユーザログオンのための第2のCryptAcquireContext
入力:
Named Reader
Named Container
【0134】
指定されたコンテナを探して、キャッシュされているカードのリストをサーチする。それがキャッシュ中に見つかる。キャッシュされているSCARDHANDLEをテストして、それが依然として有効であることを確認する。
【0135】
そのシリアル番号について、CSPReadFile()を呼び出す。キャッシュされている値が見つかる。キャッシュ読出しプロセスは、この項目のキャッシュスタンプに基づいて、そのキャッシュされているデータが最新であることを確認する。特定の実施形態では、サニティチェックとして、カードからのこの値を再度読み出すことができる。これは、GUIDコンテナ名がすでにマッチしている場合には必要ない。
【0136】
指定されたコンテナ名について、CSPGetContainerInfor()を呼び出す。キャッシュされているデータが見つかる。キャッシュ読出しプロセスは、そのキャッシュデータが最新のものであることを確認する。
【0137】
ファイルフォーマット
完全修飾された論理ファイル名、例えば、ベースCSPとスマートカード特有モジュールの間に基礎を置くタイプは、論理ディレクトリ名、およびその後に続く論理ファイル名から成る。したがって、この例では、「DirName/FileName」というパターンになる。ここで、スマートカード特有モジュールは、論理ファイル名を物理カードロケーションにマップする必要がある。
【0138】
例示的論理ディレクトリ名
次の論理ディレクトリ名、すなわち、RootCert、UserCert、およびGeneralDataは、予め定義することができる。
【0139】
例示的論理ファイル名
うまく形成された論理ファイル名は、以下の規則に従っている場合がある。
【0140】
ユーザ証明書については、論理ファイル名を、GUID、および情報を識別する2、3バイトをそれに加えたもので構成する。これは、最大約37+3=40バイトになる。
【0141】
ルート証明書については、論理ファイル名を、公開鍵のハッシュで構成する。これは、ユーザの信頼情報に対する高速クエリを可能にする。
【0142】
一般的なカード上のデータについては、論理ファイル名をシリアル番号で構成する。ユーザのデフォルトコンテナ名を表すマスタファイルなど、共通の一般的なデータファイルは、前もって定義されたシリアル番号を有する。
【0143】
例示的証明書
一例では、証明書を、以下のデータ構造の形でスマートカード上に記憶することができる。
【0144】
【表14】
Figure 2004048742
【0145】
キャッシュファイルのよく知られた名前は、以下のようになるはずである。
”GeneralData\CacheFile”
#define CARD_CACHE_FILE ”GeneralData\CacheFile”
【0146】
キャッシュファイルの内容は、以下の構造のみで構成される。
【0147】
【表15】
Figure 2004048742
【0148】
キャッシュファイルの例示的デフォルトアクセス制御リスト(ACL)は以下の通りである。
Everyone Read, Write
Serial Number File
【0149】
シリアル番号ファイルは、カードのシリアル番号を含む。よく知られた名前は以下のようになるはずである。
Figure 2004048742
【0150】
シリアル番号ファイルの内容は、以下の構造のみで構成される。
Figure 2004048742
【0151】
シリアル番号ファイルのデフォルトACLは以下の通りである。
Figure 2004048742
【0152】
デフォルトコンテナファイルは、スマートカードのデフォルトコンテナのGUIDを含む。よく知られた名前は以下のようになり得る。
Figure 2004048742
【0153】
デフォルトコンテナファイルの内容は、以下の構造を含む。
Figure 2004048742
【0154】
pszDefaultContainer中に指定されているGUIDは、CardGetContainerInfo()、CardPrivateKeyDecrypt()などの呼出しにおいて直接、使用することができるような方法でフォーマットすることができる。記憶されているGUIDは、もしあれば、デフォルト鍵コンテナに対応する、デフォルトユーザ証明書の名前も意味する。指定された証明書ファイルにアクセスするには、例えば、CardReadFileを呼び出して、返されたGUIDの前に「UserCert\」を付加して構成したファイル名を指定する。
【0155】
デフォルトコンテナファイルのデフォルトACLは以下の通りである。
Figure 2004048742
【0156】
カードストレージエリアは、適切なデフォルトACLで構成すべきである。
【0157】
【表16】
Figure 2004048742
【0158】
【表17】
Figure 2004048742
【0159】
例示的なスマートカード取り外し技術
ここで、スマートカードインタフェースは、例えば、スマートカード特有モジュールからのスマートカードの取り外しの通知にロバストに応答することができるはずである。スマートカード特有モジュールが、スマートカードが取り外されたことを検出した場合には、適切なステータスが返されるはずである。これに応答して、スマートカードインタフェースは、スマートカードに再接続を試みることができる。再接続が成功した場合には、スマートカード特有操作を再度試みるはずである。再接続が失敗すると、そのステータス通知をベースCSPから伝搬することができる。
【0160】
SCARDHANDLEは、スマートカードインタフェースからスマートカード特有操作に渡されるデータ中に含めることができる。そのハンドルを呼び出した結果、SCARD_W_REMOVED_CARDがスマートカードインタフェースに返される。この事例が処理され得る呼出しのリストには、すべてのスマートカード特有操作に、トランザクション開始操作を加えたものが含まれる。
【0161】
SCARD_W_REMOVED_CARDに応答して、カードインタフェースは、上記によって、復元、再接続、および再試行を試みることができる。これは、スマートカードが再挿入されているかどうかをチェックするためのものである。ベースCSPによるスマートカードの最初期化が失敗し、現在のユーザコンテキストがサイレントではない場合には、ベースCSPは、スマートカードを再挿入するようにユーザを促すUIを表示することができる。現在のユーザコンテキストがサイレントである場合、または、ユーザがUI操作において「キャンセル」した場合には、現在のCryptoAPI機能は、SCARD_W_REMOVED_CARDで失敗する。
【0162】
例示的ベースCSPユーザインタフェース
上述のように、特定の状況においては、ユーザと対話するためにベースCSPが必要とされる場合がある。特定の例示的実施形態では、ベースCSPによって提供されるUIは以下のように動作する。
【0163】
ベースCSPは、現在のユーザコンテキストがサイレントとして取得されなかった場合、UIを表示することができる。
【0164】
ベースCSPによって表示される全てのダイアログは、キャンセルボタンを含む。ユーザが「キャンセル」を押すと、その影響を受けたCryptoAPIによって、該当するエラーコードが返される。
【0165】
全てのダイアログは、ユーザが入力を行う、どのスマートカード、どの操作などに関して、可能な限り具体的である。
【0166】
例示的シナリオ
ユーザコンテキストがサイレントではない場合、ベースCSPは、次のような状況においてUIを表示することができる。
【0167】
スマートカードの初期化が失敗した場合には、要求されたスマートカードを挿入するようユーザを促す。
【0168】
現在挿入されている以外のスマートカードに関連するユーザコンテキストについて、CryptoAPI操作が要求された場合には、要求されたスマートカードを挿入するようユーザを促す。
【0169】
カード特有操作がPINキャッシュの要求を行った場合には、現在の操作に対してキャッシュされているPINが正しくない可能性がある。SCARD_W_WRONG_CHVというステータスを、カードインタフェースに返すことができる。応答して、ユーザは、正しいPINを入力するように促されることがある。その場合、PINのキャッシュは更新され、次いで、カード特有操作が再度、試みられる。
【0170】
例示的実施形態
可能であれば、スマートカードにはフレンドリな名前を与えるべきである。これは、UIメッセージテキスト中に含めることができる。このフレンドリな名前は、カードの個別化の間に送達することができ、また「ドメインユーザログオンカード」など、比較的一般的なものであってよい。あるいは、スマートカードのシリアル番号を表示することができる。ただし、ユーザが所与のシリアル番号を実際のスマートカードに関連付けることは難しい場合もある。
【0171】
合衆国では、ベースCSPパッケージの暗号署名は、ある種の輸出規制を受けるため、ベースCSPのリソースストリングを、ベースCSP自体とは別のパッケージで配布することができる。
【0172】
この例示的ベースCSPでは、以下の2つの別個のダイアログボックスを使用することができる。
カード挿入ダイアログ−このダイアログは、タイトルバー、テキストボックス、およびキャンセルボタンを含むことができる。
PINダイアログ−このダイアログは、タイトルバー、テキストボックス、編集ボックス、OKボタン、およびキャンセルボタンを含むことができる。
【0173】
スマートカード特有モジュール
この例示的実施形態におけるスマートカード特有モジュールは、標準化された1組のマクロレベル操作を実行して、論理カードファイルシステムオブジェクトを物理カードロケーションにマップするように設計されている。ここで、例えば、各スマートカード特有操作は、単一のアトミックトランザクションを実施する。
【0174】
例示的カード特有操作
カード機能
特定の実施形態では、ベースCSPが、特定のスマートカードおよび/またはスマートカード特有モジュールの複数の変形形態をサポートすることが必要な場合がある。所与のスマートカードの機能を利用するために、スマートカード特有モジュールは、スマートカードが提供する1組の機能全てに問い合わせを行うためにベースCSPが使用することができる、APIを含むことができる。スマートカードの機能の例には、圧縮アルゴリズムおよびチェックサムによるファイルの保全性の保証が含まれる。圧縮など、ベースCSPが必要とするいずれかの機能がスマートカードによって提供される場合、ベースCSPは、スマートカードによる実行を利用することができる。そうでない場合には、ベースCSPは、この機能を自分自身で実行することができる。
【0175】
【表18】
Figure 2004048742
【0176】
入力:
バージョン番号をpCardCapabilities中に設定する。
出力:
Status
Filled−in pCardCapabilities struct
目的:
例えば、圧縮およびファイルのチェックサムなど、このレベルで提供される機能について、スマートカードとスマートカード特有モジュールの組合せに問い合わせる。
【0177】
【表19】
Figure 2004048742
【0178】
この例では、コンテナごとに2つの鍵ペアがサポートされる。各鍵には、鍵の使用法、署名、または鍵交換が関連付けられている。その他の特定の実施形態では、単一の鍵ペアまたは2組より多い鍵ペアをサポートすることができる。
【0179】
特定の実施形態では、各鍵コンテナに、スマートカード上の対応する証明書に関する識別情報(例えば、証明書データをどこで見つけたらよいかに関する論理情報)を関連付けることもできる。全てのコンテナが対応する証明書を備えるわけではない。これは、鍵ごとに複数の証明書がサポートされるわけではないことを前提にしている。
【0180】
Figure 2004048742
入力:
First|Next
出力:
Status
現在の鍵コンテナのGUID名
目的:
連続する呼出しにおいて、スマートカード上に存在する全ての鍵コンテナの名前をリストする。列挙の最後まで到達しても、出力バッファの内容が変わっていない場合には、ステータスは失敗を表すはずである。
【0181】
Figure 2004048742
入力:
GUID
出力:
Status
目的:
GUIDによって指定された鍵コンテナを削除する。コンテナが存在していて、無事に削除された場合には、ステータスは成功を表すはずである。そうでない場合には、ステータスは、コンテナが存在しなかったこと、または特定の理由で削除が失敗したことなどを表すはずである。
【0182】
Figure 2004048742
入力:
KeyGen|KeyImport
GUID
KeyGenの場合には、鍵のタイプおよびサイズも供給されなければならない。
KeyImportの場合には、鍵データも供給されなければならない。
出力:
Status
目的:
GUIDという名前の新しい鍵コンテナを作成する。この新しいコンテナは、呼出しが成功した場合には、常に有効な鍵を含む。新しいコンテナを作成する2通りの方法は、ランダムな鍵の生成による方法、および既存の鍵データのインポートによる方法である。
【0183】
デフォルトコンテナがすでに署名鍵を有するときに、アプリケーションが、デフォルトコンテナを使用し、鍵交換の鍵を利用して証明書を作成することを試みた場合、このプロセスは、コンテナがすでに「一杯」であり、現在の鍵が正しく使用されていないために、1鍵モデルにおいては失敗する。正しい挙動は、そのプロセスを新しい/異なるコンテナに再方向付けすることである場合がある。
【0184】
Figure 2004048742
入力:
GUID
出力:
Status
Data
目的:
指定された鍵コンテナに、その鍵のタイプ(例えば、署名または鍵交換)など、それが含む鍵に関する追加情報を問い合わせる。その挙動は、全ての入手可能なコンテナ情報を返すことであることが可能である。しかし、その他の実施形態では、転送されるデータ量を制限するために、特定の1つのコンテナデータに要求を絞ることが望ましい場合がある。
【0185】
CardCreateContainerの間に指定される情報と、この呼出しによって問い合わせることができる情報の間には、少なくとも1:1の関係がある。すなわち、CardCreateContainerの間に指定されなかったコンテナデータで、CardGetContainerInfoによってアクセス可能なものはない。
【0186】
Figure 2004048742
入力:
UserId
Pin
出力:
Status
目的:
供給されたPINを使って、指定されたユーザ(例えば、UserまたはAdmin.)を認証し、ユーザ鍵コンテナなど、カードの秘密データにアクセスする。この呼出しの使用は、PINキャッシュライブラリによって規制することができる。
【0187】
Figure 2004048742
入力:
UserId
CurrentPin
NewPin
出力:
Status
目的:
指定されたユーザのPINを変更する。ベースCSPにおいては、この呼出しは、PINキャッシュライブラリによってのみ行うことができる。
【0188】
Figure 2004048742
入力:
Pin
出力:
Status
目的:
供給されたPINを使って、最大許容回数を超えて正しくないユーザPINが供給されたためにロックされているスマートカードのブロックを解除する。スマートカードがブロックされていなかった場合、あるいは、ブロック解除が失敗した場合には、ステータスにこれらの場合が明記されるはずである。
【0189】
公開データ
証明書管理機能に追加して、またはそれに代わるものとして、スマートカード上の汎用ファイルストレージをエミュレートするインタフェースの必要がある場合もある。
【0190】
例えば、証明書管理は、列挙、削除、および作成機能を必要とする。このインタフェースは、例えば、従来のWindows(登録商標)のCreateFile、ReadFile、およびWriteFileの単純化バージョンと同様に見え、また同様に感じられる場合がある。ファイルパスパラメータは、スマートカードの物理レイアウトに論理的にマップすることができる。
【0191】
ここで、本発明の特定の例示的態様によれば、ベースCSPからの論理ロケーションの物理カードロケーションへのマッピングは、スマートカード特有モジュール次第である。基本的に、このタイプのインタフェースは、スマートカードを、ベースCSPによって管理される、一般的な汎用ファイルシステムとして抽象化する。
【0192】
ベースCSPが、CreateFileセマンティックスを使って、どのように公開カードデータを管理することができるかのという例として、カード上のよく知られたロケーションに記憶されているマスタファイルによる方法が挙げられる。このマスタファイルは、ベースCSPがカードファイルシステム中に記憶しているオブジェクトのディレクトリしての役割を果たすことができる。これによって、ベースCSPは、ユーザ証明書、およびスマートカード上に記憶されているその他のデータに関連付けられたファイル名をルックアップすることができる。したがって、証明書ファイルオブジェクトの内容を、ベースCSPが判断することができる。証明書データには、それに関連付けられた鍵コンテナの位置を突き止めるための情報を含めることができる。しかし、最初にマスタファイルを要求し、次に実際の当該データファイル(例えば、デフォルトユーザ証明書など)を要求するためにさらにスマートカードの読出しが必要になるため、このアプローチにはある程度のトレードオフがある。
【0193】
プラス面としては、マスタファイルの使用によって、ベースCSPは、一般的なスマートカードデータをどのように記憶し、またそれにどのようにアクセスするかに対して、十分に制御することができる。特定の実施形態では、これによって、スマートカードの記憶フォーマットのバージョン管理をより容易にすることができ、また、スマートカードをより多用途のものにすることができる。例えば、スマートカードを利用してデフォルトユーザコンテナの名前を追跡するのではなく、単に、その情報をよく知られた汎用ファイルに簡単に記憶することができる。さらなる最適化として、ロード時間にデフォルトファイルを素早くカードから読出してキャッシュするように、ベースCSPを構成することができる。
【0194】
Figure 2004048742
入力:
LogicalFileName
Buffer
BufferLength
出力:
Status
File Contents
File Contents Length
目的:
LogicalFileNameによって指定された全ファイルを、ユーザ指定バッファに読み出す。上記において、LogicalFileNameによって指定されたロケーションは、完全修飾されたものであり、かつ、FileFormatにより適切に形成されたものであるべきである。
【0195】
FileContentsパラメータのデータポインタメンバがNULLに設定されている場合、その関数は、指定されたファイルのサイズをFileContenstsのデータサイズメンバに入れる。ファイルのサイズがFileContentsのデータサイズメンバよりも大きい場合には、呼出し側のバッファ中にはどのデータもコピーされず、データサイズメンバはそのファイルのサイズに設定される。ファイルのサイズがFileContentsのデータサイズメンバよりも小さい場合には、そのファイルが呼出し側のバッファ中にコピーされ、データサイズメンバが、そのファイルのサイズに設定される。
【0196】
Figure 2004048742
入力:
LogicalFileName
File Contents
File Contents Length
Flags
出力:
Status
目的:
Flagsの値に応じて、ファイルが存在しない場合には、そのファイルを作成する。
【0197】
Figure 2004048742
入力:
LogicalFileName
出力:
Status
目的:
指定されたファイルを削除する。そのファイルが存在しない場合には、返されるステータスは、そのファイルが存在しなかったことを表すはずである。
【0198】
Figure 2004048742
入力:
EnumFirst|EnumNext
If EnumFirst, a directory prefix; see below.出力:
LogicalFileName
目的:
ENUM_FIRSTの場合には、LogicalFileNameパラメータは、ディレクトリプレフィックスを含むことができ、それによって列挙の範囲を制限する。
【0199】
Figure 2004048742
入力:
なし
出力:
Status
カードのスペース情報(例えば、残っているバイト数、利用可能な鍵コンテナの数)
目的:
スマートカードの利用可能な記憶スペースの量を求める。これは場合によっては、概算値のことがある。この情報の使用例として、新しい鍵コンテナを作成できるかどうかを判断する場合、および、所与の証明書に十分なストレージをスマートカードが備えているかどうかを判断する場合が挙げられる。前者では、CryptAcquireContextのCRYPT_NEWKEYSETを呼び出す際に使用することにより、その呼出しが成功したかどうかを、CryptGenKeyが呼び出されるまで鍵自体は作成されなくても、判断することができる。
Cryptographic Operations
Sign Data / Private key Decrypt
【0200】
暗号機能の残りの機能は、ベースCSPがパフォーマンスのために実行する場合がある。
Figure 2004048742
入力:
Ciphertext
出力:
Status
Plaintext
目的:
解読するための入力データ(RSAに基づいたデータ、楕円/超楕円暗号法に基づいたデータなど)を、呼出し側が要求したフォーマット(例えばPKCS#1)に基づいて、ベースCSPがパッドすることができる。したがって、例えばRSAベースのカードの場合、CardPrivateKeyDecryptに、およびそれから渡されるデータは、常に、公開モジュラスと同じ長さである。これによって、カード特有の層は、様々なパディングスキームを実装しなければならない必要から解放される。ベースCSPは、平文においてパディングを検査することができるため、このAPIは、ハードウェアのエラーの場合を除き、成功するはずである。
【0201】
Figure 2004048742
入力:
AT_SIGNATURE|AT_KEYEXCHANGE
出力:
Status
指定されたアルゴリズムタイプについて、サポートされる鍵サイズ。
目的:
使用されるカードがサポートする公開鍵のサイズを求める。
【0202】
データ構造
上記のスマートカード特有の機能のすべてが、共通データ構造を使用することができる。例えば、CARD_DATA構造を定義するために付けられたヘッダを参照されたい。
【0203】
実装
カード特有モジュールをプロバイダDllとして実装することができる。
【0204】
上述の方法および装置があれば、スマートカードまたはその他のポータブルデバイスをデータの一般的な記憶にも使用できることがわかるであろう。したがって、スマートカードベンダが、秘密鍵およびそれらに関連付けられた証明書などだけでなく、その他のタイプの資格認定書、特定のアプリケーション、証明書ストアなど、その他の項目に関連するデータの記憶にも使用することができる、汎用スマートカードを提供することを可能にするアーキテクチャが提供される。したがって、上記のモデルをサポートするスマートカードは、おそらく、まだ考慮していない用途においても使用できるであろう。したがって、本明細書で提示している例示的技術は、新たな用途にも適合可能である。
【0205】
結論:
本発明の様々な方法および装置のいくつかの例示的実施形態を、添付の図面において例示し、上記の詳細な説明において説明してきたが、本発明は、開示の例示的実施形態に限定されるものではなく、頭記の特許請求の範囲に記載し、それによって定義されている本発明の趣旨から逸脱することなく、多くの再構成、修正、別の形態が可能であることを理解されたい。
【図面の簡単な説明】
【図1】本発明の特定の例示的実施形態で使用するのに適したコンピューティングデバイスを示す構成図である。
【図2】例えば図1に示すようなコンピューティングデバイスで使用するのに適した、ポータブルトークンデバイスのスマートカードとしての実施形態の構成図である。
【図3】スマートカードをコンピューティングデバイスとインタフェースするための、従来のコンピュータソフトウェアアーキテクチャの例示的構成図である。
【図4】本発明の特定の例示的実施形態による、スマートカードおよびその他の同様のデバイスをコンピューティングデバイスにインタフェースするための、改良されたコンピュータソフトウェアアーキテクチャの例示的構成図である。
【符号の説明】
130 コンピュータ
132 処理装置(プロセッサ)
134 システムメモリ
136 バス
138 読出し専用メモリ(ROM)
140 ランダムアクセスメモリ(RAM)
142 基本入出力システム(BIOS)
144 ハードディスクドライブ
146 磁気ディスクドライブ
148 リムーバブル磁気ディスク(磁気ディスク)
150 光ディスクドライブ
152 リムーバブル光ディスク
154 SCSIインタフェース
156 シリアルポートインタフェース(シリアルポート)
158 オペレーティングシステム
160 アプリケーションプログラム
162 その他のプログラムモジュール
164 プログラムデータ
166 キーボード
168 ポインティングデバイス
170 インタフェース
172 モニタ
174 ビデオアダプタ
176 リモートコンピュータ
178 メモリストレージデバイス
180 ローカルエリアネットワーク(LAN)
182 広域ネットワーク(WAN)
184 ネットワークインタフェース(アダプタ)
186 モデム
200 スマートカードリーダ
202 スマートカード
204 ユニバーサルシリアルバス(USB)ポート(コネクタ)
206 ポータブルトークンデバイス(オンボードコントローラまたはプロセッサ)
208 オンボードメモリ(メモリ、アクセスメモリ)
300 ソフトウェアアーキテクチャソリューション
302 アプリケーション
304 CryptoAPI
306a〜n 暗号サービスプロバイダ(CSP)
308a〜n スマートカード(SC)
400 ソフトウェアアーキテクチャ
404a〜n スマートカード特有モジュール
402 ベースCSP
406 管理API(カード管理API)
408 PINマネージャ
410 ファイルマネージャ
412 コンテナマネージャ
414 暗号マネージャ

Claims (44)

  1. 暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成可能であり、管理機能グループから選択した少なくとも1つの管理機能を前記暗号提供ロジックに提供するインタフェースロジックを備えた装置であって、
    前記管理機能グループは、
    識別管理機能と、ファイル管理機能と、コンテナ管理機能と、暗号法管理機能とを含むインタフェースロジックを含むことを特徴とする装置。
  2. 前記暗号サポートロジックに動作可能に結合されたメモリをさらに含み、前記識別管理機能は、前記メモリ中に記憶されている選択されたデータに基づいて、前記暗号提供ロジックに関連付けてユーザを認証するように構成可能なPIN管理機能を含むことを特徴とする請求項1に記載の装置。
  3. 前記暗号サポートロジックに動作可能に結合されたメモリをさらに含み、前記ファイル管理機能は、前記暗号サポートロジックが前記メモリに記憶されている少なくとも1つのデータファイルにアクセスすることを可能にするように構成可能であることを特徴とする請求項1に記載の装置。
  4. 前記暗号サポートロジックに動作可能に結合されたメモリをさらに含み、前記コンテナ管理機能は、前記暗号サポートロジックが前記メモリに記憶されている少なくとも1つのコンテナオブジェクトにアクセスすることを可能にするように構成可能であることを特徴とする請求項1に記載の装置。
  5. 前記暗号サポートロジックに動作可能に結合されたメモリをさらに含み、前記暗号法管理機能は、認証機能、データ暗号化機能、データ解読機能、メッセージダイジェスト機能、署名機能、およびハッシュ機能を含む暗号機能グループから選択した少なくとも1つの暗号機能を実行するように構成可能であり、前記暗号機能は、前記メモリ中に記憶されている鍵データを使用するように動作可能に構成されることを特徴とする請求項1に記載の装置。
  6. 前記暗号サポートロジックに動作可能に結合されたメモリをさらに含み、前記インタフェースロジックは、前記暗号提供ロジックを修正するように構成可能な少なくとも1つの管理アプリケーションプログラミングインタフェース(API)をさらに含むことを特徴とする請求項1に記載の装置。
  7. 前記暗号提供ロジックはポータブルトークン搬送デバイスを含むことを特徴とする請求項1に記載の装置。
  8. 前記暗号提供ロジックはスマートカードを含むことを特徴とする請求項1に記載の装置。
  9. 前記暗号提供ロジックはスマートカードリーダデバイスを含むことを特徴とする請求項8に記載の装置。
  10. 前記暗号サポートロジックは、前記暗号提供ロジックに、認証機能、データ暗号化機能、データ解読機能、メッセージダイジェスト機能、署名機能、およびハッシュ機能を含む暗号機能グループから選択された少なくとも1つの暗号機能を実施させることによって、アプリケーションの少なくとも1つの出力に応答するように構成可能であることを特徴とする請求項1に記載の装置。
  11. 前記暗号サポートロジックは暗号アプリケーションプログラミングインタフェース(CryptoAPI)を含むことを特徴とする請求項10に記載の装置。
  12. メモリと、
    前記メモリに動作可能に結合されており、前記暗号サポートロジックに関連付けられたコンピュータ実行可能命令と、前記インタフェースロジックに関連付けられたコンピュータ実行可能命令とに従って動作するように構成された少なくとも1つの処理装置と
    をさらに含むことを特徴とする請求項1に記載の装置。
  13. 前記インタフェースロジックはベース暗号サービスプロバイダ(ベースCSP)を含むことを特徴とする請求項1に記載の装置。
  14. 前記インタフェースロジックは、少なくとも1つのスマートカードリーダおよび前記ベースCSPにインタフェースを提供するように動作可能に構成できる少なくとも1つのスマートカード特有モジュールをさらに含むことを特徴とする請求項13に記載の装置。
  15. 前記ファイル管理機能は、スマートカード上へのデータの選択可能な記憶をサポートするように構成されることを特徴とする請求項1に記載の装置。
  16. コンピューティングデバイスにおいて使用するのに適したインタフェースロジックを提供するステップであって、前記インタフェースロジックが、暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成可能なステップと、
    前記インタフェースロジックを、それが前記暗号提供ロジックに動作可能に結合された場合に、識別確認アクティビティ、ファイルアクセスアクティビティ、コンテナアクセスアクティビティ、および暗号アルゴリズムアクティビティを含むアクティビティグループから選択した、少なくとも1つのアクティビティを実行するように構成するステップと
    を含むことを特徴とする方法。
  17. 前記識別確認アクティビティは、メモリ中に記憶されている選択されたデータに基づいて、エンティティが前記暗号提供ロジックに関連付けられているかどうかを確認するように構成可能なPIN管理マネージャ機能を含むことを特徴とする請求項16に記載の方法。
  18. 前記ファイルアクセス機能は、前記暗号サポートロジックが、前記暗号提供ロジックに動作可能に関連付けられたメモリ中に記憶されている少なくとも1つのデータファイルにアクセスすることを可能にするように構成可能なファイル管理機能を含むことを特徴とする請求項16に記載の方法。
  19. 前記コンテナアクセス機能は、前記暗号サポートロジックが、前記暗号提供ロジックに動作可能に関連付けられたメモリ中に記憶されている少なくとも1つのコンテナオブジェクトにアクセスすることを可能にするように構成可能なコンテナ管理機能を含むことを特徴とする請求項16に記載の方法。
  20. 前記暗号アルゴリズムアクティビティは、認証機能、データ暗号化機能、データ解読機能、メッセージダイジェスト機能、署名機能、およびハッシュ機能を含む暗号機能グループから選択した少なくとも1つの暗号機能を実行するように構成可能な暗号法管理機能をさらに含み、前記暗号機能は、前記暗号提供ロジックに動作可能に関連付けられたメモリ中に記憶されている、鍵データを使用するように動作可能に構成されることを特徴とする請求項16に記載の方法。
  21. 前記インタフェースロジックは、前記暗号提供ロジックを修正するように構成可能な少なくとも1つの管理アプリケーションプログラミングインタフェース(API)をさらに含むことを特徴とする請求項16に記載の方法。
  22. 前記暗号提供ロジックはポータブルトークン搬送デバイスを含むことを特徴とする請求項16に記載の方法。
  23. 前記暗号提供ロジックはスマートカードを含むことを特徴とする請求項16に記載の方法。
  24. 前記暗号提供ロジックを少なくとも1つのスマートカードリーダに動作可能に結合することをさらに含むことを特徴とする請求項23に記載の方法。
  25. 前記暗号サポートロジックを動作可能に構成して、少なくとも1つのアプリケーションの少なくとも1つの出力に応答するステップと、
    前記暗号提供ロジックに、認証機能、データ暗号化機能、データ解読機能、メッセージダイジェスト機能、署名機能、およびハッシュ機能を含む暗号機能グループから選択した少なくとも1つの暗号機能を実行させるステップとをさらに含むことを特徴とする請求項16に記載の方法。
  26. 前記暗号サポートロジックは暗号アプリケーションプログラミングインタフェース(CryptoAPI)を含むことを特徴とする請求項25に記載の方法。
  27. メモリに動作可能に結合された少なくとも1つの処理装置を、前記暗号サポートロジックによって提供されるコンピュータ実行可能命令と、前記インタフェースロジックによって提供されるコンピュータ実行可能命令とに従って動作させるステップをさらに含むことを特徴とする請求項16に記載の方法。
  28. 前記インタフェースロジックはベース暗号サービスプロバイダ(ベースCSP)を含むことを特徴とする請求項16に記載の方法。
  29. 前記インタフェースロジックを、少なくとも1つのスマートカードリーダおよび前記ベースCSPにインタフェースを提供するように動作可能に構成することができる少なくとも1つのスマートカード特有モジュールと、動作可能に結合するステップをさらに含むことを特徴とする請求項28に記載の方法。
  30. 前記ファイルアクセス機能はスマートカード上へのデータの選択可能な記憶をサポートするように構成されることを特徴とする請求項1に記載の装置。
  31. 暗号サポートロジックと暗号提供ロジックを動作可能に結合するように構成可能なインタフェースロジックを確立するステップと、
    前記インタフェースロジックに、識別サポート機能、ファイルアクセスサポート機能、コンテナアクセスサポート機能、および暗号サポート機能を含むサポート機能グループから選択した少なくとも1つのサポート機能を確立させるステップとを含む動作を実行するためのコンピュータ実行可能命令を含むことを特徴とするコンピュータ可読媒体。
  32. 前記識別確認サポート機能は、メモリ中に記憶されている選択されたデータに基づいて、エンティティが前記暗号提供ロジックに正しく関連付けられているかどうかを判断する際の援助を行うように構成可能なPIN管理マネージャサポート機能を含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  33. 前記ファイルアクセスサポート機能は、前記暗号サポートロジックが、前記暗号提供ロジックに動作可能に関連付けられたメモリ中に記憶されている少なくとも1つのデータファイルにアクセスすることを可能にするように構成可能なファイル管理サポート機能を含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  34. 前記コンテナアクセスサポート機能は、前記暗号サポートロジックが、前記暗号提供ロジックに動作可能に関連付けられた前記メモリ中に記憶されている少なくとも1つのコンテナオブジェクトにアクセスすることを可能にするように構成可能なコンテナ管理サポート機能を含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  35. 前記暗号サポート機能は、認証機能、データ暗号化機能、データ解読機能、メッセージダイジェスト機能、署名機能、およびハッシュ機能を含む暗号機能グループから選択した、少なくとも1つの暗号機能を実行するように構成可能な暗号法管理サポート機能を含み、前記暗号機能は、前記暗号提供ロジックに動作可能に関連付けられた前記メモリ中に記憶されている鍵データを使用するように動作可能に構成されることを特徴とする請求項31に記載のコンピュータ可読媒体。
  36. 前記インタフェースロジックは前記暗号提供ロジックを修正するように構成可能な少なくとも1つの管理アプリケーションプログラミングインタフェース(API)をさらに含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  37. 前記暗号提供ロジックはポータブルトークン搬送デバイスを含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  38. 前記暗号提供ロジックは、スマートカードを含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  39. 前記暗号提供ロジックを少なくとも1つのスマートカードリーダに動作可能に結合するステップを含む、さらなる動作を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項38に記載のコンピュータ可読媒体。
  40. 前記暗号サポートロジックを動作可能に構成して、少なくとも1つのアプリケーションの少なくとも1つの出力に応答するステップと、
    前記暗号提供ロジックに、認証機能、データ暗号化機能、データ解読機能、メッセージダイジェスト機能、署名機能、およびハッシュ機能を含む暗号機能グループから選択した少なくとも1つの暗号機能を実行させるステップとを含む、さらなる動作を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項31に記載のコンピュータ可読媒体。
  41. 前記暗号サポートロジックは暗号アプリケーションプログラミングインタフェース(CryptoAPI)を含むことを特徴とする請求項40に記載のコンピュータ可読媒体。
  42. 前記インタフェースロジックはベース暗号サービスプロバイダ(ベースCSP)を含むことを特徴とする請求項31に記載のコンピュータ可読媒体。
  43. 前記インタフェースロジックを、少なくとも1つのスマートカードリーダおよび前記ベースCSPにインタフェースを提供するように動作可能に構成することができる少なくとも1つのスマートカード特有モジュールと動作可能に結合するステップを含む、さらなる動作を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項42に記載のコンピュータ可読媒体。
  44. 前記ファイルアクセスサポート機能はスマートカード上へのデータの選択可能な記憶をサポートするように構成されることを特徴とする請求項1に記載の装置。
JP2003180213A 2002-06-25 2003-06-24 ベース暗号サービスプロバイダ(csp)の方法および装置 Expired - Fee Related JP4564243B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/179,655 US7200756B2 (en) 2002-06-25 2002-06-25 Base cryptographic service provider (CSP) methods and apparatuses

Publications (3)

Publication Number Publication Date
JP2004048742A true JP2004048742A (ja) 2004-02-12
JP2004048742A5 JP2004048742A5 (ja) 2006-08-10
JP4564243B2 JP4564243B2 (ja) 2010-10-20

Family

ID=29717910

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003180213A Expired - Fee Related JP4564243B2 (ja) 2002-06-25 2003-06-24 ベース暗号サービスプロバイダ(csp)の方法および装置

Country Status (3)

Country Link
US (1) US7200756B2 (ja)
EP (1) EP1376300A3 (ja)
JP (1) JP4564243B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008517400A (ja) * 2004-10-20 2008-05-22 インテル・コーポレーション データセキュリティ
JP2010503301A (ja) * 2006-09-07 2010-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号化マネージャ及び鍵マネージャと通信するようにストレージ・ドライブを構成する方法
JP2010517424A (ja) * 2007-01-26 2010-05-20 マイクロソフト コーポレーション Usbトークン上の暗号化キーコンテナ
JP2018170802A (ja) * 2013-06-20 2018-11-01 アマゾン テクノロジーズ インコーポレイテッド 複数許可データセキュリティ及びアクセス

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334130B2 (en) * 2002-07-19 2008-02-19 Bowers Charles R Method and apparatus for managing confidential information
US9218507B2 (en) * 2002-07-19 2015-12-22 Charles R. Bowers Method and apparatus for managing confidential information
AU2003265034A1 (en) * 2002-10-07 2004-04-23 Telefonaktiebolaget Lm Ericsson (Publ) Security and privacy enhancements for security devices
JP3738761B2 (ja) * 2003-01-16 2006-01-25 コニカミノルタビジネステクノロジーズ株式会社 複合型画像処理装置
US8010670B2 (en) 2003-12-23 2011-08-30 Slipstream Data Inc. Meta-data based method for local cache utilization
US20050182934A1 (en) * 2004-01-28 2005-08-18 Laszlo Elteto Method and apparatus for providing secure communications between a computer and a smart card chip
US7865716B2 (en) * 2004-03-15 2011-01-04 Panasonic Corporation Encryption device, key distribution device and key distribution system
EP1745590A4 (en) * 2004-04-22 2008-11-26 Fortress Gb Ltd CERTIFIED USER PROFILES, ABSTRACTS AND ANONYMOUS FOR RESTRICTED ACCESS TO A NETWORK SITE AND STATISTICAL SOCIAL SURVEYS
JP4781033B2 (ja) * 2004-08-10 2011-09-28 キヤノン株式会社 認証システム、処理方法、プログラム及び記録媒体
US20060075254A1 (en) * 2004-09-27 2006-04-06 Cisco Technology, Inc. (A California Corporation) Smart card functionality from a security co-processor and symmetric key in ROM
US7958369B2 (en) * 2004-10-22 2011-06-07 Hewlett-Packard Development Company, L.P. Systems and methods for multiple level control of access of privileges to protected media content
US20080288786A1 (en) * 2004-12-20 2008-11-20 Michael Stephen Fiske System with access keys
US7831051B2 (en) * 2007-03-13 2010-11-09 Aladdin Europe Gmbh Secure communication between a hardware device and a computer
CN101884188A (zh) 2007-07-12 2010-11-10 创新投资有限责任公司 身份鉴别和受保护访问系统、组件和方法
JP5209281B2 (ja) * 2007-11-22 2013-06-12 株式会社エヌ・ティ・ティ・ドコモ 通信端末装置、アクセス制御方法、icカード
US8281145B2 (en) * 2007-12-14 2012-10-02 Mehran Randall Rasti Doing business without SSN, EIN, and charge card numbers
US20090276837A1 (en) * 2008-04-30 2009-11-05 Microsoft Corporation Credential equivalency and control
JP5319238B2 (ja) * 2008-10-29 2013-10-16 真二 栗本 情報処理システム、情報処理装置、情報処理方法、および情報処理プログラム
US8930655B2 (en) 2009-01-19 2015-01-06 Microsoft Corporation Transient storage device configuration silo
US20100185843A1 (en) * 2009-01-20 2010-07-22 Microsoft Corporation Hardware encrypting storage device with physically separable key storage device
US8788831B2 (en) * 2009-03-20 2014-07-22 Barracuda Networks, Inc. More elegant exastore apparatus and method of operation
US9330282B2 (en) * 2009-06-10 2016-05-03 Microsoft Technology Licensing, Llc Instruction cards for storage devices
US8321956B2 (en) 2009-06-17 2012-11-27 Microsoft Corporation Remote access control of storage devices
US9396464B2 (en) * 2010-09-14 2016-07-19 Ncr Corporation Updating multi-media content in a digital download kiosk
US9251337B2 (en) * 2011-04-27 2016-02-02 International Business Machines Corporation Scalable, highly available, dynamically reconfigurable cryptographic provider with quality-of-service control built from commodity backend providers
DE102012104228B4 (de) * 2012-05-15 2020-12-10 Fujitsu Technology Solutions Intellectual Property Gmbh Elektronisches Zugangsschutzsystem, Verfahren zum Betrieb eines Computersystems, Chipkarte und Firmwarekomponente
CN102752104B (zh) * 2012-06-07 2017-10-31 中国电子科技集团公司第三十研究所 一种基于智能卡cos的对称密码服务实现方法
US10362006B2 (en) 2013-03-15 2019-07-23 Mastercard International Incorporated Systems and methods for cryptographic security as a service
US9317718B1 (en) 2013-03-29 2016-04-19 Secturion Systems, Inc. Security device with programmable systolic-matrix cryptographic module and programmable input/output interface
US9798899B1 (en) 2013-03-29 2017-10-24 Secturion Systems, Inc. Replaceable or removable physical interface input/output module
US9355279B1 (en) 2013-03-29 2016-05-31 Secturion Systems, Inc. Multi-tenancy architecture
US9374344B1 (en) * 2013-03-29 2016-06-21 Secturion Systems, Inc. Secure end-to-end communication system
US9524399B1 (en) * 2013-04-01 2016-12-20 Secturion Systems, Inc. Multi-level independent security architecture
CA2952621A1 (en) * 2014-06-18 2015-12-23 James Collier Methods and apparatus for cryptography
CN104679513B (zh) * 2015-02-12 2019-09-27 无锡识凌科技有限公司 一种智能终端中的设备驱动架构开发方法
US10237246B1 (en) 2015-07-31 2019-03-19 Symphony Communication Services Holdings Llc Secure message search
US9794064B2 (en) 2015-09-17 2017-10-17 Secturion Systems, Inc. Client(s) to cloud or remote server secure data or file object encryption gateway
US11283774B2 (en) 2015-09-17 2022-03-22 Secturion Systems, Inc. Cloud storage using encryption gateway with certificate authority identification
US10708236B2 (en) 2015-10-26 2020-07-07 Secturion Systems, Inc. Multi-independent level secure (MILS) storage encryption
US9613221B1 (en) * 2015-12-30 2017-04-04 Quixey, Inc. Signed application cards
US10819709B1 (en) * 2016-09-26 2020-10-27 Symphony Communication Services Holdings Llc Authorizing delegated capabilities to applications in a secure end-to-end communications system
US10476870B2 (en) * 2017-08-25 2019-11-12 Microsoft Technology Licensing, Llc Local claim-based security service with cross-browser compatibility
JP7178500B2 (ja) * 2019-07-23 2022-11-25 株式会社ソニー・インタラクティブエンタテインメント アクセス制御装置、アクセス制御方法及びプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0936851A (ja) * 1995-07-07 1997-02-07 Sun Microsyst Inc スマート・カードからのプライベート鍵操作をホスト・ベースの暗号サービスと透過的に統合するシステム及び方法
JP2002108210A (ja) * 2000-09-28 2002-04-10 Hitachi Software Eng Co Ltd 依頼計算方法
US20040223607A1 (en) * 2001-06-07 2004-11-11 Griffin Daniel C. Tester of cryptographic service providers

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689565A (en) * 1995-06-29 1997-11-18 Microsoft Corporation Cryptography system and method for providing cryptographic services for a computer application
US6038551A (en) * 1996-03-11 2000-03-14 Microsoft Corporation System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer
US5933503A (en) * 1996-03-15 1999-08-03 Novell, Inc Controlled modular cryptography apparatus and method
DE19838628A1 (de) 1998-08-26 2000-03-02 Ibm Erweiterte Chipkarten-Kommunikationsarchitektur und Verfahren zur Kommunikation zwischen Chipkartenanwendung und Datenträger
US6360952B1 (en) * 1998-05-29 2002-03-26 Digital Privacy, Inc. Card access system supporting multiple cards and card readers
EP1125262A1 (en) * 1998-10-27 2001-08-22 Visa International Service Association Delegated management of smart card applications
US6651168B1 (en) * 1999-01-29 2003-11-18 International Business Machines, Corp. Authentication framework for multiple authentication processes and mechanisms
US6484259B1 (en) 1999-07-23 2002-11-19 Microsoft Corporation Methods and arrangements for mapping widely disparate portable tokens to a static machine concentric cryptographic environment
US7085931B1 (en) 1999-09-03 2006-08-01 Secure Computing Corporation Virtual smart card system and method
US6792536B1 (en) * 1999-10-20 2004-09-14 Timecertain Llc Smart card system and methods for proving dates in digital files
US6427911B1 (en) * 1999-12-17 2002-08-06 International Business Machines Corporation Billing/clearing house system and method for an overloaded card
US20020120842A1 (en) 2000-11-29 2002-08-29 Helge Bragstad Method, apparatus and computer program product for interoperable cryptographic material
JP3880384B2 (ja) * 2001-12-06 2007-02-14 松下電器産業株式会社 Icカード
US20030154375A1 (en) * 2002-02-08 2003-08-14 Weimin Yang Universal crypto-adaptor system for supporting multiple APIs and multiple smart cards

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0936851A (ja) * 1995-07-07 1997-02-07 Sun Microsyst Inc スマート・カードからのプライベート鍵操作をホスト・ベースの暗号サービスと透過的に統合するシステム及び方法
JP2002108210A (ja) * 2000-09-28 2002-04-10 Hitachi Software Eng Co Ltd 依頼計算方法
US20040223607A1 (en) * 2001-06-07 2004-11-11 Griffin Daniel C. Tester of cryptographic service providers

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008517400A (ja) * 2004-10-20 2008-05-22 インテル・コーポレーション データセキュリティ
US9135470B2 (en) 2004-10-20 2015-09-15 Intel Corporation Data security
US9654464B2 (en) 2004-10-20 2017-05-16 Intel Corporation Data security
JP2010503301A (ja) * 2006-09-07 2010-01-28 インターナショナル・ビジネス・マシーンズ・コーポレーション 暗号化マネージャ及び鍵マネージャと通信するようにストレージ・ドライブを構成する方法
JP2010517424A (ja) * 2007-01-26 2010-05-20 マイクロソフト コーポレーション Usbトークン上の暗号化キーコンテナ
US8588421B2 (en) 2007-01-26 2013-11-19 Microsoft Corporation Cryptographic key containers on a USB token
JP2018170802A (ja) * 2013-06-20 2018-11-01 アマゾン テクノロジーズ インコーポレイテッド 複数許可データセキュリティ及びアクセス

Also Published As

Publication number Publication date
JP4564243B2 (ja) 2010-10-20
EP1376300A3 (en) 2005-08-31
EP1376300A2 (en) 2004-01-02
US7200756B2 (en) 2007-04-03
US20030236987A1 (en) 2003-12-25

Similar Documents

Publication Publication Date Title
JP4564243B2 (ja) ベース暗号サービスプロバイダ(csp)の方法および装置
US6484259B1 (en) Methods and arrangements for mapping widely disparate portable tokens to a static machine concentric cryptographic environment
US8549313B2 (en) Method and system for integrated securing and managing of virtual machines and virtual appliances
JP4841563B2 (ja) 暗号機能を実行するためのデータ処理システム、方法、およびコンピュータ・プログラム
Kinney Trusted platform module basics: using TPM in embedded systems
US7568114B1 (en) Secure transaction processor
US8645717B2 (en) System and method for securely storing firmware
JP4550147B2 (ja) コンポーネントをロードするための方法、システム及び記録媒体
US6272631B1 (en) Protected storage of core data secrets
US7434263B2 (en) System and method for secure storage data using a key
US7805375B2 (en) Digital license migration from first platform to second platform
US8112628B2 (en) Using a portable computing device as a smart key device
US6839437B1 (en) Method and apparatus for managing keys for cryptographic operations
US20060174352A1 (en) Method and apparatus for providing versatile services on storage devices
US6986041B2 (en) System and method for remote code integrity in distributed systems
JP2013514587A (ja) 証明書失効リストを用いたコンテンツ管理方法
US20050154898A1 (en) Method and system for protecting master secrets using smart key devices
US20020166051A1 (en) Method, system, and apparatus for encrypting a web browser script
Wang Towards a General Purpose Trusted Computing Platform for All Vendors and Applications
EP1505473A1 (en) Methods and arrangements for mapping widely disparate portable tokens to a static machine concentric cryptographic environment
Liu CSFS: a secure file system

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060623

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100113

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100723

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100730

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130806

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees