IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特表2024-507647ロックされたフィンガープリントを使用する複数鍵の安全な重複排除
<>
  • 特表-ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 図1
  • 特表-ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 図2
  • 特表-ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 図3
  • 特表-ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 図4
  • 特表-ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 図5
  • 特表-ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-21
(54)【発明の名称】ロックされたフィンガープリントを使用する複数鍵の安全な重複排除
(51)【国際特許分類】
   H04L 9/08 20060101AFI20240214BHJP
   H04L 9/14 20060101ALI20240214BHJP
   G06F 21/60 20130101ALI20240214BHJP
   G06F 21/64 20130101ALI20240214BHJP
【FI】
H04L9/08 A
H04L9/14
G06F21/60 320
G06F21/64
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023541567
(86)(22)【出願日】2022-02-25
(85)【翻訳文提出日】2023-07-07
(86)【国際出願番号】 EP2022054845
(87)【国際公開番号】W WO2022184591
(87)【国際公開日】2022-09-09
(31)【優先権主張番号】17/191,430
(32)【優先日】2021-03-03
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【弁理士】
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000420
【氏名又は名称】弁理士法人MIP
(72)【発明者】
【氏名】ヘツラー、スティーブン ロバート
(72)【発明者】
【氏名】ベスト、ジョン スチュワート
(72)【発明者】
【氏名】ハイネマン、ウェイン
(57)【要約】
コンピュータ実装方法は、データ・チャンクのフィンガープリントを計算することと、フィンガープリント鍵を用いてフィンガープリントを暗号化することと、ベース鍵および暗号化されたフィンガープリントを用いてデータ・チャンクを暗号化することとを含む。この方法は、ユーザ鍵を用いて、暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントをストレージ・システムに送信することとも含む。ストレージ・システムは、ベース鍵、フィンガープリント鍵、およびユーザ鍵に対するアクセス権限を持たない。コンピュータ実装方法は、データ・チャンクのフィンガープリントを計算することと、ベース鍵およびフィンガープリントを用いてデータ・チャンクを暗号化することとを含む。この方法は、ユーザ鍵を用いてフィンガープリントを暗号化することと、暗号化されたデータ・チャンクおよび暗号化されたフィンガープリントをストレージ・システムに送信することとも含む。ストレージ・システムは、ベース鍵およびユーザ鍵に対するアクセス権限を持たない。
【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備えるコンピュータ・プログラム製品であって、前記プログラム命令が、
データ・チャンクのフィンガープリントを計算するためのプログラム命令と、
フィンガープリント鍵(310)を用いて前記フィンガープリントを暗号化するためのプログラム命令と、
ベース鍵(308)および前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化するためのプログラム命令と、
ユーザ鍵(314)を用いて、前記暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成するためのプログラム命令と、
前記暗号化されたデータ・チャンクおよび前記二重に暗号化されたフィンガープリントをストレージ・システムに送信するためのプログラム命令と
を含み、前記ストレージ・システムが前記ベース鍵(308)、前記フィンガープリント鍵(310)、および前記ユーザ鍵(314)に対するアクセス権限を持たない、コンピュータ・プログラム製品。
【請求項2】
前記フィンガープリントを計算すること、および前記フィンガープリントを暗号化することが、鍵付きハッシュ・メッセージ認証コードを用いて実行される、請求項1に記載のコンピュータ・プログラム製品。
【請求項3】
前記ベース鍵(308)および前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することが、前記暗号化されたフィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項4】
前記ユーザ鍵(314)を用いて前記暗号化されたフィンガープリントを暗号化し、前記二重に暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項5】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項1に記載のコンピュータ・プログラム製品。
【請求項6】
1つまたは複数のコンピュータ可読ストレージ媒体と、前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備えるコンピュータ・プログラム製品であって、前記プログラム命令が、
データ・チャンクのフィンガープリントを計算するためのプログラム命令と、
ベース鍵(308)および前記フィンガープリントを用いて前記データ・チャンクを暗号化するためのプログラム命令と、
ユーザ鍵(314)を用いて前記フィンガープリントを暗号化するためのプログラム命令と、
前記暗号化されたデータ・チャンクおよび前記暗号化されたフィンガープリントをストレージ・システムに送信するためのプログラム命令と
を含み、前記ストレージ・システムが前記ベース鍵(308)および前記ユーザ鍵(314)に対するアクセス権限を持たない、コンピュータ・プログラム製品。
【請求項7】
前記ベース鍵(308)および前記フィンガープリントを用いて前記データ・チャンクを暗号化することが、前記フィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項8】
前記ユーザ鍵(314)を用いて前記フィンガープリントを暗号化し、暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項6に記載のコンピュータ・プログラム製品。
【請求項9】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項6に記載のコンピュータ・プログラム製品。
【請求項10】
前記ベース鍵(308)を用いて前記データ・チャンクを暗号化し、前記フィンガープリントがXTSモードのAES暗号化を使用する、請求項6に記載のコンピュータ・プログラム製品。
【請求項11】
データ・チャンクのフィンガープリントを計算することと、
フィンガープリント鍵(310)を用いて前記フィンガープリントを暗号化することと、
ベース鍵(308)および前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザ鍵(314)を用いて、前記暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、
前記暗号化されたデータ・チャンクおよび前記二重に暗号化されたフィンガープリントをストレージ・システムに送信することと
を含むコンピュータ実装方法であって、前記ストレージ・システムが前記ベース鍵(308)、前記フィンガープリント鍵(310)、および前記ユーザ鍵(314)に対するアクセス権限を持たない、コンピュータ実装方法。
【請求項12】
前記フィンガープリントを計算すること、および前記フィンガープリントを暗号化することが、鍵付きハッシュ・メッセージ認証コードを使用して実行される、請求項11に記載の方法。
【請求項13】
前記ベース鍵(308)および前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することが、前記暗号化されたフィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項11に記載の方法。
【請求項14】
前記ユーザ鍵(314)を用いて前記暗号化されたフィンガープリントを暗号化し、前記二重に暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項11に記載の方法。
【請求項15】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項11に記載の方法。
【請求項16】
データ・チャンクのフィンガープリントを計算することと、
ベース鍵(308)および前記フィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザ鍵(314)を用いて前記フィンガープリントを暗号化することと、
前記暗号化されたデータ・チャンクおよび前記暗号化されたフィンガープリントをストレージ・システムに送信することと
を含むコンピュータ実装方法であって、前記ストレージ・システムが前記ベース鍵(308)および前記ユーザ鍵(314)に対するアクセス権限を持たない、コンピュータ実装方法。
【請求項17】
前記ベース鍵(308)および前記フィンガープリントを用いて前記データ・チャンクを暗号化することが、前記フィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項16に記載の方法。
【請求項18】
前記ユーザ鍵(314)を用いて前記フィンガープリントを暗号化し、暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項16に記載の方法。
【請求項19】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項16に記載の方法。
【請求項20】
前記ベース鍵(308)を用いて前記データ・チャンクを暗号化し、前記フィンガープリントがXTSモードのAES暗号化を使用する、請求項16に記載の方法。
【請求項21】
プロセッサと、
前記プロセッサと統合されたか、前記プロセッサによって実行可能であるか、または前記プロセッサと統合され、前記プロセッサによって実行可能である論理と
を備えているシステムであって、前記論理が、
データ・チャンクのフィンガープリントを計算することと、
フィンガープリント鍵(310)を用いて前記フィンガープリントを暗号化することと、
ベース鍵(308)および前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザ鍵(314)を用いて、前記暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、
前記暗号化されたデータ・チャンクおよび前記二重に暗号化されたフィンガープリントをストレージ・システムに送信することと
を実行するように構成され、前記ストレージ・システムが前記ベース鍵(308)、前記フィンガープリント鍵(310)、および前記ユーザ鍵(314)に対するアクセス権限を持たない、システム。
【請求項22】
前記フィンガープリントを計算すること、および前記フィンガープリントを暗号化することが、鍵付きハッシュ・メッセージ認証コードを使用して実行される、請求項21に記載のシステム。
【請求項23】
前記ベース鍵(308)および前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することが、前記暗号化されたフィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項21に記載のシステム。
【請求項24】
前記ユーザ鍵(314)を用いて前記暗号化されたフィンガープリントを暗号化し、前記二重に暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項21に記載のシステム。
【請求項25】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項21に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は安全な重複排除に関連しており、より詳細には、本発明は、クラウド・ストレージ・システムおよびネットワークにおける、ロックされたフィンガープリントを使用する複数鍵の安全な重複排除に関連している。
【背景技術】
【0002】
重複排除もしくは圧縮またはその両方などの従来のデータ削減技術は、暗号化データに適用された場合、意味のある削減を提供しない。重複するデータ・チャンクを従来の重複排除プロセスにより識別することが、さまざまな暗号化アルゴリズムによって妨げられる場合、一意の暗号鍵によりそれぞれ暗号化された複数のデータ・セットの重複排除は、失敗に終わる。従来のデータ削減技術はまた、クライアントとストレージ・システムとの間の十分なデータの機密性も提供しない。
【0003】
例えば、ある既知の独自鍵持ち込み(BYOK:bring your own key)暗号化技術は、マルチパーティ信用システムを伴う。すべてのデータ削減機能は、すべてのデータにアクセスできるストレージ・システムによって提供され得るが、ストレージ・システムがクライアントの鍵にアクセスすることができるため、従来のBYOKシステムは、ストレージ・システムとクライアントとの間のデータの機密性を提供しない。サード・パーティの鍵サービスも、クライアント・データの暗号化に使用される共有暗号鍵にアクセスすることができる。この形態のBYOK暗号化の場合、データの機密性はユーザ間のみに存在する。
【0004】
従来の保管時の暗号化は、ストレージ・システムに知られている鍵を用いて、暗号化されていない入力データを暗号化する。ストレージ・システムは、すべてのデータを復号し、システム内のすべてのデータに対して重複排除を実行することができる。しかし、保管時の暗号化はデータの機密性を提供しない。
【0005】
従来の完全にクライアント側の暗号化は、ストレージ・システムに知られていない鍵を用いてデータを暗号化する。ストレージ・システムは、共通鍵を用いて暗号化されたデータのみを重複排除する。完全にクライアント側の重複排除は、相対的に高いデータの機密性を提供するが、重複排除の効率を妨げる。
【発明の概要】
【0006】
一手法によれば、コンピュータ実装方法は、データ・チャンクのフィンガープリントを計算することと、フィンガープリント鍵を用いてフィンガープリントを暗号化することと、ベース鍵および暗号化されたフィンガープリントを用いてデータ・チャンクを暗号化することとを含む。この方法はまた、ユーザ鍵を用いて、暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントをストレージ・システムに送信することとを含む。ストレージ・システムは、ベース鍵、フィンガープリント鍵、およびユーザ鍵に対するアクセス権限を持たない。前述の方法は、ユーザ間のデータ機密性を提供しながら、異なるユーザ鍵を持っているユーザに、鍵のセット全体にわたる重複排除の恩恵をもたらす。
【0007】
コンピュータ実装方法は、任意選択的に、ストレージ・システムが、暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成されることを含む。この任意選択的手法は、一意のユーザ鍵を用いて暗号化されているフィンガープリントを使用する暗号化データの安全な重複排除を可能にする。
【0008】
別の手法に従うシステムは、プロセッサ、およびプロセッサに統合された論理、プロセッサによって実行可能な論理、またはプロセッサに統合され、プロセッサによって実行可能な論理を含む。この論理は、前述の方法を実行するように構成される。
【0009】
別の手法によれば、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含み、プログラム命令は、前述の方法を実行するためのプログラム命令を含む。
【0010】
一手法によれば、コンピュータ実装方法は、データ・チャンクのフィンガープリントを計算することと、ベース鍵およびフィンガープリントを用いてデータ・チャンクを暗号化することとを含む。この方法はまた、ユーザ鍵を用いてフィンガープリントを暗号化することと、暗号化されたデータ・チャンクおよび暗号化されたフィンガープリントをストレージ・システムに送信することとを含む。ストレージ・システムは、ベース鍵およびユーザ鍵に対するアクセス権限を持たない。前述の方法は、攻撃からの強化された保護と共に、暗号化データを安全に重複排除する能力を提供する。
【0011】
コンピュータ実装方法は、任意選択的に、ベース鍵を用いてデータ・チャンクを暗号化することを含み、フィンガープリントはXTSモードのAES暗号化を使用する。この任意選択的手法は、攻撃者が暗号化されたチャンクをある位置から別の位置に移動することに対する保護を提供し、データ・チャンクを暗号化することの一部として、初期化ベクトルを暗黙的に暗号化する。
【0012】
別の手法によれば、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含み、プログラム命令は、前述の方法を実行するためのプログラム命令を含む。
【0013】
本発明の他の態様および手法は、本発明の原理を図面と併せて例として説明する、以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0014】
図1】本発明の一態様に従って、クラウド・コンピューティング環境を示す図である。
図2】本発明の一態様に従って、抽象モデル・レイヤを示す図である。
図3】本発明の一態様に従う、高レベルのアーキテクチャの図である。
図4】本発明の一態様に従う、高レベルのアーキテクチャの図である。
図5】本発明の一態様に従う、方法のフローチャートである。
図6】本発明の一態様に従う、方法のフローチャートである。
【発明を実施するための形態】
【0015】
以下の説明は、本発明の一般的原理を説明する目的で行われるのであり、本明細書において請求される本発明の概念を制限するように意図されていない。さらに、本明細書に記載された特定の特徴を、さまざまな可能な組合せおよび並べ替えの各々において、その他の説明された特徴と組み合わせて使用することができる。
【0016】
本明細書では、特に具体的に定義されない限り、すべての用語には、本明細書から示される意味、および当業者によって理解される意味、もしくは辞書、論文などにおいて定義された意味、またはその両方を含む、最も広い可能な解釈が与えられる。
【0017】
本明細書および添付の特許請求の範囲において使用されるとき、単数形「a」、「an」および「the」が、特に規定されない限り、複数の指示対象を含むということにも注意しなければならない。「備える」もしくは「備えている」またはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、もしくはコンポーネント、またはそれらの組合せの存在を示すが、1つもしくは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、またはそれらの組合せの存在または追加を除外していないということが、さらに理解されるであろう。
【0018】
以下の説明は、ロックされたフィンガープリントを使用する複数鍵の安全な重複排除の複数の態様を開示する。
【0019】
一般的な一態様では、コンピュータ実装方法は、データ・チャンクのフィンガープリントを計算することと、フィンガープリント鍵を用いてフィンガープリントを暗号化することと、ベース鍵および暗号化されたフィンガープリントを用いてデータ・チャンクを暗号化することとを含む。この方法はまた、ユーザ鍵を用いて、暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントをストレージ・システムに送信することとを含む。ストレージ・システムは、ベース鍵、フィンガープリント鍵、およびユーザ鍵に対するアクセス権限を持たない。
【0020】
別の一般的な態様では、システムは、プロセッサ、およびプロセッサと統合された論理、プロセッサによって実行可能な論理、またはプロセッサと統合され、プロセッサによって実行可能な論理を含む。この論理は、前述の方法を実行するように構成される。
【0021】
別の一般的な態様では、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含み、プログラム命令は、前述の方法を実行するためのプログラム命令を含む。
【0022】
さらに別の一般的な態様では、コンピュータ実装方法は、データ・チャンクのフィンガープリントを計算することと、ベース鍵およびフィンガープリントを用いてデータ・チャンクを暗号化することとを含む。この方法はまた、ユーザ鍵を用いてフィンガープリントを暗号化することと、暗号化されたデータ・チャンクおよび暗号化されたフィンガープリントをストレージ・システムに送信することとを含む。ストレージ・システムは、ベース鍵およびユーザ鍵に対するアクセス権限を持たない。
【0023】
別の一般的な態様では、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含み、プログラム命令は、前述の方法を実行するためのプログラム命令を含む。
【0024】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の態様は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【0025】
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
【0026】
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを介してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供され、さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関してどうすることもできないし、知っているわけでもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者との両方に透明性が提供される。
【0027】
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
【0028】
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
【0029】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【0030】
ここで図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、もしくは自動車コンピュータ・システム54N、またはそれらの組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。ノード10は、互いに通信してよい。ノード10は、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはこれらの組合せなどの1つまたは複数のネットワーク内で、物理的または仮想的にグループ化されてよい(図示せず)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、もしくはSaaS、またはそれらの組合せを提供できる。図1に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークもしくはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)またはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【0031】
ここで図2を参照すると、クラウド・コンピューティング環境50(図1)によって提供される機能的抽象レイヤのセットが示されている。図2に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の態様がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【0032】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の態様では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0033】
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
【0034】
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
【0035】
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、およびロックされたフィンガープリントを使用する複数鍵の安全な重複排除96が挙げられる。
【0036】
重複排除もしくは圧縮またはその両方などの従来のデータ削減技術は、暗号化データに適用された場合、意味のある削減を提供しない。重複するデータ・チャンクを従来の重複排除プロセスにより識別することが、さまざまな暗号化アルゴリズムによって妨げられる場合、一意の暗号鍵を用いてそれぞれ暗号化された複数のデータ・セットの重複排除は、失敗に終わる。従来のデータ削減技術はまた、クライアントとストレージ・システムとの間の十分なデータの機密性も提供しない。
【0037】
安全な重複排除のためのKYOK(keep your own key:独自の鍵使用)手法は、どの他のクライアントの暗号鍵に対するアクセス権限も持つことなく、暗号化データの重複排除を実現する。あるクライアントの鍵からのデータが、その鍵での他のデータに対して重複排除され得る。本開示のさまざまな態様は、ユーザ間のデータ機密性を提供しながら、異なるユーザ鍵を持っているユーザに、鍵のセット全体にわたる重複排除の恩恵をもたらす。本開示は、ストレージ・システムが共有鍵またはユーザ鍵に対するアクセス権限を持たず、ユーザ間でユーザ鍵を共有せずに、一意のユーザ鍵を用いて暗号化されているフィンガープリントを使用する暗号化データの安全な重複排除を可能にする。
【0038】
本開示の少なくとも一部の態様は、KYOKによる安全な重複排除のための追加の能力を提供し、クライアントが複数鍵を用いてデータを暗号化できるようにする。さまざまな態様は、重複排除が動作することができるデータのセットを増やすことによって、KYOKの重複排除を改善する。本明細書に記載されたさまざまな手法は、データ機密性を維持し、従来の暗号化技術もしくは重複排除技術またはその両方と比較して、データ機密性を改善する。ロックされたフィンガープリントを使用する複数鍵暗号化データの重複排除のさまざまな動作は、従来の完全にクライアント側の暗号化よりも相対的に良いデータ削減およびクライアント側の重複排除より少ないクライアントのオーバーヘッドを実現する。
【0039】
本開示のさまざまな態様は、重複排除層(deduplication layer)が暗号鍵に対するアクセス権限を持つことなく、暗号化データに対するデータ重複排除を可能にする。データがホストで暗号化される場合、データのセキュリティが強化され、データ暗号鍵がストレージと共有されない。従来のシステムでは、データが暗号化された後に、データを重複排除する能力もしくはデータを圧縮する能力またはその両方が大幅に低下する。全く対照的に、本開示の少なくとも一部の態様は、暗号分離を提供するために異なる鍵を用いて作成されたロックされたフィンガープリントを利用する暗号化データに対するデータ重複排除を可能にする。本明細書に記載されたさまざまな態様によって提供される利点は、データ機密性およびデータ完全性を改善しながら、重複排除時に実質的に情報がデータ所有者に漏洩しないことである。
【0040】
暗号化データの重複排除は、少なくとも、本明細書に記載された理由のため、ストレージ業界にとって問題となっていた。暗号化データを重複排除するための従来手法は、同一の平文データが同一の暗号文を提供するように暗号化される、収束性の暗号化または確定的暗号化を含む。さらに、従来の収束性の暗号化は、異なる鍵で暗号化された同一の平文が同一の暗号文を生成しないため、異なる鍵を用いて暗号化されたデータを重複排除する能力を提供しない。従来の重複排除プロセスでは、ホスト・システムが暗号化データをストレージ・システムに送信する場合、これらの従来のプロセスが同一の平文入力に対して同一の暗号文を作成しないため、異なる鍵で暗号化された同一の平文データを使用する重複排除が失敗する(例えば、重複排除が発生しない)。従来の収束性の暗号化は、同一の平文入力に対して同一の暗号文を作成するが、ユーザ間の暗号分離を提供する異なる鍵を可能にしない、暗号化の形態である。本開示は、復号のために異なる鍵を必要としながら、この収束性の特性を有する暗号化データの重複排除を可能にする。
【0041】
本明細書に記載された動作の少なくとも一部は、対称鍵暗号化もしくは非対称暗号化(例えば、公開鍵基盤(PKI:public key infrastructure))またはその両方と共に使用されてよい。従来技術において知られた任意の構成に従ってPKI暗号化が実行されてよいということが、当業者によって理解されるべきである。例えば、PKIにおける公開鍵は秘密鍵ではなく、公開鍵を用いてデータを暗号化するには、復号するための対応する秘密鍵が必要である。
【0042】
本開示のさまざまな態様全体を通じて、クライアントは、別々のデータ・アクセス権限を持っているプロセス、ユーザ、その他の実体などに関連付けられる。当業者が理解するものとなるように、ホスト・システムは、ホスト・システムを介してストレージ・システムに対してデータを書き込む/読み取る任意の数のユーザを含んでよい。さまざまな態様では、共通性のないコンポーネント間のすべての通信が、相互認証された安全な(例えば、暗号化された)セッション上で発生するということが仮定される。
【0043】
図3は、さまざまな構成に従う高レベルのアーキテクチャの図である。アーキテクチャ300は、さまざまな構成において、特に図1図2および図4図6に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するものとなるように、図3において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ300に含まれてよい。
【0044】
アーキテクチャ300は、一意のユーザ鍵を用いて暗号化されているフィンガープリントを使用する暗号化データの安全な重複排除のための例示的な手法を示している。アーキテクチャ300は、安全な重複排除のための例示的な書き込み動作を示している。アーキテクチャ300は、ホスト・システム302およびストレージ・システム304を含んでいる。ストレージ・システム304は、従来技術において知られた任意の種類のストレージ・システムであってよい。ストレージ・システム304が、本明細書において示されたコンポーネントよりも多いかまたは少ないコンポーネントを含んでよいということが、当業者によって理解されるべきである。ストレージ・システム304は、本明細書に記載されたさまざまな重複排除動作を実行するのが好ましい。
【0045】
さまざまな態様では、ストレージ・システム304は、従来技術において知られた任意のデータ重複排除技術を用いてデータ重複排除を実行するように構成される。ストレージ・システム304は、データに対してフィンガープリントを計算し、あるデータ・チャンクのフィンガープリントが別のデータ・チャンクのフィンガープリントに一致するかどうかをチェックすることによって、入力データ・チャンクに対して重複排除を実行するのが好ましく、このことは下記にさらに詳細に説明される。データ・チャンクのフィンガープリントが一致するということを決定することに応答して、データ・チャンクが重複排除されてよい(例えば、データ・チャンクの1つのコピーのみが格納され、一致するフィンガープリントを有する他のすべてのデータ・チャンクが、従来技術において知られた方法で、格納されたデータ・チャンクを指し示す)。
【0046】
ホスト・システム302は、鍵グループ306(例えば、鍵のセット)を含む。鍵グループ306は、ベース鍵kb 308、フィンガープリント鍵kf 310、ならびにユーザ鍵k0 312、k1 314、およびk2 316を含んでいる。鍵グループ306に属するユーザ鍵k0 312、k1 314、およびk2 316の所有者によって書き込まれたデータ間の重複排除が許可される。鍵グループ306に属さない鍵で書き込まれたデータ間の重複排除は許可されない。さまざまな態様では、フィンガープリント鍵およびベース鍵が、鍵グループ内のユーザ間で共有される。ユーザ鍵は、鍵グループ内のユーザ間で共有されない。さまざまな態様では、平文として書き込まれたデータに対する重複排除は許可されない。
【0047】
書き込み動作318の場合、書き込みデータ320がチャンカ322に渡される。チャンカ322は、書き込みデータ320をデータ・チャンクに分割する。好ましい態様では、チャンカ322は、書き込みデータ320を固定長のデータ・チャンクに分割する。他の態様では、チャンカ322は、意図された応用もしくは設計またはその両方を考慮して、従来技術において知られた方法で、書き込みデータ320を可変サイズの長さのデータ・チャンクに分割する。出力データ・チャンクが、動作324で、フィンガープリント生成器326に渡され、次に動作328で、第1のフィンガープリント・エンクリプタ/デクリプタ(fingerprint encrypter/decrypter)330に送信される。フィンガープリント生成器326は、従来技術において知られた方法でデータ・チャンクのフィンガープリントを生成する。好ましい態様では、フィンガープリント生成器326は、MD5、SHA-1、SHA-256などを含む従来技術における任意の暗号ハッシュ・アルゴリズムを用いてフィンガープリントを計算する。第1のフィンガープリント・エンクリプタ/デクリプタ330は、従来技術において知られた方法で、フィンガープリント鍵kf 310を用いてフィンガープリントを暗号化するか、もしくは復号するか、またはその両方を実行する。好ましい態様では、第1のフィンガープリント・エンクリプタ/デクリプタ330は、暗号化されたフィンガープリントを生成するためのフィンガープリント鍵kf 310を用いて、フィンガープリントを暗号化するか、もしくは復号するか、またはその両方を実行する。
【0048】
さまざまな態様では、フィンガープリントは、鍵付きハッシュ・メッセージ認証コード(HMAC:hash message authentication code)を用いて計算される。HMACは、RFC 2104において定義されており、鍵、メッセージ、および暗号ハッシュの関数である。HMACは、鍵によって暗号化されたメッセージのフィンガープリントを効果的に計算する。図3に示されているように、HMACは、フィンガープリント生成器326によって生成されたフィンガープリントおよび第1のフィンガープリント・エンクリプタ/デクリプタ330によって暗号化された暗号化要素(例えば、暗号化されたフィンガープリント)を結合してよい。HMACメッセージは、データ・チャンクの(例えば、動作324でデータ・チャンクが渡されるときのような)平文であり、鍵はフィンガープリント鍵kf 310である。
【0049】
動作332で、暗号化されたフィンガープリントが、ユーザ鍵でのさらなる暗号化のために、第2のフィンガープリント・エンクリプタ/デクリプタ334に送信される。ユーザ鍵は、鍵グループ内の他のユーザと共有されない鍵であるのが好ましい。図に示されているように、(例えば、書き込み動作を実行している)ユーザがユーザ鍵k1 314に関連付けられ、第2のフィンガープリント・エンクリプタ/デクリプタ334が、従来技術において知られた方法でユーザ鍵k1 314を用いて、暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成する。さまざまな態様では、二重に暗号化されたフィンガープリントは、「ロックされたフィンガープリント」と交換可能なように呼ばれてよい。
【0050】
少なくとも一部の手法では、固定ブロック・ストレージの場合、(例えば、書き込みデータ320の)平文ブロックの論理ブロック・アドレスが、暗号化されたフィンガープリントのユーザ鍵暗号化のための初期化ベクトル(IV:initialization vector)(または例えば、調整可能暗号モードの「微調整」)として使用される。図3に示されているように、動作333で、論理ブロック・アドレスが第2のフィンガープリント・エンクリプタ/デクリプタ334に送信され、初期化ベクトルとして使用されてよい。少なくとも一部の態様では、AES-XTS型の暗号化が使用されてよい。AES-XTS暗号化は、攻撃者が暗号化されたチャンクをある位置から別の位置に移動することに対する保護を提供する。
【0051】
図3に示されているように、動作336で、二重に暗号化されたフィンガープリント(例えば、フィンガープリント鍵を用いて暗号化され、次にユーザ鍵を用いて暗号化されたデータ・チャンクのフィンガープリントである、ロックされたフィンガープリント)がメタデータ・ストレージ338に送信される。図3に示されているように、一手法では、メタデータ・ストレージ338は、データ・ストレージ340とは別に、分離したストレージ・デバイスに格納される。別の手法では、メタデータ・ストレージ338は、データ・ストレージ340と結合されてよい。
【0052】
一部の手法では、動作342で、書き込みデータ320のデータ・チャンクが圧縮ユニット344に送信される。圧縮ユニット344は、従来技術において知られた方法でデータを圧縮し、同一の入力に対して同一の圧縮された出力を生成する。動作346で、圧縮されたデータ・チャンクがデータ・エンクリプタ/デクリプタ348に送信される。データ・エンクリプタ/デクリプタ348は、AES-XTS型であってよい。代替手法では、データ・エンクリプタ/デクリプタ348によって実行されるデータ暗号化はネスト型であり得るが、この型では、書き込みデータ320の入力データ・チャンクが、最初にベース鍵kb 308を使用するか、または(第1のフィンガープリント・エンクリプタ/デクリプタ330によって出力され、動作350でデータ・エンクリプタ/デクリプタ348に送信された)暗号化されたフィンガープリントをフィンガープリント鍵として使用して暗号化され、次に、ベース鍵kb 308の他方または暗号化されたフィンガープリントを暗号鍵として使用してデータ・チャンクをさらに暗号化する。一手法では、従来技術において知られた方法で、ベース鍵kb 308が暗号鍵として使用され、動作350で送信された暗号化されたフィンガープリントがIVとして使用される。動作352で、出力暗号文データ・チャンクが、データ・ストレージ340に送信される。
【0053】
前述したように、好ましい態様では、データ・エンクリプタ/デクリプタ348は、データ・チャンクを復号して平文データ・チャンクを回復するために、ベース鍵kb 308および暗号化されたフィンガープリントの両方が必要とされる方法で動作する。データ・エンクリプタ/デクリプタ348は、入力データ・チャンクが同一の暗号化されたデータ・チャンクを生成するという特性を有する(例えば、本明細書において説明されるように、この暗号化されたデータ・チャンクが、動作352で出力されてデータ・ストレージ340に送信される)。この特性は、ストレージ・システム304が、重複排除の目的でデータを識別することを可能にする(例えば、ストレージ・システム304は、ストレージ・システム304が平文データ(例えば、暗号化されていないデータ)を調べなくても、従来技術において知られた方法で、重複排除のために「一致する」暗号化されたデータ・チャンクを識別することができる)。
【0054】
入力データの書き込みの結果は、ストレージ・システム304が、暗号化されたデータ・チャンクおよび関連する二重に暗号化された(例えば、第1のフィンガープリント・エンクリプタ/デクリプタ330でフィンガープリント鍵kf 310を用いて暗号化され、次に、第2のフィンガープリント・エンクリプタ/デクリプタ334でユーザ鍵k1 314を用いてさらに暗号化された)フィンガープリントを両方とも格納するということになる。ストレージ・システム304は、暗号化されたデータ・チャンクおよび関連する二重に暗号化されたフィンガープリントを、この関係を維持するような方法で格納してよい。例えば、暗号化されたフィンガープリント(例えば、二重に暗号化されたフィンガープリント)は、二重に暗号化されたフィンガープリントを暗号化されたデータ・チャンクに関連付けるメタデータ・ストレージ338に格納されてよい。
【0055】
他の手法では、ストレージ・システムは、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントを含み、「二重に暗号化された」とは、第1のフィンガープリント・エンクリプタ/デクリプタ330でフィンガープリント鍵kf 310を用いて暗号化され、次に、第2のフィンガープリント・エンクリプタ/デクリプタ334で、本明細書に記載されたAES-XTS型暗号化によって暗号化されたフィンガープリントのことを指す。一手法では、ストレージ・システム304は、ブロック・ストアであり、メタデータは、当業者が本開示を読むときに明らかになる方法で、データ・チャンクの論理ブロック・アドレスを関連付け情報として含んでよい。
【0056】
一部の手法では、ストレージ・システムは、当業者が本開示を読むときに明らかになる方法で、複数鍵の安全な重複排除の動作に影響を与えずに、保管時の暗号化をデータもしくはメタデータまたはその両方に適用する。保管時の暗号化は、追加のセキュリティ・レベルをデータもしくはメタデータまたはその両方に有利にもたらす。例えば、物理的データ・アクセス権限を(例えば、ストレージ・システムからのストレージ・デバイスの窃盗などによって)取得している攻撃者は、当業者が理解するものとなるように、追加の保管時の暗号化を回避するために、クライアント暗号鍵、クライアント共有鍵、クライアント非共有鍵、およびストレージ暗号鍵を所有する必要がある。
【0057】
図4は、さまざまな構成に従う高レベルのアーキテクチャの図である。アーキテクチャ400は、さまざまな構成において、特に図1図3および図5図6に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するものとなるように、図4において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ400に含まれてよい。
【0058】
アーキテクチャ400は、一意のユーザ鍵を用いて暗号化されているフィンガープリントを使用する暗号化データの安全な重複排除のための例示的な手法を示している。アーキテクチャ400は、安全な重複排除のための例示的な読み取り動作を示している。アーキテクチャ400は、ホスト・システム302およびストレージ・システム304を含んでいる。ストレージ・システム304は、従来技術において知られた任意の種類のストレージ・システムであってよい。ストレージ・システム304が、本明細書において示されたコンポーネントよりも多いかまたは少ないコンポーネントを含んでよいということが、当業者によって理解されるべきである。ストレージ・システム304は、本明細書に記載されたさまざまな重複排除動作を実行するのが好ましい。
【0059】
さまざまな態様では、ストレージ・システム304は、従来技術において知られた任意のデータ重複排除技術を用いてデータ重複排除を実行するように構成される。ストレージ・システム304は、データに対してフィンガープリントを計算し、あるデータ・チャンクのフィンガープリントが別のデータ・チャンクのフィンガープリントに一致するかどうかをチェックすることによって、入力データ・チャンクに対して重複排除を実行するのが好ましく、このことは下記にさらに詳細に説明される。データ・チャンクのフィンガープリントが一致するということを決定することに応答して、データ・チャンクが重複排除されてよい(例えば、データ・チャンクの1つのコピーのみが格納され、一致するフィンガープリントを有する他のすべてのデータ・チャンクが、従来技術において知られた方法で、格納されたデータ・チャンクを指し示す)。
【0060】
ホスト・システム302は、鍵グループ306(例えば、鍵のセット)を含む。鍵グループ306は、ベース鍵kb 308、フィンガープリント鍵kf 310、ならびにユーザ鍵k0 312、k1 314、およびk2 316を含んでいる。鍵グループ306に属するユーザ鍵k0 312、k1 314、およびk2 316の所有者によって書き込まれたデータ間の重複排除が許可される。鍵グループ306に属さない鍵で書き込まれたデータ間の重複排除は許可されない。さまざまな態様では、フィンガープリント鍵およびベース鍵が、鍵グループ内のユーザ間で共有される。ユーザ鍵は、鍵グループ内のユーザ間で共有されない。さまざまな態様では、平文として書き込まれたデータに対する重複排除は許可されない。
【0061】
動作402で、データに対する読み取り要求が発行される。固定ブロック・ストレージの場合、一連の論理ブロック・アドレスでのデータが読み取られる。動作404で、データ(例えば、読み取り要求に関連付けられた暗号化されたデータ・チャンク)を読み取るための読み取り要求がデータ・ストレージ340に渡され、動作406で、関連するメタデータ(例えば、読み取り要求に関連付けられたデータ・チャンクに関連付けられた二重に暗号化されたフィンガープリント)を読み取るための読み取り要求がメタデータ・ストレージ338に渡される。動作408で、暗号化されたデータ・チャンクがデータ・エンクリプタ/デクリプタ348に送信され、データ・エンクリプタ/デクリプタ348は、当業者が本開示を読むときに理解するものとなる方法で、暗号化/復号に使用されるベース鍵kb 308およびIVを用いて、暗号化されたデータ・チャンクを復号する。
【0062】
動作410で、関連するメタデータ(例えば、暗号化されたデータ・チャンクに関連付けられた二重に暗号化されたフィンガープリント)が第2のフィンガープリント・エンクリプタ/デクリプタ334に送信され、第2のフィンガープリント・エンクリプタ/デクリプタ334は、当業者が本開示を読むときに理解するものとなる方法でユーザ鍵k1 314を用いて、二重に暗号化されたフィンガープリントを復号し、暗号化されたフィンガープリント(例えば、フィンガープリント鍵kf 310を用いて暗号化された、単独で暗号化されたフィンガープリント)を生成する。第2のフィンガープリント・エンクリプタ/デクリプタ334は、当業者が本開示を読むときに理解するものとなるように、適切なユーザ鍵(例えば、データに関連付けられたユーザ)でデータ・フィンガープリントを暗号化または復号してよい。例えば、ユーザがユーザ鍵k1 314を所有している場合、第2のフィンガープリント・エンクリプタ/デクリプタ334が、ユーザ鍵k1 314を用いて二重に暗号化されたフィンガープリントを復号し、暗号化されたフィンガープリントを取り出した。さまざまな手法では、動作412で、データ・チャンクの位置情報(例えば、固定ブロック・ストレージの論理ブロック・アドレスなど)が第2のフィンガープリント・エンクリプタ/デクリプタ334に送信され、位置情報は、暗号化/復号に使用されるIVである。
【0063】
動作414で、第2のフィンガープリント・エンクリプタ/デクリプタ334によって出力された、暗号化されたフィンガープリント(例えば、単独で暗号化されたフィンガープリント)が、IVとしてデータ・エンクリプタ/デクリプタ348に送信される。データ・エンクリプタ/デクリプタ348は、ベース鍵kb 308を復号鍵として使用し、動作416で、データ・チャンクを出力する。
【0064】
任意選択的手法では、当業者が本開示を読むときに理解するものとなる方法で、解凍ユニット418を用いてデータ・チャンクを解凍し、平文データ・チャンクを提供するために、解凍技術が使用される。動作420で、平文データ・チャンクが、デチャンカ422に送信される。
【0065】
動作424で、出力データ・チャンクをフィンガープリント生成器326に送信することによって、エンドツーエンドのデータ完全性がテストされてよい。フィンガープリント生成器326は、書き込み動作に関して図3を参照して上記に説明されたように、第1のフィンガープリント・エンクリプタ/デクリプタ330と共に動作する。フィンガープリント生成器326は、復号されたデータ・チャンクの暗号化されたフィンガープリントを生成する。動作428で、この生成された暗号化されたフィンガープリントが、比較器426に送信される。動作430で、他の暗号化された(第2のフィンガープリント・エンクリプタ/デクリプタ334によって出力された)フィンガープリントが、比較器426に送信される。比較器426は、従来技術において知られた方法で、暗号化されたフィンガープリントを比較する。暗号化されたフィンガープリントの2つの値は、当業者が本開示を読むときに明らかになるように、エラーもしくは改ざんまたはその両方が存在しなければ、同一であるはずである。動作432で、比較の結果がデチャンカ422に送信される。比較が成功した(例えば、暗号化されたフィンガープリントが一致する)場合、デチャンカ422は、従来技術において知られた方法で、読み取り要求に応答して読み取りデータ434をユーザに転送してよい。比較が失敗した場合、従来技術において知られた方法でエラーが出力されてよく、データが転送されない。システムは、不一致がエラー、改ざん、攻撃などの結果だったかどうかを識別するためのさらなる判定技術を含む、適切な動作を実行してよい。システムは、複製、消失符号などの回復技術が使用可能である場合、それらの他の手段によって、データの回復を試みてよい。
【0066】
ここで図5を参照すると、一態様に従って、方法500のフローチャートが示されている。方法500は、さまざまな態様において、特に図1図4および図6に示された環境のいずれかにおいて、本発明に従って実行されてよい。当然、当業者が本説明を読むときに理解するものとなるように、図5において具体的に説明された動作よりも多いか、または少ない動作が方法500に含まれてよい。
【0067】
方法500のステップの各々は、動作環境の任意の適切なコンポーネントによって実行されてよい。例えば、さまざまな態様では、方法500は、コンピュータ、または1つもしくは複数のプロセッサを含んでいるその他のデバイスによって、部分的に、または全体的に実行されてよい。ハードウェアもしくはソフトウェアまたはその両方において実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを含んでいるプロセッサ(例えば、処理回路、チップ、もしくはモジュール、またはそれらの組合せ)が、方法500の1つまたは複数のステップを実行するために任意のデバイス内で利用されてよい。プロセッサの例としては、中央処理装置(CPU:central processing unit)、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)など、これらの組合せ、または従来技術において知られた任意の他の適切なコンピューティング・デバイスが挙げられるが、これらに限定されない。
【0068】
図5に示されているように、方法500は動作502を含んでいる。動作502は、データ・チャンクのフィンガープリントを計算することを含む。さまざまな態様では、書き込み要求に応答して、従来技術において知られた任意の方法で、書き込みデータがデータ・チャンクに分割されてよい。データ・チャンクは固定長であってよく、または可変長であってもよい。フィンガープリントは、MD5、SHA-1、SHA-256などを含む従来技術における任意の暗号ハッシュ・アルゴリズムに従って、データ・チャンクごとに計算される。データ・チャンクのフィンガープリントは、従来技術において知られた任意の方法で計算されてよい。
【0069】
動作504は、フィンガープリント鍵を用いてフィンガープリントを暗号化することを含む。好ましい態様では、フィンガープリント鍵は、ホスト・システム上の鍵グループの一部である。鍵グループは、フィンガープリント鍵、ベース鍵、および少なくとも1つのユーザ鍵を含んでよい。好ましい態様では、フィンガープリント鍵およびベース鍵は、鍵グループ内の鍵のいずれかで書き込まれたデータの重複排除を可能にするために、鍵グループのユーザ間で共有される。ユーザ鍵は、鍵グループのユーザ間で共有されない。当業者が本開示を読むときに明らかになるように、鍵グループに属するユーザ鍵の所有者によって書き込まれたデータ間で、重複排除が許可されるのが好ましい。当業者が本開示を読むときに理解するものとなるように、フィンガープリント鍵エンクリプタは、フィンガープリント鍵を用いてフィンガープリントを暗号化してよい。
【0070】
一部の手法では、動作502および動作504は、実質的に1つのプロセスに結合されてよい。例えば、フィンガープリントを計算することおよびフィンガープリントを暗号化することは、HMACメッセージがデータ・チャンクの平文であり、暗号鍵がフィンガープリント鍵である、HMACの一部であってよい。
【0071】
動作506は、ベース鍵および暗号化されたフィンガープリントを用いてデータ・チャンクを暗号化することを含む。ベース鍵は、前述したように、鍵グループに属してよい。当業者が本開示を読むときに理解するものとなるように、ベース鍵および暗号化されたフィンガープリントを用いてデータ・チャンクを暗号化することは、ベース鍵を暗号鍵として使用すること、および暗号化されたフィンガープリントを第1の初期化ベクトルとして使用することを含むのが好ましい。
【0072】
一手法では、データ・チャンクは、ベース鍵および暗号化されたフィンガープリントを使用する暗号化の前に、従来技術において知られた任意のデータ圧縮技術を用いて圧縮されてよい。一部の手法では、チャンキングの前もしくは後またはその両方で、さまざまな圧縮技術が適用されてよい。一構成では、チャンキング前の圧縮は、チャンキングの性能を改善する種類の圧縮であってよい。別の構成では、チャンキング後の圧縮は、結果として得られるチャンク・サイズを最小化することに向けて調整されてよい。
【0073】
好ましい態様では、ベース鍵および暗号化されたフィンガープリントの両方が、データ・チャンクを復号するため(例えば、読み取り要求に応答して平文データ・チャンクを回復するため)に必要とされる。同一のデータ・チャンクは、同一の暗号化されたデータ・チャンク(例えば、ベース鍵および暗号化されたフィンガープリントを用いて暗号化されたデータ・チャンク)を生成する。この特性は、当業者が本開示を読むときに明らかになるように、ストレージ・システムが重複排除の目的でデータを識別することを可能にする。
【0074】
動作508は、ユーザ鍵を用いて、暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することを含む。さまざまな態様では、二重に暗号化されたフィンガープリントは、「ロックされたフィンガープリント」と交換可能なように呼ばれてよい。好ましい態様では、ユーザ鍵は、前述したように、鍵グループに属する鍵で書き込まれたデータの重複排除を可能にする鍵グループのメンバーである。ユーザ鍵は、鍵グループに属する他のユーザ(例えば、鍵グループの一部であるユーザ鍵を持っている他のユーザ)と共有されない鍵であるのが好ましい。さまざまな態様では、二重に暗号化されたフィンガープリントとは、(例えば、動作504におけるように、暗号化されたフィンガープリントを生成するために)フィンガープリント鍵を用いて最初に暗号化され、その後、(例えば、二重に暗号化されたフィンガープリントを生成するために)ユーザ鍵を用いて再び暗号化された(例えば、暗号化されたフィンガープリントが暗号化される)フィンガープリントのことを指す。
【0075】
任意選択的な一手法では、ユーザ鍵を用いて暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することは、当業者が本開示を読むときに理解するものとなる方法で、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む。論理ブロック・アドレスは、データ・チャンクの論理ブロック・アドレスであるのが好ましい。少なくとも一部の手法では、論理ブロック・アドレスは、データ・チャンクに関連付けられた論理ブロック・アドレスのセットを含んでよい。さまざまな態様では、論理ブロック・アドレスは、常習犯が偽のデータまたは移動されたデータをストレージ・システム内に置換することによってデータを読み取るのを防ぐために、初期化ベクトルとして使用されてよい。初期化ベクトルとしての論理ブロック・アドレスは、書き込まれている/読み取られているデータの位置の追加の検証を可能にする。例えば、ストレージ・システムが、読み取り要求に応答して間違った位置からデータを返そうとした場合、この位置(例えば、論理ブロック・アドレス)が暗号化の一部であるため、置換が機能しない。
【0076】
動作510は、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントをストレージ・システムに送信することを含む。ストレージ・システムは、ベース鍵、フィンガープリント鍵、およびユーザ鍵のいずれに対するアクセス権限も持たない。暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントは、従来技術において知られた方法でストレージ・システムに送信されてよい。ストレージ・システムは、重複排除の目的でデータを識別するように構成される。例えば、ストレージ・システムは、ストレージ・システムが平文データ(例えば、暗号化されていないデータ)を調べず、鍵グループ内の鍵のいずれに対するアクセス権限も持たなくても、従来技術において知られた方法で、重複排除のために「一致する」暗号化されたデータ・チャンクを識別することができる。
【0077】
ストレージ・システムは、暗号化されたデータ・チャンクおよび関連する二重に暗号化されたフィンガープリントを、この関係を維持するような方法で格納してよい。例えば、暗号化されたフィンガープリント(例えば、二重に暗号化されたフィンガープリント)は、二重に暗号化されたフィンガープリントをデータ・チャンクに関連付けるメタデータ・ストレージに格納されてよい。一手法では、二重に暗号化されたフィンガープリントのメタデータ・ストレージは、暗号化されたデータ・チャンクのデータ・ストレージとは別に格納される(例えば、分離したストレージ・デバイスである)。別の手法では、メタデータ・ストレージは、データ・ストレージと結合されてよい。ストレージ・システムが、フィンガープリント鍵、ベース鍵、およびユーザ鍵のいずれに対するアクセス権限も持たない場合、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントのストレージを結合することにはリスクがないか、あってもわずかである。ストレージ・システムは、共有鍵のいずれに対するアクセス権限も持たないのが好ましい。ストレージ・システムは、非共有鍵(例えば、ユーザ鍵)のいずれに対するアクセス権限も持たない。
【0078】
他の手法では、ストレージ・システムは、暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントを含み、「二重に暗号化された」とは、フィンガープリント鍵を用いて暗号化され、次いで、本明細書に記載されたAES-XTS型暗号化によって暗号化されたフィンガープリントのことを指す。一手法では、ストレージ・システムは、ブロック・ストアであり、メタデータは、当業者が本開示を読むときに明らかになる方法で、データ・チャンクの論理ブロック・アドレスを関連付け情報として含んでよい。
【0079】
例示的な態様では、第1のユーザが、第1のユーザ鍵k0を用いてデータを格納してよく、第2のユーザが、第2のユーザ鍵k1を用いて同一のデータを格納してよい。ユーザ鍵k0およびk1は、同じ鍵グループの一部である。フィンガープリントおよびデータ・チャンクは、上記に詳細に説明されたように、暗号化されて格納される。この例示的な態様では、共通の暗号化されたデータ・チャンクが、ストレージ・システム内で重複排除され、第1のユーザおよび第2のユーザはそれぞれ、二重に暗号化されたフィンガープリントをストレージ・システムに格納する(各二重に暗号化されたフィンガープリントは、第1のユーザ鍵k0および第2のユーザ鍵k1を用いてそれぞれ暗号化される)。第1のユーザおよび第2のユーザは、ストレージ・システムに対する読み取り要求に応答して、共通の暗号化されたデータ・チャンクをそれぞれ取り出し、それらのユーザに関連付けられたユーザ鍵を用いて、暗号化されたデータ・チャンクおよびそれらのユーザの二重に暗号化されたフィンガープリントを復号してよい。第3のユーザ鍵k2を用いている第3のユーザは、(第1のユーザと第2のユーザの間で共通している)暗号化されたデータ・チャンクを復号することができず、第3のユーザは、第3のユーザがフィンガープリント鍵およびベース鍵を共有する鍵グループの一部である場合でも、二重に暗号化されたフィンガープリントのどちらを復号しようとしても、正しいユーザ鍵に対するアクセス権限を持っていない。
【0080】
さまざまな手法では、ストレージ・システムは、ストレージ・システムに格納されたデータに対する読み取り要求を受信してよい。読み取り要求に応答して、ストレージ・システムは、読み取り要求に関連付けられた暗号化されたデータ・チャンクおよび二重に暗号化されたフィンガープリントを、データを要求しているホスト・システムに返してよい。ホスト・システムは、ユーザ鍵を用いて、二重に暗号化されたフィンガープリントを復号し、暗号化されたフィンガープリント(例えば、フィンガープリント鍵を用いて暗号化されている単独で暗号化されたフィンガープリント)を生成する。暗号化されたフィンガープリントは、復号されたデータ・チャンクを出力するために、復号鍵としてのベース鍵と共に、ホスト・システムによってIVとして使用される。任意選択的な態様では、データ・チャンクが解凍されてよい。さまざまな手法では、フィンガープリントは、前述したような方法で出力データ・チャンクに対して計算されてよく、計算されたフィンガープリントは、エンドツーエンドのデータ完全性をテストするために、暗号化されたフィンガープリント(例えば、フィンガープリント鍵を用いて暗号化されている、単独で暗号化されたフィンガープリント)と比較されてよい。エラーおよび改ざんが存在しなければ、2つの暗号化されたフィンガープリントは同一であるはずである。暗号化されたフィンガープリントが一致する場合、当業者が本開示を読むときに明らかになるように、データが返されてよい。ホスト・システムは、不一致がエラー、改ざん、攻撃などの結果だったかどうかを識別するためのさらなる判定技術を含む、適切な動作を実行してよい。ホスト・システムは、複製、消失符号などの回復技術が使用可能である場合、それらの他の手段によって、データの回復を試みてよい。
【0081】
ここで図6を参照すると、一態様に従って、方法600のフローチャートが示されている。方法600は、さまざまな態様において、特に図1図5に示された環境のいずれかにおいて、本発明に従って実行されてよい。当然、当業者が本説明を読むときに理解するものとなるように、図6において具体的に説明された動作よりも多いか、または少ない動作が方法600に含まれてよい。
【0082】
方法600のステップの各々は、動作環境の任意の適切なコンポーネントによって実行されてよい。例えば、さまざまな態様では、方法600は、コンピュータ、または1つもしくは複数のプロセッサを含んでいるその他のデバイスによって、部分的に、または全体的に実行されてよい。ハードウェアもしくはソフトウェアまたはその両方において実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを含んでいるプロセッサ(例えば、処理回路、チップ、もしくはモジュール、またはそれらの組合せ)が、方法600の1つまたは複数のステップを実行するために任意のデバイス内で利用されてよい。例示的なプロセッサは、中央処理装置(CPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)など、これらの組合せ、または従来技術において知られた任意の他の適切なコンピューティング・デバイスを含むが、これらに限定されない。
【0083】
図6に示されているように、方法600は動作602を含んでいる。動作602は、データ・チャンクのフィンガープリントを計算することを含む。さまざまな態様では、書き込み要求に応答して、従来技術において知られた任意の方法で、書き込みデータがデータ・チャンクに分割されてよい。データ・チャンクは固定長であってよく、または可変長であってもよい。フィンガープリントは、MD5、SHA-1、SHA-256などを含む従来技術における任意の暗号ハッシュ・アルゴリズムに従って、データ・チャンクごとに計算される。データ・チャンクのフィンガープリントは、従来技術において知られた任意の方法で計算されてよい。
【0084】
動作604は、ベース鍵およびフィンガープリントを用いてデータ・チャンクを暗号化することを含む。好ましい態様では、ベース鍵は、ホスト・システム上の鍵グループの一部である。鍵グループは、ベース鍵および少なくとも1つのユーザ鍵を含んでよい。好ましい態様では、ベース鍵は、鍵グループに属する鍵で書き込まれたデータの重複排除を可能にするために、鍵グループのユーザ間で共有される。当業者が本開示を読むときに理解するものとなるように、ベース鍵およびフィンガープリントを用いてデータ・チャンクを暗号化することは、ベース鍵を暗号鍵として使用すること、およびフィンガープリントを第1の初期化ベクトルとして使用することを含むのが好ましい。
【0085】
さまざまな態様では、ベース鍵およびフィンガープリントをIVとして用いてデータを暗号化することでは、XTSモードのAES暗号化を使用する。XTSモードを暗黙的に使用しベース鍵およびフィンガープリントをIVとして用いてデータを暗号化することでは、データ・チャンクを暗号化することの一部としてIVを暗号化する。当業者が本開示を読むときに明らかになるように、フィンガープリント(例えば、データ・チャンクを暗号化するために入力IVとして使用された暗号化されていないフィンガープリント)は暗号化されないままである。
【0086】
動作606は、ユーザ鍵を用いてフィンガープリントを暗号化することを含む。好ましい態様では、ユーザ鍵は、前述したように、鍵グループに属する鍵で書き込まれたデータの重複排除を可能にする鍵グループのメンバーである。ユーザ鍵は、鍵グループに属する他のユーザ(例えば、鍵グループの一部であるユーザ鍵を持っている他のユーザ)と共有されない鍵であるのが好ましい。動作606におけるように、ユーザ鍵を用いてフィンガープリントを暗号化することは、暗号化されたフィンガープリントを生成するのが好ましく、このフィンガープリントはユーザ鍵で暗号化される(例えば、単独で暗号化される)。これらの手法では、ユーザ鍵を用いてフィンガープリントを暗号化し、単独で暗号化されたフィンガープリントを生成することは、当業者が本開示を読むときに明らかになるものとなる方法で、データ・チャンクに関連付けられた論理ブロック・アドレスを、ユーザ鍵を使用するフィンガープリントの暗号化のための第2の初期化ベクトルとして使用することを含んでよい。
【0087】
動作608は、暗号化されたデータ・チャンクおよび暗号化されたフィンガープリントをストレージ・システムに送信することを含む。ストレージ・システムは、ベース鍵およびユーザ鍵のいずれに対するアクセス権限も持たない。暗号化されたデータ・チャンクおよび暗号化されたフィンガープリントは、従来技術において知られた方法でストレージ・システムに送信されてよい。ストレージ・システムは、重複排除の目的でデータを識別するように構成される。例えば、ストレージ・システムは、ストレージ・システムが平文データ(例えば、暗号化されていないデータ)を調べず、鍵グループ内の鍵のいずれに対するアクセス権限も持たなくても、従来技術において知られた方法で、重複排除のために「一致する」暗号化されたデータ・チャンクを識別することができる。
【0088】
ストレージ・システムは、暗号化されたデータ・チャンクおよび関連する暗号化されたフィンガープリントを、この関係を維持するような方法で格納してよい。例えば、暗号化されたフィンガープリントは、暗号化されたフィンガープリントをデータ・チャンクに関連付けるメタデータ・ストレージに格納されてよい。一手法では、暗号化されたフィンガープリントのメタデータ・ストレージは、暗号化されたデータ・チャンクのデータ・ストレージとは別に格納される(例えば、分離したストレージ・デバイスである)。別の手法では、メタデータ・ストレージは、データ・ストレージと結合されてよい。ストレージ・システムが、ベース鍵およびユーザ鍵のいずれに対するアクセス権限も持たない場合、暗号化されたデータ・チャンクおよび暗号化されたフィンガープリントのストレージを結合することにはリスクがないか、あってもわずかである。ストレージ・システムは、共有鍵のいずれに対するアクセス権限も持たないのが好ましい。ストレージ・システムは、非共有鍵(例えば、ユーザ鍵)のいずれに対するアクセス権限も持たない。
【0089】
ロックされたフィンガープリントを使用する本明細書に記載された暗号化方法の利点は、攻撃からの保護を強化して、暗号化データを安全に重複排除する能力を含む。例えば、常習犯がストレージ・システム内のデータにアクセスしようとした場合、常習犯が、データまたはフィンガープリントを暗号化するために使用される共有鍵(例えば、ベース鍵またはフィンガープリント鍵)のうちの1つに対するアクセス権限を持っていたとしても、常習犯は、暗号化において使用された初期化ベクトル(例えば、暗号化されたフィンガープリント、HMAC、論理ブロック・アドレスなど)に対するアクセス権限を持たずに、暗号化されていないデータにアクセスすることができない。さらに、常習犯は、非共有ユーザ鍵(not-shared user key)に対するアクセス権限を持っている場合、平文データにアクセスするために、メタデータ(例えば、二重に暗号化されたフィンガープリント)を復号するための論理ブロック・アドレスも知る必要がある。本明細書に記載された態様の少なくとも一部は、異なるユーザ鍵で暗号化されたデータの重複排除を可能にしながら、複数のレベルの保護およびデータ機密性を提供する。
【0090】
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
【0091】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、および前述の任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波もしくはその他の自由に伝搬する電磁波、導波管もしくはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0092】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、またはそれらの組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0093】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、またはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0094】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0095】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートもしくはブロック図またはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を含むように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組合せに特定の方式で機能するように指示できるものであってもよい。
【0096】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
【0097】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実行されるか、同時に実行されるか、時間的に部分的または完全に重複する方法で実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0098】
さらに、さまざまな実施形態に従うシステムは、プロセッサ、およびプロセッサに統合された論理もしくはプロセッサによって実行可能な論理またはその両方を含んでよく、この論理は、本明細書において列挙された処理ステップのうちの1つまたは複数を実行するように構成される。統合されるということは、つまり、プロセッサに論理が、特定用途向け集積回路(ASIC:application specific integrated circuit)、FPGAなどのハードウェア論理として組み込まれるということである。プロセッサによって実行可能であるということは、つまり、論理が、プロセッサによってアクセス可能なハードウェア論理、ソフトウェア論理(ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部など)など、またはハードウェア論理とソフトウェア論理の何らかの組合せであり、プロセッサによって実行されたときに何らかの機能をプロセッサに実行させるように構成されているということである。ソフトウェア論理は、従来技術において知られた任意のメモリ・タイプの、ローカルもしくはリモートまたはその両方のメモリに格納されてよい。ASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィック処理装置(GPU)といった、ソフトウェア・プロセッサ・モジュールもしくはハードウェア・プロセッサまたはその両方などの、従来技術において知られた任意のプロセッサが使用されてよい。
【0099】
上記に提示された説明から複数の組合せを作成して、前述のシステムもしくは方法またはその両方のさまざまな特徴が任意の方法で組み合わせられてよいということが明らかである。
【0100】
本発明の実施形態が、サービスをオンデマンドで提供するように顧客のために展開されるサービスの形態で提供されてよいということがさらに理解されるであろう。
【0101】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。説明された実施形態の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2023-09-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータの情報処理により実行する方法であって、
データ・チャンクのフィンガープリントを計算することと、
フィンガープリントを用いて前記フィンガープリントを暗号化することと、
ベースおよび前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザを用いて、前記暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、
前記暗号化されたデータ・チャンクおよび前記二重に暗号化されたフィンガープリントをストレージ・システムに送信することと
を含み、前記ストレージ・システムが前記ベース鍵、前記フィンガープリント鍵および前記ユーザ鍵に対するアクセス権限を持たない方法。
【請求項2】
前記フィンガープリントを計算すること、および前記フィンガープリントを暗号化することが、鍵付きハッシュ・メッセージ認証コードを使用して実行される、請求項に記載の方法。
【請求項3】
前記ベースおよび前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することが、前記暗号化されたフィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項1または2に記載の方法。
【請求項4】
前記ユーザを用いて前記暗号化されたフィンガープリントを暗号化し、前記二重に暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項1~4のいずれか1項に記載の方法。
【請求項6】
コンピュータの情報処理により実行する方法であって、
データ・チャンクのフィンガープリントを計算することと、
ベースおよび前記フィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザを用いて前記フィンガープリントを暗号化することと、
前記暗号化されたデータ・チャンクおよび前記暗号化されたフィンガープリントをストレージ・システムに送信することと
を含み、前記ストレージ・システムが、前記ベース鍵および前記ユーザ鍵に対するアクセス権限を持たない方法。
【請求項7】
前記ベースおよび前記フィンガープリントを用いて前記データ・チャンクを暗号化することが、前記フィンガープリントを第1の初期化ベクトルとして使用して前記データ・チャンクを暗号化することを含む、請求項に記載の方法。
【請求項8】
前記ユーザを用いて前記フィンガープリントを暗号化し、暗号化されたフィンガープリントを生成することが、論理ブロック・アドレスを第2の初期化ベクトルとして使用することを含む、請求項6または7に記載の方法。
【請求項9】
前記ストレージ・システムが、前記暗号化されたデータ・チャンクに対して重複排除動作を実行するように構成される、請求項6~8のいずれか1項に記載の方法。
【請求項10】
前記ベースを用いて前記データ・チャンクを暗号化し、前記フィンガープリントがXTSモードのAES暗号化を使用する、請求項6~9のいずれか1項に記載の方法。
【請求項11】
請求項1~10のいずれか1項に記載された方法を、コンピュータに実行させるためのコンピュータ・プログラム
【請求項12】
請求項11に記載のコンピュータ・プログラムを記録した、コンピュータ可読ストレージ媒体
【請求項13】
プロセッサと、
前記プロセッサと統合されたか、前記プロセッサによって実行可能であるか、または前記プロセッサと統合され、前記プロセッサによって実行可能である論理と
を備えているシステムであって、前記論理が、
データ・チャンクのフィンガープリントを計算することと、
フィンガープリントを用いて前記フィンガープリントを暗号化することと、
ベースおよび前記暗号化されたフィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザを用いて、前記暗号化されたフィンガープリントを暗号化し、二重に暗号化されたフィンガープリントを生成することと、
前記暗号化されたデータ・チャンクおよび前記二重に暗号化されたフィンガープリントをストレージ・システムに送信することと
を実行するように構成され、前記ストレージ・システムが前記ベース鍵、前記フィンガープリント鍵および前記ユーザ鍵に対するアクセス権限を持たない、システム。
【請求項14】
プロセッサと、
前記プロセッサと統合されたか、前記プロセッサによって実行可能であるか、または前記プロセッサと統合され、前記プロセッサによって実行可能である論理と
を備えているシステムであって、前記論理が、
データ・チャンクのフィンガープリントを計算することと、
ベース鍵および前記フィンガープリントを用いて前記データ・チャンクを暗号化することと、
ユーザ鍵を用いて前記フィンガープリントを暗号化することと、
前記暗号化されたデータ・チャンクおよび前記暗号化されたフィンガープリントをストレージ・システムに送信することと
を実行するように構成され、前記ストレージ・システムが、前記ベース鍵および前記ユーザ鍵に対するアクセス権限を持たない、システム。
【国際調査報告】