(57)【特許請求の範囲】
【請求項１】
複数のソースファイルから導出されたデータの継続する周期的な移動及び難読化によって、前記複数のソースファイルをセキュア化する方法であって、前記方法は、
サーバによって、コンピュータから、ソースファイルから導出された複数の難読化データファイルのうち１つの難読化データファイルを受信するステップであって、前記ソースファイルの再生成は、前記複数の難読化データファイルのそれぞれからのデータを必要とし、前記サーバは、前記複数のソースファイルから導出された複数の難読化データファイルを、周期的かつ継続的に受信、さらに難読化及び送信することによって、前記複数のソースファイルのデータを保護する回路を含んでいる、ステップと、
前記サーバによって、前記コンピュータから、前記複数の難読化データファイルに関連する複数のトレースファイルのうち１つのトレースファイルを受信するステップであって、前記ソースファイルの再生成は、前記複数のトレースファイルのそれぞれからのデータを必要とし、前記サーバは、前記複数のソースファイルに関連する複数のトレースファイルを、周期的かつ継続的に受信、更新、さらに難読化及び送信することによって、前記複数のソースファイルを再生成することを可能にする回路を含んでいる、ステップと、
前記サーバによって、前記難読化データファイルをさらに難読化するステップであって、それにより前記難読化データファイルの改変されたバージョンを作成するステップと、
前記サーバによって、前記難読化データファイルをさらに難読化する前記ステップに関する難読化情報を用いて前記トレースファイルを更新するステップであって、それにより前記難読化データファイルの前記改変されたバージョンに基づいて前記ソースファイルの再生成を可能にするステップと、
前記トレースファイルをさらに難読化するステップであって、それにより前記トレースファイルの改変されたバージョンを生成するステップと、
前記サーバによって、前記難読化データファイルの前記改変されたバージョン及び前記トレースファイルの前記改変されたバージョンを第２のサーバに送信するステップと、
前記サーバによって、前記難読化データファイルの前記改変されたバージョン及び前記トレースファイルの前記改変されたバージョンをクリーンアップするステップと、
前記サーバによって、第２のソースファイルのデータを難読化するステップであって、前記難読化は、
前記第２のソースファイルの１つのバージョンを圧縮して、それにより前記第２のソースファイルの圧縮されたバージョンを作成すること、
前記第２のソースファイルの１つのバージョンをビット分散して、それにより前記第２のソースファイルのビット分散されたバージョンを作成すること、又は、
前記第２のソースファイルの選択されたバージョンに基づいて、第２の複数の難読化データファイルを生成することであって、前記選択されたバージョンは、前記第２のソースファイル、前記第２のソースファイルの前記圧縮されたバージョン若しくは前記第２のソースファイルの前記ビット分散されたバージョン、若しくはそれらの並べ替えであること
のうちいずれかを行うことによって行われるステップと、
を備えている、方法。
【請求項２】
前記第２の複数の難読化データファイルを生成することは、
前記第２のソースファイルの前記選択されたバージョンのデータをパーティショニングして、それにより前記第２の複数の難読化データファイルの複数の初期バージョンを作成することであって、前記第２の複数の難読化データファイルの初期バージョンが結合されたデータは、前記第２のソースファイルの前記選択されたバージョンの前記データの全てを含むこと、
前記第２の複数の難読化データファイルのそれぞれについて、ランダム名を生成すること、
前記第２の複数の難読化データファイルのそれぞれのバージョンにランダムデータを追加して、それにより前記第２の複数の難読化データファイルの複数のパディングされたデータのバージョンを作成すること、
前記第２の複数の難読化データファイルのバージョンを周期的に排他的論理和（ＸＯＲ）処理して、それにより前記第２の複数の難読化データファイルの複数のＸＯＲバージョンを作成すること、又は、
前記第２の複数の難読化データファイルのバージョンを暗号化して、それにより前記第２の複数の難読化データファイルの複数の暗号化されたバージョンを作成すること
のうちいずれかを含んでいる、請求項１に記載の方法。
【請求項３】
前記第２のソースファイル、前記第２のソースファイルの前記圧縮されたバージョン及び前記第２のソースファイルの前記ビット分散されたバージョンは、それぞれ、前記第２のソースファイルの１つのバージョンであり、
前記難読化データファイルの前記改変されたバージョンの前記クリーンアップは、前記難読化データファイルの前記改変されたバージョンの削除、前記難読化データファイルの前記改変されたバージョンのデータのゼロ消去、前記難読化データファイルの前記改変されたバージョンを格納するために以前に利用されたストレージ空間の解放、又は、前記難読化データファイルの前記改変されたバージョンに対する複数のポインタの除去を含んでいる、請求項２に記載の方法。
【請求項４】
複数のハッシュ値を生成するステップであって、前記複数のハッシュ値のそれぞれは、前記複数の難読化データファイルのうちの異なる１つの識別を可能にするものであるステップと、
前記複数のハッシュ値をストレージデバイスにて格納するステップと、
前記複数のハッシュ値の一部又は全部を、前記複数のサーバのプールにおける１つ以上のサーバに送信することによって前記複数の難読化データファイルの取得をトリガするステップであって、それによって前記１つ以上のサーバが前記複数の難読化データファイルの在処を特定できるようにするステップと、をさらに備えており、
前記複数のトレースファイルのそれぞれは、前記トレースファイルのそれぞれがマッピングされている特定の難読化データファイルを識別するハッシュ値を含んでおり、前記トレースファイルのそれぞれは、異なる特定の複数の難読化データファイルにマッピングされている、請求項１に記載の方法。
【請求項５】
サーバによって、コンピュータから、ソースファイルから導出された複数の難読化データファイルのうち１つの難読化データファイルを受信するステップであって、前記ソースファイルの再生成が、前記複数の難読化データファイルによって可能にされ、前記サーバは、複数のソースファイルから導出された複数の難読化データファイルを、繰り返し受信、さらに難読化及び送信することよって、前記複数のソースファイルのデータを保護する回路を含んでいる、ステップと、
前記サーバによって、前記難読化データファイルをさらに難読化するステップであって、それにより前記難読化データファイルの改変されたバージョンを作成するステップと、
前記サーバによって、前記難読化データファイルの前記改変されたバージョンを第２のサーバに送信するステップと、
前記サーバによって、前記難読化データファイルの前記改変されたバージョンをクリーンアップするステップと、
前記サーバによって、前記コンピュータから、複数のトレースファイルのうち１つのトレースファイルを受信するステップであって、
前記ソースファイルの再生成は、前記複数のトレースファイルによって可能にされ、
前記サーバは、前記複数のソースファイルに関連する複数のトレースファイルを、繰り返し受信、更新及び送信することによって、前記複数のソースファイルを再生成することを可能にする回路を含んでおり、
前記トレースファイルは、前記複数の難読化データファイルのうちの選択された難読化データファイルに対する１対１のマッピングを有しており、
前記トレースファイルは、前記選択された難読化データファイルのデータが不適切に改変されていたかどうかの決定を可能にする選択されたハッシュ値を含んでおり、
不適切に改変された前記選択された難読化データファイルの前記データは、セキュリティ違反を示し、
前記選択された難読化データファイルのデータが不適切に改変されていなかった場合には、前記選択されたハッシュ値は、前記選択された難読化データファイルの識別を可能にする、
ステップと、
前記選択された難読化されたデータファイルについて計算されたハッシュ値を計算するステップと、
前記トレースファイルに基づいて、前記選択されたハッシュ値を決定するステップと、
前記計算されたハッシュ値と前記選択されたハッシュ値とを比較するステップと、
前記計算されたハッシュ値と前記選択されたハッシュ値が異なる値である場合には、前記コンピュータが信頼されないコンピュータであることを決定するステップと、
前記コンピュータについての識別データを、信頼されないコンピュータの識別を可能にする信頼されたコンピュータデータベースに追加するステップと、
を備えている、方法。
【請求項６】
前記サーバによって、前記難読化データファイルの前記さらなる難読化に関する難読化情報を用いて、前記トレースファイルを更新するステップであって、それにより、前記難読化データファイルの前記改変されたバージョンに基づいて、前記ソースファイルの再生成を可能にするステップと、
前記トレースファイルをさらに難読化するステップであって、それにより前記トレースファイルの改変されたバージョンを生成するステップと、
前記サーバによって、前記トレースファイルの前記改変されたバージョンを前記第２のサーバに送信するステップと、
をさらに備えている、請求項５に記載の方法。
【請求項７】
選択された難読化データファイルにマッピングされる選択されたトレースファイルの難読化情報は、前記選択された難読化データファイルを前記ソースファイルから導出するために使用される技術を識別するデータを含んでいる、請求項６に記載の方法。
【請求項８】
前記技術が、データ圧縮技術、データビット分散技術、データパーティショニング技術、ランダムファイル名生成技術、データパディング技術、データの周期的ＸＯＲ処理技術又はデータ暗号化技術のいずれかである、請求項７に記載の方法。
【請求項９】
前記複数のトレースファイルのそれぞれと、対応する前記複数の難読化データファイルのうちの１つとの間に、１対１マッピングがある、請求項５に記載の方法。
【請求項１０】
信頼されないコンピュータの識別を可能にする信頼されたコンピュータデータベースからのデータに基づいて、前記第２のサーバが信頼されたコンピュータであると決定するステップであって、前記難読化データファイルの改変されたバージョンを前記第２のサーバに送信する前記ステップは、前記第２のサーバが信頼されたコンピュータであると決定されることに基づく、請求項５に記載の方法。
【請求項１１】
前記第２のサーバが信頼されたコンピュータであると決定されることは、前記信頼されたコンピュータデータベースを介して前記第２のサーバが信頼されていないコンピュータとは識別されないことに基づいており、
前記難読化データファイルをさらに難読化する前記ステップは、前記サーバにて格納された暗号化キーに基づいて前記サーバが前記難読化データファイルを暗号化して、それにより前記難読化データファイルの改変されたバージョンを作成することを含んでおり、
前記サーバ及び前記コンピュータは、同じタイプのコンピューティングデバイスである、請求項１０に記載の方法。
【請求項１２】
サーバであって、
プロセッサと、
前記プロセッサに結合されたネットワークインタフェースと、
前記プロセッサに結合され、複数の命令を格納しているメモリであって、前記複数の命令は、前記プロセッサによって実行された際に、
コンピュータから、前記ネットワークインタフェースを介して、ソースファイルから導出された複数の難読化データファイルのうち１つの難読化データファイルを受信する操作であって、前記ソースファイルの再生成は、前記複数の難読化データファイルによって可能にされ、前記サーバは、複数のソースファイルから導出された複数の難読化データファイルを、前記ネットワークインタフェースを介して受信し、さらに難読化し、前記ネットワークインタフェースを介して送信する回路を含んでいる、操作と、
前記難読化データファイルをさらに難読化する操作であって、それにより前記難読化データファイルの改変されたバージョンを作成する操作と、
前記難読化データファイルの前記改変されたバージョンを、前記ネットワークインタフェースを介して第２のサーバに送信する操作と、
前記ネットワークインタフェースを介して、前記コンピュータから、複数のトレースファイルのうち１つのトレースファイルを受信する操作であって、
前記ソースファイルの再生成は、前記複数のトレースファイルによって可能にされ、
前記サーバは、前記複数のソースファイルに関連する複数のトレースファイルを、繰り返し受信、更新及び送信することによって、前記複数のソースファイルを再生成することを可能にする回路を含んでおり、
前記トレースファイルは、前記複数の難読化データファイルのうちの選択された難読化データファイルとの１対１マッピングを有しており、
前記トレースファイルは、前記選択された難読化データファイルのデータが不適切に改変されたかどうかについての決定を可能にする選択されたハッシュ値を含んでおり、
前記選択された難読化データファイルの前記データが不適切に改変されたことは、セキュリティ違反を示しており、
前記選択されたハッシュ値は、前記選択された難読化データファイルの前記データが不適切に改変されていない場合には、前記選択された難読化データファイルの識別を可能にするものである、
操作と、
前記選択された難読化データファイルの計算されたハッシュ値を計算する操作と、
前記トレースファイルに基づいて、前記選択されたハッシュ値を決定する操作と、
前記計算されたハッシュ値と前記選択されたハッシュ値とを比較する操作と、
前記計算されたハッシュ値と前記選択されたハッシュ値とが異なる値である場合には、前記コンピュータが信頼されないコンピュータであると決定する操作と、
前記コンピュータの識別データを、信頼されないコンピュータの識別を可能にする信頼されたコンピュータデータベースに追加する操作と、
を含む複数の操作を、前記サーバに実行させる命令である、メモリと、
を備えている、サーバ。
【請求項１３】
前記プロセッサは、
複数のソースファイルから導出された複数の難読化データファイルを、前記ネットワークインタフェースを介して受信し、さらに難読化し、前記ネットワークインタフェースを介して送信する前記回路と、
前記複数のソースファイルに関連する前記複数のトレースファイルを、繰り返し受信、更新及び送信することによって、前記複数のソースファイルを再生成することを可能にする前記回路と
を含んでいる、請求項１２に記載のサーバ。
【請求項１４】
前記トレースファイルは、最大深度値を含んでおり、前記複数の操作は、さらに、
難読化深度値を決定する操作であって、
前記難読化深度値は、前記難読化データファイルの幾つのバージョンがサーバセットによって作成されたかを示しており、
前記サーバセットにおけるサーバのそれぞれは、前記難読化データファイルの異なるバージョンを作成する、
操作と、
前記難読化深度値を前記最大深度値と比較する操作であって、
前記難読化データファイルをさらに難読化する前記操作は、前記難読化深度値が前記最大深度値よりも小さいという決定に応答するものである、
操作と、
を含んでいる、請求項１２に記載のサーバ。
【請求項１５】
前記難読化データファイルの前記改変されたバージョンを前記第２のサーバに送信する前記操作は、前記ソースファイルのデータへの認可されないアクセスを妨害するデータ移動及び難読化プロセスの一部として行われる、請求項１２に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１５年５月１９日に出願された米国仮特許出願第６２／１６３，８０４号に対する優先権を主張するものであり、その全ての内容が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
セキュリティは、コンピュータネットワークにおいて重要な関心事である。データを保護する１つの方法は、ファイアウォール、パスワード、ドングル、物理キー、分離、生体認証又は他の手段のような静的セキュリティ手段を介して、コンピュータネットワークへの認可されない侵入を防ぐことである。このような対策にもかかわらず、攻撃者はそのような理論的に安全なネットワークへのアクセスを得ている。攻撃者がネットワークへのアクセスを得ると、攻撃者は多くの場合、名前、生年月日、社会保障番号、銀行口座情報、クレジットカード情報、知的財産等のような機密データを入手することができる。攻撃者は、このような情報を、小売業者、健康保険会社、銀行等のような大手企業から入手することに成功している。場合によっては、攻撃者は、セキュアなネットワーク、ストレージデバイス等へのアクセスが認可された従業員又はその他の人物のような、「内部」の攻撃者である。このような場合、攻撃者は、セキュアなネットワークへの認可されない侵入を防ぐいずれの境界セキュリティをもバイパスする必要なく、悪意のある目的で機密データを入手することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本明細書では、コンピュータネットワーク上に分散されたデータストアに格納されたデータのセキュリティを向上させる技術について提示する。ユーザがコンピュータ化された永続データストア内に秘密情報を暗号化して保存する際、保存されたデータは、暗号攻撃の標的になることがよくある。攻撃の間に、標的の秘密についてのデータ（例えば、標的の秘密を含む暗号化データ）を入手することは、暗号解読の試みのシーケンスにおいて必要なステップである。攻撃の目的は、暗号化データのデコードから、暗号化方法の理解、続く攻撃にて使用するための暗号化キーの発見など、多岐に渡り得る。しかしながら、全ての場合において、攻撃の標的となるデータを識別することは必須条件であり、そのようなデータの識別なしでは暗号攻撃を開始できず、ましてや目的達成に近づくことすら不可能である。
【０００４】
データの識別がなければ、暗号攻撃は役に立たない。本開示の技術は、格納されたデータを難読化し、データ名を変更し、該データを分散されたデータストアのあちこちに移動させ続ける連続的な隠蔽プロセスを可能にする。データの難読化は、データの一部が一致していることの決定を困難にするようにデータを変更することを含む。この動的アプローチのため、認可されない個人（本明細書では「攻撃者」と称する）は、名、サイズ、内容、アクセス時間、使用パターン等によって標的データを識別することができない。したがって、攻撃するべきデータがどれであるかを攻撃者に知られないという理由だけで、攻撃者に標的データを攻撃されることを防ぐことができる。たとえ攻撃者がデータストア全体を掌握しようとしても、データストアがネットワーク上に広がっている場合、攻撃者の勝算は薄い。同時に、本開示の技術によって保護されたデータストアに対する総当たり攻撃は、時間及びコンピューティングリソースの両方のコストが高くなるため、実行不可能である。１つの例では、各ファイルは４つのコピー（３つはバックアップ及び冗長性の目的のため）を伴う１２個の部分に分割されており、保護された１つのファイルに対して暗号攻撃を開始する前に該保護されたファイルの在処を特定するだけで、計算によると１０，０００ファイルの分散データストア内における約２476個の部分の組み合わせを調べなければならない。この数が宇宙の推定原子数（２272個）に比べてどれほど大きいか、考えてみてほしい。本開示の技術は、格納されたデータを連続的に難読化して移動させることにより、特定の保護されたデータファイルの識別を事実上不可能にする。
【０００５】
保護されたファイルの識別を防止することなく、該ファイルの内容及び名を暗号化するだけでは、依然としてセキュリティは危険にさらされている。攻撃者が暗号化されたデータを入手した場合には、攻撃者は暗号化されたデータを復号する可能性がある。あるいは、攻撃者は、そのデータを復号できないにもかかわらず、暗号化されたデータの所有者を脅迫する可能性がある。さらに、今日において安全と考えられている暗号化方法は、解読技術の進歩によって、明日には安全でなくなる可能性がある。場合によっては、攻撃者は膨大な量のコンピューティングリソースを適用することができ、それによって総当たり攻撃を成功させ、結果的に保護されたファイルを復号してその秘密情報にアクセスする可能性がある。加えて、攻撃者は、表面的には難攻不落に思われた暗号化方式を解読する秘密アルゴリズムを所有している可能性がある。したがって、暗号化されたデータを識別可能な攻撃者がいることは、それ自体が深刻なリスクである。
【０００６】
標的ファイルの識別手段が保護されていない場合、攻撃者はファイル名、サイズ、内容、アクセス時間、使用パターン等によって、ファイルを選択できる可能性がある。時には、攻撃者は、内部者の助けを借りる外部者や、データストアを熟知している内部者であることに留意されたい。そのような内部者は、自身の内部者としての知識に基づいて、データを識別できる可能性がある。また、場合によっては、データが残りの部分に対する参照を含んでいるため、必要なデータの一部だけを識別すれば十分である。標的データを分離する能力を拒むことにより攻撃を撃退することは、アクセス制御をバイパスすることに成功した外部の攻撃者だけでなく、悪意あるシステム管理者のような正当なストレージアクセスを有する内部攻撃者に対しても、強力な保護として機能する。
【０００７】
データを保護するためのいくつかの技術は、データが格納されている安全なネットワークへのアクセスを攻撃者が得ることを防止することに依存している。しかしながら、大企業や中小企業におけるコンピュータネットワーク侵害について頻繁に報道されることから明らかなように、そのような静的境界ネットワークセキュリティ技術では、多くの場合において不十分である。
【課題を解決するための手段】
【０００８】
本開示の技術は、データが格納されているネットワークへのアクセスを攻撃者が得ている場合であっても、コンピュータシステム（例えば、企業のコンピュータシステム）がデータを保護することを可能にする。一例において、企業は、初期の難読化プロセス及びデータ移動プロセスを含む連続的な隠蔽プロセスによって、ソースデータを保護する。初期の難読化プロセスは、複数の難読化データファイルをソースデータに基づいて生成する企業のコンピュータシステムを含んでおり、ここで、ソースデータを再生成するには、該難読化データファイルの全てが必要とされる。初期の難読化プロセスは、ソースデータを難読化してパーティショニングし、結果として複数のファイルを生じさせるコンピュータシステムを含んでいると共に、該複数のファイルのデータを難読化し、結果として複数の難読化データファイルを生じさせるコンピュータシステムをさらに含んでいる。データの難読化は、例えば、選択されたデータの圧縮、パーティショニング、暗号化、ビット分散又は周期的排他的論理和（ＸＯＲ）等を含むことができるか、なかでも、該選択されたデータへのランダムデータの追加を含むことができる。
【０００９】
この例のデータ移動プロセスは、コンピュータシステムが、難読化データファイルのそれぞれを異なる初期コンピュータシステムに送信することから始まる。初期コンピュータシステムのそれぞれは、既定の間隔の後に、受信した難読化データファイルをさらに暗号化し、ランダムに名を変更し、ランダムに選択されたコンピュータに送信することを含む伝搬プロセスを開始し、このランダムに選択されたコンピュータは、別の既定の間隔の後に、難読化データファイルをさらに暗号化し、ランダムに名を変更し、別のランダムに選択されたコンピュータに送信することを含む伝搬プロセスを継続する。いくつかの実施形態では、該既定の間隔の後に、難読化データファイルは、インテリジェントに選択されたコンピュータに送信される。いくつかの実施形態では、ランダムに選択される名は、一意に生成され、例えば、ランダムに生成される暗号名のように生成される。例えば、名は、暗号化キー又はシードに基づいて、暗号学的に生成され得る。他の実施形態では、ランダムに選択される名は、ランダムだが既定の方法にて生成される。さらに他の実施形態では、難読化データファイルは、インテリジェントに名が変更される。データ移動プロセス中に利用される種々のコンピュータは、企業のプライベートネットワーク上のコンピュータのようにプライベートネットワーク上にあってもよく、１つ以上のクラウドコンピューティングプロバイダ／ストレージプロバイダのネットワーク上のコンピュータのように非結合ネットワーク（unbounded network）の一部であってもよく、それらの任意の組み合わせであってもよい。
【発明の効果】
【００１０】
攻撃者が本開示の技術によって保護されたデータへのアクセスを得ることに成功するには、攻撃者はまず、保護されたデータについての難読化データファイルの全てにアクセスしなければならない。難読化データファイルはランダムに命名されて（複数の独立した企業のネットワークに広がっていてもよい）コンピュータプールの間でランダムに移動させられるため、難読化データファイルの在処を特定することは、内部攻撃者にとっても非常に困難である。さらに、難読化データファイルの全てがソースデータの再生成に必要とされるため、難読化データファイルの全てを所有していない攻撃者の誰かがソースデータの再生成に成功してしまうことを効果的に防止することができる。
【００１１】
内部攻撃者にとってもソースデータを決定するのが困難であることを示す一例において、企業は、本開示の技術を用いて、データストアに格納された１０，０００個のソースファイルを保護する。１０，０００個のソースファイルのそれぞれについての初期の難読化プロセス中では、ソースファイルのそれぞれが処理されて、１２個の難読化データファイルが作成される。冗長性とバックアップの理由から、難読化データファイルのそれぞれについて追加の３つのバージョンもまた作成され、それによって難読化データファイルのそれぞれの難読化されたバージョンが合計４つとなり、その結果、データストア内には４×１２×１０，０００個、すなわち４８０，０００個の難読化データファイルが生じる。
【００１２】
選択されたソースデータに対する暗号攻撃を開始するためには、１２個の難読化データファイルの正しいセットが識別されると共に、それらを適切に並べる必要がある。しかしながら、これらの４８０，０００個の難読化されたデータファイルは、ファイル名、サイズ、内容、アクセス時間、使用パターン等に基づく区別ができないため、攻撃者は、選択されたソースファイルを再生成するのに必要な１２個の難読化データファイルの唯一のセットを識別して順序付けるために、総当たり攻撃を試みる必要が生じる。難読化データファイルの数及び難読化データファイルの並び順に基づく分析によって、難読化データファイルの可能な並び順の組み合わせが２476通り存在することが判明した。前述のように、この数は、宇宙の推定原子数（２272）よりも大きい。
【図面の簡単な説明】
【００１３】
１つ以上の実施形態が、添付の図面における図中に例として示される。これらの図面において、同様の参照符号は、同様の要素を示す。
【００１４】
【図１】図１は、種々の実施形態と一致する、ネットワーク環境の図である。
【図２】図２は、種々の実施形態と一致する、データを連続的に隠蔽する方法を示すフロー図である。
【図３】図３は、種々の実施形態と一致する、ソースデータを難読化して複数の難読化データファイルを作成する方法を示すフロー図である。
【図４】図４は、種々の実施形態と一致する、データ移動プロセスの方法を示すフロー図である。
【図５】図５は、種々の実施形態と一致する、種々のコンピューティングデバイス間を移動させられるデータを示す図である。
【図６】図６は、種々の実施形態と一致する、ソースデータを再生成する方法を示すフロー図である。
【図７】図７は、種々の実施形態と一致する、本明細書に記載された少なくともいくつかの動作を実装され得る処理システムの例を示すブロック図である。
【発明を実施するための形態】
【００１５】
本明細書において、「実施形態」「一実施形態」又はそれに類する語についての参照は、記載されている特定の特徴、機能、構造又は特性が本開示の少なくとも１つの実施形態に含まれることを意味する。このような語句が本明細書に複数現れていたとしても、必ずしも全てが同じ実施形態を指すとは限らない。他方、参照される実施形態は、必ずしも相互に排他的なものではない。
【００１６】
さらに、本明細書において、用語「引き起こす（cause）」及びその変形は、直接的な因果関係又は間接的な因果関係のいずれかを示す。例えば、コンピュータシステムは、第２のコンピュータシステムに対してアクションを実行させるように命令、要求又は問い合わせを行うためのメッセージを送信することにより、該アクションを「引き起こす」ことができる。このプロセス中には、任意の数の仲介デバイスが、該メッセージを検査及び／又は中継してもよい。このとき、最終的にアクションが実行されるかどうかをデバイスが知り得なくても、該デバイスは動作を「引き起こす」ことができる。
【００１７】
本明細書では、メッセージや信号等の他のデバイス（受信デバイス）への送信又は伝達についての任意の参照は、その情報内容が最終的に受信デバイスまで配信されるという意図を伴ってメッセージが送信されることを意味することに留意されたい。したがって、そのような参照は、メッセージが受信デバイスに直接送信されなければならないことを意味しない。すなわち、他に述べられていない限り、受信者デバイスへの配信の前にメッセージ又は信号を「そのまま」又は改変された形式のいずれかにて受信及び転送する、１つ以上の仲介エンティティが存在し得る。この明確化はまた、本明細書におけるメッセージ／信号の他のデバイスからの受信についての任意の参照にも適用される。すなわち、本明細書にて他に述べられていない限り、直接的なポイントツーポイント通信は必要とされない。
【００１８】
また、本明細書では、メッセージや信号等の他のデバイス（受信デバイス）への送信又は伝達についての参照は、その情報内容が最終的に受信デバイスまで配信されるという意図を伴ってメッセージが送信されることを意味することに留意されたい。したがって、そのような参照は、メッセージが受信デバイスに直接送信されなければならないことを意味しない。すなわち、他に述べられていない限り、受信者デバイスへの配信の前にメッセージ又は信号を「そのまま」又は改変された形式のいずれかにて受信及び転送する、１つ以上の仲介エンティティが存在し得る。この明確化はまた、本明細書におけるメッセージ／信号の他のデバイスからの受信についての任意の参照にも適用される。すなわち、本明細書にて他に述べられていない限り、直接的なポイントツーポイント通信は必要とされない。
【００１９】
図1は、種々の実施形態と一致する、ネットワーク環境の図である。ネットワーク環境１００は、ファイアウォールによって保護されている３つのネットワークである、企業ネットワーク１１０、第１のネットワーク１４０及び第２のネットワーク１７０を含む。３つのネットワークのそれぞれは、ネットワークの構成要素であるコンピューティングデバイス間のデータ通信を可能にする通信ネットワークを含む。例えば、企業ネットワーク１１０は、通信ネットワーク１１５を含み、通信ネットワーク１１５は、複数のデバイス（例えば、デバイス１２５Ａ、デバイス１２５Ｎ等。まとめて「複数のデバイス１２５」と称する）を含んでおり、複数のデバイス１２５が互いに通信することを可能にし、ファイアウォール１２０を備えている、等である。第１のネットワーク１４０は、通信ネットワーク１４５を含み、通信ネットワーク１４５は、複数のデバイス（例えば、デバイス１５５Ａ、デバイス１５５Ｎ等。まとめて「デバイス１５５」と称する）を含んでおり、複数のデバイス１５５が互いに通信することを可能にし、ファイアウォール１５０を備えている、等である。第２のネットワーク１７０は、通信ネットワーク１７５を含み、通信ネットワーク１７５は、複数のデバイス（例えば、デバイス１８５Ａ、デバイス１８５Ｎ等。まとめて「デバイス１８５」と称する）を含んでおり、複数のデバイス１８５が互いに通信することを可能にし、ファイアウォール１８０を備えている、等である。
【００２０】
３つのネットワークのそれぞれのファイアウォールは、認可されないネットワークトラフィックをネットワーク内に入れないことによってネットワークを保護する障壁として機能する。例えば、ファイアウォール１２０は企業ネットワーク１１０を保護し、ファイアウォール１５０は第１のネットワーク１４０を保護し、ファイアウォール１８０は第２のネットワーク１７０を保護する。パブリック通信ネットワーク１０５は、パブリックネットワークであって、例えば、インターネット又は任意の他のパブリックネットワークである。パブリック通信ネットワーク１０５は、複数のデバイス（例えば、デバイス１３０Ａ、デバイス１３０Ｎ等）を含んでおり、デバイス１３０、ファイアウォール１２０、ファイアウォール１５０、ファイアウォール１８０等が全て互いに通信することを可能にする。
【００２１】
通信ネットワーク１１５，１４５及び１７５、並びに、パブリック通信ネットワーク１０５は、コンピュータ間のデータ通信を可能にする任意のタイプのネットワークであり得る。種々の実施形態では、通信ネットワーク１１５，１４５及び１７５、並びに、パブリック通信ネットワーク１０５のうちの１つ以上が、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、プライベートネットワーク、パブリックネットワーク、セルラーネットワーク、短距離無線ネットワーク、無線ローカルエリアネットワーク（ＷＬＡＮ）等のいずれかであり得る、又は、それを含み得る。セルラーネットワークは、符号分割多元接続（ＣＤＭＡ）、時分割多元接続（ＴＤＭＡ）、グローバル移動通信システム（ＧＳＭ）、ロングタームエボリューション（ＬＴＥ）、２Ｇ、３Ｇ、４Ｇ等のような種々のタイプのいずれかであり得る。短距離無線ネットワークは、短距離無線通信に使用され、ブルートゥース、ブルートゥース低エネルギー（ＢＬＥ）、近距離通信（ＮＦＣ）等の種々のタイプのいずれかであり得る。同様に、ＷＬＡＮは、とりわけ、種々のタイプのＩＥＥＥ８０２．１１ネットワークのような種々のタイプのいずれかであり得る。パブリック通信ネットワーク１０５は、インターネットのよう任意のタイプのパブリック通信ネットワークであり得る。
【００２２】
デバイス１２５，１３０，１５５及び１８５は、任意のタイプのコンピューティングデバイスであり得、とりわけ、コンピューティングデバイスは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ファイルサーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、モバイルデバイス又はサーバであり得る。モバイルデバイスの例には、スマートフォン、タブレット、ポータブルメディアデバイス、ウェアラブルデバイス、ラップトップ及び他のポータブルコンピュータが含まれる。
【００２３】
いくつかの実施形態では、第１のネットワーク１４０は、第１のクラウドストレージ又はコンピューティングプロバイダを表し、第２のネットワーク１７０は、第２のクラウドストレージ又はコンピューティングプロバイダを表し、第１及び第２のクラウドストレージ又はコンピューティングプロバイダは、別々の独立した企業である。
【００２４】
図２は、種々の実施形態と一致する、データを連続的に隠蔽する方法を示すフロー図である。ブロック２０５では、コンピュータシステムが、ソースデータを受信する。該コンピュータシステムは、任意のタイプのコンピューティングデバイスであり得、とりわけ、例えば図１のデバイス１２５，１３０，１５５又は１８０のうちいずれかであり得る。さらに、コンピュータシステムは、種々の機構のいずれかによって、ソースデータを受信することができる。例えば、別のコンピュータシステムは、ソースデータをコンピュータシステムに送信することができ、そのコンピュータシステムは、該ソースデータを受信する。別の例としては、ユーザは、コンピュータシステムの入力機構を介して、ソースデータを入力することができる。入力機構の例には、ワードプロセッサアプリケーション、スプレッドシートアプリケーション、音声認識アプリケーション、光学認識アプリケーション、キーボード、マイクロフォン、カメラ等が含まれる。
【００２５】
ブロック２１０では、コンピュータシステムは、ソースデータを難読化して、それにより複数の難読化データファイルを作成する。複数の難読化データファイルは、難読化データファイルの１つ以上のセットを含むことができ、ソースデータを再生成するには、任意の選択された難読化データファイルのセットにおける全ての難読化データファイルが必要である。いくつかの実施形態では、冗長性又はバックアップの理由のために、複数セットの難読化データファイルが作成される。複数セットの難読化データファイルが作成された場合には、任意のセットがソースデータを再生成するために使用可能である。
【００２６】
選択されたデータを難読化することは、選択されたデータ又は選択されたデータのバージョンを、１つ以上のアルゴリズムを実行することによって変換することを含んでいる。このようなアルゴリズムとしては、例えば、圧縮アルゴリズム、データパーティショニングアルゴリズム、暗号化アルゴリズム、ビット分散アルゴリズム、データ並べ替えアルゴリズム、周期的排他的論理和（ＸＯＲ）アルゴリズム等が挙げられる。選択されたデータを難読化することは、選択されたデータ又は選択されたデータのバージョンにランダムデータを追加することによって、選択されたデータを変換することをさらに含み得る。いくつかの実施形態では、暗号化アルゴリズムは、暗号学的に計算されたデジタルダイジェストを選択されたデータに追加する。例えば、暗号化アルゴリズムは、ＳＨＡ−５１２アルゴリズムのようなセキュアハッシュアルゴリズム（ＳＨＡ）を利用することができ、これにより、選択されたデータに暗号学的に計算されたデジタルダイジェストを付加することができる。
【００２７】
選択されたデータのバージョンは、選択されたデータ又は選択されたデータから導出される任意のデータを含んでいる。選択されたデータから導出される任意のデータとしては、例えば、選択されたデータを変換するアルゴリズムを実行することによって、選択されたデータから導出されるデータが挙げられる。さらに、選択されたデータのバージョンから導出されるデータは、それ自体が選択されたデータのバージョンである。例えば、選択されたソースデータのバージョンとしては、以下のいずれかが挙げられる：選択されたソースデータ、選択されたソースデータを入力として採用する圧縮アルゴリズムを実行することにより生成されたデータ、選択されたソースデータを入力として採用する圧縮アルゴリズムを実行することにより生成されたデータを入力として採用する暗号化アルゴリズムを実行することにより生成されたデータ。とりわけ、ブロック２１０は、図３のフロー図３００に示す方法によって実施され得る。ここでは、図３の例を参照することが有用である。
【００２８】
図３は、種々の実施形態と一致する、ソースデータを難読化して複数の難読化データファイルを作成する方法を示すフロー図である。図２のブロック２１０は、とりわけフロー図３００の方法によって実現することができる。ブロック３０５では、図２のコンピュータシステムのようなコンピュータシステムは、種々の圧縮アルゴリズムのいずれかを実行することによってソースデータ又はソースデータのバージョンを圧縮し、それによりソースデータの圧縮されたバージョンを作成する。
【００２９】
ブロック３１０では、コンピュータシステムは、種々の並べ替えアルゴリズムのうちの任意のものを実行することによってソースデータ又はソースデータのバージョンを並べ替え、それによりソースデータの並べ替えられたバージョンを生成する。並べ替えアルゴリズムは、ビットレベル、バイトレベル、ワードレベル、ブロックレベルのような任意の選択された粒度にてデータを並べ替えることができる。並べ替えアルゴリズムは、http://www.cse.uconn.edu/~zshi/course/cse5302/ref/yhilewitz_thesis.pdf（アーカイブされたバージョンは、https://web.archive.org/web/20160423040108/http://www.cse.uconn.edu/~zshi/course/cse5302/ref/yhilewitz_thesis.pdfにて入手可能である）に示されるように、当技術分野において周知である。
【００３０】
いくつかの実施形態では、並び順データファイルは、難読化データファイルと併せてデータストア内に格納される。難読化データファイルのそれぞれは、関連する並び順データファイルを有し得る。この関連する並び順データファイルは、どのようにして関連する難読化データファイルの並び順アルゴリズムを逆転させるかに関する情報を含んでいる。並び順データファイルは、他の任意の難読化データファイル又は並び順データファイルとしてデータストア内に格納される。図２のブロック２０５のソースデータのようなソースデータについて、ｐ個のファイル（例えばブロック２１０、ブロック３２０）にパーティショニングされ、各ファイルがｃ個のコピーを有する場合、データストア内には２×ｐ×ｃ個の関連するデータファイルが格納され得る。このことは、難読化データファイルのそれぞれが、それぞれの並び順を有しており、データ移動プロセス中において、関連する難読化データファイル若しくは他の難読化データファイル、又は他の並び順データファイルとは無関係に、ストア内を移動することに起因する。並び順データファイルは、データ移動プロセス中に難読化データファイルと実質的に同じように移動することができ、このとき並び順データファイルのそれぞれは、それ自体のトレースファイルを伴っている。
【００３１】
並び順データファイルは、コンピューティングデバイスにとって見かけ上区別することができず、該並び順データがコンピューティングデバイスによって他の難読化データファイル又は並び順ファイルと何らの異なる扱いをされることもない。並び順ファイルを移動する際、コンピューティングデバイスは、難読化データファイルと共に送信されるものと同じ種類のパルスメッセージを送信し、並び順データファイルは、ソースデータを再生成する（例えば、図６のブロック６２５）ためのデータ取得の際に、難読化データファイルと共に取得される。上述のように、コンピューティングデバイスは、データ移動プロセス中と実質的に同様の方法により、並び順データファイル及び難読化データファイルを処理する。しかしながら、ソースデータを再生成するためにデータファイルを取得する際に、起点のコンピュータシステム（例えば、図２のブロック２０５のコンピュータシステム）が、ソースデータを再生成するために取得された難読化データファイル及び並び順データファイルを受信する場合には、起点のコンピュータシステムは、並び順データファイルのデータを使用して、それにより難読化データファイルのデータの並べ替えを元に戻す。
【００３２】
ブロック３１５では、コンピュータシステムは、種々の暗号化アルゴリズムのいずれかを実行することによってソースデータ又はソースデータのバージョンを暗号化し、それによってソースデータの暗号化されたバージョンを生成する。いくつかの実施形態では、暗号化アルゴリズムは、暗号化されることになるデータに加えて、暗号化キー又はシードを必要とする。該暗号化キー又はシードは、該コンピュータシステムにとって専用であり得る（例えば、データを暗号化するために専ら該コンピュータシステムによって使用され、他のコンピューティングデバイスによっては使用されない）。例えば、該暗号化キー及びシードは、該コンピュータシステムにとって専用であり得る。
【００３３】
ブロック３２０では、コンピュータシステムは、種々のデータパーティショニングアルゴリズムのいずれかを実行することにより、ソースデータ又はソースデータのバージョンをパーティショニングして、それにより複数のファイルを作成する。データパーティショニングアルゴリズムは、入力データを複数の出力ファイルに分割し、また、該アルゴリズムは、各出力ファイルが入力データを再生成するのに必要となるように入力データを分割し得る。入力データは、種々の方法のいずれかで分割され得る。例えば、入力データは、均等なサイズ、ランダムなサイズ、準ランダムサイズ等の連続的な部分となるように分割されてもよく、該連続的な部分は、出力ファイルを作成するために使用され得る。ここで、出力ファイルのそれぞれは、連続的な入力データの一部分を含んでいる。別の例としては、入力データは、非連続的なランダムに選択された部分（例えば、ビット、バイト、ワード、ブロック等）、準ランダムに選択された部分、決定論的に選択された部分等となるように分割されてもよく、該選択された部分は、出力ファイルを作成するために結合され得る。ここで、出力ファイルのそれぞれは、非連続的な入力データを含んでいる。
【００３４】
ブロック３２５では、コンピュータシステムは、種々の暗号化アルゴリズムのいずれかを実行することにより、該複数のファイル又は該複数のファイルのバージョンを暗号化して、それにより該複数のファイルの暗号化されたバージョンを作成する。いくつかの実施形態では、暗号化アルゴリズムは、暗号化されることになるデータに加えて、暗号化キー又はシードを必要とする。いくつかの実施形態では、該暗号化キー又はシードは、該コンピュータシステムにとってプライベートであり得る（例えば、暗号化キーは、暗号化アルゴリズムの実行において、いかなる他のコンピューティングデバイスによっても使用されない）。
【００３５】
ブロック３３０では、コンピュータシステムは、種々のデータパディングアルゴリズムのいずれかを実行することにより、該複数のファイル又は該複数のファイルのバージョンに対して、ランダムに生成されたデータ、準ランダムに生成されたデータ、決定論的に生成されたデータ等を追加して、それにより該複数のファイルのパディングされたバージョンを作成する。該複数のファイルのサイズが異なるいくつかの実施形態では、コンピュータシステムによって追加されたデータによって、該複数のファイルのそれぞれが同じサイズになる。
【００３６】
ブロック３３５では、コンピュータシステムは、種々の周期的ＸＯＲアルゴリズムのいずれかを実行することにより、該複数のファイル又は該複数ファイルのバージョンを周期的ＸＯＲ処理して、それにより該複数ファイルのＸＯＲ処理されたバージョンを作成する。一例では、該複数のファイルのうち第１のファイル及び第２のファイルをＸＯＲ処理して第１のファイルのバージョンを作成し、該複数のファイルのうち該第２のファイル及び第３のファイルをＸＯＲ処理して第２のファイルのバージョンを作成する。いくつかの実施形態では、ＸＯＲ処理されることになる２つのファイルが同じサイズでない場合、２つのファイルのうちの小さい方に、０、１、ランダムに生成されたデータ、決定論的に生成されたデータ等をパディングして、それによりＸＯＲアルゴリズムの実行を容易にする。他の実施形態では、ＸＯＲ処理されることになる２つのファイルが同じサイズでない場合、両方のファイルの最初のＮビット又はＮバイトのみをＸＯＲする。Ｎは、例えば、２つのファイルのうち小さい方のサイズに等しいものであり得る。
【００３７】
ブロック３４０では、コンピュータシステムは、種々のビット分散アルゴリズムのいずれかを実行することにより、該複数のファイル又は該複数のファイルのバージョンをビット分散させて、それにより該複数のファイルのビット分散バージョンを作成する。ビット分散アルゴリズムは、上記のHilewitzの参考文献によって示されているように、当技術分野において周知である。いくつかの実施形態では、データを変換することによってデータを難読化する他のアルゴリズムを実行して、それによりソースデータ又は該複数のファイルのバージョンを作成する。図２のブロック２１０における複数の難読化データファイルは、ブロック３２０〜３４０のいずれかによって作成された該複数のファイルのバージョンであってもよく、ブロック２１０の一部として実行される他のアルゴリズムによって作成された該複数のファイルのバージョンであってもよい。
【００３８】
図２に戻り、ブロック２１５では、コンピュータシステムは、難読化データファイルに対応するトレースファイルを生成する。いくつかの実施形態では、トレースファイルのそれぞれが単一の難読化データファイルにマッピングされ、難読化データファイルのそれぞれが単一のトレースファイルにマッピングされるように、難読化データファイルとトレースファイルとの間に１対１のマッピングが存在している。トレースファイルは、トレースファイルがマッピングされた難読化データファイルの作成方法に関する情報を含んでいる。例えば、トレースファイルは、トレースファイルがマッピングされている難読化データファイルを生成するために実行された特定のアルゴリズム、実行された特定のアルゴリズムのシーケンス、実行された特定のアルゴリズムの構成情報等を含み得る。一例では、難読化データファイルにマッピングされるトレースファイルは、難読化ファイルが作成されたことの情報であって、ソースデータに対して最初に特定の圧縮アルゴリズムを実行し、次に特定の並べ替えアルゴリズムを実行し、次に特定の暗号化キー及びシードを用いて特定の暗号化アルゴリズムを実行し、次に制御値の特定のセットを用いて特定のデータパーティションアルゴリズムを実行し、最後に特定の暗号化キー及びシードを用いて特定の暗号化アルゴリズムを実行することによって、該難読化ファイルが作成されたことの情報を含んでいる。
【００３９】
いくつかの実施形態では、コンピュータシステムが特定のソースデータを再生成することを可能にするために、特定のソースデータに対応する難読化データファイルのセットへのアクセスを必要とすることに加えて、コンピュータシステムは、難読化データファイルのセットに対応するトレースファイルへのアクセスを必要としてもよい。難読化データファイルが必要とされるのは、特定のソースデータの情報（難読化された形式ではあるが）が難読化データファイルに含まれているためである。トレースファイルが必要とされるのは、難読化データファイルに基づいて特定のソースデータを再生成する方法に関する情報がトレースファイルに含まれているためである。特定の作成プロセスに従って難読化データファイルが作成された場合、トレースファイルは、作成プロセスを逆行させることができる情報であって、該特定のソースデータを該難読化データファイルに基づいて再生成させることができる情報を含んでいる。
【００４０】
トレースファイルは、トレースファイルがマッピングされた難読化データファイルの識別情報をさらに含み得る。識別情報は、難読化データファイルを確実に識別することを可能にする。いくつかの実施形態では、識別情報は、難読化データファイルの内容に基づいてハッシュアルゴリズムにより生成されるハッシュ値であり、該ハッシュアルゴリズムは、難読化データファイルの内容に対して一意である。換言すると、難読化データファイルのデータとは異なるデータを包含するいかなるファイルも、該難読化データファイルとは異なるハッシュ値を有することになる。
【００４１】
ブロック２２０では、コンピュータシステムは、難読化データファイル及びトレースファイルをコンピューティングデバイスに送信して、それによりデータ移動プロセスを可能にする。とりわけ、ブロック２２０のコンピューティングデバイスは、例えば、図１のデバイス１２５，１３０，１５５又は１８５のいずれかであり得る。いくつかの実施形態では、コンピュータシステムは、第１のコンピューティングデバイスをコンピューティングデバイスのセットからランダムに、準ランダムに、決定論的に等により選択し、該コンピュータシステムは、複数の難読化データファイルのうちの第１の難読化データファイルと、第１の難読化データファイルにマッピングされたトレースファイルとを、第１のコンピューティングデバイスに送信する。コンピュータシステムは、第２のコンピューティングデバイスを同様に選択し、複数の難読化データファイルのうちの第２の難読化データファイルと、第２の難読化データファイルにマッピングされたトレースファイルとを、第２のコンピューティングデバイスに送信する。コンピュータシステムが全ての難読化データファイル及び難読化データファイルに対応するトレースファイルをブロック２２０のコンピューティングデバイスに送信するまで、コンピュータシステムはこのプロセスを繰り返す。
【００４２】
コンピュータシステムが難読化データファイル及びトレースファイルを送信することにより可能になるデータ移動プロセスは、種々のデータ移動プロセスのいずれかであり得る。例えば、ブロック２２０にて可能になるデータ移動プロセスは、とりわけ、図４のフロー図４００に示される方法であり得る。前述のように、攻撃者が本開示の技術によって保護されたデータへのアクセスを得ることに成功するためには、攻撃者はまず、保護されたデータを再生成するのに必要な全ての難読化データファイルにアクセスする必要がある。いくつかの実施形態では、データ移動プロセスは、プール又はコンピューティングデバイスのセット内にて、ランダムに、準ランダムに、決定論的に等により移動させることを含んでいる。結果として、任意の難読化データファイルを任意のコンピューティングデバイス上に配置することができるため、難読化データファイルの在処を特定することは極めて困難である。
【００４３】
さらに、攻撃者が複数の独立した企業のネットワーク上に配置され得る全てのコンピューティングデバイスをフリーズさせることができない限り、特定のソースデータを再生成するのに必要な難読化データファイルを全て得ることは、事実上不可能である。例えば、ソースデータが難読化させられて１０個の難読化データファイルが作成された場合、難読化データファイルはそれぞれ、最初は１０個の異なるコンピューティングデバイス、すなわち第１のコンピューティングデバイスから第１０のコンピューティングデバイスに配置され得る。その時点において、攻撃者は第１のコンピューティングデバイスへのアクセスを得て、第１のコンピューティングデバイス上の全てのファイルのコピーを入手することができる。その後、攻撃者は、第１０のコンピューティングデバイスへのアクセスを得ることができる。しかしながら、元は１０番目のコンピューティングデバイスにあった難読化データファイルは、既に１１番目のコンピューティングデバイスに移動されており、ここで、該難読化データファイルは、別のランダムな名によって名を変更されており、かつ、再度暗号化されている。
【００４４】
この例によって示されるように、攻撃者が全てのコンピューティングデバイスを同じ時間又は実質的に同じ時間にフリーズさせることができない限り、必要な難読化データファイルの全てのコピーを入手することは事実上不可能になる。全ての難読化データファイルがソースデータの再生成に必要とされるいくつかの実施形態では、難読化データファイルの全てを所有していない攻撃者の誰かがソースデータの再生成に成功してしまうことを、効果的に防止することができる。さらに、攻撃者が全てのコンピューティングデバイスを同時にフリーズし、本開示の技術のバージョンを用いて保護された１０，０００個のファイルを含むデータストアの全てのデータを入手できたとしても、データストアに対する総当たり攻撃は、先に説明した例のように、約２476通りの部分の組み合わせを選別する必要があることになる。加えて、難読化データファイルが移動される途中である場合には、同時フリーズが起こることがある。そのような場合には、該ファイルを含むデータは、完全には格納されておらず、むしろ部分的に格納されてコンピューティングデバイス間を部分的に移動させられる過程にあるため、攻撃者は、難読化データファイルの使用可能なコピーを入手できない可能性がある。
【００４５】
ブロック２２５では、コンピュータシステムは、難読化データファイル及びトレースファイルをクリーンアップする。選択されたファイルのクリーンアップは、選択されたファイルの削除、選択されたファイルのデータのゼロ消去、選択されたファイルを格納するために以前に利用されたストレージ空間の解放、選択されたファイルに対する（１つ又は複数の）ポインタの除去等のいずれかを含み得る。
【００４６】
図４は、種々の実施形態と一致する、データ移動プロセスの方法を示すフロー図である。図４のデータ移動プロセスは、とりわけ、図２のブロック２２０にて可能になるデータ移動プロセスであり得る。ブロック４０５では、コンピューティングデバイスは、難読化データファイル及びトレースファイルを受信する。図４のコンピューティングデバイスは、とりわけ、図１のデバイス１２５，１３０，１５５又は１８５のいずれかであり得る。ブロック４１０では、コンピューティングデバイスは、ブロック４０５で受信された、難読化データファイルの名及びトレースファイルの名を生成する。それぞれの名は、ランダムに生成され、準ランダムに生成され、決定論的に生成される等のような種々の方法のいずれかにて生成され得る。前述のように、ランダムに生成される名は、一意となるように、ランダムだが既定の方法により生成される等、種々の方法にて生成され得る。
【００４７】
ブロック４１５では、コンピューティングデバイスは、難読化データファイルをさらに難読化して、それにより難読化データファイルの修正されたバージョンを作成する。前述のように、選択されたデータを難読化することは、圧縮アルゴリズム、データパーティショニングアルゴリズム、暗号化アルゴリズム、ビット分散アルゴリズム、データ並べ替えアルゴリズム、周期的排他的論理和（ＸＯＲ）アルゴリズム等のような１つ以上のアルゴリズムの実行によって、該選択されたデータ又は該選択されたデータのバージョンを変換することを含んでいる。選択されたデータを難読化することは、該選択されたデータ又は該選択されたデータのバージョンにランダムデータを追加することにより、該選択されたデータを変換することをさらに含み得る。一例では、コンピューティングデバイスは、難読化データファイル及び暗号化キーを入力として採用すると共に該難読化データファイルの改変されたバージョンを出力する暗号化アルゴリズムを適用することによって、難読化データファイルを難読化する。この例では、暗号化キーは、コンピューティングデバイスにとって専用にデータを暗号化するために使用され、該暗号化キーは、コンピューティングデバイスにとって専用である。
【００４８】
ブロック４２０では、コンピューティングデバイスは、さらなる難読化（すなわち、ブロック４１５のさらなる難読化）に基づいて、トレースファイルを更新する。トレースファイルを更新することにより、ブロック４１５の難読化を逆行させることができ、それによりブロック４０５にて受信された難読化データファイルを再生成することができる。一例では、コンピューティングデバイスは、ブロック４１５の暗号化を逆行させることを可能にする（例えば、ブロック４１５の出力である暗号化ファイルを復号できることを可能にする）暗号化情報を用いて、トレースファイルを更新する。トレースファイルは、難読化データファイルの改変されたバージョンの識別情報を用いて、さらに更新することができる。このような識別情報としては、例えば、難読化データファイルの改変されたバージョンのハッシュ値等が挙げられる。該識別情報は、難読化データファイルの改変されたバージョンを確実に識別することを可能にする。例えば、トレースファイルは、使用された特定の暗号化アルゴリズム、暗号化アルゴリズムにより使用された任意のパラメータ、使用された暗号化キーに関する情報、難読化データファイルの改変されたバージョンの内容に基づきハッシュアルゴリズムによって生成されるハッシュ値であって、難読化データファイルの改変されたバージョンの確実な識別を可能にするハッシュ値、等に関する情報を用いて更新され得る。
【００４９】
ブロック４２５では、コンピューティングデバイスは、トレースファイルを難読化して、それによりトレースファイルの改変されたバージョンを作成する。一例では、コンピューティングデバイスは、トレースファイル及び暗号化キーを入力として採用すると共に難読化データファイルの改変されたバージョンを出力する暗号化アルゴリズムを適用することによって、トレースファイルを難読化する。
【００５０】
ブロック４３０では、コンピューティングデバイスは、パルスメッセージを送信する。パルスメッセージは、トレースファイル若しくは難読化データファイル、又はトレースファイル若しくは難読化データファイルの選択されたバージョンの位置を選択されたコンピュータシステムに通知するために、選択されたコンピュータシステムに送信されるメッセージである。パルスメッセージは、コンピューティングデバイスの識別子を含むことができ、該識別子としては、例えば、コンピューティングデバイスのインターネットプロトコル（ＩＰ）アドレス、コンピューティングデバイスの名、コンピューティングデバイスのネットワークインタフェースのメディアアクセス制御（ＭＡＣ）アドレス、コンピューティングデバイスのシリアル番号又はコンピューティングデバイスのハードウェアコンポーネント等が挙げられる。該識別子は、難読化データファイル又はトレースファイルを取得するために必要な時間の短縮を可能にし得る。選択されたコンピュータシステムは、とりわけ、ソースデータを保護するための初期要求を受信したコンピュータシステムであり得る。例えば、選択されたコンピュータシステムは、図２のブロック２０５のコンピュータシステムであり得る。
【００５１】
いくつかの実施形態では、トレースファイル又は難読化データファイルが、図４のデータ移動プロセスによって移動させられた際に、パルスメッセージは、トレースファイル又は難読化データファイルが辿った経路と同じ経路を辿る。パルスメッセージは、それぞれのコンピューティングデバイス上にパルス痕跡ファイルを残し、パルスメッセージは、該パルス痕跡ファイルを伝って元のコンピューティングシステム（例えば、図２のステップ２０５のコンピュータシステム）へと移動する。図５は、データ移動プロセスの複数回の実行によって種々のコンピューティングデバイス間で移動させられる難読化データファイルの一例を示す。パルス痕跡ファイルのそれぞれは、前のパルス痕跡ファイルへのリンクを包含することができ、それにより、選択されたコンピュータシステムからトレースファイル又は難読化データファイルの現在の位置まで導くことが可能なパルス痕跡を含んでいる。
【００５２】
ユーザが本開示の技術によって保護されたデータストアから保存されたファイルを取得する際には、取得するコンピュータシステムは、選択されたコンピュータシステムから全てのトレースファイル又は難読化データファイルの現在位置へとパルス痕跡を辿ると共に、それらのトレースファイル又は難読化データファイルを該取得するコンピュータシステムに戻すよう配信し得る。該取得するコンピュータシステムは、取得されたトレースファイルの情報に基づいて、難読化データファイルを結合すると共に難読化プロセスを逆行させることができ、それによりソースデータを生成する。
【００５３】
いくつかの実施形態では、選択されたパルス痕跡ファイル（パルスファイルとも称する）の名は、パルスメッセージを開始する選択されたトレースファイル名から暗号学的に導出され得る。したがって、トレースファイル名が決して重複しない実施形態では、異なる難読化データファイルについてのパルス痕跡ファイルは、決してそれらの名が重複しない。パルス痕跡ファイルは、一時的なものであり得る。例えば、特定のコンピュータシステムは、同じ難読化データファイル又はトレースファイルに基づく新しいパルスが特定のコンピュータシステムを通過するたびに、既存のパルス痕跡ファイルを削除することができる。いくつかの実施形態では、パルス痕跡ファイルは、データストア内において連続的にその名を変更し、消滅し、異なる名前にて再出現する。このような実施形態において、パルス痕跡ファイルに対する総当たり攻撃の困難さは、難読化データファイルに対する攻撃と非常に類似している。
【００５４】
ブロック４３５では、コンピューティングデバイスは、既定の時間量だけ待機する。いくつかの実施形態では、ユーザは、既定の時間量を設定ファイル内に入力することによって該既定の量を設定し、コンピューティングデバイスは、設定ファイル又は設定ファイルより導出されたファイルにアクセスして、それにより該既定の時間量を決定する。他の実施形態では、該既定の時間は、ユーザによって設定された後にトレースファイルに追加され、コンピューティングデバイスは、トレースファイルにアクセスして、それにより該既定の時間量を決定する。さらに他の実施形態では、既定の時間量は、とりわけ、ランダムに、準ランダムに、又は、決定論的に決定される。
【００５５】
ブロック４４０では、コンピューティングデバイスは、max_depthに達したかどうかを決定する。フロー図４００に示されるデータ移動プロセスは、複数のコンピューティングデバイスによって、複数回実行され得る。例えば、第１のコンピューティングデバイスは、難読化データファイル及びトレースファイルを受信し、フロー図４００の方法を適用して、さらなる難読化データファイル及びトレースファイルを次のコンピューティングデバイスへと送信することができる。この次のコンピューティングデバイスは、フロー図４００の方法を適用して、さらに別の難読化データファイル及びトレースファイルを別の次のコンピューティングデバイスに送信すること等ができる。
【００５６】
難読化データファイルがあまり頻繁に（例えば、月に１回）移動されない実施形態のようないくつかの実施形態では、データの再生成には、ｘ移動の頻度が低いために限られた難読化回数による影響を逆行させる必要があるだけであるため、データ移動のそれぞれにおけるブロック４１５の適用は、さほど多くはない。難読化されたデータが頻繁に（例えば、１時間に１回）移動される実施形態のような他の実施形態では、データの再生成には、移動の頻度が高いために非常に多くの難読化回数による影響を逆行させる必要があり得るため、データ移動のそれぞれにおけるブロック４１５の適用が非常に多くなる可能性がある。１年の間、難読化データファイルが１時間に１度（フロー図４００の処理に続いて）移動させられた場合、ブロック４１５は８，０００回を超えて適用される可能性があり、ソースデータを再生成するには、８，０００回を超える難読化の影響を逆行させる必要があり得る。ソースデータを再生成するための８，０００回を超える難読化の影響を逆行させるには、８，０００回を超える難読化を逆行させるのに必要な計算リソース及び時間が非常に多くなるため、計算処理及び時間が膨大になる可能性がある。例えば、ブロック４１５の難読化が暗号化アルゴリズムを実行することを含む場合、８，０００回を超える暗号化の影響を逆行させるには、８，０００回を超える復号を実行する必要がある。
【００５７】
このような状況が起こることを防止するため、いくつかの実施形態では、最大深度（max_depth）値が規定される。max_depth値は、ブロック４１５の難読化が、データ移動プロセス中に難読化データファイルの複数のバージョンに適用される最大回数に関する制限を設定する。同様に、min_depth値は、ブロック４１５の難読化が、データ移動プロセス中に難読化データファイルの複数のバージョンに適用される最小回数に関する制限を設定する。いくつかの実施形態では、max_depthは、図５に従って実行されるデータ移動プロセスが順方向５０３に進んでいる場合のような、データ移動プロセスが順方向に進んでいる場合にのみ到達され得る。ここでは、図５の例を参照することが有用である。図５は、種々の実施形態と一致する、種々のコンピューティングデバイス間を移動させられるデータを示す図である。
【００５８】
図５の例では、第１のランダムデバイス５０５は、保護されることになるソースデータの初期難読化を遂行して、それにより、例えば図２の方法を実行することによって、データ移動プロセスを可能にする。ソースデータの初期難読化を遂行して（例えば、ブロック２１０によって）複数の難読化されたデータファイルを作成し、（例えば、ブロック２１５によって）トレースファイルの初期生成を遂行した後、第１のランダムデバイス５０５は、難読化データファイル及び関連するトレースファイルを第２のランダムデバイス５１０に送信して（ステップ５０７）、それによりデータ移動プロセスを可能にする。ここで、データ移動プロセスは、順方向（例えば、順方向５０３）で開始する。第２のランダムデバイス５１０は、（例えば、ブロック４１５にて作成された）第２世代の難読化データファイル及び（例えば、ブロック４２５にて作成された）関連するトレースファイルを第３のランダムデバイス５１５に送信することによって、データ移動プロセスを順方向（例えば、順方向５０３）に継続し（ステップ５１２）、ここで第３のランダムデバイス５１５は、データ移動プロセスを継続する（ステップ５１７）。第２世代の難読化データファイルは、該難読化データファイルの１つのバージョンである。いくつかの実施形態では、第２世代の難読化データファイルは、ブロック４１５が難読化データファイルに基づいて２回実行された後における該難読化データファイルの該バージョンである。
【００５９】
データ移動プロセスは、第９のランダムデバイス５２０によって継続され、ここで第９のランダムデバイス５２０は、第８世代の難読化データファイルを受信して（ステップ５２２）、第９世代の難読化データファイル及び関連するトレースファイルを第１０のランダムデバイス５２５に送信する（ステップ５２７）ことによってデータ移動プロセスを継続する。第１０のランダムデバイス５２５は、（例えば、ブロック４１５で作成された）第９世代の難読化データファイルをさらに難読化して、それにより第１０世代の難読化データファイルを作成する。（例えば、ブロック４３５によって）既定の時間量待機した後、第１０のランダムデバイス５２５は、該max_depthに到達したと決定する。この例では、max_depthは（例えば、ブロック４４０によって）１０に設定されている。
【００６０】
max_depthに到達したと決定されると、データ移動プロセスは、min_depthに到達するまで逆方向（例えば、逆方向５０４）に継続される。第１０ランダムデバイス５２５は、（例えば、ブロック４４５によって）難読化データファイルを難読化解除して第９世代の難読化データファイルを再生成し、第９世代の難読化データファイルを第９のランダムデバイス５２０に送信し（ステップ５３２。また、例えばブロック４５０によっても）、ここで第９のランダムデバイス５２０は、データ移動プロセスを逆方向５０４に継続する（ステップ５３７）。データ移動プロセスは、第３のランダムデバイス５１５によって逆行して継続され、ここで第３のランダムデバイス５１５は、再生成された第３世代の難読化データファイルを受信し（ステップ５４２）、（例えば、ブロック４４５によって）第３世代の難読化データファイルを難読化解除して第２世代の難読化データを再生成し、再生成された第２世代の難読化データファイルを第２のランダムデバイス５１０に送信する（ステップ５４７）。第２のランダムデバイス５１０は、再生成された第２世代の難読化データファイルを（例えば、ブロック４４５によって）難読化解除して、それにより第１世代の難読化データファイルを再生成し、再生成された第１世代の難読化データファイルを第１のランダムデバイス５０５に送信する（ステップ５５３）。
【００６１】
このとき、第１のランダムデバイス５０５は、min_depthに到達したと決定する。この例では、min_depthは１に設定されている。min_depthに到達したと決定されると、データ移動プロセスは、第１のランダムデバイス５０５よって再び順方向５０３に継続される。第１のランダムデバイス５０５は、新たな第２世代の難読化データファイル及び関連するトレースファイルを第１１のランダムデバイス５３０に送信し（ステップ５０８）、ここで第１１のランダムデバイス５３０は、データ移動プロセスを順方向５０３に継続する（ステップ５１３）。このプロセスは、ステップ５２８の後、max_depthに再び到達するまで継続され、max_depthに到達した時、データ移動プロセスは、ステップ５５３の後、再びmin_depthに達するまで、再び逆方向５０４に継続され（ステップ５３３）、min_depthに到達した時、データ移動プロセスは再び順方向５０３に継続される。
【００６２】
いくつかの実施形態では、データ移動プロセスが逆方向に継続される際に、ブロック４０５にて受信された難読化データファイルは、格納される前に難読化される（ブロック４１５）ことに留意されたい。これにより、特定のコンピューティングデバイス上に、順方向の間に存在していた状態と同じ状態（例えば、同じ暗号化データを有する状態）の難読化データファイルが存在することが回避される。その結果、攻撃者は、難読化データファイルが特定のコンピューティングデバイスによって逆方向に受信されている際に、該特定のコンピューティングデバイス上にて同じ難読化データファイルを見つけることができなくなる。
【００６３】
図４の説明に戻り、ブロック４４５では、コンピューティングデバイスは、難読化データファイル及びトレースファイル、又は難読化データファイル及びトレースファイルの改変されたバージョンを難読化解除する。難読化データファイル及びトレースファイルの改変されたバージョンはそれぞれ、以前にブロック４１５及び４２５にて作成されたものである。ブロック４４５では、コンピューティングデバイスは、（ブロック４１５及び４２５の難読化の前に）難読化プロセスを逆行させて、それにより難読化データファイル及びトレースファイルを再生成する。識別情報がハッシュ値である場合のように、トレースファイルの識別情報が難読化データファイルのデータを一意に検証可能な実施形態では、トレースファイルのハッシュ値は、難読化データファイルのデータに基づいて計算されるハッシュ値と比較され得る。ハッシュ値が一致しない場合には、コンピューティングデバイスは、難読化データファイルが不適切に改変されたこと及びセキュリティ違反が発生したことの決定をすることができる。コンピューティングデバイスは、前のコンピューティングデバイス（すなわち、不適切に改変された難読化データファイルを現在のコンピューティングデバイスに送信したもの）が信頼されないコンピュータであるとさらに決定することができ、前のコンピューティングデバイスの識別情報を、信頼されたコンピュータデータベースに追加することができる。ここで、信頼されたコンピュータデータベースは、信頼されたコンピュータ及び信頼されないコンピュータの識別を可能にするデータベースである。
【００６４】
ブロック４５０では、コンピューティングデバイスは、再生成された難読化データファイル及びトレースファイルを、前のコンピューティングデバイスに送信する。前のコンピューティングデバイスは、ブロック４０５にて難読化データファイル及びトレースファイルを受信したコンピューティングデバイスであり得る。いくつかの実施形態では、難読化データファイルを難読化解除するために、難読化データファイルを特定のコンピューティングデバイスに送信する必要がある。例えば、特定のコンピューティングデバイスが私有鍵に基づいてファイルを暗号化することによりファイルを難読化する場合、特定のコンピューティングデバイスが該ファイルを暗号化するのに使用された秘密鍵へのアクセスを有する唯一のコンピューティングデバイスファイルであり得るため、ファイルの復号には該ファイルを特定のコンピューティングデバイスに送信することが必要であり得る。
【００６５】
ブロック４６５では、コンピューティングデバイスは、難読化データファイル及びトレースファイルをクリーンアップする。選択されたファイルのクリーンアップは、選択されたファイルの削除、選択されたファイルのデータのゼロ消去、選択されたファイルを格納するために以前に利用されたストレージ空間の解放、選択されたファイルに対する（１つ又は複数の）ポインタの除去等のいずれかが含まれ得る。ブロック４５５で、コンピューティングデバイスは、min_depthに到達したかどうかについて決定する。min_depthは、例えば、図５のmin_depth５０１であり得る。いくつかの実施形態では、min_depthは、図５のデータ移動プロセスが逆方向５０４に進行している場合のように、データ移動プロセスが逆方向に進行している場合にのみ到達され得る。ブロック４６０では、コンピューティングデバイスは、難読化データファイル及びトレースファイル、又は、難読化データファイル及びトレースファイルの１つのバージョンを、次のコンピューティングデバイスに送信する。いくつかの実施形態では、コンピューティングデバイスは、ランダムに、準ランダムに、決定論的に等により、コンピューティングデバイスのセットから次のコンピューティングデバイスを選択する。例えば、コンピューティングデバイスのセットは、とりわけ、図１のデバイス１２５Ａ，１３０Ａ，１５５Ａ又は１８５Ａのいずれかであり得る。
【００６６】
図６は、種々の実施形態と一致する、ソースデータを再生成する方法を示すフロー図である。図６の方法は、図２の方法と組み合わせて実行することができる。ブロック６０５では、図２のコンピュータシステムのようなコンピュータシステムは、複数のハッシュ値を生成する。ハッシュ値は、いくつかの実施形態では、ブロック２１５で生成されたトレースファイルに含まれる識別情報であり得る。ハッシュ値のそれぞれは、ブロック２１０の複数の難読化データファイルの異なる１つの内容に基づいて、ハッシュアルゴリズムを実行することによって生成される。ブロック２１５のトレースファイルのそれぞれが識別情報を含み、該識別情報がハッシュ値である実施形態では、ブロック２２０にて難読化データファイル及びトレースファイルが送信される際に、トレースファイルは、難読化データファイルを一意的に識別するために使用され得るハッシュ値を含んでいる。
【００６７】
ブロック６１０では、コンピュータシステムは、ハッシュ値をストレージデバイスにて格納する。ハッシュ値は、種々の方法のいずれかにて格納され得る。例えば、ハッシュ値は、データベース内の１つ以上のファイル等の中に格納され得る。該１つ以上のファイル又は該データベースは、暗号化され得る、又は、他の方法にて難読化され得る。ブロック６１５では、コンピュータシステムは、ブロック２２０のコンピューティングデバイスのようなコンピューティングデバイスに、ハッシュ値を送信する。コンピュータシステムがパルスメッセージを受信する実施形態のようないくつかの実施形態では、コンピュータシステムは、パルスメッセージを介して受信された識別子に基づいて、ハッシュ値の１つ以上をコンピューティングデバイスに送信する。該識別子は、図４のブロック４３０の識別子であり得ると共に、識別子を含むパルスメッセージを送信したコンピューティングデバイスを一意に識別することができる。
【００６８】
特定のコンピューティングデバイスがハッシュ値を受信した際に、コンピューティングデバイスは、該ハッシュ値をコンピューティングデバイスがアクセスした任意のトレースファイルのハッシュ値と比較し得る。受信されたハッシュ値がトレースファイルのハッシュ値と一致する場合、コンピュータシステムは、該トレースファイルにマッピングされた難読化データファイルをコンピュータシステムに返信するプロセスを開始し得る。難読化データファイルがデータ移動のそれぞれを伴って追加の難読化層を追加するデータ移動プロセスの一部として移動させられているため、難読化データファイルを返信するプロセスは、データ移動プロセスに従い得るが、逆方向に行われる。例えば、図５を参照すると、第１０のランダムデバイス５２５がハッシュ値を受信し、かつ、該ハッシュ値がステップ５２７にて受信されたトレースファイルのハッシュ値と一致する場合には、ステップ５２７で受信された難読化データファイルは、例えばステップ５３２、その後のステップ５３７等によって行われるような難読化データファイル及びトレースファイルの移動によって、トレースファイル及び難読化データファイルがコンピュータシステムに到達するまで、逆方向５０４に返信される。
【００６９】
ブロック６２０では、コンピュータシステムは、難読化データファイル及び難読化データファイルに関連するトレースファイルを受信する。ブロック６２５では、コンピュータシステムは、難読化データファイル及びトレースファイルに基づいて、ソースデータを再生成する。トレースファイルは、該トレースファイルがマッピングされた難読化データファイルがどのように作成されたかについての情報を含むため、コンピュータシステムは、該トレースファイルの情報を使用して、それにより該トレースファイルにマッピングされた難読化データファイルについての難読化プロセスを逆行させることができる。例えば、難読化データファイルが図２のブロック２１５にて生成された場合、コンピュータシステムは、ブロック２１０の難読化データファイル及びブロック２１５のトレースファイルに基づいて、ブロック２０５のソースデータを再生成することができる。
【００７０】
図７は、種々の実施形態と一致する、本明細書に記載された少なくともいくつかの動作を実装され得る処理システムの例を示すブロック図である。処理システムは、上述した方法／アルゴリズムのいずれかを実行可能なシステムを表す処理デバイス７００であり得る。例えば、処理デバイス７００は、とりわけ、図１のデバイス１２５，１３０，１５５又は１８５のいずれかであり得る。システムは、図７に示すような２つ以上の処理デバイスを含んでいてもよく、該処理デバイスは、ネットワーク又は複数のネットワークを介して互いに結合されていてもよい。ネットワークは、通信ネットワークと称され得る。
【００７１】
図示の実施形態では、処理デバイス７００は、１つ以上のプロセッサ７１０、メモリ７１１、通信デバイス７１２及び１つ以上入力／出力（Ｉ／Ｏ）デバイス７１３を含んでおり、これらの全てがインターコネクト７１４を介して互いに結合されている。インターコネクト７１４は、１つ以上の導電トレース、バス、ポイントツーポイント接続、コントローラ、アダプタ及び／又は他の従来の接続デバイスであってもよく、それらを含んでいてもよい。プロセッサ７１０のそれぞれは、例えば、１つ以上の汎用プログラマブルマイクロプロセッサ若しくはマイクロプロセッサコア、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルゲートアレイ等、又は、そのようなデバイスの組み合わせであってもよく、それらを含んでいてもよい。（１つ以上の）プロセッサ７１０は、処理デバイス７００の全体的な動作を制御する。メモリ７１１は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）（消去可能かつプログラム可能であってもよい）、フラッシュメモリ、小型ハードディスクドライブ、若しくは他の適切なタイプのストレージデバイス、又は、そのようなデバイスの組み合わせであってもよく、それらを含んでいてもよい。メモリ７１１は、上述の技術に従って動作を実行するように（１つ以上の）プロセッサ７１０を構成するデータ及び命令を格納してもよい。通信デバイス７１２は、例えば、イーサネットアダプタ、ケーブルモデム、Ｗｉ−Ｆｉアダプタ、セルラートランシーバ、ブルートゥーストランシーバ等又はそれらの組み合わせであってもよく、それらを含んでいてもよい。処理デバイス７００の特定の性質及び目的に応じて、Ｉ／Ｏデバイス７１３は、ディスプレイ（タッチスクリーンディスプレイであってもよい）、オーディオスピーカ、キーボード、マウス又は他のポインティングデバイス、マイクロフォン、カメラ等のようなデバイスを含み得る。
【００７２】
プロセス又はブロックは所定の順序で提示されるが、代替の実施形態は、ステップを有するルーチンを実行してもよく、ブロックを有するシステムを異なる順序で採用してもよい。また、いくつかのプロセスまたはブロックは、代替若しくは部分的組み合わせを提供するように削除、移動、追加、細分化、結合及び／又は改変されてもよく、複製され（例えば、複数回実施され）てもよい。これらのプロセス又はブロックのそれぞれは、種々の異なる方法にて実施することができる。加えて、プロセス又はブロックは時には直列に実行されるものとして示されているが、これらのプロセス又はブロックは、代わりに並列に実行されてもよく、異なる時間に実行されてもよい。プロセス又はステップが値又は計算に「基づいて」いる場合、該プロセス又はステップは、少なくとも該値又は該計算に基づいて解釈されるべきである。
【００７３】
ここで紹介した技術を実施するためのソフトウェア又はファームウェアは、機械可読記憶媒体に格納されていてもよく、また、１つ以上の汎用又は専用のプログラム可能なマイクロプロセッサによって実行されてもよい。本明細書にて使用される「機械可読媒体」は、情報を機械（機械は、例えば、コンピュータ、ネットワークデバイス、携帯電話、携帯情報端末（ＰＤＡ）、製造ツール、１つ以上のプロセッサを備えた任意のデバイス等であってもよい）によってアクセス可能な形式にて格納可能な任意の機構を含んでいる。例えば、機械アクセス可能媒体は、記録可能／記録不可能媒体（例えば、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなど）等を含んでいる。
【００７４】
上述の実施形態のいずれか及び全ては、それが上記で他に述べられている範囲又はそのような実施形態が機能及び／又は構造において互いに排他的である範囲を除いて、互いに組み合わせられ得ることに留意されたい。
【００７５】
本発明は、特定の例示的な実施形態を参照して記載されているが、本発明は、記載された実施形態には限定されず、添付の特許請求の範囲の趣旨及び範囲内の改変及び変更を伴って実施され得ることが認識されるであろう。したがって、本明細書及び図面は、限定的な意味ではなく、例示的な意味であるとみなされるべきである。
【００７６】
処理デバイス７００、デバイス１２５，１３０，１５５又は１８５等のいずれかに関連する物理的及び機能的コンポーネント（例えば、デバイス、エンジン、モジュール及びデータリポジトリ等）は、回路、ファームウェア、ソフトウェア、他の実行可能な命令又はそれらの任意の組み合わせとして実施され得る。例えば、機能的コンポーネントは、専用の回路、１つ以上の適切にプログラムされたプロセッサ、単一基板チップ、フィールドプログラマブルゲートアレイ、実行可能な命令によって構成された汎用コンピューティングデバイス、実行可能命令によって構成された仮想マシン、実行可能な命令によって構成されたクラウドコンピューティング環境又はそれらの任意の組み合わせの形態にて実施され得る。例えば、記載の機能コンポーネントは、プロセッサ又は他の集積回路チップによって実行可能な有形ストレージメモリ上における命令として実装され得る。有形ストレージメモリは、コンピュータ可読データストレージであり得る。有形ストレージメモリは、揮発性メモリ又は不揮発性メモリであってもよい。いくつかの実施形態では、揮発性メモリは、「非一時的」と考えられてもよく、これは、一時的な信号ではないという意味である。図に記載されているメモリ空間及びストレージは、揮発性メモリ又は不揮発性メモリを含む有形ストレージメモリによっても実装され得る。
【００７７】
それぞれの機能的コンポーネントは、他の機能的コンポーネントとは個々に独立して動作してもよい。機能的コンポーネントの一部又は全部は、同じホストデバイス上で実行されてもよく、別個のデバイス上で実行されてもよい。該別個のデバイスは、それらの動作を調査させるために、１つ以上の通信チャネル（例えば、無線又は有線チャネル）を介して結合され得る。機能的構成要素の一部又は全部は、１つの構成コンポーネントとして組み合わされてもよい。単一の機能コンポーネントは、複数のサブコンポーネントに分割されてもよく、ここで、各サブコンポーネントは、単一のコンポーネントの個別の１つ又は複数の方法ステップを実行する。
【００７８】
いくつかの実施形態では、少なくともいくつかの機能的コンポーネントは、メモリ空間へのアクセスを共有する。例えば、１つの機能的コンポーネントは、別の機能的コンポーネントによってアクセスされたデータ又は別の機能コンポーネントによって変換されたデータにアクセスしてもよい。機能的コンポーネントが物理的接続又は仮想的接続を直接的又は間接的に共有しており、それによってある機能的コンポーネントによってアクセス又は改変されたデータに別の機能コンポーネントがアクセスすることが可能になる場合に、機能的コンポーネントは、互いに「結合」されているとみなされてよい。いくつかの実施形態では、少なくともいくつかの機能的コンポーネントは、（例えば、機能コンポーネントの一部を実装する実行可能命令を再構成することによって）リモートにアップグレード又は改変され得る。上述の他のアレイ、システム及びデバイスは、種々の用途のために、追加の、少ない数の又は異なる機能的コンポーネントを含んでいてもよい。
【図１】
0006397590.tif 000002
【図２】
0006397590.tif 000003
【図３】
0006397590.tif 000004
【図４】
0006397590.tif 000005
【図５】
0006397590.tif 000006
【図６】
0006397590.tif 000007
【図７】
0006397590.tif 000008