説明

実時間鍵生成を含むデータ・セキュリティ

【課題】 よりロバストなデータ保護方法を提供する。
【解決手段】 データ・セキュリティを与える方法を提供する。セキュリティ・デバイス(10)及びプラグイン・デバイス(30)は、データの暗号化及び復号を可能にするように連動して働く。シークレットは、セキュリティ・デバイス(10)またはプラグイン・デバイス(30)のいずれか一方によって格納される。シークレットは鍵を作成することが求められるが、鍵はシークレットのみから作成されることができない。許可されていないデバイスまたはユーザは、それによって鍵へのアクセスが阻止される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ・セキュリティに関する。
【背景技術】
【0002】
今日のデジタル世界において、情報は以前より容易にアクセス可能になっている。商取引は、益々デジタル通信に依存している。しかしながら、デジタル通信技術の普及と使い勝手の良さには、それと引き換えに相当な代償が払われている。すなわち、情報の安全性を脅かす増大した脅威に曝されているのである。情報の記憶、検索及び転送は、従来のデジタル通信技術によって既に容易なものとなっている。必要なのは、価値ある情報を保護するための同様に容易な手段である。
【発明の開示】
【発明が解決しようとする課題】
【0003】
図1を参照すると、従来のホストコンピュータ20が、データを格納するために大容量記憶装置40と通信している。多くの場合、ホストコンピュータ20のユーザが望むのは、大容量記憶装置40に格納されたデータを、許可されたユーザしかデータにアクセスできないように、安全に保つことである。ユーザは、多数の従来のデータ保護方法の中から選択できる。例えば、ユーザは、データへのアクセスをパスワード保護することができる。しかしながら、もしもハードディスクが大容量記憶装置40から取り外されて非保護のコンピュータにインストールされれば、パスワード保護は失われるかもしれず、データは公然と曝されかねない。別の従来のデータ保護方法は、ソフトウエアまたはハードウエア(または両者の組合せ)暗号化技術を用いたものである。ソフトウエア暗号化に関連する不利点には、メモリ資源要求と非実時間処理とが含まれる。一部のハードウエア暗号化技術は、ハードウエア・デバイス内に、例えばハードディスク、フレキシブルディスク、EEPROM、フラッシュまたは記録可能な光ディスクなどの記憶媒体上に、鍵を格納する必要がある。しかしながら、既知のハードウエア暗号化技術は、鍵がハードウエア・デバイスに格納されるかあるいはハードウエア・デバイスからロードされるとき、鍵を保護しない。ハードウエア・デバイスはまた、スパイ・プログラムに影響され易い。従って、重要なデータを保護するためのよりロバストな方法が望ましい。
【課題を解決するための手段】
【0004】
一部の実施形態において、セキュリティ・デバイスにおいてデータ・セキュリティ(データの安全保護)を与える方法が提供される。この方法は、セキュリティ・デバイスにプラグイン・デバイスを結合するステップを含み、セキュリティ・デバイスは、対応する記憶装置へ/からのデータの暗号化または復号を制御する。データ暗号化または復号動作が必要とされるとき、プラグイン・デバイスからシークレットが検索される。シークレットからホスト・シードが回復される。ホスト・シードから、データの暗号化または復号に使われる鍵が生成される。
【0005】
一部の実施形態において、データ・セキュリティを与える方法は、安全な暗号化または復号動作の促進の要求を受信するステップと、ランダムに生成される数を提供するステップと、ホスト・シード及びランダムに生成される数から生成されるシークレットを受信するステップと、シークレットを実行時まで記憶するステップとを含む。
【0006】
一部の実施形態において、データ・セキュリティを与えるためのプラグイン・デバイスは、乱数を生成するための乱数ジェネレータと、乱数を暗号化するための暗号化エンジンと、その暗号化された乱数を、受信された暗号化された乱数と比較するためのマッチング・エンジンと、両乱数が一致したとマッチング・エンジンが判断したらセキュリティ・デバイスと共有されるシークレットを格納するためのメモリとを含む。
【0007】
一部の実施形態において、セキュリティ・デバイスは、ホスト・シードを受信するためにホストコンピュータに接続するための手段と、デバイス・シードまたは乱数のうち少なくとも一方を格納するように構成されているメモリと、ホスト鍵をシークレット内に隠し、シークレットからホスト・シードを抽出し、ホスト・シードから鍵を生成するが、但しそれはシークレットを格納する認証されたデバイスに結合されているときのみであるように構成されたプロセッサとを含む。
【0008】
一部の実施形態において、データを保護するためのシステムは、ホストコンピュータと、セキュリティ・デバイスと、認証可能デバイスと、データ記憶装置とを含む。セキュリティ・デバイスは、ホスト・シードを受信するためにホストコンピュータに接続するための手段と、デバイス・シードまたは乱数のうち少なくとも一方を格納するように構成されているメモリと、ホスト鍵をシークレット内に隠し、シークレットからホスト・シードを抽出し、ホスト・シードから鍵を生成するが、但しそれはシークレットを格納する認証可能デバイスに結合されているときのみであるように構成されたプロセッサとを含む。認証可能デバイスは、乱数を生成し、シークレットを格納するように構成されている。データ記憶装置は、暗号化されたデータを格納する。
【0009】
本明細書に記載されている方法及びデバイスは、次に挙げる利点のうち1つ若しくは複数を提供するかあるいは1つも提供しないことがある。プラグイン・デバイスはデータセキュリティ・デバイスと共に一緒に、ロバストなデータ・セキュリティの方法を提供することができる。混合シード(mixed seed)などの秘密情報が、プラグイン・デバイス上に格納されることができる。混合シード及び/またはプラグイン・デバイスは、重要なデータの暗号化または復号のための鍵を生成するために必要とされることがある。しかしながら、プラグイン・デバイスがあっても、それ単独では、鍵を生成するのに不十分である。暗号化/復号鍵を作成するために、セキュリティ・デバイス上に格納される情報も必要とされる。鍵を生成するためにプラグイン・デバイス及びセキュリティ・デバイスの両方が必要とされるので、セキュリティ・デバイスがあっても、それ単独では、暗号化/復号鍵を生成するのにも不十分である。プラグイン・デバイスまたはセキュリティ・デバイスのいずれかが情報漏洩されても、鍵は漏洩されない。
【0010】
本発明の1若しくは複数の実施形態の詳細は、添付の図面及び以下の説明に記載されている。本発明の他の機能、目的及び利点は、説明及び図面から、そして特許請求の範囲から、明らかになるであろう。
【発明を実施するための最良の形態】
【0011】
図2を参照すると、データセキュリティ・デバイスとプラグイン・デバイスとが、共同で、記憶装置に格納されたデータを保護することができる。データセキュリティ・デバイス10が、ホストデバイス(例えばホストコンピュータ20)、プラグイン・デバイス30及び記憶装置(例えば大容量記憶装置40)に、様々な通信媒体を介して接続されている。通信媒体は、それぞれのデバイス間に信号経路形成し、電気的形式、光学的形式、RFまたは他の通信媒体の形をとることができる。
【0012】
ホストデバイスは、コンピュータの形であることができ、コンピュータとして示されている。記憶装置は、大容量記憶装置の形であることができ、大容量記憶装置として示されている。ホストコンピュータ20及び大容量記憶装置40が参照されているが、この参照は単なる例示に過ぎない。セキュリティ・デバイス10及びプラグイン・デバイス30は、他のホストデバイス(例えば、パーソナルコンピュータ、ラップトップコンピュータ、PDA、アクセスポイント、携帯用電子機器、ゲーム機、セットトップボックス、または他の情報処理装置)及び他の記憶装置(例えば、ハードドライブ、光学式ドライブ、フラッシュドライブなど)と対応付けられる場合がある。同様に、個々の構成要素が参照されているが、ホストデバイス、プラグイン・デバイス、セキュリティ・デバイス及び記憶装置のうちの1つ若しくは複数は、1つにまとめられることができる。例えば、一実施形態において、セキュリティ・デバイス10は、1若しくは複数のホストデバイスに結合されるように構成されたディスクキーデバイス(例えばフラッシュまたはディスクUSBドライブ)内に大容量記憶装置40と一体化されることができる。
【0013】
データセキュリティ・デバイス
【0014】
データセキュリティ・デバイス10は、記憶装置に格納される(及び/または記憶装置から検索される)データの暗号化及び復号に用いるための1若しくは複数の鍵を生成するべく、ホストデバイス及びプラグイン・デバイスと共に働くように動作する。然るべく、データセキュリティ・デバイス10は、3つの主要なインタフェース、即ち、ホストインタフェース(例えば、ホストコンピュータ20と通信するためのホストポート11)と、プラグイン・デバイスインタフェース(例えば、プラグイン・デバイス・ポート16)と、記憶装置インタフェース(例えば、大容量記憶装置40と通信するためのデバイスポート15)とを含む。図示されている特定のインプリメンテーションにおいて、データセキュリティ・デバイス10は、プラグイン・デバイス30に直接アクセスするためのプラグイン・デバイス・ポート16を含む。データセキュリティ・デバイス10とプラグイン・デバイス間、ホストデバイスと記憶装置間の他の通信構成も可能である。詳細に後述するように、プラグイン・デバイス30は、大容量記憶装置40に格納されたデータを暗号化または復号するために用いられる鍵を生成するために必要なシークレット情報を格納及び検索する。一実施形態において、データセキュリティ・デバイス10はまた、ホストデバイス・データフロー・コントローラ12と、暗号化/復号エンジン13とを含み、前者はホストコンピュータ20へ行くかまたはホストコンピュータ20から来るデータを管理し、後者は大容量記憶装置40へ行くデータを暗号化するかあるいは大容量記憶装置40、マイクロプロセッサ14及びメモリ17から来るデータを復号するためのものである。
【0015】
ホストポート11は、ホストコンピュータ20及びホストデバイス・データフロー・コントローラ12と通信している。ホストポート11は、ホストコンピュータ20からコマンド及びデータを受信し、そのコマンド及びデータを処理するためにホストデバイス・データフロー・コントローラ12へ伝達する。ホストポート11はまた、大容量記憶装置40からホストコンピュータ20へ、返却データ及び実行されたコマンドの状態を伝達する。一実施形態において、ホストコンピュータ20及びセキュリティ・デバイス10は、任意の適切なタイプのホスト側バス、例えば、PCI、PCIe(PCI express)、USB、1394、ATA、シリアルATA、SCSI、またはファイバ・チャネルなどと接続されている。
【0016】
ホストデバイス・データフロー・コントローラ12は、ホストポート11、暗号化/復号エンジン13及びマイクロプロセッサ14と通信している。ホストデバイス・データフロー・コントローラ12は、ホストポート11からコマンド及びデータを受信し、そのコマンド及びデータを2つのカテゴリーで処理する。第1のカテゴリーは、大容量記憶装置40にアクセスするためのコマンドを含む。第2のカテゴリーは、鍵管理コマンドを含む。他のコマンドカテゴリーも可能である。ホストデバイス・データフロー・コントローラ12は、大容量記憶装置40にアクセスするためのコマンド及び対応するデータを暗号化/復号エンジン13へ伝達する。ホストデバイス・データフロー・コントローラ12は、鍵管理コマンド及び対応するデータをマイクロプロセッサ14へ伝達する。ホストデバイス・データフロー・コントローラ12はまた、暗号化/復号エンジン13及びマイクロプロセッサ14から、返された状態情報及びデータを受信し、それらを必要に応じてホストポート11を用いてホストコンピュータに提供する。
【0017】
暗号化/復号エンジン13は、ホストデバイス・データフロー・コントローラ12及びマイクロプロセッサ14と通信している。暗号化/復号エンジン13は、ホストコンピュータ20から大容量記憶装置40へ移動するデータを暗号化し、大容量記憶装置40からホストコンピュータ20へ移動するデータを復号する。一実施形態において、暗号化/復号エンジン13は、コマンド及び対応する返された状態情報を処理しない(即ち、情報を必要に応じて何も変えずにそのまま通過させることができる)。詳細に後述するように、マイクロプロセッサ14は、暗号化/復号エンジン13によってデータを暗号化/復号するために用いられる鍵を生成する。暗号化/復号エンジン13は、例えばAES及びDESなどの公開されかつベリファイ(検証)されたアルゴリズムから選択される暗号化/復号アルゴリズム、または他の適切なアルゴリズムを用いることができる。
【0018】
マイクロプロセッサ14は、ホストデバイス・データフロー・コントローラ12、暗号化/復号エンジン13、プラグイン・デバイス・ポート16及びメモリ17と通信している。マイクロプロセッサが参照されているが、マイクロコントローラまたは他のコントローラを含む他の処理装置も可能である。一実施形態において、マイクロプロセッサ14は、データセキュリティ・デバイス10の種々の操作処理を制御するが、そのような処理には、ホストコンピュータ20からの(例えば、データの記憶または検索あるいはホスト・シードの処理の)要求へのレスポンスの送信、プラグイン・デバイス30へのデータの格納及びプラグイン・デバイス30からのデータのローディングが含まれる。マイクロプロセッサ14はまた、暗号化及び復号のための鍵の生成も制御する。
【0019】
マイクロプロセッサ14は、メモリ17から命令を検索するかあるいはメモリ17にデータを格納することができる。メモリ17は、ランダムアクセスメモリ、読出し専用メモリ(EPROMなどを含む)、フラッシュメモリなどを含む揮発性及び/または不揮発性メモリを含むことができる。
【0020】
デバイスポート15は、暗号化/復号エンジン13及び大容量記憶装置40と通信している。デバイスポート15は、大容量記憶装置40から報告されたコマンド状態及びデータを受信し、そのコマンド状態及びデータを暗号化/復号エンジン13へ伝達する。デバイスポート15はまた、逆方向に、暗号化/復号エンジン13からコマンド及びデータを受信し、そのコマンド及びデータを大容量記憶装置40へ伝達する。セキュリティ・デバイス10を大容量記憶装置40に接続するデバイス側バスは、ホスト側バスと同じタイプでも異なるタイプでもよい。いずれか一方のバスは、ベンダ固有バスとして画定されることもできる。
【0021】
プラグイン・デバイス・ポート16は、プラグイン・デバイス30及びマイクロプロセッサ14と通信している。プラグインポートが参照されているが、他の、プラグイン・デバイスと通信する手段も可能である。詳細に後述するように、プラグイン・デバイス30は、別な方法で(すなわち、プラグイン接続によらないで)セキュリティ・デバイスに結合されることもある。従って、本明細書中の記載は単なる例に過ぎない。プラグイン・デバイス・ポート16は、マイクロプロセッサ14によって制御されることができ、プラグイン・デバイス30への書き込み及びプラグイン・デバイス30からの読出しなどのプラグイン・デバイス30へのアクセスが可能になる。一部の実施形態において、データセキュリティ・デバイス10は、ISO−7816などの特定のプラグイン・デバイス規格に準拠するように構成されたインタフェースを有する。一実施形態において、プラグイン・デバイス・ポート16は、セキュリティ・デバイス10とプラグイン・デバイス30の間で情報を伝送するための安全なチャネルを提供する。一部の実施形態において、データは、指定されたプラグイン・デバイス・データ転送プロトコルを用いてプラグイン・デバイス30へ/から安全に転送される。プラグイン・デバイス30とセキュリティ・デバイス10の間を移動するデータは、DES、AESまたは3DESなどによって暗号化されることもできる。プラグイン・デバイス30は、物理的にセキュリティ・デバイス10に極めて近接して配置されることができる。一部の実施形態において、プラグイン・デバイス30は、セキュリティ・デバイス10のレセプタクルに差し込まれる。
【0022】
プラグイン・デバイス
【0023】
一例として、セキュリティ・デバイス10とのインタフェースをとり、大容量記憶装置に格納されたデータの暗号化及び/または復号を可能にするのに必要なシークレットを格納するデバイスとして、プラグイン・デバイスが参照されている。デバイスが他の手段によってセキュリティ・デバイス10に結合されることができることは、当業者であれば分かるであろう。プラグイン・デバイスの特性は、セキュリティ・デバイスから取り外される(例えば通信的及び/または物理的に切断される)能力、認証ケイパビリティ及びシークレットを格納する能力を含む。用いられることができるプラグイン・デバイスの一例は、スマートカードである。USBデバイス、チップカード、EEPROM、フラッシュ、またはIC(集積回路)カードを含む他のタイプのデバイスも可能である。一実施形態において、プラグイン・デバイス30は、乱数ジェネレータ18、暗号化エンジン21、マッチング・エンジン23及びメモリ25を含む。
【0024】
乱数ジェネレータ18は、プラグイン・デバイス30とセキュリティ・デバイス10の間の認証プロトコルにおいて用いるための乱数または擬似乱数を生成するために用いられることができる。認証プロトコルについては、以下に詳細に述べる。
【0025】
暗号化エンジン21は、プラグイン・デバイスが作られる時に与えられる鍵(例えば認証鍵)を用いて乱数ジェネレータ18によって生成される乱数を暗号化するために用いられることができる。暗号化エンジンの使用の詳細については、以下に述べる。
【0026】
マッチング・エンジン23は、認証プロトコルの一部として用いられ、プラグイン・デバイス30により受信されるセキュリティ・デバイス10からの数またはデータ列が、プラグイン・デバイス30によって生成または格納される数またはデータ列と一致する(例えば、暗号化エンジン21によって生成されるデータと一致する)か否かを判定することができる。マッチング・エンジン23のプロセス及び認証プロトコルについては、以下に詳細に述べる。
【0027】
上記した構成要素を含むシステムは、暗号化されたデータを格納しかつアクセスするために用いられる。安全な暗号化及び復号方法については、本明細書でさらに述べる。
【0028】
図3を参照すると、データを安全に暗号化または復号するための方法が示されている。この方法は、安全な通信システムの様々な他の構成要素と通信する処理装置において実行されることができる。処理は、(例えばデータセキュリティ・デバイス10によってホストコンピュータ20から)ホスト・シードを受信することから始まる(ステップ110)。ホスト・シードからシークレットが生成される(例えば、セキュリティ・デバイス10は、ホスト・シード及び乱数から混合シードを生成することができる)(ステップ120)。本明細書では、混合シードは、万一情報が漏洩した(セキュリティが侵害された)場合にホスト・シードを秘すために用いることができるようなホスト・シードから作成されるデータ構造を指す。混合シードを生成するための1つの方法は、ホスト・シードを混合要素(例えば乱数または擬似乱数)と混合するステップを含む。混合シードは、安全に記憶されることができ、ホスト・シードは必要な場合に逆演算を用いて(例えば混合要素を用いて)回復されることができる。混合シードを生成する詳細については、以下に詳細に述べる。シークレット(例えば混合シード)は、その後、個別の安全なデバイスに提供されかつ格納される(例えばミックスシードは格納のためにプラグイン・デバイス30に提供される)(ステップ130)。
【0029】
個別の安全なデバイスは、必要に応じて切り離されることができる。結合されるときに(例えば、プラグイン・デバイス30がセキュリティ・デバイス10に結合されるときに)、認証プロセスが実行されることができる(例えば、セキュリティ・デバイス10がプラグイン・デバイス30を認証する)(ステップ140)。認証プロトコルについては、以下に詳細に述べる。実行時に(例えばデータの暗号化または復号が必要なときに)、シークレット(例えば混合シード)は検索されることができる(例えば、セキュリティ・デバイス10は、混合シードをプラグイン・デバイス30から呼び戻す)。シークレットは、暗号化/復号(E/D)鍵を生成するために用いられる(ステップ160)。E/D鍵の生成は、シークレットからのホスト・シードの回復と、E/D鍵を生成するためのホスト・シードのデバイス・シードとの混合または別な方法とを含むことができる。E/D鍵の生成については、以下に詳細に述べる。その後、E/D鍵は、データ(例えば、ホストコンピュータ20と大容量記憶装置40を移動するデータ)を暗号化及び復号するために(例えばセキュリティ・エンジン10によって)用いられることができる(ステップ170)。記載されているプロセスは、セキュリティ・デバイスがオンザフライでかつプラグイン・デバイスの認証後にのみE/D鍵を生成できるようにする。一実施形態において、暗号化及び復号のために用いられるE/D鍵は、特定の暗号化または復号動作に必要とされる間だけ維持される。代わりに、E/D鍵は、プラグインカード30がセキュリティ・デバイス10に接続されている間だけ維持されることができる。ひとたびプラグイン・デバイス30がセキュリティ・デバイス10から切断されたら、E/D鍵は、メモリから消去されるか、暗号化/復号エンジン12がディセーブルされるかのいずれかである。前述のステップの多くについて、本明細書でさらに述べる。前述のステップについて図2に示されている通信システムを参照しながら説明するが、とは言っても、当業者は、説明されている方法が他の別個のまたは統合されたシステムによって実行されることができることを理解されたい。
【0030】
シークレットの生成
【0031】
図4を参照すると、ホストデバイスから受信したホスト・シードを処理し、個別のデバイスに格納されるシークレットを生成する方法が示されている。このプロセスは、セキュリティ・デバイス10が、シークレット(例えば混合シード)を、プラグイン・デバイス30が格納するようにプラグイン・デバイス30に発行するプロセスを含む。セキュリティ・デバイス10は、プラグイン・デバイス30がプラグイン・デバイス・ポート16に接続されていることを検出することができ、あるいは、ホストコンピュータ20から発行プロセス開始の要求を受信することができる。いずれの場合でも、セキュリティ・デバイス10は、ホストデバイス(例えばホストコンピュータ20)からホスト・シードを受信する(ステップ210)。一実施形態において、ホストコンピュータ20は、ホスト・シードを暗号化し、暗号化されたホスト・シードをセキュリティ・デバイス10へ送信する。その代わりに、ホスト・シードは、暗号化されないことがあり、別途の暗号化なしに安全な通信リンクによって伝送されることがある。ホスト・シードが暗号化されるならば、セキュリティ・デバイス10(例えばマイクロプロセッサ14)は、暗号化されたホスト・シードを復号してホスト・シードを回復する(ステップ220)。その後、シークレットが生成される(ステップ230)。
【0032】
一実施形態において、シークレットは、プラグインカード30によって生成されるデータ(例えば、プラグインカード30によって生成される乱数または擬似乱数)とホスト・シードの混合物である。一部の実施形態において、マイクロプロセッサ14は、プラグイン・デバイス30に乱数生成の要求を送信する。プラグイン・デバイスの乱数ジェネレータ18は乱数を生成し、プラグイン・デバイス30はその数をマイクロプロセッサ14に送信する。他の実施形態において、セキュリティ・デバイスは、乱数を生成するかあるいはメモリ17から乱数を検索する。乱数は、ランダムまたは擬似ランダムであることができる。マイクロプロセッサ14は、その後、乱数を用いてホスト・シードをスクランブルしてシークレット(本明細書では「混合シード」と呼ぶ。)を生成する。
【0033】
その後、シークレット(例えば混合シード)は、プラグイン・デバイス30へ伝達されて格納されることができる(例えば、マイクロプロセッサ14は、混合シードをプラグイン・デバイスのメモリ25に送信することができる)(ステップ240)。一部の実施形態において、1つの混合シードしかプラグイン・デバイス30上に格納されることができない。
【0034】
一部の実施形態において、オリジナルのプラグイン・デバイス30が改ざんされるかあるいは失われたら、システムは、新たなプラグイン・デバイス30にシークレットを発行することができる。例えば、新たなプラグイン・デバイス30がシークレットを格納するように要求されたら、セキュリティ・デバイス10は、自らのメモリから乱数を呼び戻し、ホストデバイスからホスト・シードを要求し、シークレット(例えば混合シード)を生成し直すことができる。セキュリティ・デバイス10は、その後、新たなプラグイン・デバイス30へ混合シードを発行することができる。
【0035】
プラグイン・デバイスとの通信
【0036】
上記したように、セキュリティ・デバイス10は、シークレットの転送を含めてプラグイン・デバイス30と通信することができる。通信は、後述するような認証ルーチンを含むことができる。認証は、プラグイン・デバイス30がセキュリティ・デバイス10に結合されるたびに行われることができる。セキュリティ・デバイス10及びプラグイン・デバイス30を認証するための1つのプロトコルが参照されている。この1つのプロトコルは例示的なものであり、他のプロトコルが用いられることもできる。同様に、認証プロトコルにおいて用いられることができる認証鍵を参照されたい。認証鍵は、製造中または他の状態を含めて種々の手段によって、プラグイン・デバイス30及びセキュリティ・デバイス10の両方に知られるように作られることができる。認証鍵は、認証プロセス中に用いられるようにセキュリティ・デバイス10及びプラグイン・デバイス30の両方に格納される。一部の実施形態において、認証鍵は、ホストコンピュータ20によって割り当てられる。任意選択で、追加的な安全保護のために、PINがプラグイン・デバイス30及びセキュリティ・デバイス10に割り当てられることもできる。PINは、ホストコンピュータ20に知られていないが、セキュリティ・デバイス10及びプラグイン・デバイス30にのみ知られている数である場合がある。
【0037】
一部の実施形態において、セキュリティ・デバイス10は、プラグイン・デバイス30にシークレット(例えば混合シード)を発行する前に、プラグイン・デバイス30を認証する。認証プロセスはプラグイン・デバイス30がセキュリティ・デバイス10に接続されるたびに用いられることができ、セキュリティ・デバイス10はデータの暗号化または復号に用いられる。ユーザがプラグイン・デバイス30をセキュリティ・デバイス10のポート(例えばプラグイン・デバイス・ポート16)に結合するとき、セキュリティ・デバイス10はプラグイン・デバイス30を検出する。プラグイン・デバイス30及びセキュリティ・デバイス10は、データ・セキュリティを確実にするための一方向または両方向チャレンジに関与する場合がある。一部の実施形態において、ホストコンピュータ20からの要求により認証プロセスが始まる。
【0038】
図5を参照すると、認証とシークレット・シェアリングを組み合せた方法の一実施形態が示されており、ここでは、セキュリティ・デバイス10(そのステップは実線で示されている)及びプラグイン・デバイス30(そのステップは破線で示されている)が各々認証/シェアリング方法のステップを実行する。このプロセスは、セキュリティ・デバイス10が乱数の要求をプラグイン・デバイス30に送信することから始まる(ステップ405)。プラグイン・デバイス30は、要求を受信し(ステップ410)、乱数を生成する(ステップ415)。乱数は、シークレット(例えば混合シード)を生成するために用いられた数と同じ数または異なる数であることができる(例えば、認証プロセスの一部として、プラグイン・デバイスは、プラグイン・デバイス及びセキュリティ・デバイスの両者が正しい認証鍵及びPIN(詳細に後述)を有することを確認するために用いられる乱数を生成することがある(このプロセスはそれ自体、上記したシークレット・シェアリング・プロセスから切り離されることがある))。プラグイン・デバイス30は、乱数を含むレスポンスをデバイス10に送信する(ステップ420)。乱数の伝送は、安全な通信リンク上で行われるかあるいは別な方法で安全にされることができる。
【0039】
デバイス10は、乱数を受信し(ステップ425)、受信した乱数を暗号化する(ステップ430)。セキュリティ・デバイス10は、セキュリティ・デバイス10及びプラグイン・デバイス30の両方に知られている認証鍵を用いて乱数を暗号化する。一実施形態において、認証鍵は、発行中にプラグイン・デバイス30に書き込まれる。セキュリティ・デバイス10は、乱数の暗号化のためのDES、3DESまたはAESなどの規格を用いることができる。他の適切な鍵またはアルゴリズムも、両者がプラグイン・デバイス30及びセキュリティ・デバイス10に知られている限り、用いられることがある。
【0040】
セキュリティ・デバイス10は、暗号化された乱数と共に外部認証要求をプラグイン・デバイス30に送り返す(ステップ435)。セキュリティ・デバイス10からの受信された通信と並行してまたはそれに応えて、プラグイン・デバイスの暗号化エンジン21はまた、その認証鍵及び暗号化アルゴリズム(セキュリティ・デバイス10で用いられているものと同じであると仮定する)を用いて乱数を暗号化する(ステップ440)。その後、プラグイン・デバイス30は、プラグイン・デバイスの暗号化された乱数がセキュリティ・デバイスの暗号化された乱数と一致するか否かをチェックする(ステップ445)。2つの暗号化された数が一致しなければ、プラグイン・デバイス30は、セキュリティ・デバイス10に失敗レスポンスを送信し、チャレンジは終了する。2つの暗号化された数が一致すれば、プラグイン・デバイスは成功レスポンスを送信することができる(ステップ450)。認証プロセスは、これで完了する。
【0041】
任意選択で、セキュリティ・デバイス10は、認証後にプラグイン・デバイス30の更なる妥当性検査を行う。妥当性検査ステップは、プラグイン・デバイス30がセキュリティ・デバイス10につながれることを確実にすることができる。妥当性検査部分において、セキュリティ・デバイス10は、個人認証番号(PIN)検証要求をPINと共にプラグイン・デバイス30に送信する(ステップ455)。プラグイン・デバイス30は、その格納されたPINが受信されたPINと等しいかチェックする(ステップ455)。PINが一致しなければ、プラグイン・デバイス30は失敗レスポンスを送信し、チャレンジは終了する。PINが一致すれば、プラグイン・デバイス30は成功レスポンスを送信し、チャレンジは成功裡に終了する。PIN検証は、特定のプラグイン・デバイス30を特定のセキュリティ・デバイス10に結び付けるために用いられることができる。一実施形態において、PINは、プラグイン・デバイスがホスト要求によって初期化されるときに生成される。
【0042】
上記した中では特定の認証プロトコルを参照しているが、互いに通信している通信相手の一方または双方をベリファイするものを含めて他の認証スキームも可能である。さらに、プラグイン・デバイス30またはセキュリティ・デバイス10のいずれか一方によって実行されている特定の動作が参照されているが、それらの動作は、代わりの実装において代わりの認証プロトコルを用いて他方によって実行されることもできる。
【0043】
暗号化/復号プロセス
【0044】
ひとたびプラグイン・デバイス30及びセキュリティ・デバイス10が認証(必要に応じてPIN妥当性検査を含む)を首尾よく完了したら、セキュリティ・デバイス10は、図6に示されているように、鍵(E/D鍵)を生成し、暗号化/復号プロセスを開始することができる。一実施形態において、セキュリティ・デバイスは、E/D鍵を生成する前に、プラグイン・デバイス30を認証しなければならない。セキュリティ・デバイス10は、プラグイン・デバイス30からシークレット(例えば混合シード)を検索(または受信)する(ステップ510)。ホスト・シードは、その後、シークレットから回復される(ステップ520)。混合シードが用いられるとき、セキュリティ・デバイス10(例えばセキュリティ・デバイス10のマイクロプロセッサ14)は、前に受信した乱数を用いて混合シードを逆スクランブルすることによって混合シードからホスト・シードを復元することができる。一部の実施形態において、セキュリティ・デバイス10は、必要に応じてホスト・シードを抽出するために検索のための乱数を格納する。その後、E/D鍵が生成される(ステップ530)。一実施形態において、マイクロプロセッサ14は、ホスト・シードをデバイス・シードと合わせて、E/D鍵を生成する。一実施形態において、セキュリティ・デバイス10が初期化されるときにデバイス・シードが生成される。一実施形態において、各セキュリティ・デバイスは固有のデバイス・シードを有する。デバイス・シードは、後に続く検索のためにメモリ17内に格納されることができる。最後に、暗号化/復号エンジン12はイネーブルされることができ、つまり、エンジンは、ひとたびE/D鍵を持てば、暗号化または復号を開始することができる(ステップ540)。
【0045】
一部の実施形態において、セキュリティ・デバイス10は、プラグイン・デバイス30が取外しまたは切断されるときを検出することができる。セキュリティ・デバイス10は、暗号化/復号エンジン13を停止させ、ホストコンピュータ20が大容量記憶装置40へ/からそれ以上データを格納したりアクセスしたりしないようにすることができる。一部の実施形態において、プラグイン・デバイス30が取り外されたことをセキュリティ・デバイス10が検出したとき、セキュリティ・デバイスはメモリからE/D鍵を一掃する。
【0046】
システムについて、1つのホストを有するものとして述べてきたが、複数のホストがセキュリティ・デバイス10と通信することもできる。プラグイン・デバイス30がセキュリティ・デバイス10と通信している限り、セキュリティ・デバイス10は、ホストの各々がデータに安全にアクセスしたり格納したりできるようにすることができる。
【0047】
一部の実施形態において、システムのコンフィギュレーションは、図2に示されているシステムから変更されている。ホストコンピュータ20は、プラグイン・デバイス30、大容量記憶装置40及びセキュリティ・デバイス10に接続することができる。ホストコンピュータ20は、必要に応じて、暗号化または復号されるデータをセキュリティ・デバイス10及び大容量記憶装置40に/から渡すことができる。
【0048】
高度に安全な鍵管理技術を用いてデータの暗号化及び復号を行うための方法が記載されている。本明細書に記載の方法は、実行時にのみ存在する鍵を生成する。鍵は、メモリ内に格納されず、セキュリティ・デバイスへ/から転送されない。それゆえ、鍵は、プラグイン・デバイス及びセキュリティ・デバイスが一緒に用いられないとき、例えばプラグイン・デバイスまたはセキュリティ・デバイスが個々に盗まれたとき、メモリから検索されることができない。これは、正規のセキュリティ・デバイス及び正規のプラグイン・デバイスの両方を持たない何者かに鍵がアクセスされることを防ぐ。
【0049】
一実施形態において、プラグイン・デバイスはE/D鍵を格納しないが、むしろ混合シード(即ち、ホスト・シード及び乱数のハイブリッド)を格納する。ホスト・シードは、E/D鍵を生成するためにデバイス・シードと組み合わされる前に、先ず、混合シードから抽出される。デバイスだけを制御してもデバイス・シードへのアクセスを与えることにしかならず、それではE/D鍵を生成するのに不十分である。プラグイン・デバイスを制御しても混合シードを提供するだけであり、それもまたE/D鍵を復元するのに不十分である。それゆえ、正しいプラグイン・デバイス及び正しいセキュリティ・デバイスの両方が一緒に所望のE/D鍵を生成するために必要とされる。プラグイン・デバイス、大容量記憶装置とセキュリティ・デバイス間のデータ接続、またはセキュリティ・デバイスの情報が個々に洩らされることがあっても、データは尚も安全である。
【0050】
大容量記憶装置40は、物理的にセキュリティ・デバイス10の近くに配置される必要がない。大容量記憶装置40とセキュリティ・デバイス10間で伝送されるいかなる情報も暗号化されるので、部外者、即ちホストコンピュータ20のユーザ以外の何者かによるアクセスは、暗号化されたデータへのアクセスが許されるだけである。
【0051】
本発明の多くの実施形態について述べてきた。それにもかかわらず、本発明の真の趣旨及び範囲から逸脱することなく種々の変更がなされ得ることを理解されたい。例えば、プラグイン・デバイスは、集積回路を含むか、あるいは、ユーザが運搬及び持ち運びし易い小型の別の読み取り可能な媒体に置き換えることができる。混合シードがプラグイン・デバイスからセキュリティ・デバイスへ転送される前に、代わりの、または追加の検証ステップが開始されることができる。本明細書に記載の乱数またはPINは、記号、文字、また時には数、またはその組合せを含むようなパスワードまたは文字列と交換されることができる。よって、特許請求の範囲内に他の実施形態が含まれる。
【図面の簡単な説明】
【0052】
【図1】記憶装置と通信しているホストコンピュータの回路図。
【図2】プラグイン・デバイスと通信するように構成されたセキュリティ・デバイスの回路図。
【図3】セキュリティのためのプラグイン・デバイスを準備し、使用するためのフロー図。
【図4】プラグイン・デバイスへのシークレットの発行を説明するフロー図。
【図5】プラグイン・デバイス及びセキュリティ・デバイスを認証及びベリファイするためのフロー図。
【図6】プラグイン・デバイスからシークレットをロードして鍵を生成するためのフロー図。

【特許請求の範囲】
【請求項1】
セキュリティ・デバイスにおいてデータ・セキュリティを与える方法であって、
対応する記憶装置へ/からのデータの暗号化または復号を制御するようなセキュリティ・デバイスに、プラグイン・デバイスを結合するステップと、
データ暗号化または復号動作が必要とされるとき、プラグイン・デバイスからシークレットを検索するステップと、
前記シークレットからホスト・シードを回復するステップと、
前記ホスト・シードから、データの暗号化または復号に使われる鍵を生成するステップとを含むことを特徴とする方法。
【請求項2】
前記鍵を用いてデータを暗号化または復号するステップを更に含むことを特徴とする請求項1の方法。
【請求項3】
前記シークレットからホスト・シードを回復する前記ステップが、乱数を用いて混合シードを逆スクランブルするステップを含むことを特徴とする請求項1の方法。
【請求項4】
前記プラグイン・デバイスから前記乱数を受信するステップを更に含むことを特徴とする請求項3の方法。
【請求項5】
前記ホスト・シードから鍵を生成する前記ステップが、前記ホスト・シード及びデバイス・シードから前記鍵を生成するステップを含むことを特徴とする請求項1の方法。
【請求項6】
前記方法が、前記シークレットの検索の前に前記セキュリティ・デバイスを認証するステップを更に含むことを特徴とする請求項1の方法。
【請求項7】
前記認証するステップが、
乱数を暗号化して、暗号化された乱数を生成するステップと、
前記暗号化された乱数を前記プラグイン・デバイスに送信するステップと、
前記プラグイン・デバイスから成功メッセージを受信ステップとを含むことを特徴とする請求項6の方法。
【請求項8】
前記プラグイン・デバイスを首尾よく認証するステップが、ホスト・シードから鍵を生成する前記ステップを実行するように要求されることを特徴とする請求項6の方法。
【請求項9】
前記プラグイン・デバイスがセキュリティ・デバイスから切断されていることを検出するステップと、
前記切断の検出に応じて、前記鍵をメモリから削除するかあるいは暗号化または復号機能をディセーブルするステップとを更に含むことを特徴とする請求項1の方法。
【請求項10】
データ・セキュリティを与える方法であって、
安全な暗号化または復号動作の促進の要求を受信するステップと、
ランダムに生成される数を提供するステップと、
ホスト・シード及び前記ランダムに生成される数から生成されるシークレットを受信するステップと、
前記シークレットを実行時まで記憶するステップとを含むことを特徴とする方法。
【請求項11】
前記混合シードのリクエスタを認証するステップと、
前記リクエスタを首尾よく認証した後に前記リクエスタに前記混合シードを提供するステップを更に含むことを特徴とする請求項10の方法。
【請求項12】
前記リクエスタを認証するステップが、
ランダムに生成される数を暗号化して、ローカルで暗号化されたランダムに生成される数を生成するステップと、
前記ローカルで暗号化されたランダムに生成される数を、前記リクエスタから受信した暗号化されたランダムに生成される数と比較するステップと、
一致があるか否かを判定し、もしあれば、前記シークレットを前記リクエスタに提供するステップを含むことを特徴とする請求項11の方法。
【請求項13】
前記リクエスタから受信した一連のデータと記憶されている一連のデータとが一致するか否かを判定するステップを含む、妥当性検査ステップを実行するステップを更に含むことを特徴とする請求項11の方法。
【請求項14】
前記提供するステップで提供される前記ランダムに生成される数が、ローカルで暗号化されたランダムに生成される数を生成するように暗号化された前記ランダムに生成される数であることを特徴とする請求項11の方法。
【請求項15】
データ・セキュリティを与えるためのプラグイン・デバイスであって、
乱数を生成するための乱数ジェネレータと、
前記乱数を暗号化するための暗号化エンジンと、
前記暗号化された乱数を、受信された暗号化された乱数と比較するためのマッチング・エンジンと、
両乱数が一致したと前記マッチング・エンジンが判断したらセキュリティ・デバイスと共有されるシークレットを格納するためのメモリとを含むことを特徴とするプラグイン・デバイス。
【請求項16】
前記マッチング・エンジンが、前記暗号化エンジンによって暗号化された数と受信された暗号化された数とが一致するか否かを判定するように構成されていることを特徴とする請求項15のプラグイン・デバイス。
【請求項17】
前記メモリが、前記乱数ジェネレータによって生成された乱数と組み合わされている混合シードを格納するように構成されていることを特徴とする請求項15のプラグイン・デバイス。
【請求項18】
前記メモリが、前記乱数ジェネレータによって生成された乱数を暗号化するために前記暗号化エンジンによって用いられる認証鍵を格納するように構成され、
前記マッチング・エンジンが、前記暗号化鍵を用いて暗号化された乱数と受信された暗号化された乱数とが一致するか否かを判定することを特徴とする請求項15のプラグイン・デバイス。
【請求項19】
前記プラグイン・デバイスがスマートカードであることを特徴とする請求項15のプラグイン・デバイス。
【請求項20】
セキュリティ・デバイスであって、
ホスト・シードを受信するためにホストコンピュータに接続するための手段と、
デバイス・シードまたは乱数のうち少なくとも一方を格納するように構成されているメモリと、
前記ホスト鍵をシークレット内に隠し、前記シークレットから前記ホスト・シードを抽出し、前記ホスト・シードから鍵を生成するが、但しそれは前記シークレットを格納する認証されたデバイスに結合されているときのみであるように構成されたプロセッサとを含むことを特徴とするセキュリティ・デバイス。
【請求項21】
前記セキュリティ・デバイスと前記認証されたデバイス間での前記シークレットの通信を可能にするようにプラグイン・デバイスに接続するための手段を更に含むことを特徴とする請求項20のセキュリティ・デバイス。
【請求項22】
データ記憶装置に接続するための手段を更に含み、前記データ記憶装置が前記鍵を用いて暗号化されたデータを格納することを特徴とする請求項20のセキュリティ・デバイス。
【請求項23】
データを保護するためのシステムであって、
ホストコンピュータと、
セキュリティ・デバイスとを含み、前記セキュリティ・デバイスが、
ホスト・シードを受信するために前記ホストコンピュータに接続するための手段と、
デバイス・シードまたは乱数のうち少なくとも一方を格納するように構成されているメモリと、
前記ホスト鍵をシークレット内に隠し、前記シークレットから前記ホスト・シードを抽出し、前記ホスト・シードから鍵を生成するが、但しそれは前記シークレットを格納する認証可能デバイスに結合されているときのみであるように構成されたプロセッサとを含み、
前記システムが、更に
前記乱数を生成し、前記シークレットを格納するように構成された認証可能デバイスと、
暗号化されたデータを格納するためのデータ記憶装置とを含むことを特徴とするシステム。
【請求項24】
前記セキュリティ・デバイスが、前記データ記憶装置に接続するための手段を更に含むことを特徴とする請求項23のシステム。
【請求項25】
前記プロセッサが、前記ホスト・シード及び前記デバイス・シードからの鍵を生成することを特徴とする請求項23のシステム。
【請求項26】
コンピュータ読み取り可能な媒体であって、プロセッサによって実行されるとき、
対応する記憶装置へ/からのデータの暗号化または復号を制御するようなセキュリティ・デバイスに、プラグイン・デバイスを結合する動作と、
データ暗号化または復号動作が必要とされるとき、プラグイン・デバイスからシークレットを検索する動作と、
前記シークレットからホスト・シードを回復する動作と、
前記ホスト・シードから、データの暗号化または復号に用いられる鍵を生成する動作とを前記プロセッサに実行させるような命令を含むコンピュータ読み取り可能な媒体。
【請求項27】
鍵を用いて前記前記データを暗号化または復号する動作を前記プロセッサに実行させるための命令を更に含むことを特徴とする請求項26のコンピュータ読み取り可能な媒体。
【請求項28】
前記シークレットからホスト・シードを回復する前記動作が、乱数を用いて混合シードを逆スクランブルする動作を含むことを特徴とする請求項26のコンピュータ読み取り可能な媒体。
【請求項29】
前記プラグイン・デバイスから前記乱数を受信する動作を前記プロセッサに実行させるための命令を更に含むことを特徴とする請求項26のコンピュータ読み取り可能な媒体。
【請求項30】
前記ホスト・シードから鍵を生成する動作が、前記ホスト・シード及びデバイス・シードから前記鍵を生成する動作を含むことを特徴とする請求項26のコンピュータ読み取り可能な媒体。
【請求項31】
前記方法が、前記シークレットの検索の前に前記セキュリティ・デバイスを認証する動作を更に含むことを特徴とする請求項26のコンピュータ読み取り可能な媒体。
【請求項32】
前記認証する動作が、
乱数を暗号化して、暗号化された乱数を生成する動作と、
前記暗号化された乱数を前記プラグイン・デバイスに送信する動作と、
前記プラグイン・デバイスから成功メッセージを受信する動作とを含むことを特徴とする請求項31のコンピュータ読み取り可能な媒体。
【請求項33】
前記プラグイン・デバイスを首尾よく認証する動作が、前記ホスト・シードから鍵を生成する前記動作を実行するように要求されることを特徴とする請求項31のコンピュータ読み取り可能な媒体。
【請求項34】
前記プラグイン・デバイスがセキュリティ・デバイスから切断されていることを検出する動作と、
前記切断の検出に応じて、前記鍵をメモリから削除するかあるいは暗号化または復号機能をディセーブルする動作とを前記プロセッサに実行させるような命令を更に含むことを特徴とする請求項26のコンピュータ読み取り可能な媒体。
【請求項35】
コンピュータ読み取り可能な媒体であって、プロセッサによって実行されるとき、
安全な暗号化または復号動作の促進の要求を受信する動作と、
ランダムに生成される数を提供する動作と、
ホスト・シード及び前記ランダムに生成される数から生成されるシークレットを受信する動作と、
前記シークレットを実行時まで記憶する動作とを前記プロセッサに実行させるような命令を含むコンピュータ読み取り可能な媒体。
【請求項36】
前記混合シードのリクエスタを認証する動作と、
前記リクエスタを首尾よく認証した後に前記リクエスタに前記混合シードを提供する動作とを前記プロセッサに実行させるような命令を更に含むことを特徴とする請求項36のコンピュータ読み取り可能な媒体。
【請求項37】
前記リクエスタを認証する前記動作が、
前記ランダムに生成される数を暗号化して、ローカルで暗号化されたランダムに生成される数を生成する動作と、
前記ローカルで暗号化されたランダムに生成される数を、前記リクエスタから受信した暗号化されたランダムに生成される数と比較する動作と、
一致があるか否かを判定し、もしあれば、前記シークレットを前記リクエスタに提供する動作とを含むことを特徴とする請求項36のコンピュータ読み取り可能な媒体。
【請求項38】
前記リクエスタから受信した一連のデータと記憶されている一連のデータとが一致するか否かを判定するステップを含む、妥当性検査ステップを実行する動作を前記プロセッサに実行させるような命令を更に含むことを特徴とする請求項36のコンピュータ読み取り可能な媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2009−526472(P2009−526472A)
【公表日】平成21年7月16日(2009.7.16)
【国際特許分類】
【出願番号】特願2008−554211(P2008−554211)
【出願日】平成18年2月9日(2006.2.9)
【国際出願番号】PCT/US2006/004800
【国際公開番号】WO2007/094763
【国際公開日】平成19年8月23日(2007.8.23)
【出願人】(591225523)アトメル・コーポレイション (57)
【氏名又は名称原語表記】ATMEL CORPORATION
【Fターム(参考)】