一般に、本発明を含むかまたは本発明に関連する可能性のある装置は多様なデータ処理技術を含む。したがって、本発明についてより詳細に説明する前に、背景として、分散データ処理システム内のハードウェアおよびソフトウェア・コンポーネントの典型的な編成について説明する。
次に図面に関連して説明すると、図1は、それぞれが本発明の一部分を実現可能な複数のデータ処理システムからなる典型的なネットワークを描写している。分散データ処理システム100はネットワーク101を含み、このネットワークは、分散データ処理システム100内でともに接続されている様々な装置およびコンピュータ間の通信リンクを提供するために使用可能な媒体である。ネットワーク101は、ワイヤまたは光ファイバ・ケーブルなどの永久的な接続、あるいは電話または無線通信によって行われる一時的な接続を含むことができる。描写されている例では、サーバ102およびサーバ103は、記憶装置104とともにネットワーク101に接続されている。加えて、クライアント105〜107もネットワーク101に接続されている。クライアント105〜107およびサーバ102〜103は、メインフレーム、パーソナル・コンピュータ、携帯情報端末(PDA:personal digital assistant)などの様々なコンピューティング・デバイスによって表すことができる。分散データ処理システム100は、図示されていない追加のサーバ、クライアント、ルータ、その他の装置、およびピアツーピア・アーキテクチャを含むこともできる。
描写されている例では、分散データ処理システム100は、軽量ディレクトリ・アクセス・プロトコル(LDAP:Lightweight Directory Access Protocol)、伝送制御プロトコル/インターネット・プロトコル(TCP/IP:Transport Control Protocol/InternetProtocol)、ハイパテキスト転送プロトコル(HTTP:Hypertext Transport Protocol)、無線アプリケーション・プロトコル(WAP:Wireless Application Protocol)など、相互に通信するために様々なプロトコルを使用するネットワークおよびゲートウェイの世界的な集合を表すネットワーク101とともにインターネットを含むことができる。当然のことながら、分散データ処理システム100は、たとえば、イントラネット、ローカル・エリア・ネットワーク(LAN:local area network)、または広域ネットワーク(WAN:wide area network)など、いくつかの異なるタイプのネットワークも含むことができる。たとえば、サーバ102はクライアント109とネットワーク110を直接サポートし、そのネットワークは無線通信リンクを取り込んでいる。ネットワーク対応電話111は無線リンク112によりネットワーク110に接続し、PDA113は無線リンク114によりネットワーク110に接続する。電話111およびPDA113は、いわゆるパーソナル・エリア・ネットワーク(PAN:personal area network)またはパーソナル・アドホック・ネットワークを作成するためにBluetooth(商標)無線技術などの適切な技術を使用して、無線リンク115の両端の両者間でデータを直接転送することもできる。同様に、PDA113は、無線通信リンク116を介してPDA107にデータを転送することができる。
本発明は様々なハードウェア・プラットフォーム上で実現することができ、図1は、本発明に関するアーキテクチャ上の制限としてではなく、異機種コンピューティング環境の一例として意図されている。
次に図2に関連して説明すると、同図は、本発明を実現可能な、図1に図示されているものなどのデータ処理システムの典型的なコンピュータ・アーキテクチャを描写している。データ処理システム120は、内部システム・バス123に接続された1つまたは複数の中央演算処理装置(CPU:central processing unit)122を含み、その内部システム・バスは、ランダム・アクセス・メモリ(RAM:random access memory)124、読み取り専用メモリ126、および入出力アダプタ128を相互接続し、その入出力アダプタは、プリンタ130、ディスク装置132、またはオーディオ出力システムなどの図示されていないその他の装置などの様々な入出力装置をサポートする。システム・バス123は、通信リンク136へのアクセスを可能にする通信アダプタ134も接続する。ユーザ・インターフェース・アダプタ148は、キーボード140およびマウス142、またはタッチ・スクリーン、スタイラス、マイクロホンなどの図示されていないその他の装置などの様々なユーザ装置を接続する。ディスプレイ・アダプタ144は、システム・バス123をディスプレイ装置146に接続する。
当業者であれば、図2のハードウェアがシステム実現例次第で様々になる可能性があることが分かるであろう。たとえば、システムは、Intel(商標)のPentium(登録商標)ベースのプロセッサおよびデジタル信号プロセッサ(DSP:digital signal processor)などの1つまたは複数のプロセッサと、1つまたは複数のタイプの揮発性および不揮発性メモリを有することができる。図2に描写されているハードウェアに加えてまたはその代わりに、その他の周辺装置を使用することもできる。描写されている例は、本発明に関するアーキテクチャ上の制限を暗示するためのものではない。
様々なハードウェア・プラットフォーム上に実現できることに加えて、本発明は、様々なソフトウェア環境で実現することができる。典型的なオペレーティング・システムを使用して、それぞれのデータ処理システム内のプログラム実行を制御することができる。たとえば、ある装置はUnix(登録商標)オペレーティング・システムを実行することができ、他の装置は単純なJava(登録商標)ランタイム環境を含む。代表的なコンピュータ・プラットフォームはブラウザを含むことができ、そのブラウザは、グラフィック・ファイル、ワード・プロセッシング・ファイル、拡張可能マークアップ言語(XML:Extensible Markup Language)、ハイパテキスト・マークアップ言語(HTML:Hypertext Markup Language)、ハンドヘルド・デバイス・マークアップ言語(HDML:Handheld Device Markup Language)、無線用マークアップ言語(WML:Wireless Markup Language)、およびその他の様々なフォーマットおよびタイプのファイルなど、様々なフォーマットのハイパテキスト文書にアクセスするための周知のソフトウェア・アプリケーションである。
図1および図2に関して上述した通り、本発明は様々なハードウェアおよびソフトウェア・プラットフォーム上で実現することができる。しかし、より具体的には、本発明は、ハードウェア・セキュリティ・トークンの使用により秘密情報を保護するためのメカニズムを対象とする。しかし、本発明についてより詳細に説明する前に、本発明の動作効率およびその他の利点を評価するために、デジタル証明書に関する何らかの背景情報を提供する。
デジタル証明書は、通信またはトランザクションに係わる各当事者が公開鍵と秘密鍵という1対の鍵を有する、公開鍵暗号方式をサポートするものである。各当事者の公開鍵は公開され、秘密鍵は秘密に保持される。公開鍵は、特定のエンティティに関連する番号であり、そのエンティティとの信頼できる対話を有する必要があるすべての人に知られることが意図されている。秘密鍵は、特定のエンティティのみに知られる、すなわち、秘密に保持されることが想定されている番号である。典型的な非対称暗号システムでは、1つの秘密鍵は厳密に1つの公開鍵に対応する。
公開鍵暗号方式システム内では、すべての通信が公開鍵のみを必要とし、いかなる秘密鍵も伝送または共用されないので、機密メッセージは、公用情報のみを使用して生成することができ、意図された受信者が単独所有している秘密鍵のみを使用して暗号化解除することができる。さらに、公開鍵暗号方式は、認証すなわちデジタル署名のため、ならびにプライバシすなわち暗号化のために使用することができる。
暗号化とは秘密の暗号化解除鍵なしでは誰も読めない形式にデータを変換することであり、暗号化は、暗号化データを見ることができる人であっても意図されていない人である場合、情報の内容をその人から隠した状態に保持することにより、プライバシを保証する。認証とは、それによりデジタル・メッセージの受信側が送信側のアイデンティティまたはメッセージの保全性あるいはその両方を確信できるプロセスである。
たとえば、送信側がメッセージを暗号化する場合、元のメッセージ内のデータを暗号化メッセージの内容に変換するために、受信側の公開鍵が使用される。送信側は意図された受信者の公開鍵を使用してデータを暗号化し、受信側はその秘密鍵を使用して暗号化メッセージを暗号化解除する。
データを認証する場合、署名者の秘密鍵を使用してデータからデジタル署名を計算することにより、データに署名することができる。データにデジタル署名が行われると、そのデータは、署名者のアイデンティティならびにそのデータが署名者から生じたものであることを証明する署名とともに保管することができる。署名者はその秘密鍵を使用してデータに署名し、受信側は署名者の公開鍵を使用して署名を検証する。
証明書は、個人、コンピュータ・システム、そのシステム上で実行される特定のサーバなど、エンティティのアイデンティティおよび鍵所有権を保証するデジタル文書である。証明書は認証局によって発行される。認証局(CA:certificate authority)は、他の人またはエンティティに関する証明書に署名するかまたはその証明書を発行することを任されているエンティティ、通常はあるトランザクションに対する信頼のおける第三者機関である。認証局は、通常、公開鍵とその所有者との結合に関するその保証によって、証明書に署名したエンティティを信頼できるようにする、ある種の法律上の責任を有する。多くの商用認証局が存在し、このような認証局は、証明書を発行するときに、あるエンティティのアイデンティティおよび鍵所有権の検証を担当する。
認証局があるエンティティに関する証明書を発行する場合、そのエンティティは、公開鍵と、そのエンティティに関する何らかの情報を提供しなければならない。特別に装備されたWebブラウザなどのソフトウェア・ツールは、この情報にデジタル署名を行い、それを認証局に送信することができる。認証局は、信頼のおける第三者機関認証局サービスを提供する営利企業である場合もある。その場合、認証局は、証明書を生成し、それを返すことになる。証明書は、通し番号や、その間、証明書が有効である複数の日付などの他の情報を含むことができる。認証局によって提供される価値ある役割の1つは、その認証サービス慣行(CSP:Certification Service Practice)に公然と公表されているその検証要件にある程度基づいて、中立かつ信頼できる紹介サービスとして働くことである。
認証局は、その他の識別情報とともに要求側エンティティの公開鍵を組み込み、次に認証局の秘密鍵でデジタル証明書に署名することにより、新しいデジタル証明書を作成する。次に、トランザクションまたは通信中にデジタル証明書を受信した人は誰でも、認証局の公開鍵を使用して、証明書内の署名付き公開鍵を検証することができる。その意図は、認証局の署名がデジタル証明書上の改ざん防止シールとして作用し、それにより、証明書内のデータの保全性を保証することである。
証明書処理のその他の態様も標準化されている。1999年3月の「Internet Engineering Task Force (IETF) Request for Comments (RFC) 2511」に掲載されたMyers他による「Internet X.509 Certificate Request Message Format」では、依存している当事者が認証局からの証明書を要求している場合に使用するよう推奨されているフォーマットが指定されている。1999年3月の「IETF RFC 2511」に掲載されたAdams他による「Internet X.509 Public Key Infrastructure Certificate Management Protocols」では、証明書を転送するためのプロトコルが指定されている。本発明はデジタル証明書を使用する分散データ処理システムにあり、図3〜図4の説明は、デジタル証明書を必要とする典型的な動作に関する背景情報を提供するものである。
次に図3に関連して説明すると、このブロック図は、ある個人がデジタル証明書を入手する際の典型的な方法を描写している。何らかのタイプのクライアント・コンピュータ上で操作しているユーザ202は、公開/秘密鍵ペア、たとえば、ユーザ公開鍵204およびユーザ秘密鍵206を前もって入手または生成している。ユーザ202は、ユーザ公開鍵204を含む証明書208に関する要求を生成し、CA公開鍵212およびCA秘密鍵214を所有している認証局210にその要求を送信する。認証局210は、何らかの方法でユーザ202のアイデンティティを検証し、ユーザ公開鍵218を含むX.509デジタル証明書216を生成する。この証明書全体はCA秘密鍵214で署名され、この証明書は、ユーザの公開鍵と、ユーザに関連する名前と、その他の属性とを含む。ユーザ202は新たに生成されたデジタル証明書216を受信し、その後、ユーザ202は、信頼できるトランザクションまたは信頼できる通信に従事するために必要なデジタル証明書216を提示することができる。ユーザ202からデジタル証明書216を受信したエンティティは、公表され、検証エンティティにとって使用可能であるCA公開鍵212を使用することにより、認証局の署名を検証することができる。
次に図4に関連して説明すると、このブロック図は、あるエンティティがデジタル証明書を使用してデータ処理システムに対して認証される際の典型的な方法を描写している。ユーザ302はX.509デジタル証明書304を所有しており、その証明書はホスト・システム308上のインターネットまたはイントラネット・アプリケーション306に伝送され、アプリケーション306はデジタル証明書を処理し使用するためにX.509の機能を有する。ユーザ302は、その秘密鍵とともにアプリケーション306に送信するデータに署名するかまたはそのデータを暗号化する。
証明書304を受信するエンティティは、アプリケーション、システム、サブシステムなどである可能性がある。証明書304は、アプリケーション306に対してユーザ302を識別するサブジェクト名またはサブジェクトIDを含み、そのアプリケーションはユーザ302のために何らかのタイプのサービスを実行することができる。証明書304を使用するエンティティは、ユーザ302からの署名付きデータまたは暗号化データについて証明書を使用する前に、証明書の認証性を検証する。
ホスト・システム308は、システム308内のサービスおよびリソースにアクセスするためにユーザ302を許可するために、すなわち、ユーザのアイデンティティとユーザ特権とを調整するために使用されるシステム・レジストリ310も含むことができる。たとえば、システム管理者は、特定のセキュリティ・グループに属するようにユーザのアイデンティティを構成している可能性があり、そのユーザは、全体としてそのセキュリティ・グループにとって使用可能になるように構成されたリソースのみにアクセスできるものとして制限される。このシステム内では、許可方式を課すための様々な周知の方法を使用することができる。
デジタル証明書を適正に妥当性検査または検証するために、アプリケーションは、その証明書が取り消されているかどうかをチェックしなければならない。認証局が証明書を発行する場合、認証局は、それによって証明書が識別される固有の通し番号を生成し、この通し番号は、X.509証明書内の「通し番号」フィールド内に保管される。典型的には、取り消されたX.509証明書は証明書の通し番号を介してCRL内で識別され、取り消された証明書の通し番号はCRL内の通し番号のリスト内に現れる。
証明書304が依然として有効であるかどうかを判断するために、アプリケーション306は、CRLリポジトリ312から証明書取り消しリスト(CRL:certificate revocation list)を入手し、CRLを妥当性検査する。アプリケーション306は、証明書304内の通し番号を、検索されたCRL内の通し番号のリストと比較し、一致する通し番号がまったくない場合、アプリケーション306は証明書304を妥当性検査する。CRLが一致する通し番号を有する場合、証明書304は拒否されるはずであり、アプリケーション306は、任意の被制御リソースへのアクセスに関するユーザの要求を拒否するために適切な措置を講ずることができる。
ほとんどのデータ処理システムは、保護する必要のある機密データを収容している。たとえば、構成情報のデータ保全性は違法な変更から保護する必要があり、パスワード・ファイルなどのその他の情報は違法な開示から保護する必要がある。所与のデータ処理システムのオペレータは、データ処理システムを保護するために多種多様なタイプのセキュリティ・メカニズムを使用することができる。たとえば、データ処理システム上のオペレーティング・システムは、様々な認証および許可方式など、機密データを保護するための様々なソフトウェア・メカニズムを提供することができ、特定のハードウェア・デバイスおよびソフトウェア・アプリケーションは、ハードウェア・セキュリティ・トークンおよびバイオメトリック・センサ・デバイスなど、機密データを保護するためのハードウェア・メカニズムに依存することができる。機密データを保護するために所与のデータ処理システム内で複数のソフトウェアおよびハードウェア・メカニズムを使用できる場合でも、誰かが暗号化機密データに違法なアクセスをする場合に暗号化機密データを暗号化解除する能力がなければ暗号化機密データのコピーが無用なものになるように機密データを暗号化することもできる。
しかし、データ処理システム内に収容されているすべての情報を最終的に保護するための能力には限界がある。たとえば、パスワード・ファイルをさらに保護しようとして、マスタ・シークレットと呼ばれる場合が多いパスワードまたは暗号鍵などのさらに他の秘密を使用して、パスワード・ファイルを暗号化する場合もある。しかし、この新たな秘密も何らかの方法で保護する必要がある。したがって、システム管理者は、他のセキュリティ層を実現しようとすると、その結果、やはり保護する必要のある追加の機密情報が発生するという、ある種のジレンマに陥る可能性がある。ここで本発明を考慮すると、残りの図には、このジレンマを解決する本発明の模範的な諸実施形態が描かれている。
次に図5に関連して説明すると、このブロック図は、本発明の一実施形態により、データ処理システム内のハードウェア・セキュリティ・ユニット内で暗号機能を使用可能にするために取り外し可能ハードウェア・デバイスを受け入れるデータ処理システムの一部分を描写している。本発明では、暗号鍵を保持し、暗号化機能を実行する1対の突き合わせスマート・キー・デバイスを使用する。システム・ユニット402は、ポータブルまたは取り外し可能デバイスである外部スマート・キー・デバイス(EXSKD:external smart key device)404とのインターフェースを取る。また、システム・ユニット402は、マザーボードなどの取り外し可能デバイスを受け入れるホスト・システムの一体部分である突き合わせデバイスである内部スマート・キー・デバイス(INSKD:internal smart key device)406も含む。内部スマート・キー・デバイスは、好ましくは、ホスト・システムから取り外しにくい、パッケージ化された集積回路であり、ハードウェア・セキュリティ・ユニットまたはデバイスとして記述される場合もあれば、命令を実行するための処理装置を有する場合もある。この例では、EXSKD404とINSKD406は対になったデバイスである。取り外し可能デバイスは、システム管理担当者、たとえば、IT管理者によって物理的に固定され、IT管理者が、ホスト・マシン上の突き合わせデバイス、すなわち、INSKD406によってのみ実行可能な特定の暗号機能を使用可能にする必要があるときに、取り外し可能デバイス、すなわち、EXSKD404は、システム・ユニット402などのホスト・マシンに挿入される。換言すれば、特定の暗号機能は、外部スマート・キー・デバイスがシステム・ユニットに挿入されたときに使用可能になる。INSKD406のみが特定の暗号出力を生成するための1つまたは複数の特定の暗号秘密鍵を含んでいるので、IT管理者が必要とする結果は、INSKD406のみによって生成することができる。システム・ユニット402上のアプリケーション408は、EXSKD404およびINSKD406に類似しているソフトウェア・スマート・キー・ユニット(SWSKU:software smart key unit)410を有する。アプリケーション408はSWSKU410を使用して特定の機能を実行するが、この機能については以下により詳細に説明する。
次に図6に関連して説明すると、このブロック図は、本発明の一実施形態により、内部スマート・キー・デバイスを含み、内部スマート・キー・デバイス内の暗号機能を使用可能にするために外部スマート・キー・デバイスを使用するシステム・ユニットを描写している。図6は、様々なコンポーネント内に保管されている暗号鍵に関する追加の詳細を含むことを除き、図5と同様のものである。
外部スマート・キー・デバイス(EXSKD)502は取り外し可能ハードウェア・デバイスであり、EXSKD502は、好ましくは、システム管理者によって制御され、ハードウェア・セキュリティ・トークンとして動作するポータブル・デバイスである。電気的インターフェース504を備えた外部スマート・キー・デバイス502は、電気的インターフェース508を備えたシステム・ユニット506内に挿入可能であり、外部スマート・キー・デバイス502およびシステム・ユニット506は、それぞれのインターフェースにより電気的に連結し、デジタル情報を表す電気信号を交換する。
外部スマート・キー・デバイス502は、外部スマート・キー・デバイス502内に保管されている様々なデータ項目を使用して暗号機能を実行するための暗号エンジン510を含む。EXSKD秘密鍵512は、EXSKD502の外部にあるエンティティによって読み取りまたはアクセスを行えないように保管されており、EXSKD502は、EXSKD秘密鍵512のコピーを伝送するかまたはその他の方法で提供するための機能を含んでいない。EXSKD公開鍵証明書514は、非対称暗号鍵ペアとしてEXSKD秘密鍵512に対応するEXSKD公開鍵516のコピーを含む。また、EXSKD502は、INSKD公開鍵証明書518のコピーも含み、その証明書自体は、非対称暗号鍵ペアとしてINSKD秘密鍵526に対応するINSKD公開鍵520のコピーを含む。INSKD公開鍵証明書518のコピーは、その製造または初期設定プロセスの一部としてEXSKD502上に書き込むことができる。
システム・ユニット506は、内部スマート・キー・デバイス(INSKD)522を含む。内部スマート・キー・デバイス522は、内部スマート・キー・デバイス522内に保管されている様々なデータ項目を使用して暗号機能を実行するための暗号エンジン524を含む。INSKD秘密鍵526は、INSKD522の外部にあるエンティティによって読み取りまたはアクセスを行えないように保管されており、INSKD522は、INSKD秘密鍵526のコピーを伝送するかまたはその他の方法で提供するための機能を含んでいない。INSKD公開鍵証明書528は、非対称暗号鍵ペアとしてINSKD秘密鍵526に対応するINSKD公開鍵530のコピーを含む。また、INSKD522は、EXSKD公開鍵証明書532のコピーも含み、その証明書自体は、非対称暗号鍵ペアとしてEXSKD秘密鍵512に対応するEXSKD公開鍵534のコピーを含む。EXSKD公開鍵証明書532のコピーは、その製造または初期設定プロセスの一部としてINSKD522上に書き込むことができる。
代替諸実施形態では、INSKD秘密鍵526およびINSKD公開鍵530を他の機能に使用することができる。図6に図示されている好ましい一実施形態では、INSKD秘密鍵526およびINSKD公開鍵530はINSKD522とEXSKD502との間の通信のために予約されており、INSKD522は1つまたは複数の他の暗号鍵ペアを他の機能に使用する。この例では、INSKD522と、アプリケーション540内のソフトウェア・スマート・キー・ユニット(SWSKU)538との間の通信を保護するために、INSKD522によってINSKD_SW秘密鍵536が使用される。INSKD_SW公開鍵証明書542は、非対称暗号鍵ペアとしてINSKD_SW秘密鍵536に対応するINSKD_SW公開鍵544のコピーを含む。また、INSKD522は、SWSKU公開鍵証明書546のコピーも含み、その証明書自体は、非対称暗号鍵ペアとしてSWSKU秘密鍵550に対応するSWSKU公開鍵548のコピーを含む。
システム・ユニット506は、SWSKU538を含むアプリケーション540の実行をサポートし、そのSWSKU自体は、ソフトウェア・スマート・キー・ユニット538内に保管されている様々なデータ項目を使用して暗号機能を実行するための暗号エンジン552を含む。SWSKU538は、SWSKU秘密鍵550のコピーを伝送するかまたはその他の方法で提供するための機能を含んでいない。SWSKU公開鍵証明書554は、非対称暗号鍵ペアとしてSWSKU秘密鍵550に対応するSWSKU公開鍵556のコピーを含む。また、SWSKU538は、INSKD_SW公開鍵証明書558のコピーも含み、その証明書自体は、非対称暗号鍵ペアとしてINSKD_SW秘密鍵536に対応するINSKD_SW公開鍵560のコピーを含む。以下にさらにより詳細に説明する通り、SWSKU538にはデジタル署名を行うことができる。図6に図示されている例では、SWSKU538は、INSKD_SW秘密鍵536を使用してSWSKU538について計算されたデジタル署名562を含み、換言すれば、INSKD522は、INSKD_SW秘密鍵536を使用してSWSKU538にデジタル署名を行う。
次に図7に関連して説明すると、この流れ図は、ホスト・システムの内部スマート・キー・デバイスの暗号機能を使用可能にするためのプロセスの概要を描写している。このプロセスはブロック602から始まり、そこで、外部スマート・キー・デバイスが内部スマート・キー・デバイスを含むシステム・ユニットに電気的に連結される。たとえば、IT管理者は、外部スマート・キー・デバイスを受け入れるためのスロットを含む受け入れユニット(receiving unit)内に外部スマート・キー・デバイスを挿入することができる。次に、内部スマート・キー・デバイスおよび外部スマート・キー・デバイスは、ブロック604中に相互認証手順を実行し、その後、ブロック606中に内部スマート・キー・デバイスが暗号機能を実行できるようになり、プロセスが終了する。相互認証手順にエラーがあれば、その結果、内部スマート・キー・デバイスの使用不可が継続するものと想定することができる。あまり制限的ではない一実施形態では、ホスト・システム上で実行される任意のアプリケーションによって内部スマート・キー・デバイスの暗号機能を呼び出すことができる。より制限的な一実施形態では、図8に図示されている通り、ソフトウェア・スマート・キー・ユニットを含むアプリケーションのみによって内部スマート・キー・デバイスの暗号機能を呼び出すことができる。
次に図8に関連して説明すると、この流れ図は、本発明の一実施形態により、特定のソフトウェア・スマート・キー・ユニットによって使用するためのホスト・システムの内部スマート・キー・デバイスの暗号機能を使用可能にするためのプロセスを描写している。このプロセスはブロック702から始まり、そこで、たとえば、アプリケーション・プログラミング・インターフェース(API:application programming interface)によりソフトウェア・スマート・キー・ユニットを含むアプリケーションまたはアプレットが内部スマート・キー・デバイスの暗号機能を呼び出す。次に、内部スマート・キー・デバイスおよびソフトウェア・スマート・キー・ユニットは、ブロック704中に相互認証手順を実行し、その後、ブロック706中に内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットに関する暗号機能を実行できるようになり、プロセスが終了する。ホスト・システム上の複数のソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスとの相互認証手順を完了したものと想定すると、複数のソフトウェア・スマート・キー・ユニットに代わって、内部スマート・キー・デバイスが同時に暗号機能を実行できるようにすることができる。
外部スマート・キー・デバイスが内部スマート・キー・デバイスを含むシステム・ユニットに連結されたままである間に、内部スマート・キー・デバイスは、認証局として動作する、すなわち、新しい公開証明書を生成するための機能を提供できるようになる。一実施形態では、新しいソフトウェア・パッケージをインストールするときに、内部スマート・キー・デバイスを含むシステム・ユニットに外部スマート・キー・デバイスを連結しなければならない。ソフトウェア・インストール中に新しいソフトウェア・パッケージに対して新しい公開証明書を発行することができ、新たに発行されたデジタル証明書内の公開鍵に対応する秘密鍵をソフトウェア・パッケージ内に組み込むことができ、内部スマート・キー・デバイスによってソフトウェア・パッケージに署名させることにより、秘密鍵を保護することができる。さらに、Java(登録商標)環境では、悪意のあるユーザが秘密鍵を改ざんするのを防止するために、秘密鍵が組み込まれているJARファイルおよびJava(登録商標)パッケージをさらにシールすることができる。
次に図9に関連して説明すると、この流れ図は、本発明の一実施形態により、ホスト・システムの内部スマート・キー・デバイスの暗号機能を使用不可にするためのプロセスを描写している。このプロセスはブロック802から始まり、そこで、たとえば、外部スマート・キー・デバイスが挿入され、内部スマート・キー・デバイスが使用可能になった後の何らかのその後の時点で、外部スマート・キー・デバイスが内部スマート・キー・デバイスを含むシステム・ユニットから電気的に分離される。システム・ユニットが外部スマート・キー・デバイスの分離を検出すると、ブロック804中に内部スマート・キー・デバイスがさらに暗号機能を実行できない状態になり、プロセスが終了する。
図9に図示されているプロセスは、図7または図8に図示されているプロセスのいずれかに対する補足的プロセスとして機能する。しかし、本発明の実現例次第で、完全に使用不可にならないようないくつかの機能を内部スマート・キー・デバイスが依然として実行できることに留意されたい。内部スマート・キー・デバイス内の暗号機能は、ソフトウェアまたはハードウェアにより使用可能または使用不可にすることができるものと想定することができる。たとえば、ハードウェア・モードでは、外部スマート・キー・デバイスが受け入れられているかどうかを表す使用可能化状態に基づいて設定またはクリアしなければならない特定のフリップフロップまたはその他のメカニズムにより、内部スマート・キー・デバイス内の特定の回路の動作が動作可能状態に入ることを防止できる可能性があり、ソフトウェア・モードでは、暗号機能の実行を論理的に制御する特殊な使用可能化フラグを設定しクリアすることにより、特定の暗号機能の動作を保護することができる。
次に図10〜図11に関連して説明すると、この1対の流れ図は、図7のブロック604に図示されている相互認証手順に関する詳細を描写している。図10は内部スマート・キー・デバイスが外部スマート・キー・デバイスを認証するためのプロセスを描写し、図11は外部スマート・キー・デバイスが内部スマート・キー・デバイスを認証するためのプロセスを描写している。図10に図示されているプロセスは図11に図示されているプロセスより前に実行することができ、逆の場合も同様であり、本発明が実現される方法次第で、これらのプロセスは独立したものになる場合もあれば、たとえば、試行中の動作を示す適切な信号または状況フラグにより、同時に実行される場合もある。
次に図10を参照すると、このプロセスはブロック902から始まり、そこで、内部スマート・キー・デバイスが外部スマート・キー・デバイスの公開鍵を使用して、メッセージ、たとえば、ランダム・テキスト・ストリングを暗号化する。ブロック904中に内部スマート・キー・デバイスは、ホスト・システムの適切なインターフェースにより、暗号化メッセージを外部スマート・キー・デバイスに転送し、次にその外部スマート・キー・デバイスがブロック906中にその秘密鍵により暗号化メッセージを暗号化解除する。次に外部スマート・キー・デバイスは、ブロック908中に内部スマート・キー・デバイスの公開鍵により暗号化解除メッセージを暗号化し、ブロック910中に暗号化メッセージを内部スマート・キー・デバイスに渡す。次に内部スマート・キー・デバイスは、ブロック912中にその秘密鍵により暗号化メッセージを暗号化解除し、ブロック914中に受信メッセージをその元のメッセージと比較する。2つのメッセージが一致する場合、ブロック916中に内部スマート・キー・デバイスは、たとえば、適切な信号によるかまたは論理フラグ変数を設定することにより、外部スマート・キー・デバイスが本物であると内部スマート・キー・デバイスが判断したことを示し、それによりプロセスを終了する。
次に図11を参照すると、このプロセスはブロック922から始まり、そこで、外部スマート・キー・デバイスが内部スマート・キー・デバイスの公開鍵を使用して、メッセージ、たとえば、ランダム・テキスト・ストリングを暗号化する。ブロック924中に外部スマート・キー・デバイスは暗号化メッセージを内部スマート・キー・デバイスに転送し、次にその内部スマート・キー・デバイスがブロック926中にその秘密鍵により暗号化メッセージを暗号化解除する。次に内部スマート・キー・デバイスは、ブロック928中に外部スマート・キー・デバイスの公開鍵により暗号化解除メッセージを暗号化し、ブロック930中に暗号化メッセージを外部スマート・キー・デバイスに渡す。次に外部スマート・キー・デバイスは、ブロック932中にその秘密鍵により暗号化メッセージを暗号化解除し、ブロック934中に受信メッセージをその元のメッセージと比較する。2つのメッセージが一致する場合、ブロック936中に外部スマート・キー・デバイスは、たとえば、適切な信号によるかまたは論理フラグ変数を設定することにより、内部スマート・キー・デバイスが本物であると外部スマート・キー・デバイスが判断したことを示し、それによりプロセスを終了する。
次に図12〜図13に関連して説明すると、この1対の流れ図は、図8のブロック704に図示されている相互認証手順に関する詳細を描写している。図12はソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスを認証するためのプロセスを描写し、図13は内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットを認証するためのプロセスを描写している。図12に図示されているプロセスは図13に図示されているプロセスより前に実行することができ、逆の場合も同様であり、本発明が実現される方法次第で、これらのプロセスは独立したものになる場合もあれば、たとえば、試行中の動作を示す適切なメッセージまたは状況フラグにより、同時に実行される場合もある。
次に図12を参照すると、このプロセスはブロック1002から始まり、そこで、ソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスの公開鍵を使用して、メッセージ、たとえば、ランダム・テキスト・ストリングを暗号化する。ブロック1004中にソフトウェア・スマート・キー・ユニットは暗号化メッセージを内部スマート・キー・デバイスに転送し、次にその内部スマート・キー・デバイスがブロック1006中にその秘密鍵により暗号化メッセージを暗号化解除する。次に内部スマート・キー・デバイスは、ブロック1008中にソフトウェア・スマート・キー・ユニットの公開鍵により暗号化解除メッセージを暗号化し、ブロック1010中に暗号化メッセージをソフトウェア・スマート・キー・ユニットに渡す。次にソフトウェア・スマート・キー・ユニットは、ブロック1012中にその秘密鍵により暗号化メッセージを暗号化解除し、ブロック1014中に受信メッセージをその元のメッセージと比較する。2つのメッセージが一致する場合、ブロック1016中にソフトウェア・スマート・キー・ユニットは、たとえば、適切なメッセージによるかまたは論理フラグ変数を設定することにより、内部スマート・キー・デバイスが本物であるとソフトウェア・スマート・キー・ユニットが判断したことを示し、それによりプロセスを終了する。
図12とは対照的に、図13は、2つのエンティティ間で渡されるメッセージとして、ランダム・テキスト・ストリングの代わりにセッション・キーを使用する場合を例示している。セッション・キーは、2つのエンティティ間の相互認証プロセスが正常に完了した場合に2つのエンティティ間のセッション中に後続メッセージ・トラフィックを保護するために使用され、ソフトウェア・エンティティの実行の終了またはハードウェア・エンティティの電源遮断などの特定のイベントによって、セッションが時間設定される場合もあれば、セッションが終了する場合もある。セッション・キーは、暗号化の前に他の情報を含むより大きいメッセージ内に入れることができ、その後、暗号化メッセージが2つのエンティティ間で渡される。代替一実施形態では、ランダム・テキスト・ストリングを認証手順に使用することができ、その後、2つのエンティティがセッション・キーを交換することができる。以下にさらにより詳細に説明する通り、情報を交換するために使用されるアクションの数を削減するために、認証プロセス中に2つのエンティティ間で追加の情報を安全に渡すことができる。
次に図13を参照すると、このプロセスはブロック1022から始まり、そこで、内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットの公開鍵を使用して、セッション・キーを暗号化する。ブロック1024中に内部スマート・キー・デバイスは暗号化セッション・キーをソフトウェア・スマート・キー・ユニットに転送し、次にそのソフトウェア・スマート・キー・ユニットがブロック1026中にその秘密鍵により暗号化セッション・キーを暗号化解除する。次にソフトウェア・スマート・キー・ユニットは、ブロック1028中に内部スマート・キー・デバイスの公開鍵により暗号化解除セッション・キーを暗号化し、ブロック1030中に暗号化セッション・キーを内部スマート・キー・デバイスに渡す。次に内部スマート・キー・デバイスは、ブロック1032中にその秘密鍵により暗号化セッション・キーを暗号化解除し、ブロック1034中に受信セッション・キーをその元のセッション・キーと比較する。2つのバージョンのセッション・キーが一致する場合、ブロック1036中に内部スマート・キー・デバイスは、たとえば、適切なメッセージによるかまたは論理フラグ変数を設定することにより、ソフトウェア・スマート・キー・ユニットが本物であると内部スマート・キー・デバイスが判断したことを示し、それによりプロセスを終了する。
図8に図示されているプロセスに併せて追加のセキュリティ・アクションを実行することができる。たとえば、ブロック702では、アプリケーションまたはアプレットは、内部スマート・キー・デバイス内に組み込まれた機能の使用を要求している。図13に図示されているプロセスを開始する前の何らかの時点で、内部スマート・キー・デバイスは、要求側アプリケーションまたはアプレット内のソフトウェア・スマート・キー・ユニットが安全なコードを含むかどうかを検証する追加のアクションを実行することができる。図6に関して前述した通り、SWSKU538にはデジタル署名を行うことができ、SWSKU538は、INSKD_SW秘密鍵536を使用してSWSKU538について計算されたデジタル署名562を含む。このため、内部スマート・キー・デバイスは、ソフトウェア・スマート・キー・ユニットに関連するデジタル署名を検証することにより、要求側アプリケーションまたはアプレット内のソフトウェア・スマート・キー・ユニットが安全なコードを含むかどうかを検証することができる。
Java(登録商標)環境では、ソフトウェア・スマート・キー・ユニットを署名付きJARファイルとして実現することができ、一実施形態では、内部スマート・キー・デバイスを使用して、署名付きJARファイルのデジタル署名を検証する。異なる環境では、シールされたJARファイルからパッケージ内のすべてのコードをロードしなければならないことをクラス・ローダが強制するように、JARファイルおよびJava(登録商標)パッケージをさらにシールすることができる。JARファイルおよびJava(登録商標)パッケージをシールする行為は、クラス・パス内にコードを注入することにより悪意のあるユーザによって機能が変更されるのを防止することができる。その上、クラス・ローダそのものには、クラス・ローダの保全性を検証できるように署名しシールすることができる。
より汎用的な計算環境では、内部スマート・キー・デバイスはソフトウェア・スマート・キー・ユニットにデジタル署名を行い、あとでデジタル署名を妥当性検査することができるが、ソフトウェア・スマート・キー・ユニットが署名され妥当性検査されることを保証するプロセスは、内部スマート・キー・デバイスからの援助によってデータ処理システム内の適切なオペレーティング・システム・モジュールにより、たとえば、実行のためにソフトウェア・モジュールをロードするプログラム・ローダにより、制御することができる。ソフトウェア・モジュールが実行できるようにする前に、プログラム・ローダは追加のセキュリティ・プロセスを実行できるであろう。その上、プログラム・ローダそのものには、プログラム・ローダの保全性を検証できるように署名しシールすることができる。
前述のプロセスはソフトウェア・スマート・キー・ユニットの保全性を確保するためのメカニズムを提供しているが、ソフトウェア・スマート・キー・ユニットを含むコードを検査することにより、その暗号鍵を表示しコピーすることができるので、データ処理システム内のソフトウェア・スマート・キー・ユニットの動作は依然としていくらか脆弱なものと見なされる可能性があり、暗号鍵はソフトウェア・スマート・キー・ユニット内に明文で保管されているものと想定することができる。
このため、ソフトウェア・スマート・キー・ユニット、特にその秘密鍵を保護するために、図8に図示されているプロセスに併せて、さらに他のセキュリティ・アクションを実行することができる。前の何らかの時点で、ソフトウェア・スマート・キー・ユニットを暗号化し、それにより、ソフトウェア・スマート・キー・ユニット内の任意の機密情報、特にその秘密鍵を隠すことができる。異なる一実施形態では、ソフトウェア・スマート・キー・ユニットを含むソフトウェア・モジュールを暗号化することができるであろう。たとえば、ソフトウェア・モジュールをデータ処理システム上にインストールするときに、データ処理システム上の内部スマート・キー・デバイスは、そのソフトウェア・モジュールを含むアプリケーション・プログラム用のインストール手順の一部として、そのソフトウェア・モジュールを暗号化することができるであろう。
この追加のアクションが実行されるシステムでは、ソフトウェア・スマート・キー・ユニットまたはソフトウェア・スマート・キー・ユニットを含むソフトウェア・モジュールあるいはその両方は、実行可能になる前に暗号化解除を必要とするであろう。デジタル署名を使用するソフトウェア・スマート・キー・ユニットの保全性の保護に関して上述されたものと同様のある時点で、たとえば、図13に図示されているプロセスを開始する前の何らかの時点で、内部スマート・キー・デバイスは、ソフトウェア・スマート・キー・ユニットまたはソフトウェア・スマート・キー・ユニットを含むソフトウェア・モジュールあるいはその両方を暗号化解除する追加のアクションを実行するであろう。この場合も、上述したものと同様に、内部スマート・キー・デバイスからの援助によって、データ処理システム内の適切なオペレーティング・システム・モジュールにより暗号化解除プロセスを制御することができる。内部スマート・キー・デバイスに併せて使用するためにインストール時にソフトウェア・モジュールを変更するプロセスならびにこのようなソフトウェア・モジュールを安全に実行するプロセスに関する詳細については以下に示す。
次に図14に関連して説明すると、この流れ図は、外部スマート・キー・デバイスの存在に基づいて動作が使用可能または使用不可になるソフトウェア・スマート・キー・ユニットによって要求された動作を実行するための内部スマート・キー・デバイス内のプロセスを描写している。このプロセスはブロック1102から始まり、そこで、内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットから要求メッセージを受信し、要求メッセージは、ソフトウェア・スマート・キー・ユニットによって要求されている動作のタイプを示すメッセージタイプ変数を含む。次にブロック1104中に、ソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスによって認証されているかどうかに関する判断が行われ、この判断は、たとえば、図13に関して上述した通り、前の認証手順中に内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットに渡したセッション・キーを使用して受信メッセージの内容を正常に暗号化解除することにより実行することができる。ソフトウェア・スマート・キー・ユニットが認証されていない場合、ブロック1106中に内部スマート・キー・デバイスが適切なエラー応答を生成し、ブロック1108中に要求側ソフトウェア・スマート・キー・ユニットに応答メッセージを返し、それにより、プロセスを終了する。
ソフトウェア・スマート・キー・ユニットが認証されている場合、ブロック1110中に外部スマート・キー・デバイスが依然としてシステム・ユニットに電気的に連結されているかどうかを内部スマート・キー・デバイスが判断する。たとえば、この判断は単に、システム・ユニットと外部スマート・キー・デバイスとの間の電気接続が切断された場合にクリアされたと思われる特殊レジスタのチェックを必要とするだけである場合もある。外部スマート・キー・デバイスがシステム・ユニットに電気的に連結されていない場合、内部スマート・キー・デバイスは、ブロック1106でエラー応答を生成し、ブロック1108で応答メッセージをソフトウェア・スマート・キー・ユニットに返し、それにより、プロセスを終了する。
ソフトウェア・スマート・キー・ユニットが認証されており、外部スマート・キー・デバイスが依然としてシステム・ユニットに電気的に連結されている場合、内部スマート・キー・デバイスは、可能であれば、ソフトウェア・スマート・キー・ユニットのために要求された機能を実行する。ブロック1112およびブロック1114は、内部スマート・キー・デバイスによって提供される可能性のある機能の例を描写しており、これらの例の列挙は、本発明の他の実現例でその他の機能が使用可能ではない可能性があることを暗示しているわけではない。好ましい一実施形態では、内部スマート・キー・デバイスは、相互認証後に外部スマート・キー・デバイスが内部スマート・キー・デバイスに電気的に連結されたままである場合のみ、認証局として動作しながら新しいデジタル証明書を発行する機能と、内部スマート・キー・デバイスの秘密鍵を使用してソフトウェア・モジュールに署名する機能であって、その秘密鍵が使用可能な公開鍵証明書に対応する機能を実行する。本発明は内部スマート・キー・デバイスの秘密鍵を検索するためのいかなるインターフェースも許可せず、このため、その秘密鍵を使用して署名動作を実行することは内部スマート・キー・デバイスのみによって実行可能であることに留意されたい。
ソフトウェア・スマート・キー・ユニットが、要求メッセージ内に組み込まれたデータ項目に対するデジタル署名を要求している場合、ブロック1112中に内部スマート・キー・デバイスは、適切な秘密鍵を使用してデータ項目についてデジタル署名を計算し、デジタル署名を(好ましくは、それが返すデータ項目のコピーとともに)応答メッセージ内に挿入する。ソフトウェア・スマート・キー・ユニットがデジタル証明書を要求している場合、ブロック1114中に内部スマート・キー・デバイスは、適切な秘密鍵を使用してデジタル証明書を生成し、デジタル証明書を応答メッセージ内に挿入し、デジタル証明書は、要求メッセージ内でソフトウェア・スマート・キー・ユニットによって提供された様々な識別情報を含む可能性がある。適切なセッション・キーにより任意の機密データを暗号化することを含むものと思われる適切な応答メッセージが生成された後、ブロック1108で応答メッセージがソフトウェア・スマート・キー・ユニットに返され、プロセスが終了する。
もう一度、ブロック1112を参照すると、任意のタイプのデジタル・データ項目に署名することができる。もう一度、図5を参照すると、アプリケーション408は、本発明の機能を取り込むことができる多種多様なタイプのアプリケーションを表している。一実施形態では、このアプリケーションは、Java(登録商標)JARファイル、アプリケーション・サーバによって直接生成されたファイル、またはホスト・システム上の他のアプリケーションに代わって生成されたファイルに署名するアプリケーション・サーバにすることができる。特定のケースでは、新たに生成されたJARファイルはそれ自体が、ホスト・システムの内部スマート・キー・デバイス内の機能を呼び出すことができるソフトウェア・スマート・キー・ユニットを含むことができる。
次に図15に関連して説明すると、この流れ図は、外部スマート・キー・デバイスの存在によって動作が使用可能になる必要がないソフトウェア・スマート・キー・ユニットによって要求された動作を実行するための内部スマート・キー・デバイス内のプロセスを描写している。このプロセスはブロック1122から始まり、そこで、内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットから要求メッセージを受信し、要求メッセージは、ソフトウェア・スマート・キー・ユニットによって要求されている動作のタイプを示すメッセージタイプ変数を含む。次にブロック1124中に、ソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスによって認証されているかどうかに関する判断が行われ、この判断は、たとえば、図13に関して上述した通り、前の認証手順中に内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットに渡したセッション・キーを使用して受信メッセージの内容を正常に暗号化解除することにより実行することができる。ソフトウェア・スマート・キー・ユニットが認証されていない場合、ブロック1126中に内部スマート・キー・デバイスが適切なエラー応答を生成し、ブロック1128中に要求側ソフトウェア・スマート・キー・ユニットに応答メッセージを返し、それにより、プロセスを終了する。
ソフトウェア・スマート・キー・ユニットが認証されている場合、内部スマート・キー・デバイスは、可能であれば、ソフトウェア・スマート・キー・ユニットのために要求された機能を実行する。ブロック1130およびブロック1132は、内部スマート・キー・デバイスによって提供される可能性のある機能の例を描写しており、これらの例の列挙は、本発明の他の実現例でその他の機能が使用可能ではない可能性があることを暗示しているわけではない。好ましい一実施形態では、外部スマート・キー・デバイスの存在なしで、必要なキーが与えられた暗号化および暗号化解除の機能、証明書が与えられたデジタル署名を妥当性検査する機能、ソフトウェア・スマート・キー・ユニットを相互に認証する機能、ならびに保管された機密情報が相互に認証されたソフトウェア・スマート・キー・ユニットによって読み取り/書き込みアクセスできるようにする機能が、内部スマート・キー・デバイスによって実行されるであろう。
ソフトウェア・スマート・キー・ユニットが、要求メッセージ内に組み込まれたマスタ・シークレットの登録を要求している場合、ブロック1130中に内部スマート・キー・デバイスは、ソフトウェア・スマート・キー・ユニットに関する何らかの識別情報に関連してマスタ・シークレットを保管し、応答メッセージを生成する。ソフトウェア・スマート・キー・ユニットが、前に登録されたマスタ・シークレットの検索を要求している場合、ブロック1132中に内部スマート・キー・デバイスは、ソフトウェア・スマート・キー・ユニットのアイデンティティに基づいてマスタ・シークレットを検索し、応答メッセージを生成する。適切なセッション・キーにより任意の機密データを暗号化することを含むものと思われる適切な応答メッセージが生成された後、ブロック1128で応答メッセージがソフトウェア・スマート・キー・ユニットに返され、プロセスが終了する。
このように、デジタル証明書の発行など、特に機密の動作が内部スマート・キー・デバイスによって実行される必要がある場合に、外部スマート・キー・デバイスを内部スマート・キー・デバイスに電気的に連結された状態に保持することが必要であるだけである。図15に関して上述した通り、ソフトウェア・スマート・キー・ユニットは、外部スマート・キー・デバイスの存在を要求せずに、内部スマート・キー・デバイスと相互に認証した後、暗号鍵などの機密情報を内部スマート・キー・デバイスに保管することができ、機密情報は同じソフトウェア・スマート・キー・ユニットのみによって検索することができる。
ソフトウェア・スマート・キー・ユニットは、外部スマート・キー・デバイスから独立した方法で内部スマート・キー・デバイスと相互に認証することができるので、この手法は有利なものである。たとえば、この手法は、無人モード、すなわち、外部スマート・キー・デバイスを挿入するための人間が存在しないモードでのソフトウェア・プログラムの始動を可能にし、プログラムは、前に署名されシールされたソフトウェア・スマート・キー・ユニットを使用して、内部スマート・キー・デバイスから任意の機密情報を検索することができる。ソフトウェア・プログラムは、内部スマート・キー・デバイスからマスタ・シークレットを検索し、パスワードおよびその他の暗号化構成情報を暗号化解除して、人間の介入なしで安全に始動プロセスを完了することができる。
次に図16に関連して説明すると、このブロック図は、マスタ・シークレットを保護するための本発明の一実施形態を例示している。上記の通り、データ処理システム上に保管されている秘密情報はマスタ・シークレットにより暗号化することができ、これはマスタ・シークレットを保護する必要性を伴うものである。従来技術のシステムでは、マスタ・シークレットの保護は、典型的には、マスタ・シークレットが使用されているホスト・システムの外部にあるメカニズムにより保護される。典型的な従来技術のシステムとは対照的に、本発明の一実施形態を使用すると、マスタ・シークレットが使用されることになるホスト・システム上でマスタ・シークレットを保護することができる。
図16は図5と同様のものであり、システム・ユニット1202は外部スマート・キー・デバイス1204とのインターフェースを取り、システム・ユニット1202は内部スマート・キー・デバイス1206も含む。また、システム・ユニット1202は、ソフトウェア・スマート・キー・ユニット1208〜1212もサポートする。しかし、図5とは対照的に、図16の内部スマート・キー・デバイス1206は、パスワード、暗号化キー、または何らかのその他の形式である可能性のあるマスタ・シークレットを保護するためにマスタ・シークレット・レジストリ1214を含むように強化されている。図15のブロック1130および1132に関して簡単に上述した通り、ソフトウェア・スマート・キー・ユニット1208〜1212は、安全な要求/応答メカニズムにより内部スマート・キー・デバイス1206にマスタ・シークレットを保管することができる。内部スマート・キー・デバイス1206は、要求側ソフトウェア・スマート・キー・ユニットに関する識別情報に関連してソフトウェア・スマート・キー・ユニット1208〜1212からマスタ・シークレットを保管する。たとえば、マスタ・シークレット・レジストリ1214はマスタ・シークレット1218に関連するSWSKU ID1216を含み、SWSKU ID1216について実行される可能性のあるルックアップ動作はそれをマスタ・シークレット1218に関連付けることになるである。代わって、マスタ・シークレット・レジストリ1214はソフトウェア・スマート・キー・ユニットあたり2つ以上のマスタ・シークレットをサポートすることができ、それぞれの要求された動作により、適宜、マスタ・シークレットのグループを登録または検索することができる。図15は登録動作および検索動作を例示しているだけであるが、マスタ・シークレットの管理に関連する可能性のあるその他の動作、たとえば、削除動作または上書き動作もサポートすることができる。
図13の説明で上記の通り、情報を交換するために使用されるアクションの数を削減するために、認証プロセス中に内部スマート・キー・デバイスとソフトウェア・スマート・キー・ユニットとの間で追加の情報を安全に渡すことができる。そのために、認証プロセス中にソフトウェア・スマート・キー・ユニットに関するマスタ・シークレットを渡すことができる。本物のソフトウェア・スマート・キー・ユニットはそのソフトウェア・スマート・キー・ユニットの秘密鍵のコピーを備えているべき唯一のエンティティであるので、認証プロセス中に内部スマート・キー・デバイスによって提供されるソフトウェア・スマート・キー・ユニットのマスタ・シークレットを暗号化解除できるのは、そのソフトウェア・スマート・キー・ユニットのみでなければならない。
次に図17〜図19に関連して説明すると、これらのブロック図は、複数の外部スマート・キー・デバイスと複数の内部スマート・キー・デバイスとの種々の関係を例示している。これまでの図面の説明は、外部スマート・キー・デバイスと内部スマート・キー・デバイスとの間に固有の1対1の関係が存在することを暗示しているように思われる可能性がある。図17を参照すると、複数の外部スマート・キー・デバイス1304〜1308のいずれかを使用することにより、単独の内部スマート・キー・デバイス1302を使用可能にすることができる。たとえば、小規模グループのIT管理者のそれぞれは、内部スマート・キー・デバイス1302を含む特定のサーバ・マシン内に挿入することができる取り外し可能スマート・キー・デバイスを有することができる。図18を参照すると、単独の外部スマート・キー・デバイス1402は、複数の内部スマート・キー・デバイス1404〜1408のいずれかを使用可能にすることができる。たとえば、IT管理者は、そのそれぞれが内部スマート・キー・デバイス1404〜1408のうちの1つだけを含む複数のサーバ・マシンで単一の取り外し可能スマート・キー・デバイスを使用することができる。図19を参照すると、複数の外部スマート・キー・デバイス1502〜1506は、複数の内部スマート・キー・デバイス1512〜1516のうちのいずれかを使用可能にすることができる。たとえば、小規模グループのIT管理者のそれぞれは、そのそれぞれが内部スマート・キー・デバイス1512〜1516のうちの1つだけを含む多種多様なサーバ・マシン内に挿入することができる取り外し可能スマート・キー・デバイスを有することができる。所与のスマート・キー・デバイス上で多対1の関係または1対多の関係をサポートするために、所与のスマート・キー・デバイスは、追加の対応する内部スマート・キー・デバイスまたは外部スマート・キー・デバイスあるいはその両方に関する追加の公開鍵証明書の保管または構成のみを必要とする。
本発明の追加の諸実施形態について論ずる前に、本発明の追加の諸実施形態の動作効率およびその他の利点を評価するために、デジタル証明書に基づく信頼関係に関する何らかの背景情報を提供する。
次に図20〜図22に関連して説明すると、各ブロック図は、典型的な1組の信頼できる関係を描写している。次に図20を参照すると、認証局1602は、サーバ1604および1606にデジタル証明書を発行している。上記の通り、認証局は、おそらく人間のユーザである他のエンティティに代わって、しかし、アプリケーションまたはデータ処理システムなどのプログラマチック・エンティティまたはハードウェア・エンティティに代わって、デジタル証明書を発行する、信頼できるエンティティである。したがって、サーバ1604および1606は、図3または図4に図示されているユーザ202または302などのユーザによって表されている可能性があり、代わって、サーバ1604および1606は、図5に図示されているアプリケーション408などの何らかの他のタイプのプログラマチック・エンティティである可能性がある。認証局1602は、サーバ1604および1606にデジタル証明書を発行している。サーバ1604および1606は、本発明によって記載されている通り、その後、認証局1602との相互認証を実行することにより、認証局1602との信頼関係1608および1610を確立することができる。何らかの時点で、サーバ1604は、サーバ1606によって提供されるサービスを要求しながら、対応する秘密鍵の所有証明、たとえば、その秘密鍵を使用して署名されているデータ項目とともに、そのデジタル証明書をサーバ1606に提示することができる。サーバ1606は認証局1602を信頼しているので、サーバ1606は、サーバ1604から受信したデジタル証明書が認証局1602によって署名されたことを検証することにより、サーバ1604を認証することができる。逆の状況もまた真実であり、サーバ1604はサーバ1606を認証できるであろう。このように、サーバ1604およびサーバ1606は両者間の信頼関係1612を確立することができる。
図21を参照すると、サーバ1614は、サーバ1606との信頼関係1616を確立している。この例では、信頼関係1616の根拠はまったく示されておらず、サーバ1604はサーバ1614との信頼関係1616を受け入れていない。
図22を参照すると、同様の参照番号は図20に図示されているものと同様の要素を指し示しているが、図22は図20に図示されているものに対する追加の要素を図示している。認証局1620はサーバ1606および1622にデジタル証明書を発行している。認証局1620がサーバ1606および1622にデジタル証明書を発行している場合、認証局は、サーバ1606および1622との信頼関係1624および1626をそれぞれ確立していると言われる。何らかの時点で、サーバ1622は、サーバ1606によって提供されるサービスを要求しながら、サーバ1606にそのデジタル証明書を提示することができる。サーバ1622は認証局1620を信頼しているので、サーバ1606は、サーバ1622から受信したデジタル証明書が認証局1620によって署名されたことを検証することにより、サーバ1622を認証することができる。逆の状況もまた真実であり、サーバ1622はサーバ1606を認証できるであろう。このように、サーバ1622およびサーバ1606は両者間の信頼関係1628を確立することができる。
信頼関係は推移的である可能性がある。図21に関して上記した通り、サーバ1606はサーバ1614との信頼関係1616を確立している。しかし、おそらく、サーバ1606は信頼関係1616の根拠に関する十分な情報を提供できなかったので、サーバ1604は信頼関係1616を承認しなかった。しかし、図22では、サーバ1606は、サーバ1606が信頼関係を確立しているサーバ間のその信頼できる関係に関する十分な情報を提供することができる。この例では、サーバ1606はサーバ1604に信頼関係1628に関する情報を提供する。サーバ1604とサーバ1606との間の信頼関係1612ならびにサーバ1606とサーバ1622との間の信頼関係1628を考慮すると、サーバ1604およびサーバ1622は、サーバ1604とサーバ1622との間の推移的な信頼関係1630を確立することができる。サーバは、前述した証明書管理プロトコルにより証明書を転送することができる。
このように、サーバは、サーバと認証局との間で複雑な階層型信頼関係を形成することができる。各認証局は木構造のルートと見なすことができ、特に木構造内の他のエンティティが2次認証局としても動作するときに、ある認証局がルート局(root authority)と呼ばれる場合もある。複数の認証局を使用すると、たとえば、図22に図示されている通り、複数の木構造がオーバラップすることができる。次に本発明に戻ると、残りの図には、上述した内部および外部スマート・キー・デバイスの利点を使用して信頼モデルを構築するように本発明が実現される本発明の諸実施形態の例が描かれている。
次に図23に関連して説明すると、このブロック図は、本発明の一実施形態により、内部スマート・キー・デバイスによって提供される信頼に基づく信頼関係から構築される信頼モデルの一例を描写している。本発明の内部スマート・キー・デバイスは、認証局として動作する際に高レベルの信頼性を提供する。他の図に関して上述した通り、内部スマート・キー・デバイスは、情報を保護するためのメカニズムを提供する。図14および図15に関して上述した通り、内部スマート・キー・デバイスによって提供可能な機能の1つはデジタル証明書の発行である。内部スマート・キー・デバイスは、たとえば、マザーボード上の特殊チップなど、データ処理システム内のシステム・ユニットの一部として実現されることになるので、内部スマート・キー・デバイスは、物理的に保護し、それにより、悪意のあるユーザが不適切なスキームを実現するのを困難にしなければならない。加えて、内部スマート・キー・デバイスによるデジタル証明書の発行が外部スマート・キー・デバイスの使用によりシステム管理者によって制御できることによって、内部スマート・キー・デバイスの信頼性が強化される。このため、内部スマート・キー・デバイスがデジタル証明書を発行する能力により、内部スマート・キー・デバイスは信頼モデルの基礎として動作することができる。
このように、種々のタイプのエンティティ、たとえば、種々の種類のハードウェアおよびソフトウェア・コンピューティング・リソースは、それらと、ハードウェアベースの認証局として動作する内部スマート・キー・デバイスとの間で複雑な階層型信頼関係を形成することができる。この信頼モデルでは、信頼は、データ処理システム上の内部スマート・キー・デバイスによって提供される認証局機能に根付いている。信頼関係階層は、図23のように、内部スマート・キー・デバイスが逆ピラミッドの頂点にある逆ピラミッドによって表すことができ、コンピューティング・リソースがその逆ピラミッドを形成する。分散データ処理環境では、図23に図示されている通り、信頼関係はオーバラップする逆ピラミッドの集合として見ることができ、それぞれのピラミッドは各マシン上の内部スマート・キー・デバイスに基づくものである。
図23では、信頼モデルの一例が2つの内部スマート・キー・デバイス1702および1704を示しており、その内部スマート・キー・デバイスはそれぞれ、各内部スマート・キー・デバイスが認証局として動作できるようにするための機能を含む認証局モジュール1706および1708を含む。内部スマート・キー・デバイス1704は2次ソフトウェア認証局モジュール1710に証明書を発行しており、そのモジュールは、内部スマート・キー・デバイス1704が存在する同じシステム・ユニット上で実行されるソフトウェア・アプリケーションである。2次ソフトウェア認証局モジュール1710など、データ処理システム内の階層的に上位のソフトウェア認証局モジュールは、データ処理システム上の内部スマート・キー・デバイス、すなわち、内部スマート・キー・デバイス1704の認証局機能によって提供されるルート信頼など、階層的に下位のソフトウェア認証局から権限を得る。たとえば、内部スマート・キー・デバイス1704は2次ソフトウェア認証局モジュール1710のデジタル証明書に署名することができ、そのモジュールはそれが発行するデジタル証明書に署名するために対応する秘密鍵を使用する。このように、2次ソフトウェア認証局モジュール1710は、内部スマート・キー・デバイス1704に対する従属認証局として動作し、これは、内部スマート・キー・デバイス1704が根付いている証明書チェーン内に反映されるであろう。他の例では、内部スマート・キー・デバイス1704は従属ソフトウェア認証局モジュールに署名することができ、そのモジュール自体は他の従属ソフトウェア認証局モジュールに署名することができる。
内部スマート・キー・デバイス1702はエンティティ1712〜1718にデジタル証明書を発行しており、2次ソフトウェア認証局1710はエンティティ1722〜1728にデジタル証明書を発行しており、それにより、証明書発行者(certificate issuer)と証明書被発行者(certificate issuee)との間の信頼関係を確立し、エンティティ1712〜1718およびエンティティ1722〜1728はアプリケーションまたは何らかのその他のタイプのプログラマチック・エンティティにすることができる。加えて、2次ソフトウェア認証局1710はエンティティ1716にデジタル証明書を発行しており、それにより、この2つのエンティティ間の信頼関係を確立する。
図23は、コンピューティング・リソースのすべてが相互に認証するための証明書処理機能を含む可能性のある信頼モデルを表しており、これらのコンピューティング・リソースは証明書処理機能を含むように構成する必要がある。たとえば、図23の種々のエンティティがソフトウェア・アプリケーションを表している場合、これらのソフトウェア・アプリケーションは、固有の公開鍵証明書が提供されており、対応する固有の秘密鍵を持つモジュールを含む必要がある。
たとえば、他のリソースとの認証動作を実行するための能力を必要とするように独立して動作するはずの各コンピューティング・リソースは、たとえば、アプリケーション540がSWSKU538を含む図6に図示されているように、組み込みソフトウェア・スマート・キー・ユニットを有する可能性がある。アプリケーション540は、SWSKU秘密鍵550を含むSWSKU538を含み、SWSKU公開鍵証明書554は、非対称暗号鍵ペアとしてSWSKU秘密鍵550に対応するSWSKU公開鍵556のコピーを含む。また、SWSKU538は、INSKD_SW公開鍵証明書558のコピーも含む。このため、アプリケーション540は、INSKD522に根付いている信頼階層の一部である。SWSKU538内に組み込まれている情報およびSWSKU538の機能上の能力を使用して、アプリケーション540は、同じくINSKD522を信頼する任意の他のコンピューティング・リソースを認証することができる。したがって、コンピューティング・リソースのすべてが本発明により相互に認証するための証明書処理機能を含む可能性のある信頼モデルを実現するために、システム管理者は、各コンピューティング・リソースがデータ処理デバイスである場合にそのコンピューティング・リソースが内部スマート・キー・デバイスを有するか、または各コンピューティング・リソースがプログラマチック・エンティティである場合にそのコンピューティング・リソースがソフトウェア・スマート・キー・ユニットを有することを保証する必要がある。
しかし、図6に図示されている例では、SWSKU538は、何らかの方法でアプリケーション540に組み込まれるようになっていた。後述するように、様々なプロセスを使用して、プログラマチック・リソースのそれぞれに必要な機能を組み込むことができる。
次に図24に関連して説明すると、このブロック図は、本発明の一実施形態により、オペレーティング・システム内の各プログラマチック・エンティティが内部スマート・キー・デバイスに基づいて信頼階層内に信頼関係を確立するための機能を含む、オペレーティング・システム・ファイルを生成するためのデータ処理システムを描写している。図24は図5と同様のものであり、システム・ユニット1802は外部スマート・キー・デバイス1804とのインターフェースを取り、システム・ユニット1802は内部スマート・キー・デバイス1806も含む。
この例では、オペレーティング・システム・インストール・アプリケーション1808は、システム・ユニット1802を含むマシン上でのオペレーティング・システム・ファイルのインストールを担当する。インストール手順中に、オペレーティング・システム・インストール・アプリケーション1808は、以下により詳細に説明するように、磁気テープまたはCD−ROMなどの配布媒体からオペレーティング・システム・ファイル1812を読み取り、完全に動作可能なモジュール1814を生成する。
図24はオペレーティング・システム・ファイルに関してアクションが実行される一例を描写しているが、代替一実施形態は任意のタイプのアプリケーション・ファイルに適用可能であることに留意されたい。たとえば、オペレーティング・システム・インストール・アプリケーション1808は、任意の所与のソフトウェア・アプリケーションに関するインストール・アプリケーションとして記述されるように汎用化することができ、その所与のソフトウェア・アプリケーションは、オペレーティング・システム・ファイル1812と同様のものである汎用アプリケーション・ファイルによって表すことができる。インストール・プロセスが完了した後、インストール・アプリケーションは、署名付きオペレーティング・システム・ファイル1814と同様のものである証明書所持ソフトウェア・スマート・キー・ユニットを備えたアプリケーション・ファイルを生成している。
図24は、適切にインストールされたオペレーティング・システム・モジュールのみをシステム・ユニット1802上で実行できるようにすべてのオペレーティング・システム・ファイルが保護されるシステムの一例を描写しており、前述の代替実施形態は、システム内のすべてのソフトウェアの実行を制限できるであろう。インストールされた各アプリケーションに適切なインストール・プロセスを使用すると、それぞれのアプリケーション・モジュールを保護することができる。このように、システム・ユニット1802は、外部スマート・キー・デバイスの存在によって制御されるプロセスによりシステム上にインストールされたソフトウェア・モジュールのみにソフトウェア実行を制限することができる。本発明のJava(登録商標)ベースの実現例では、すべてのJava(登録商標)アプリケーションが、インストール・プロセス中にアプリケーション内に置かれるソフトウェア・スマート・キー・ユニットを含む必要がある可能性があり、前述の通り、シールされたJARファイルからパッケージ内のすべてのコードをロードしなければならないことをクラス・ローダが強制するように、すべてのJARファイルおよびJava(登録商標)パッケージをシールすることができる。
次に図25に関連して説明すると、この流れ図は、本発明の一実施形態により、オペレーティング・システム・モジュールが相互に認証動作を実行できるようなソフトウェア・スマート・キー・ユニットを含むオペレーティング・システム・モジュールを生成するためのプロセスを描写している。このプロセスはブロック1902から始まり、そこで、まだ処理されていない少なくとも1つの追加のオペレーティング・システム・モジュールが存在するかどうかをオペレーティング・システム・インストール・アプリケーションがチェックする。存在しない場合、プロセスが終了する。存在する場合、ブロック1904中に、オペレーティング・システム・インストール・アプリケーションは配布媒体からオペレーティング・システム・モジュールを読み取る。たとえば、もう一度、図24を参照すると、配布媒体上のオペレーティング・システム・モジュールは完全なものではなく、オペレーティング・システム・モジュールは、さらに処理しないとインストールすることができない。オペレーティング・システム・モジュール1812は、オペレーティング・システム・ファイルの配布バージョンの形でスタブ・ルーチンまたは空のモジュールを取り込み、これらのオペレーティング・システム・ファイルがインストールされ、追加の変更なしに実行された場合、オペレーティング・システム・サービスは、認証動作を実行できなくなり、それにより、オペレーティング・システムが動作不能になるであろう。
このため、オペレーティング・システム・インストール・アプリケーションが、磁気テープまたはCD−ROMなどの配布媒体からオペレーティング・システム・モジュール1812を読み取った後、ブロック1906中に、オペレーティング・システム・インストール・アプリケーションは、現在処理中のオペレーティング・システム・モジュールからスタブ・ルーチンまたは空のモジュールを削除する。ブロック1908中に、オペレーティング・システム・インストール・アプリケーションは、非対称暗号鍵ペアを生成し、次にブロック1910中に、現在処理中のオペレーティング・システム・モジュールに代わって新たに生成された鍵ペアに基づいてデジタル証明書を発行するよう、ローカル・システム・ユニット上の内部スマート・キー・デバイスに要求する。このように、オペレーティング・システム・インストール・アプリケーションのSWSKUは、それに代わってデジタル証明書が要求され発行されているエンティティを偽装するが、代わって、オペレーティング・システム・インストール・アプリケーション内のソフトウェア認証局機能はデジタル証明書を発行することができ、それにより、それに代わってデジタル証明書が要求され発行されているエンティティの証明書チェーンの一部になるために内部スマート・キー・デバイスの公開鍵証明書とともにソフトウェア認証局の公開鍵証明書を必要とする。オペレーティング・システム・インストール動作は、外部スマート・キー・デバイスを所有するシステム管理者によって制御されるものと想定することができ、オペレーティング・システム・インストール手順中に外部スマート・キー・デバイスをシステム・ユニットに連結することにより、システム管理者は内部スマート・キー・デバイスがデジタル証明書を発行できるようにし、それにより、インストール手順が悪意のあるユーザによって何らかの方法でスプーフされるのを防止する。また、各オペレーティング・システム・モジュールが、固有のIDをデジタル証明書に取り込めるようにオペレーティング・システム・モジュールのすべてを包含するネームスペース内に固有のIDを有するものと想定することもできる。
次にブロック1912中にオペレーティング・システム・インストール・アプリケーションはソフトウェア・スマート・キー・ユニットのインスタンスを生成する。新たに生成されたSWSKUは、新しいSWSKUに代わってオペレーティング・システム・インストール・アプリケーションによって生成された固有の秘密鍵を取り込む。また、この新しいSWSKUは、ローカルINSKDによって発行された秘密鍵に対応する公開鍵証明書も取り込み、加えて、新しいSWSKUに関するデジタル証明書チェーンの一部を形成する任意の他の公開鍵証明書も含むことができる。証明書チェーンは、信頼階層による信頼パス(trust path)を表している。公開鍵証明書は一般に自由に与えられ、自由に入手可能であるが、証明書チェーンの構築はコンピュータ使用上、高価なものになる可能性があり、したがって、新しいSWSKUがその証明書チェーンを表すために必要とする可能性のある任意のデジタル証明書を含めると、実行されたときに、新しいSWSKUが認証動作中にその証明書チェーンを迅速に提示することができ、それにより、認証動作がより効率的なものになる。
次にブロック1914中にオペレーティング・システム・インストール・アプリケーションは、現在処理中のオペレーティング・システム・モジュール内に、すなわち、除去されたスタブおよび空のモジュールの代わりに新しいSWSKUを組み込むことにより、図24のモジュール1814のうちの1つなどの完全に動作可能なモジュールを生成する。次にプロセスは、任意の未処理オペレーティング・システム・モジュールが存在するかどうかをチェックするためにブロック1902にループバックし、存在しない場合、プロセスが終了する。オペレーティング・システム・モジュールが処理されるにつれて、新たに生成されたSWSKUモジュールは、必要に応じて、変更されたオペレーティング・システム・モジュール内に取り込まれる。配備されたオペレーティング・システム・モジュールまたは新たに組み込まれたSWSKUモジュールあるいはその両方には、その認証性を示すために、SWSKU1810によりデジタル署名を行うこともできる。
このように、すべてのオペレーティング・システム・ファイルは、信頼関係を実現するための組み込み機能とともに認証動作を実行できるようになる。オペレーティング・システム・インストール手順中に、INSKD1806がデジタル証明書を発行するための認証局として動作するか、代わって、オペレーティング・システム・インストール・アプリケーション1808がモジュール1814のためのデジタル証明書を発行するための認証局として動作し、それぞれの証明書チェーンでは、モジュール1814内の各モジュールは、それ専用の秘密鍵および対応する公開鍵証明書と、INSKD1806の公開鍵証明書と、それが認証局として動作していたために必要であれば、オペレーティング・システム・インストール・アプリケーション1808の公開鍵証明書とを有する。したがって、各モジュールは、INSKD1806に基づく信頼階層を表明する証明書チェーンを有する。ランタイム環境では、モジュール1814内の第1のモジュールがモジュール1814内の第2のモジュールに対して認証しようと試みる場合、第1のモジュールは適切な所有証明、たとえば、対応する秘密鍵を使用して署名されたデジタル署名とともに、その証明書チェーンを第2のモジュールに提示することになり、第2のモジュールは第1のモジュールの証明書チェーンが基づいているINSKD1806を信頼しているので、第2のモジュールは第1のモジュールを認証し信頼することになる。モジュール1814内の各モジュールはINSKD1806を信頼しており、INSKD1806に関連する証明書チェーンを提示することができるので、各モジュールは残りの同様のモジュールを信頼することができ、それにより、図23に関して説明した信頼モデルを実現する。
次に図26に関連して説明すると、このブロック図は、本発明の一実施形態により、各プログラマチック・エンティティが内部スマート・キー・デバイスに基づいて信頼階層内に信頼関係を確立するための機能を含む、プロジェクト・コードを生成するためのデータ処理システムを描写している。図26は図5と同様のものであり、システム・ユニット2002は外部スマート・キー・デバイス2004とのインターフェースを取り、システム・ユニット2002は内部スマート・キー・デバイス2006も含む。
この例では、ソフトウェア構成管理(SCM:software configuration management)アプリケーション2008は、ソフトウェア・アプリケーションが作成される特定のプロジェクトに関するすべてのコード・モジュールおよびその他のタイプのファイルの管理を担当する。プロジェクト・ファイルがソフトウェア・エンジニアによって作成されると、プロジェクト・ファイルはSCMシステム内にチェックインされ、そのSCMシステムは、矛盾報告(discrepancy report)およびプロジェクト・タイムライン(project timeline)によりソース・コードのバージョンを追跡することができる。認証上の考慮事項の完全実現を顧慮せずにプロジェクト・モジュールの予備バージョンをテストし統合することができるように、エンジニアはプロジェクト・モジュールにスタブ・ルーチンまたは空のモジュールを取り込む。
しかし、顧客に配布可能であるかまたはその他の方法で実稼働環境内に配備可能な、いわゆる実稼働レベルのアプリケーションを生成する必要性が発生すると、SCMシステムは、スタブおよびからのモジュールを除去し、ソフトウェア・モジュールそのものである組み込みソフトウェア・スマート・キー・ユニットでそれらを置き換える。このため、最終コンパイルおよびリンク動作が行われる何らかの時点で、SCMアプリケーション2008内のSWSKU2010は、新たに生成された鍵ペアおよび対応するデジタル証明書を含むSWSKUモジュールとともに、非対称鍵ペアを生成する。プロジェクト・モジュール2012が処理されると、新たに生成されたSWSKUモジュールは、必要に応じて、プロジェクト・モジュール2014内にリンクされる。実稼働レベル・プロジェクト・モジュール2014または新たに組み込まれたSWSKUモジュールあるいはその両方には、それぞれの認証性を示すために、SWSKU2010によってデジタル署名を行うこともできる。
このように、認証動作を完了する能力を必要とするプロジェクト・アプリケーション内の各コンピューティング・リソースには、認証動作を実行できるソフトウェア・スマート・キー・ユニットを提供することができる。しかし、図26内に例示されているシナリオは、図24内に例示されているシナリオとは著しく異なっている。図24では、オペレーティング・システム・モジュール1814は、システム・ユニット1802上のオペレーティング・システム・インストール・アプリケーション1808によって変更される。好ましい一実施形態では、変更されたオペレーティング・システム・モジュール1808内のSWSKUに対して発行されたデジタル証明書は、システム・ユニット1802上のINSKD1806によって署名されている。
このため、変更されたオペレーティング・システム・モジュールがランタイム環境で実行される場合、変更されたオペレーティング・システム・モジュールに関するデジタル証明書を発行した認証局はランタイム環境の一部である。これは、図26に提示されているシナリオのケースではない。変更されたプロジェクト・モジュールがランタイム環境で実行される場合、変更されたプロジェクト・モジュールのSWSKU内に組み込まれたデジタル証明書は、プロジェクト・アプリケーションの実稼働バージョンが作成されたシステム・ユニットの内部スマート・キー・デバイスによって署名されている。換言すれば、変更されたプロジェクト・モジュールのSWSKUに対してデジタル証明書を発行した認証局はランタイム環境の一部ではない。変更されたプロジェクト・モジュールが他の変更されたプロジェクト・モジュールとの認証動作を完了しようと試みる場合、変更されたプロジェクト・モジュールのそれぞれはプロジェクト・アプリケーションの実稼働バージョンが作成されたシステム・ユニットの内部スマート・キー・デバイスを信頼しているので、認証動作を完了することができる。しかし、変更されたプロジェクト・モジュールがオペレーティング・システム・モジュール、たとえば、オペレーティング・システム・モジュール1814のうちの1つとの認証動作を完了しようと試みる場合、オペレーティング・システム・モジュールは、オペレーティング・システム・モジュールのデジタル証明書に関する認証局として動作した内部スマート・キー・デバイスを信頼していないので、認証動作は失敗に終わる。したがって、ランタイム環境で信頼関係を拡張するためのメカニズムが必要である。
次に図27に関連して説明すると、この流れ図は、本発明の一実施形態により、内部スマート・キー・デバイスに関する証明書チェーンを拡張するためのプロセスを描写している。上記の通り、ランタイム環境内で実行される何らかのモジュールは、ランタイム環境内に存在する内部スマート・キー・デバイスに基づく信頼関係を確立するための機能を有することができ、内部スマート・キー・デバイスはこれらのモジュールに関する認証局として動作しているので、これらのモジュールは、内部スマート・キー・デバイスが信頼階層のルートに位置するために容易に検証可能なデジタル証明書チェーンを提示することができる。本発明の内部スマート・キー・デバイスをサポートするランタイム環境内にアプリケーションがインストールされる場合、アプリケーション・モジュールは、アプリケーション・モジュール間の信頼関係を確立するための機能を有する可能性があるが、ルート認証局が異なるのでランタイム環境内の他のモジュールとの信頼関係を確立する能力は欠けている可能性があり、残りのモジュールはアプリケーション・モジュールによって提示されるデジタル証明書を信頼する能力を備えていない。
図27に関して以下に説明するプロセスは、アプリケーション・モジュールが信頼すべきものとしてそれらを確立できるようにするためのメカニズムを提供する。このプロセスは好ましくは、アプリケーション・モジュールが内部スマート・キー・デバイスを含むランタイム環境内でインストールされるときに実行されるが、ランタイム環境は、アプリケーション・モジュールがランタイム環境内で実行される前にいつでも変更することができる。しかし、この例では、アプリケーション・モジュールを変更する必要はない。したがって、以下に記載するプロセスは、オペレーティング・システム・モジュールの変更が必要であった図25に関して説明したプロセスとは異なっている。
このプロセスはブロック2102から始まり、そこで、内部スマート・キー・デバイスがインストール・アプリケーション内のソフトウェア・スマート・キー・ユニットから、または何らかの他の形式の管理ユーティリティ・アプリケーションから要求メッセージを受信し、その要求メッセージはフォーリン(foreign)内部スマート・キー・デバイスの、すなわち、ローカル・ランタイム環境の外側のルート・デジタル証明書を表明するための要求を示す。たとえば、管理ユーティリティ・アプリケーションは、すでにインストールされたかまたはローカル・ランタイム環境内でインストール中のアプリケーション・モジュールの実稼働バージョンに付随する構成ファイルにアクセスできる。これらの構成ファイルは、たとえば、図26に関して記載されたものと同様に、アプリケーション・モジュール内に組み込まれたソフトウェア・スマート・キー・ユニットに関するデジタル証明書を生成するためにフォーリン内部スマート・キー・デバイスによって使用されたデジタル証明書のコピーを含む。換言すれば、構成ファイルには、インストール中のアプリケーションを生産したベンダのランタイム環境のフォーリン内部スマート・キー・デバイスによって使用された公開鍵証明書のコピーが付随する可能性がある。フォーリン内部スマート・キー・デバイスのデジタル証明書を表明するための要求は、現行ランタイム環境の内部スマート・キー・デバイスが共通の信頼できるエンティティについてチェックする能力なしで行われ、各内部スマート・キー・デバイスはそれ専用の信頼階層内のルートの信頼できるエンティティとして動作するので、現行ランタイム環境の内部スマート・キー・デバイスとフォーリン内部スマート・キー・デバイスのための信頼の基礎を置くことができる共通の信頼できるエンティティが他にまったく存在しない。このため、デジタル証明書を表明するプロセスは、タスクを完了するための信頼性を提供する安全な手順でなければならない。
フォーリン内部スマート・キー・デバイスのデジタル証明書を表明するための動作の信頼性を保証するために、ブロック2104中に、要求側アプリケーションのソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスによって認証されているかどうかに関する判断が行われ、この判断は、たとえば、図13に関して上述した通り、前の認証手順中に内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットに渡したセッション・キーを使用して、受信メッセージの内容を正常に暗号化解除することによって実行することができる。ソフトウェア・スマート・キー・ユニットが認証されていない場合、内部スマート・キー・デバイスは、ブロック2106中に適切なエラー応答を生成し、ブロック2108中に応答メッセージを要求側ソフトウェア・スマート・キー・ユニットに返し、それにより、プロセスを終了する。
ソフトウェア・スマート・キー・ユニットが認証されている場合、ブロック2110中に、内部スマート・キー・デバイスは、外部スマート・キー・デバイスが依然としてシステム・ユニットに電気的に連結されているかどうかを判断する。このように、手順全体は、手順を実行する特権を有するシステム管理者の制御下にあると判断される。外部スマート・キー・デバイスがシステム・ユニットに電気的に連結されていない場合、内部スマート・キー・デバイスは、ブロック2106中にエラー応答を生成し、ブロック2108中に応答メッセージをソフトウェア・スマート・キー・ユニットに返し、それにより、プロセスを終了する。
ソフトウェア・スマート・キー・ユニットが認証されており、外部スマート・キー・デバイスが依然としてシステム・ユニットに電気的に連結されている場合、内部スマート・キー・デバイスはソフトウェア・スマート・キー・ユニットのために要求された機能を実行する。ブロック2112中に内部スマート・キー・デバイスは、信頼できるルート証明書のテーブルまたはリストにフォーリン内部スマート・キー・デバイスの表明されたルート証明書を追加し、そのテーブルまたはリストはおそらく前に表明された複数の証明書を含む。ブロック2114中に適切な応答メッセージが作成された後、ブロック2108で応答メッセージがソフトウェア・スマート・キー・ユニットに返され、プロセスが終了する。
次に図28に関連して説明すると、このブロック図は、本発明の一実施形態により、フォーリン内部スマート・キー・デバイスに関する複数のルート証明書を含む証明書チェーンを維持する単一のローカル内部スマート・キー・デバイスによって提供される信頼に基づく信頼関係から構築される信頼モデルの一例を描写している。図6およびその他の図に関して説明した通り、内部スマート・キー・デバイスは少なくとも1つの秘密鍵とそれに対応する公開鍵証明書とを所有し、同様に、図28は、デジタル証明書2204を含む内部スマート・キー・デバイス2202を図示している。図27に関して説明した通り、システム管理者が特定のランタイム環境の信頼階層に対して追加のルート証明書を表明することが必要である場合があり、図28は、デジタル証明書2206および2208が前に表明されており、その時点でその信頼できる証明書チェーンの一部として内部スマート・キー・デバイス2202内に保管されていることを図示している。
上記の通り、本発明の内部スマート・キー・デバイスをサポートするランタイム環境内にアプリケーション・モジュールがインストールされる場合、アプリケーション・モジュールは、アプリケーション・モジュール間の信頼関係を確立するための機能が提供されている可能性があるが、ルート認証局が異なるのでランタイム環境内の他のモジュールとの信頼関係を確立する能力は欠けている可能性がある。アプリケーション・モジュールは、異なる信頼階層内に存在する残りのモジュールとともに1つの信頼階層内に存在するものと見なすことができる。
この問題を克服するため、図27に関して記載したプロセスは、単一ランタイム環境内に複数の信頼階層を導入するためのメカニズムを例示している。この解決策については、図28に関してさらに例示する。デジタル証明書2206および2208を受け入れることにより、内部スマート・キー・デバイス2202は、受け入れられたデジタル証明書に関連するフォーリン内部スマート・キー・デバイスとの信頼関係2210および2212を暗黙のうちに形成する。このように、内部スマート・キー・デバイス2202は、ルート証明書2204、2206、および2208により、信頼階層2214、2216、および2218をそれぞれサポートする。ルート証明書2206および2208によって表されるフォーリン内部スマート・キー・デバイスによって署名されたアプリケーション・モジュールのデジタル証明書を妥当性検査するためにルート証明書2206および2208が使用可能である場合、ランタイム環境内の他のモジュールは、信頼階層同士に橋を架ける信頼関係2220および2222を形成することができる。
次に図29に関連して説明すると、この流れ図は、ローカル内部スマート・キー・デバイスによって維持される現行ルート証明書チェーンを入手するためのプロセスを描写している。図27は、ルート証明書をローカル・スマート・キー・デバイス内に保管することにより、システム管理者が特定のランタイム環境の信頼階層内にルート証明書を表明するためのプロセスを描写しており、図29は、ローカル内部スマート・キー・デバイスから現行ルート証明書チェーンを入手するためのプロセスを例示している。このプロセスはブロック2302から始まり、そこで、内部スマート・キー・デバイスがソフトウェア・スマート・キー・ユニットから要求メッセージを受信し、それにより、ローカル内部スマート・キー・デバイスによって維持されている現行ルート証明書チェーンを要求する。次にローカル内部スマート・キー・デバイスは、ブロック2304中に、現行ルート証明書チェーンを含む応答メッセージを要求側ソフトウェア・スマート・キー・ユニットに返し、プロセスが終了する。ローカル内部スマート・キー・デバイスは、要求側ソフトウェア・スマート・キー・ユニットが前にローカル内部スマート・キー・デバイスに対して認証したことを要求する可能性がある。システム管理者が外部スマート・キー・デバイスを使用して動作を使用可能にする場合にのみ実行される内部スマート・キー・デバイス内の動作を例示している図14〜図15または図27とは対照的に、図29に例示されているプロセスは外部スマート・キー・デバイスによる使用可能化を必要としない。
次に図30に関連して説明すると、この流れ図は、フォーリン内部スマート・キー・デバイスからのデジタル証明書が信頼すべきものであるかどうかを判断するためのプロセスを描写している。何らかの時点で、あるモジュールは、ランタイム環境内の他のモジュールによって制御されるコンピューティング・リソースへのアクセスを要求する。この2つのモジュールが前に相互認証動作を完了していないと想定すると、2つのモジュールは、たとえば、図10〜図11に関して説明した相互認証動作と同様の相互認証動作を完了しようと試みる。この例では、所望のコンピューティング・リソースを制御しているモジュールがローカル内部スマート・キー・デバイスに基づくローカル信頼階層内に含まれ、要求側モジュールがフォーリン内部スマート・キー・デバイスに基づく信頼階層内に含まれるものと想定することができるが、フォーリン内部スマート・キー・デバイスに関するルート証明書は前にローカル・スマート・キー・デバイス内に表明されている。
このプロセスはブロック2402から始まり、そこで、制御モジュールと要求側モジュールが認証動作を開始している。次に制御モジュールはブロック2404中に、要求側モジュールのデジタル証明書を入手するが、要求側モジュールから直接入手する可能性が最も高く、デジタル証明書からの公開鍵を使用して、要求側モジュールが公開鍵に対応する秘密鍵を所有しているかどうかを判断するが、これらのアクションは図30には図示されていない。
要求側モジュールのデジタル証明書上のデジタル署名の認証性を判断するために、制御モジュールはフォーリン内部スマート・キー・デバイスのデジタル証明書の信頼すべきコピーを要求し、それにより、デジタル署名を生成するために使用された秘密鍵に対応する公開鍵のコピーを提供する。要求側モジュールは要求側モジュールのデジタル証明書を発行したフォーリン内部スマート・キー・デバイスに関するデジタル証明書のコピーを所有し、それにより、要求側モジュールがフォーリン内部スマート・キー・デバイスのデジタル証明書のコピーを制御モジュールに提供できるようにしなければならないが、制御モジュールは、フォーリン内部スマート・キー・デバイスのデジタル証明書のコピーを入手するために独立した信頼すべき方法を必要とする。フォーリン内部スマート・キー・デバイスのデジタル証明書のコピーを入手しようとして、制御モジュールはブロック2406中に、ローカル内部スマート・キー・デバイスによって現在維持されているルート証明書チェーンを入手する。
次に制御モジュールはブロック2408中に、フォーリン内部スマート・キー・デバイスに関するルート証明書が検索されたルート証明書チェーン内にあることを検証する。前述の通り、図30に図示されている例では、フォーリン内部スマート・キー・デバイスに関するルート証明書が前にローカル・スマート・キー・デバイス内に表明されているものと想定することができる。このため、ブロック2406の結果、フォーリン内部スマート・キー・デバイスのデジタル証明書のコピーを含むルート証明書チェーンが返される。
次に制御モジュールはブロック2410で、要求側モジュールのデジタル証明書上のデジタル署名を検証することにより、要求側モジュールのデジタル証明書の認証性を検証し、プロセスが終了する。デジタル署名が検証されたものと想定して、制御モジュールは認証動作を続行することができる。
図31および図32に関して以下に本発明の他の実施形態を示すが、この実現例の例は、前に記載されている本発明の様々な態様に依存するものである。上述の通り、内部スマート・キー・デバイスなどのデータ処理システム内のハードウェア・セキュリティ・ユニットは認証局として機能することができる。図23に関して記載した通り、内部スマート・キー・デバイスの認証局機能は、データ処理システム内のコンピューティング・リソースが信頼関係階層内のエンティティである信頼モデルのルートとして見ることができる。信頼関係階層は、図23のように、内部スマート・キー・デバイスが逆ピラミッドの頂点にある逆ピラミッドによって表すことができ、コンピューティング・リソースがその逆ピラミッドを形成する。図24〜図26に関して記載した通り、ハードウェア・セキュリティ・ユニットの認証局機能は、ソフトウェア暗号モジュール、すなわち、ソフトウェア・セキュリティ・ユニットまたはソフトウェア・スマート・キー・ユニットに署名するために、ならびに、ソフトウェア暗号モジュールに対してデジタル証明書を発行するために使用することができる。簡単に前述した通り、コードの改ざんを防止するために、ソフトウェア暗号モジュールのソフトウェア・パッケージをシールすることができる。
次に図31に関連して説明すると、このデータフロー・ダイアグラムは、本発明の一実現例により、ソフトウェア・モジュールの保全性を確保するために使用可能なハードウェア支援信頼モデルを実現するデータ処理システム内のエンティティを例示している。図31について説明する前に、Java(登録商標)ランタイム環境内の具体的な例について説明する。コードの改ざんを防止するために、何らかの形のソフトウェア暗号ユニットを含むJava(登録商標)アプリケーションのクラス・ファイルをシールした後、クラス・ローダによってプログラムの保全性が強制される。クラス・ローダを信頼できることを保証するために、クラス・ローダは署名され、シールも行われる必要がある。クラス・ローダの保全性を保証するために、クラス・ローダをロードするローダ、すなわち、オペレーティング・システム・プログラム・ローダは、何らかの方法で署名されシールされる必要がある。オペレーティング・システム・プログラム・ローダの保全性を保証するために、オペレーティング・システム・プログラム・ローダをロードするローダ、すなわち、データ処理システムのROM内のブート・ローダは、署名されシールされる必要がある。
より汎用的な非Java(登録商標)環境に関して説明すると、コードの改ざんを防止するためにソフトウェア暗号モジュールのソフトウェア・パッケージがシールされた後、オペレーティング・システム・プログラム・ローダによってプログラムの保全性が強制される。オペレーティング・システム・プログラム・ローダを信頼できることを保証するために、オペレーティング・システム・プログラム・ローダは署名され、シールも行われる必要がある。オペレーティング・システム・プログラム・ローダの保全性を保証するために、オペレーティング・システム・プログラム・ローダをロードするローダ、すなわち、システムROM内のブート・ローダは、署名され、シールも行われる必要がある。これらの要件および動作は図31に反映されている。
ブートROM2502は内部スマート・キー・デバイス2504の秘密鍵によって署名されており、これは、製造プロセス中、フラッシュ・メモリ更新を使用してブートROMが構成されるサイト固有のインストール手順中、または何らかの他の方法で、行われる可能性がある。その後、ブートROM2502は内部スマート・キー・デバイス2504との相互認証手順を実行することができ、それにより、ブートROM2502と内部スマート・キー・デバイス2504との間の信頼関係を作成する。
また、オペレーティング・システム・プログラム・ローダ2506も内部スマート・キー・デバイス2504の秘密鍵によって署名されており、これは、図24および図25に関して記載されているプロセスにより行われる可能性がある。ブートROM2502は、内部スマート・キー・デバイス2504からの援助によってオペレーティング・システム・プログラム・ローダ2506のシールされたプログラム・モジュール(複数も可)上の署名を妥当性検査することにより、オペレーティング・システム・プログラム・ローダ2506の保全性を保証することができ、この内部スマート・キー・デバイス2504は、相互認証手順の完了によりブートROM2502との信頼関係をすでに確立しているのでブートROM2502を支援する。その後、オペレーティング・システム・プログラム・ローダ2506は、内部スマート・キー・デバイス2504との相互認証手順を実行することができ、それにより、オペレーティング・システム・プログラム・ローダ2506と内部スマート・キー・デバイス2504との間の信頼関係を作成する。
アプリケーション・モジュール2508は、内部スマート・キー・デバイス2504の秘密鍵によるかまたはルート認証局として動作する内部スマート・キー・デバイス2504とともに認証局として動作するオペレーティング・システム内のソフトウェア暗号ユニットによって署名されており、これは、図26に関して記載されているプロセスにより行われる可能性がある。オペレーティング・システム・プログラム・ローダ2506は、内部スマート・キー・デバイス2504からの援助によってシールされたアプリケーション・プログラム・モジュール上の署名を妥当性検査することにより、アプリケーション・モジュール2508の保全性を保証することができ、この内部スマート・キー・デバイス2504は、相互認証手順の完了によりオペレーティング・システム・プログラム・ローダ2506との信頼関係をすでに確立しているのでオペレーティング・システム・プログラム・ローダ2506を支援する。その後、アプリケーション・モジュール2508は、必要に応じて信頼関係を確立するために、内部スマート・キー・デバイス2504、オペレーティング・システム・モジュール2510、またはその他のアプリケーション・モジュール2512との相互認証手順を実行することができる。
次に図32に関連して説明すると、この流れ図は、本発明の一実現例により、ソフトウェア・モジュールの保全性を確保するためのプロセスを例示している。このプロセスはブロック2602から始まり、そこで、データ処理システムの始動中に、データ処理システム内のハードウェア回路がデータ処理システム内の内部スマート・キー・ユニットの援助によりブートROM上のデジタル署名を妥当性検査する。ブートROM上のデジタル署名が正常に妥当性検査されたと想定して、ブロック2604中にデータ処理システム上の始動ハードウェアがデータ処理システムのブートROMを起動し、それにより、内部スマート・キー・デバイスがそれを妥当性検査するまでブートROMが多くのタイプの動作を実行するのを防止するか、または代替実現例では、内部スマート・キー・デバイスがそれを妥当性検査するまでブートROMが任意の動作を実行するのを防止する。
その後の何らかの時点で、おそらく依然としてデータ処理システムの始動手順中に、ブートROMはブロック2606中に、データ処理システムをさらに初期設定するために必要な署名/シールされたオペレーティング・システム・モジュール(複数も可)上のデジタル署名(複数も可)を検証する。ブートROMがオペレーティング・システム・モジュール(複数も可)上のデジタル署名(複数も可)を妥当性検査できると想定して、ブートROMは、ブロック2608中にオペレーティング・システム・モジュール(複数も可)をロードし、ブロック2610中に実行制御をオペレーティング・システム・モジュール(複数も可)に渡す。
その後の何らかの時点で、ブロック2612中に、オペレーティング・システム内のプログラム・ローダは、たとえば、データ処理システムのユーザによる要求に応答して、データ処理システム上で呼び出されている署名/シールされたアプリケーション・モジュール(複数も可)上のデジタル署名を検証する。プログラム・ローダがアプリケーション・モジュール(複数も可)上のデジタル署名(複数も可)を妥当性検査できると想定して、プログラム・ローダは、ブロック2614中にアプリケーション・モジュール(複数も可)をロードし、ブロック2616中に実行制御をアプリケーション・モジュール(複数も可)に渡し、それにより、プロセスを終了する。このように、本発明はデータ処理システム上で実行されるすべてのソフトウェア・モジュールの保全性を確保するために使用することができ、データ処理システム上で実行されるすべてのソフトウェアには、内部スマート・キー・デバイスによるか、または内部スマート・キー・デバイスによって信頼されるソフトウェア認証局モジュールによる署名が行われなければならない。この信頼関係は、ソフトウェア認証局モジュールと内部スマート・キー・デバイスとの間の相互認証により、さらに内部スマート・キー・デバイス内の信頼できる証明書のリスト内にソフトウェア認証局モジュールの証明書を追加するための構成プロセスにより確立される。図31に関して部分的に記載され、これまでの図に関してより詳細に記載されている通り、それぞれのエンティティ内に前に組み込まれているデジタル証明書を使用する相互認証手順によりソフトウェア実行中に適切な信頼関係が確立される。
次に図33に関連して説明すると、このブロック図は、本発明の一実施形態により、データ処理システム内のハードウェア・セキュリティ・ユニット内で暗号機能を使用可能にするために取り外し可能記憶媒体を受け入れるデータ処理システムの一部分を描写している。本発明は、スマート・キー・デバイスとともに、コンパクト・ディスク(CD:compact disk)、デジタル多目的またはビデオ・ディスク(DVD:digital versatile or video disk)、あるいは磁気テープなどであるが、これらに限定されない取り外し可能記憶媒体を使用し、これらはいずれも暗号鍵を保持するものである。この暗号鍵は暗号化機能を使用可能にするために使用される。システム・ユニット2702は、システム・ユニット2702内に取り付けられ、CD2712を読み取ることができる媒体読取装置、この例ではCD装置2704とのインターフェースを取る。上記で説明した通り、現在使用可能であり、まだ開発予定である様々なタイプのCD、DVD、および磁気テープ装置のいずれかなどであるが、これらに限定されないその他のタイプの媒体読取装置および対応する媒体を使用することができる。CD装置2704は多くの可能な構成の1つにおいてシステム・ユニット2702に結合することができ、これは当業者にとって明白であるはずである。たとえば、CD読取装置は、システム・ユニット2702の外部または内部に取り付けることができる。
システム・ユニット2702は、ホスト・システム2702の一体部分である、すなわち、マザーボード(図示せず)上など、システム2702内に取り付けられている内部スマート・キー・デバイス(INSKD)2706を含む。内部スマート・キー・デバイス2706は、好ましくは、ホスト・システムから取り外しにくい、パッケージ化された集積回路である。これは、ハードウェア・セキュリティ・ユニットまたはデバイスとして記述される場合もあれば、命令を実行するための処理装置を有する場合もある。この例では、CD2712がINSKD2706の機能を使用可能にするように、CD2712とINSKD2706が対になっている。CD2712は、システム管理担当者、たとえば、IT管理者によって物理的に固定される。IT管理者が、ホスト・マシン上の突き合わせデバイス、すなわち、INSKD2706によってのみ実行可能な特定の暗号機能を使用可能にする必要があるときに、CD2712は、システム・ユニット2702などのホスト・マシンに結合されたCD装置2704に挿入される。換言すれば、特定の暗号機能は、CD2712がCD装置2704に挿入されたときに使用可能になる。INSKD2706のみが特定の暗号出力を生成するための1つまたは複数の特定の暗号秘密鍵を含んでいるので、IT管理者が必要とする結果は、INSKD2706のみによって生成することができる。
システム・ユニット2702上のアプリケーション2708は、CD2712およびINSKD2706に類似しているソフトウェア・スマート・キー・ユニット(SWSKU)2710を有する。アプリケーション2708はSWSKU2710を使用して特定の機能を実行するが、この機能については以下により詳細に説明する。また、システム・ユニット2702は、CD装置2704の動作を制御するロジックであるCDデバイス・ドライバ2714も含む。CDデバイス・ドライバ2714の標準的な非暗号機能は当業者が精通しているはずである。INSKD2706、アプリケーション2708、SWSKU2710、およびCDデバイス・ドライバ2714については図35に併せて以下により詳細に説明する。
図34に関連して説明すると、このブロック図は、内部スマート・キー・デバイス内の暗号機能を使用可能にする取り外し可能記憶媒体を描写している。この例の取り外し可能記憶媒体はCD2712(図33)である。CD2712は、暗号エンジン2810、CD秘密鍵2812、内部スマート・キー・デバイス(INSKD)公開鍵2814、それ自体がCD公開鍵2818を含むCD公開鍵証明書2816、およびデジタル署名2820のための記憶域を含む。暗号エンジン2810、CD秘密鍵2812、INSKD公開鍵2814、CD公開鍵証明書2816、CD公開鍵2818、およびデジタル署名2820については図35に併せて以下により詳細に説明する。INSKD公開鍵2814は、図35に併せて後述するINSKD公開鍵2930のコピーである。CD2712などのCDは複製することができるので、システムのセキュリティはCD2712の安全な保管次第であり、すなわち、CD2712が複製されるのを防止するためにCD2712は安全な場所に保管しなければならない。
一実施形態では、CD装置2704(図33)は、CD2712から読み取り、CD2712に書き込む。その場合、CD2712上に含まれる情報は、システム・ユニット2702およびCD装置2704を使用して、システム管理者がCD2712に書き込むことができる。代替例では、CD装置2704はCD2712を読み取ることしかできない。この場合、CD2712は、CD2712を使用してINSKD2706(図33)の暗号機能を使用可能にする前に、別個の装置(図示せず)を使用してシステム管理者によって1回、構成される。
次に図35に関連して説明すると、このブロック図は、図33のシステム・ユニット2702をより詳細に描写している。図33に併せて上記で説明した通り、システム・ユニット2702は、本発明の一実施形態により、INSKD2706内の暗号機能を使用可能にするために媒体読取装置またはCD装置2704(図33)とともにCD2712(図33)を使用するINSKD2706(図33)を含む。図35は、図35が様々なコンポーネントおよびそのコンポーネント内に保管される暗号鍵に関する追加の詳細を含むことを除き、図33と同様のものである。
図33に併せて上記で説明した通り、デバイス・ドライバによって制御された媒体読取装置は、CD、DVD、磁気テープ媒体、または任意のその他の外部記憶媒体などの外部記憶媒体を読み取り、おそらくそれに書き込む。この例では、CD装置2704は、CDデバイス・ドライバ2714(図33)の制御下で、CD2712から読み取り、そこに書き込む。CD2712は、システム管理者によって制御され、ハードウェア・セキュリティ・トークンとして動作する。CD2712はCD読取装置2704に挿入可能であり、CD読取装置2704はCD2712がシステム・ユニット2702に結合できるようにする。CD2712およびCD読取装置2704は、デジタル情報を表す電気信号を交換するために、CDデバイス・ドライバ2714を介してシステム・ユニット2702と連結し、通信する。CD2712の論理図については、図34に併せて上述されている。
INSKD2706は、INSKD2706内に保管されている様々なデータ項目を使用して暗号機能を実行するための暗号エンジン2924を含む。INSKD秘密鍵2926は、INSKD2706の外部にあるエンティティによって読み取りまたはアクセスを行えないように保管されている。INSKD2706は、INSKD秘密鍵2926のコピーを伝送するかまたはその他の方法で提供するための機能を含んでいない。INSKD公開鍵証明書2928は、非対称暗号鍵ペアとしてINSKD秘密鍵2926に対応するINSKD公開鍵2930のコピーを含む。また、INSKD2706は、CD公開鍵証明書2932のコピーも含み、その証明書自体は、CD公開鍵2933のコピーを含む。CD公開鍵2933はCD公開鍵2818(図34)のコピーであり、いずれも非対称暗号鍵ペアとしてCD秘密鍵2812(図34)に対応する。CD公開鍵証明書2932は、その製造または初期設定プロセスの一部としてINSKD2706に書き込むことができる。
また、INSKD2706は、CDD公開鍵証明書2934のコピーも含み、その証明書自体は、CDD公開鍵2935のコピーを含む。CDD公開鍵2935はCDD公開鍵2988のコピーであり、これは非対称暗号鍵ペアとしてCDD秘密鍵2996に対応する。CDD公開鍵証明書2934は、その製造または初期設定プロセスの一部としてINSKD2706に書き込むことができる。
代替諸実施形態では、INSKD秘密鍵2926およびINSKD公開鍵2930を複数の機能に使用することができる。図35に図示されている一実施形態では、INSKD秘密鍵2926およびINSKD公開鍵2930はINSKD2706とCDデバイス・ドライバ2714との間ならびにINSKD2706とCD2712との間の通信のために予約されており、INSKD2706は1つまたは複数の他の暗号鍵ペアを他の機能に使用する。この例では、INSKD2706と、アプリケーション2708(図33)内のソフトウェア・スマート・キー・ユニット(SWSKU)2710(図33)との間の通信を保護するために、INSKD2706によってINSKD_SW秘密鍵2936が使用される。INSKD_SW公開鍵証明書2942は、非対称暗号鍵ペアとしてINSKD_SW秘密鍵2936に対応するINSKD_SW公開鍵2944のコピーを含む。この例では単一のSWSKU2710を示しているが、複数のSWSKUも可能である。その場合、各SWSKUは、INSKD_SW秘密鍵2936に対応する、それ専用の秘密鍵を有することになるであろう。また、INSKD2706は、SWSKU公開鍵証明書2946のコピーも含み、その証明書自体は、非対称暗号鍵ペアとしてSWSKU2710内のSWSKU秘密鍵2950に対応するSWSKU公開鍵2948のコピーを含む。
システム・ユニット2702は、SWSKU2710を含むアプリケーション2708の実行をサポートし、そのSWSKU自体は、ソフトウェア・スマート・キー・ユニット2710内に保管されている様々なデータ項目を使用して暗号機能を実行するための暗号エンジン2952を含む。SWSKU公開鍵証明書2954は、非対称暗号鍵ペアとしてSWSKU秘密鍵2950に対応するSWSKU公開鍵2956のコピーを含む。また、SWSKU2710は、INSKD_SW公開鍵証明書2958のコピーも含み、その証明書自体は、非対称暗号鍵ペアとしてINSKD_SW秘密鍵2936に対応するINSKD_SW公開鍵2944のコピーを含む。以下により詳細に説明する通り、SWSKU2710にはデジタル署名を行うことができる。図35に図示されている例では、SWSKU2710は、INSKD_SW秘密鍵2936を使用してSWSKU2710について計算されたデジタル署名2962を含む。換言すれば、INSKD2706は、INSKD_SW秘密鍵2936を使用してSWSKU2710にデジタル署名を行う。前述の通り、典型的には、アプリケーションの各インスタンスごとに異なるINSKD_SW秘密鍵2936が存在することになり、種々のアプリケーションが種々のINSKD_SWを有することになるであろう。
CDデバイス・ドライバ2714(図33)はCDドライバ・スマート・キー・ユニット(CDDSKU:CD driver smart key unit)2982を含む。CDDSKU2982は、CD2712およびCDDSKU2982内に保管されている様々なデータ項目を使用して暗号機能を実行するための暗号エンジン2984を含む。この代替例では、暗号エンジン2924を使用するか、あるいはCD2712上に保管されている暗号エンジン2810(図34)をダウンロードして使用することができる。CD2712、CDデバイス・ドライバ2714、およびそこに保管されている鍵は読み取ることができるが、鍵は、本明細書の複数の例で上述した通り、SWSKU2710を保護するために使用されるプロセスと同様に、INSKD2706の署名および検証プロセスにより保護される。CDDSKU公開鍵証明書2986は、非対称暗号鍵ペアとしてCDD秘密鍵2996に対応するCDD公開鍵2988を使用する。
CDDSKU2982は、INSKD秘密鍵2926を使用してCDDSKU2982について計算されたデジタル署名2990を含む。換言すれば、INSKD2706は、INSKD秘密鍵2926およびCDD秘密鍵2996を使用してCDDSKU2982にデジタル署名を行う。このプロセスはCDデバイス・ドライバ2714を認証するものである。
次に図36に関連して説明すると、この流れ図は、ホスト・システムの内部スマート・キー・デバイスの暗号機能を使用可能にするためのプロセスの概要を描写している。このプロセスはブロック3002から始まり、そこで、CDまたはその他の取り外し可能記憶媒体が互換性のある媒体読取装置に連結される。ブロック3004中に、媒体読取装置は内部スマート・キー・デバイスを含むシステム・ユニットに電気的に連結され、CDまたはその他の取り外し可能記憶媒体は媒体読取装置に連結される。たとえば、IT管理者は、CD装置2704(図33および図35)内にCD2712(図33および図34)を挿入し、それにより、CD2704をシステム・ユニット2702(図33および図35)およびINSKD2706(図33および図35)などの互換性のある装置に結合することができる。ブロック3006中に、INSKD2706およびCD2712ならびにINSKD2706およびCDデバイス・ドライバ2714(図33および図35)は相互認証手順を実行する。この相互認証手順は、INSKD秘密鍵2926に基づいてINSKD2706がデジタル署名2990(図35)を妥当性検査することと、同じくINSKD秘密鍵2926に基づいてINSKD2706がデジタル署名2820(図34)を妥当性検査することを含む。この代替例では、INSKD2706は、CD2712およびCDデバイス・ドライバ2714の認証のために異なる秘密鍵を使用できるであろう。この妥当性検査は、CD2712とCDデバイス・ドライバ2714の両方の認証性を保証するものである。次にブロック3008中に、INSKD2706が暗号化を実行できるようになり、プロセスが終了する。
相互認証手順にエラーがあれば、その結果、INSKD2706が相互認証プロセスに失敗した装置またはソフトウェアにデジタル署名を行うのを防止するものと想定することができる。換言すれば、CD2712がなければ、INSKD2706は新しいソフトウェアに署名することができず、したがって、システム2702上のソフトウェアの変更またはインストールを防止する。すでにインストールされているソフトウェアは正常に実行することができ、INSKD2706はデジタル署名妥当性検査、暗号化解除、および暗号化のサービスを提供することができる。あまり制限的ではない一実施形態では、ホスト・システム上で実行される任意のアプリケーションによってINSKD2706の暗号機能を呼び出すことができる。より制限的な一実施形態では、SWSKU2710(図33および図35)などのソフトウェア・スマート・キー・ユニットを含むアプリケーションのみによってINSKD2706の暗号機能を呼び出すことができる。
次に図37に関連して説明すると、この流れ図は、本発明の一実施形態により、特定のCDスマート・キー・ユニットによって使用するためのホスト・システムの内部スマート・キー・デバイスの暗号機能を使用可能にするためのプロセスを描写している。このプロセスはブロック3102から始まり、そこで、CDDSKUなどのCDドライバ・スマート・キー・ユニットを含むCDデバイス・ドライバ2714(図33および図35)が、たとえば、アプリケーション・プログラミング・インターフェース(API)により、INSKD2706(図33および図35)の認証手順を呼び出す。INSKD2706または代替システム・ソフトウェア(図示せず)は、デジタル署名2990(図35)が確かにINSKD秘密鍵2926(図35)によって署名されていることを検証するために、INSKD公開鍵2930(図35)を使用する。この妥当性検査プロセスは、CDDSKU2982の相互認証鍵が他のアプリケーションまたは装置によって強奪されていないことを保証するものである。
ブロック3104中にINSKD2706はCDDSKU2982に関する暗号機能を実行できるようになる。ブロック3106中にCDDSKU2982はINSKD2706の暗号機能を呼び出し、プロセスが終了する。CDDSKU2982に加えて、ホスト・システム上の複数のソフトウェア・スマート・キー・ユニットが内部スマート・キー・デバイスとの相互認証手順を完了したものと想定すると、INSKD2706は同時に、CDDSKU2982および複数のソフトウェア・スマート・キー・ユニットに代わって暗号機能を実行できるようになる可能性がある。
CD2712がCD装置2704(図33および図35)と、したがってINSKD2706を含むシステム・ユニット2702とに連結されたままである間に、INSKD2706は、認証局として動作するための、すなわち、新しい公開証明書を生成するための機能を提供できるようになる。一実施形態では、CD2712は、新しいソフトウェア・パッケージをインストールするときにCD装置2704およびシステム・ユニット2702に連結されているはずである。INSKD2706は、新しいソフトウェアに相互認証証明書を発行し、鍵とともにソフトウェアに署名しシールする。新しいソフトウェアに署名した後、CD2712を取り外すことができ、署名されたソフトウェアは、INSKD2706の暗号機能を始動し使用し続けることができる。
ソフトウェア・インストール中に新しいソフトウェア・パッケージに新しい公開証明書を発行することができ、新たに発行されたデジタル証明書内の公開鍵に対応する秘密鍵はソフトウェア・パッケージ内に組み込むことができ、内部スマート・キー・デバイスによってソフトウェア・パッケージに署名させることにより、秘密鍵を保護することができる。さらに、Java(登録商標)環境では、悪意のあるユーザが秘密鍵を改ざんするのを防止するために、秘密鍵が組み込まれているJARファイルおよびJava(登録商標)パッケージをさらにシールすることができる。
次に図38に関連して説明すると、この流れ図は、本発明の一実施形態により、ホスト・システムの内部スマート・キー・デバイスの暗号機能を使用不可にするためのプロセスを描写している。このプロセスはブロック3202から始まり、そこで、CD2712(図33および図34)がCD装置2704から取り外され、したがって、INSKD2706(図33および図35)を含むシステム・ユニット2702(図33および図35)からCD2712を切り離す。ブロック3204中にシステム・ユニット2702がCD2712の分離を検出すると、INSKD2706は、さらにデジタル署名を実行するか、鍵を発行するか、または証明を実行することができない状態になり、プロセスが終了する。署名の妥当性検査、暗号化、および暗号化解除サービスなどの他の暗号機能は、INSKD2706により実行し続けられることに留意されたい。
図38に図示されているプロセスは、図36または図37に図示されているプロセスのいずれかに対する補足的なプロセスとして機能する。しかし、INSKD2706は、この代替例では、本発明の実現例次第で、完全に使用不可にならないようないくつかの機能を実行し続ける可能性があることに留意されたい。また、図10、図11、図12、図13、図14、図15、図25〜図32に併せて上述した内部スマート・キー・デバイスおよび外部スマート・キー・デバイスに関連するプロセスは、図33〜図38に併せて上述した取り外し可能記憶媒体セキュリティ・システムの暗号機能にも適用可能であることにも留意されたい。さらに、CDデバイス・ドライバ2714はシステム・ユニット2702上で実行されるソフトウェアであるので、ソフトウェアに関して本明細書に記載されているセキュリティ機能はCDデバイス・ドライバ2714に等しく適用可能である。簡単にするために、CDDSKU2982およびCD2712に関して図10、図11、図12、図13、図14、図15、図25〜図32に対応する図は複製されていない。
内部スマート・キー・デバイス内の暗号機能は、ソフトウェアまたはハードウェアにより使用可能または使用不可にすることができるものと想定することができる。たとえば、ハードウェア・モードでは、外部スマート・キー・デバイスが受け入れられているかどうかを表す使用可能化状態に基づいて設定またはクリアしなければならない特定のフリップフロップまたはその他のメカニズムにより、内部スマート・キー・デバイス内の特定の回路の動作が動作可能状態に入ることを防止できる可能性があり、ソフトウェア・モードでは、暗号機能の実行を論理的に制御する特殊な使用可能化フラグを設定しクリアすることにより、特定の暗号機能の動作を保護することができる。
本発明の利点は、上記で示されている詳細な説明を考慮して明らかになるはずである。本発明は、システム管理者がハードウェア・セキュリティ・トークンによりそれを物理的に可能にするときにのみ使用可能になるように、ホスト・システム内の暗号機能を保護するためのメカニズムを提供する。加えて、ハードウェア・セキュリティ・ユニットはデータ処理システム内に統合され、ハードウェア・セキュリティ・ユニットはハードウェア認証局として動作する。ハードウェア・セキュリティ・ユニットは、分散データ処理システム内の信頼階層または信頼フレームワークをサポートするものと見なすことができる。ハードウェア・セキュリティ・ユニットは、ハードウェア・セキュリティ・ユニットを含むマシン上にインストールされたソフトウェアに署名することができる。マシン上で実行される署名付きソフトウェアを使用するサーバ・プロセスは、ハードウェア・セキュリティ・ユニットとの相互信頼関係ならびにハードウェア・セキュリティ・ユニットに対するそれぞれの共通する信頼に基づく他のサーバ・プロセス間の相互信頼関係を確立することができる。
本発明は完全に機能するデータ処理システムに関連して説明されているが、当業者であれば、分散を実行するために実際に使用される特定のタイプの信号伝送媒体にかかわらず、コンピュータ可読媒体内の命令の形および様々な他の形で本発明のプロセスを分散可能であることが分かることは、留意すべき重要なことである。コンピュータ可読媒体の例としては、EPROM、ROM、テープ、紙、フレキシブル・ディスク、ハード・ディスク・ドライブ、RAM、およびCD−ROMなどの媒体と、デジタルおよびアナログ通信リンクなどの伝送タイプの媒体とを含む。
方法は、一般に、所望の結果に至る首尾一貫した一連のアクションであると考えられている。このようなアクションは、物理量の物理的操作を必要とする。通常、これらの量は、保管、転送、結合、比較、およびその他の操作が可能な電気信号または磁気信号の形を取るが、必ずしもそうであるわけではない。時には、主に一般的使用法の理由により、これらの信号をビット、値、パラメータ、項目、要素、オブジェクト、記号、文字、項、数などと呼ぶことは便利なことである。しかし、これらの用語および同様の用語はいずれも、適切な物理量に関連付けられるものであり、これらの量に適用される便利なラベルに過ぎないことに留意されたい。
本発明の説明は、例示のために提示されているが、網羅するためのものでも、開示された諸実施形態に限定されるものでもない。当業者には多くの変更例および変形例が明らかになるであろう。諸実施形態は、他の企図された用途に適している可能性のある様々な変更により様々な諸実施形態を実現するために、本発明の原理およびその実用的な適用例を説明し、他の当業者が本発明を理解できるようにするために選択されている。
疑いを回避するために、この説明および特許請求の範囲で使用する「有する(comprising)」という用語は、「のみで構成される(consisting only of)」という意味として解釈すべきではない。