(58)【調査した分野】(Int.Cl.,DB名)
コンピュータ上で実行されると、請求項1乃至16のいずれか1項に記載の方法のすべての方法ステップを前記コンピュータに実行させる、マシン実行可能なプログラム命令の組を格納しているデジタル・データ・ストレージ媒体。
プログラムがコンピュータ上で動作されると請求項1乃至16のいずれか1項に記載のステップを含む方法を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の目標は、複数のストレージ・サービス・プロバイダに分散され格納されているデータの機密性を保護するためのより安全な技術的解決策を提供することである。
【0009】
これは、本発明による方法を適用することによって、解決可能である。
【課題を解決するための手段】
【0010】
本発明の第1の目的は、複数のストレージ・サービス・プロバイダに分散され、格納されているファイルの機密性を保護するための方法であって、
セキュリティ・パラメータnを選択するステップと、
ファイルをn個のチャンクS
1,・・・,S
nに分割するステップと、
i=1,・・・,nおよびj=1,・・・,nに対して、n
2個の係数a
ijを選択するステップと、
i=1,・・・,nに対して、ベクトルa
i1,・・・,a
inが1次独立であることを確認するステップであって、そうでない場合には、係数を再度生成するステップと、
i=1,・・・,nに対して、n個の1次結合C
i=a
i1・S
1+・・・+a
ij・S
j+・・・+a
in・S
nを計算するステップと、
前記複数のストレージ・サービス・プロバイダの間で、n個のストレージ・サービス・プロバイダO
1,・・・,O
nを選択するステップと、
前記ファイルを指定するn個のファイル識別子ID’
1,・・・,ID’
nを生成するステップと、
i=1,・・・,nに対して、ファイル識別子ID’
iと関連するストレージ・サービス・プロバイダO
iに、結合C
iを格納するステップと、
i=1,・・・,nに対して、ファイル識別子ID’
iとプロバイダ識別子O
iとを、ファイルに対応しておりローカル・メモリに格納されているファイル記述子に格納するステップと、
i=1,・・・,nに対して、結合C
iと再度関連付けられることが可能であるように、係数a
i1,・・・,a
inの組を格納するステップと、
を含む方法において、
i=1,・・・,nおよびj=1,・・・,nに対して、前記n
2個の係数a
ijをランダムに選択するステップと、
i=1,・・・,nに対して、ベクトルa
i1,・・・,a
inが1次独立であることを確認するステップであって、そうでない場合には、係数を再度生成するステップと、
j=1,・・・,nに対して、n個のスーパ係数a’
1,・・・,a’
j,・・・,a’
nをランダムに選択するステップと、
1次オーバ結合(linear over−combination)OC’=a’
1・C
1+・・・+a’
j・C
j+・・・+a’
n・C
nを計算するステップと、
j=1,・・・,nに対して、オーバ結合OC’と係数a’
1,・・・,a’
j,・・・,a’
nとを格納するステップと、
を更に含むことを特徴とする方法である。
【0011】
分散され格納されるファイルのすべてのチャンクの1次結合C
jを計算し、次いで、それらの結合を、複数のストレージ・サービス・プロバイダにそれぞれ格納するという事実により、暗号化または鍵の管理を必要とすることなく、ファイルの機密性が保護されるのであるが、その理由は、元のファイルの任意のチャンクを検索するためには、すべての結合を得ることが必要であるからである。よって、プロバイダは、n個のプロバイダすべてが共謀しない限り、これらの結合からどの情報も抽出することができない。n
2個のランダムに選択された係数とオーバ結合とを用いるという事実により、セキュリティが向上する。
【0012】
複数のストレージ・サービス・プロバイダに分散され、格納されているファイルの機密性を保護するための方法の第1の特徴的な実施形態によれば、i=1,・・・,nに対して、結合C
iと再度関連付けられることが可能であるように、係数の組a
i1,・・・,a
inを格納するステップは、i=1,・・・,nに対して、結合C
iおよびファイル識別子ID’
iと関連して、ストレージ・サービス・プロバイダO
iに、それらを格納するステップを含む。
【0013】
複数のストレージ・サービス・プロバイダに分散され、格納されているファイルの機密性を保護するための方法の第2の特徴的な実施形態によれば、i=1,・・・,nに対して、結合C
iと再度関連付けられることが可能であるように、係数の組a
i1,・・・,a
inを格納するステップは、
i=1,・・・,nおよび1≦k≦nでありiと異なるkに対して、結合C
kおよびファイル識別子ID’
kと関連して、係数の組a
i1,・・・,a
inを、ストレージ・サービス・プロバイダO
kに格納するステップと、
i=1,・・・,nに対して、係数の組a
i1,・・・,a
inと結合C
iとを再度関連付けることを可能にする置換(permutation)を、ファイル(F)と対応しており前記ローカル・メモリに格納されている前記ファイル記述子に格納するステップと、
を含む。
【0014】
複数のストレージ・サービス・プロバイダに分散され、格納されているファイルの機密性を保護するための方法の第3の特徴的な実施形態によれば、i=1,・・・,nに対して、結合C
iと再度関連付けられることが可能であるように、係数の組a
i1,・・・,a
inを格納するステップは、i=1,・・・,nに対して、係数の組a
i1,・・・,a
inを、ファイル識別子ID’
iおよびプロバイダ識別子O
iに関連して、ファイルに対応しており前記ローカル・メモリに格納されている前記ファイル記述子に格納するステップを含む。
【0015】
本発明の別の目的は、本発明による方法によって保護されているファイルを検索するための方法であって、
ファイルに対応しておりローカル・メモリに格納されているファイル記述子において、前記ファイルを指定するn個のファイル識別子ID’
1,・・・,ID’
nを読み出し、プロバイダ識別子O
1,・・・,O
nを読み出すステップと、
n個のファイル識別子ID’
1,・・・,ID’
nを、それぞれ、プロバイダ識別子O
1,・・・,O
nによって指定されるストレージ・サービス・プロバイダに送るステップと、
n個の結合C
1,・・・,C
nを、プロバイダ識別子O
1,・・・,O
nによって指定されるプロバイダから受け取るステップと、
i=1,・・・,nに対して、n個の結合C
1,・・・,C
nにそれぞれ対応する係数のn個の組a
i1,・・・,a
inを検索するステップと、
i=1,・・・,nに対して、各結合C
iを、係数の対応する組a
i1,・・・,a
inと関連付けるステップと、
i=1,・・・,nに対して係数のn個の組b
i1,・・・,b
inから構成される別の行列を得るために、i=1,・・・,nに対して係数のn個の組a
i1,・・・,a
inから構成される行列の逆行列を計算するステップと、
そして、前記ファイルFのn個のチャンクS
1,・・・,S
nを、i=1,・・・,nに対してS
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in・C
nとして計算するステップと、
そして、ファイルFを復元するために、チャンクS
1,・・・,S
nを再度組み立てるステップと、
を含む方法において、
j=1,・・・,nに対して、オーバ結合OC’と係数a’
1,・・・,a’
j,・・・,a’
nとを読み出すステップと、
i=1,・・・,nに対して係数のn個の組b
i1,・・・,b
inから構成される別の行列を得るために、i=1,・・・,n−1に対する係数のn−1個の組a
i1,・・・,a
inと、j=1,・・・,nに対する1組の係数(a’
1・a
1j+・・・+a’
i・a
ij+・・・+a’
n・a
nj)とから構成される行列の逆行列を計算するステップと、
そして、前記ファイル(F)のn個のチャンクS
1,・・・,S
nを、i=1,・・・,nに対して、S
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in−1・C
n−1+b
in・OC’として計算するステップと、
そして、ファイル(F)を復元するために、チャンクS
1,・・・,S
nを再度組み立てるステップと、
を更に含むことを特徴とする方法である。
【0016】
ファイルを検索するための方法の第1の特徴的な実施形態によれば、i=1,・・・,nに対して、n個の結合C
1,・・・,C
nにそれぞれ対応する係数のn個の組a
i1,・・・,a
inを検索するステップは、プロバイダ識別子O
1,・・・,O
nによって指定されるプロバイダからそれらを受け取るステップを含む。そして、i=1,・・・,nに対して、各結合C
iを、係数の対応する組a
i1,・・・,a
inと関連付けるステップは、結合C
iを係数の組a
i1,・・・,a
inと直接関連付けるステップを含む。
【0017】
ファイルを検索するための方法の第2の特徴的な実施形態によれば、i=1,・・・,nに対して、n個の結合C
1,・・・,C
nにそれぞれ対応する係数のn個の組a
i1,・・・,a
inを検索するステップは、プロバイダ識別子O
1,・・・,O
nによって指定されるプロバイダからそれらを受け取るステップを含み、
i=1,・・・,nに対して、各結合C
iを、係数の対応する組a
i1,・・・,a
inと関連付けるステップは、
前記ファイルに対応するファイル記述子において置換を読み出すステップと、
i=1,・・・,nに対して、各結合C
iが係数の対応する組a
i1,・・・,a
inと関連付けられるように、i=1,・・・,nに対して、置換を係数のn個の組a
i1,・・・,a
inに適用するステップと、
を含む。
【0018】
ファイルを検索するための方法の第3の特徴的な実施形態によれば、i=1,・・・,nに対して、n個の結合C
1,・・・,C
nにそれぞれ対応する係数のn個の組a
i1,・・・,a
inを検索するステップは、前記ファイルに対応するファイル記述子においてそれらを読み出すステップを含み、
i=1,・・・,nに対して、各結合C
iを、係数の対応する組a
i1,・・・,a
inと関連付けるステップは、i=1,・・・,nに対して、係数の組a
i1,・・・,a
inを、結合C
iに直接関連付けるステップを含む。
【0019】
本発明の別の目的は、複数のストレージ・サービス・プロバイダに分散され、格納されているファイルの機密性を保護するための方法であって、格納は一度だけ行われるが、検索は多くの回数または多くのエンティティによって行われるような状況に特によく適しており、
セキュリティ・パラメータnを選択するステップと、
ファイルをn個のチャンクS
1,・・・,S
nに分割するステップと、
i=1,・・・,nおよびj=1,・・・,nに対して、n
2個の係数a
ijをランダムに選択するステップと、
i=1,・・・,nに対して、ベクトルa
i1,・・・,a
inが1次独立であることを確認するステップであって、そうでない場合には、係数を再度生成するステップと、
i=1,・・・,nに対して、n個の1次結合C
i=a
i1・S
1+・・・+a
ij・S
j+・・・+a
in・S
nを計算するステップと、
前記複数のストレージ・サービス・プロバイダの間で、n個のストレージ・サービス・プロバイダO
1,・・・,O
nを選択するステップと、
前記ファイルを指定するn個のファイル識別子ID’
1,・・・,ID’
nを生成するステップと、
i=1,・・・,nに対して、ファイル識別子ID’
iと関連して、ストレージ・サービス・プロバイダO
iに、結合C
iを格納するステップと、
i=1,・・・,nに対して、ファイル識別子ID’
iとプロバイダ識別子O
iとを、ファイルに対応しておりローカル・メモリに格納されているファイル記述子に格納するステップと、
i=1,・・・,nに対して係数のn個の組b
i1,・・・,b
inから構成される別の行列を得るために、i=1,・・・,nに対して係数のn個の組a
i1,・・・,a
inから構成される行列の逆行列を計算するステップと、
i=1,・・・,nに対して、結合C
iと再度関連付けられることが可能であるように、係数b
i1,・・・,b
inの組を格納するステップと、
を含む方法である。
【0020】
本発明の別の目的は、この直前の方法によって保護されているファイルを検索するための方法である。この方法は、
ファイル(F)に対応しておりローカル・メモリに格納されているファイル記述子において、前記ファイルを指定するn個のファイル識別子ID’
1,・・・,ID’
nを読み出し、プロバイダ識別子O
1,・・・,O
nを読み出すステップと、
n個のファイル識別子ID’
1,・・・,ID’
nを、それぞれ、プロバイダ識別子O
1,・・・,O
nによって指定されるストレージ・サービス・プロバイダに送るステップと、
n個の結合C
1,・・・,C
nを、プロバイダ識別子O
1,・・・,O
nによって指定されるこれらのプロバイダから受け取るステップと、
i=1,・・・,nに対して、n個の結合C
1,・・・,C
nにそれぞれ対応する係数のn個の組b
i1,・・・,b
inを検索するステップと、
i=1,・・・,nに対して、各結合C
iを、係数の対応する組b
i1,・・・,b
inと関連付けるステップと、
i=1,・・・,nに対して、前記ファイルのチャンクS
1,・・・,S
nを、S
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in・C
nとして計算するステップと、
そして、ファイルFを復元するために、チャンクS
1,・・・,S
nを再度組み立てるステップと、
を含む。
【0021】
本発明の他の特徴および効果は、添付の図面と共に考察されることによって、本発明の実施形態に関する以下の詳細な説明から、より明らかになるであろう。
【0022】
本発明の実施形態の特徴および効果を詳細に例証するために、以下の説明は、添付の図面を参照してなされる。可能な場合には、同様または類似の参照番号は、次の複数の図面および説明を通じて、同じまたは類似の構成要素を示す。
【発明を実施するための形態】
【0024】
図1は、本発明によるファイルを保護するための方法の3つの実施形態に共通するステップの図を示している。例えば、本発明者らは、ストレージに制約があるデバイス(例えば、携帯電話やタブレット)を有していて、大きなファイルの格納をアウトソースすることを希望しているユーザを考察する。このユーザは、彼/彼女が既にそこにアカウントを有していて、関連の契約を有していることにより用いることができるm個の利用可能なストレージ・サービス・プロバイダを知っていると、本発明者らは仮定する。
【0025】
提案される方法は、デバイスに以下の手段が備わっていることを要求する。
1)一意的な識別子IDを、ストレージ・サービス・プロバイダに分散され格納される各ファイルFに関連付ける手段。このプロセスは、潜在的に複雑なものとなり得るが、ファイルの経路、またはタグ、またはファイル・システム・アーキテクチャと互換性を有する任意の他の既知の方法を用いることができる。
2)ユーザがセキュリティ・パラメータnを選択することを可能にする入力手段。このパラメータは、各ファイルに対して異なり得る。nの値が大きければ、より多くの計算が伴うことになるが、より多くのセキュリティも伴う。そのため、nの値は、制限、機密、秘密、・・・など、望まれる機密性のレベルに従って、選択することができる。
3)提案されている方法を遂行するコンピュータ実行可能な命令を含むプログラムを実行する計算手段。
【0026】
ステップ1:ユーザが、利用可能なストレージ・サービス・プロバイダの個数mよりも小さいか、またはmと等しくなるように、セキュリティ・パラメータnを選択する。
【0027】
ステップ2:計算手段が、ファイルFを、n個のチャンクS
1,・・・,S
nに分割する。チャンクは、同じビット数を有していなければならない。チャンク当たりのビット数は、サイズ(F)/nよりも大きな最小の整数であり、演算がなされる体(field)(係数が選択されるのと同じ体である)のサイズpの倍数である。このプロセスは、同じサイズのn個のチャンクを有するために、ファイルのパディングを生じさせる。このタスクを実行するために、任意の標準的なパディング・アルゴリズムを、用いることができる。
【0028】
ステップ3:計算手段が、i=1,・・・,nおよびj=1,・・・,nに対して、n
2個の係数a
ijをランダムに選択する。次に、i=1,・・・,nに対して、選択されたベクトル(a
i1,・・・,a
in)が1次独立であることを確認し、1次独立でない場合には、計算手段は、係数を再度生成する(ベクトルの組は、その要素の1次結合としてのゼロ・ベクトルの表現だけが自明な解である場合に、およびその場合に限り、1次独立である)。
【0029】
ステップ4:計算手段が、n個の1次結合を、i=1,・・・,nに対して、C
i=a
i1・S
1+・・・+a
ij・S
j+・・・+a
in・S
nとして計算する。
【0030】
ステップ5:計算手段が、それらの結合が格納されるn個のストレージ・サービス・プロバイダを選択する(nは、mよりも小さいか、またはmに等しい)。計算手段は、m個の利用可能なストレージ・サービス・プロバイダの間で、格納され保護されるファイルの識別子IDの関数として、それらを選択する。計算手段は、選択されたストレージ・サービス・プロバイダを指定するそれぞれの識別子O
1,・・・,O
nを供給する。この選択を実行するためには、多くの可能性が存在する。ランダムな選択が最も簡単であるが、よりよい選択方針を有するためには、選択規準として、パフォーマンス(負荷の均衡)、コスト(各プロバイダでの料金設定)、またはセキュリティ(プロバイダの評判)を考慮に入れることも可能であろう。選択方針に応じて、1つの特定のプロバイダをローカルなホスト自体とすることが可能であろうし、ある与えられたプロバイダを、複数回選択することも可能であろう(ただし、それによって、セキュリティが低下することがあり得る)。
【0031】
次の複数のステップは、
図2、3、4によってそれぞれ示されているステップ6a、ステップ6b、ステップ6cと称される3つのバリアントに従って、行うことが可能である。
【0032】
図2は、ステップ6aを示す。すなわち、
計算手段は、やはりファイルFを指定しているがローカルなファイル識別子IDとは異なる新たな一意的なファイル識別子ID’を、ローカルな識別子IDの関数として、生成する。この関数は、ID’が与えられた場合に、IDを回復することを許容してはならないが、その理由は、この関数が、本質的に、例えばハッシュ関数のような一方向関数であるからである。この新たなファイル識別子ID’は、すべてのストレージ・サービス・プロバイダに公開される。
計算手段は、i=1,・・・,nとして、プロバイダO
iに、
結合C
iと、
係数の組a
i1,・・・,a
inと、
ファイル識別子ID’と、
を送る。
プロバイダO
iは、結合C
iと係数の組a
i1,・・・,a
inとを、ファイル識別子ID’と関連させて格納する。
計算手段は、ローカル・メモリLMに、ファイルFに対する非常に簡略なファイル記述子をローカルに格納する。このファイル記述子は、ファイルFを指定する識別子ID’と、選択されたストレージ・サービス・プロバイダを指定するプロバイダ識別子O
1,・・・,O
nとを含む。
【0033】
このバリアントaの改善策によれば、同じファイルFに対して、一意的なファイル識別子ID’を、異なる複数のファイル識別子ID’
1,・・・,ID’
nによって置き換えることも可能である。これらのファイル識別子ID’
1,・・・,ID’
nは、それぞれが、n個の選択されたプロバイダそれぞれにおいて、ローカル・メモリLMのファイルFに対応するファイル記述子に格納される。この改善策により、プロバイダが共謀する場合に、結合をリンクすることがより困難になる。
【0034】
図3は、ステップ6bを示す。すなわち、
計算手段は、例えばハッシュ関数のような一方向関数によるローカルな識別子IDの関数として、しかしローカルなファイル識別子IDとは異なっており、やはりファイルFを指定する新たなファイル識別子ID’を生成する。この新たなファイル識別子ID’は、すべてのストレージ・サービス・プロバイダに公開される。
計算手段は、i=1,・・・,nとして、プロバイダO
iに、
ファイルFを指定する新たなファイル識別子ID’と、
結合C
iと、
1≦k≦nであり、iとは異なるkに対して、別の結合C
kに対応する係数の組a
k1,・・・,a
knと、
を送る。
係数の組a
k1,・・・,a
knは、i=1,・・・,nとして、ベクトル(a
i1,・・・,a
in)に適用された置換σによって決定される。すなわち、次の通りである。
(a
k1,・・・,a
kn)=(a
σ(n)1,・・・,a
σ(n)i,・・・,a
σ(n)n)=結合C
σ(i)に対応する係数
【0035】
他方で、i=1,・・・,nとすると、結合C
σ(i)は、プロバイダO
σ(i)において、係数の組a
i1,・・・,a
inと関連して、格納される。計算手段は、1からnまでの整数に対する置換σを定義する。基本的には、この置換は、1からnまでのすべての整数を順序通りではない態様で含むアレイ(σ(1),・・・,σ(i),・・・,σ(n))として、表現され得る。
計算手段は、i=1,・・・,nとして、プロバイダO
iに、
ファイルFを指定する新たなファイル識別子ID’と、
結合C
iと、
係数の組a
k1,・・・,a
knと、
を、関連させて、格納する。
計算手段は、ローカル・メモリLMに、ファイルFに対する非常に簡略なファイル記述子をローカルに格納する。このファイル記述子は、
ファイルFを指定する識別子ID’と、
選択されたストレージ・サービス・プロバイダの識別子O
1,・・・,O
nと、
(例えば、先に説明したアレイの形式での)置換σと、
を含む。
【0036】
このバリアントaの改善策によれば、同じファイルFに対して、一意的なファイル識別子ID’を、異なる複数のファイル識別子ID’
1,・・・,ID’
nによって置き換えることも可能である。これらのファイル識別子ID’
1,・・・,ID’
nは、n個の選択されたプロバイダそれぞれにおいて、ローカル・メモリLMのファイルFに対応するファイル記述子に、それぞれ格納される。この改善策により、プロバイダが共謀する場合に、結合をリンクすることがより困難になる。
【0037】
図4は、ステップ6cを示す。すなわち、
計算手段は、同じファイルFに対し、例えばハッシュ関数のような一方向関数によるローカルな識別子IDの関数として、異なる複数のファイル識別子ID’
1,・・・,ID’
nを生成する。計算手段は、i=1,・・・,nとして、プロバイダO
iに、ファイル識別子ID’
iと結合C
iとを送るが、係数の組については、まったく送らない。
このバリアントcによれば、計算手段は、ローカル・メモリLMに、より大きなファイル記述子をローカルに格納する。i=1,・・・,nに対し、このファイル記述子は、トリプレットを含むのであるが、各トリプレットは、i=1,・・・,nに対して、
ファイルFを指定する識別子ID’
iと、
サービス・プロバイダ識別子O
iと、
結合C
iを構築するのに用いられた係数の組a
i1,・・・,a
inと、
を含む。
【0038】
図5、6、7は、本発明によって保護されているファイルを検索するための方法の3つの実施形態を、それぞれ示す。検索は、ファイルを保護するための上述したステップ6のバリアント6a、6b、6cに対応する3つのバリアントa、b、cに従って、行われ得る。
【0039】
図5は、バリアントaを示す。すなわち:
ファイルFを復元するために、デバイスの計算手段は、ある結合とこの結合に対応する係数の組とを、n個の選択されたストレージ・サービス・プロバイダのそれぞれに(任意の順序で)リクエストする。
【0040】
ステップ51:計算手段が、ローカル・メモリLMにおいて、ファイルFに対応するファイル記述子に登録されているファイル識別子ID’とプロバイダ識別子O
1,・・・,O
nとを読み出す。計算手段は、識別子ID’を、i=1,・・・,nに対するストレージ・サービス・プロバイダO
iに送る。
【0041】
ステップ52:次に、計算手段は、i=1,・・・,nに対するプロバイダO
iから、
結合C
iと、
係数の対応する組a
i1,・・・,a
inと、
を受け取る。
結合C
iは、ファイルFを検索するプロセスのために、係数の組a
i1,・・・,a
inと直接関連付けられている。
【0042】
ステップ53:次に、計算手段は、行列A=(a
ij)の逆行列を計算し、行列B=(b
ij)を得る。次に、計算手段は、元のチャンクを、i=1,・・・,nに対して、S
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in・C
nとして、計算する。
【0043】
ステップ54:次に、計算手段は、チャンクS
1,・・・,S
nを再組み立てし、ファイルFを復元するために、可能な限りパディングを除去する。
【0044】
同じファイルFに対して異なる識別子ID’
1,・・・,ID’
nが各プロバイダにそれぞれ格納されている場合には、検索方法が修正されることに注意すべきである。その理由は、検索方法が、ローカル・メモリLMに格納されているファイル記述子において異なる識別子ID’
1,・・・,ID’
nを読み出し、一意的な識別子ID’を送る代わりに、識別子ID’
1,・・・,ID’
nをn個の選択されたプロバイダにそれぞれ送ることから構成される修正されたステップ51を含むからである。
【0045】
図6は、バリアントbを示す。すなわち:
ファイルFを復元するために、デバイスの計算手段は、ある結合と係数の組とを、n個の選択されたストレージ・サービス・プロバイダのそれぞれに(任意の順序で)リクエストする。しかし、計算手段は、各結合を、この結合を計算するために用いられた係数の対応する組と再度関連付けなければならないのであり、その理由は、この結合と係数のこの組とは、同じストレージ・サービス・プロバイダに格納されたのではなかったからである。(O
iによって格納されている係数の組に対応する)結合C
σ(i)がプロバイダO
σ(i)に格納されているため、置換σが再度用いられなければならない。
【0046】
ステップ61:
計算手段が、ローカル・メモリLMにおいて、ファイルFに対応するファイル記述子に登録されているファイル識別子ID’と、プロバイダ識別子O
1,・・・,O
nと、置換σと、を読み出す。
計算手段は、識別子ID’を、プロバイダ識別子O
1,・・・,O
nによって指定されているn個のストレージ・サービス・プロバイダに送る。
計算手段は、i=1,・・・,nに対するプロバイダO
iから、
結合C
iと、
係数の組a
σ(i)1,・・・,a
σ(i)nと、を受け取る。
【0047】
ステップ62:次に、計算手段は、i=1,・・・,nに対し、結合C
iと係数の対応する組a
i1,・・・,a
inとを、置換手段σによって、再度関連付ける。
【0048】
ステップ63:次に、計算手段は、行列A=(a
ij)の逆行列を計算し、行列B=(b
ij)を得る。そして、計算手段は、元のチャンクを、i=1,・・・,nに対して、S
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in・C
nとして、計算する。
【0049】
ステップ64:次に、計算手段は、n個のチャンクS
1,・・・,S
nを組み立て、可能な限りパディングを除去することによって、ファイルFを復元する。
【0050】
図7は、バリアントcを示す。すなわち:
ファイルFを復元するために、デバイスの計算手段は、ある結合とこの結合に対応する係数の組とを、n個の選択されたストレージ・サービス・プロバイダのそれぞれに(任意の順序で)リクエストする。
【0051】
ステップ71:計算手段が、ローカル・メモリLMにおいて、ファイルFに対応するファイル記述子に登録されているファイル識別子ID’
1,・・・,ID’
nと、プロバイダ識別子O
1,・・・,O
nとを読み出す。
計算手段は、ファイル識別子ID’
iを、i=1,・・・,nに対するプロバイダO
iに送る(n個の識別子ID’
1,・・・,ID’
nは、相互に異なる)。
それに応答して、計算手段は、i=1,・・・,nに対するプロバイダO
iから、結合C
iを受け取る。
【0052】
ステップ72:計算手段は、ローカル・メモリLMにおいて、係数の組a
i1,・・・,a
inを読み出す。結合C
iは、i=1,・・・,nに対して、係数の組a
i1,・・・,a
inと直接に関連している。
【0053】
ステップ73:次に、計算手段は、行列A=(a
ij)の逆行列を計算し、行列B=(b
ij)を得る。次に、計算手段は、n個の元のチャンクを、i=1,・・・,nに対して、S
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in・C
nとして、計算する。
【0054】
ステップ74:次に、計算手段は、n個のチャンクS
1,・・・,S
nを組み立て、可能な限りパディングを除去することによって、ファイルFを復元する。
【0055】
セキュリティ:
すべてのバリアントにおいて、方式の基本的なセキュリティは、結合C
1,・・・,C
nがすべてなければ、どのチャンクS
1を復元することも不可能である、という事実に存する。従って、オペレータたちがファイルFの機密性を破る唯一の可能性は、全員で共謀することである。
【0056】
バリアントa、bおよびcは、n人のオペレータ全員が共謀している場合、異なるレベルのセキュリティを提供する。すなわち、
バリアントa:彼ら全員が共謀する場合には、彼らはすべての結合と係数のすべての組とを得ることになり、従って、彼らはファイルF全体を検索することができる。
【0057】
バリアントb:彼ら全員が共謀する場合には、彼らは結合と係数とをすべて得るが、ただし、結合と係数との間の対応を知ることはない。Fを検索するためには、彼らは、n!通りの対応可能性をすべて試みなければならない。nが十分に大きな場合、処理コストが、現実問題としては法外な額になる。
【0058】
バリアントc:彼ら全員が共謀する場合には、彼らは結合を得るが、係数の組を知らないため、係数のすべての可能性がある組を試みない限り、ファイルFを検索することはできない。そして、係数のすべての可能性がある組を試みることは、計算論的に実行不可能であることが判明している(各係数がサイズpである体に属する場合には、p
n個の可能性が存在するため、pおよびnを注意深く選択することにより、容易に、このp
nの値が処理能力を超えるようにすることができる)。このバリアントcは、最高レベルのセキュリティを与えるのであるが、デバイスが係数をローカルに格納することを要求する。他方で、バリアントaおよびbでは、デバイスは、追加的な情報をいっさい格納する必要がない。
【0059】
弾力性(オプションである改善策):
この方法の唯一の弱点は、1人のオペレータO
iが結合C
iを失う(または破損する)と、ファイルFを検索することが不可能になることである。
【0060】
この短所を回避するための第1の改善策は、n個ではなくn+k個の結合を生成し、それらをn+k人のオペレータのところに格納することから構成される。すると、n+k個の結合の中から任意のn個の結合を検索することが可能であり、ファイルFを復元するのに十分である。これは、k個までのストレージ・サービス・プロバイダであれば、それらの故障からの回復が可能であることを意味する。
n+k人のオペレータの場所で格納するときには、セキュリティは、同じままである。すなわち、この方式を破るには、少なくともn人のオペレータが共謀しなければならない。この解決策は、バリアントaおよびcにうまく適用される。
【0061】
バリアントcに対する異なる改善策は、この短所を回避するために、少なくとも1つの(本発明者らが、オーバ結合と称する)追加的な結合を実行中に生成することで構成されるのであるが、これは、元のファイルFの復元を要求しなくとも、実行可能である。オーバ結合OC’とは、i=1,・・・,nに対して、結合C
iの1次結合である。この改善策は、
i=1,・・・,nに対して、(本発明者らがスーパ係数と称する)n個の係数の組a’
jをランダムに選択するステップと、
1次オーバ結合OC’=a’
i・C
1+・・・+a’
j・C
j+・・・+a’
n・C
nを計算するステップと、
このオーバ結合OC’とn個のスーパ係数a’
jとを格納するステップと、
を含む。
【0062】
n個のスーパ係数a’
jとオーバ結合OC’とは、計算手段とメモリとを備えた任意のエンティティによって、生成され格納され得る。本発明者らは、それを、「オーケストレータ」と称するが、その理由は、それが、弾力性を保証するために、結合およびオーバ結合の検索を管理するからである。オーケストレータは、ネットワークにおいて任意の場所に配置され得る。すなわち、
それは、異なるクラウド・サービス・プロバイダに存在し得る、または、i=1,・・・,nに対して、結合C
iを格納するのに用いられるn個のストレージ・サービス・プロバイダの中の1つとできるだけ同じ場所に配置され得る。
それは、ユーザ・デバイスに存在し得る。
それは、また、ユーザ・デバイスとストレージ・オペレータとの間、例えば、セットトップ・ボックスに存在し得る。
【0063】
機能的には、オーケストレータとは、ソースによって必ずしも信頼されることなく、データの利用可能性を管理する責任を有する仲介役(intermediary)である。この解決策は、よって、バリアントcに非常によく適合し、オーケストレータには、i=1,・・・,nに対して、係数a
i1,・・・,a
inを伴わないn個の結合C
1,・・・,C
j,・・・,C
nが与えられる。
【0064】
元のファイルFを検索することは、上述した方法と類似の方法によって実行されるのであるが、その理由は、1次オーバ結合OC’=a’
1・C
1+・・・+a’
j・C
j+・・・+a’
n・C
nは、また、i=1,・・・,nに対するセグメントSiの1次結合でもあるからである。実際、i=1,・・・,nに対して、C
i=a
i1・S
1+・・・+a
ij・S
j+・・・+a
in・S
nである。セグメントS
iに関する対応する係数は、このように、C
iに関するオーバ結合OC’の係数a’
iとセグメントS
iに関する結合C
iの係数a
ijとを乗算することによって、得られる。
【0065】
本発明者らは、セグメントS
iに関するオーバ結合OC’を次のように、表現することができる。すなわち、i=1,・・・,nとして、C’=(a’
1・a
11+・・・+a’
i・a
i1+・・・+a’
n・a
n1)・S
1+・・・+(a’
1・a
1j+・・・+a’
i・a
ij+・・・+a’
n・a
nj)・S
j+・・・+(a’
1・a
1n+・・・+a’
i・a
in+・・・+a’
n・a
nn)・S
nである。
よって、検索は、ある行列の逆行列を計算することによって、行い得る。
【0066】
例えば、クラウドにおけるデータの弾力性を管理するオーケストレータは、結合C
1,・・・,C
j,・・・,C
nを格納するためのメモリと、
n個のスーパ係数a’
1,・・・,a’
nを生成し、
スーパ結合OC’=a’
1・C
1+・・・+a’
j・C
j+・・・+a’
n・C
nを計算するための計算手段とを備えている。
(オプションであるが、それは、複数のスーパ結合を計算するためのスーパ係数の複数の組を生成することができる。すなわち、ある1つのオーバ結合が、ただ1つのストレージ・サービス・プロバイダの損失を回避することを可能にし、他方で、k個のオーバ結合が、k個のストレージ・サービス・プロバイダの損失を回避することを可能にする。)オーバ結合OC’は、次に、異なるストレージ・プロバイダに格納される。オーケストレータは、ストレージ・プロバイダに格納されている結合の利用可能性をモニタする。オーケストレータは、欠陥のあるストレージ・オペレータを検出すると常に、追加的なオーバ結合を生成して、それを別のストレージ・プロバイダに格納する。
【0067】
元のファイルFを検索するために、ユーザ・デバイスは、オーケストレータからの(識別子ID’によって指定される)ファイルFの検索をリクエストする。
オーケストレータは、n個の結合を、n人のストレージ・オペレータにそれぞれリクエストする。
n人のストレージ・オペレータが正常に働いている場合には、オーケストレータは、n個の結合C
1,・・・,C
j,・・・,C
nを受け取る。オーケストレータは、それらを、ユーザ・デバイスに転送する。この後者は、上で説明されているように、ファイルFを復元することができる。
n人のストレージ・オペレータの中の1人がもはや働いていない場合には、オーケストレータは、n−1個の結合C
1,・・・,C
j,・・・,C
n−1を受け取るのであるが、その理由は、結合C
nを格納したストレージ・プロバイダが機能していないからである。次に、オーケストレータは、それらを、(対応するストレージ・プロバイダからフェッチされた)オーバ結合OC’およびスーパ係数a’
1,・・・,a’
nと共に、ユーザ・デバイスに転送する。
【0068】
ユーザ・デバイスの計算手段は、すべてのセグメントS
1,・・・,S
nを検索するのであるが、この検索は、次のことによって、行われる。
チャンクC
iに対し、j=1,・・・,nとして、直接に(a
ij)であるか、または、オーバ結合OC’に対して、j=1,・・・,nとして、(a’
1・a
1j+・・・+a’
i・a
ij+・・・+a’
n・a
nj)である検索されたフラグメントの係数によって構成される行列の逆行列を計算すること。なお、この逆行列の計算により、計算手段は、i=1,・・・,nとして、係数のn個の組b
i1,・・・,b
inから構成される別の行列を得る。
次に、前記ファイルFのn個のチャンクS
1,・・・,S
nを、S
i=b
i1・C
1+・・・+b
ij・C
j+・・・+b
in・OC’として計算すること。
次に、チャンクS
1,・・・,S
nを再度組み立て、パディングを除去して、ファイルFを復元すること。
【0069】
1つのオーバ結合を用いて先に示された計算は、直截な方法で、複数のオーバ結合の場合に一般化することが可能である。M個のスーパ結合は、M人までのストレージ・オペレータが失敗をした場合を修復することを可能にする。k人のストレージ・オペレータが失敗した場合には(ただし、k<M)、n−k個のチャンク(および係数のn−k個の組)と(その関連する係数を用いた)k個のオーバ結合とが、逆行列の計算に用いられる。i=1,・・・,nとして、オーバ結合は、公式C’=(a’
1・a
11+・・・+a’
i・a
i1+・・・+a’
n・a
n1)・S
1+・・・+(a’
1・a
1j+・・・+a’
i・a
ij+・・・+a’
n・a
nj)・S
j+・・・+(a’
1・a
1n+・・・+a’
i・a
in+・・・+a’
n・a
nn)・S
nによって、元の結合として表すことができるので、失われた結合の代わりにオーバ結合を用いることに何も困難はなく、両者は、同じ方法で処理される。
【0070】
バリアントbは、逆に、n個のチャンクに対して、n個の結合とn
2個の係数とを用いて、厳密に設計されている。結合の損失に対する弾力性は、別の方法によって、冗長性や誤り符号化を通じて提供されるのであるが、提案されている方法の内在的な特徴として提供されるのではない。
【0071】
パフォーマンス・トレードオフ(オプションである改善):
提案されている方法の重要な態様は、その効率と、その方法がセキュリティとパフォーマンスとを調停するという事実とである。この態様を更に強調するために、本発明者らは、データを格納するユーザ(本発明者らは、簡潔にする目的で、そのようなユーザを、ソースと称する)とデータを検索するユーザ(彼らは必ずしもデータを格納する者とは同じではないので、本発明者らは、そのようなユーザを、フェッチャと称する)との間での計算に関する追加的なトレードオフを提供することができる。上述した実施形態では、ソースは結合を実行し、フェッチャは逆行列の計算を意味する復元を実行するので、労力は、ソースとフェッチャとの間で二分化されている。しかし、ソースが結合を計算し、更に逆行列を事前に計算して、直接の係数a
ijの代わりに、逆行列の係数b
ijを、ストレージ・サービス・プロバイダまたはローカル・メモリLMのいずれかに直接格納することを、本発明者らは、提案することも可能である。こうすると、フェッチャが、逆行列を直接に検索して、ファイルFを復元するために、単純な行列の乗算を実行することが可能になる。このような動作モードは、ソースに対する計算上の負担を増加させるが、フェッチャに対しては計算上の負担を劇的に軽減するため、格納は一度だけ行われるのであるが検索は多くの回数または多くのエンティティによって行われるような状況に、特に適している。この動作モードは、3つのアプローチ(a)、(b)および(c)のすべてと互換性を有する。
【0072】
図8は、本発明に従ってファイルを保護するための方法の3つの実施形態に共通である第1のステップを示しており、これらの実施形態は、格納は一度行われるのであるが、検索は多くの回数または多くのエンティティによって行われるような状況に、特によく適している。第1のステップは、逆行列を事前に計算し、直接の係数a
ijの代わりに逆行列の係数b
ijを直接に格納するために、修正されている。n
2個の係数a
11,・・・,a
ij,・・・,a
nnを提供するステップ3と、これらの係数をプロバイダまたはローカル・メモリLMのいずれかに格納するステップ6a、6bまたは6cとの間に、ステップ4’が導入されている。
ファイルFの検索に関しては、復元ステップ53、63、73が、行列A=(a
ij)の逆行列の計算を抑制するように修正されているが、その理由は、計算手段が、プロバイダまたはローカル・メモリLMのいずれかから、行列B=(b
ij)を直接に受け取るからである。
【0073】
最後の注意は、(ファイル記述子は異なるサイズを有しており異なる情報を含んでいるにもかかわらず)3つのバリアントすべてにおいて、デバイスが格納しなければならないファイル記述子を格納するローカル・メモリに関係するものである。これらの記述子を格納する複数の可能性が存在し、それらの可能性は、異なるセキュリティ・レベルに遭遇する。記述子は、実際には、
スマート・カードなど改竄防止機能を有するハードウェアに、
それへの更なるアクセスを物理的に防止するために、記述子が格納された後で取り除かれ得るローカルな取り外し可能なストレージ・デバイス(例えば、USB鍵、ポータブル・ハードドライブなど)に、
インターネット・サービス・プロバイダによって管理される安全なストレージ・スペース(例えば、セットトップ・ボックス)に、
単純なローカル・ストレージ・デバイス(例えば、ラップトップのハードドライブ)に、
例えばクラウドなど、更に別のストレージ・サービス・プロバイダに、
格納され得る。
【0074】
最初の2つのオプションは、バリアントcと組み合わせると、秘密性が非常に高い文書に対して特に適切である。他方で、最後のオプションは、バリアントaと組み合わせて、それほど高度には機密扱いではないデータであり、この最後のプロバイダが以前のプロバイダと共謀していないことがある程度保証されている場合を除いては、用いられるべきではない。