(57)【特許請求の範囲】
【請求項１】
ロックされたかまたはロック解除することができない記憶デバイスをロック解除するためのシステムであって、
キーをセキュリティ上安全に記憶するためのキー・マネージャと、
前記キーからビットを除去するための手段と、
前記除去したビットの位置および前記除去したビット数（Ｎ）をセキュリティ上安全に記憶するための除去ビット・マネージャと、
前記キーからビットを除去した後、前記キーにビットを追加してヒントを発生するための手段と、
前記追加したビットの位置および前記追加したビット数をセキュリティ上安全に記憶するための追加ビット・マネージャと、
前記キー・マネージャにおける前記キーが紛失したか、または前記記憶デバイスをロック解除することができない場合、前記追加ビットの前記位置において前記ヒントから前記追加ビットを除去するための手段と、
前記除去ビットの前記位置において前記ヒントにそれぞれ可能なＮビットを配置して２Ｎの可能なキーを発生するための手段と、
前記記憶デバイスがロック解除されるまで前記２Ｎの可能なキーの各々を適用するための手段と、
を含む、システム。
【請求項２】
前記キー・マネージャ、前記除去ビット・マネージャ、または前記追加ビット・マネージャの１つが記憶デバイスまたはデータベースを含み、前記記憶デバイスまたは前記データベースと関連付けて動作する、請求項１に記載のシステム。
【請求項３】
前記キーがＳＩＤ（セキュリティ識別子）である、請求項１または２に記載のシステム。
【請求項４】
暗号化／復号化アルゴリズムを利用することによって、前記キーを用いて記憶デバイスにおけるデータを暗号化または復号化する、請求項1から３のいずれかに記載のシステム。
【請求項５】
前記暗号化／復号化アルゴリズムが、ＲＳＡ（リベスト  シャミア  エイドルマン）、ＤＥＳ（データ暗号化標準）、ブローフィッシュ、ＩＤＥＡ（アイディア）、ＳＥＡＬ（ソフトウェア最適化暗号アルゴリズム）、およびＲＣ４（Rivest Cipher 4）の１つ以上である、請求項４に記載のシステム。
【請求項６】
前記除去ビット・マネージャおよび前記追加ビット・マネージャが同一の組織または同一の人物によって管理されない、請求項１から５のいずれかに記載のシステム。
【請求項７】
前記ヒントが記憶デバイスにおいてセキュリティ上安全に記憶される、請求項１から６のいずれかに記載のシステム。
【請求項８】
ロックされたかまたはロック解除することができない記憶デバイスをロック解除するための方法であって、
キーを記憶するステップと、
前記キーからビットを除去するステップと、
前記除去したビットの位置および前記除去したビット数（Ｎ）を記憶するステップと、
前記キーからビットを除去した後、前記キーにビットを追加してヒントを発生するステップと、
前記追加したビットの位置および前記追加したビット数を記憶するステップと、
前記キーが紛失したか、または前記記憶デバイスをロック解除することができない場合、前記追加したビットの前記位置において前記ヒントから前記追加したビットを除去するステップと、
前記除去したビットの前記位置において前記ヒントにそれぞれ可能なＮビットを配置して２Ｎの可能なキーを発生するステップと、
前記記憶デバイスがロック解除されるまで前記２Ｎの可能なキーの各々を前記記憶デバイスに適用するステップと、
を含み
これらのステップをコンピュータに実行させる、方法。
【請求項９】
前記キー、前記除去したビットの前記位置および前記除去したビット数、または前記追加したビットの前記位置および前記追加したビット数の１つが、記憶デバイスまたはデータベースにセキュリティ上安全に記憶される、請求項８に記載の方法。
【請求項１０】
前記キーがＳＩＤ（セキュリティ識別子）である、請求項８または９に記載の方法。
【請求項１１】
暗号化／復号化アルゴリズムを利用することによって、前記キーを用いて記憶デバイスにおけるデータを暗号化または復号化する、請求項８から１０のいずれかに記載の方法。
【請求項１２】
前記暗号化／復号化アルゴリズムが、ＲＳＡ（リベスト  シャミア  エイドルマン）、ＤＥＳ（データ暗号化標準）、ブローフィッシュ、ＩＤＥＡ（アイディア）、ＳＥＡＬ（ソフトウェア最適化暗号アルゴリズム）、およびＲＣ４（Rivest Cipher 4）の１つ以上である、請求項１１に記載の方法。
【請求項１３】
前記除去したビットの前記位置および前記追加したビットの前記位置が同一の組織または同一の人物に知られない、請求項８から１２のいずれかに記載の方法。
【請求項１４】
前記ヒントが記憶デバイスにおいてセキュリティ上安全に記憶される、請求項８から１３のいずれかに記載の方法。
【請求項１５】
コンピュータ・プログラム・コードを含むコンピュータ・プログラムであって、コンピュータ・システムにロードされて実行されると、前記コンピュータ・システムに、請求項８から１４のいずれかに記載の方法の全てのステップを実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、暗号化記憶デバイスのセキュリティ識別子（ＳＩＤ：Security Identifier）管理に関する。更に具体的には、本発明は、ＳＩＤが紛失または破損した場合のＳＩＤの回復に関する。
【背景技術】
【０００２】
例えば磁気ディスク、光ディスク、固体ドライブ、ハード・ディスク、コンパクト・ディスク、デジタル多用途ディスク、フラッシュ・メモリ・カード、直接アクセス記憶装置（ＤＡＳＤ：direct access storage device）のような記憶デバイスは、これに記憶される全てのデータを暗号化することができる。記憶デバイスにデータを書き込む場合、記憶デバイスは暗号化／復号化アルゴリズムを用いることによってそのデータを暗号化する。記憶デバイスからデータを読み出す場合、記憶デバイスは暗号化／復号化アルゴリズムを用いることによってそのデータを復号化する。暗号化／復号化アルゴリズムは、暗号化キーを知らない限りは暗号化データの復号化をほぼ不可能とするようになっており、この結果、高いレベルのデータ・セキュリティが得られる。暗号化／復号化は、記憶デバイス自体で行われ、記憶デバイス上でファームウェア（例えばハードウェア・デバイスに埋め込まれたコンピュータ・プログラム）によって管理される。
【０００３】
ファームウェアは、記憶デバイスの使用前にデータの所有者のみに理解される私用値（private value）に設定されたＳＩＤを用いて暗号化データにアクセスすることを可能とする。ＳＩＤは、ユーザまたはグループを一意に識別するために用いられる英数字の文字列を指す。あるいは、ＳＩＤは、データの暗号化または復号化あるいはその両方を行うために用いられる１つの情報（パラメータ）を指す。ＳＩＤを用いて、記憶デバイス、従って記憶デバイス内のデータに対するアクセスをロックおよびロック解除する。記憶デバイスがロックされた状態（すなわち有効なＳＩＤを有するユーザのみが記憶デバイス内のデータにアクセスすることができる状態）にある間は、記憶デバイス上のデータにアクセスすることはできない。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Patterson等の「A Case for Redundant Array of InexpensiveDisks (RAID)」（以後、「Patterson」）（SIGMOD Conference、１９８８年）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＳＩＤは、ＳＩＤを管理および発行する別個の機械に記憶される。記憶デバイスをロック解除し、記憶デバイス内のデータに対するアクセスを得るために、ユーザまたはコンピューティング・デバイスは、この機械からＳＩＤを取得し、このＳＩＤを記憶デバイスに適用して記憶デバイス内のデータにアクセスする。しかしながら、この機械が壊れる場合がある。このため、機械が提供したＳＩＤが無効なＳＩＤであることがある。あるいは、ＳＩＤが機械から検索された時点と、ＳＩＤを記憶デバイスに適用する時点との間に、ＳＩＤが破損する可能性がある。
【０００６】
ＳＩＤの有効性が失われた結果、１組のデータ全体が永久的にロックされアクセス不可能となる恐れがある。ＳＩＤが破損すると、そのＳＩＤに関連した記憶デバイス（複数の記憶デバイス）にデータを記憶するユーザ全員に影響が及ぶことがある。記憶デバイス全体に用いられる共有ＳＩＤが破損または紛失すると、記憶デバイス内の全てのデータの復号化が不可能となるので、このデータを回復することができない。
【０００７】
従って、記憶デバイスのキーまたはＳＩＤが紛失または破損した場合に、ロックされたかまたはロック解除することができない記憶デバイスをロック解除するための方法およびシステムを提供することは望ましいであろう。
【課題を解決するための手段】
【０００８】
本発明は、記憶デバイスのキーまたはＳＩＤが紛失したか破損した場合に、ロックされたかまたはロック解除することができない記憶デバイスまたはこの記憶デバイス内のデータをロック解除するための方法およびシステムである。
【０００９】
一実施形態において、ロックされたかまたはロック解除することができない記憶デバイスをロック解除するためのシステムが提供される。このシステムは、
キーをセキュリティ上安全に記憶するためのキー・マネージャと、
キーからビットを除去するための手段と、
除去したビットの位置および除去したビット数（Ｎ）をセキュリティ上安全に記憶するための除去ビット・マネージャと、
キーからビットを除去した後、キーにビットを追加してヒントを発生するための手段と、
追加したビットの位置および追加したビット数をセキュリティ上安全に記憶するための追加ビット・マネージャと、
キー・マネージャにおけるキーが紛失したか、または記憶デバイスをロック解除することができない場合、追加ビットの位置においてヒントから追加ビットを除去するための手段と、
除去ビットの位置においてヒントにそれぞれ可能なＮビットを配置して２Ｎの可能なキーを発生するための手段と、
記憶デバイスがロック解除されるまで２Ｎの可能なキーの各々を適用するための手段と、
を含む。
【００１０】
一実施形態においては、ロックされたかまたはロック解除することができない記憶デバイスをロック解除するための方法が提供される。この方法は、
キーを記憶することと、
キーからビットを除去することと、
除去したビットの位置および除去したビット数（Ｎ）を記憶することと、
キーからビットを除去した後、キーにビットを追加してヒントを発生することと、
追加したビットの位置および追加したビット数を記憶することと、
キー・マネージャにおけるキーが紛失したか、または記憶デバイスをロック解除することができない場合、追加ビットの位置においてヒントから追加ビットを除去することと、
除去ビットの位置においてヒントにそれぞれ可能なＮビットを配置して２Ｎの可能なキーを発生することと、
記憶デバイスがロック解除されるまで２Ｎの可能なキーの各々を記憶デバイスに適用することと、
を含む。
【００１１】
更に別の実施形態においては、暗号化／復号化アルゴリズムを利用することによって、キーを用いて記憶デバイスにおけるデータを暗号化または復号化する。
【００１２】
更に別の実施形態においては、除去ビットの位置および追加ビットの位置は同一の組織または同一の人物に知られない。
【００１３】
添付図面は、本発明を更に理解するために含まれ、本明細書に組み込まれてその一部を構成する。図面は、本発明の実施形態を例示し、記述と共に、本発明の原理を説明する役割を果たす。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態においてヒントを発生するための方法ステップを示す。
【図２】本発明の一実施形態におけるシステム図を示す。
【図３】本発明の一実施形態においてヒントを記憶するための方法ステップを示す。
【図４】本発明の一実施形態においてヒントを用いて記憶デバイスをロック解除するための方法ステップを示す。
【図５】本発明の一実施形態における別のシステム図を示す。
【発明を実施するための形態】
【００１５】
図１は、本発明の一実施形態においてヒント（hint）を発生するための方法ステップを示す。デフォルトの製造値（すなわち製造目的のために一時的に割り当てられたキーの初期値）から記憶デバイスのキーが更新されると、ヒントを発生する。このヒントは、キーが紛失したか、破損したか、入手不可能になったか、無効になったか、または使用不可能になった場合に、記憶デバイスをロック解除するために用いられる。一実施形態において、キーはＭビットの二進数である。しかしながら、このキーは、暗号化／復号化アルゴリズムと関連付けて記憶デバイスをロックまたはロック解除するために用いられるいずれかの英数字とすることができる。キーは、ユーザまたはグループを一意に識別するために用いるＳＩＤである場合がある。キーは、暗号化／復号化アルゴリズムと関連付けて記憶デバイス内のデータを暗号化または復号化するために用いる１つの情報である場合がある。暗号化／復号化アルゴリズムは、限定ではないが、ＲＳＡ（Rivest Shamir Adleman：リベスト  シャミア  エイドルマン）、ＤＥＳ（Data Encryption Standard：データ暗号化標準）、Blowfish（ブローフィッシュ）、ＩＤＥＡ（アイディア：International Data Encryption Algorithm）、ＳＥＡＬ（Software-optimizedEncryption Algorithm：ソフトウェア最適化暗号アルゴリズム）、およびＲＣ４（Rivest Cipher 4）を含む。
【００１６】
ステップ１００において、ユーザは記憶デバイスにＭビットのキーを記憶する。一実施形態では、Ｍビットのキーは、記憶デバイスまたはデータベースにおいてパスワード保護を実施することによって、記憶デバイスまたはデータベースにセキュリティ上安全に記憶される。ステップ１１０において、ユーザはＭビットのキーからＮビットを除去し、除去したＮビットを廃棄する。しかしながら、ユーザは、除去したビット数（Ｎ）および除去したビットの位置を記憶する。一実施形態では、除去したビット数（Ｎ）および除去したビットの位置は、例えば記憶デバイスまたはデータベース上にパスワード保護を実施することによって、記憶デバイスまたはデータベースにセキュリティ上安全に記憶される。更に別の実施形態では、除去したビット数（Ｎ）および除去したビットの位置は、異なる記憶デバイスまたは異なるデータベースに別個に記憶される。更に別の実施形態では、ユーザは複数の位置でビットを除去する。次いで、ユーザは、各位置の除去したビット数を記憶する。
【００１７】
Ｎビットを除去した後、ステップ１２０では、キーはＭ−Ｎビットから成る。ステップ１３０において、ユーザはキーにランダム・ビットを追加する。ランダム・ビットは、キーのどこにでも追加することができる。一実施形態では、ランダム・ビット数（Ｋ）はＮに均しい。別の実施形態では、ランダム・ビット数はＮとは異なる。ランダム・ビットを追加した後、ユーザは、追加したビットの位置および追加したビット数を記憶デバイスまたはデータベースに記憶する。ユーザは、記憶デバイスまたはデータベース上にパスワード保護を実施することによって、記憶デバイスまたはデータベースにこの位置および数をセキュリティ上安全に記憶することができる。更に別の実施形態では、ユーザは、キーにおける複数の位置にランダム・ビットを追加することができる。次いで、ユーザは、追加したビット数および追加したビットの各位置を記憶する。
【００１８】
ランダム・ビットを追加した後、ステップ１４０では、キーはＭ−Ｎ＋Ｋから成る。ランダム・ビット数（Ｋ）がＮと同じである場合、ステップ１４０においてキーはＭビットから成る。ステップ１５０において、ユーザは、ステップ１１０から１４０によって構築された（Ｍ−Ｎ＋Ｋ）ビットのキーを、ヒントとして記憶する。ステップ１００におけるキーを記憶している記憶デバイスの欠陥のために、このキー（すなわちステップ１００におけるキー）が紛失したか、無効になったか、入手不可能になったか、または使用不可能になった場合に、ヒントを用いることができる。ヒントは、記憶デバイスまたはデータベースに記憶することができる。ヒントは、例えば記憶デバイスまたはデータベース上にパスワード保護を実施することによって、記憶デバイスまたはデータベースにセキュリティ上安全に記憶することができる。一実施形態では、ヒントは、ステップ１１０から１４０によって構築された二進数である。別の実施形態では、ヒントは、ＡＳＣＩＩコードによって表される数字、文字、または記号である。
【００１９】
一実施形態において、除去したビットの位置（複数の位置）、各除去位置における除去したビット数、追加したビットの位置（複数の位置）、および各追加位置における追加したビット数は、それぞれ異なる組織またはそれぞれ異なる人物あるいはその両方によって管理されるかまたは知られている。従って、キーは、単一の組織または単一の人物によってヒントから再構築することはできない。ヒントからキーを再構築する方法については、後に詳しく述べる。
【００２０】
図２は、本発明の一実施形態におけるシステム図を示す。図２は、アダプタ・インタフェース・モジュール２２０がデータ記憶デバイスにおいて実行され、キー（例えばＳＩＤ）、除去したビットの情報２００（すなわち除去したビットの位置（複数の位置）または各位置における除去したビット数あるいはその両方）、および追加したビットの情報２４０（すなわち追加したビットの位置（複数の位置）または各位置における追加したビット数あるいはその両方）を受信した後にヒントを構築することを示す。アダプタ２２０は、記憶デバイス（例えばディスク２５０）に取り付けられ、冗長またはＲＡＩＤ（Redundant Array of IndependentDisks）等の様々な記憶アルゴリズムを提供する。冗長またはＲＡＩＤについては、Patterson等の「A Case for Redundant Array of InexpensiveDisks (RAID)」（以後、「Patterson」）（SIGMOD Conference、１９８８年）に記載されている。一実施形態では、アダプタ２２０は、ユーザが用いているコンピューティング・デバイス（図示せず）とユーザがデータを記憶する記憶デバイス（例えばディスク２５０）との間のインタフェースである。
【００２１】
キー（例えばＳＩＤ２１０）がユーザまたはオペレーティング・システム（例えばMicrosoft Windows（Ｒ））によって生成されると、アダプタ２２０は、接続しているコンピューティング・デバイス（図示せず）のユーザまたはオペレーティング・システムから、キー（例えばＳＩＤ２１０）を受信する。次いで、ユーザまたはオペレーティング・システムは、除去ビット情報２００を提供することができる。除去ビット情報２００は、限定ではないが、除去ビットの位置（複数の位置）および各位置における除去ビット数を含む。換言すると、情報２００は、ビットが除去される位置および各位置における除去されるビット数を特定する。次いで、アダプタ２００は、特定された位置（複数の位置）において特定されたビット数を除去する。
【００２２】
キーにおいて特定されたビット数を除去した後、アダプタ２２０は、ユーザまたはオペレーティング・システムから、追加ビット情報２４０を受信する。情報２４０を提供するユーザまたはオペレーティング・システムは、情報２００を提供したユーザまたはオペレーティング・システムとは異なる場合がある。別の実施形態では、情報２４０を提供するユーザまたはオペレーティング・システムは、情報２００を提供したユーザまたはオペレーティング・システムと同じである。追加ビットの情報２４０は、限定ではないが、追加ビットの位置（複数の位置）および各位置における追加ビット数を含む。換言すると、情報２４０は、ビットが追加される位置および各位置において追加されるビットの数を特定する。次いで、アダプタ２００は、特定された位置（複数の位置）において特定されたビット数を追加する。
【００２３】
キーにおいて特定されたビット数を追加した後、キーはヒント２３０になる。ヒント２３０は記憶デバイス（例えばディスク２５０）に記憶することができる。
【００２４】
一実施形態では、アダプタ２２０は、プログラミング言語（例えばアセンブリ言語、二進コード、Ｃ、Ｃ＋＋、Java、ＮＥＴ等）を用いて記憶デバイス（例えばディスク２５０）と関連付けられたファームウェアとして実施される。一実施形態では、アダプタ２２０は、プロセッサ（例えばIntel（Ｒ）Pentium（Ｒ）、IBM（Ｒ）Power PC（Ｒ）、AMD（Ｒ）Opteron（Ｒ））によって実行される命令（例えば機械言語またはアセンブリ言語）として、コンピュータ読み取り可能媒体（例えばＣＤ（コンパクト・ディスク）、ＤＶＤ（デジタル多用途ディスク）、ＨＤＤ（ハード・ディスク・ドライブ）、メモリ）に記録される。
【００２５】
別の実施形態では、アダプタ２２０は、ハードウェア記述言語（Verilog、ＶＨＤＬ、Handel-C、またはSystem C）を用いて、再構成可能ハードウェア（例えばＦＰＧＡ（Field Programmable Gate Array）またはＣＰＬＤ（ComplexProgrammable Logic Device）上にハードウェアとして実施される。更に別の実施形態では、アダプタ２２０は、準カスタム設計方法論（すなわち標準セルおよびハードウェア記述言語を用いてチップを設計する）を用いて、半導体チップ（例えばＡＳＩＣ（特定用途向け集積回路）上に実施される。
【００２６】
更に別の実施形態では、アダプタ２２０は、コンピューティング・デバイス（例えばサーバ、メインフレーム、デスクトップ、ラップトップ等）において実行されることによって、コンピューティング・デバイスによってハードウェアとして実施される。コンピューティング・デバイスは、限定ではないが、プロセッサ（複数のプロセッサ）、メモリ（複数のメモリ）、ディスプレイ・デバイス（複数のディスプレイ・デバイス）、入出力デバイス（複数の入出力デバイス）、およびネットワーク・インタフェース（複数のネットワーク・インタフェース）を含む。
【００２７】
図３は、本発明の一実施形態においてヒントを登録するための方法ステップを示す。ステップ３００において、ヒントを登録するためのプロセスを開始する。ステップ３１０において、アダプタ２２０またはファームウェアは、図１に関して本明細書中に記載したように、キー（例えばＳＩＤ２１０）からビットを除去し、次いでキーにビットを追加することによって、キーからヒントを生成する。次いで、アダプタ２２０またはファームウェアは、生成したヒントをキーに関連付ける。ステップ３２０において、アダプタ２２０またはファームウェアは、キーに関連した記憶デバイス（複数のデバイス）を更新して、ヒントとの関連付けを生成することができる。
【００２８】
記憶デバイス（複数の記憶デバイス）のヒントとの関連付けに成功した後、ステップ３３０において、アダプタ２２０またはファームウェアは、ヒントを記憶デバイスまたはデータベースに記憶する。ステップ３４０において、ヒントを登録するためのプロセスは完了する。
【００２９】
図４は、本発明の一実施形態において、記憶したヒントを用いることによってロックされた記憶デバイスをロック解除する方法ステップを示す。記憶デバイス内のデータを検索するため、ユーザまたはユーザが動作中のコンピューティング・デバイスは、記憶デバイスまたはデータベースから対応するキーを取得することができる。次いで、ユーザは、対応するキーをアダプタ２２０に提供して、記憶デバイスをロック解除するか、または記憶デバイス内のデータを復号化する。しかしながら、対応するキーが破損しているために、対応するキーが、記憶デバイスをロック解除することまたは記憶デバイス内のデータを復号化することができない場合がある。例えば、対応するキーを記憶している記憶デバイスまたはデータベースが欠陥を有し、これが最初のキーに影響を与えた。そのため、記憶デバイスまたはデータベースからキーを取得した際に、記憶デバイスまたはデータベースが欠陥のあるキーを提供した。あるいは、記憶デバイスまたはデータベースは有効なキーを提供した。しかしながら、通信経路上のジッタまたは通信経路上のソフトウェア欠陥のために、有効なキーがアダプタ２２０またはファームウェアに送出される間に破損する場合がある。
【００３０】
アダプタ２２０が、提供されたキーによって記憶デバイスをロック解除することができない場合、ステップ４００において、アダプタ２２０は、提供されたキーに関連付けられたヒントを記憶している記憶デバイスまたはデータベースにアクセスすることができる。ステップ４１０において、アダプタ２２０は、記憶デバイスまたはデータベースから、ヒント（例えば二進数、文字のＡＳＣＩＩコード、数字のＡＳＣＩＩコード、または記号のＡＳＣＩＩコード）を検索する。ステップ４２０において、アダプタ２２０は以下のステップを実行することによって可能なキーを計算する。
【００３１】
（１）記憶デバイスまたはデータベースからヒントを検索した後、アダプタ２２０は、ヒントに関連付けた記憶デバイスまたはデータベースから追加ビットの情報を検索する。追加ビットの情報は、ビットが追加された位置および各位置において追加されたビット数を特定することができる。次いで、アダプタ２２０は、ビットが追加された各位置において追加ビットを除去する。追加ビットを除去した後、ヒント内のビット数は、追加ビット数だけ減っている。
【００３２】
（２）アダプタ２２０は、ヒントに関連付けた記憶デバイスまたはデータベースから除去ビットの情報を検索する。除去ビットの情報は、ビットが除去された位置および各位置において除去されたビット数を特定することができる。除去ビット情報における合計除去ビット数を、Ｎと呼ぶ。
【００３３】
（３）アダプタ２２０は、ビットが除去された各位置に可能なビットを配置する。可能なビットは、その位置において均しい数の除去ビットを有することができる。例えば、ヒントは、０１０１＿１１００＿０１１０＿００００＿１１１１２である。最下位４ビットが追加ビットである場合、アダプタ２２０はヒントから最後の４ビットを除去する。ここで、ヒントは０１０１＿１１００＿００００２となる。最上位４ビットが除去ビットである場合、アダプタは最上位４ビットの位置で各可能な４ビットを配置する。換言すると、ヒントはここで、ＸＸＸＸ＿０１０１＿１１００＿００００２となる。「ＸＸＸＸ」は、００００２、０００１２、．．．、１１１０、１１１１２等の各可能なビットを表す。この例では、合計１６の可能なビットがある。一般的に言うと、アダプタ２２０は、ビットが除去された各位置に各可能なビットを配置する。各位置における各可能なビットは、その位置で均しい数の除去ビットを有する。このため、合計除去ビット数がＮである場合、アダプタ１６は、各位置に可能なビットを配置することによって、２Ｎの可能なビットを生成する。
【００３４】
図４に戻ると、上述のように、ステップ４２０において、アダプタ４２０は２Ｎの可能なキーを生成する。アダプタ４２０は、ロック解除できなかった記憶デバイスをロック解除することを最初に試みるために、２Ｎの可能なキーから１つの可能なキーを選択する。２Ｎの可能なキーから１つの可能なキーを選択する場合、アダプタ２２０は可能なキーを任意に選択することができる。あるいは、アダプタ２２０は、２Ｎの可能なキーから最低値または最高値を有する可能なキーを選択する。
【００３５】
ステップ４３０において、アダプタ２２０は、ロック解除できなかった記憶デバイスをロック解除するために、選択した可能なキーを適用する。アダプタ２２０が選択した可能なキーを用いて記憶デバイスをロック解除することができると、ステップ４５０において、アダプタ２２０は選択した可能なキーを記憶デバイス用の有効キーとして記憶する。有効キーは、記憶デバイスまたはデータベースにセキュリティ上安全に記憶することができる。
【００３６】
ステップ４３０において、アダプタ２２０が選択した可能なキーを用いて記憶デバイスをロック解除することができない場合、アダプタ２２０は選択した可能なキーを削除するか、または選択した可能なキーを「試行済み」というキーワードで標示することができる。次いで、アダプタ２２０は、未選択の可能なキーから次の可能なキーを選択する。アダプタ２２０は、未選択の可能なキーから次の可能なキーをランダムに選択することができる。あるいは、アダプタ２２０は、次の可能なキーとして最低値または最高値の可能なキーを選択することができる。アダプタ２００が次の可能なキーを選択できない場合、ステップ４６０において、アダプタ２２０は、全ての可能なキーが評価されたか、または未選択の可能なキーがあるかについてチェックする。全ての可能なキーが評価されたか、または未選択の可能なキーがない場合、ステップ４７０において、アダプタ２２０は、記憶デバイスをロック解除するプロセスが失敗したことを通知するか、またはそのことの指示を提供する。その他の場合、アダプタ２２０は、ロック解除できなかった記憶デバイスをロック解除するために、次の可能なキーを適用する。アダプタ２２０が記憶デバイスのロック解除に成功するか、または全ての可能なキーが評価されるまで、ステップ４３０から４６０を繰り返す。
【００３７】
図５は、本発明の一実施形態におけるシステム図を示す。ヒントを発生するため、モジュール（例えばファームウェア等のシステム・ソフトウェア５３０）は、キー・マネージャ５００からキーを受信する。キー・マネージャ５００は、キーまたはＳＩＤをセキュリティ上安全に記憶するレポジトリ、記憶デバイス、またはデータベース５８０を含み、このレポジトリ、記憶デバイス、またはデータベース５８０と関連して動作する。キー・マネージャは、キーまたはＳＩＤを、モジュール（例えばシステム・ソフトウェア５３０）、認証されたユーザまたは例えばデスクトップ、ラップトップ、ＰＤＡ等のコンピューティング・デバイスに配布する。一実施形態では、キーはＳＩＤ（例えばＳＩＤ２１０）である。一実施形態では、キーは、暗号化／復号化アルゴリズムを利用することによって記憶デバイス内のデータを暗号化または復号化するために用いられる１つの情報である。
【００３８】
次いで、モジュールは、１つ以上の位置でキーからビットを除去する。モジュールは、除去したビットの位置（複数の位置）および各位置における除去したビット数を記憶する。一実施形態では、除去したビットの位置（複数の位置）および各位置における除去したビット数は、除去ビット・マネージャ５１０に関連付けたレポジトリ、記憶デバイス、またはデータベース５９０に記憶される。一実施形態では、除去ビット・マネージャ５１０は、除去したビットの位置（複数の位置）および各位置における除去したビット数をセキュリティ上安全に記憶するレポジトリ、記憶デバイス、またはデータベース５９０を含む。除去ビット・マネージャ５１０は、レポジトリ、記憶デバイス、またはデータベース５９０と関連して動作する。除去ビット・マネージャ５１０は、除去したビットの位置（複数の位置）および各位置における除去したビット数を、モジュール（例えばシステム・ソフトウェア５３０）、認証されたユーザまたはコンピューティング・デバイスに提供する。
【００３９】
次いで、モジュールは、キーにビットを追加してヒント５５０を発生する。一実施形態では、モジュールは、１つ以上の位置でキーにビットを追加する。モジュールは、追加したビットの位置（複数の位置）および各位置における追加したビット数を記憶する。一実施形態では、追加したビットの位置（複数の位置）および各位置における追加したビット数は、追加ビット・マネージャ５２０に関連付けたレポジトリ、記憶デバイス、またはデータベース６００に記憶される。一実施形態では、追加ビット・マネージャ５２０は、追加したビットの位置（複数の位置）および各位置における追加したビット数をセキュリティ上安全に記憶するレポジトリ、記憶デバイス、またはデータベース６００を含む。追加ビット・マネージャ５２０は、レポジトリ、記憶デバイス、またはデータベース６００と関連して動作する。追加ビット・マネージャ５２０は、追加したビットの位置（複数の位置）および各位置における追加したビット数を、モジュール（例えばシステム・ソフトウェア５３０）、認証されたユーザまたはコンピューティング・デバイスに提供する。また、モジュールは、記憶デバイス、レポジトリ、またはデータベースにおいてヒント５５０を記憶する。
【００４０】
ユーザまたはアプリケーション（例えばデータベース管理システム（ＤＢＭＳ）が、キーによって暗号化された記憶デバイス（ディスク５６０、ディスク５７０、ＲＡＩＤ等）内のデータにアクセスしたい場合、モジュールはキー・マネージャ５００にアクセスして対応するキーを検索する。次いで、モジュールは検索したキーを記憶アダプタ５４０に送信する。記憶アダプタ５４０が管理するプロトコルは、記憶デバイスによって検索したキーを確認し、記憶デバイスをロック解除して、暗号化アルゴリズムによって記憶デバイスにデータを書き込むと共に復号化アルゴリズムによって記憶デバイスからデータを読み出すことを可能とするものである。
【００４１】
しかしながら、キー・マネージャ５００から検索したキーが破損しているかまたは欠陥があるために、記憶デバイスのロック解除またはデータの復号化を行うことができる最初のキーとは異なるキーである場合には、記憶アダプタ５４０は、記憶デバイスのロック解除またはデータの復号化ができない恐れがある。すると、記憶アダプタ５４０はモジュールに接触して、記憶デバイスのロック解除またはデータの復号化を行うための可能なキーを再構築する。
【００４２】
可能なキーを再構築するために、モジュールはまず、ロック解除することができない記憶デバイスに関連付けられたヒントを検索する。一実施形態においては、記憶アダプタ５４０は、可能なキーを再構築することを要求する場合、ヒントをモジュールに提供する。記憶デバイス、データベース、または記憶アダプタ５４０からヒントを取得した後、モジュールは、追加ビット・マネージャ５２０から、追加したビットの位置（複数の位置）および各位置における追加したビット数を取得する。次いでモジュールは、ビットが追加された各位置においてヒントから追加ビットを除去する。
【００４３】
次いで、モジュールは、除去ビット・マネージャ５１０から、除去したビットの位置（複数の位置）および各位置における除去したビット数を取得する。合計除去ビット数がＮである場合、モジュールは、除去したビットの位置（複数の位置）においてヒント内にそれぞれ可能なＮビットを配置する。例えば、除去ビットの第１の位置および除去ビットの第２の位置があると想定する。第１の位置ではｍビットが除去された。第２の位置ではｋビットが除去された。次いで、モジュールは、ヒントの第１の位置にそれぞれ可能なｍビットを配置し、ヒントの第２の位置にそれぞれ可能なｋビットを配置する。第１の位置にそれぞれ可能なｍビットを配置し、第２の位置にそれぞれ可能なｋビットを配置することによって、モジュールは、２（ｍ＋ｋ）の可能なキーを生成する。従って、合計除去ビット数がＮ（すなわちｍ＋ｋ＝Ｎ）である場合、モジュールは２Ｎの可能なキーを生成する。
【００４４】
次いで、モジュールは、ロック解除できなかった記憶デバイスをロック解除するために、２Ｎの可能なキーの各々を適用する。
【００４５】
一実施形態においては、モジュール、キー・マネージャ５００、除去ビット・マネージャ５１０、および追加ビット・マネージャ５２０は、プログラマブル言語（例えばアセンブリ言語、二進コード、Ｃ、Ｃ＋＋、Java、．ＮＥＴ等）を用いて、ファームウェアとして実施される。一実施形態においては、モジュール、キー・マネージャ５００、除去ビット・マネージャ５１０、および追加ビット・マネージャ５２０は、プロセッサ（例えばIntel（Ｒ）Pentium（Ｒ）、IBM（Ｒ）Power PC（Ｒ）、AMD（Ｒ）Opteron（Ｒ））によって実行される命令（例えば機械言語またはアセンブリ言語）として、コンピュータ読み取り可能媒体（例えばＣＤ（コンパクト・ディスク）、ＤＶＤ（デジタル多用途ディスク）、ＨＤＤ（ハード・ディスク・ドライブ）、メモリ）に記録される。
【００４６】
別の実施形態においては、モジュール、キー・マネージャ５００、除去ビット・マネージャ５１０、および追加ビット・マネージャ５２０は、ハードウェア記述言語（Verilog、VHDL、Handel-C、またはSystem C）を用いて、再構成可能ハードウェア（例えばＦＰＧＡ（Field Programmable Gate Array）またはＣＰＬＤ（ComplexProgrammable Logic Device）上でハードウェアとして実施される。更に別の実施形態では、モジュール、キー・マネージャ５００、除去ビット・マネージャ５１０、および追加ビット・マネージャ５２０は、準カスタム設計方法論（すなわち標準セルおよびハードウェア記述言語を用いてチップを設計する）を用いて、半導体チップ（例えばＡＳＩＣ（特定用途向け集積回路）上で実施される。
【００４７】
更に別の実施形態では、モジュール、キー・マネージャ５００、除去ビット・マネージャ５１０、および追加ビット・マネージャ５２０は、コンピューティング・デバイス（例えばサーバ、メインフレーム、デスクトップ、ラップトップ等）において実行されることによって、コンピューティング・デバイスによってハードウェアとして実施される。コンピューティング・デバイスは、限定ではないが、プロセッサ（複数のプロセッサ）、メモリ（複数のメモリ）、ディスプレイ・デバイス（複数のディスプレイ・デバイス）、入出力デバイス（複数の入出力デバイス）、およびネットワーク・インタフェース（複数のネットワーク・インタフェース）を含む。
【００４８】
一実施形態においては、記憶デバイスをロック解除するために可能な試行の数は、例えば１０２４回のような固定数に設定される。合計除去ビット数が２Ｎ≦固定数を満足するように設定されている場合には、全ての可能な試行を終了することで記憶デバイス内のデータが永久的にロックされ有効に永久に失われてしまう前に、本発明は、キー・マネージャ５００から検索したキーによってロック解除することができない記憶デバイスをロック解除することができる。このため、本発明の一実施形態は、ヒントを生成する場合に、最初のキーからＮビットを除去する。Ｎビットは、２Ｎが、例えば１０２４のような最大可能試行数以下であることを満足するように設定される。
【００４９】
以下は、本発明を利用する使用状況である。
【００５０】
ＳＩＤがそのデフォルトの製造値から更新されると、ヒントを発生して、これを記憶し、後に使用することで、ＳＩＤが入手不可能または使用不可能な場合に記憶デバイスのロック解除を試みることができる。ＳＩＤは長さ２５６ビットであると想定する。
【００５１】
１．最初に、ヒントは、ＳＩＤと同じ値を有するように設定する。次いで、ヒントにおいてある数のビットを除去する。例えば、２５６ビットから９ビットを除去して、ヒントの長さを２４７ビットに縮小すると想定する。（しかしながら、本発明はいかなる数のビットを除去することも可能である。）
【００５２】
２．除去ビット数の確定を防ぐために、２４７ビットのヒントに同じ数のランダム・ビットを追加して２５６ビットに戻す。（しかしながら、本発明はいかなる数のビットを追加することも可能である。）これらのビットを追加する位置は、ビットが除去された位置と一致する必要はない。
【００５３】
３．除去されたビットの位置は、例えば限られた認証された人々に通知することによって、セキュリティ上安全に知られ、例えばパスワード保護を用いて文書内に除去ビットの位置を記憶することによって、セキュリティ上安全に記憶される。除去ビットの値は、決して明らかにされず、破棄される。また、除去ビット数は、セキュリティ上安全に知られ、セキュリティ上安全に記憶される。
【００５４】
４．追加されたビットの位置は、例えば限られた認証された人々に通知することによって、セキュリティ上安全に知られ、例えばパスワード保護を用いて文書内に追加ビットの位置を記憶することによって、セキュリティ上安全に記憶される。また、追加ビット数は、セキュリティ上安全に知られ、セキュリティ上安全に記憶される。
【００５５】
５．除去ビットの位置および追加ビットの位置が同一の組織または同一の人物に知られないことが重要である。除去ビット数および追加ビット数は、同一の組織または同一の人物に知られない。例えば、除去ビットの位置および除去ビット数は、機器供給業者に知らせることができる。追加ビットの位置および追加ビット数は、カスタマに知らせることができる。このため、ＳＩＤは、単一の組織または単一の人物によって再構築することができない。
【００５６】
６．ヒントはセキュリティ上安全に知られ、セキュリティ上安全に記憶される。
【００５７】
７．ＳＩＤが紛失したか使用不可能になると、ヒントを用いて記憶デバイスのロック解除を試みる。ＳＩＤの再構築は、除去ビットの位置、追加ビットの位置、除去ビット数、および追加ビット数に基づく。以下のステップで、ＳＩＤの再構築の一例を記載する。
【００５８】
８．ヒントをセキュリティ上安全に記憶している人物または組織から、ＧＵＩ（グラフィカル・ユーザ・インタフェース）またはＡＰＩ（アプリケーション・プログラミング・インタフェース）によって、ヒントを取得する。追加ビットの位置および追加ビット数をセキュリティ上安全に記憶している人物または組織から、それらを取得する。次いで、ヒントから追加ビットを除去し、２５６ビットを２４７ビットのヒントに縮小する。
【００５９】
９．除去ビットの位置および除去ビット数をセキュリティ上安全に記憶している人物または組織から、それらを取得する。
【００６０】
１０．除去ビットの位置および除去ビット数に基づいて、除去ビットの位置にそれぞれ可能な９ビットを配置することによって、５１２（０００００００００から１１１１１１１１１）の可能な２５６ビットのＳＩＤを発生する。
【００６１】
１１．次いで、可能な２５６ビットのＳＩＤの各々を用いて、記憶デバイスのロック解除を試みる。これは、例えば１０２４のような最大可能試行数よりも少ない５１２回までの試行を行う場合がある。
【００６２】
本発明の好適な実施形態について詳細に記載したが、添付の特許請求の範囲によって規定されるような本発明の精神および範囲から逸脱することなく、様々な変更および置換を実行可能であることは理解されよう。本発明について記載する変形は、それぞれの特定の用途に望ましいいずれかの組み合わせで実現することができる。このため、特定の利点または特定の用途を有する場合がある、本明細書中に記載した特定の限定または実施形態あるいはその両方の拡張は、全ての用途に用いる必要はない。また、本発明の１つ以上の概念を含む方法、システム、または装置あるいはそれら全てにおいて、限定の全てを実施する必要はない。
【００６３】
本発明は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせにおいて実現することができる。ハードウェアおよびソフトウェアの典型的な組み合わせは、コンピュータ・プログラムを有する汎用コンピュータ・システムとすることができ、このプログラムがロードされて実行されると、コンピュータ・システムを制御して、これが本明細書中に記載した方法を実行するようになっている。また、本発明は、コンピュータ・プログラムに埋め込むことができる。このコンピュータ・プログラムは、本明細書中に記載した方法の実施を可能とする全ての特徴を含み、コンピュータ・システムにロードされると、これらの方法を実行することができる。
【００６４】
本文脈におけるコンピュータ・プログラム手段またはコンピュータ・プログラムは、１組の命令の、いずれかの言語、コード、または表記におけるいずれかの表現を含み、この１組の命令は、情報処理機能を有するシステムに、直接、または、別の言語、コード、もしくは表記に変換した後または異なる材料形態で再生した後あるいはその両方のいずれかで、特定の機能を実行させるように意図されている。
【００６５】
このため、本発明は、上述の機能を実行するためのコンピュータ読み取り可能プログラム・コード手段が埋め込まれたコンピュータ使用可能媒体を含む製造品（article of manufacture）を含む。製造品におけるコンピュータ読み取り可能プログラム・コード手段は、本発明の方法のステップをコンピュータに実行させるためのコンピュータ読み取り可能プログラム・コード手段を含む。同様に、本発明は、上述の機能を実行するためのコンピュータ読み取り可能プログラム・コード手段が埋め込まれたコンピュータ使用可能媒体を含むコンピュータ・プログラムとして実施することができる。コンピュータ・プログラムにおけるコンピュータ読み取り可能プログラム・コード手段は、本発明の１つ以上の機能をコンピュータに実行させるためのコンピュータ読み取り可能プログラム・コード手段を含む。更に、本発明は、機械によって読み取り可能なプログラム記憶デバイスとして実施することができ、これは、機械によって実行可能な命令のプログラムをタンジブルに（tangibly）具現化して、本発明の１つ以上の機能を実行するための方法ステップを実行する。
【００６６】
本発明は、本発明の１つ以上の機能をコンピュータ（例えばデスクトップ、ラップトップ、サーバ等）に実行させるためのプロセッサ（例えばIBM（Ｒ）Power PC（Ｒ）、SUN（Ｒ）Spare（Ｒ）等）によって実行されるコンピュータ・プログラム命令（例えばＣ＋＋、Ｃ、Java、.Net、アセンブリ言語、二進コード等）を具現化するコンピュータ読み取り可能媒体（例えばコンパクト・ディスク、デジタル多用途ディスク、ハード・ディスク、光ディスク、固体ドライブ等）上で実施することができる。本発明は、更に、本発明の１つ以上の機能のためのコンピュータ読み取り可能媒体における命令のプログラムを含むコンピュータ・プログラムを展開する方法を含み、この命令のプログラムをプロセッサによって実行すると、コンピュータ・プログラムは本発明の１つ以上の機能を実行する。
【００６７】
前述の記載は、本発明のもっと多くの関係する目的および実施形態のいくつかを概説したものであることに留意すべきである。本発明は、多くの用途に用いることができる。このため、特定の構成および方法について記載したが、本発明の意図および概念は、他の構成および用途にも適切であり適用可能である。本発明の範囲から逸脱することなく、開示した実施形態に対する変更を実施可能であることは、当業者には明らかであろう。記載した実施形態は、本発明のもっと多くの顕著な特徴および用途のいくつかを例示したに過ぎないものとして解釈されるべきである。開示した本発明を異なる方法で適用することによって、または本発明を当業者に既知の方法で変更することによって、他の有利な結果を実現することができる。
【図１】
0005460722.tif 000002
【図２】
0005460722.tif 000003
【図３】
0005460722.tif 000004
【図４】
0005460722.tif 000005
【図５】
0005460722.tif 000006