(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-30
(45)【発行日】2024-05-10
(54)【発明の名称】キー圧縮可能な暗号化
(51)【国際特許分類】
G06F 21/60 20130101AFI20240501BHJP
G09C 1/00 20060101ALI20240501BHJP
G06F 3/06 20060101ALI20240501BHJP
【FI】
G06F21/60 360
G09C1/00 660D
G06F3/06 301W
G06F21/60 320
(21)【出願番号】P 2022504000
(86)(22)【出願日】2020-07-31
(86)【国際出願番号】 IB2020057249
(87)【国際公開番号】W WO2021028771
(87)【国際公開日】2021-02-18
【審査請求日】2022-12-23
(32)【優先日】2019-08-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】チェン、ドロン
(72)【発明者】
【氏名】ツファディア、エリアド
(72)【発明者】
【氏名】ハーニク、ダニー
(72)【発明者】
【氏名】ファクター、マイケル
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2014-052899(JP,A)
【文献】特開2013-101672(JP,A)
【文献】米国特許出願公開第2019/0065788(US,A1)
【文献】特開2013-062616(JP,A)
【文献】特開2016-134752(JP,A)
【文献】米国特許出願公開第2016/0062918(US,A1)
【文献】米国特許出願公開第2015/0074428(US,A1)
【文献】韓国公開特許第10-2015-0125010(KR,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
G09C 1/00
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
プロセッサと、前記プロセッサによってアクセス可能なメモリと、前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と、前記メモリに格納され、前記プロセッサによってアクセス可能なデータとを含む、コンピュータ・システムに実装される方法であって、
前記コンピュータ・システムで
、元のデータ・セクタを圧縮
して、新しいデータ・セクタの部分を生成すること;
前記コンピュータ・システムで、前記新しいデータ・セクタの部分を、データ暗号化キー(DEK)を用いて暗号化すること;
前記コンピュータ・システムで、前記圧縮された前記新しいデータ・セクタの部分に、メタデータおよびパディング・データを付加すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を含む方法。
【請求項2】
圧縮されている前記元のデータ・セクタが所定量未満に圧縮されている場合に、前記元のデータ・セクタを圧縮しないこと;
前記コンピュータ・システムで、データ暗号キー(DEK)を用いて前記未圧縮の元のデータ・セクタを暗号化すること;および
前記コンピュータ・システムで、前記暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送すること
をさらに含む、請求項1に記載の方法。
【請求項3】
プロセッサと、前記プロセッサによってアクセス可能なメモリと、前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と、前記メモリに格納され、前記プロセッサによってアクセス可能なデータとを含む、コンピュータ・システムに実装される方法であって、
前記コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること;
圧縮されている前記元のデータ・セクタが所定量未満に圧縮されている場合に、前記元のデータ・セクタを圧縮しないこと;
前記コンピュータ・システムで、データ暗号キー(DEK)を用いて前記未圧縮の元のデータ・セクタを暗号化すること;ならびに
前記コンピュータ・システムで、前記暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送すること
を含み、
前記ストレージ・システムは、前記DRKを用いて前記コンピュータ・システムから送信された前記データ・セクタのうち少なくとも一部を復号し、圧縮可能なパターンの有無を用いて、前記伝送されたデータが圧縮されているか否かを判定し;
前記データ・セクタが圧縮されていないと判定された際に、次いで、前記ストレージ・システムは、修正することなく前記未圧縮の元のデータ・セクタを格納し;
前記データ・セクタが圧縮されていると判定された際に、次いで、前記ストレージ・システムは、前記DRKを用いてホストによって送信された前記データ・セクタを復号し、前記復号された新しいデータ・セクタを格納し;
前記ストレージ・システムが圧縮能を内蔵している際に、前記ストレージ・システムは、前記圧縮可能なパターンを利用して格納スペースを節約する、
方法。
【請求項4】
プロセッサと、前記プロセッサによってアクセス可能なメモリと、前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と、前記メモリに格納され、前記プロセッサによってアクセス可能なデータとを含む、コンピュータ・システムに実装される方法であって、
前記コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること;
前記コンピュータ・システムで、前記ストレージ・システムから暗号化されたデータ・セクタを受信すること;
前記コンピュータ・システムで、前記DRKを用いて、前記暗号化されたデータ・セクタのうち少なくとも1つのデータ・セクタを復号すること;
前記コンピュータ・システムで、前記復号されたデータ・セクタのうち少なくとも一部分におけるパディング・データの存在に基づき、前記データ・セクタが圧縮データを含むか否かを判定すること;
前記データ・セクタが圧縮されている際に、前記コンピュータ・システムで、前記DEKを用いて前記圧縮データを復号すること、および前記コンピュータ・システムで、前記復号された圧縮データを解凍すること;ならびに
前記データ・セクタが圧縮されていない際に、前記コンピュータ・システムで、前記DEKを用いて、前記暗号化されたデータ・セクタを解凍することなく復号すること;
を含み、
前記メタデータは、前記元のデータ・セクタの圧縮長の値を含み、前記値は、前記DRKを用いて前記圧縮データを復号した後に、前記圧縮データを解凍するために使用される
、方法。
【請求項5】
プロセッサと、前記プロセッサによってアクセス可能なメモリと、前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と、前記メモリに格納され、前記プロセッサによってアクセス可能なデータとを含む、コンピュータ・システムに実装される方法であって、
前記コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を含み、
前記ストレージ・システムは、
前記ストレージ・システムで、格納されたデータ・がパディング・データを含むか否かを判定すること;
前記格納されたデータ・セクタがパディング・データを含む際に、前記ストレージ・システムで、前記DRKを用いて前記格納されたデータ・セクタを暗号化して、暗号化されたデータ・セクタを形成し、前記暗号化されたデータ・セクタを前記コンピュータ・システムに伝送すること;ならびに
前記格納されたデータ・セクタがパディング・データを含まない際に、前記格納されたデータ・セクタを前記暗号化されたデータ・セクタとして前記コンピュータ・システムに伝送すること
によって、暗号化されたデータ・セクタを伝送する
、方法。
【請求項6】
プロセッサと、前記プロセッサによってアクセス可能なメモリと、前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と、前記メモリに格納され、前記プロセッサによってアクセス可能なデータとを含む、コンピュータ・システムに実装される方法であって、
前記コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること;ならびに
重複排除をサポートするストレージ・システムに前記データ
・セクタが伝送される際に、前記コンピュータ・システムで、同一データの異なるデータ・セクタについて同一の初期化ベクトルが生成され、前記DEKによる今後の復号のための前記メタデータの一部として前記初期化ベクトルを追加するように;ならびに
前記データ
・セクタが圧縮可能ではない際に、次いで、セクタ番号に基づき初期化ベクトルを生成するように、
前記DEKおよび初期化ベクトルを用いてデータを暗号化すること
を含む
、方法。
【請求項7】
前記DEKを用いた前記復号が、前記メタデータに含まれる前記初期化ベクトルを用いて実施される、請求項6に記載の方法。
【請求項8】
プロセッサと;前記プロセッサによってアクセス可能なメモリと;前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と;前記メモリに格納され、
元のデータ・セクタを圧縮
して、新しいデータ・セクタの部分を生成すること;
前記新しいデータ・セクタの部分を、データ暗号化キー(DEK)を用いて暗号化すること;
前記圧縮された前記新しいデータ・セクタの部分に、メタデータおよびパディング・データを付加すること;
データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を行うように前記プロセッサによってアクセス可能なデータと
を含むシステム。
【請求項9】
圧縮されている前記元のデータ・セクタが所定量未満に圧縮されている場合に、前記元のデータ・セクタを圧縮しないこと;
データ暗号キー(DEK)を用いて前記未圧縮の元のデータ・セクタを暗号化すること;および
前記暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送することをさらに含む、請求項8に記載のシステム。
【請求項10】
プロセッサと;前記プロセッサによってアクセス可能なメモリと;前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と;前記メモリに格納され、
メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること、
圧縮されている前記元のデータ・セクタが所定量未満に圧縮されている場合に、前記元のデータ・セクタを圧縮しないこと;
データ暗号キー(DEK)を用いて前記未圧縮の元のデータ・セクタを暗号化すること;ならびに
前記暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送すること
を行うように前記プロセッサによってアクセス可能なデータと
を含み、
前記ストレージ・システムは、前記DRKを用いて前記コンピュータ・システムから送信された前記データ・セクタのうち少なくとも一部を復号し、圧縮可能なパターンの有無を用いて、前記伝送されたデータが圧縮されているか否かを判定し;
前記データ・セクタが圧縮されていないと判定された際に、次いで、前記ストレージ・システムは、修正することなく前記未圧縮の元のデータ・セクタを格納し;
前記データ・セクタが圧縮されていると判定された際に、次いで、前記ストレージ・システムは、前記DRKを用いてホストによって送信された前記データ・セクタを復号し、前記復号された新しいデータ・セクタを格納し;
前記ストレージ・システムが圧縮能を内蔵している際に、前記ストレージ・システムは、前記圧縮可能なパターンを利用して格納スペースを節約する、
システム。
【請求項11】
プロセッサと;前記プロセッサによってアクセス可能なメモリと;前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と;前記メモリに格納され、
メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
前記ストレージ・システムから暗号化されたデータ・セクタを受信すること;
前記DRKを用いて、前記暗号化されたデータ・セクタのうち少なくとも1つのセクタを復号すること;
前記復号されたデータ・セクタのうち少なくとも一部分におけるパディング・データの存在に基づき、前記データ・セクタが圧縮データを含むか否かを判定すること;
前記データ・セクタが圧縮されている際に、前記コンピュータ・システムで、前記DEKを用いて前記圧縮データを復号すること、および前記コンピュータ・システムで、前記復号された圧縮データを解凍すること;ならびに
前記データ・セクタが圧縮されていない際に、前記コンピュータ・システムで、前記DEKを用いて、前記暗号化されたデータ・セクタを解凍することなく復号すること;
を行うように前記プロセッサによってアクセス可能なデータと
を含み、
前記メタデータは、前記元のデータ・セクタの圧縮長の値を含み、前記値は、前記DRKを用いて前記圧縮データを復号した後に、前記圧縮データを解凍するために使用される、
システム。
【請求項12】
プロセッサと;前記プロセッサによってアクセス可能なメモリと;前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と;前記メモリに格納され、
メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を行うように前記プロセッサによってアクセス可能なデータと
を含み、
前記ストレージ・システムは、
前記ストレージ・システムで、格納されたデータ・セクタがパディング・データを含むか否かを判定すること;
前記格納されたデータ・セクタがパディング・データを含む際に、前記ストレージ・システムで、前記DRKを用いて前記格納されたデータ・セクタを暗号化して、暗号化されたデータ・セクタを形成し、前記暗号化されたデータ・セクタを前記コンピュータ・システムに伝送すること;ならびに
前記格納されたデータ・セクタがパディング・データを含まない際に、前記格納されたデータ・セクタを前記暗号化されたデータ・セクタとして前記コンピュータ・システムに伝送すること
によって、暗号化されたデータ・セクタを伝送する
、システム。
【請求項13】
プロセッサと;前記プロセッサによってアクセス可能なメモリと;前記メモリに格納され、前記プロセッサによって実行可能なコンピュータ・プログラム命令と;前記メモリに格納され、
メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を行うように前記プロセッサによってアクセス可能なデータと
を含み、
重複排除をサポートするストレージ・システムに前記データ
・セクタが伝送される際に、前記コンピュータ・システムで、同一データの異なるデータ・セクタについて同一の初期化ベクトルが生成され、前記DEKによる今後の復号のための前記メタデータの一部として前記初期化ベクトルを追加すること;ならびに
前記データ
・セクタが圧縮可能ではない際に、次いで、セクタ番号に基づき初期化ベクトルを生成すること
によって、前記DEKおよび初期化ベクトルを用いてデータを暗号化することをさらに含む
、システム。
【請求項14】
前記DEKを用いた前記復号が、前記メタデータに含まれる前記初期化ベクトルを用いて実施される、請求項
13に記載のシステム。
【請求項15】
併せて具現化されるプログラム命令を有するコンピュータ・プログラムであって、前記プログラム命令は、
前記コンピュータ・システムで
、元のデータ・セクタを圧縮
して、新しいデータ・セクタの部分を生成すること;
前記コンピュータ・システムで、前記新しいデータ・セクタの部分を、データ暗号化キー(DEK)を用いて暗号化すること;
前記コンピュータ・システムで、前記圧縮された前記新しいデータ・セクタの部分に、メタデータおよびパディング・データを付加すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を含む方法を前記コンピュータ・システムに実施させるよう、コンピュータ・システムによって実行可能である、コンピュータ・プログラム。
【請求項16】
圧縮されている前記元のデータ・セクタが所定量未満に圧縮されている場合に、前記元のデータ・セクタを圧縮しないこと;
前記コンピュータ・システムで、データ暗号キー(DEK)を用いて前記未圧縮の元のデータ・セクタを暗号化すること;および
前記コンピュータ・システムで、前記暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送すること
をさらに含む、請求項15に記載のコンピュータ・プログラム。
【請求項17】
併せて具現化されるプログラム命令を有するコンピュータ・プログラムであって、前記プログラム命令は、
コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
圧縮されている前記元のデータ・セクタが所定量未満に圧縮されている場合に、前記元のデータ・セクタを圧縮しないこと;
前記コンピュータ・システムで、データ暗号キー(DEK)を用いて前記未圧縮の元のデータ・セクタを暗号化すること;ならびに
前記コンピュータ・システムで、前記暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送すること
を含む方法を前記コンピュータ・システムに実施させるよう、コンピュータ・システムによって実行可能であり、
前記ストレージ・システムは、前記DRKを用いて前記コンピュータ・システムから送信された前記データ・セクタのうち少なくとも一部を復号し、圧縮可能なパターンの有無を用いて、前記伝送されたデータが圧縮されているか否かを判定し;
前記データ・セクタが圧縮されていないと判定された際に、次いで、前記ストレージ・システムは、修正することなく前記未圧縮の元のデータ・セクタを格納し;
前記データ・セクタが圧縮されていると判定された際に、次いで、前記ストレージ・システムは、前記DRKを用い
てホストによって送信された前記データ・セクタを復号し、前記復号された新しいデータ・セクタを格納し;
前記ストレージ・システムが圧縮能を内蔵している際に、前記ストレージ・システムは、前記圧縮可能なパターンを利用して格納スペースを節約する、
コンピュータ・プログラム。
【請求項18】
併せて具現化されるプログラム命令を有するコンピュータ・プログラムであって、前記プログラム命令は、
コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること;
前記コンピュータ・システムで、前記ストレージ・システムから暗号化されたデータ・セクタを受信すること;
前記コンピュータ・システムで、前記DRKを用いて、前記暗号化されたデータ・セクタのうち少なくとも1つのデータ・セクタを復号すること;
前記コンピュータ・システムで、前記復号されたデータ・セクタのうち少なくとも一部分におけるパディング・データの存在に基づき、前記データ・セクタが圧縮データを含むか否かを判定すること;
前記データ・セクタが圧縮されている際に、前記コンピュータ・システムで、前記DEKを用いて前記圧縮データを復号すること、および前記コンピュータ・システムで、前記復号された圧縮データを解凍すること;ならびに
前記データ・セクタが圧縮されていない際に、前記コンピュータ・システムで、前記DEKを用いて、前記暗号化されたデータ・セクタを解凍することなく復号すること;
を含む方法を前記コンピュータ・システムに実施させるよう、コンピュータ・システムによって実行可能であり、
前記メタデータは、前記元のデータ・セクタの圧縮長の値を含み、前記値は、前記DRKを用いて前記圧縮データを復号した後に、前記圧縮データを解凍するために使用される、
コンピュータ・プログラム。
【請求項19】
併せて具現化されるプログラム命令を有するコンピュータ・プログラムであって、前記プログラム命令は、
コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;ならびに
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること
を含む方法を前記コンピュータ・システムに実施させるよう、コンピュータ・システムによって実行可能であり、
前記ストレージ・システムは、
前記ストレージ・システムで、格納されたデータ・セクタがパディング・データを含むか否かを判定すること;
前記格納されたデータ・セクタがパディング・データを含む際に、前記ストレージ・システムで、前記DRKを用いて前記格納されたデータ・セクタを暗号化して、暗号化されたデータ・セクタを形成し、前記暗号化されたデータ・セクタを前記コンピュータ・システムに伝送すること;ならびに
前記格納されたデータ・セクタがパディング・データを含まない際に、前記格納されたデータ・セクタを前記暗号化されたデータ・セクタとして前記コンピュータ・システムに伝送すること
によって、暗号化されたデータ・セクタを伝送する
、コンピュータ・プログラム。
【請求項20】
併せて具現化されるプログラム命令を有するコンピュータ・プログラムであって、前記プログラム命令は、
コンピュータ・システムで、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成することによって、前記元のデータ・セクタを圧縮すること;
前記コンピュータ・システムで、データ削減キー(DRK)を用いて、前記新しいデータ・セクタを暗号化すること;
前記コンピュータ・システムで、前記暗号化された新しいデータ・セクタをストレージ・システムに伝送すること;
重複排除をサポートするストレージ・システムに前記データ
・セクタが伝送される際に、前記コンピュータ・システムで、同一データの異なるデータ・セクタについて同一の初期化ベクトルが生成され、前記DEKによる今後の復号のための前記メタデータの一部として前記初期化ベクトルを追加すること;ならびに
前記データ
・セクタが圧縮可能ではない際に、次いで、セクタ番号に基づき初期化ベクトルを生成すること;
によって、前記DEKおよび初期化ベクトルを用いてデータを暗号化するこ
と
を含む方法を前記コンピュータ・システムに実施させるよう、コンピュータ・システムによって実行可能であり、
前記DEKを用いた前記復号は、前記メタデータに含まれる前記初期化ベクトルを用いて実施される、
コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はキー圧縮可能な暗号化に関する。
【背景技術】
【0002】
多くの現代のストレージ・システムは、スペースを節約しストレージをよりよく利用するために、圧縮もしくは重複排除またはその両方技術を使用するデータ削減能に内蔵されている。このやり方により、格納されている実際の内容に応じて、ストレージのコストを大幅に削減することができる。しかし、データセンタおよびクラウドストレージにおけるやがて到来する傾向とは、ホスト側暗号化を使用すること、すなわち、データをストレージに送信する前にアプリケーション・サーバから離れたまま暗号化して、エンドツーエンド暗号化を配信することである。このようなやり方は、セキュリティ上の利益をもたらすものの、ストレージ・システムに到達するデータは既に暗号化された形式であり、もはや圧縮できない(典型的な暗号化データは圧縮または重複排除の可能性を持たない)。
【0003】
そのため、圧縮および重複排除の利益を維持しつつ、ホスト側暗号化を提供しようとする場合に問題が生じる。従来のアプローチの1つは、暗号化される前にホスト内でデータを圧縮することである。しかし、これは新たな難題を引き起こす-すなわち、圧縮データが不定の長さであり、ストレージ上でデータ・レイアウト(例えば、ログ構造アレイおよびアドレスマップなど)を管理するために複雑なデータ構造/アルゴリズムを必要とする。これは、データ内のセクタのランダムな読み取りをサポートしたい場合に特に当てはまる。これらのマッピング構造は、圧縮支持体を内蔵しているストレージ・システムに組み込まれる機構の種類である。しかし、このような機構は、典型的には、ホスト側では利用できない。
【0004】
従来の解決策として存在するものは、ホスト側で圧縮および暗号化を行うが、データの圧縮性/重複排除の属性に関する情報を漏洩させる。そのため、ホストとストレージとの間で通信を提供しようとして、それについて盗聴している敵対者がデータの圧縮性について殆ど知らないものとなるようにするときに、問題が生じる。データ圧縮性に関する情報は、暗号化されていないデータに関するいくつかの情報を得ようとする敵対者によって使用される可能性があった。
【0005】
したがって、データの圧縮/重複排除に関する情報を漏洩しないホストとストレージ・システムとの間の通信を提供しつつ、圧縮および重複排除の利益を維持しながら、ホスト側暗号化を提供する技術の必要性が生じる。
【発明の概要】
【0006】
本システムおよび方法の実施形態は、圧縮および重複排除の利益を維持し、データ圧縮性/重複排除の属性に関する情報を漏洩しないホストとストレージ・システムとの間の通信を提供しながら、ホスト側暗号化を提供するための技法を提供することができる。
【0007】
例えば、一実施形態では、方法は、プロセッサと、プロセッサによってアクセス可能なメモリと、メモリに格納されかつプロセッサによって実行可能なコンピュータ・プログラム命令と、メモリに格納されかつプロセッサによってアクセス可能なデータとを含むコンピュータ・システムに実装されてもよく、本方法は、(1)数バイトのメタデータと圧縮可能なデータのパディング(例えばゼロのシーケンス)とを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2の部分とからなる新しいセクタを作り出すことと、(2)データ削減キー(DRK)を用いて新しい変換済みデータ・セクタをコンピュータ・システムで暗号化した後、暗号化された新しいデータ・セクタをコンピュータ・システムでストレージ・システムに伝送することとによって、新しいデータ・セクタをコンピュータ・システムで生成することを含んでいてもよい。これらは、読出し動作時のホストでの活動であり、書込み中のセクタは十分に圧縮可能である。
【0008】
実施形態では、元のデータ・セクタが所定量を超えて圧縮できない場合、本方法は、コンピュータ・システムで、データ暗号キー(DEK)を用いて未圧縮の元のデータ・セクタを暗号化し、コンピュータ・システムで、暗号化された未圧縮の元のデータ・セクタをストレージ・システムに伝送することができる。これらは、読出し動作時のホストでの活動であり、書込み中のセクタは十分に圧縮可能ではない。
【0009】
ストレージ・システムは、DRKキーを用いて、ホスト側により送信されたセクタを復号しようと試みることができる。パディング・データの有無は、伝送されたデータが圧縮されているか否かを判定するためにストレージ・システムによって使用され、もし圧縮されていれば、復号された新しいデータ・セクタを格納し、圧縮されていなければ、ホストによって送信された元のセクタに戻り、修正することなくそれを格納する。これらは、読出し動作時のストレージ・システムでの活動である。
【0010】
ホスト側から送信されたセクタが本来圧縮可能であったか否かを判定する際に、ストレージ・システムは、DRKを用いてセクタの先頭のみを復号しようと試行することができる。セクタの先頭が圧縮可能なデータ・パターン(例えばゼロのシーケンス)を含まない場合に、次いでストレージは、セクタの残りを復号する必要はなく、さらに修正することなく格納することができる。
【0011】
本方法は、ストレージ・システムで、要求されたセクタが圧縮可能なパディング・データのシーケンス(例えばゼロのシーケンス)を含有するか否かをチェックし、含有する場合、DRKを用いてそれを暗号化してホストに送信し、含有していない場合、それをそのままホストに送信することを含んでいてもよい。これらは、読出し動作時のストレージ・システムでの活動である。
【0012】
本方法は、コンピュータ・システムで、ストレージ・システムからのデータのセクタを受信することと;コンピュータ・システムで、DRKを用いて、暗号化されたデータ・セクタの少なくとも一部を復号することと;コンピュータ・システムで、圧縮可能なパディング・データの有無に基づき、データ・セクタが圧縮データを含むか否かを判定することとを、さらに含んでいてもよい。セクタが圧縮されていると判定された場合、本方法は、コンピュータ・システムで、DEKを用いて圧縮データを復号し、コンピュータ・システムで、復号された圧縮データを解凍する。データ・セクタが圧縮されていないと判定された場合、本方法は、コンピュータ・システムで、暗号化されたデータ・セクタを復号する。これらは、リード動作時のホストでの動作であるこれらは、読出し動作時のホストでの活動である。
【0013】
圧縮セクタ内のメタデータは、圧縮されている元のデータ・セクタの圧縮長を標示する値を含むことがあり、この値は、解凍アルゴリズムに用いるパラメータとしてホストが使用することができる。ストレージ・システムが重複排除をサポートする場合、本方法は、コンピュータ・システムで、DEKおよび生成された初期化ベクトルを用いてデータを暗号化することをさらに含むことがあり、この初期化ベクトルは、同一データのセクタについて同一であるセクタ・データから(例えばキー付きハッシュを用いて)生成される。
【0014】
一実施形態では、システムは、プロセッサと;プロセッサによってアクセス可能なメモリと;メモリに格納され、プロセッサによって実行可能なコンピュータ・プログラム命令と;メモリに格納されるデータであって、元のデータ・セクタを圧縮すること、メタデータおよびパディング・データを含む第1の部分と、データ暗号化キー(DEK)を用いて圧縮および暗号化されている元のデータ・セクタを含む第2のデータとを含む新しいデータ・セクタを生成すること、データ削減キー(DRK)を用いて新しいデータ・セクタを暗号化すること、ならびに暗号化された新しいデータ・セクタをストレージ・システムに伝送すること、を行うようにプロセッサによってアクセス可能であるデータとを含む。
【0015】
一実施形態では、コンピュータ・プログラム製品は、それにより具現化されるプログラム命令、すなわちコンピュータによって実行可能なプログラム命令を有する非一時的コンピュータ可読ストレージを含むことがあり、プログラム命令は、コンピュータ・システムで元のデータ・セクタを圧縮すること、データ暗号化キー(DEK)を用いて、メタデータおよびパディング・データを含む第1の部分と、圧縮および暗号化されている元のデータ・セクタを含む第2の部分とを含む新しいデータ・セクタを生成すること、コンピュータ・システムで、データ削減キー(DRK)を用いて、新しいデータ・セクタを暗号化すること、ならびにコンピュータ・システムで、暗号化された新しいデータ・セクタをストレージ・システムに伝送すること、を含む方法をコンピュータに実施させるものである。
【0016】
圧縮および重複排除の利益を維持し、データの圧縮性/重複排除の属性に関する情報を漏洩しない通信を提供しながら、データの暗号化を提供するための技術について、以下に説明する。
【0017】
本発明の詳細は、その構造と動作との両方に関して、同様の参照番号および名称が同様の要素を指す添付図面を参照することによって、最もよく理解することができる。
【図面の簡単な説明】
【0018】
【
図1】本技術の実施形態によるシステムの例示的なブロック図である。
【
図2】本システムおよび方法の実施形態による、ホスト側の単一セクタの書込み動作の例示的な擬似コード図である。
【
図3】本システムおよび方法の実施形態による、ストレージ側の単一セクタの書込み動作の例示的な擬似コード図である
【
図4】本システムおよび方法の実施形態による、ストレージ側の単一セクタの読出し動作の例示的な擬似コード図である
【
図5】本システムおよび方法の実施形態による、ホスト側の単一セクタの読出し動作の例示的な擬似コード図である
【
図6】本明細書に記載の実施形態に含まれる処理を実装することができる、コンピュータ・システムの例示的なブロック図である
【発明を実施するための形態】
【0019】
本システムおよび方法の実施形態は、データの圧縮性/重複排除の属性に関する情報を漏洩しないホストとストレージ・システムとの間の通信を提供しつつ、圧縮および重複排除の利益を維持しながら、ホスト側暗号化を提供するための技法を提供することができる。実施形態は、「キー圧縮可能な暗号化」、すなわち、データ削減キーを保有するストレージ・システムが、データの圧縮および重複排除の利益のいくらかを得ることを可能にし得る暗号化方法を実施することができる。さらに、データ削減キーを保有しないいかなる敵対者も、データのデータ削減の属性に関する情報を全く学習しないかまたは殆ど学習しないものとなる。
【0020】
実施形態では、ストレージ・コントローラに書き込まれた暗号化された各セクタは、その元のセクタのサイズおよびオフセットと共に書き込まれ、データ・レイアウトを担うストレージを保ち、圧縮されたブロックを管理する必要に気付かないホストを保つものとしてよい。実施形態は、データ・セクタを(もし十分に圧縮可能であれば)圧縮し、2つの部分からなる新しいセクタ(元のセクタと同じ長さを有する)を作成することができる。一方の部分は、例えば、いくつかのメタデータ・バイトと、圧縮可能なパターン(例えば、ゼロのシーケンス)とを含むことができる。第2の部分は、データ暗号キー(DEK)を用いて暗号化された圧縮データを含んでいてもよい。最も一般的な設定では、これらの2つの部分は連結され、次いでデータ減少キー(DRK)を用いて暗号化され、ストレージ・システムに送られる。実施形態では、DEKおよびDRKは、暗号化と復号との両方に使用される対称キーとしてもよいし、他の実施形態では、非対称または異なるキーを、暗号化および復号(例えば、プライベート・キーおよび公開キー)に用いてもよい。
【0021】
次いで、DRKを保持するストレージ・システムは、第2の暗号化層を復号してデータを格納することができる。ストレージ・システムがデータ圧縮能を有する場合、セクタを(例えば、圧縮可能なパディングを除去することによって)圧縮形態で格納してもよい。ストレージ・システムは、決してデータを明瞭に見ないものとしてよく、DEKへのアクセスを有していなくてもよいが、データ圧縮性を学習しない。盗聴者は、(圧縮されずに暗号化されているかのように)データについて何も学習しない。付加的な利益は、データ削減能を特定のストレージ・システムに結び付ける能力である。さらに、実施形態は、重複排除のサポートおよび性能の最適化を含めた数多くの最適化を含むことができる。
【0022】
本技術の実施形態によるシステム100の例示的なブロック図を
図1に示す。この例では、システム100は、ホスト・システム102、ストレージ・システム104、およびネットワーク106を含むことがある。典型的には、ホスト・システムは、ストレージ・システム104上にセクタ108などのデータを格納することができる1つまたは複数のコンピュータ・システムとしてよく、ストレージ・システム104からデータを読み出すものとしてよい。ホスト・システム102は、パーソナル・コンピュータ、ワークステーション、スマートフォン、タブレット・コンピュータ、サーバ・システムなどのような任意のタイプのコンピュータ・システムを含むことがある。同様に、ストレージ・システム104は、パーソナル・コンピュータ、ワークステーション、スマートフォン、タブレット・コンピュータ、サーバ・システムなどの任意のタイプのコンピュータ・システムを含むことがあるが、典型的には、大量のデータを格納するためのサーバ・システムを含む。ネットワーク106は、ホスト・システム102とストレージ・システム104との間の通信を提供してもよい。このような通信は、双方向性であっても直接的または間接的であってもよい。ネットワーク106は、ローカル・エリア・ネットワーク、広域ネットワーク、標準または専有のネットワーク、私用または公用のネットワークなどの任意の数および任意の組合せのネットワークを含み得るが、典型的にはインターネットを含んでいることがある。
【0023】
例えば、セクタ書込み動作において、ホスト・システム102は、セクタ108にホスト書込み処理110を実行して、処理されたセクタをストレージ・システム104に送信することによって、セクタ108をストレージ・システム104に書き込むことができ、ストレージ・システム104は、受信された処理済みセクタへのストレージ・システム書込み処理112を実施し、その結果得られたデータをセクタ114として記憶することができる。同様に、ホスト・システム102は、格納されたセクタ112へのストレージ・システム読出し処理118をストレージ・システム104に実施させて、処理されたセクタをホスト・システム102に伝送することによって、格納されたセクタ116をストレージ・システム104から読み出し、ホスト・システム102は、受信した処理済みセクタへのホスト・システム読出し処理120を実施して、結果データであるセクタ122を得ることができる。ホスト・システム102への書込み処理110および読出し処理120は、データ暗号化キー(DEK)124を用いて実施されてもよく、いくつかの状況では、下記に記載されるように、データ削減キー(DRK)126を用いて実施されてもよい。ストレージ・システム104への書込み処理112および読出し処理118は、データ削減キー(DRK)126を用いて実施されてもよい。ストレージ・システム104は、データ暗号化キー(DEK)124を使用せず、これに関する知識を持たない。システム100の動作を、
図2、
図3、
図4,および
図5を参照して下記にさらに記載する。
【0024】
概して、処理の実施形態は、各データ・ブロック、セクタ、またはチャンク毎にホストで行われてもよい。簡単にするために、用語セクタを本明細書に用いることができるが、用語セクタは物理的格納セクタのみを指すのではなく、むしろ任意のブロック、セクタ、チャンクまたは他の量のデータを指すことを理解されたい。データ・セクタは、DEKを用いて圧縮および暗号化されてもよい。次いで、暗号化および圧縮されたセクタ・データは、圧縮可能なパディングと連結されて、元の長さのセクタを形成してもよい。また、いくつかのメタデータをパディングの一部として付加してもよい。新しいパディングされたブロックは、次いで、DRKにより暗号化されて、ストレージに送信されてもよい。
【0025】
本技術による、データをストレージ・システム104に書き込むホスト・システム・プロセス200の例示的なフロー図を、
図2に示す。
図1と併せると最も良く見える。ホスト側書込みプロセス200は202で開始することができ、202では、格納すべきデータのセクタ(またはブロックまたはチャンク)108を圧縮することができる。xを圧縮後のセクタのサイズとする。204では、セクタ・データ108がkバイト超圧縮されていない場合に、次いで、元の未圧縮のセクタ108は、データ暗号化キー(DEK)124を用いて暗号化されてもよく、暗号化された未圧縮のセクタは、ストレージ・システム104に格納のために送信されてもよい。ステップ206では、セクタ108が204でk以上のバイトで圧縮された場合に、次いで、プレフィックス(またはサフィックス、本技術をいずれかまたは両方に適用されてもよい)が作成されてもよく、このプレフィックスは、元のセクタ・サイズから圧縮後のセクタのサイズを引いたもの(SECTOR_SIZE-x)に等しいサイズを有する。このプレフィックスは、メタデータ(例えば圧縮長を符号化したもの)と、圧縮可能なシーケンス、例えばゼロのシーケンスとを足し合わせて含むことができる。208では、サイズのプレフィックス(SECTOR_SIZE-x)210は、DEK212を用いて暗号化されているxバイトの圧縮セクタと連結されてもよい。214では、連結されたデータは、データ削減キー(DRK)126を用いて暗号化されてもよく、暗号化された圧縮セクタ・データは、ストレージ・システム104に格納のために送信されてもよい
【0026】
暗号化方法に応じて、DEKを用いて暗号化され得るメッセージのサイズに制限がある場合がある。その場合には、値xは、圧縮後のセクタのサイズを、DEKを用いて暗号化できるサイズに丸めて示す。
【0027】
なお、ストレージ・システムに送信される全てのバイトは、ホストによって暗号化されてもよい。その結果、ホストとストレージ・システムとの間の通信を盗聴する敵対者は、データの圧縮性に関する情報を得ない。
【0028】
ストレージ・システム書込みプロセス300は302で開始することができ、302では、ストレージ・システム104は、格納すべきデータを受信することができ、受信データを復号するためにDRKを用いることができる。304では、ストレージ・システム104は、復号された受信データを調べることができる。プレフィックスが、十分に長い圧縮可能なシーケンス、例えばゼロのシーケンスを含まない場合、これは圧縮可能なセクタではなく、DRK復号前の受信データ、すなわちDEK暗号化された元のセクタは、格納されてもよい114。あるいは、306で、復号された受信データが格納されてもよい。これにより、(SECTOR_SIZE-x)バイトの圧縮可能なプレフィックス(暗号化されていない)308と、DEK108を用いて暗号化されたxバイトの圧縮セクタ310とを含む、格納データ114が得られる
【0029】
なお、ストレージ・システムに書き込まれる暗号化されていないプレフィックスは、圧縮可能なパターン(例えばゼロのシーケンス)を含む。実施形態では、ストレージ・システムは、省スペース化につながるデータ削減能を有していてもよい。
【0030】
さらに、実施形態は、同一のセクタ(プレーンテキスト)を同一の暗号化セクタとしてストレージ・システムに書き込むことができる、重複排除しやすい暗号化を用いてもよい。実施形態では、このストレージ・システムは、重複排除に基づくデータ削減能を有していてもよく、それにより、さらに進んだ省スペース化に至る可能性がある。
【0031】
本技術によるストレージ・システム104からデータを読み出すプロセス400の例示的なフロー図を、
図4に示す。
図1と併せると最も良く見える。ストレージ・システム読出しプロセス400は402で開始することができ、402では、格納セクタ116がkバイトのパディング・プレフィックスを含む場合に、次いで、セクタ116は、DRK126を用いて暗号化されて、ホスト102に送信されてもよい。あるいは、404で、セクタ116がkバイトのパディング・プレフィックスを持たない場合に、セクタ116は圧縮されず、セクタ116はそのままホスト102に送信される。
【0032】
ホスト側読み取りプロセス500は502で開始することができ、502では、ストレージ・システム104から受信されたデータは、DRK126を用いて復号化されてもよい。504では、これがパディング・プレフィックスを含まない復号されたセクタを生じた場合に、DEK暗号化されたセクタである(DRKによる復号の前の)ストレージ・システム104からの元の受信データは、次いで、DEK124を用いて復号されてセクタ122を得ることができる。
【0033】
506で、あるいは、復号されたセクタがパディング・プレフィックスを含まない場合、次いで、メタデータは、例えば、圧縮されたセクタのサイズを示す2バイトをプレフィックスから得ることができる。メタデータは、解凍のためのパラメータとして使用されてもよい。508では、DEK124を用いて、圧縮セクタを復号して圧縮セクタを形成することができる。次に、508で、メタデータ308を用いて、圧縮セクタを全SECTOR_SIZEバイトに解凍してセクタ(122)を形成することができる
【0034】
多くの暗号化機構では、セクタ暗号化の結果は、データ、暗号化キー、および初期化ベクトル(IV)に依存し得る。IVは、同一のプレーンテキスト・セクタが同じ暗号化セクタに暗号化されるのを防止するために使用されてもよい。実施形態では、IVは、例えば、セクタ番号から計算することができる。
【0035】
本システムおよび方法の実施形態は、重複排除を支援する方法で、圧縮可能なデータを暗号化してもよい。重複排除を達成するために、同一のプレーンテキスト・セクタは、ストレージ・システム上の同一の暗号化セクタにマッピングされるものとするべきである。したがって、実施形態では、IVは、セクタ番号から導出されない場合がある。代わりに、実施形態は、プレーンテキスト・データのキー付きハッシュ(例えばDEK)からIVを導出してもよい。例えば、実施形態は、セクタ・データに連結されたDEKのSHA256を用いてもよい。このIVは、復号を可能にするために、暗号化されたセクタに追加されてもよい。このため、ホストとストレージ・システムとの間のプロトコルが変更されていない場合には、セクタ内の空きスペースを使用してIVデータを格納することができるため、圧縮可能なデータのみを実施してもよい。実施形態では、DRKによる暗号化により、重複排除の機会を隠すことができ、したがって、標準的なセクタベースのIVを用いるものとなる。
【0036】
実施形態は、圧縮不能なセクタに対処することができる。書込み動作時に、ホストが、セクタが圧縮不能であると判定した場合に、実施形態は、セクタ番号から導出されたIVを用いてDEKを用いる前に、セクタを暗号化することができる。この暗号化されたセクタは、ストレージ・システムに送信されてもよい。ストレージ・システムは、この暗号化されたセクタを圧縮セクタとして扱うか未圧縮セクタとして扱うかを決定することができる。未圧縮である場合には、次いで、そのまま書き込むべきとなる。圧縮されている場合には、次いで、プリフィックス・セクタは、ストレージに書き込まれる前に復号されてもよい。セクタが圧縮可能であるか否かを判定するための1つの方法は、DRKを用いて、暗号化されたセクタの開始を復号しようと試行することである。その結果が圧縮可能なパターンを含んでいれば、次いで、セクタは圧縮可能である。
【0037】
本システムおよび方法の実施形態で実装され得る追加の特徴としては、例えば、ホストが全ての圧縮可能なセクタを1個のゼロバイトで開始させることによって、圧縮可能なセクタをマークする(これにより、DRK暗号化されたプレフィックスのサイズを1バイト減少させる)ことができるという、性能向上を挙げることができる。ストレージは、ゼロバイトで開始しないいかなるセクタも圧縮可能ではないことを確実に知るものとなる。ストレージがゼロから始まるセクタを受信した場合には、それが圧縮可能ではない可能性があり、暗号化されたセクタが偶然にもゼロバイトで開始する。ストレージは、上述したように、DRKを用いてプレフィックスの開始を復号しようと試行することによって、最終的な決定を行うことができる。これにより、セクタが圧縮可能であるか否かについて(しかし圧縮性のレベルについてではない)いくらかの情報が漏洩することがあるが、圧縮不能なセクタに対する不要な復号の試行の数を大幅に減少させ得る。
【0038】
さらに、セクタが圧縮可能であることを標示するために1バイトを送信するのではなく、実施形態は、複数個のゼロバイトを送信してもよい。例えば、圧縮可能なセクタが3個のゼロバイトで表示されている場合には、セクタが圧縮可能なセクタとして誤って識別されている(DRKによりそれを復号するようストレージ・システムを不必要に試行させることに繋がる)可能性は、256^3における1である。
【0039】
別の実施形態は、チャンクがDRK暗号化されているか否かを標示するメタデータと、DRKキーが使用されたことを標示するキー_IDとを含んでいてもよい。例えば、非破壊的なキー回転を可能にするために、1対のビットを異なるキーに追加してもよい。
【0040】
実施形態では、ホストとストレージ・システムとの間のプロトコルは、例えば、セクタが圧縮可能か否かを標示する追加の単一ビットを伝えるように変更されてもよい。これにより、DRKによる圧縮不能なセクタの不要な復号を防止するものとなる。
【0041】
実施形態は、重複排除をサポートしないストレージ・システムを含んでいてもよい。このような実施形態では、全ての暗号化は、セクタ番号から導出されたIVを利用することができ、すなわち、同一のプレーンテキスト・セクタを同一の暗号化されたセクタに確実に変換するものとする必要はない。ストレージ・システムが重複排除をサポートしていない実施形態では、同一の暗号化されたセクタを同一の暗号化セクタに変換することができるため、暗号化されたデータを再び暗号化して、(同一の暗号化されたセクタを識別することによって)データの重複排除性に関する情報を盗聴者が得るのを防止することができる。したがって、重複排除をサポートしない実施形態では、ホストは、DRKによりプレフィックスのみを暗号化することができる。圧縮データは、DEKにより1回のみ暗号化されることがある(さらに別のDRK暗号化を行わない)。
【0042】
実施形態では、ストレージは、プレフィックス全体を復号しない場合がある。それは、メタデータ・バイトおよび圧縮可能なパターン(例えば30個のゼロバイト)を含む短いプレフィックスまたはプレフィックスの一部のみを復号することがある。圧縮可能なパターンは、データが実際に圧縮された十分な証拠として機能することがあり、メタデータから、完全な圧縮可能なパターンの長さが決定されてもよい。そのため、プレーンテキストが圧縮可能なパターンであることをストレージが既に知っている際に、暗号化された圧縮可能なパターンの残りの部分を復号する必要はないものとなる。読出しの間に、同じことをホスト側の動作にも適用することができる
【0043】
実施形態では、ストレージ・システムは、そのデータ削減能を改善するために、ホスト側で圧縮が行われるという事実を利用してもよい。ストレージ・システムが圧縮セクタを識別する場合、次いで、圧縮可能なパターンとそれに続いて(さらに圧縮できない)暗号化された圧縮データのシーケンスとがあることを直ちに学習する。圧縮不能なデータを圧縮しようと試行するストレージ・システムには意味がない。かといって、高度な圧縮アルゴリズムを用いて、圧縮可能なパターン(例えばゼロのシーケンス)を圧縮しようと試みることにも意味がなく、圧縮可能なパターンが単に除去されるのみで格納されないこともある。読出し時に、セクタがSECTOR_SIZEよりも短い場合には、次いで、ストレージは、DRKにより再暗号化する前に、パディング・プレフィックスを満たすことができる。
【0044】
実施形態は、重複排除をサポートしないストレージ・システムを含んでいてもよい。このような実施形態では、圧縮セクタのプレフィックスは、データのハッシュ(初期化ベクトル)を含むことができる。ストレージ・システムが重複排除能を有する場合には、次いで、重複排除のためにこのハッシュを利用してもよい。これにより以下の2つの利点がある:a)ハッシュを再計算する必要性をストレージ・システムから除くことができる、ならびにb)ストレージが典型的にはDRKを使用してデータ部分を復号するところ、同一のセクタが既に存在していると(ハッシュに基づいて)ストレージ・システムが判断した場合には、圧縮データを復号する必要は全くない。
【0045】
記載されたキー圧縮可能なアルゴリズムによって、圧縮可能なセクタのうち同一のセクタのシーケンスを識別するための重複排除能を有するストレージが実現する。しかし、圧縮不能なセクタのうち、または圧縮可能なセクタと圧縮不能なセクタとの混合物のうち、同一のセクタのシーケンスを識別することはできない。実施形態は、DRKを用いて暗号化される圧縮不能なセクタのハッシュを含むように、ホストとストレージ・システムとの間のプロトコルを変更することによって、この機能性を提供してもよい。これらのハッシュがストレージ・システム上で復号されると、ストレージ・システムは、全ての暗号化されたデータに対して重複排除を行うために、圧縮可能なセクタと圧縮不能なセクタとの両方のハッシュに関する情報を利用することができる。
【0046】
本明細書に記載の実施形態に含まれるプロセスが実装され得るコンピュータ・システム500の例示的なブロック図を、
図5に示す。コンピュータ・システム500は、内蔵プロセッサ、チップ上のシステム、パーソナル・コンピュータ、ワークステーション、サーバ・システム、ミニコンピュータ、またはメインフレームコンピュータなどの1つまたは複数のプログラムされた汎用コンピュータ・システムを用いて、または分散型ネットワーク・コンピューティング環境で、実装されてもよい。コンピュータ・システム500は、1つまたは複数のプロセッサ(CPU)502A~502Nと、入出力回路504と、ネットワーク・アダプタ506と、メモリ508とを含んでいてもよい。CPU502A~502Nは、現在の通信システムおよび方法の機能を実施するために、プログラム命令を実行する。典型的には、CPU502A~502Nは、INTEL CORE(登録商標)プロセッサなどの1つまたは複数のマイクロプロセッサである。
図5は、コンピュータ・システム500が単一のマルチ・プロセッサ・コンピュータ・システムとして実装される実施形態を説明し、このシステムでは、マルチ・プロセッサ502A~502Nがメモリ508、入出力回路504、およびネットワーク・アダプタ506などのシステム・リソースを共有する。しかし、本発明の通信システムおよび方法はまた、コンピュータ・システム500が、単一プロセッサ・コンピュータ・システム、マルチ・プロセッサ・コンピュータ・システム、またはそれらの混合物であり得る複数のネットワーク化されたコンピュータ・システムとして実装される、実施形態を含む。
【0047】
入出力回路504は、コンピュータ・システム500からデータを入力またはデータを出力する能力を提供する。例えば、入出力回路は、キーボード、マウス、タッチパッド、トラックボール、スキャナ、アナログ-デジタル変換器などの入力デバイス、ビデオアダプタ、モニタ、プリンタなどの出力デバイス、モデムなどの入出力デバイス、ネットワーク・アダプタ506、ネットワーク510とのインターフェース・デバイス500を含んでいてもよい。ネットワーク510は、任意の公衆または専用のLANまたはWANとすることができ、そのようなものとしてはインターネットが挙げられるがそれに限定されない。
【0048】
メモリ508は、コンピュータ・システム500の機能を実施するためにCPU502により実行されるプログラム命令と、CPU502により使用されて処理されるデータとを格納する。メモリ508としては、例えば、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、プログラム可能な読出し専用メモリ(PROM)、電気的に消去可能なプログラム可能な読出し専用メモリ(EEPROM)、フラッシュメモリなどの電子メモリデバイス;および磁気ディスク・ドライブ、テープ・ドライブ、光学ディスク・ドライブなどの電気機械メモリであって、インテグレーティド・ドライブ・エレクトロニクス(IDE)インターフェースに用いられ得るもの、またはそれらの変形もしくは強化物、例えばエンハンストIDE(EIDE)もしくはウルトラ・ダイレクト・メモリ・アクセス(UDMA)など;またはスモール・コンピュータ・システム・インターフェース(SCSI)ベースのインターフェース、またはそれらの変形もしくは強化物、例えばファスト-SCSI、ワイド-SCSI、ファスト・アンド・ワイド-SCSIなど;またはシリアル・アドバンスト・テクノロジー・アタッチメント(SATA)、またはそれらの変形もしくは強化物;またはファイバ・チャネル・アービトレーティッド・ループ(FC-AL)インターネットを挙げることができる。
【0049】
メモリ508の内容は、コンピュータ・システム500が実施するようプログラムされる機能に依存して変化し得る。
図5に示される例では、例示的なメモリの内容が、ホスト・システム512とストレージ・システム514との両方に示されている。しかし、これらのルーチンは、周知の工学的な考慮に基づき、これらのルーチンに関連するメモリ内容と併せて、1つのシステムまたはデバイスに含まれていなくてもよいが、複数のシステムまたはデバイスの間で分配され得ることを、当業者は理解するものとなる。本発明の通信システムおよび方法は、そのような配置のいずれかおよび全てを含むことができる
【0050】
図5に示される例では、メモリ508は、ホスト・システム512のために、読出しルーチン516、書込みルーチン518、および格納すべきデータ520を含み、ストレージ・システム514のために、読出しルーチンs522、書込みルーチン524、および格納されデータ526、および操作システム528を含む。ホスト・システム読出しルーチン516は、上述のようなホスト・システム読出しプロセスを実装するソフトウェア・ルーチンを含んでいてもよい。ホスト・システム書込みルーチン518は、上述のようなホスト・システム書込みプロセスを実施するソフトウェア・ルーチンを含んでいてもよい。格納すべきデータ520は、上述のように、ストレージ・システムに格納されるべきホスト・システム上のデータを含んでいてもよい。ストレージ・システム読出しルーチン522は、上述のようなストレージ・システム読出しプロセスを実施するソフトウェア・ルーチンを含んでいてもよい。ストレージ・システム書込みルーチン524は、上述のようなストレージ・システム書込みプロセスを実施するソフトウェア・ルーチンを含んでいてもよい。格納されたデータ526は、上述したように、ストレージ・システムに格納されたホスト・システムからのデータを含んでいてもよい。オペレーティング・システム・ルーチン528は、システム全体の機能性を提供することができる
【0051】
図5に示されるように、本発明の通信システムおよび方法は、マルチ・プロセッサ、マルチタスキング、マルチプロセス、もしくはマルチスレッド・コンピューティング、またはそれらの組合せを提供する1つまたは複数のシステム上での実装、ならびに単一のプロセッサ、単一のスレッド・コンピューティングのみを提供するシステム上の実装を含むことができる。マルチ・プロセッサ・コンピューティングは、1つまたは複数のプロセッサを用いてコンピューティングを実施することを含む。マルチタスキング・コンピューティングは、1つを超えるオペレーティング・システム・タスクを用いてコンピューティングを実施することを含む。タスクとは、実行中のプログラムとオペレーティング・システムにより用いられる記帳情報との組合せを参照する、オペレーティング・システム概念である。プログラムが実行されるたびに、オペレーティング・システムは、そのための新しいタスクを作成する。このタスクは、プログラムをタスク番号で識別し、それに他の記帳情報を付加する、プログラムのエンベロープのようなものである。Linux(登録商標)、UNIX(登録商標)、OS/2(登録商標)、およびWindows(登録商標)を含む数多くのオペレーティング・システムは、多くのタスクを同時にランすることができ、マルチタスキング・オペレーティング・システムと呼ばれる。マルチタスキングとは、1つを超える実行可能なものをオペレーティング・システムが同時に実行する能力である。それぞれの実行可能なものは、それ自体のアドレス空間内でランしており、このことは、これらの実行可能なものが、それらのメモリのいずれかを共有する方法を持たないことを意味する。どんなプログラムでも、システム上でランする任意の他のプログラムの実行を損なうことが不可能であるため、このことは利点を有する。しかし、このプログラムは、オペレーティング・システムによる(またはファイルシステムに格納されているファイルを読み出すことによる)ことを除いて、任意の情報を交換する術がない。いくつかのオペレーティング・システムは、用語のタスクとプロセスとを区別しているが、この2つがしばしば互換的に用いられる際に、マルチプロセス・コンピューティングは、マルチタスク・コンピューティングに類似している。
【0052】
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、もしくはコンピュータ・プログラム製品、またはそれらの組合せであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を行わせるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を含んでいてもよい。コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納することができる有形のデバイスとすることができる。
【0053】
コンピュータ可読記憶媒体は、以下に限定されないが、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適した組合せとしてよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧としては、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読出し専用メモリ(ROM)、消去可能なプログラム可能な読出し専用メモリ(EPROMまたはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読出し専用メモリ(CD-ROM)、デジタル汎用ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、機械的に符号化されたデバイス、例えば、命令を上に記録したパンチ・カードまたは溝内の隆起構造など、および前述の任意の適切な組合せが挙げられる。コンピュータ可読記憶媒体は、本明細書で使用される際に、それ自体が電波または他の自由に伝搬する電磁波、導波管または他の伝送媒体(例えば、光ファイバ・ケーブルを通る光パルス)を伝搬する電磁波、またはワイヤを介して伝送される電気信号などの一時的な信号であるものと解釈されるべきではない。
【0054】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各演算/処理デバイスに、またはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク、またはそれらの組合せを介して外部コンピュータまたは外部記憶装置に、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはそれらの組合せを含むことができる。各演算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、各演算/処理デバイス内のコンピュータ可読記憶媒体に格納するためにコンピュータ可読プログラム命令を送る。
【0055】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソースコードもしくはオブジェクトコードのいずれかとしてよく、プログラミング言語としては、Smalltalk、C++などのオブジェクト指向プログラミング言語と、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語が挙げられる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上に部分的に、またはリモート・コンピュータ上で部分的にもしくはリモート・コンピュータ上で全体的に、実行してもよい。後者のシナリオでは、リモート・コンピュータが、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されていてもよいし、または接続が、外部コンピュータに(例えば、インターネットサービスプロバイダを用いてインターネットを介して)なされていてもよい。いくつかの実施形態では、例えば、プログラム可能な論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能な論理アレイ(PLA)を含めた電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報によって、コンピュータ可読プログラム命令を実行してもよい。
【0056】
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照して本明細書に説明される。フローチャート図もしくはブロック図またはその両方の各ブロック、ならびにフローチャート図もしくはブロック図またはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
【0057】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装する手段を生成するように、機械を生成し得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置、もしくは他のデバイス、またはそれらの組合せを特定の方法で機能させることのできるコンピュータ可読記憶媒体に格納されてもよく、ゆえに、命令を中に格納したコンピュータ可読記憶媒体は、フローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む、製品を含み得る。
【0058】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能な装置、または他のデバイス上で実行される命令がフローチャートもしくはブロック図またはその両方の1つまたは複数のブロックにおいて指定された機能/動作を実装するように、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイス上にロードされて、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実施させて、コンピュータ実装プロセスを生じる。
【0059】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施形態のアーキテクチャ、機能性、および動作を説明する。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、またはセクタを表すことがある。いくつかの代替的な実施形態では、ブロックに記載された機能は、図に記載された順序の外に生じ得る。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよいし、またはブロックが、関与する機能性に応じて、逆の順序で実行されてもよい。また、ブロック図もしくはフローチャート図またはその両方の各ブロック、ならびにブロック図もしくはフローチャート図またはその両方におけるブロックの組合せは、指定された機能もしくは動作を実行するか、または専用ハードウェアとコンピュータ命令との組合せを実施する、専用ハードウェアベースのシステムによって実装できることに留意されたい。
【0060】
本発明の特定の実施形態を記載してきたが、当業者には、記載された実施形態に等しい他の実施形態が存在することが理解されよう。従って、本発明は、特定の説明された実施形態に限定されるものではなく、添付の特許請求の範囲によってのみ限定されることが理解されるべきである