(57)【特許請求の範囲】
【請求項１】
相互認証機構を必要とせずに暗号化キーにアクセスする方法であって、前記方法は、
コンピュータシステム上の処理ユニットが、暗号化キーにアクセスする指示を受信するステップと、
前記処理ユニットが、ＵＳＢ互換記憶装置を検索するステップであって、前記ＵＳＢ互換記憶装置は、当該ＵＳＢ互換記憶装置上のキーコンテナ内に格納された第１の暗号化キーを有し、当該検索は、前記キーコンテナを求めて、暗号化プログラミングインターフェースを介してＵＳＢ互換記憶装置のインデックスを検索することを含む、ステップと、
前記ＵＳＢ互換記憶装置が発見された場合は、前記処理ユニットが、所定の暗号化プロセスを使用して、前記ＵＳＢ互換記憶装置から前記第１の暗号化キーを取り出すステップであって、前記コンピュータシステム上のオペレーティングシステムにより実行される任意のユーザアプリケーションは、前記所定の暗号化プロセスを介してのみ、前記第１の暗号化キーにアクセスすることができる、ステップと、
を含むことを特徴とする方法。
【請求項２】
前記ＵＳＢ互換記憶装置が発見されない場合は、
前記処理ユニットが、前記ＵＳＢ互換記憶装置を提供するためのプロンプトをレンダリングするステップと、
前記処理ユニットが、前記ＵＳＢ互換記憶装置が提供されたどうかを判定するステップと、
前記ＵＳＢ互換記憶装置が提供された場合は、前記処理ユニットが、前記ＵＳＢ互換記憶装置上の前記第１の暗号化キーにアクセスするステップと、
前記ＵＳＢ互換記憶装置が提供されない場合は、前記処理ユニットが、前記コンピュータシステムのメモリ内の第２の暗号化キーにアクセスするステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の暗号化キーは取り出された後、前記コンピュータシステムの保護された実行環境内で隔離されていることを特徴とする請求項１に記載の方法。
【請求項４】
相互認証機構を必要としないＵＳＢ互換記憶装置上に暗号化キーを実装するコンピュータシステムであって、
前記暗号化キーにアクセスするために前記ＵＳＢ互換記憶装置と通信するように構成された入力／出力部と、
オペレーティングシステムを介して任意のユーザプログラムを実行し、前記暗号化キーにアクセスする指示を受信し、キーコンテナ内に格納された第１の暗号化キーを有する前記ＵＳＢ互換記憶装置を検索するように構成された処理部と
を備え、
前記処理部は、前記指示を所定の暗号化プロセスに送信し、前記第１の暗号化キーを有する前記ＵＳＢ互換記憶装置の前記キーコンテナを求めて、暗号化プログラミングインターフェースを介して前記ＵＳＢ互換記憶装置のインデックスを検索するように構成され、前記ＵＳＢ互換記憶装置が発見された場合は、前記所定の暗号化プロセスを使用して、前記ＵＳＢ互換記憶装置上の前記第１の暗号化キーにアクセスするように構成され、前記任意のユーザプログラムは、所定の暗号化プロセスを介してのみ、前記ＵＳＢ互換記憶装置内の前記第１の暗号化キーにアクセスすることができることを特徴とするコンピュータシステム。
【請求項５】
前記コンピュータシステムは、メモリ部をさらに備え、前記処理部は、
前記ＵＳＢ互換記憶装置が発見されない場合は、
前記ＵＳＢ互換記憶装置を提供するためのプロンプトをレンダリングし、
前記ＵＳＢ互換記憶装置が提供されたかを判定し、
前記ＵＳＢ互換記憶装置が提供された場合は、前記暗号化プログラミングインターフェースを介して前記ＵＳＢ互換記憶装置上の前記第１の暗号化キーにアクセスし、
前記ＵＳＢ互換記憶装置が提供されない場合は、前記メモリ部内の第２の暗号化キーにアクセスする
ようにさらに構成されることを特徴とする請求項４に記載のコンピュータシステム。
【請求項６】
相互認証機構を必要とせずにＵＳＢ互換記憶装置上の暗号化キーにアクセスする方法をコンピュータシステムに実行させるコンピュータ実行可能命令を格納しているコンピュータ可読記憶媒体であって、前記方法は、
前記コンピュータシステムの処理ユニットにより、暗号化キーにアクセスする指示を受信するステップと、
前記処理ユニットにより、暗号化プログラミングインターフェースを使用して、キーコンテナ内に第１の暗号化キーを有する前記ＵＳＢ互換記憶装置を検索するステップであって、当該検索は、前記キーコンテナを求めて、暗号化プログラミングインターフェースを介してＵＳＢ互換記憶装置のインデックスを検索することを含む、ステップと、
前記ＵＳＢ互換記憶装置が発見された場合は、前記処理ユニットにより、所定の暗号化プロセスを使用して、前記ＵＳＢ互換記憶装置から前記第１の暗号化キーを取り出すステップであって、前記コンピュータシステム上のオペレーティングシステムにより実行される任意のユーザアプリケーションは、前記所定の暗号化プロセスを介してのみ、前記第１の暗号化キーにアクセスすることができる、ステップと
を含むことを特徴とするコンピュータ可読記憶媒体。
【請求項７】
前記方法は、さらに、
前記ＵＳＢ互換記憶装置が発見されない場合は、
前記処理ユニットが、前記ＵＳＢ互換記憶装置を提供するためのプロンプトをレンダリングするステップと、
前記処理ユニットが、前記ＵＳＢ互換記憶装置が提供されたかを判定するステップと、
前記ＵＳＢ互換記憶装置が提供された場合は、前記処理ユニットが、前記ＵＳＢ互換記憶装置上の前記第１の暗号化キーにアクセスするステップと、
前記ＵＳＢ互換記憶装置が提供されない場合は、前記処理ユニットが、前記コンピュータシステムのメモリ内の第２の暗号化キーにアクセスするステップと
を含むことを特徴とする請求項６に記載のコンピュータ可読記憶媒体。
【請求項８】
前記処理ユニットが、レジストリ値に基づいて新しい暗号化キーを生成するステップをさらに含み、前記レジストリ値は、前記新しい暗号化キーがどのように生成されるかを示すものであることを特徴とする請求項１に記載の方法。
【請求項９】
前記レジストリ値は、前記新しい暗号化キーが、特定のＵＳＢ互換記憶媒体上にのみ生成されるか、または前記コンピュータシステム上にのみ生成されるかを示すものであることを特徴とする請求項８に記載の方法。
【請求項１０】
前記検索するステップは、前記ＵＳＢ互換記憶装置上のパスを検索することを含むことを特徴とする請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、広くはコンピューター処理に関し、さらに具体的にはコンピューターセキュリティに関する。
【背景技術】
【０００２】
暗号化によってデータを保護することは、珍しくない。一般的には、暗号化キーを使用して、データを暗号化および復号する。暗号化キーはデータを保護する手段を提供し、およびその保護されたデータへのアクセスを提供するので、その暗号化キーも保護されている。保護されていない暗号化キーにより、例えば、ウェブサイトのなりすまし、なりすまし認証および偽造電子メールなどの様々な種類の攻撃の機会を与えることがあり得る。
【０００３】
暗号化キーを保護する１つの試みは、それらをスマートカード上に格納することである。しかし、この試みの問題は、スマートカードが、スマートカードと通信するであろうプロセッサー上に実装された専用のインフラストラクチャー（infrastructure）を必要とすることである。一般的に、このインフラストラクチャーは、プロセッサーのオペレーティングシステム内に実装されており、従って、実装に相当な労力および時間を必要とし得る。また、スマートカードは、スマートカードリーダーという形で追加ハードウェアを必要とし、これは、大きくて高価であり得る。
【０００４】
暗号化キーを保護する別の試みは、暗号化キーをプロセッサー内にある保護されたコンテナ内に格納することである。一般的に、このキーへのアクセスは、パスワード保護されている。この試みの問題は、パスワード保護が脆弱と考えられていることである。パスワードクラッカーなどの使用によってプロセッサーへアクセスする攻撃者は、そのパスワードを解明して、コンテナ内に格納されている暗号化キーにアクセスすることが可能である。
【発明の概要】
【０００５】
本概要は、以下の発明の詳細な説明でさらに説明されている選択した概念を簡略化した形式で紹介するために提供するものである。本概要は、特許請求の範囲に記載されている主題事項の重要な特徴または本質的な特徴を特定することを目的とするものでも、特許請求の範囲に記載されている主題事項の範囲を限定するために使用することを目的とするものでもない。
【０００６】
キーは、ＵＳＢ（Universal Serial Bus）互換記憶装置内に格納される。ＵＳＢ互換記憶装置は、そのＵＳＢ互換記憶装置と通信するであろうプロセッサーのオペレーティングシステム内に実装される専用のインフラストラクチャーを必要としない。ＵＳＢ互換記憶装置は、特別なリーダーを必要としない。キー記憶は、プロセッサー内の（in-processor）コンテナからＵＳＢ互換記憶装置へリダイレクトされる。従って、このＵＳＢ互換記憶装置は、暗号化キーを格納するセキュリティトークンである。１つの例示の実施形態では、ＵＳＢ互換記憶装置上のキーへのアクセスは、安全な実行環境を介して達成される。ＵＳＢ互換記憶装置上のキーへのアクセスは、必ずしもパスワードを必要としない。
【図面の簡単な説明】
【０００７】
上述の概要および以下の詳細な説明は、添付の図面と共に読むことにより更に良く理解される。ＵＳＢトークン上の暗号化キーコンテナを示す目的のために、図面内にそれらの例示的な構造が示されているが、ＵＳＢトークン上の暗号キーコンテナは、開示された特定の方法および手段に限定されるものではない。
【図１】ＵＳＢトークン上の暗号化キーコンテナへアクセスするプロセスの一例を示すフロー図である。
【図２】ＵＳＢトークン上の暗号化キーコンテナを実装する例示的なプロセッサーを示す図である。
【図３】ＵＳＢトークン上の暗号化キーコンテナを実装できる適切なコンピューティング環境の図である。
【発明を実施するための形態】
【０００８】
暗号化キーコンテナは、ＵＳＢ互換記憶装置上に実装される。このＵＳＢ互換記憶装置は、セキュリティトークンとして使用される。プロセッサーの暗号化サブシステムは、ＵＳＢ互換記憶装置上のコンテナ内の暗号化キーにアクセス（例えば、読み込み、書き込み、格納、検索）する。ＵＳＢ互換記憶装置専用のインフラストラクチャーは、ＵＳＢ互換記憶装置上の暗号化キーにアクセスするプロセッサー上には全く実装されない。１つの例示の実施形態では、キーは、ＰＩＮ（Personal Identification Number）、パスワード、相互認証機構などを必要とせずにアクセスされ得る。ＵＳＢ互換記憶装置上の暗号化キーコンテナは、携帯性を提供し、従って、暗号化キーを持ち運ぶための便利な機構を提供する。ＵＳＢ互換記憶装置上の暗号化キーコンテナは、そのデバイスの物理的所持によってセキュリティを提供する。保護されたプロセスにおけるＵＳＢ互換記憶装置上の暗号化キーへのアクセスおよび処理により、ランタイムセキュリティを提供する。
【０００９】
図１は、ＵＳＢトークン上の暗号化キーコンテナへアクセスするプロセスの一例を示すフロー図である。ステップ１２において、暗号化キーにアクセスする指示を受信する。１つの例示の実施形態では、指示を、ユーザーおよび／または開発者が対話しているプロセッサーにおいて受信する。この指示は、暗号化キーの生成、暗号化キーの格納、暗号化キーの読み込みまたはそれらの組み合わせの結果とすることができる。ＵＳＢトークンを、ステップ１４において検索する。すなわち、検索は、暗号化キーコンテナを有しているＵＳＢ互換デバイスに対して実施される。ステップ１６においてＵＳＢトークンが発見された場合、ＵＳＢ互換デバイスに格納されているコンテナは、ステップ１８においてアクセスされ、コンテナの中に格納されている暗号化キーは、ステップ２０においてアクセスされる。
【００１０】
ステップ１６においてＵＳＢトークンが発見されない場合、ステップ２２においてプロンプトが提供される。このプロンプトは、ＵＳＢデバイスを挿入させる指示などのような任意の適切なプロンプトとすることができる。ユーザー／開発者は、そのユーザー／開発者が、ＵＳＢ互換記憶装置上の暗号化キーコンテナを使用することを好むかまたはプロセッサーに格納されている暗号化キーを使用することを好むかどうかに依存して、様々な方法でそのプロンプトに応答することができる。例えば、ユーザー／開発者が、ＵＳＢ互換記憶装置上の暗号化キーコンテナを使用することを好む場合、このユーザー／開発者は、ＵＳＢ互換記憶装置を挿入し得る。この挿入は、プロセッサーによって検知されるであろう。代替例として、ユーザー／開発者は、キーボード上で「エンター」キーを押すかまたはマウスをクリックするなどによって、ＵＳＢ互換記憶装置上の暗号化キーコンテナではなくプロセッサー内の暗号化キーコンテナを使用する指示を提供することが可能である。
【００１１】
ステップ２４において、ＵＳＢデバイスがプロセッサーに接続されているかどうかを判定する。ＵＳＢデバイスを挿入させるプロンプトに応じて、ＵＳＢ互換記憶装置がプロセッサーに接続されている場合、ＵＳＢ互換記憶装置に格納されているコンテナは、ステップ１８においてアクセスされ、コンテナの中に格納されている暗号化キーは、ステップ２０においてアクセスされる。ＵＳＢ互換記憶装置がプロセッサーに接続されていない場合、ステップ２６において、プロセッサー内のコンテナがアクセスされ、プロセッサー内のコンテナに格納されている暗号化キーは、ステップ２０においてアクセスされる。
【００１２】
１つの例示の構成では、プロセッサーは、暗号化プログラミングインターフェース（例えば、ＷＩＮＤＯＷＳ（登録商標）互換暗号化アプリケーションプログラミングインターフェース（ＣＡＰＩ）、ＶＩＳＴＡ（登録商標）互換暗号化次世代インターフェース（ＣＮＧ））を介して、ＵＳＢ互換記憶装置と通信する。暗号化キーにアクセスする指示を受信した場合（例えばステップ１２）、暗号化プログラミングインターフェース（例えば、ＣＡＰＩ、ＣＮＧ）は、暗号化キーコンテナを検索するためにＵＳＢ互換記憶装置のインデックスを検索することによって当該キーを検索する。プロセッサー内に格納されているコンテナ上で、ユーザー／開発者の読み込みまたは削除アクセスのためのプロファイル（profile）の一部として暗号化キーが発見されない場合、その暗号化プログラミングインターフェースは、当該プロセッサーに接続されているＵＳＢ互換記憶装置上のパスも検索するだろう。
【００１３】
暗号化キーのデフォルトの生成は、ＵＳＢ互換記憶装置上の暗号化キーコンテナを使用することが可能であり、または暗号化キーの生成は、ユーザー指定のものであり得る。従って、１つの例示の実施形態では、暗号化キーの生成は、レジストリ値に基づく。本レジストリ値は、キーがどのように生成されるかを示すものである。従って、この暗号化プログラミングインターフェースは、当該レジストリ値に従って、特定のＵＳＢ互換記憶装置上にのみか、プロセッサー内にのみか、またはユーザー／開発者によって指定された場所のみに、新しい暗号キーを生成することになる。任意の適切な値を用いて、キー生成方法を示すことが可能である。
【００１４】
１つの例示の実施形態では、暗号化キーは、保護された実行環境内でアクセスされる。保護された実行環境は、基本的にプロセッサーの暗号化サブシステムを隔離する。この保護された実行環境は、暗号化キーとオペレーティングシステムとの隔離を提供する。この保護された実行環境は、暗号化キーとプロセッサー上で実行されるアプリケーションとの隔離も提供する。従って、この保護された実行環境を介した暗号化キーへのアクセスは、暗号化キーと悪意のあるソフトウェアおよび／または攻撃者との間に別の層の保護を加えることによってさらなるセキュリティを提供する。１つの例示の実施形態では、ユーザーアプリケーションは、ＵＳＢトークン上のキーへ直接アクセスができないが、ローカルＲＰＣ（Remote Process Call）を介して、保護された暗号化プロセスへ暗号化要求を送信することはできる。暗号化プロセスは、この保護された暗号化プロセス内のユーザーアプリケーションの代わりに、ユーザーアプリケーションによって要求された動作（読み込み、生成、署名生成の様な暗号化動作に対する使用など）のためにＵＳＢトークンにアクセスする。このＵＳＢトークン上の暗号化キーの機密部分は、当該保護された暗号化プロセスの外部では入手不可能であるので、このようなアクセスを当該保護された暗号化プロセスへのみに限定することによって、ユーザープロセスから機密暗号化キーへのアクセスを隔離する。１つの例示的な構成では、ＵＳＢトークンへの望まれない直接的なアクセスを防止するために、オペレーティングシステムは、ユーザープロセスがＵＳＢトークンに接続することを防止する。
【００１５】
図２に、ＵＳＢ互換記憶装置５２上のＵＳＢトークン上の暗号化キーコンテナを実装する例示的なプロセッサー３０を示す。プロセッサー３０は、処理部３２、メモリ部３４および入力／出力部３６を備える。プロセッサー３０は、ＵＳＢ互換記憶装置５２専用のインフラストラクチャーを全く備えない。処理部３２、メモリ部３４および入力／出力部３６は、互いに接続されて（図２では接続を図示せず）それらの間で通信が可能である。入力／出力部３６は、上述のようにＵＳＢトークン上の暗号化キーコンテナを実装するために使用されるコンポーネントを提供および／または受信することができる。例えば、入力／出力部３６は、ＵＳＢ互換記憶装置５２と通信することができる。入力／出力部３６は、ＵＳＢ互換記憶装置５２からの暗号化キーの受信およびＵＳＢ互換記憶装置５２への暗号化キーの提供またはそれらの組み合わせを行うことが可能である。
【００１６】
プロセッサー３０は、任意の適切な種類のプロセッサー、すなわちＵＳＢ互換記憶装置５２と使用され得るプロセッサーを表す。プロセッサー３０は、単一のプロセッサーまたは複数のプロセッサーであっても良い。複数のプロセッサーは、分散して配置され、または中央に配置されても良い。プロセッサー３０は、例えば、ＭＰ３プレーヤー、ウォークマンなどのポータブル音楽プレーヤーなどのポータブルメディアプレーヤー、ラップトップなどのポータブルコンピューターデバイス、携帯情報端末（ＰＤＡ）、携帯電話などのポータブルフォン、スマートフォン、ビデオフォン、ポータブル電子メールデバイス、シンクライアントポータブルゲームデバイスなどの１つまたは複数のポータブルデバイス、またはそれらの組み合わせを表すことが可能である。
【００１７】
ＵＳＢ互換記憶装置５２は、１つまたは複数のＵＳＢ互換記憶装置の一種を表す。例えば、ＵＳＢ互換記憶装置５２は、フラッシュメモリデバイス、ディスク記憶装置、データベースまたはこれらの組み合わせを備えることができる。ＵＳＢ互換記憶装置は、様々な種類の機能を備えることができる。例えば、特定のＵＳＢ互換記憶装置は、読み取り専用の支援（read-only support）のみを行い、新しいキーの生成（書き込み）および存在するキーの削除を行わないことが可能である。通常、暗号化フレームワークは、これらのキーを読み込んで、それらを暗号化動作において使用することのみが可能であるが、ＵＳＢ互換記憶装置のコンテンツを変更することはできない。この場合において、この種のＵＳＢ互換記憶装置は、工場で製造され、およびその後は変更することができない。
【００１８】
処理部３２は、上述のようにＵＳＢトークン上の暗号化キーコンテナの実装が可能である。例えば、処理部３２は、暗号化キーを格納するためにＵＳＢ互換記憶装置５２上のコンテナを構築するか、ＵＳＢトークンを検索するか、暗号化キーにアクセスする指示を受信するか、プロンプトを提供するか、ＵＳＢトークンがプロセッサー３０と接続されているかどうか判定するか、ＵＳＢ互換記憶装置５２上に格納されているキーにアクセスするか、保護された実行環境を構築するか、保護された実行環境を維持するか、またはこれらの組み合わせを行うことができる。
【００１９】
プロセッサー３０は、クライアントプロセッサーおよび／またはサーバープロセッサーとして実装され得る。基本的な構成において、プロセッサー３０には、少なくとも１つの処理部３２およびメモリ部３４が含まれる。メモリ部３４は、例えば、暗号化キーおよび／または暗号化キーの暗号化ハッシュなどのＵＳＢトークン上の暗号化キーコンテナとともに使用される任意の情報を格納することが可能である。プロセッサーの正確な構成および種類に応じて、メモリ部３４は、揮発性メモリ（例えば、ＲＡＭなど）３８、不揮発性メモリ（例えば、ＲＯＭ、フラッシュメモリなど）４０またはこれらの組み合わせとすることができる。プロセッサー３０は、追加の特徴／機能を有し得る。例えば、プロセッサー３０は、磁気ディスクもしくは光ディスク、テープ、フラッシュ、スマートカードまたはこれらの組み合わせを含む追加の記憶装置（取り外し可能な記憶装置４２および／または取り外し不可能な記憶装置４４）を含むことができるが、これらに限定されない。メモリ部分３４、３８、４０、４２および４４などのコンピューター記憶媒体には、コンピューター読み取り可能な命令、データ構造、プログラムモジュールまたは他のデータなどの情報を格納する任意の手段または技術において実装される揮発性および不揮発性、取り外し可能なおよび取り外し不可能な媒体が含まれる。コンピューター記憶媒体には、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）、フラッシュメモリもしくは他のメモリ手段、ＣＤ−ＲＯＭ、ＤＶＤ（Digital Versatile Disk）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、ＵＳＢ互換メモリ、スマートカード、または所望の情報を格納するために使用でき、かつプロセッサー３０によってアクセスすることができる任意の他の媒体が含まれるが、これらに限定されない。任意のこの様なコンピューター記憶媒体は、プロセッサー３０の一部であり得る。
【００２０】
プロセッサー３０には、プロセッサー３０が他のデバイスと通信することを可能とする通信接続部５０も含まれる。通信接続部５０は、通信媒体の一例である。通信媒体は、典型的には、コンピューター読み取り可能な命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の転送機構などの変調データ信号として具現化したものであり、また、任意の情報配信媒体が含まれる。「変調データ信号」という用語は、その特性の１つまたは複数が、その信号中の情報を符号化するように設定または変更された信号を意味する。通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線および他の無線媒体などの無線媒体が含まれるが、これらに限定されない。本明細書で使用されているコンピューター読み取り可能な媒体という用語には、記憶媒体および通信媒体の両方が含まれる。プロセッサー３０には、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス４８も含まれ得る。ディスプレイ、スピーカー、プリンタなどの出力デバイス４６も含まれ得る。
【００２１】
図３および以下の説明は、ＵＳＢトークン上の暗号化キーコンテナを実装できる適切なコンピューティング環境の簡単な一般的な説明を提供する。必要ではないが、ＵＳＢトークン上の暗号化キーコンテナの様々な態様は、クライアントワークステーションまたはサーバーなどのコンピューターによって実行されるプログラムモジュールなど、コンピューター実行可能な命令の一般的なコンテクストに即して説明することができる。一般に、プログラムモジュールには、特定のタスクを実行するかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、ゲームソフトウェアデバッガのマルチスレッド検知の実装は、ハンドヘルドデバイス、マルチプロセッサーシステム、マイクロプロセッサーベースのまたはプログラミング可能な家庭用電化製品、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューターなどを含む他のコンピューターシステム構成によって実施され得る。さらに、ゲームソフトウェアデバッガのマルチスレッド検知は、タスクが、通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施され得る。分散コンピューティング環境では、プログラムモジュールを、ローカルメモリ記憶装置およびリモートメモリ記憶装置の両方に配置することができる。
【００２２】
コンピューターシステムは、３つのコンポーネントグループ、すなわちハードウェアコンポーネント、ハードウェア／ソフトウェアインターフェースシステムコンポーネントおよびアプリケーションプログラムコンポーネント（「ユーザーコンポーネント」または「ソフトウェアコンポーネント」とも称される）に大別することができる。コンピューターシステムの様々な実施形態において、ハードウェアコンポーネントには、中央処理装置（ＣＰＵ）３２１、メモリ（ＲＯＭ  ３６４およびＲＡＭ  ３２５の両方）、基本入力／出力システム（ＢＩＯＳ）３６６並びにキーボード３４０、マウス３４２、モニタ３４７および／もしくはプリンタ（図示せず）などの様々な入力／出力（Ｉ／Ｏ）システムが含まれ得る。このハードウェアコンポーネントには、コンピューターシステムのための基本的な物理インフラストラクチャーが含まれる。
【００２３】
アプリケーションプログラムコンポーネントには、コンパイラ、データベースシステム、ワードプロセッサー、ビジネスプログラム、ビデオゲームなどを含むが、これらに限定されない、様々なソフトウェアが含まれる。アプリケーションプログラムは、コンピューターリソースを使用して様々なユーザー（マシン、他のコンピューターシステムおよび／またはエンドユーザー）のために問題を解決し、解決法を提供し、およびデータを処理するための手段を提供する。１つの例示の実施形態では、アプリケーションプログラムは、上述のようにＵＳＢトークン上の暗号化キーコンテナに関連する機能を実行する。
【００２４】
ハードウェア／ソフトウェアインターフェースシステムコンポーネントには、多くの場合にシェルおよびカーネルを含むオペレーティングシステムが含まれる（いくつかの実施形態においては、単にこのオペレーティングシステムで構成され得る）。「オペレーティングシステム」（ＯＳ）は、アプリケーションプログラムとコンピューターハードウェアとの間の媒介として働く特別なプログラムである。ハードウェア／ソフトウェアインターフェースシステムコンポーネントには、仮想マシンマネージャ（ＶＭＭ）、共通言語ランタイム（ＣＬＲ）もしくはそれと機能的に同等なもの、Ｊａｖａ（登録商標）仮想マシン（ＪＶＭ）もしくはそれと機能的に同等なもの、またはコンピューターシステム内のオペレーティングシステムの代わりとなるか、もしくはそれに追加されるソフトウェアコンポーネントなども含まれ得る。ハードウェア／ソフトウェアインターフェースシステムの目的は、ユーザーがアプリケーションプログラムを実行可能な環境を提供することである。
【００２５】
ハードウェア／ソフトウェアインターフェースシステムは、一般的に、起動時にコンピューターシステムにロードされ、その後、そのコンピューターシステム内の全てのアプリケーションプログラムを管理する。アプリケーションプログラムは、アプリケーションプログラムインターフェース（ＡＰＩ）を介してサービスを要求することによって、ハードウェア／ソフトウェアインターフェースシステムと対話する。いくつかのアプリケーションプログラムにより、エンドユーザーは、コマンド言語またはＧＵＩ（Graphical User Interface）などのユーザーインターフェースを介してハードウェア／ソフトウェアインターフェースシステムと対話することができる。
【００２６】
ハードウェア／ソフトウェアインターフェースシステムは、伝統的に、アプリケーションのための様々なサービスを実行する。複数のプログラムが同時に実行され得るマルチタスクのハードウェア／ソフトウェアインターフェースシステムでは、このハードウェア／ソフトウェアインターフェースシステムは、どの順番でどのアプリケーションが実行されるべきかおよび次のアプリケーションに切り替える前にどの程度の時間が各アプリケーションに与えられるべきかを判定する。ハードウェア／ソフトウェアインターフェースシステムは、複数のアプリケーション間の内部メモリの共有も管理して、ハードディスク、プリンタまたはダイアルアップポートなどの付随したハードウェアデバイスへの入力およびそこからの出力を処理する。ハードウェア／ソフトウェアインターフェースシステムはまた、動作状況および起こり得る全てのエラーに関連する各アプリケーションへ（ある場合においては、エンドユーザーへ）メッセージを送信する。ハードウェア／ソフトウェアインターフェースシステムは、バッチジョブ（例えば印刷）の管理をオフロード（offload）し、開始（initiating）アプリケーションが当該バッチジョブから解放され他の処理および／または動作を再開することができる。並列処理が可能なコンピューターにおいて、ハードウェア／ソフトウェアインターフェースシステムは、プログラムの分割を管理し、そのプログラムは同時に２以上のプロセッサー上で実行される。
【００２７】
ハードウェア／ソフトウェアインターフェースシステムシェル（「シェルと称す」）は、ハードウェア／ソフトウェアインターフェースシステムとの対話式のエンドユーザーインターフェースである。（シェルは「コマンドインタプリタ」、またはオペレーティングシステム内において「オペレーティングシステムシェル」とも称され得る）。シェルは、アプリケーションプログラムおよび／またはエンドユーザーによって直接アクセス可能な、ハードウェア／ソフトウェアインターフェースシステムの外側の層である。シェルと対照的に、カーネルは、ハードウェアコンポーネントと直接対話する、ハードウェア／ソフトウェアインターフェースシステムの最も内側の層である。
【００２８】
図３において示されているように、例示的な汎用コンピューティングシステムには、従来のコンピューティングデバイス３６０などが含まれる。この従来のコンピューティングデバイスなどは、処理ユニット３２１、システムメモリ３６２、およびシステムメモリを含む様々なシステムコンポーネントを処理ユニット３２１に結合するシステムバス３２３を備える。システムバス３２３は、メモリバスもしくはメモリコントローラー、周辺機器用バスおよび様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のいずれかとすることができる。システムメモリには、ＲＯＭ  ３６４およびＲＡＭ  ３２５が含まれる。起動時などにコンピューティングデバイス３６０内の構成要素間の情報の転送を助ける基本ルーチンを含むＢＩＯＳを、ＲＯＭ  ３６４に格納することができる。コンピューティングデバイス３６０はさらに、ハードディスク（ハードディスクは図示せず）との間の読み取りおよび書き込みを行うハードディスクドライブ３２７、取り外し可能な磁気ディスク３２９との間の読み取りおよび書き込みを行う磁気ディスクドライブ３２８（例えばフロッピー（登録商標）ドライブ）、およびＣＤ−ＲＯＭまたは他の光媒体など、取り外し可能な光ディスク３３１との間の読み取りおよび書き込みを行う光ディスクドライブ３３０を備える。ハードディスクドライブ３２７、磁気ディスクドライブ３２８、および光ディスクドライブ３３０は、それぞれ、ハードディスクドライブインターフェース３３２、磁気ディスクドライブインターフェース３３３、および光ドライブインターフェース３３４よって、システムバス３２３に接続することができる。ドライブおよびその関連するコンピューター読み取り可能な媒体は、コンピューティングデバイス３６０のためのコンピューター読み取り可能な命令、データ構造、プログラムモジュール、および他のデータの不揮発性記憶装置を提供することができる。本明細書内で説明された例示的な環境は、ハードディスク、取り外し可能な磁気ディスク３２９および取り外し可能な光ディスク３３１を使用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどのコンピューターによってアクセス可能な、データを格納可能な他の種類のコンピューター読み取り可能な媒体も、例示的な動作環境において使用され得ることが、当業者であれば理解できる。同様に、例示的な環境は、熱センサおよびセキュリティアラームシステムもしくは火災アラームシステムなどの多くの種類の監視デバイス並びに他の情報源も含み得る。
【００２９】
オペレーティングシステム３３５、１つまたは複数のアプリケーションプログラム３３６、他のプログラムモジュール３３７、およびプログラムデータ３３８を含む複数のプログラムモジュールを、ハードディスク、磁気ディスク３２９、光ディスク３３１、ＲＯＭ  ３２４またはＲＡＭ  ３２５に格納することができる。ユーザーは、コマンドおよび情報をキーボード３４０およびポインティング装置３４２（例えばマウス）などの入力装置を介してコンピューティングデバイス３６０に入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどが含まれる。これらおよび他の入力装置は、システムバスに結合されているシリアルポートインターフェース３４６を介して処理ユニット３２１に接続されているが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェースによって接続することもできる。モニタ３４７または他の種類のディスプレイ装置も、ビデオアダプタ３４８などのインターフェースを介してシステムバス３２３に接続することができる。モニタ３４７に加えて、コンピューティングデバイスは、スピーカーおよびプリンタなど、他の周辺出力装置（図示せず）をさらに備える。図３の例示的な環境は、ホストアダプタ３５５、ＳＣＳＩ（Small Computer System Interface）バス３５６および当該ＳＣＳＩバス３５６に接続されている外部記憶装置３６２も備える。
【００３０】
さらに、コンピューティングデバイス３６０は、リモートコンピューター３４９など、１つまたは複数のリモートコンピューターへの論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピューター３４９は、別のコンピューターデバイス（例えば、パーソナルコンピューター）、サーバー、ルーター、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができる。図３ではメモリ記憶装置３５０（フロッピー（登録商標）ドライブ）のみが示されているが、一般的に、リモートコンピューター３４９は、コンピューティングデバイス３６０に関連して上記で述べた多くまたはすべての要素を備える。図３に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）３５１およびワイドエリアネットワーク（ＷＡＮ）３５２が含まれる。このようなネットワーク環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット、およびインターネットにおいて一般的である。
【００３１】
ＬＡＮネットワーク環境で使用される場合、コンピューティングデバイス３６０は、ネットワークインターフェース３５３またはアダプタを介してＬＡＮ３５１に接続される。ＷＡＮネットワーク環境で使用される場合、コンピューティングデバイス３６０は、インターネットなどのワイドエリアネットワーク３５２を介した通信を確立するための、モデム３５４、または他の手段を備え得る。モデム３５４は内蔵型でも外付けでもよく、シリアルポートインターフェース３４６を介してシステムバス３２３に接続される。ネットワーク化された環境では、コンピューティングデバイス３６０に関連して、またはその一部として示されたプログラムモジュールをリモートメモリ記憶装置に格納することができる。図示されたネットワーク接続は例示的なものであり、コンピューター間で通信リンクを確立する他の手段を使用できることは理解されよう。
【００３２】
ＵＳＢトークン上の暗号化キーコンテナの多数の実施形態は、特にコンピューター化されたシステムに適切であることが想定されるが、本書の何物も、本発明をこのような実施形態に限定することを意図しない。それどころか、本明細書で使用される場合、「コンピューターシステム」という用語は、そのようなデバイスが性質において電子的であるか、機械的であるか、論理的であるか仮想的であるかにかかわらず、情報を格納および処理することができる、および／または、格納された情報を使用してデバイス自体の動作または実行をコントロールすることができる、いかなるおよびすべてのデバイスをも包含することを意図する。
【００３３】
本明細書で説明されている様々な技術を、ハードウェア、ソフトウェア、またはそれらの組み合わせに関連して実装することができる。したがって、ＵＳＢトークン上の暗号化キーコンテナを実装する方法および装置、またはこれらのいくつかの態様もしくは部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハードドライブ、または他の任意の機械読取り可能な記憶媒体などのタンジブルな媒体に組み入れた、プログラムコード（すなわち命令）の形をとることができる。プログラムコードがコンピューターなどのマシンにロードされ、マシンによって実行されると、このマシンは様々な技術を実施するための装置になる。
【００３４】
プログラムは、必要に応じてアセンブリ言語またはマシン言語で実装してもよい。いずれにしても、言語はコンパイルまたはインタープリタ型言語とすることができ、ハードウェア実装と結合することができる。ＵＳＢトークン上の暗号化キーコンテナを実装する方法および装置はまた、電気ワイヤリングまたはケーブリング、光ファイバ、あるいはその他の任意の形の伝送など、何らかの伝送媒体を介して伝送されるプログラムコードの形で具体化することもでき、プログラムコードが、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピューターなどのマシンによって受け取られてロードおよび実行されると、このマシンは本発明を実施するための装置になる。汎用プロセッサー上で実施されるとき、プログラムコードは、プロセッサーと組み合わさって、ＵＳＢトークン上の暗号化キーコンテナの機能を実施呼び出すように動作する独特の装置を提供する。さらに、ＵＳＢトークン上の暗号化キーコンテナとともに使用される任意の記憶技術は、常にハードウェアとソフトウェアとの組み合わせとすることが可能である。
【００３５】
様々な図面の例示の実施形態に関連してＵＳＢトークン上の暗号化キーコンテナを説明してきたが、本発明の実施形態から逸脱することなく、ＵＳＢトークン上の暗号化キーコンテナと同一の機能を実行するために、他の同様の実施形態が使用されても良く、または説明された実施形態に変形および付加が行われても良い。従って、本明細書で説明されたようにＵＳＢトークン上の暗号化キーコンテナは、任意の単一の実施形態に限定されるべきではなく、添付の特許請求の範囲に従った広さおよび範囲内で解釈されるべきである。
【図１】
0005611598.tif 000002
【図２】
0005611598.tif 000003
【図３】
0005611598.tif 000004