JP2023535915A - 複数の鍵によって暗号化されたデータの重複排除 - Google Patents
複数の鍵によって暗号化されたデータの重複排除 Download PDFInfo
- Publication number
- JP2023535915A JP2023535915A JP2023504299A JP2023504299A JP2023535915A JP 2023535915 A JP2023535915 A JP 2023535915A JP 2023504299 A JP2023504299 A JP 2023504299A JP 2023504299 A JP2023504299 A JP 2023504299A JP 2023535915 A JP2023535915 A JP 2023535915A
- Authority
- JP
- Japan
- Prior art keywords
- data
- key
- client
- deduplication
- storage system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003860 storage Methods 0.000 claims abstract description 398
- 238000000034 method Methods 0.000 claims abstract description 163
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 description 19
- 238000007906 compression Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 18
- 230000006835 compression Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 230000009467 reduction Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000001152 differential interference contrast microscopy Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 238000013144 data compression Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
- G06F16/1752—De-duplication implemented within the file system, e.g. based on file segments based on file chunks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/062—Network architectures or network communication protocols for network security for supporting key management in a packet data network for key distribution, e.g. centrally by trusted party
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
コンピュータ実装方法が、鍵グループ情報をストレージ・システムに送信することを含む。鍵グループ情報は、鍵グループ内のクライアント・データ鍵の鍵ID情報を含む。クライアント・データ鍵は、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする。この方法は、重複排除情報を生成することも含む。重複排除情報は、クライアント・データのチャンクに関連付けられたフィンガープリントを含む。この方法は、クライアント・データ鍵のうちの1つを使用してデータ・チャンクを暗号化することも含み、暗号化されたデータ・チャンクに対応する復号鍵は、ストレージ・システムには使用することができない。この方法は、ストレージ・システムによって重複排除プロセスにおいて使用するために重複排除情報をストレージ・システムに送信することと、暗号化されたデータ・チャンクをストレージ・システムに送信することとを含む。
Description
本発明はデータ重複排除に関連しており、より詳細には、本発明はクラウド・ストレージ・システムおよびネットワークにおける複数の鍵によって暗号化されたデータの重複排除に関連している。
重複排除または圧縮あるいはその両方などの従来のデータ削減技術は、暗号化データに適用された場合、意味のある削減を提供しない。さまざまな暗号化アルゴリズムが、従来の重複排除プロセスが重複するデータ・チャンクを識別するのを妨げる場合、一意の暗号鍵を使用してそれぞれ暗号化されたデータの複数のセットの重複排除は、失敗に終わる。従来のデータ削減技術は、クライアントとストレージ・システムの間の十分なデータの機密性も提供しない。
例えば、1つの既知の独自の鍵使用(BYOK:bring your own key)暗号化技術は、マルチパーティ信用システムを含む。すべてのデータ削減機能は、すべてのデータにアクセスできるストレージ・システムによって提供されることがあるが、ストレージ・システムがクライアントの鍵にアクセスすることができるため、従来のBYOKシステムは、ストレージ・システムとクライアントの間のデータの機密性を提供しない。サード・パーティの鍵サービスも、クライアント・データの暗号化に使用される共有暗号鍵にアクセスすることができる。この形態のBYOK暗号化の場合、データの機密性はユーザ間のみに存在する。
従来の保管時の暗号化は、ストレージ・システムに知られている鍵を使用して、暗号化されていない入力データを暗号化する。ストレージ・システムは、すべてのデータを復号し、システム内のすべてのデータに対して重複排除を実行することができる。しかし、保管時の暗号化はデータの機密性を提供しない。
従来の完全にクライアント側の暗号化は、ストレージ・システムに知られていない鍵を使用してデータを暗号化する。ストレージ・システムは、共通鍵を使用して暗号化されたデータのみを重複排除する。完全にクライアント側の重複排除は、相対的に高いデータの機密性を提供するが、重複排除の効率を妨げる。
第1の態様から見ると、本発明は、鍵グループ情報をストレージ・システムに送信することを含んでいるコンピュータ実装方法を提供する。鍵グループ情報は、鍵グループ内のクライアント・データ鍵(client data keys)の鍵ID情報を含む。クライアント・データ鍵は、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする。この方法は、重複排除情報を生成することも含む。重複排除情報は、クライアント・データのチャンクに関連付けられたフィンガープリントを含む。この方法は、クライアント・データ鍵のうちの1つを使用してデータ・チャンクを暗号化することも含み、暗号化されたデータ・チャンクに対応する復号鍵は、ストレージ・システムには使用することができない。この方法は、ストレージ・システムによって重複排除プロセスにおいて使用するために重複排除情報をストレージ・システムに送信することと、暗号化されたデータ・チャンクをストレージ・システムに送信することとを含む。前述の方法は、ストレージ・システムがデータ鍵に対するアクセス権限を持つことなく、データ鍵のセットのいずれかのデータ鍵で暗号化されたデータ全体にわたる重複排除を可能にするという利点を提供する。
本発明は、ストレージ・システムからの要求に応答して、暗号化されたデータ・チャンクがストレージ・システムに送信され、ストレージ・システムからの要求が、データ・チャンクの各々を暗号化するために使用されたクライアント・データ鍵を識別する鍵ID情報も要求する、コンピュータ実装方法を提供するのが好ましい。
本発明は、クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵(deduplication key)から成る群から選択された鍵の種類である、コンピュータ実装方法を提供するのが好ましい。
本発明は、ストレージ・システムからの要求が、ストレージ・システムによる重複排除のために識別されないデータ・チャンクに関連付けられたクライアント・データに対するものである、コンピュータ実装方法を提供するのが好ましく、この方法は、クライアントの秘密鍵で暗号化されたデータ・チャンクに関連付けられたクライアント・データを送信することを含む。
本発明は、ストレージ・システムによる重複排除のために識別されているデータ・チャンクに関連付けられたクライアント・データに対するストレージ・システムからの要求に応答して、クライアントの重複排除鍵で暗号化されたデータ・チャンクに関連付けられたクライアント・データを送信することをさらに含む、コンピュータ実装方法を提供するのが好ましい。
本発明は、重複排除情報をストレージ・システムに送信する前に、クライアントの秘密フィンガープリント鍵(secret fingerprint key)を使用してフィンガープリントを暗号化することをさらに含んでいるコンピュータ実装方法を提供するのが好ましい。
本発明は、ストレージ・システムに対してクライアント・データを要求することと、クライアント・データをデータ・チャンクとして受信することとをさらに含んでいるコンピュータ実装方法を提供するのが好ましく、データ・チャンクのうちの1つまたは複数がクライアントの秘密鍵を使用して暗号化され、データ・チャンクのうちの他の1つまたは複数がクライアントの重複排除鍵を使用して暗号化される。
別の態様から見ると、本発明は、ストレージ・システムで鍵グループ情報を受信することであって、鍵グループ情報が鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、クライアント・データ鍵が、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、受信することと、ストレージ・システムに格納するための暗号化されたクライアント・データを受信することと、重複排除情報を受信することであって、重複排除情報が、動作を実行するためにストレージ・システムによってアクセス可能であり、重複排除情報が、暗号化されたクライアント・データのチャンクに関連付けられたフィンガープリントを含む、受信することと、重複排除情報に基づいて重複排除のためのデータ・チャンクを識別することと、重複排除のために識別されないデータ・チャンクに関して、クライアント・データ鍵のうちの1つで暗号化されたデータ・チャンクに関連付けられたクライアント・データを要求することとを含んでいるコンピュータ実装方法を提供する。
本発明は、クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、コンピュータ実装方法を提供するのが好ましい。
本発明は、クライアント・データに対するクライアントからの要求に応答して、データ要求に関連付けられたデータ・チャンクを識別することと、データ・チャンクに関連付けられたメタデータを取り出すことであって、メタデータが鍵ID情報を含む、取り出すことと、メタデータに基づいてデータ要求に関連付けられた暗号化されたクライアント・データを取り出すことと、暗号化されたクライアント・データをクライアントに送信することとをさらに含む、コンピュータ実装方法を提供するのが好ましい。
本発明は、鍵ID情報が、データ要求に関連付けられたデータ・チャンクの各々を暗号化するために使用されたクライアント・データ鍵を識別する、コンピュータ実装方法を提供するのが好ましい。
本発明は、フィンガープリントがクライアントの秘密フィンガープリント鍵を使用して暗号化され、クライアントの秘密フィンガープリント鍵がストレージ・システムには使用できない、コンピュータ実装方法を提供するのが好ましい。
本発明は、クライアント・データ鍵のうちの1つで暗号化されたストレージ・システムに格納されているデータ・チャンクを識別することと、クライアントの重複排除鍵で暗号化されたデータ・チャンクに関連付けられたクライアント・データを要求することとをさらに含む、コンピュータ実装方法を提供するのが好ましい。
別の態様から見ると、本発明は、プロセッサ、およびプロセッサと統合された論理、プロセッサによって実行可能な論理、またはプロセッサと統合され、プロセッサによって実行可能な論理を備えているシステムを提供し、この論理は、鍵グループ情報をストレージ・システムに送信することであって、鍵グループ情報が鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、クライアント・データ鍵が、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、送信することと、重複排除情報を生成することであって、重複排除情報が、クライアント・データのチャンクに関連付けられたフィンガープリントを含む、生成することと、クライアント・データ鍵のうちの1つを使用してデータ・チャンクを暗号化することであって、暗号化されたデータ・チャンクに対応する復号鍵がストレージ・システムには使用できない、暗号化することと、ストレージ・システムによって重複排除プロセスにおいて使用するために重複排除情報をストレージ・システムに送信することと、暗号化されたデータ・チャンクをストレージ・システムに送信することとを実行するように構成される。
本発明は、ストレージ・システムからの要求に応答して、暗号化されたデータ・チャンクがストレージ・システムに送信され、ストレージ・システムからの要求が、データ・チャンクの各々を暗号化するために使用されたクライアント・データ鍵を識別する鍵ID情報も要求する、システムを提供するのが好ましい。
本発明は、クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、システムを提供するのが好ましい。
本発明は、ストレージ・システムからの要求が、ストレージ・システムによる重複排除のために識別されないデータ・チャンクに関連付けられたクライアント・データに対するものである、システムを提供するのが好ましく、このシステムは、クライアントの秘密鍵で暗号化されたデータ・チャンクに関連付けられたクライアント・データを送信するように構成された論理を備える。
本発明は、ストレージ・システムによる重複排除のために識別されているデータ・チャンクに関連付けられたクライアント・データに対するストレージ・システムからの要求に応答して、クライアントの重複排除鍵で暗号化されたデータ・チャンクに関連付けられたクライアント・データを送信するように構成された論理をさらに備えているシステムを提供するのが好ましい。
本発明は、重複排除情報をストレージ・システムに送信する前に、クライアントの秘密フィンガープリント鍵を使用してフィンガープリントを暗号化するように構成された論理をさらに備えているシステムを提供するのが好ましい。
別の態様から見ると、本発明は、プロセッサ、およびプロセッサと統合された論理、プロセッサによって実行可能な論理、またはプロセッサと統合され、プロセッサによって実行可能な論理をさらに備えているシステムを提供し、この論理は、ストレージ・システムで鍵グループ情報を受信することであって、鍵グループ情報が鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、クライアント・データ鍵が、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、受信することと、ストレージ・システムに格納するための暗号化されたクライアント・データを受信することと、重複排除情報を受信することであって、重複排除情報が、動作を実行するためにストレージ・システムによってアクセス可能であり、重複排除情報が、暗号化されたクライアント・データのチャンクに関連付けられたフィンガープリントを含む、受信することと、重複排除情報に基づいて重複排除のためのデータ・チャンクを識別することと、重複排除のために識別されないデータ・チャンクに関して、クライアント・データ鍵のうちの1つで暗号化されたデータ・チャンクに関連付けられたクライアント・データを要求することとを実行するように構成される。
本発明は、クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、システムを提供するのが好ましい。
本発明は、クライアント・データに対するクライアントからの要求に応答して、データ要求に関連付けられたデータ・チャンクを識別することと、データ・チャンクに関連付けられたメタデータを取り出すことであって、メタデータが鍵ID情報を含む、取り出すことと、メタデータに基づいてデータ要求に関連付けられた暗号化されたクライアント・データを取り出すことと、暗号化されたクライアント・データをクライアントに送信することとを実行するように構成された論理をさらに備えているシステムを提供するのが好ましい。
本発明は、鍵ID情報が、データ要求に関連付けられたデータ・チャンクの各々を暗号化するために使用されたクライアント・データ鍵を識別する、システムを提供するのが好ましい。
本発明は、フィンガープリントがクライアントの秘密フィンガープリント鍵を使用して暗号化され、クライアントの秘密フィンガープリント鍵がストレージ・システムには使用できない、システムを提供するのが好ましい。
別の態様から見ると、本発明はコンピュータ・プログラム製品を提供し、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備え、プログラム命令が、鍵グループ情報をストレージ・システムに送信するためのプログラム命令であって、鍵グループ情報が鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、クライアント・データ鍵が、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、プログラム命令と、重複排除情報を生成するためのプログラム命令であって、重複排除情報が、クライアント・データのチャンクに関連付けられたフィンガープリントを含む、プログラム命令と、クライアント・データ鍵のうちの1つを使用してデータ・チャンクを暗号化するためのプログラム命令であって、暗号化されたデータ・チャンクに対応する復号鍵がストレージ・システムには使用できない、プログラム命令と、ストレージ・システムによって重複排除プロセスにおいて使用するために重複排除情報をストレージ・システムに送信するためのプログラム命令と、暗号化されたデータ・チャンクをストレージ・システムに送信するためのプログラム命令とを含む。
本発明のその他の態様および手法は、本発明の原理を図面と併せて例として説明する、以下の詳細な説明から明らかになる。
以下の説明は、本発明の一般的原理を説明する目的で行われるのであり、本明細書において請求される本発明の概念を制限するように意図されていない。さらに、本明細書に記載された特徴を、さまざまな可能な組合せおよび並べ替えの各々において、その他の説明された特徴と組み合わせて使用することができる。
本明細書では、特に具体的に定義されない限り、すべての用語には、本明細書から示される意味、および当業者によって理解される意味、または辞書、論文などにおいて定義された意味、あるいはその両方を含む、最も広い可能な解釈が与えられる。
本明細書および添付の特許請求の範囲において使用されるとき、単数形「a」、「an」および「the」が、特に規定されない限り、複数の指示対象を含むということにも注意しなければならない。「備える」または「備えている」あるいはその両方の用語は、本明細書で使用される場合、記載された機能、整数、ステップ、動作、要素、またはコンポーネント、あるいはその組合せの存在を示すが、1つまたは複数のその他の機能、整数、ステップ、動作、要素、コンポーネント、またはこれらのグループ、あるいはその組合せの存在または追加を除外していないということが、さらに理解されるであろう。
以下の説明は、複数鍵暗号化データの重複排除の複数の態様を開示する。
1つの一般的な態様では、コンピュータ実装方法は、鍵グループ情報をストレージ・システムに送信することを含む。鍵グループ情報は、鍵グループ内のクライアント・データ鍵の鍵ID情報を含む。クライアント・データ鍵は、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする。この方法は、重複排除情報を生成することも含む。重複排除情報は、クライアント・データのチャンクに関連付けられたフィンガープリントを含む。この方法は、クライアント・データ鍵のうちの1つを使用してデータ・チャンクを暗号化することも含み、暗号化されたデータ・チャンクに対応する復号鍵は、ストレージ・システムには使用することができない。この方法は、ストレージ・システムによって重複排除プロセスにおいて使用するために重複排除情報をストレージ・システムに送信することと、暗号化されたデータ・チャンクをストレージ・システムに送信することとを含む。
別の一般的な態様では、システムは、プロセッサ、およびプロセッサと統合された論理、プロセッサによって実行可能な論理、またはプロセッサと統合され、プロセッサによって実行可能な論理を含む。この論理は、前述の方法を実行するように構成される。
別の一般的な態様では、コンピュータ・プログラム製品は、1つまたは複数のコンピュータ可読ストレージ媒体と、1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを含み、プログラム命令は、前述の方法を実行するためのプログラム命令を含む。
さらに別の一般的な態様では、コンピュータ実装方法は、ストレージ・システムで鍵グループ情報を受信することを含む。鍵グループ情報は、鍵グループ内のクライアント・データ鍵の鍵ID情報を含む。クライアント・データ鍵は、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする。この方法は、ストレージ・システムに格納するための暗号化されたクライアント・データを受信することと、重複排除情報を受信することとを含む。重複排除情報は、動作を実行するためにストレージ・システムによってアクセス可能であり、重複排除情報は、暗号化されたクライアント・データのチャンクに関連付けられたフィンガープリントを含む。この方法は、重複排除情報に基づいて重複排除のためのデータ・チャンクを識別することと、重複排除のために識別されないデータ・チャンクに関して、クライアント・データ鍵のうちの1つで暗号化されたデータ・チャンクに関連付けられたクライアント・データを要求することとも含む。
別の一般的な態様では、システムは、プロセッサ、およびプロセッサと統合された論理、プロセッサによって実行可能な論理、またはプロセッサと統合され、プロセッサによって実行可能な論理を含む。この論理は、前述の方法を実行するように構成される。
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の態様は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
クラウド・コンピューティングは、構成可能な計算リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間またはサービス・プロバイダとのやりとりを最小限に抑えて、これらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つのデプロイメント・モデルを含むことができる。
特徴は、次のとおりである。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。
場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関してどうすることもできないし、知っているわけでもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
オンデマンドのセルフ・サービス:クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどの計算能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による利用を促進する。
リソース・プール:プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。
場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関してどうすることもできないし、知っているわけでもないが、さらに高い抽象レベルでは、場所(例えば、国、州、またはデータセンター)を指定できる場合がある。
迅速な順応性:能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
測定されるサービス:クラウド・システムは、計測機能を活用することによって、サービスの種類(例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント)に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
サービス・モデルは、次のとおりである。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
SaaS(Software as a Service):利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Webブラウザ(例えば、Webベースの電子メール)などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらには個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
PaaS(Platform as a Service):利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
IaaS(Infrastructure as a Service):利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント(例えば、ホスト・ファイアウォール)を限定的に制御できる。
デプロイメント・モデルは、次のとおりである。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
プライベート・クラウド:このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項)を共有している特定のコミュニティをサポートする。これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術(例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト)によって固有の実体を残したまま互いに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合である。
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
ここで図1を参照すると、例示的なクラウド・コンピューティング環境50が示されている。図示されているように、クラウド・コンピューティング環境50は、クラウドの利用者によって使用されるローカル・コンピューティング・デバイス(例えば、パーソナル・デジタル・アシスタント(PDA:personal digital assistant)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せなど)が通信できる1つまたは複数のクラウド・コンピューティング・ノード10を含んでいる。ノード10は、互いに通信してよい。ノード10は、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組合せなどの1つまたは複数のネットワーク内で、物理的または仮想的にグループ化されてよい(図示されていない)。これによって、クラウド・コンピューティング環境50は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはSaaS、あるいはその組合せを提供できる。図1に示されたコンピューティング・デバイス54A~Nの種類は、例示のみが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意の種類のネットワークまたはネットワーク・アドレス可能な接続(例えば、Webブラウザを使用した接続)あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
ここで図2を参照すると、クラウド・コンピューティング環境50(図1)によって提供される機能的抽象レイヤのセットが示されている。図2に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の態様がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66が挙げられる。一部の態様では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75などの仮想的実体を提供できる抽象レイヤを備える。
一例を挙げると、管理レイヤ80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのID検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル83は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理84は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意(SLA:Service Level Agreement)計画および実行85は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、SLAに従って行う。
ワークロード・レイヤ90は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想クラスルーム教育の配信93、データ解析処理94、トランザクション処理95、および複数鍵暗号化データ重複排除96が挙げられる。
重複排除または圧縮あるいはその両方などの従来のデータ削減技術は、暗号化データに適用された場合、意味のある削減を提供しない。さまざまな暗号化アルゴリズムが、従来の重複排除プロセスが重複するデータ・チャンクを識別するのを妨げる場合、一意の暗号鍵を使用してそれぞれ暗号化されたデータの複数のセットの重複排除は、失敗に終わる。従来のデータ削減技術は、クライアントとストレージ・システムの間の十分なデータの機密性も提供しない。
安全な重複排除のためのKYOK(keep your own key:独自の鍵使用)手法は、どの他のクライアントの暗号鍵に対するアクセス権限も持つことなく、暗号化データの重複排除を実現する。あるクライアントの鍵からのデータが、その鍵での他のデータまたはストレージ・システムの鍵でのデータに対して重複排除され得る。データへの安全なアクセスを提供しながら、鍵のセット全体にわたって重複排除する能力を有する鍵のセットを所有することは、クライアントにとって有益である。本開示は、ストレージ・システムがデータ鍵に対するアクセス権限を持つことなく、データ鍵のセットのいずれかで暗号化されたデータ全体にわたる重複排除を可能にするために、データ鍵のセットに関連付けられた重複排除鍵を提供する。
本開示の少なくとも一部の態様は、KYOKによる安全な重複排除のための追加の能力を提供し、クライアントが複数の鍵を使用してデータを暗号化できるようにする。さまざまな態様は、重複排除が動作することができるデータのセットを増やすことによって、KYOKの重複排除を改善する。本明細書に記載されたさまざまな方法は、データ機密性を維持し、従来の暗号化技術または重複排除技術あるいはその両方と比較して、データ機密性を改善する。複数鍵暗号化データの重複排除のさまざまな動作は、従来の完全にクライアント側の暗号化よりも相対的に良いデータ削減およびクライアント側の重複排除より少ないクライアントのオーバーヘッドを実現する。
本明細書に記載された動作の少なくとも一部は、対称鍵暗号化または非対称鍵暗号化(例えば、公開鍵基盤(PKI:public key infrastructure))あるいはその両方と共に使用されてよい。従来技術において知られた任意の構成に従ってPKI暗号化が実行されてよいということが、当業者によって理解されるべきである。例えば、PKIにおける公開鍵は秘密鍵ではなく、公開鍵を使用してデータを暗号化するには、復号するための対応する秘密鍵が必要である。本開示全体を通じて参照されている秘密鍵は、クライアントとストレージ・システムの間で共有されない鍵のことを指す。
本開示のさまざまな態様全体を通じて、クライアントは、別々のデータ・アクセス権限を持っているプロセス、ユーザ、その他の実体などに関連付けられる。セキュリティのために、前述の実体の各々は、データを暗号化するための秘密データ鍵を持っている。本開示全体を通じて使用されているように、それ自身の秘密鍵を持っている実体は、鍵ユーザと呼ばれる。クライアントは、鍵ユーザの何らかのサブセットにわたってデータ重複排除が許可されることを望むことがある。本開示全体を通じて使用されているように、鍵ユーザのサブセットは、鍵グループと呼ばれる。例えば、クライアントは、秘密鍵k0、k1、k2...k7を持ってよく、鍵k0、k1、およびk2がグループ1(例えば、g1)を形成し、秘密鍵k3、k4、k5が鍵グループ2(例えば、g2)を形成する。当業者が本開示を読むときに理解するであろうように、クライアントが、アクセス権限を鍵グループのメンバーである鍵ユーザに制限することによって、アクセス制御が提供されてよい。当業者が本開示を読むときに理解するであろうように、鍵ユーザのアクセス権限を鍵グループ内の特定の鍵に制限することによって、アクセス制御が提供されてよい。
鍵グループ内の鍵のセット全体にわたる重複排除を可能にするために、鍵グループごとに、下に詳細に説明される秘密重複排除鍵(secret dedup key)が提供される。秘密重複排除鍵は、重複排除されたチャンクを暗号化するために使用される。一部の任意選択的方法では、鍵グループごとに、下に詳細に説明される秘密フィンガープリント鍵が提供される。秘密フィンガープリント鍵は、重複排除メタデータまたは重複排除されたチャンクあるいはその両方をストレージ・システムに送信する前に、重複排除メタデータを暗号化するために使用される。秘密フィンガープリント鍵は、鍵ユーザによって使用可能である必要はない。秘密重複排除鍵および秘密フィンガープリント鍵に対するアクセス権限は、少なくとも一部の方法では、関連する鍵グループの鍵ユーザ間で共有されてよい。当業者が本開示を読むときに理解するであろうように、この共有は、重複排除鍵で暗号化されたすべてのデータが、鍵グループの異なる秘密データ鍵で存在する共通データであるため、機密上の懸念にならない。さらに、下でさらに詳細に説明されるように、読み取り要求に対して、重複排除されたデータを含んでいる、一致する鍵IDを有するデータのみが返されることを保証するために、KYOKの重複排除と同様に、データの各チャンクに関連付けられた鍵IDが使用されてよい。
図3は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ300は、さまざまな構成において、特に図1~図2および図4~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図3において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ300に含まれてよい。
アーキテクチャ300は、対称鍵暗号化を使用する書き込み動作の例示的な実装を示している。アーキテクチャ300は、クライアント1 302を含んでいる。図に示されているように、クライアント1 302は、秘密データ鍵k0 306、k1 308、およびk2 310を含んでいる鍵グループ304を含む。秘密データ鍵k0 306、k1 308、およびk2 310は、対称鍵、非対称鍵など、またはこれらの任意の組合せであってよい。図に示されているように、秘密データ鍵k0 306、k1 308、およびk2 310は対称鍵である。鍵グループ304は、秘密フィンガープリント鍵ks312および秘密重複排除鍵kd314を含んでいる。
クライアント1 302は、メタ生成器316を備えている。好ましい方法では、メタ生成器316は、データに関連付けられた重複排除メタデータを計算する。さまざまな構成では、メタ生成器316は、クライアント1 302もしくはストレージ・システム338またはその両方に配置されるか、あるいはクライアント1 302とストレージ・システム338の間のネットワーク上に配置されてよい。さまざまな構成では、KYOK機能の一部(例えば、メタデータの生成または暗号化あるいはその両方)が、クライアント上、クライアントをストレージに接続するネットワーク上、ストレージ・システムに取り付けられたユニット内(例えば、このユニットが、クライアントの鍵または暗号化されていないデータへのアクセスをストレージ・システムに提供しない場合)などに配置されてよい。
ストレージ・システムは、クライアントの鍵または暗号化されていないデータあるいはその両方に対するアクセス権限を持たないのが好ましい。メタ生成器316がメタデータを生成した後に、下で詳細に説明されるさまざまな暗号化動作が実行される。メタ生成器316がストレージ・システム338に配置される構成では、メタ生成器316は、クライアントの鍵および暗号化されていないデータがストレージ・システム338に暴露されないように、カプセル化される。メタ生成器316は、ハードウェア(例えば、スマートNIC)、信頼できる計算環境などを介することを含む、従来技術において知られた任意の方法でカプセル化されてよい。
好ましい方法では、メタ生成器316は、クライアント1 302でデータに対してメタデータ動作を実行し、データ内のデータ重複排除の機会を識別する。メタ生成器316は、従来技術において知られた任意のデータ重複排除技術を使用してデータ重複排除の機会を識別する。1つの態様では、メタ生成器316は、固定ブロック重複排除を使用する。別の態様では、メタ生成器316は、フル・オブジェクト重複排除(full object deduplication)などを使用する。さらに別の態様では、メタ生成器316は、スライド・ウィンドウ可変チャンク重複排除技術を使用してデータ重複排除の機会を識別する。メタ生成器316は、重複排除フィンガープリント(例えば、ローリング最小ハッシュ、暗号ハッシュなど)を識別するか、または計算するか、あるいはその両方を実行する。メタ生成器316は、ポインタ、チャンク長、チャンク・フィンガープリント(chunk fingerprints)などを含む、データ重複排除の機会に関連付けられたメタデータ(例えば、重複排除情報)を生成する。下で詳細に説明されるように、チャンク・フィンガープリントなどのデータ重複排除情報の一部が、クライアントの秘密フィンガープリント鍵ks312を使用して暗号化されてよい。1つの方法では、メタ生成器316は、従来技術において知られた任意のデータ圧縮技術を使用してデータを圧縮する。一部の方法では、チャンキングの前または後あるいはその両方で、さまざまな圧縮技術が適用されてよい。1つの構成では、チャンキング前の圧縮は、チャンキングの性能を改善する種類の圧縮であってよい。別の構成では、チャンキング後の圧縮は、結果として得られるチャンク・サイズを最小化することに向けて調整されてよい。
フィンガープリントの計算は、圧縮の前または後あるいはその両方で、データ・チャンクに対して実行されてよい。圧縮前のフィンガープリントの計算は、読み取り時の復元後にフィンガープリントを検証できるようにする。圧縮後のフィンガープリントの計算は、チャンクが圧縮された状態にある間に、フィンガープリントをチェックできるようにする。
クライアント1 302は、秘密データ鍵エンクリプタ318を備えている。当業者が本開示を読むときに理解するであろうように、秘密データ鍵エンクリプタ318は、秘密データ鍵(例えば、k0 306、k1 308、およびk2 310)を使用してデータを暗号化してよい。
クライアント1 302は、秘密重複排除鍵エンクリプタ320を備えている。当業者が本開示を読むときに理解するであろうように、秘密重複排除鍵エンクリプタ320は、秘密重複排除鍵kd314を使用してデータを暗号化してよい。
クライアント1 302は、秘密フィンガープリント鍵エンクリプタ324を備えている。当業者が本開示を読むときに理解するであろうように、秘密フィンガープリント鍵エンクリプタ324は、秘密フィンガープリント鍵ks312を使用してフィンガープリントを暗号化してよい。代替的方法では、秘密フィンガープリント鍵および秘密重複排除鍵は同じ鍵であってよい。前述の代替的方法では、当業者が本開示を読むときに理解するであろうように、秘密フィンガープリント鍵エンクリプタは、秘密フィンガープリント鍵を使用してデータまたはフィンガープリントあるいはその両方を暗号化してよい。
クライアント1 302は、デチャンカ326を備えている。さまざまな構成では、デチャンカ326は、クライアント1 302もしくはストレージ・システム338またはその両方に配置されるか、あるいはクライアント1 302とストレージ・システム338の間のネットワーク上に配置されてよい。さまざまな構成では、デチャンカ(例えば、デチャンカに関連する機能を含む)が、クライアント上、クライアントをストレージに接続するネットワーク上、ストレージ・システムに取り付けられたユニット内(例えば、このユニットが、クライアントの鍵または暗号化されていないデータへのアクセスをストレージ・システムに提供しない場合)などに配置されてよい。
ストレージ・システムは、クライアントの鍵または暗号化されていないデータあるいはその両方に対するアクセス権限を持たないのが好ましい。デチャンカ326がストレージ・システム338に配置される構成では、デチャンカ326は、クライアントの鍵および暗号化されていないデータがストレージ・システム338に暴露されないように、カプセル化される。デチャンカ326は、ハードウェア(例えば、スマートNIC)、信頼できる計算環境などを介することを含む、従来技術において知られた任意の方法でカプセル化されてよい。
デチャンカ326は、ストレージ・システムから受信されたデータ・チャンクをチャンク解除してよく、データ・チャンクは、複数の暗号鍵を使用して暗号化される。好ましい方法では、複数の暗号鍵を使用して暗号化されたデータ・チャンクとは、少なくとも一部のデータ・チャンクが第1の鍵を使用して暗号化され、少なくとも一部の他のデータ・チャンクが第2の鍵を使用して暗号化され、第1の鍵および第2の鍵が異なる鍵である場合のことを指す。複数の暗号鍵を使用して暗号化されたデータ・チャンクは、本明細書で明示的に開示されない限り、連続的に、または同時に、あるいはその両方で複数のクライアントの秘密暗号鍵の対象になるデータ・チャンクとして解釈されるべきではない。
デチャンカ326は、どの暗号鍵を使用してデータ・チャンクが暗号化されているかを識別し、対応するデクリプタ(例えば、秘密データ鍵デクリプタ328、秘密フィンガープリント鍵デクリプタ330、秘密重複排除鍵デクリプタ332など)を使用してそのデータ・チャンクを復号してよい。当業者が本開示を読むときに理解するであろうように、各デクリプタは、対応する鍵を使用してデータを復号してよい。
アーキテクチャ300は、任意選択的に鍵IDマネージャ336を含む。当業者が本開示を読むときに理解するであろうように、鍵IDマネージャ336は、従来技術において知られた任意の方法で、鍵および任意の関連する鍵IDを格納するか、または管理するか、あるいはその両方を実行する。
アーキテクチャ300は、ストレージ・システム338を含んでいる。ストレージ・システム338は、従来技術において知られた任意の種類のストレージ・システムであってよい。ストレージ・システム338が、本明細書において示されたコンポーネントよりも多いかまたは少ないコンポーネントを含んでよいということが、当業者によって理解されるべきである。ストレージ・システム338は、本明細書に記載されたさまざまな重複排除動作を実行するのが好ましい。
ストレージ・システム338は、秘密ストレージ暗号鍵(secret storage encryption key)340を含んでいる。好ましい方法では、秘密ストレージ暗号鍵340はストレージ・システム338から離れない。この好ましい方法では、秘密ストレージ暗号鍵340は、クライアント1 302、クライアント2 342、任意のその他のクライアント、任意のその他のストレージ・システムなどと共有されない。秘密ストレージ暗号鍵340は、対称鍵、非対称鍵などであってよい。図に示されているように、秘密ストレージ暗号鍵340は対称鍵である。当業者によって理解されるであろうように、秘密ストレージ暗号鍵340は、任意選択的に、クライアントから受信されたクライアント・データ、データ・チャンク、チャンク・フィンガープリントなどを暗号化するために使用されてよい。
ストレージ・システム338は、重複排除マネージャ344を備えている。重複排除マネージャ344は、クライアント1 302によって提供された重複排除情報に基づいて、重複するデータを位置特定するか、または識別するか、あるいはその両方を実行する。チャンキングの重複排除の場合、重複しているデータ・チャンクを識別するために、重複排除情報がチャンク・メタデータと共に使用される。当業者が本開示を読むときに理解するであろうように、重複排除マネージャ344は、任意の関連する重複排除動作を実行する。データ・チャンクを重複排除するために、任意の既知の重複排除技術が使用されてよい。
ストレージ・システム338は、チャンク・ストレージ346を備えている。チャンク・ストレージ346は、従来技術において知られた任意のストレージ・コンポーネントを備えてよい。チャンク・ストレージ346は、従来技術において知られた任意の方法で、データ・チャンク、重複排除されたデータ、重複排除されていないデータ、暗号化データ、暗号化されていないデータ、重複排除情報などを格納してよい。1つの方法では、チャンク・ストレージ346は、データ・チャンク、重複排除されたデータ、重複排除されていないデータ、暗号化データ、暗号化されていないデータ、重複排除情報などをテーブルに格納する。
ストレージ・システム338は、チャンク・メタデータをストレージ348内に含む。ストレージ348は、従来技術において知られた任意のストレージ・コンポーネントを備えてよい。ストレージ348は、従来技術において知られた任意の方法で、チャンク・メタデータ、データ・チャンク、重複排除されたデータ、重複排除されていないデータ、暗号化データ、暗号化されていないデータ、重複排除情報などを格納してよい。チャンク・メタデータは、ポインタ、チャンク長、チャンク・フィンガープリントなどを含む、重複排除されていないデータ・チャンクまたは重複排除されたデータ・チャンクあるいはその両方に関連付けられた任意のメタデータを含んでよい。チャンク・メタデータは、重複排除マネージャ344から新しいデータを受信することに応答して更新されてよい。
ストレージ・システム338は、鍵IDリスト350を含んでいる。鍵IDリスト350は、データを暗号化するためにクライアント1 302によって使用される秘密データ鍵のセット(例えば、k0 306、k1 308、およびk2 310)に関連付けられた鍵IDのリストを含む。
ストレージ・システム338は、秘密ストレージ鍵エンクリプタ352を備えている。当業者が本開示を読むときに理解するであろうように、秘密ストレージ鍵エンクリプタ352は、任意選択的に、秘密ストレージ暗号鍵340を使用してデータを暗号化してよい。
ストレージ・システム338は、秘密ストレージ鍵デクリプタ354を備えている。当業者が本開示を読むときに理解するであろうように、秘密ストレージ鍵デクリプタ354は、秘密ストレージ暗号鍵340を使用して暗号化されたデータを復号してよい。
クライアント1 302の秘密データ鍵(例えば、k0 306、k1 308、およびk2 310)は、ストレージ・システム338と共有されず、秘密ストレージ暗号鍵340は、どのクライアントとも共有されない。クライアントまたはストレージ・システムあるいはその両方は、鍵マネージャ(任意選択的な鍵IDマネージャ336を参照)または任意の追加の手段あるいはその両方を使用して鍵を格納すること、または管理すること、あるいはその両方を実行することを選択してよい。
アーキテクチャ300は、クライアント2 342を含んでいる。図に示されているように、クライアント2 342は、保管時の暗号化ストレージを使用し、暗号化されていないデータ(例えば、非プライベート・データ)をストレージ・システム338に送信する。少なくとも一部の方法では、クライアント2 342は、データの機密性に関する懸念を持っていないため、暗号化されていないデータを送信してよい。暗号化されていないデータとは、ストレージ・システムが暗号化されていない状態で受信するデータのことを指してよい。さまざまな方法では、従来技術において知られた任意の通信暗号化が、さまざまなコンポーネント間で実装されてよい。従来技術において知られた方法に従って、さまざまなコンポーネントの少なくとも一部の間で、任意の通信暗号化が実装されてよい。
データを書き込む前に、クライアント1 302は、要求358をストレージ・システム338に発行してよい。クライアント1 302は、要求358に関連付けられた鍵IDリスト350からのクライアントの鍵グループ情報を送信してよい。鍵IDリスト350からのクライアントの鍵グループ情報は、クライアントが使用する鍵のセットをストレージ・システム338に知らせ、クライアントが使用する各鍵を一意に識別する。鍵IDリスト350からのクライアントの鍵グループ情報は、クライアント識別子、グループ識別子、グループが平文(例えば、暗号化されていないチャンク)に対する重複排除を許可するかどうかを示すタグ、グループ内の鍵IDのリスト、および鍵IDごとの任意の関連する鍵タイプ識別子(例えば、データ、重複排除など)などを含んでよい。鍵IDリスト350からのクライアントの鍵グループ情報は、鍵IDに関連付けられた鍵を含まないのが好ましい。
好ましい方法では、鍵IDは、鍵自体から容易に予測できないか、または決定できないか、あるいはその両方である。ランダムな値または別の鍵で暗号化された値あるいはその両方が、鍵IDを生成するために使用されてよい。鍵IDを生成するために、任意のその他の技術が使用されてよい。鍵自体から容易に予測できないか、または決定できないか、あるいはその両方である鍵IDは、許可されていない実体がストレージに対するアクセス権限を獲得するのを防ぐ。例えば、マルウェアは、特定のクライアントの秘密データ鍵IDに関する許可を得たプロセスに対するアクセス権限を獲得することがある。このプロセスがこの情報を使用して他の鍵ID値を推測することを相対的に困難にし、それによって、他の鍵でデータを抽出する能力または変更する能力あるいはその両方を制限することは、有益である。鍵IDは、鍵IDマネージャ336から取得されてよい(360)。鍵IDマネージャ336は、鍵IDをストレージ・システム338に伝達する(362)ために使用されてよい。鍵IDマネージャ336は、ソフトウェア、ハードウェア、スタンドアロンの実体、クライアント1 302上のプロセスなど、またはこれらの任意の組合せとして実装されてよい。
要求358の一部として、ストレージ・システム338は、クライアント1 302および要求358に関連付けられた識別情報およびアクセス権限を検証してよい。1つの方法では、クライアント1 302は、ストレージ・システム338に対する要求358によって、ストレージ・システム338とのセッションを確立する。
1つの方法では、クライアント1 302は、書き込みデータをメタ生成器316に送信する前に、書き込みデータを暗号化する。クライアント1 302は、書き込みデータ、および書き込みデータを暗号化するために使用された秘密データ鍵を示す鍵ID(例えば、k0 306、k1 308、k2 310)を、メタ生成器316に送信する。
好ましい方法では、メタ生成器316は、書き込みデータに関連付けられた重複排除情報(例えば、チャンク・メタデータ)を計算する。当業者が本開示を読むときに理解するであろうように、重複排除情報は、重複排除方法の動作の詳細を含んでよい。1つの構成では、チャンキングの重複排除の場合、重複排除情報は、チャンク開始位置、チャンク長、チャンク・フィンガープリント、類似性情報などを含んでよい。1つの方法では、チャンク・フィンガープリントは、従来技術において知られた任意の方法で計算されてよい暗号ハッシュである。
1つの方法では、書き込みデータは、メタ生成器316によって圧縮される。従来技術において知られた任意の形態の圧縮が使用されてよい。一部の態様では、ストレージ・システム338からの要求に応答して書き込みデータが送信されてよい(下で詳細に説明される)。要求に応答して、圧縮データが秘密データ鍵エンクリプタ318に送信され、鍵グループ304からの適切な秘密データ鍵を使用して暗号化されてよい。秘密データ鍵によって暗号化されたデータ、および鍵グループ304からの秘密データ鍵に関連付けられた鍵IDが、ストレージ・システム338(例えば、ストレージ・システム338上の重複排除マネージャ344)に送信されてよい。
少なくとも一部の方法では、書き込みデータが秘密フィンガープリント鍵エンクリプタ324に送信され、秘密フィンガープリント鍵ks312を使用して対応するフィンガープリントが暗号化される。書き込みデータ、および秘密フィンガープリント鍵ks312に関連付けられた鍵IDが、ストレージ・システム338(例えば、ストレージ・システム338上の重複排除マネージャ344)に送信されてよい。
さらに別の方法では、ストレージ・システム338からの要求に応答して書き込みデータが送信されてよい(下で詳細に説明される)。要求に応答して、書き込みデータが秘密重複排除鍵エンクリプタ320に送信され、秘密重複排除鍵kd314を使用して暗号化される。書き込みデータ、および秘密重複排除鍵kd314に関連付けられた鍵IDが、ストレージ・システム338(例えば、重複排除マネージャ344)に送信されてよい。
前述の方法のいずれかでは、データがストレージ・システム338にとって不透明であるのが好ましい(例えば、データが秘密データ鍵、秘密フィンガープリント鍵ks312、または秘密重複排除鍵kd314を使用して暗号化され、これらの鍵は、ストレージ・システム338には使用することができない)。さまざまな方法では、重複排除情報および書き込みデータが、関連付けられているとしてタグ付けされるか、またはその他の方法で示されるか、あるいはその両方である。
重複排除マネージャ344は、重複排除情報に基づいて、重複するデータを位置特定するか、または識別するか、あるいはその両方を実行する。チャンキングの重複排除の場合、重複しているデータ・チャンクを識別するために、重複排除情報がチャンク・メタデータと共に使用される。例えば、重複排除マネージャ344は、復号された重複排除情報からのポインタ、フィンガープリント、チャンク長などを、チャンク・メタデータに格納されたポインタ、フィンガープリント、チャンク長などと比較する。当業者が本開示を読むときに理解するであろうように、重複排除マネージャ344は、任意の関連する重複排除動作を実行する。
関連する重複排除動作を実行することに応答して、チャンク・メタデータに対して更新が実行されてよい。更新は、任意の重複排除されたチャンクの使用、残りのすべてのチャンクに関連する情報の追加などに起因する変更を反映する。チャンク・メタデータは、特定のデータ・チャンクを暗号化する鍵IDに関する情報を含む。重複排除されていない新しいフィンガープリント(例えば、チャンク・メタデータ内にまだ存在していないフィンガープリント)に関連付けられた残りのすべてのデータ・チャンクが、チャンク・ストレージ346に書き込まれる。任意の新しい重複排除されていないデータ・チャンクが、チャンク・ストレージ346に書き込まれる。
その後のデータ・アクセス要求は、データを暗号化するために使用されたクライアントの秘密データ鍵に関連付けられた鍵IDを含む。鍵IDは、特定のメッセージの一部であってよい。鍵IDは、確立されたセッション、プロセスなどの一部であってよい。
以下で詳細に開示されるさまざまな態様は、スライド・ウィンドウ可変チャンク・サイズ重複排除(sliding window variable chunk size dedup)を使用する場合の前述の構成の挙動について説明する。以下で詳細に説明される動作の前に、クライアントは、鍵IDリスト350からの鍵グループ情報を要求してよい(358)。暗号化されていないデータを送信するクライアントの動作が、鍵グループ情報をストレージ・システム338に送信してよいということに注意する。平文データの場合、デフォルトの情報が仮定されてよい。グループおよび鍵IDの情報がセッションの一部として転送され、必ずしも入出力(IO:input/output)ごとに送信されなくてよいということに注意する。プライベートなクライアントの鍵で暗号化されたデータの場合でも、秘密ストレージ鍵エンクリプタ352を使用して格納されたすべてのデータ368を暗号化するのは、ストレージ・システムにとって有益である。以下の説明において、前述の暗号化が仮定される。
図4は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ400は、さまざまな構成において、特に図1~図3および図5~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図4において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ400に含まれてよい。
アーキテクチャ400は、対称鍵暗号化を使用する読み取り動作の例示的な実装を示している。アーキテクチャ400は、クライアント1 302を含んでいる。図に示されているように、クライアント1 302は、秘密データ鍵k0 306、k1 308、およびk2 310を含んでいる鍵グループ304を含む。秘密データ鍵k0 306、k1 308、およびk2 310は、対称鍵、非対称鍵など、またはこれらの任意の組合せであってよい。図に示されているように、秘密データ鍵k0 306、k1 308、およびk2 310は対称鍵である。鍵グループ304は、秘密フィンガープリント鍵ks312および秘密重複排除鍵kd314を含んでいる。
クライアント1 302は、メタ生成器316を備えている。さまざまな構成では、メタ生成器316は、クライアント1 302もしくはストレージ・システム338またはその両方に配置されるか、あるいはクライアント1 302とストレージ・システム338の間のネットワーク上に配置されてよい。さまざまな構成では、KYOK機能の一部(例えば、メタデータの生成または暗号化あるいはその両方)が、クライアント上、クライアントをストレージに接続するネットワーク上、ストレージ・システムに取り付けられたユニット内(例えば、このユニットが、クライアントの鍵または暗号化されていないデータへのアクセスをストレージ・システムに提供しない場合)などに配置されてよい。
ストレージ・システムは、クライアントの鍵または暗号化されていないデータあるいはその両方に対するアクセス権限を持たないのが好ましい。メタ生成器316がメタデータを生成した後に、下で詳細に説明されるさまざまな暗号化動作が実行される。メタ生成器316がストレージ・システム338に配置される構成では、メタ生成器316は、クライアントの鍵および暗号化されていないデータがストレージ・システム338に暴露されないように、カプセル化される。メタ生成器316は、ハードウェア(例えば、スマートNIC)、信頼できる計算環境などを介することを含む、従来技術において知られた任意の方法でカプセル化されてよい。
好ましい方法では、メタ生成器316は、データに関連付けられた重複排除メタデータを計算する。さまざまな構成では、メタ生成器316は、クライアント1 302またはストレージ・システム338あるいはその両方に配置されてよい。
好ましい方法では、メタ生成器316は、クライアント1 302側でデータに対してメタデータ動作を実行し、データ内のデータ重複排除の機会を識別する。メタ生成器316は、従来技術において知られた任意のデータ重複排除技術を使用してデータ重複排除の機会を識別する。1つの態様では、メタ生成器316は、スライド・ウィンドウ可変チャンク重複排除技術を使用してデータ重複排除の機会を識別する。メタ生成器316は、重複排除フィンガープリント(例えば、ローリング最小ハッシュ、暗号ハッシュなど)を識別するか、または計算するか、あるいはその両方を実行する。メタ生成器316は、ポインタ、チャンク長、チャンク・フィンガープリントなどを含む、データ重複排除の機会に関連付けられたメタデータ(例えば、重複排除情報)を生成する。下で詳細に説明されるように、チャンク・フィンガープリントなどのデータ重複排除情報の一部が、クライアントの秘密フィンガープリント鍵ks312を使用して暗号化されてよい。
1つの方法では、メタ生成器316は、従来技術において知られた任意のデータ圧縮技術を使用してデータを圧縮する。一部の方法では、チャンキングの前または後あるいはその両方で、さまざまな圧縮技術が適用されてよい。1つの構成では、チャンキング前の圧縮は、チャンキングの性能を改善する種類の圧縮であってよい。別の構成では、チャンキング後の圧縮は、結果として得られるチャンク・サイズを最小化することに向けて調整されてよい。
フィンガープリントの計算は、圧縮の前または後あるいはその両方で、データ・チャンクに対して実行されてよい。圧縮前のフィンガープリントの計算は、読み取り時の復元後にフィンガープリントを検証できるようにする。圧縮後のフィンガープリントの計算は、チャンクが圧縮された状態にある間に、フィンガープリントをチェックできるようにする。
クライアント1 302は、秘密データ鍵エンクリプタ318を備えている。当業者が本開示を読むときに理解するであろうように、秘密データ鍵エンクリプタ318は、秘密データ鍵(例えば、k0 306、k1 308、およびk2 310)を使用してデータを暗号化してよい。
クライアント1 302は、秘密重複排除鍵エンクリプタ320を備えている。当業者が本開示を読むときに理解するであろうように、秘密重複排除鍵エンクリプタ320は、秘密重複排除鍵kd314を使用してデータを暗号化してよい。
クライアント1 302は、秘密フィンガープリント鍵エンクリプタ324を備えている。当業者が本開示を読むときに理解するであろうように、秘密フィンガープリント鍵エンクリプタ324は、秘密フィンガープリント鍵ks312を使用してフィンガープリントを暗号化する。
クライアント1 302は、デチャンカ326を備えている。さまざまな構成では、デチャンカ326は、クライアント1 302もしくはストレージ・システム338またはその両方に配置されるか、あるいはクライアント1 302とストレージ・システム338の間のネットワーク上に配置されてよい。さまざまな構成では、デチャンカ(例えば、デチャンカに関連する機能を含む)が、クライアント上、クライアントをストレージに接続するネットワーク上、ストレージ・システムに取り付けられたユニット内(例えば、このユニットが、クライアントの鍵または暗号化されていないデータへのアクセスをストレージ・システムに提供しない場合)などに配置されてよい。
ストレージ・システムは、クライアントの鍵または暗号化されていないデータあるいはその両方に対するアクセス権限を持たないのが好ましい。デチャンカ326がストレージ・システム338に配置される構成では、デチャンカ326は、クライアントの鍵および暗号化されていないデータがストレージ・システム338に暴露されないように、カプセル化される。デチャンカ326は、ハードウェア(例えば、スマートNIC)、信頼できる計算環境などを介することを含む、従来技術において知られた任意の方法でカプセル化されてよい。
デチャンカ326は、ストレージ・システムから受信されたデータ・チャンクをチャンク解除してよく、データ・チャンクは、複数の暗号鍵を使用して暗号化される。好ましい方法では、複数の暗号鍵を使用して暗号化されたデータ・チャンクとは、少なくとも一部のデータ・チャンクが第1の鍵を使用して暗号化され、少なくとも一部の他のデータ・チャンクが第2の鍵を使用して暗号化され、第1の鍵および第2の鍵が異なる鍵である場合のことを指す。複数の暗号鍵を使用して暗号化されたデータ・チャンクは、本明細書で明示的に開示されない限り、連続的に、または同時に、あるいはその両方で複数のクライアントの秘密暗号鍵の対象になるデータ・チャンクとして解釈されるべきではない。
デチャンカ326は、どの暗号鍵を使用してデータ・チャンクが暗号化されているかを識別し、対応するデクリプタ(例えば、秘密データ鍵デクリプタ328、秘密フィンガープリント鍵デクリプタ330、秘密重複排除鍵デクリプタ332など)を使用してそのデータ・チャンクを復号してよい。当業者が本開示を読むときに理解するであろうように、各デクリプタは、対応する鍵を使用してデータを復号してよい。
アーキテクチャ400は、任意選択的に鍵IDマネージャ336を含む。当業者が本開示を読むときに理解するであろうように、鍵IDマネージャ336は、従来技術において知られた任意の方法で、鍵および任意の関連する鍵IDを格納するか、または管理するか、あるいはその両方を実行する。
アーキテクチャ400は、ストレージ・システム338を含んでいる。ストレージ・システム338は、従来技術において知られた任意の種類のストレージ・システムであってよい。ストレージ・システム338が、本明細書において示されたコンポーネントよりも多いかまたは少ないコンポーネントを含んでよいということが、当業者によって理解されるべきである。ストレージ・システム338は、本明細書に記載されたさまざまな重複排除動作を実行するのが好ましい。
ストレージ・システム338は、秘密ストレージ暗号鍵340を含んでいる。好ましい方法では秘密ストレージ暗号鍵340はストレージ・システム338から離れない。この好ましい方法では、秘密ストレージ暗号鍵340は、クライアント1 302、クライアント2 342、任意のその他のクライアント、任意のその他のストレージ・システムなどと共有されない。秘密ストレージ暗号鍵340は、対称鍵、非対称鍵などであってよい。図に示されているように、秘密ストレージ暗号鍵340は対称鍵である。
ストレージ・システム338は、重複排除マネージャ344を備えている。重複排除マネージャ344は、クライアント1 302によって提供された重複排除情報に基づいて、重複するデータを位置特定するか、または識別するか、あるいはその両方を実行する。チャンキングの重複排除の場合、重複しているデータ・チャンクを識別するために、重複排除情報がチャンク・メタデータと共に使用される。当業者が本開示を読むときに理解するであろうように、重複排除マネージャ344は、任意の関連する重複排除動作を実行する。データ・チャンクを重複排除するために、任意の既知の重複排除技術が使用されてよい。
ストレージ・システム338は、チャンク・ストレージ346を備えている。チャンク・ストレージ346は、従来技術において知られた任意のストレージ・コンポーネントを備えてよい。チャンク・ストレージ346は、従来技術において知られた任意の方法で、データ・チャンク、重複排除されたデータ、重複排除されていないデータ、暗号化データ、暗号化されていないデータ、重複排除情報などを格納してよい。1つの方法では、チャンク・ストレージ346は、データ・チャンク、重複排除されたデータ、重複排除されていないデータ、暗号化データ、暗号化されていないデータ、重複排除情報などをテーブルに格納する。
ストレージ・システム338は、ストレージ348に格納されたチャンク・メタデータを含む。ストレージ348は、従来技術において知られた任意のストレージ・コンポーネントを備えてよい。ストレージ348は、従来技術において知られた任意の方法で、チャンク・メタデータ、データ・チャンク、重複排除されたデータ、重複排除されていないデータ、暗号化データ、暗号化されていないデータ、重複排除情報などを格納してよい。チャンク・メタデータは、ポインタ、チャンク長、チャンク・フィンガープリントなどを含む、重複排除されていないデータ・チャンクまたは重複排除されたデータ・チャンクあるいはその両方に関連付けられた任意のメタデータを含んでよい。チャンク・メタデータは、重複排除マネージャ344から新しいデータを受信することに応答して更新されてよい。
ストレージ・システム338は、鍵IDリスト350を含んでいる。鍵IDリスト350は、データを暗号化するためにクライアント1 302によって使用される秘密データ鍵のセット(例えば、k0 306、k1 308、およびk2 310)に関連付けられた鍵IDのリストを含む。
ストレージ・システム338は、秘密ストレージ鍵エンクリプタ352を備えている。当業者が本開示を読むときに理解するであろうように、秘密ストレージ鍵エンクリプタ352は、任意選択的に、秘密ストレージ暗号鍵340を使用してデータを暗号化してよい。
ストレージ・システム338は、秘密ストレージ鍵デクリプタ354を備えている。当業者が本開示を読むときに理解するであろうように、秘密ストレージ鍵デクリプタ354は、秘密ストレージ暗号鍵340を使用して暗号化されたデータを復号してよい。
クライアント1 302の秘密データ鍵(例えば、k0 306、k1 308、およびk2 310)は、ストレージ・システム338と共有されず、秘密ストレージ暗号鍵340は、どのクライアントとも共有されない。クライアントまたはストレージ・システムあるいはその両方は、鍵マネージャ(任意選択的な鍵IDマネージャ336を参照)または任意の追加の手段あるいはその両方を使用して鍵を格納すること、または管理すること、あるいはその両方を実行することを選択してよい。
アーキテクチャ400は、クライアント2 342を含んでいる。図に示されているように、クライアント2 342は、保管時の暗号化ストレージを使用し、暗号化されていないデータ(例えば、非プライベート・データ)をストレージ・システム338に送信する。少なくとも一部の方法では、クライアント2 342は、データの機密性に関する懸念を持っていないため、暗号化されていないデータを送信してよい。暗号化されていないデータとは、ストレージ・システムが暗号化されていない状態で受信するデータのことを指してよい。さまざまな方法では、従来技術において知られた任意の通信暗号化が、さまざまなコンポーネント間で実装されてよい。従来技術において知られた方法に従って、さまざまなコンポーネントの少なくとも一部の間で、任意の通信暗号化が実装されてよい。
データを読み取る前に、クライアント1 302は、要求358をストレージ・システム338に発行してよい。好ましい方法では、要求358は、要求358に関連付けられた鍵IDリスト350からの鍵グループ情報に対する要求を含む。鍵IDリスト350からのクライアントの鍵グループ情報は、クライアントが使用する鍵のセットをストレージ・システム338に知らせ、クライアントが使用する各鍵を一意に識別する。鍵IDリスト350からのクライアントの鍵グループ情報は、クライアント識別子、グループ識別子、グループが平文(例えば、暗号化されていないチャンク)に対する重複排除を許可するかどうかを示すタグ、グループ内の鍵IDのリスト、および鍵IDごとの任意の関連する鍵タイプ識別子(例えば、データ、重複排除など)などを含んでよい。鍵IDリスト350からのクライアントの鍵グループ情報は、鍵IDに関連付けられた鍵を含まないのが好ましい。
クライアント1 302は、読み取りデータに関連付けられた鍵ID値を含んでいる読み取り要求402をストレージ・システム338に送信する。一部の方法では、読み取り要求402に対する許可は、読み取り要求402を含んでいるチャンクごとに、ゼロ以外の参照カウントを必要としてよい。
重複排除マネージャ344は、チャンク・ストレージ346(例えば、メタデータ・ストレージ)に関連付けられたチャンク・メタデータを使用して、読み取り要求402に関連付けられているチャンクに関連付けられた情報を取り出す。チャンク・メタデータは、各チャンクを暗号化するために使用された鍵の鍵ID、参照カウント、位置、任意のその他のチャンク情報など、またはこれらの任意の組合せを含む。動作404で、重複排除マネージャ344は、ストレージ・システム338上のチャンク・ストレージ346に対してチャンクの適切なセットを要求する。各チャンクおよび関連するメタデータ(例えば、チャンクごとに鍵IDを含んでいる)が、秘密ストレージ鍵デクリプタ354に送信される(406)。各チャンクおよび関連するメタデータ(例えば、チャンクごとに鍵IDを含んでいる)が、デチャンカ326に送信される(408)。デチャンカ326は、チャンクごとに鍵IDを調べる。デチャンカ326は、鍵IDに関連付けられた鍵に適したデクリプタ(例えば、秘密データ鍵デクリプタ328、秘密重複排除鍵デクリプタ332、平文の鍵IDの場合はデクリプタを使用しない、など)を使用して各チャンクを復号する。当業者が本開示を読むときに理解するであろうように、各デクリプタは、対応する鍵を使用してデータを復号してよい。
デチャンカ326は、任意の必要な復元を実行し、チャンクをマージしてクライアント1 302の出力データ414を生成する。一部の方法では、クライアント1 302によって、クライアントの鍵をプライベートに保つ手段としてデチャンカ326から分離しているクライアント1 302のデクリプタ(例えば、秘密フィンガープリント鍵デクリプタ330、秘密データ鍵デクリプタ328、秘密重複排除鍵デクリプタ332など)が提供されてよい。デクリプタ(例えば、秘密フィンガープリント鍵デクリプタ330、秘密データ鍵デクリプタ328、秘密重複排除鍵デクリプタ332など)は、(示されているような)別々のコンポーネントであってよく、または少なくとも2つのデクリプタは、当業者によって理解されるであろうように、チャンクごとに関連する復号鍵が適切に提供される単一のユニットであってよく、あるいはその両方であってよい。
さまざまな動作では、重複排除マネージャ344は、チャンク・メタデータを使用して、読み取り要求402に関連付けられたデータ・チャンクを識別する。識別されたデータ・チャンクが、チャンク・ストレージ346から読み取られる。重複排除マネージャ344は、読み取り要求402からのポインタ、フィンガープリント、チャンク長などを、チャンク・メタデータに格納されたポインタ、フィンガープリント、チャンク長などと比較する。好ましい方法では、チャンク・メタデータは、各データ・チャンクを暗号化するために使用される鍵の識別子(例えば、鍵ID)を含む。当業者が本開示を読むときに理解するであろうように、暗号化されたデータ・チャンクは、適切なデクリプタを使用して復号される。例えば、秘密ストレージ暗号鍵340を使用して暗号化されたデータ・チャンクは、秘密ストレージ鍵デクリプタ354に送信されてよい。秘密ストレージ鍵デクリプタ354は、秘密ストレージ暗号鍵340を使用して暗号化されたデータを復号してよい。
デチャンカ326は、ストレージ・システムから受信されたデータ・チャンクをチャンク解除してよく、データ・チャンクは、複数の暗号鍵を使用して暗号化される。好ましい方法では、複数の暗号鍵を使用して暗号化されたデータ・チャンクとは、少なくとも一部のデータ・チャンクが第1の鍵を使用して暗号化され、少なくとも一部の他のデータ・チャンクが第2の鍵を使用して暗号化され、第1の鍵および第2の鍵が異なる鍵である場合のことを指す。複数の暗号鍵を使用して暗号化されたデータ・チャンクは、本明細書で明示的に開示されない限り、連続的に、または同時に、あるいはその両方で複数のクライアントの秘密暗号鍵の対象になるデータ・チャンクとして解釈されるべきではない。デチャンカ326は、どの暗号鍵を使用してデータ・チャンクが暗号化されているかを識別し、対応するデクリプタ(例えば、秘密フィンガープリント鍵デクリプタ330、秘密データ鍵デクリプタ328、秘密重複排除鍵デクリプタ332など)を使用してそのデータ・チャンクを復号してよい。当業者が本開示を読むときに理解するであろうように、各デクリプタは、対応する鍵を使用して暗号化されたデータ・チャンクを復号してよい。
さまざまな方法では、デチャンカ326は、従来技術において知られた任意の復元動作を実行する。デチャンカ326は、データ・チャンクをマージして、クライアント1 302の出力データ414を生成してよい。
当業者が本開示を読むときに理解するであろうように、デクリプタは、さまざまな秘密鍵を秘密に保つためにデチャンカ326から分離しているクライアント1 302によって提供されてよい。
ストレージ・システム338から送信された(408)クライアントの鍵を使用して暗号化されたデータ・チャンクは、各チャンクが正しく配信され、適切な鍵を使用して復号されたことを検証するためのチャンク・フィンガープリントを含んでいるデータ・チャンク・メタデータを含んでよい。データ・チャンク・メタデータは、エンドツーエンドのチェックを提供してよい。
アーキテクチャ400の好ましい構成では、秘密鍵がクライアント1 302から離れることなく、さまざまな圧縮技術または重複排除技術あるいはその両方が実行されてよい。秘密鍵は、ストレージ・システム338、クライアント2 342、任意のその他のクライアント、任意のサード・パーティのサービス、任意のその他のストレージ・システムなどには、使用することができない。重複排除プロセスの一部(例えば、アーキテクチャ400におけるチャンキング・プロセス)は、クライアント側で実行されるのが好ましく、それによって、秘密鍵の外部の可視性を大幅に低減するか、または除去する。
好ましい方法では、従来技術において知られた任意の暗号化方式を使用して、クライアントとストレージ・システムの間の通信が暗号化されてよい。例えば、暗号化方式は、標準的なトランスポート暗号化(例えば、トランスポート層セキュリティ(TLS:transport layer security))であってよい。
好ましい方法では、従来の重複排除動作とは対照的に、暗号化されているチャンクの鍵を示すために、追加のチャンク・メタデータが各データ・チャンクに関連付けられる。異なるクライアントが、同じである(例えば、同一のフィンガープリントで重複する)データ・チャンクを含んでよい。しかし、異なるクライアントからの重複するデータ・チャンクが、異なる鍵を使用して暗号化される場合、第2のクライアントのデータ・チャンクに対する第1のクライアントのデータ・チャンクの従来の重複排除は、鍵の共有を必要とする。全く対照的に、本開示のさまざまな構成は、データ・チャンク、インデックス、タグ、フィンガープリント、鍵IDなどを暗号化するために使用される鍵を識別する情報を含んでいるチャンク識別子を提供する。クライアント1 302によって、任意の入出力(I/O:input/output)動作の前に、鍵IDに関する情報がストレージ・システム338に提供されてよい。
データの機密性の文脈において、鍵IDは鍵自体ではない。例えば、提供された鍵IDは、鍵グループ304の秘密データ鍵のSHA256などの暗号ハッシュであってよい。別の例では、鍵IDは、鍵グループ304の秘密データ鍵の一意のインデックス番号であってよい。ストレージ・システム338は、内部参照鍵IDを作成してよい。例えば、ストレージ・システム338は、鍵ID(例えば、鍵IDリスト350)のインデックス・テーブルを作成してよい。
チャンク・メタデータは、さまざまな方法では、データのいくつの異なる部分がデータ・チャンクを指し示しているかを示すために、参照カウンタを含んでよい。ソース鍵IDおよび各鍵IDの参照カウントを示すメタデータが、各データ・チャンクに追加されてよい。要求の鍵IDのゼロ以外の参照カウントを含まないチャンクを読み取ろうとする試みが、傍受されてよい。この傍受は、重複排除されたデータ・チャンクに対するアクセス制御を提供する。例えば、秘密データ鍵k1 308に関連付けられた鍵IDを使用するクライアント1 302は、重複排除されたチャンクAを含んでいるデータを含んでよい。チャンクAは、チャンクAに対して重複排除された秘密データ鍵k1 308を使用して暗号化されたデータの部分のみであってよい。クライアント1 302は、重複排除されたチャンクAを含んでいるデータを削除してよい。秘密データ鍵k1 308に関連付けられたクライアント1 302の鍵IDの参照カウンタが、0にデクリメントされる。クライアント1 302の秘密データ鍵k1 308に関連付けられた鍵IDを使用してチャンクAを読み取ろうとするその後のすべての試みが阻止されてよく、ゼロ以外の関連する参照カウントを含むすべての要求が許可されてよい。
鍵グループ304からの秘密データ鍵を使用して暗号化されたデータが最初に重複排除されない場合、このデータは、一致するフィンガープリントを含む秘密ストレージ暗号鍵340を使用して暗号化されたデータ・チャンクが書き込まれるか、または暗号化されていないデータ・チャンクが書き込まれるか、あるいはその両方に応答して、重複排除されてよい。最初に重複排除されないデータ・チャンクを重複排除するためのプロセスは、本明細書に記載されたさまざまな構成において、バックポーティングと呼ばれてよい。バックポート動作は、(例えば、ストレージ・システム338が使用できる鍵を使用して暗号化された)新しいデータ・チャンクを格納する重複排除動作を含む。具体的には、元のチャンクが秘密データ鍵で書き込まれており、バックポーティングが、通常は同じ鍵グループの秘密重複排除鍵で書き込まれる新しいチャンクを格納する。新しいチャンクは、平文に対する重複排除を許可するフラグがオンである場合にのみ、ストレージに知られている鍵で書き込まれ、新しいチャンクは、平文で書き込まれ(例えば、ストレージ・システム338に送信され)、ストレージ・システムが、それ自身の秘密ストレージ暗号鍵340で保管時のデータを暗号化する。
バックポートは、一致するフィンガープリントを含んでいるが、異なる鍵IDを含んでいるすべての既存のチャンクを削除することを含む。格納されたデータ・チャンクまたは削除されたデータ・チャンクあるいはその両方のメタデータが、新しいデータ・チャンクを指し示すように(例えば、新しいデータ・チャンクが最初に存在していたかのように)変換されてよい。異なる鍵でデータ・チャンクが書き込まれる順序は、最終的な重複排除の効率に影響を与えない。データ・チャンクの多くのプライベート・コピーが存在する場合、データ・チャンクのコピーのその後のすべての保管時の書き込みまたは暗号化されない書き込みあるいはその両方は、本明細書に記載されたバックポーティング技術を使用して、システム上に格納される容量を低減する。
本明細書に記載されたさまざまな構成は、非対称暗号鍵(例えば、PKI)を使用して実現されてよい。対称鍵暗号化は、相対的に大きいデータ・セットの場合、非対称鍵暗号化よりも好ましいことがある。非対称鍵暗号化は、ストレージ・システムと共有される公開鍵、およびストレージ・システムと共有されない秘密鍵を含んでいるクライアントを含む。ストレージ・システムは、クライアントと共有される公開鍵、およびクライアントと共有されない秘密鍵の両方を含んでよい。PKIにおける公開鍵は秘密ではないが、公開鍵でデータを暗号化するには、データを復号するための対応する秘密鍵が必要である。
図5は、さまざまな構成に従う高レベルのアーキテクチャである。アーキテクチャ500は、さまざまな構成において、特に図1~図4および図6~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図5において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ500に含まれてよい。
アーキテクチャ500は、クライアントc2 502からストレージ504に平文でデータを書き込む例示的な実装を示している。アーキテクチャ500は、クライアントc2の鍵グループg0情報506を含んでいる。クライアントc2の鍵グループg0情報506は、dct(平文の重複排除)フラグを含んでいる。dctフラグは、平文に対する重複排除が許可されることを示すために、1に設定されている。鍵グループ内の唯一の鍵がclr(平文)であり、この構成では暗号化が使用されないことを示している。データが暗号化されないことを示すために、標準的な鍵IDであるkid.clrが使用される。例えば、すべてのクライアントが同じ平文の鍵IDを持つように、0の鍵ID値がkid.clrとして予約されてよい。鍵は、ストレージ504に送信されるグループ情報の一部としてストレージ504に送信されない(送信動作は示されていない)。
ストレージ504は、メタ生成器508を含んでいる。メタ生成器508は、図3~図4を参照して上で詳細に説明されたメタ生成器316に類似する方法で実行する。他の方法では、メタ生成器508は、クライアントc2 502に位置する。
クライアントc2 502は、データm2を含むデータ・オブジェクトM2 510を書き込む。動作512は、データm2を含むデータ・オブジェクトM2 510をストレージ504上のメタ生成器508に送信することを含む。示されているように、メタ生成器508は、2つのデータ・チャンク514(例えば、データ・チャンクd3 516およびデータ・チャンクd4 518)を識別する。データ・チャンクd3 516は、フィンガープリントS3およびデータd3に関連付けられている。データ・チャンクd4 518は、フィンガープリントS4およびデータd4に関連付けられている。上で詳細に説明されたように、さまざまな方法では、フィンガープリントは各データ・チャンクのチャンク長を含んでよい。メタデータ520は、鍵グループ識別子g0、およびデータが平文であることを示す鍵ID kid.clrを含んでいる。動作522で、データ・チャンクが格納される。動作524は、kid.clrでの(例えば、平文で格納された)フィンガープリントS3と、関連するデータd3とを含むデータ・チャンクd3 516を格納する。動作526は、kid.clrでの(例えば、平文で格納された)フィンガープリントS4と、関連するデータd4とを含むデータ・チャンクd4 518を格納する。
テーブル528は、この時点ではどのチャンクも重複排除されていないと仮定して、チャンクの各々に関連付けられた重複排除鍵IDリスト・メタデータを含んでいる。テーブル528の1番目の行は、フィンガープリントS3を含んでいるデータ・チャンクd3 516がクライアントc2 502によって所有されていることを示している。テーブル528の1番目の行は、フィンガープリントS3を含んでいるデータ・チャンクd3 516が、kid.clrで暗号化され(例えば、データ・チャンクが平文である)、kid.clr鍵IDを使用することのみによってアクセス可能であることを示している。テーブル528は、フィンガープリントS3を含んでいるデータ・チャンクd3 516が1の参照カウントを含んでいること、およびフィンガープリントS3を含んでいるデータ・チャンクd3 516が位置l1に格納されていることを示している。テーブル528の2番目の行は、位置l2に格納されている、フィンガープリントS4を含んでいるデータ・チャンクd4 518に関する対応する情報を示している。
図6は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ600は、さまざまな構成において、特に図1~図5および図7~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図6において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ600に含まれてよい。
アーキテクチャ600は、ストレージ504への、鍵k0での、クライアントc0 602によるさらなるデータの追加の例示的な実装を示している。クライアントc0の鍵グループg0情報604は、平文で書き込まれたデータに加えて、グループg0に属する鍵IDで書き込まれたデータに対する重複排除が許可されることを示すために、1に設定されたdctフラグ(平文に対する重複排除)を含んでいる。具体的には、dct=1のフラグが、平文に対する重複排除を許可する。クライアントc0の鍵グループg0情報604は、鍵グループg0が、各鍵ID kid.k0およびkid.k1と共にデータ鍵k0およびデータ鍵k1を含んでいることを示している。クライアントc0の鍵グループg0情報604は、鍵ID kid.kdと共に重複排除鍵kdを含んでいる。クライアントc0の鍵グループg0情報604は、前述したように、関連する鍵ID kid.clrと共に平文のデータ鍵clrを含んでいる。平文の重複排除が許可され、フィンガープリントがフィンガープリント鍵で暗号化されないことを示すために、dctが1に等しい。
データが暗号化される場合、メタ生成器606がクライアントc0 602に存在する。メタ生成器606は、図3~図4を参照して上で詳細に説明されたメタ生成器316に類似している。
クライアントc0 602は、データm0を含むデータ・オブジェクトM0 608を書き込む。動作610は、データm0を含むデータ・オブジェクトM0 608をメタ生成器606に送信することを含む。示されているように、メタ生成器606は、3つのデータ・チャンク612(例えば、データ・チャンクd3 614、データ・チャンクd2 616、およびデータ・チャンクd0 618)を識別する。データ・チャンクd3 614は、フィンガープリントS3およびデータd3に関連付けられている。データ・チャンクd2 616は、フィンガープリントS2およびデータd2に関連付けられている。データ・チャンクd0 618は、フィンガープリントS0およびデータd0に関連付けられている。上で詳細に説明されたように、さまざまな方法では、フィンガープリントは各データ・チャンクのチャンク長を含んでよい。メタデータ620は、鍵グループ識別子g0、および鍵ID kid.k0に関連付けられた秘密鍵を使用してデータが暗号化されることを示す鍵ID kid.k0を含んでいる。動作622は、フィンガープリントS0、S2、およびS3をストレージ504に送信することを含む。鍵グループ識別子g0は、ストレージ504が、重複排除鍵IDが前に転送されたグループ情報(例えば、クライアントc0の鍵グループg0情報604、図3~図4を参照して要求358も参照する)からのkid.kdであることを確認できるようにする。鍵グループ識別子g0は、ストレージ504が、グループg0のクライアントc0 602に関して、平文データに対する重複排除が許可されることを確認できるようにする。
ストレージ504は、現在のチャンク・メタデータ・テーブル528(図5を参照)を調べ、S0およびS2が新しいフィンガープリントであるということを決定する。ストレージ504は、チャンク・メタデータ・テーブル528を調べ、S3がkid.clrですでに存在するということを決定する。クライアントc0 602のグループg0が平文の重複排除を許可し、kid.clrがすべてのクライアントによって使用可能である(例えば、kid.clrが平文を示す)ため、チャンクS3(例えば、データ・チャンクd3 614)が重複排除されてよい。
ストレージ504は、クライアントc0 602がkid.k0でチャンクS0(例えば、データ・チャンクd0 618)を送信し、kid.k0でチャンクS2(例えば、データ・チャンクd2 616)を送信することを要求してよい(624)。ストレージ504は、チャンクS3を要求しない。クライアントc0 602は、データ・チャンクd0を鍵k0で暗号化し(626)、暗号化されたチャンクを(例えば、フィンガープリントS0および鍵ID kid.k0を含んでいる)メタデータと共にストレージ504に送信する(628)。同様に、データ・チャンクd2を暗号化した(630)後に、チャンクS2がストレージ504に送信される(632)。ストレージ504は、チャンクを格納し、チャンク・メタデータ・テーブル528を更新する。テーブル528の行1は、S3に関して、チャンクがクライアントc0 602によってkid.k0でやはり書き込まれており、この鍵IDでの1の参照カウントを含んでいるが、暗号鍵IDをkid.clrのままにしているという情報を含めるための更新を示している。S3は、kid.clrまたはkid.k0のどちらかを使用することによってアクセスされてよい。テーブル528の行3は、チャンクS0が、鍵ID kid.k0に関連付けられた秘密鍵で暗号化されて、クライアントc0 602によって書き込まれており、kid.k0を使用してアクセス可能であり、この鍵IDでの1の参照カウントを含んでおり、位置l3に格納されているということを示す新しいメタデータを含んでいる。テーブル528の行4は、位置l4に格納されているチャンクS2に関する同様の情報を示している。
図7は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ700は、さまざまな構成において、特に図1~図6および図8~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図7において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ700に含まれてよい。
アーキテクチャ700は、ストレージ504への、鍵k1での、クライアントc0 602によるさらなるデータの追加の例示的な実装を示している。鍵k1は、鍵グループg0の一部である(図6に示されているクライアントc0の鍵グループg0情報604を参照)。
クライアントc0 602は、データm1を含むデータ・オブジェクトM1 702を書き込む。動作704は、データm1を含むデータ・オブジェクトM1 702をメタ生成器606に送信することを含む。示されているように、メタ生成器606は、2つのデータ・チャンク706(例えば、データ・チャンクd1 708およびデータ・チャンクd2 710)を識別する。データ・チャンクd1 708は、フィンガープリントS1およびデータd1に関連付けられている。データ・チャンクd2 710は、フィンガープリントS2およびデータd2に関連付けられている。メタデータ712は、鍵グループ識別子g0、および鍵ID kid.k1に関連付けられた秘密鍵を使用してデータが暗号化されることを示す鍵ID kid.k1を含んでいる。動作714は、フィンガープリントS1およびS2をストレージ504に送信することを含む。鍵グループ識別子g0は、ストレージ504が、重複排除鍵IDが前に転送されたグループ情報(例えば、クライアントc0の鍵グループg0情報604、図3を参照して要求358も参照する)からのkid.kdであることを確認できるようにする。
ストレージ504は、現在のチャンク・メタデータ・テーブル528を調べ、S1が新しいフィンガープリントであるということを決定する。ストレージ504は、現在のチャンク・メタデータ・テーブル528を調べ、S2がkid.k0ですでに存在するということを決定する。グループg0の重複排除kid.kdを使用してチャンクS2(例えば、データ・チャンクd2 710)が重複排除されてよい。ストレージ504は、クライアントc0 602がkid.k1でチャンクS1(例えば、データ・チャンクd1 708)を送信し、kid.kdでチャンクS2を送信することを要求してよい(716)。クライアントc0 602は、データ・チャンクd1を鍵k1で暗号化し(718)、暗号化されたチャンクを(例えば、フィンガープリントS1および鍵ID kid.k1を含んでいる)メタデータと共にストレージ504に送信する(720)。クライアントc0 602は、データ・チャンクd2を鍵kdで暗号化し(722)、暗号化されたチャンクを(例えば、フィンガープリントS2および鍵ID kid.kdを含んでいる)メタデータと共にストレージ504に送信する(724)。この後者の動作は、チャンクS2を鍵ID kid.k0から鍵ID kid.kdにバックポートし、このようにして、鍵k0に関連付けられた鍵ユーザと鍵k1に関連付けられた鍵ユーザの両方によってチャンクが復号されることを可能にする。
ストレージ504は、チャンクを格納し、チャンク・メタデータ・テーブル528を更新する。テーブル528の行4は、S2に関して、チャンクがクライアントc0 602によってkid.k1でやはり書き込まれており、この鍵IDでの1の参照カウントを含み、暗号鍵IDをkid.kdに変更するという情報を含めるための更新を示している。位置が、書き込みシステム上のコピーの場合などの、l5として示されている。直接上書きシステムでは、位置はl4にとどまる。行5は、チャンクS1が、鍵ID kid.k1に関連付けられた秘密鍵で暗号化されて、クライアントc0 602によって書き込まれており、kid.k1を使用してアクセスされ、この鍵での1の参照カウントを含んでおり、位置l6に格納されているということを示す新しいメタデータである。
図8は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ800は、さまざまな構成において、特に図1~図7および図9~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図8において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ800に含まれてよい。
平文を使用する重複排除が許可されない場合、データ機密性が向上する。アーキテクチャ800は、平文に対する重複排除を許可しない、ストレージ504への、鍵k2での、クライアントc0 602によるさらなるデータの追加の例示的な実装を示している。このアーキテクチャでは、動作が図5に示された動作に従うということが仮定される。
クライアントc0の鍵グループg1情報802は、グループg1に属する鍵IDで書き込まれたデータが重複排除され得るが、平文で書き込まれたデータが重複排除され得ないことを示すために、0に設定されたdctフラグ(平文に対する重複排除)を含んでいる。クライアントc0の鍵グループg1情報802は、各鍵ID kid.k2およびkid.k3と共にデータ鍵k2およびk3を含んでいる。クライアントc0の鍵グループg1情報802は、鍵ID kid.keと共に重複排除鍵keを含んでいる。クライアントc0の鍵グループg1情報802は、平文に対する重複排除が許可されない場合の鍵ID kid.ksを含んでいるフィンガープリント鍵ksを含む。
データが暗号化される場合、メタ生成器606がクライアントc0 602に存在する。メタ生成器606は、図3~図4を参照して上で詳細に説明されたメタ生成器316に類似している。
クライアントc0 602は、データm0を含むデータ・オブジェクトM0 804を書き込む。動作806は、データm0を含むデータ・オブジェクトM0 804をメタ生成器606に送信することを含む。示されているように、メタ生成器606は、3つのデータ・チャンク808(例えば、データ・チャンクd3 810、データ・チャンクd2 812、およびデータ・チャンクd0 814)を識別する。データ・チャンクd3 810は、フィンガープリントS3およびデータd3に関連付けられている。データ・チャンクd2 812は、フィンガープリントS2およびデータd2に関連付けられている。データ・チャンクd0 814は、フィンガープリントS0およびデータd0に関連付けられている。816で、秘密フィンガープリント鍵ksを使用してフィンガープリントが暗号化される。S0がS0’に暗号化され、S2がS2’に暗号化され、S3がS3’に暗号化される。鍵グループ識別子g1および鍵ID kid.k2を含んでいる(例えば、鍵ID kid.k2に関連付けられた秘密鍵を使用してデータが暗号化されることを示す)メタデータ818、ならびに暗号化されたフィンガープリントS0’、S2’、およびS3’が、ストレージ504に送信される(820)。鍵グループ識別子g1は、ストレージ504が、重複排除鍵IDが前に転送されたグループ情報(例えば、クライアントc0の鍵グループg1情報802、図3を参照して要求358も参照する)からのkid.keであることを確認できるようにする。鍵グループ識別子g1は、ストレージ504が、クライアントc0のグループg1に関して、平文データに対する重複排除が許可されないことを確認できるようにする。
ストレージ504は、図5の現在のチャンク・メタデータ・テーブル528を調べ、S0’、S2’およびS3’が新しいフィンガープリントであるということを決定する。チャンクS3(例えば、データ・チャンクd3 810)のフィンガープリントがS3’に暗号化され、この値がストレージ504に渡される。したがって、データの内容d3が、テーブル528に格納され、クライアントc2によって書き込まれたチャンクS3に一致したとしても(図5を参照)、暗号化されたフィンガープリントS3’が一致しないため、ストレージ504は、このチャンクに対して重複排除しない。したがって、フィンガープリントの暗号化は、クライアントc0のグループg1の重複排除領域を、他のグループから暗号によって分離する。ストレージ504は、第1のグループ内のいずれかのデータの内容が、第2のグループ内のいずれかの内容に一致するかどうかを判定することができない。
平文の重複排除が許可されない場合、ストレージ504は、平文のチャンクのフィンガープリントを比較しない。ストレージ504の重複排除動作は、フィンガープリントの比較を、この動作の鍵グループに属する鍵IDに制限する。異なるグループからのフィンガープリントが一致する場合でも、重複排除は実行されない(例えば、一般に、暗号ハッシュのフィンガープリントを使用すると、そのような衝突の確率は無視できるほど小さくなり得る)。これによって、フィンガープリントの一致の検索に必要なテーブル空間を減らす。例えば、データ・チャンク810およびデータ・チャンク516(図5)の平文のフィンガープリントが一致したとしても、メタデータのフィンガープリントS3’およびS3は一致しない。
ストレージ504は、クライアントc0 602がkid.k2でチャンクS0’、S2’、およびS3’を送信することを要求する(822)。クライアントc0 602は、データ・チャンクd0を鍵k2で暗号化し(824)、暗号化されたチャンクを、暗号化されたフィンガープリントS0’および鍵ID kid.k2を含んでいるメタデータと共に、ストレージ504に送信する(826)。同様に、チャンクS2およびS3がそれぞれ暗号化される(828、830)。各暗号化されたフィンガープリントおよび鍵IDを含んでいる暗号化されたチャンクおよびメタデータが、ストレージ504にそれぞれ送信される(832、834)。
ストレージ504は、チャンクを格納し、チャンク・メタデータ・テーブル528を更新する。行3は、チャンクS0’が、kid.k2に関連付けられた鍵で暗号化されて、クライアントc0 602によって書き込まれており、kid.k2を使用してアクセス可能であり、鍵ID kid.k2での1の参照カウントを含んでおり、位置l3に格納されているということを示す新しいメタデータである。行4は、チャンクS2’に関する同様の情報を示している。行5は、チャンクS3’に関する同様の情報を示している。
図9は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ900は、さまざまな構成において、特に図1~図8および図10~図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図9において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ900に含まれてよい。
アーキテクチャ900は、鍵k3での、クライアントc0 602によるさらなるデータの追加の例示的な実装を示している。鍵k3は、鍵グループg1の一部である(図8のクライアントの鍵グループ情報802を参照)。このアーキテクチャでは、動作が図8に示された動作に従うということが仮定される。
クライアントc0 602は、データm1を含むデータ・オブジェクトM1 902を書き込む。動作904は、データm1を含むデータ・オブジェクトM1 902をメタ生成器606に送信することを含む。示されているように、メタ生成器606は、2つのデータ・チャンク906(例えば、データ・チャンクd1 908およびデータ・チャンクd2 910)を識別する。データ・チャンクd1 908は、フィンガープリントS1およびデータd1に関連付けられている。データ・チャンクd2 910は、フィンガープリントS2およびデータd2に関連付けられている。912で、秘密フィンガープリント鍵ksを使用してフィンガープリントが暗号化される。S1がS1’に暗号化され、S2がS2’に暗号化される。鍵グループ識別子g1および鍵ID kid.k3を含んでいる(例えば、鍵ID kid.k3に関連付けられた秘密鍵を使用してデータが暗号化されることを示す)メタデータ914、ならびに暗号化されたフィンガープリントS1’およびS2’が、ストレージ504に送信される(916)。鍵グループ識別子g1は、ストレージ504が、重複排除鍵IDが前に転送されたグループ情報(例えば、クライアントc0の鍵グループg1情報802、図3を参照して要求358も参照する)からのkid.keであることを確認できるようにする。
ストレージ504は、図8のチャンク・メタデータ・テーブル528を調べ、S1’が新しいフィンガープリントであり、S2’がkid.k2ですでに存在するということを決定する。グループg1の重複排除鍵keを使用してチャンクS2’が重複排除されてよい。ストレージ504は、クライアントc0 602がkid.k3でチャンクS1’を送信し、kid.keでチャンクS2’を送信することを要求する(918)。クライアントc0 602は、データ・チャンクd1を鍵k3で暗号化し(920)、暗号化されたチャンクを、暗号化されたフィンガープリントS1’および鍵ID kid.k3を含んでいるメタデータと共に、ストレージ504に送信する(922)。同様にクライアントc0 602は、データ・チャンクd2を鍵keで暗号化し(924)、暗号化されたチャンクを、暗号化されたフィンガープリントS2’および鍵ID kid.keを含んでいるメタデータと共に、ストレージ504に送信する(926)。この後者の動作は、チャンクS2’を鍵ID kid.k2から鍵ID kid.keにバックポートし、このようにして、鍵k1に関連付けられた鍵ユーザと鍵k2に関連付けられた鍵ユーザの両方によってチャンクが復号されることを可能にする。
ストレージ504は、チャンクを格納し、チャンク・メタデータ・テーブル528を更新する。行4は、S2’に関して、チャンクがクライアントc0 602によってkid.k1でやはり書き込まれており、鍵ID kid.k1での1の参照カウントを含み、暗号鍵IDをkid.keとして変更し、現在位置l6に格納されているという情報を含めるための更新を示している。行6は、チャンクS1’が、kid.k3に関連付けられた鍵で暗号化されて、クライアントc0 602によって書き込まれており、kid.k3を使用してアクセス可能であり、鍵ID kid.k3での1の参照カウントを含んでおり、位置l7に格納されているということを示す新しいメタデータである。
前述のアーキテクチャにおいて説明されたように、チャンクごとに各鍵IDの参照カウントを保持することは有益である。したがって、データ・チャンクを読み取るために、特定の鍵IDでのゼロ以外の参照カウントが必要とされる。チャンクが正の参照カウントを含んでいる場合、このカウントは、カウンタが0に達するまで、チャンクの参照が削除されるたびにデクリメントされる。参照カウントが0に達した後に、チャンクのアクセス鍵IDリストから鍵IDが除去されてよい。この除去は、他の鍵IDでの参照カウントがゼロ以外である間、発生する。
図10は、さまざまな構成に従う高レベルのアーキテクチャを示している。アーキテクチャ1000は、さまざまな構成において、特に図1~図9および図11に示された環境のいずれかにおいて、本発明に従って実装されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図10において具体的に説明された要素よりも多いか、または少ない要素がアーキテクチャ1000に含まれてよい。
アーキテクチャ1000は、データ・オブジェクトM1に対する例示的な読み取り動作を示している(図9を参照)。データ・オブジェクトM1は、鍵ID kid.k3で書き込まれた。動作1002は、クライアントc0 602が、グループg1およびkid.k3をタグとして含む、M1に対する読み取り要求を、ストレージ504に発行することを含む。ストレージ504は、当業者に知られている方法で(例えば、オブジェクト・チャンク・マニフェスト(object chunk manifest)から)、チャンクS1’およびS2’がオブジェクトM1を含むということを決定する。動作1004で、ストレージ504がS1’およびS2’を読み取る。チャンクS1’および関連するメタデータ1006、ならびにチャンクS2’および関連するメタデータ1008が、チャンク解除するためにクライアントc0 602にそれぞれ送信される(1010、1012)。メタデータ内の鍵ID kid.k3から決定されたデータ鍵k3を使用して、チャンクS1’が復号される(1014)。メタデータ内の鍵ID kid.keから決定された重複排除鍵keを使用して、チャンクS2’が復号される(1016)。鍵グループg1のポリシーから決定されたフィンガープリント鍵ksを使用して、フィンガープリントが復号される(1018)(復号1018へのフィンガープリントの経路は示されていない)。データの破損をチェックするために、復号されたフィンガープリント1020(S1およびS2)が、復号されたデータ・チャンクd1 1024およびd2 1030のフィンガープリントと比較されてよい。復号されたチャンク1024、1030が、チャンク・マージャー(chunk merger)1032にそれぞれ送信される(1028、1026)。マージされたチャンク1022は、データm1を含むデータ・オブジェクトM1である。データ・オブジェクトM1が返され(1034)、読み取り動作が完了する。
ここで図11を参照すると、1つの態様に従って、方法1100のフローチャートが示されている。方法1100は、さまざまな態様において、特に図1~図10に示された環境のいずれかにおいて、本発明に従って実行されてよい。当然、当業者が本説明を読んだときに理解するであろうように、図11において具体的に説明された動作よりも多いか、または少ない動作が方法1100に含まれてよい。
方法1100のステップの各々は、動作環境の任意の適切なコンポーネントによって実行されてよい。例えば、さまざまな態様では、方法1100は、コンピュータ、または1つまたは複数のプロセッサを含んでいるその他のデバイスによって、部分的に、または全体的に実行されてよい。ハードウェアまたはソフトウェアあるいはその両方において実装され、好ましくは少なくとも1つのハードウェア・コンポーネントを含んでいるプロセッサ(例えば、処理回路、チップ、またはモジュール、あるいはその組合せ)が、方法1100の1つまたは複数のステップを実行するために任意のデバイス内で利用されてよい。例示的なプロセッサは、中央処理装置(CPU:central processing unit)、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)など、これらの組合せ、または従来技術において知られた任意のその他の適切なコンピューティング・デバイスを含むが、これらに限定されない。
図11に示されているように、方法1100は動作1102を含んでいる。動作1102は、鍵グループ情報をストレージ・システムに送信することを含む。鍵グループ情報は、従来技術において知られた任意の方法でストレージ・システムに送信されてよい。鍵グループ情報は、鍵グループ内のクライアント・データ鍵の鍵ID情報を含むのが好ましい。鍵グループに属するクライアント・データ鍵は、クライアントの秘密鍵またはクライアントの重複排除鍵のいずれかであってよい。鍵グループ情報は、実際のクライアントの秘密鍵も実際のクライアントの重複排除鍵も含まないのが好ましい。好ましい方法では、鍵グループは、データを暗号化するためのクライアントの秘密鍵を含む。クライアントの秘密鍵は、鍵グループに関連付けられる。好ましい方法では、鍵IDは、鍵自体から容易に予測できないか、または決定できないか、あるいはその両方である。ランダムな値または別の鍵で暗号化された値あるいはその両方が、鍵IDを生成するために使用されてよい。鍵IDを生成するために、任意のその他の技術が使用されてよい。
さまざまな態様では、クライアント・データ鍵は、鍵グループ内のクライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする。例えば、鍵グループに属するクライアントの秘密鍵で暗号化されたクライアント・データが、そのクライアントの秘密鍵で暗号化された他のデータ、または鍵グループ内の任意の他のクライアントの秘密鍵で暗号化されたデータに対して、重複排除されてよい。クライアントの秘密鍵は、ストレージ・システムがクライアントの秘密鍵に対するアクセス権限を持つことなく、鍵グループ内の鍵のセット全体にわたって重複排除する能力を提供する。好ましい方法では、クライアントの秘密鍵のセット全体にわたる重複排除を可能にするために、鍵グループは、重複排除されたチャンクを暗号化するための秘密重複排除鍵(例えば、クライアントの重複排除鍵)を含む。
動作1104は、重複排除情報を生成することを含む。重複排除情報は、クライアント・データのチャンクに関連付けられたフィンガープリントを含む。重複排除情報は、重複排除の機会を含むのが好ましい。一部の方法では、メタ生成器は、重複排除フィンガープリント(例えば、ローリング最小ハッシュ、暗号ハッシュなど)を識別するか、または計算するか、あるいはその両方を実行する。他の方法では、従来技術において知られた他のコンポーネントが、重複排除の機会を識別するための重複排除フィンガープリントを識別するか、または計算するか、あるいはその両方を実行してよい。一部の方法では、ポインタ、チャンク長、チャンク・フィンガープリントなどを含む、データ重複排除の機会に関連付けられたメタデータ(例えば、重複排除情報)が生成される。好ましい方法では、下で説明されているように、ストレージ・システムに送信されるデータまたはデータ・チャンクあるいはその両方を暗号化する前に、(例えば、少なくともチャンク・フィンガープリントを含んでいる)重複排除情報が生成される。
当業者が本開示を読むときに理解するであろうように、重複排除情報は、重複排除方法の動作の詳細を含んでよい。1つの構成では、チャンキングの重複排除の場合、重複排除情報は、チャンク開始位置、チャンク長、チャンク・シグネチャ、類似性情報などを含んでよい。1つの方法では、チャンク・フィンガープリントは、従来技術において知られた任意の方法で計算されてよい暗号ハッシュである。
一部の任意選択的方法では、チャンク・フィンガープリントなどのデータ重複排除情報の一部が、クライアントの秘密フィンガープリント鍵を使用して暗号化されてよい。クライアントの秘密フィンガープリント鍵は、ストレージ・システムには使用することができないのが好ましい。当業者が本開示を読むときに理解するであろうように、クライアントの秘密フィンガープリント鍵エンクリプタは、クライアントの秘密鍵を使用してフィンガープリントを暗号化してよい。好ましい態様では、重複排除情報をストレージ・システムに送信する前に、クライアントの秘密フィンガープリント鍵を使用してフィンガープリントが暗号化される。
動作1106は、クライアント・データ鍵のうちの1つを使用してデータ・チャンクを暗号化することを含む。好ましい方法では、データ・チャンクをストレージ・システムに送信する前に、データ・チャンクが暗号化される。さまざまな方法では、鍵グループ内のクライアントの秘密鍵のうちの1つを使用してデータ・チャンクが暗号化される。好ましい態様では、暗号化されたデータ・チャンクに対応する復号鍵は、ストレージ・システムには使用することができない。
動作1108は、ストレージ・システムによって重複排除プロセスにおいて使用するために重複排除情報をストレージ・システムに送信することを含む。重複排除情報は、従来技術において知られた任意の方法でストレージ・システムに送信されてよい。好ましい方法では、ストレージ・システムは、重複排除情報を使用して、重複排除情報に基づいて重複排除のためのデータ・チャンクを識別する。重複排除のために識別されないデータ・チャンクに関して、ストレージ・システムは、それらのデータ・チャンクに関連付けられたクライアント・データを要求してよい。当業者が本開示を考慮して理解するであろうように、それらのデータ・チャンクに関連付けられたクライアント・データは、クライアントの秘密鍵のうちの1つで暗号化される。データ・チャンクに関連付けられたクライアント・データは、データ・チャンクを暗号化するために使用されたクライアントの秘密鍵を識別する対応する鍵ID情報を含むのが好ましい。さまざまな方法では、ストレージ・システムによって重複排除のために識別されないデータ・チャンクに関連付けられたクライアント・データに対する要求が、ストレージ・システムから受信されてよい。クライアントの秘密鍵で暗号化されたデータ・チャンクに関連付けられたクライアント・データが、従来技術において知られた任意の方法で、要求に応答してストレージ・システムに送信されてよい。
動作1110は、暗号化されたデータ・チャンクをストレージ・システムに送信することを含む。一部の方法では、ストレージ・システムからの要求に応答して、暗号化されたデータ・チャンクがストレージ・システムに送信される。他の方法では、クライアントから、または従来技術において知られた別のソースからの要求に応答して、暗号化されたデータ・チャンクがストレージ・システムに送信されてよい。上で詳細に説明された態様のいずれかに従って、この要求は、データ・チャンクまたは関連するデータあるいはその両方に対する要求を含んでよい。この要求は、データ・チャンクを暗号化するために使用されたクライアント・データ鍵を識別する鍵ID情報も要求するのが好ましい。暗号化されたデータ・チャンクは、従来技術において知られた任意の方法でストレージ・システムに送信されてよい。
一部の方法では、クライアントの秘密鍵で暗号化されたストレージ・システムに格納されたデータ・チャンクに関連付けられたクライアント・データに対する要求が、ストレージ・システムから受信されてよい。この要求は、データ・チャンクに関連付けられたクライアント・データが、クライアントの重複排除鍵で暗号化されたストレージ・システムに送信されてよいということを含むのが好ましい。クライアント・データは、本開示を考慮して、従来技術において知られた任意の方法で、要求に応答してストレージ・システムに送信されてよい。
ストレージ・システムは、本明細書に記載されたさまざまな態様に従って重複排除を実行する。ストレージ・システムは、クライアント・データのチャンクに対して、ストレージ・システムに格納されたデータ・チャンクを重複排除してよく、重複排除情報を使用して、重複排除のためのデータ・チャンクが選択される。1つの方法では、重複排除マネージャは、重複排除情報に基づいて、重複するデータを位置特定するか、または識別するか、あるいはその両方を実行する。チャンキングの重複排除の場合、重複しているデータ・チャンクを識別するために、重複排除情報がチャンク・メタデータと共に使用される。例えば、重複排除マネージャは、復号された重複排除情報からのポインタ、フィンガープリント、チャンク長などを、ストレージ・システム上のチャンク・メタデータ・リポジトリに格納された任意のポインタ、フィンガープリント、チャンク長などと比較する。当業者が本開示を読むときに理解するであろうように、重複排除マネージャは、任意の関連する重複排除動作を実行する。好ましい方法では、ストレージ・システムはデータ・チャンクのメタデータを格納し、メタデータは、データ・チャンクを暗号化するために使用された鍵を一意に識別する鍵識別子を含む。
さまざまな方法では、ストレージ・システムに接続されたクライアントからの、クライアント・データに対する要求に応答して、ストレージ・システムに格納された暗号化されたデータが取り出される。この要求は、当業者によって理解されるであろうように、クライアント・データに対する複数の要求を含んでよい。さらに、この要求は、クライアント・データ鍵のうちの2つ以上でのクライアント・データに対する要求(または複数の要求)を含んでよい。ストレージ・システムは、データ要求に関連付けられたデータ・チャンクを識別するのが好ましい。暗号化されたデータをストレージ・システムから取り出すための方法は、データ・チャンクに関連付けられたメタデータを取り出すことを含む。メタデータは、鍵ID情報を含むのが好ましい。ストレージ・システムは、本明細書に記載された方法のいずれかに従って、メタデータに基づいて、データ要求に関連付けられた暗号化されたクライアント・データを取り出す。当業者が本開示を考慮して理解するであろうように、暗号化されたクライアント・データは、従来技術において知られた任意の方法でクライアントに送信されてよい。一部の方法では、暗号化されたクライアント・データは、データ・チャンクとして受信されてよい。データ・チャンクのうちの1つまたは複数が、クライアントの秘密鍵を使用して暗号化されてよく、1つまたは複数の異なるデータ・チャンクが、クライアントの重複排除鍵を使用して暗号化される。
好ましい方法では、クライアントの秘密鍵はクライアント側から離れない。この好ましい方法では、ストレージ・システムは、データ転送のどの時点でも、暗号化データを暗号化されていない状態で見ることがない。この好ましい方法では、クライアント・データ鍵が、ストレージ・システム、他のすべてのクライアント、他のすべてのストレージ・システムなどと共有されない。
本発明は、任意の可能な統合の技術的詳細レベルで、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含んでよい。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組合せであってよいが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスク、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-only memory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル・バーサタイル・ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、および前述の任意の適切な組合せを含む。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組合せ)を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:wide area network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル・ロジック回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組合せが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を含むように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示できるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれてもよく、それによって、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはコンピュータ実装プロセスを生成するその他のデバイス上で実行させる。
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、1つのステップとして実行されるか、同時に実行されるか、時間的に部分的または完全に重複する方法で実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組合せは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組合せを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
さらに、さまざまな実施形態に従うシステムは、プロセッサ、およびプロセッサに統合された論理またはプロセッサによって実行可能な論理あるいはその両方を含んでよく、この論理は、本明細書において列挙された処理ステップのうちの1つまたは複数を実行するように構成される。プロセッサは、処理ハードウェア、メモリ、I/Oインターフェイスなどの多くのコンポーネントを含んでいる、個別のプロセッサまたは処理回路などの、本明細書に記載されているような任意の構成であってよい。統合されるということは、つまり、プロセッサに論理が、特定用途向け集積回路(ASIC:application specific integrated circuit)、FPGAなどのハードウェア論理として組み込まれるということである。プロセッサによって実行可能であるということは、つまり、論理が、プロセッサによってアクセス可能なハードウェア論理、ソフトウェア論理(ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部など)など、またはハードウェア論理とソフトウェア論理の何らかの組合せであり、プロセッサによって実行されたときに何らかの機能をプロセッサに実行させるように構成されているということである。ソフトウェア論理は、従来技術において知られた任意のメモリ・タイプの、ローカルまたはリモートあるいはその両方のメモリに格納されてよい。ASIC、FPGA、中央処理装置(CPU:central processing unit)、集積回路(IC:integrated circuit)、グラフィック処理装置(GPU:graphics processing unit)といった、ソフトウェア・プロセッサ・モジュールまたはハードウェア・プロセッサあるいはその両方などの、従来技術において知られた任意のプロセッサが使用されてよい。
上で提示された説明から複数の組合せを作成して、前述のシステムまたは方法あるいはその両方のさまざまな特徴が任意の方法で組み合わせられてよいということが明らかである。
本発明の実施形態が、サービスをオンデマンドで提供するように顧客のために展開されるサービスの形態で提供されてよいということがさらに理解されるであろう。
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。説明された実施形態の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
Claims (25)
- 鍵グループ情報をストレージ・システムに送信することであって、前記鍵グループ情報が前記鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、前記クライアント・データ鍵が、前記鍵グループ内の前記クライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、前記送信することと、
重複排除情報を生成することであって、前記重複排除情報が、クライアント・データのチャンクに関連付けられたフィンガープリントを含む、前記生成することと、
前記クライアント・データ鍵のうちの1つを使用して前記データ・チャンクを暗号化することであって、前記暗号化されたデータ・チャンクに対応する復号鍵が、前記ストレージ・システムには使用することができない、前記暗号化することと、
前記ストレージ・システムによって重複排除プロセスにおいて使用するために前記重複排除情報を前記ストレージ・システムに送信することと、
前記暗号化されたデータ・チャンクを前記ストレージ・システムに送信することとを含む、コンピュータ実装方法。 - 前記ストレージ・システムからの要求に応答して、暗号化されたデータ・チャンクが前記ストレージ・システムに送信され、前記ストレージ・システムからの前記要求が、前記データ・チャンクの各々を暗号化するために使用された前記クライアント・データ鍵を識別する前記鍵ID情報も要求する、請求項1に記載のコンピュータ実装方法。
- 前記クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、請求項1に記載のコンピュータ実装方法。
- 前記ストレージ・システムからの前記要求が、前記ストレージ・システムによる重複排除のために識別されないデータ・チャンクに関連付けられたクライアント・データに対するものであり、前記方法が、クライアントの秘密鍵で暗号化された前記データ・チャンクに関連付けられた前記クライアント・データを送信することを含む、請求項3に記載のコンピュータ実装方法。
- 前記ストレージ・システムによる重複排除のために識別されているデータ・チャンクに関連付けられたクライアント・データに対する前記ストレージ・システムからの要求に応答して、クライアントの重複排除鍵で暗号化された前記データ・チャンクに関連付けられた前記クライアント・データを送信することをさらに含む、請求項1に記載のコンピュータ実装方法。
- 前記重複排除情報を前記ストレージ・システムに送信する前に、クライアントの秘密フィンガープリント鍵を使用して前記フィンガープリントを暗号化することをさらに含む、請求項1に記載のコンピュータ実装方法。
- 前記ストレージ・システムに対して前記クライアント・データを要求することと、
前記クライアント・データを前記データ・チャンクとして受信することであって、前記データ・チャンクのうちの1つまたは複数が前記クライアントの秘密鍵を使用して暗号化され、前記データ・チャンクのうちの他の1つまたは複数が前記クライアントの重複排除鍵を使用して暗号化される、前記受信することとをさらに含む、請求項1に記載のコンピュータ実装方法。 - 鍵グループ情報をストレージ・システムで受信することであって、前記鍵グループ情報が前記鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、前記クライアント・データ鍵が、前記鍵グループ内の前記クライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、前記受信することと、
前記ストレージ・システムに格納するための暗号化されたクライアント・データを受信することと、
重複排除情報を受信することであって、前記重複排除情報が、動作を実行するために前記ストレージ・システムによってアクセス可能であり、前記重複排除情報が、前記暗号化されたクライアント・データのチャンクに関連付けられたフィンガープリントを含む、前記受信することと、
前記重複排除情報に基づいて重複排除のためのデータ・チャンクを識別することと、
重複排除のために識別されないデータ・チャンクに関して、前記クライアント・データ鍵のうちの1つで暗号化された前記データ・チャンクに関連付けられたクライアント・データを要求することとを含む、コンピュータ実装方法。 - 前記クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、請求項8に記載のコンピュータ実装方法。
- クライアント・データに対する前記クライアントからの要求に応答して、
前記データ要求に関連付けられた前記データ・チャンクを識別することと、
前記データ・チャンクに関連付けられたメタデータを取り出すことであって、前記メタデータが前記鍵ID情報を含む、前記取り出すことと、
前記メタデータに基づいて前記データ要求に関連付けられた前記暗号化されたクライアント・データを取り出すことと、
前記暗号化されたクライアント・データを前記クライアントに送信することとをさらに含む、請求項8に記載のコンピュータ実装方法。 - 前記鍵ID情報が、前記データ要求に関連付けられた前記データ・チャンクの各々を暗号化するために使用された前記クライアント・データ鍵を識別する、請求項8に記載のコンピュータ実装方法。
- 前記フィンガープリントがクライアントの秘密フィンガープリント鍵を使用して暗号化され、前記クライアントの秘密フィンガープリント鍵が前記ストレージ・システムには使用できない、請求項8に記載のコンピュータ実装方法。
- 前記クライアント・データ鍵のうちの1つで暗号化された前記ストレージ・システムに格納されているデータ・チャンクを識別することと、
前記クライアントの重複排除鍵で暗号化された前記データ・チャンクに関連付けられたクライアント・データを要求することとをさらに含む、請求項9に記載のコンピュータ実装方法。 - プロセッサと、
前記プロセッサと統合されたか、前記プロセッサによって実行可能であるか、または前記プロセッサと統合され、前記プロセッサによって実行可能である論理とを備えているシステムであって、前記論理が、
鍵グループ情報をストレージ・システムに送信することであって、前記鍵グループ情報が前記鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、前記クライアント・データ鍵が、前記鍵グループ内の前記クライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、前記送信することと、
重複排除情報を生成することであって、前記重複排除情報が、クライアント・データのチャンクに関連付けられたフィンガープリントを含む、前記生成することと、
前記クライアント・データ鍵のうちの1つを使用して前記データ・チャンクを暗号化することであって、前記暗号化されたデータ・チャンクに対応する復号鍵が、前記ストレージ・システムには使用することができない、前記暗号化することと、
前記ストレージ・システムによって重複排除プロセスにおいて使用するために前記重複排除情報を前記ストレージ・システムに送信することと、
前記暗号化されたデータ・チャンクを前記ストレージ・システムに送信することとを実行するように構成される、システム。 - 前記ストレージ・システムからの要求に応答して、暗号化されたデータ・チャンクが前記ストレージ・システムに送信され、前記ストレージ・システムからの前記要求が、前記データ・チャンクの各々を暗号化するために使用された前記クライアント・データ鍵を識別する前記鍵ID情報も要求する、請求項14に記載のシステム。
- 前記クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、請求項14に記載のシステム。
- 前記ストレージ・システムからの前記要求が、前記ストレージ・システムによる重複排除のために識別されないデータ・チャンクに関連付けられたクライアント・データに対するものであり、前記システムが、クライアントの秘密鍵で暗号化された前記データ・チャンクに関連付けられた前記クライアント・データを送信するように構成された論理を備える、請求項16に記載のシステム。
- 前記ストレージ・システムによる重複排除のために識別されているデータ・チャンクに関連付けられたクライアント・データに対する前記ストレージ・システムからの要求に応答して、クライアントの重複排除鍵で暗号化された前記データ・チャンクに関連付けられた前記クライアント・データを送信するように構成された論理をさらに備える、請求項14に記載のシステム。
- 前記重複排除情報を前記ストレージ・システムに送信する前に、クライアントの秘密フィンガープリント鍵を使用して前記フィンガープリントを暗号化するように構成された論理をさらに備える、請求項14に記載のシステム。
- プロセッサと、
前記プロセッサと統合されたか、前記プロセッサによって実行可能であるか、または前記プロセッサと統合され、前記プロセッサによって実行可能である論理とを備えているシステムであって、前記論理が、
鍵グループ情報をストレージ・システムで受信することであって、前記鍵グループ情報が前記鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、前記クライアント・データ鍵が、前記鍵グループ内の前記クライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、前記受信することと、
前記ストレージ・システムに格納するための暗号化されたクライアント・データを受信することと、
重複排除情報を受信することであって、前記重複排除情報が、動作を実行するために前記ストレージ・システムによってアクセス可能であり、前記重複排除情報が、前記暗号化されたクライアント・データのチャンクに関連付けられたフィンガープリントを含む、前記受信することと、
前記重複排除情報に基づいて重複排除のためのデータ・チャンクを識別することと、
重複排除のために識別されないデータ・チャンクに関して、前記クライアント・データ鍵のうちの1つで暗号化された前記データ・チャンクに関連付けられたクライアント・データを要求することとを実行するように構成される、システム。 - 前記クライアント・データ鍵の各々が、クライアントの秘密鍵およびクライアントの重複排除鍵から成る群から選択された鍵の種類である、請求項20に記載のシステム。
- クライアント・データに対する前記クライアントからの要求に応答して、
前記データ要求に関連付けられた前記データ・チャンクを識別することと、
前記データ・チャンクに関連付けられたメタデータを取り出すことであって、前記メタデータが前記鍵ID情報を含む、前記取り出すことと、
前記メタデータに基づいて前記データ要求に関連付けられた前記暗号化されたクライアント・データを取り出すことと、
前記暗号化されたクライアント・データを前記クライアントに送信することとを実行するように構成された論理をさらに備える、請求項20に記載のシステム。 - 前記鍵ID情報が、前記データ要求に関連付けられた前記データ・チャンクの各々を暗号化するために使用された前記クライアント・データ鍵を識別する、請求項20に記載のシステム。
- 前記フィンガープリントがクライアントの秘密フィンガープリント鍵を使用して暗号化され、前記クライアントの秘密フィンガープリント鍵が前記ストレージ・システムには使用できない、請求項20に記載のシステム。
- コンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品が、
1つまたは複数のコンピュータ可読ストレージ媒体と、
前記1つまたは複数のコンピュータ可読ストレージ媒体に集合的に格納されたプログラム命令とを備えており、前記プログラム命令が、
鍵グループ情報をストレージ・システムに送信するためのプログラム命令であって、前記鍵グループ情報が前記鍵グループ内のクライアント・データ鍵の鍵ID情報を含み、前記クライアント・データ鍵が、前記鍵グループ内の前記クライアント・データ鍵のいずれかで暗号化されたデータ・チャンクの重複排除を可能にする、前記プログラム命令と、
重複排除情報を生成するためのプログラム命令であって、前記重複排除情報が、クライアント・データのチャンクに関連付けられたフィンガープリントを含む、前記プログラム命令と、
前記クライアント・データ鍵のうちの1つを使用して前記データ・チャンクを暗号化するためのプログラム命令であって、前記暗号化されたデータ・チャンクに対応する復号鍵が、前記ストレージ・システムには使用することができない、前記プログラム命令と、
前記ストレージ・システムによって重複排除プロセスにおいて使用するために前記重複排除情報を前記ストレージ・システムに送信するためのプログラム命令と、
前記暗号化されたデータ・チャンクを前記ストレージ・システムに送信するためのプログラム命令とを含む、コンピュータ・プログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/938,459 | 2020-07-24 | ||
US16/938,459 US11295028B2 (en) | 2020-07-24 | 2020-07-24 | Multi-key encrypted data deduplication |
PCT/IB2021/056036 WO2022018550A1 (en) | 2020-07-24 | 2021-07-06 | Multi-key encrypted data deduplication |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023535915A true JP2023535915A (ja) | 2023-08-22 |
Family
ID=79688332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023504299A Pending JP2023535915A (ja) | 2020-07-24 | 2021-07-06 | 複数の鍵によって暗号化されたデータの重複排除 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11295028B2 (ja) |
JP (1) | JP2023535915A (ja) |
CN (1) | CN116158052A (ja) |
DE (1) | DE112021003270T5 (ja) |
GB (1) | GB2613720A (ja) |
WO (1) | WO2022018550A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494351B2 (en) * | 2020-05-01 | 2022-11-08 | International Business Machines Corporation | Deduplication of encrypted data |
US11620399B2 (en) * | 2020-11-23 | 2023-04-04 | Red Hat, Inc. | End-to-end encryption with data deduplication |
US11853100B2 (en) * | 2021-04-12 | 2023-12-26 | EMC IP Holding Company LLC | Automated delivery of cloud native application updates using one or more user-connection gateways |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100737876B1 (ko) | 2005-02-25 | 2007-07-12 | 삼성전자주식회사 | 계층적 문턱 트리에 기반한 브로드캐스트 암호화 방법 |
US20090319772A1 (en) | 2008-04-25 | 2009-12-24 | Netapp, Inc. | In-line content based security for data at rest in a network storage system |
US8117464B1 (en) * | 2008-04-30 | 2012-02-14 | Netapp, Inc. | Sub-volume level security for deduplicated data |
US8074049B2 (en) * | 2008-08-26 | 2011-12-06 | Nine Technology, Llc | Online backup system with global two staged deduplication without using an indexing database |
US8930686B2 (en) | 2009-12-23 | 2015-01-06 | International Business Machines Corporation | Deduplication of encrypted data |
US8996467B2 (en) | 2011-12-29 | 2015-03-31 | Druva Inc. | Distributed scalable deduplicated data backup system |
US9547774B2 (en) | 2012-07-18 | 2017-01-17 | Nexenta Systems, Inc. | System and method for distributed deduplication of encrypted chunks |
US9086819B2 (en) * | 2012-07-25 | 2015-07-21 | Anoosmar Technologies Private Limited | System and method for combining deduplication and encryption of data |
WO2015152935A1 (en) | 2014-04-04 | 2015-10-08 | Hewlett-Packard Development Company, L.P. | Storing and retrieving ciphertext in data storage |
US20170288861A1 (en) | 2015-01-30 | 2017-10-05 | Hewlett Packard Enterprise Development Lp | Data encryption |
US20170123710A1 (en) * | 2015-10-30 | 2017-05-04 | Longsand Limited | Deduplication of encrypted data |
US10601782B2 (en) | 2016-04-01 | 2020-03-24 | Egnyte, Inc. | Systems and methods for proxying encryption key communications between a cloud storage system and a customer security module |
US10572153B2 (en) | 2016-07-26 | 2020-02-25 | Western Digital Technologies, Inc. | Efficient data management through compressed data interfaces |
US10417202B2 (en) * | 2016-12-21 | 2019-09-17 | Hewlett Packard Enterprise Development Lp | Storage system deduplication |
US11025596B1 (en) * | 2017-03-02 | 2021-06-01 | Apple Inc. | Cloud messaging system |
US11563555B2 (en) | 2017-09-26 | 2023-01-24 | Thales Dis Cpl Usa, Inc. | Management of encryption agents in data storage systems |
CN108377237A (zh) | 2018-02-05 | 2018-08-07 | 江苏大学 | 用于云端密文存储的具有所有权管理的数据去重系统及其数据去重方法 |
US10158483B1 (en) | 2018-04-30 | 2018-12-18 | Xanadu Big Data, Llc | Systems and methods for efficiently and securely storing data in a distributed data storage system |
US10756887B2 (en) | 2018-10-12 | 2020-08-25 | EMC IP Holding Company LLC | Method and system for securely replicating encrypted deduplicated storages |
CN110109617B (zh) | 2019-04-22 | 2020-05-12 | 电子科技大学 | 一种加密重复数据删除系统中的高效元数据管理方法 |
-
2020
- 2020-07-24 US US16/938,459 patent/US11295028B2/en active Active
-
2021
- 2021-07-06 CN CN202180059066.6A patent/CN116158052A/zh active Pending
- 2021-07-06 GB GB2302502.6A patent/GB2613720A/en active Pending
- 2021-07-06 WO PCT/IB2021/056036 patent/WO2022018550A1/en active Application Filing
- 2021-07-06 JP JP2023504299A patent/JP2023535915A/ja active Pending
- 2021-07-06 DE DE112021003270.4T patent/DE112021003270T5/de active Granted
Also Published As
Publication number | Publication date |
---|---|
GB2613720A (en) | 2023-06-14 |
US20220027483A1 (en) | 2022-01-27 |
US11295028B2 (en) | 2022-04-05 |
GB202302502D0 (en) | 2023-04-05 |
WO2022018550A1 (en) | 2022-01-27 |
CN116158052A (zh) | 2023-05-23 |
DE112021003270T5 (de) | 2023-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10594481B2 (en) | Replicated encrypted data management | |
US10229285B2 (en) | Privacy enhanced central data storage | |
US8762743B2 (en) | Encrypting data objects to back-up | |
US10958421B2 (en) | User access control in blockchain | |
JP2023535915A (ja) | 複数の鍵によって暗号化されたデータの重複排除 | |
JP7511630B2 (ja) | データ重複排除のための不透明な暗号化 | |
US11930099B2 (en) | Implementing resilient deterministic encryption | |
US11917072B2 (en) | Implementing opportunistic authentication of encrypted data | |
Rasina Begum et al. | ECC-CRT: an elliptical curve cryptographic encryption and Chinese remainder theorem based deduplication in cloud | |
JP2024503327A (ja) | セキュアなデータ移動 | |
US11803648B2 (en) | Key in lockbox encrypted data deduplication | |
JP2024507647A (ja) | ロックされたフィンガープリントを使用する複数鍵の安全な重複排除 | |
US11153299B2 (en) | Secure data transport using trusted identities | |
US11177945B1 (en) | Controlling access to encrypted data | |
US12095917B2 (en) | Securely transporting a root key using a privately/public key pair for user-controlled authentication of nodes in a hardware security module cluster | |
US12019767B2 (en) | Image encryption | |
JP2024510881A (ja) | マルチクラウド環境における量子鍵配送 | |
MARY et al. | Integrity Verification and Encrypted Data Deduplication in Cloud |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230202 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231212 |