JP2020521369A - データ重複排除のためのアプリケーションによる暗号化鍵の生成 - Google Patents

データ重複排除のためのアプリケーションによる暗号化鍵の生成 Download PDF

Info

Publication number
JP2020521369A
JP2020521369A JP2019563127A JP2019563127A JP2020521369A JP 2020521369 A JP2020521369 A JP 2020521369A JP 2019563127 A JP2019563127 A JP 2019563127A JP 2019563127 A JP2019563127 A JP 2019563127A JP 2020521369 A JP2020521369 A JP 2020521369A
Authority
JP
Japan
Prior art keywords
commitment
key
vector
server
proof
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.)
Granted
Application number
JP2019563127A
Other languages
English (en)
Other versions
JP6959994B2 (ja
Inventor
デカロ、アンジェロ
ゴーシュ、イーシャ
ソルニオッティ、アレッサンドロ
キャメニスチ、ジャン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020521369A publication Critical patent/JP2020521369A/ja
Application granted granted Critical
Publication of JP6959994B2 publication Critical patent/JP6959994B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key 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)
    • H04L9/0822Key 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) using key encryption key
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key 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)
    • H04L9/0825Key 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) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • H04L9/3221Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 データ重複排除のためのアプリケーションによる暗号化鍵の生成のためのシステム、方法、及びコンピュータ・プログラムを提供する。【解決手段】 暗号化鍵の生成が、鍵を取得するために、クライアント・コンピュータが知識を証明するクライアント・データから決定論的に導出される。クライアント・コンピュータは、クライアント・データを提供し、クライアント・データに対応する、インデックスを有する複数のデータ・ブロックを有するベクトルを定めるように適合される。クライアント・コンピュータはさらに、ベクトルに対する、第1の非秘匿ベクトル・コミットメント及び第2の秘匿ベクトル・コミットメントを生成し、第1のコミットメントに対する第3のコミットメントを生成するように適合される。クライアント・コンピュータは、第2のコミットメント及び第3のコミットメントを鍵サーバに送り、第2のコミットメント及び第3のコミットメントにおけるベクトルの、インデックスのサブセットについての対応するデータ・ブロックの知識の第1の証明を鍵サーバに提供する。鍵サーバは、秘密サーバ鍵を格納し、鍵生成プロトコルにおいてクライアント・コンピュータとエンゲージするように適合される。【選択図】 図4

Description

本発明は、一般に、暗号化鍵の生成に関し、より特定的には、鍵を用いるコンピュータにより保持されるデータから決定論的に導出される鍵の生成に関する。本発明の実施形態は、データ重複排除(deduplication)システムに適用することができる。
Camenisch他、「On the portability of generalized Schnorr proofs」、EUROCRYPT 2009、volume5479 of LNCS、ページ425−442、2009年4月 Camenisch及びStadler、「Efficient group signature schemes for large groups」(拡張アブストラクト)、CRYPTO‘97、volume1294 of LNCS、ページ410−424、1997年8月 「Short signatures without random oracles」、EUROCRYPT 2004、volume 3027 of LNCS、ページ56−73、2004年5月 「A verifiable random function with short proofs and keys」、PKC 2005、volume 3386 of LNCS、ページ416−431、2005年1月 Jarecki及びLiu、「Efficient oblivious pseudorandom function with applications to adaptive OT and secure computation of set intersection」、TCC 2009年、volume5444 of LNCS、ページ577−594、2009年3月 Chase及びMeiklejohn、「Deja Q: Using dual systems to revisit q−type assumptions」、EURO−CRYPT 2014、volume 8441 of LNCS、ページ622−639、2014年5月 Dodis他、「Efficient constructions of composable commitments and zero−knowledge proofs」、CRYPTO 2008、volume 5157 of LNCS、ページ515−535、2008年8月 Camenisch及びShoup、「Practical verifiable encryption and decryption of discrete logarithms」CRYPTO 2003、volume 2729 of LNCS、ページ126−144、2003年8月 Algesheimer他、「Efficient computation modulo a shared secret with application to the generation of shared safe−prime products」、CRYPTO 2002、volume 2442 of LNCS、ページ417−432、2002年8月 Boneh及びCorrigan−Gibbs、「Bivariate polynomials modulo composites and their applications」、ASIACRYPT 2014、Part I、volume 8873 of LNCS、ページ42−62、2014年12月 Merkle、「A certified digital signature」、CRYPTO’89、volume 435 of LNCS、ページ218−238、1990年8月 Catalano及びFiore、「Vector commitments and their applications」、PKC 2013、volume 7778 of LNCS、ページ55−72、2013年 Catalano、「Vector commitments and their applications」、PKC 2013、volume 7778 of LNCS、ページ55−72、2013年
データ重複排除のためのアプリケーションによる暗号化鍵の生成のためのシステム、方法、及びコンピュータ・プログラムを提供する。
本発明の少なくとも1つの実施形態によると、ネットワークを介して通信するように適合されたクライアント・コンピュータ及び鍵サーバを含むシステムが提供される。クライアント・コンピュータは、クライアント・データを提供し、クライアント・データに対応する、インデックスi=1乃至nを有する複数nのデータ・ブロックxを含むベクトル
Figure 2020521369
を定めるように適合される。クライアント・コンピュータは、さらに、ベクトルx(ベクトル)に対する、非秘匿ベクトル・コミットメントである第1のコミットメントと、x(ベクトル)に対する、秘匿ベクトル・コミットメントである第2のコミットメントと、第1のコミットメントに対する第3のコミットメントとを生成するように適合される。クライアント・コンピュータは、第2及び第3のコミットメントを鍵サーバに送り、第2及び第3のコミットメントにおけるベクトルx(ベクトル)の、インデックスiのサブセットについての対応するデータ・ブロックxの知識の第1の証明を鍵サーバに提供する。鍵サーバは、秘密サーバ鍵kを格納し、知識の第1の証明の検証に応答して、鍵生成プロトコルにおけるクライアント・コンピュータと関与する(engage)ように適合される。このプロトコルにおいて、クライアント・コンピュータは、第1のコミットメントのブラインド関数(blinded function)を鍵サーバに送り、このブラインド関数及び第3のコミットメントにおける、第1のコミットメントの知識の第2の証明を鍵サーバに提供する。鍵サーバは、知識の第2の証明の検証に応答して、上述のブラインド関数から、第1のコミットメント及びサーバ鍵kのブラインド関数を含むブラインド鍵K´を生成し、ブラインド鍵K´をクライアント・コンピュータに送るように適合される。クライアント・コンピュータは、さらに、ブラインド鍵K´を非ブラインド化し(unblind)、第1のコミットメント及びサーバ鍵kの決定性関数を含むクライアント鍵Kを取得する。
本発明の実施形態による、システムのブロック図である。 本発明の実施形態による、クライアント鍵を生成するための動作ステップを示すフローチャートである。 本発明の実施形態による、クライアント・データを格納するための動作ステップを示すフローチャートである。 本発明の別の実施形態による、クライアント鍵を生成するための動作ステップを示すフローチャートである。 本発明の別の実施形態による、クライアント鍵を生成するための動作ステップを示すフローチャートである。 本発明の実施形態による、図1のコンピュータ・システムの内部及び外部コンポーネントのブロック図である。 本発明の実施形態による、クラウド・コンピューティング環境のブロック図である。 本発明の実施形態による、抽象化モデル層のブロック図である。
コンピュータにおいて提供されるデータの決定性関数として暗号化鍵を生成することは、セキュアなデータ重複排除システムの基礎となる。データ重複排除は、ストア・システムが、ファイルなどの特定のデータ項目の1つのコピーのみを格納することを保証することにより、ストレージ要件を減らすために用いられるプロセスである。前に格納したファイルの第2のコピーの格納が要求された場合、このことは、典型的には、ファイルのハッシュを既にサーバにより格納されているファイルのハッシュと比較することによって、ストレージ・サーバにより検知される。一致が検知された場合、新しいファイルは格納されず、サーバは単に、一致している、前に格納したファイルへのポインタを格納する。
クライアント・コンピュータが、データを、それらの信頼ドメインの外にあるストレージ・サーバ(例えば、クラウド・ベースのストレージ・プロバイダ)に送る場合、セキュリティは、データを、格納のために送る前に暗号化することを必要とする。重複排除を可能にするために、暗号化プロセスは、決定論的とすることができ(すなわち、同じデータは同じ暗号文に暗号化される)、一致を検知することができる。さらに、同じ暗号化鍵を用いて、同じデータを暗号化できることが必要である。ストレージ・サーバが、異なるクライアント・コンピュータにより送られるデータの重複排除を実施する場合、効果的なユーザをまたがる重複排除のためには、全てのクライアント・コンピュータが同じファイルを暗号化するために同じ鍵を導出することが可能であるようにすることができる。
典型的には、鍵導出のためのスキームは、データ自体ではなく、クライアント・データの公開ハッシュ(public hash)のみに依存し得る。そのため、悪意のあるパーティは、ファイルのハッシュだけを知ることにより、ファイルの暗号化鍵を取得することができる。従って、こうしたスキームを配備するいずれのシステムも、現実的なセキュリティ・モデルにおいてセキュア保護されていず、ストレージ・サーバの何らかのセキュリティ侵害(compromise)のために、ファイルに対する暗号文を取得する相手方、又は悪意のあるストレージ・プロバイダ自体が、鍵を用いてそれを復号することがある。
図中のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の考え得る実装のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図中の各ブロックは、モジュール、セグメント、又は命令の部分を表すことができ、これは、指定された論理機能を実施するための1つ又は複数の実行可能命令を含む。また、幾つかの代替的な実施において、ブロック内に示された機能は、図中に示された順序とは異なる順序で行い得る。例えば、連続して示される2つのブロックを、実際には、実質的に同時に実行することができ、又は場合により、関与する機能に応じて、ブロックを逆の順番で実行することもできる。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図中のブロックの組み合わせは、指定された機能又は動作を実行する専用のハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令の組み合わせによって実施できることにも留意されたい。
図1は、本発明の実施形態による、システム100のブロック図である。システム100は、複数のクライアント・コンピュータ102、鍵サーバ103、及びストレージ・サーバ104を含む。クライアント・コンピュータ102は、ネットワーク105を介して鍵サーバ103及びストレージ・サーバ104と通信するように適合することができ、そこで、ネットワーク105は、1つ又は複数のコンポーネント・ネットワーク、及び/又はインターネットを含む相互接続ネットワークを含むことができる。システム100の動作において、クライアント・コンピュータ102は、ストレージ・サーバ104による格納のために、ネットワーク105を介して、クライアント・データ(例えば、データ・ファイル)を送る。ストレージ・サーバ104は、クライアント・コンピュータ102の信頼ドメインの外にあることがあるので、ストレージ・サーバ104に伝送する前に、クライアント・コンピュータ102により、全てのファイルが暗号化される。ストレージ・サーバ104は、クライアント・コンピュータ102から受け取った暗号化されたファイルを、ストレージ・サーバ104に動作可能に結合されたデータベース106により表されるストレージ内に格納することができる。ストレージ・サーバ104は、データベース106内に格納された暗号化ファイルの重複排除を実行する。例えば、重複排除の粒度は、暗号化ファイル全体とすることができる。従って、ストレージ・サーバ104は、データベース106内のあらゆる所定の暗号化ファイルの1つのコピーを格納することができる。以下により詳細に説明されるように、ストレージ・サーバ104は、クライアント・コンピュータ102の1つから、前に格納した暗号化ファイルの第2のコピーを受け取るかどうかを検知することができる。ストレージ・サーバ104は、暗号化ファイルを再び格納せず、代わりに、当該クライアント・コンピュータ102の1つに、同一の、前に格納したファイルへのポインタを送ることができる。
クライアント・コンピュータ102の各々は、そのファイルに対する、Kで示されるクライアント鍵を用いて、格納のためにファイルを暗号化することができる。クライアント・コンピュータ102にわたるファイルの重複排除を可能にするために、同一のクライアント・ファイルは、同一の暗号文に暗号化することができ、かつ、同じ暗号化鍵を用いて暗号化することができる。従って、異なるクライアント・コンピュータ102が同一のファイルを暗号化する場合、クライアント・コンピュータ102の各々は、ファイルに対する同じクライアント鍵を使用することができる。クライアント鍵Kは、鍵サーバ103との対話を介して、クライアント・コンピュータ102により取得される。鍵サーバ103は、鍵サーバ103に対して秘密である暗号化鍵kを格納することができる。クライアント鍵Kを取得するために、クライアント・コンピュータ102は、鍵サーバ103と、暗号化プロトコルにおいて関与することができ、それにより、クライアント・コンピュータ102の1つは、サーバ鍵kの及び暗号化されるクライアント・ファイルの決定性関数である鍵Kを取得する。このプロトコルは、クライアント・コンピュータ102が、鍵Kを取得するために、クライアント・ファイルの知識を証明することを要求することができる。従って、クライアント鍵は、ファイルの短いハッシュではなく、クライアント・ファイル自体を保有するクライアント・コンピュータ102の1つによってしか取得することができない。鍵サーバ103は、クライアント・コンピュータ102により信頼されていないことあるので、鍵サーバ103が、クライアント・ファイル及び/又は結果として得られるクライアント鍵を知らずに、プロトコルを実行することができる。
鍵サーバ103は、鍵生成サービスをクライアント・コンピュータ102に提供するエンティティ(例えば、クラウド・サービス・プロバイダ)により動作されるコンピュータにより実装され得る。ストレージ・サーバ104は、同様に、ストレージ・サービス・プロバイダ(例えば、クラウド・ストレージ・プロバイダ)により動作されるコンピュータにより実装され得る。データベース106は、1つ又は複数のデータ・ストレージ媒体を含む任意のデータ・ストレージ装置を含むことができ、クラウド・ストレージ環境における分散型ストレージ装置により実装され得る。典型的なストレージ装置は、コンピュータの内部に(例えば、ハードディスク・ドライブ内に)あることもあり、又は外部からアクセス可能なディスク装置により(例えば、独立ディスク冗長アレイ(redundant array of independent disks)のようなディスク・ドライブ・アレイ内に)提供される、磁気若しくは光ディスクのような1つ又は複数のディスクを含むディスク・ストレージ装置を含むことができる。
クライアント・コンピュータ102は、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット、ノートブック、パームトップ、携帯電話、PDA(携帯情報端末)、パーソナル音楽プレーヤ等のようなユーザ・コンピュータ、又はデータを格納するために遠隔ストレージを用いる他のいずれかのコンピュータにより実装され得る。
一般に、システム100のクライアント・コンピュータ102、鍵サーバ103、ストレージ・サーバ104は、本明細書で説明される動作を実施するための機能を提供する1つ又は複数の実マシン及び/又は仮想マシンを含むことができる、1つ又は複数の汎用又は専用コンピュータにより実装され得る。この機能は、ハードウェア、又はソフトウェア、又はその組み合わせの形で実施される論理により提供することができる。こうした論理は、コンピューティング装置により実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造等を含むことができる。コンピューティング装置は、タスクが、通信ネットワークを通じて結び付けられた遠隔処理デバイスによって実行される分散型クラウド・コンピューティング環境において実施することができる。分散型クラウド・コンピューティング環境において、データ及びプログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル・コンピュータ・システム・ストレージ媒体及び遠隔コンピュータ・システム・ストレージ媒体の両方に配置され得る。
図2は、本発明の実施形態による、クライアント鍵を生成するための動作ステップを示すフローチャートである。クライアント・コンピュータ102が、格納のためにクライアント・ファイルFを送ると、クライアント・コンピュータ102は、最初に、鍵サーバ103に連絡を取り、ファイルに対するクライアント鍵Kを取得する。ステップ30において、クライアント・コンピュータ102は、そのファイルFに対応する、インデックスi=1〜nを有する複数n個のデータ・ブロックxを有するベクトルx(ベクトル)を定める。ステップ30において、クライアント・コンピュータ102は、ファイルFを任意の長さのn個のデータ・ブロックx、x、・・・xに分割することができ、又は以下により詳細に説明されるように、ファイルFを符号化し、次に、結果として得られる符号化されたファイルをn個のブロックxに分割することができる。ステップ31において、クライアント・コンピュータ102は、ベクトルx(ベクトル)に対する第1の暗号コミットメントを生成する。以下でより詳細に説明されるように、cで示されるこの第1のコミットメントは、非秘匿ベクトル・コミットメント(non-hiding vector commitment、NHVC)である。ステップ32において、クライアント・コンピュータ102は、ベクトルx(ベクトル)に対する第2の暗号コミットメントも生成することができる。以下でより詳細に説明されるように、cで示されるこの第2のコミットメントは、秘匿ベクトル・コミットメント(hiding vector commitment、HVC)である。さらに、ステップ33において、クライアント・コンピュータ102は、第1のコミットメントcに対する、cで示される第3のコミットメントを生成する。以下により詳細に説明されるように、第3のコミットメントcは、「標準的な」暗号コミットメント(すなわち、暗号コミットメントの通常の秘匿性(hiding property)及び拘束性(binding property)を有する)である。ステップ34により示されるように、クライアント・コンピュータ102は、第2のコミットメントc及び第3のコミットメントcを鍵サーバ103に送る。さらに、ステップ35において、クライアント・コンピュータ102は、鍵サーバ103に対して、第2のコミットメントc及び第3のコミットメントcにおけるベクトルx(ベクトル)の、インデックスiのサブセットについての対応するデータ・ブロックxの知識を、クライアント・コンピュータ102により証明する、Πで示される知識の第1の暗号証明(proof of knowledge、PoK)を提供する。この第1の証明Πは、以下に例示されるように異なる段階で実施される。他の実施形態において、証明Πが行われるインデックスiのサブセットは、クライアント・コンピュータ102により選択することができる。1つの実施形態において、このサブセットは、セキュリティの強化のために、鍵サーバ103によりランダムに選択することができる。以下でより詳細に説明されるように、サブセットのサイズは、所望の通りに調整、修正、及び/又は調節することができる。
ステップ36において、鍵サーバ103は、さらに進める前に、c及びcに関して第1の証明Πを検証する。証明が無効である場合(「いいえ」分岐、決定ブロック37)、鍵サーバ103は、ステップ38においてプロトコルをアボートし、動作は終了する。従って、鍵サーバ103は、検証が失敗したことを示す適切なメッセージをクライアント・コンピュータ102に送ることができる。Πの成功裡の検証後(「はい」分岐、決定ブロック37)、鍵サーバ103は、鍵生成プロトコルが開始されるステップ39に進む。以下に詳細に説明されるように、このステップにおいて、鍵サーバ103は、クライアント・コンピュータ102と通信してプロトコルを開始し、鍵生成プロセスに必要なデータを送ることができる。
鍵生成プロセスが開始されると仮定すると、ステップ40において、クライアント・コンピュータ102は、第1のコミットメントcの、Bで示されるブラインド関数(blinded function)を生成する。ステップ41において、クライアント・コンピュータ102は、鍵サーバ103に対して、ブラインド関数Bを鍵サーバ103に送り、ステップ42において、クライアント・コンピュータ102は、Πで示される知識の第2の暗号証明を提供する。第2の証明Πは、ブラインド関数B及びステップ34で送られた第3のコミットメントcの両方における、第1のコミットメントcの知識のクライアント・コンピュータ102による知識を証明する。ステップ43において、鍵サーバ103は、B及びcに関して第2の証明Πを検証する。検証が失敗した場合(「いいえ」分岐、決定ブロック44)、動作は、プロトコルがアボートされ、動作が終了するステップ38に戻る。Πの検証に応答して(「はい」分岐、決定ブロック44)、動作はステップ45に進み、そこで、鍵サーバKは、ステップ41で受け取ったブラインド関数Bからブラインド鍵K´を生成する。このブラインド鍵K´は、第1のコミットメントc及びプライベート・サーバ鍵kのブラインド関数を含む。次に、ステップ46において、鍵サーバ103は、ブラインド鍵K´をクライアント・コンピュータ102に送る。受信時に、クライアント・コンピュータ102は、ブラインド鍵K´を非ブラインド化し、最終的なクライアント鍵Kを取得する。
上記のプロトコルの動作のため、結果として得られるクライアント鍵Kは、第1のコミットメントc及び秘密サーバ鍵kの決定性関数である。第1のコミットメントは、ベクトルx(ベクトル)に対する非秘匿ベクトル・コミットメントであるので、従って、クライアント鍵Kは、ベクトルx(ベクトル)及びサーバ鍵kの決定性関数である。しかしながら、cが非秘匿である間、鍵サーバ103は、このコミットメントのブラインド関数Bのみを受け取り、c自体(これは、クライアント・ファイルFについての情報を暴露する)を知らない。従って、鍵サーバ103がクライアント・ファイルF又は最終的なクライアント鍵Kを知ることなく、鍵サーバ103を介して、クライアント鍵Kをオブリビアスに(obliviously)生成することができ、最終的なクライアント鍵Kは、クライアント・コンピュータ102において非ブラインド化された後にのみ取得される。さらに、クライアント・コンピュータ102は、その鍵の基礎となる実際のファイルFについてのデータ・ブロックxの知識を証明した後にのみ、クライアント鍵Kを取得することができる。コミットメント及び知識の証明の特定の組み合わせにより、データ・ブロックの知識が証明されたものと同じファイルFに対してのみ、クライアント鍵Kを生成できることが保証される。特に、第2の秘匿ベクトル・コミットメントcは、ファイル・ブロックを鍵サーバ103に暴露することなく、ファイル・ブロックxの知識の証明を行うことを可能にし、第1の証明Πは、同じベクトルx(ベクトル)がこのコミットメントc及び第3のコミットメントcの基礎となることを証明する。この第3のコミットメントcは、第1のコミットメントcにコミットし、次いで(関数Bにおいてブラインド化(blind)されたとき)、ステップ39〜47の鍵生成プロトコルへのクライアント入力を提供する。次に、第2の証明Πは、第3のコミットメントcが、鍵生成プロトコルにおけるブラインド関数Bと同じ値(c)から計算されることを証明する。従って、第3のコミットメントcは、プロトコルの2つの部分(すなわち、ファイル・ブロックの知識の証明及び鍵生成)にリンクするように働き、一方、コミットメント及び証明の全体のセットは、鍵サーバ103により、気付かないうちにプロトコルの各部分を実行することを可能にする。
図3は、実施形態による、クライアント・データを格納するための動作ステップを示すフローチャートである。ステップ50において、クライアント・コンピュータ102は、図2のプロセスを介して、そのファイルFに対するクライアント鍵Kを取得する。ステップ51において、クライアント・コンピュータ102は、対称暗号スキームを介して、クライアント鍵Kを用いてファイルFを暗号化し、暗号文(すなわち、暗号化されたファイル)Cを生成する。ステップ52において、次に、クライアント・コンピュータ102は、ネットワーク105を介して、暗号文Cをストレージ・サーバ104に送る。ステップ53において、ストレージ・サーバ104は、ハッシュ関数Hを暗号文Cに適用し、ハッシュ値H(C)を取得する。重複排除を可能にするために、ストレージ・サーバ104は、データベース106内に格納されたあらゆる暗号化ファイルについて、そのファイルに対するハッシュ値H(C)及びデータベース106内のファイルの場所を示すハッシュ・テーブルを保持する。別の実施形態において、ストレージ・サーバ104は、アクセス制御のために必要とされ得るあらゆる更なるデータと共に、格納されたファイルについての付加的なデータ(例えば、ファイルid、クライアントid等のようなidデータ)を格納することもできる。ステップ54において、ストレージ・サーバ104は、ステップ53で取得したハッシュ値を、テーブル内の全てのハッシュ値と比較し、一致が存在するかどうかを判断する。一致が見つからない場合(「いいえ」分岐、決定ブロック55)、ステップ56において、ストレージ・サーバ104は、受け取った暗号文Cをデータベース106に格納する。ステップ57においてストレージ・サーバ104は、ハッシュ・デーブルを、新しいハッシュ値H(C)及びCについての格納場所で更新する。ステップ58において、次に、ストレージ・サーバ104は、その格納されたファイルCへのリンクをクライアント・コンピュータ102に送り、動作は完了する。決定ブロック55に戻り、一致が見つかった場合(「はい」分岐、決定ブロック55)、同一の暗号化されたファイルCが既にデータベース106内に格納されている。さらに、ステップ59において、ストレージ・サーバ104は、データベース106内の前に格納された同一のファイルのアドレスへのリンクをクライアント・コンピュータ102に送り、Cを再び格納する必要はない。
クライアント・コンピュータ102の各々は、上記のステップ58又は59において提供されるリンクにアクセスすることにより、ストレージ・サーバ104から後に取り出されたとき、対応する暗号文の復号を可能にするように、ファイルに対するクライアント鍵Kを格納する。クライアント鍵Kは、クライアント・コンピュータ102に格納することができ、又は遠隔位置に(例えば、ストレージ・サーバ104に)暗号化された形で格納することができ、クライアント・コンピュータ102により必要とされたときに取り出すことができる。一般に、各クライアント鍵Kは、鍵サーバ103の鍵k及びそのクライアント鍵の下で暗号化されたファイルFの決定性関数であるので、全てのクライアント・コンピュータ102が、同一のファイルに対して同一のクライアント鍵を取得することができ、同一のファイルに対して、同一の暗号文Cが取得され、従って、ストレージ・サーバ104における重複排除、及び別のクライアント・コンピュータ102により格納される同一のファイルを1つのクライアント・コンピュータにより復号することが可能になる。しかしながら、単に短いハッシュでなく、ファイル自体の保有を証明し、クライアント鍵を取得できるので、ストレージ・サーバ104は、鍵サーバ103と共にクライアントとして参加することにより、クライアント鍵を取得することはできない。
別の実施形態において、ステップ52において、暗号化されたファイルに対するハッシュ値H(C)を、クライアント・コンピュータ102で計算し、暗号文Cの代わりにストレージ・サーバ104に送ることができる。この実施形態において、ステップ53は省略される。一致がない場合、ステップ55において、一致する予め格納されたファイルが識別されない場合、ステップ56において、ストレージ・サーバ104は、格納のために、クライアント・コンピュータ102から暗号化されたファイルCを要求する。従って、ここで、暗号化されたファイルCをストレージ・サーバに送るステップは、ステップ55において一致が見出されないこととは独立しており、所定のファイルFを暗号化する最初のクライアント・コンピュータのみが、Cをストレージ・サーバ104に送る必要があることになる。
図4及び図5は、本発明の別の実施による、クライアント鍵を生成するための動作ステップを示すフローチャートである。図4のステップ60〜63は、図2のステップ30〜33に対応する。ステップ64において、クライアント・コンピュータ102は、cに対して、第3のコミットメントcにおける第1のコミットメントcの、クライアント・コンピュータ102による知識を証明する、ΠS1で示される第1の部分証明(sub-proof)を生成する。ステップ65において、クライアント・コンピュータ102は、第2及び第3のコミットメントc、cが共通の値から計算されることを証明する、ΠS2で示される第2の部分証明を生成する。ここでの共通の値は、以下に例示されるようにx(ベクトル)の関数とすることができるが、両方のコミットメントを、同じベクトルx(ベクトル)から導出することができる。ステップ66において、クライアント・コンピュータ102は、第2及び第3のコミットメントc、cと共に、第1及び第2の部分証明ΠS1、ΠS2を、鍵サーバ103に送る。ステップ67において、鍵サーバ103は、c及びcに関する部分証明ΠS1、ΠS2を検証する。検証が失敗した場合(決定ブロック68における「いいえ」)、ステップ69において、鍵サーバ103はプロトコルをアボートし、動作が終了する。ステップ70において、検証が成功すると(決定ブロック68における「はい」)、鍵サーバ103は、位置インデックスi=1〜nのサブセットI={j,・・・j}を選択し、ここで、サブセットIにおけるインデックスの数tは、セキュリティ及び効率の制約に基づいて所望のとおりに選択することができる。ステップ71において、鍵サーバ103は、選択されたサブセットIをクライアント・コンピュータ102に送る。サブセットIを受信すると、クライアント・コンピュータ102は、ΠS3で示される第3の部分証明を生成する。この部分証明ΠS3は、サブセットI内の位置インデックスiの各々について、第2のコミットメントcにおけるベクトルx(ベクトル)の位置iにおけるデータ・ブロックxの知識を証明する。ステップ73において、クライアント・コンピュータ102は、第3の部分証明ΠS3を鍵サーバ103に送る。ステップ74において、鍵サーバ103は、cに関して部分証明ΠS3を検証する。
従って、この実施形態において、図2における知識の第1の証明Πは、3つの部分証明ΠS1〜ΠS3により実施され、鍵サーバ103による第3の部分証明ΠS3の検証は、証明Πの検証を完了させる。実際上、第1の部分証明ΠS1は、cの内容の知識を証明し、第2の部分証明ΠS2は、c及びcの内容をリンクし、第3の部分証明ΠS3は、c(及び、従って、より早期の部分証明を介するc)の基礎となるベクトルx(ベクトル)におけるファイル・ブロックの知識を証明する。ここでの3つの部分証明は、ファイル自体についてのいずれの情報も鍵サーバ103に明らかにすることなく、クライアント鍵が生成されるファイルの知識の必要な証明の効率的な実施を提供する。ΠS3の検証が失敗した場合(決定ブロック75における「いいえ」)、鍵サーバ103はアボートし、動作が終了する。検証が成功した場合(決定ブロック75における「はい」)、鍵サーバ103は、図4の鍵生成プロトコルに進む。
図5のステップ80において、鍵サーバ103は、スキームの公開鍵/プライベート鍵のペア(epk、esk)の公開鍵epkの下で、準同型暗号化スキーム(homomorphic encryption scheme、HES)を介して、その秘密鍵kを暗号化する。一般的に、準同型暗号化スキームは、準同型特性を有し、それにより、公開鍵epkの下でメッセージmを暗号化する暗号文C=HES.Encepk(m)に対する効率的な演算
Figure 2020521369

が存在し、C∈HES.Encepk(m)及びC∈HES.Encepk(m)の場合、群の演算「・」に関して、
Figure 2020521369

となる。ステップ81において、鍵サーバ103は、結果として得られる暗号化された鍵[k]=HES.Encepk(k)をクライアント・コンピュータ102に送る。ステップ82において、クライアント・コンピュータ102は、暗号化スキームHESを介して公開鍵epkの下で第1のコミットメントcを暗号化し、暗号化されたコミットメント[c]=HES.Encepk(c)を生成する。別の実施形態において、公開鍵epkは、一般的に鍵サーバ103により発行することができ、全てのクライアント・コンピュータ102に利用可能である。しかしながら、好ましい実施形態におけるセキュリティの強化のために、ステップ80において、鍵のペア(epk、esk)は、鍵サーバにより新しく生成され、ステップ81において、公開鍵epkは、クライアント・コンピュータ102に送られる。ステップ83において、次に、クライアント・コンピュータ102は、ノンス(nonce)Nを用いて、[k]及び[c]の関数をブラインド化することにより、第1のコミットメントcのブラインド関数Bを生成する。ステップ84において、クライアント・コンピュータ102は、ブラインド関数B及び図4のステップ66において送られた第3のコミットメントcの両方における第1のコミットメントcの知識を証明する第2の知識の証明Πを計算する。ステップ85において、クライアント・コンピュータ102は、B及びΠを鍵サーバ103に送る。ステップ86において、鍵サーバ103は、B及びcに関して第2の証明Πを検証する。決定ブロック87において検証が失敗した場合、ステップ88において鍵サーバ103はアボートし、動作は終了する。Πの検証が成功した場合、ステップ89において、鍵サーバ103は、暗号化スキームHESの復号アルゴリズムHES.Decを介して、公開鍵epkに対応するプライベート(秘密)鍵eskを用いて、ブラインド関数Bを復号し、復号された値V=HES.Decesk(B)を取得する。ステップ90において、鍵サーバ103は、復号された値Vからブラインド鍵K´を生成する。暗号化スキームの準同型特性のため、ステップ83において、結果として得られるブラインド鍵K´は、c及びブラインド関数Bを介して導入されたサーバ鍵kの、(ナンスNを用いてブラインド化された)ブラインド関数を含む。これは、ブラインド鍵K´がc及びkのブラインド化された疑似ランダム関数(PRF)を含む例において、以下でより詳細に示される。ステップ91において、鍵サーバ103は、ブラインド鍵K´をクライアント・コンピュータ102に送る。最終的に、ステップ92において、クライアント・コンピュータ102は、ナンスNを用いてブラインド鍵K´を非ブラインド化することにより、クライアント鍵Kを取得する。従って、鍵サーバが、ベクトルx(ベクトル)又は最終的なクライアント鍵Kについてのいかなる情報も知ることなく、結果として得られるクライアント鍵が、サーバ鍵k及びコミットメントc(及び、従って、知識が証明されたベクトルx(ベクトル))の決定性関数として効率的に導出される。
上記のスキームの例示的な実施及び予備的概念の紹介が以下に詳細に説明される。
証明システム(PoK):
PoK{(w):ステートメント(w)}は、ステートメント(w)が真であるような証拠(witness)wの知識の一般的な対話式ゼロ知識証明プロトコルを示す。PoKシステムは、完全性(completeness)、ゼロ知識(zero-knowledge)及びシミュレーション健全抽出可能性(simulation-sound extractability)を実現する。PoKシステムは、2つのプロトコルPK.Setup及びPK.Proveから構成することができる。セキュリティ・パラメータ1λの入力時、PK.Setup(1λ)は、(parPK)を出力する。PK.Prove(parPK,・)は、ステートメント(w)が真であることの証明者(prover)と検証者(verifier)との間の対話型プロトコルである。証明者が保持する付加的な入力は、ステートメントに対する証拠wである。
PoK(すなわち、一般化されたシュノア署名証明(Schnorr-signature proof)、非特許文献1を参照されたい)の具体的実現のために、非特許文献2に記載されるような、
Figure 2020521369

のような、表記が用いられる。
コミットメント・スキーム(CS)
正当性(correctness)、秘匿性(hiding property)及び拘束性(binding property)を満たす、ペデルセン・コミットメント(Pedersen commitment)を用いるCSをインスタンス化することができる。さらに、ペデルセン・コミットメントは準同型である。コミットメント・スキームは、使用される他のプリミティブと両立性のある合成位数群(composite order group)においてインスタンス化することができる。
CS.Setup(1λ):セットアップ・アルゴリズムは、gcd(p−1,q−1,7)=1となるように、2つのλビットの安全素数p,qを選択し、N=pqを設定し、メッセージ空間及びランダムネス空間をそれぞれ:
Figure 2020521369

として設定する。次に、アルゴリズムは、ρ=2kN+1となるように素数ρを選び、ここでkは、小さい素数である。
Figure 2020521369

は、群
Figure 2020521369

の位数Nの部分群(subgroup)とし、ここで、G及びHは、
Figure 2020521369

の2つの乱数生成器であり、logGは未知である。
Figure 2020521369

は、位数Nの
Figure 2020521369

の循環部分群であり、全ての演算は、mod ρを生じる(すなわち、指数においてmod N簡約される)。最終的に、アルゴリズムは、公開パラメータ
Figure 2020521369

を出力する。
CS.Commit(par,m,r):com←G mod ρを計算する。(com,open=r)を出力する。
CS.Verify(par,com,m,open):com←Gopen mod ρの場合、1を出力する。他の場合には、0を出力する。
疑似ランダム関数(PRF):
素数位数群の代わりに合成位数群上でインスタンス化された、Boneh−Boyen予測不能関数(非特許文献3)に基づく、Dodis−Yampolskiy(非特許文献4)のPRFスキームの変形である、非特許文献5及び非特許文献6に記載されているとおりのPRFスキームを用いることができる。このPRFは、部分群の秘匿にのみに基づいた任意のサイズの領域についてセキュアであることが証明されている。素数位数群によりインスタンス化されたオリジナルのPRFについての証明は、セキュリティ・パラメータにおける多項式サイズである領域についてのみ考慮されている。この実施形態においては、実直だが物見高い(honest-but-curious)鍵サーバによるオフラインのブルート・フォース・アタック(総当たり攻撃、Brute Force Attack)を可能にしないように、任意のサイズの領域である。以下のPRF定義を参照されたい。
PRF.Setup(1λ):セキュリティ・パラメータλの入力時、セットアップ・アルゴリズムは、2つのλビットの安全素数p,qを選択し、N=pqを設定し、次に群
Figure 2020521369

を生成し、ここで、
Figure 2020521369

は、
Figure 2020521369

の部分群である。1つの実施形態において、群
Figure 2020521369

の候補は、合成位数の双線形群の効率的なペアリング又はターゲット群のない、合成位数の楕円曲線群とすることができる。最終的に、セットアップ・アルゴリズムは、
Figure 2020521369

を選び、
Figure 2020521369

を設定し、
Figure 2020521369

を出力する。
PRF.KeyGen(1λ、par):セキュリティ・パラメータ及び公開パラメータλ、parの入力時、鍵生成アルゴリズムは、k←Kを選び、kを出力する。
PRF.Evaluate(par,k,m):公開パラメータpar、鍵k∈K及び入力m∈Dの入力時、評価アルゴリズムは、以下を行う。:gcd((k+m),N)≠1の場合、
Figure 2020521369

を出力し(ここで、
Figure 2020521369

は、エラー記号を示す)、他の場合には、
Figure 2020521369

を出力する。
準同型暗号スキーム(HES):
Projective Paillier暗号スキームは、非特許文献7及び非特許文献8において提案される。このスキームは、Paillier暗号の準同型特性を保持するが、公開鍵の密なセットを有する。
HES.Setup(1λ):セキュリティ・パラメータλの入力時、セットアップ・アルゴリズムは、2つのλビットの安全素数p,qを選択し、N=pqを設定する。(こうしたNは、非特許文献9に記載されるように、分散方式で生成され得る。)次に、セットアップ・アルゴリズムは、ランダム要素
Figure 2020521369

を生成し、
Figure 2020521369

、位数Nの特別な要素を設定する。最終的に、アルゴリズムは、
Figure 2020521369

を出力する。
HES.KeyGen(par):公開パラメータparの入力時、鍵生成アルゴリズムは、ランダムt∈[N/4]を選び、epk←g mod Nを計算する。最終的に、アルゴリズムは、
Figure 2020521369

を出力する。
HES.Enc(epk,m):公開鍵epk及びメッセージmの入力時、暗号アルゴリズムは、ランダムr∈[N/4]を選び、u←g mod N;v←epk mod Nを計算する。最終的に、アルゴリズムは、暗号文
Figure 2020521369

を出力する。幾つかの実施形態において、[m]は、mの暗号を意味するように用いられる。
HES.Dec(esk,ct):秘密鍵esk及び暗号文ctの入力時、暗号アルゴリズムは、m´←v/uesk mod Nを計算する。幾つかのn∈[N]において、m´が形式(1+Nm mod N)のものである場合、mを出力する。さもなければ、
Figure 2020521369

を出力する。
衝突困難ハッシュ関数(Collision Resistant Hash Function、CRHF):
関数
Figure 2020521369

のファミリーは、ランダムな
Figure 2020521369

の入力時に、2つの異なる入力x≠yで
Figure 2020521369

となるものを(セキュリティ・パラメータにおいて無視できるほどの可能性を有する場合を除き)見つける効率的なアルゴリズムない場合、衝突困難である。CRHFは、非特許文献10に記載されるように実施され得る。
マークル・ハッシュ木(Merkle Hash Tree、MHT):
マークル・ハッシュ木(非特許文献11を参照されたい)は、ベクトル全体をオープンすることなく、ベクトル内の個々の値をオープンし、後で検証が可能になるように、簡潔なコミットメントをベクトルに提供する。ベクトル
Figure 2020521369

が与えられた場合、MHTは、次のようにその上に構成される:値をペアにし、次に、CRHFを用いて各ペアをハッシュする。次に、ハッシュ値を再びペアにし、各ペアをさらにハッシュし、このプロセスは、単一のハッシュ値のみが残るまで繰り返される。これは、ベクトルのブロックに対応する葉及び最後の残りのハッシュ値に対応する根を有する二分木をもたらす。根は、x(ベクトル)に対するコミットメントとして働き、後で、オープニングを根に対して検証することができるように、個々の位置をオープンすることができる。
ベクトル・コミットメント(VC):
ベクトル・コミットメント(非特許文献12を参照されたい)は、後でメッセージの1つに対するコミットメントをオープンする(すなわち、xが、実際に、ベクトルx(ベクトル)におけるi番目の値であることを証明する証拠を提供する)ことが可能となるように、メッセージのベクトルにコミットすることを可能にする。コミットメント及びオープニングのサイズは、ベクトルの長さと無関係である。この実施形態において、効率要件は、VCにより修正される。例えば、nを、コミットされたベクトルの長さとする。従って、コミットメントのサイズは、nとは無関係であることが要求されるが、オープニングのサイズは、nを下回らなければならない、すなわち、o(n)である。VCは、非秘匿(NHVC)又は秘匿(HVC)のいずれかとすることができる。NHVCの場合、セキュリティ要件は、拘束性である。別の言い方をすれば、この特性は、ひとたび攻撃者がVCを思い付くと、そのVCについての同じ位置に関して2つの異なる値を証明することはできないことを要求する。HVCの場合、秘匿は、付加的なセキュリティ要件である。別の言い方をすれば、この要件は、VCが、コミットされたベクトルを隠すべきである(すなわち、攻撃者は、VCが、ベクトル
Figure 2020521369

に対して作成されたか、又はベクトル
Figure 2020521369

に対して作成されたかを識別できてはならず、ここで、
Figure 2020521369

である)ことを規定する。標準的なコミットメントに関しては秘匿が定められる。
アルゴリズムへの入力の大部分は、HVC及びNHVCにおいて共通である。HVCのために排他的に必要とされ得る入力を、以下により詳細に説明する。
VC.Setup(1λ,n):セキュリティ・パラメータ1λ及びベクトルのサイズにおける上界nの入力時、メッセージ空間
Figure 2020521369

の記述及びランダムネス空間
Figure 2020521369

の記述を含む、コミットメント・スキームのパラメータparを生成する。
Figure 2020521369

公開パラメータpar及びベクトル
Figure 2020521369

の入力時、アルゴリズムは、x(ベクトル)に対するコミットメントを出力する。
Figure 2020521369

公開パラメータpar、位置インデックスi、及びベクトルx(ベクトル)の入力時、アルゴリズムは、xに関する証拠wを生成し、(w,x)を出力する。
VC.Verify(par,i、com、w,x):公開パラメータpar、位置インデックスi、コミットメントcom、及びxに対する証拠wの入力時、アルゴリズムは、wが、位置iにおけるxに関する有効な証拠である場合、1を出力し、他の場合には0を出力する。
以下に2つのアルゴリズム(VC.RandCommitment,VC.RandWitness)が定められる。VC.RandCommitmentは、NHVCをHVCに更新するのを可能にし、VC.RandWitnessは、NHVC証拠をHVCのものに更新するのを可能にする。
VC.RandCommitment(par,com,r):公開パラメータpar、非秘匿コミットメントcom及び
Figure 2020521369

の入力時、HVC com´を出力する。
VC.RandWitness(par,com,i,r,w):公開パラメータpar、NHVC証拠w、非秘匿コミットメントcom及び
Figure 2020521369

の入力時、HVC証拠w´を出力する。
プロトコル:
プロトコルは、信頼できるCRS(共通参照文字列、Common Reference String)モデルにおいて設計され、各パーティ、すなわち鍵サーバ103(KS)及びクライアント・コンピュータ102(C)は、信頼できるパーティからスキームの公開パラメータを受け取る。鍵サーバ103は、付加的に、PRFに対する鍵を選ぶ。
プロトコルは、2つの主なビルディング・ブロック、すなわちVC及びPRFを有する。この実施形態において、KSがCの入力ファイルに対して生成するクライアント鍵は:(1)鍵はランダムであるべきである、従って、攻撃者により推測するのが困難であるが、(2)ステートレスであるにもかかわらず、ファイルに対して一意であるべきである(すなわち、KSは、同じファイルに対して同じ鍵を生成できなければならない)、及び(3)鍵は、公に(publicly)計算可能であってはならない(すなわち、秘密情報を保有するKSのみが、ファイルに対する鍵を計算できなくてはならない)。ここでは、これらの特性の全ては、ベクトルx(ベクトル)に対する簡潔な非秘匿及び拘束コミットメントに対するPRF評価をクライアント鍵に行うことにより提供される。この短いコミットメントは、sで示される。
KSはCの入力についての情報を知るべきではないので、PRF評価は、オブリビアスに行うことができる。この実施形態において、PRFに関するKS(kを保持する)とC(sを保持する)との間のオブリビアスなPRF評価プロトコルが上述された。さらに、プロトコルのこの部分は、上述の準同型暗号化スキームHESを利用することができる。1つの実施形態において、Cは悪意のあるものであり得る。従って、PRFの計算においてKSが関与する前に、Cがその入力sにコミットし、そのオープニングの知識(PoK Π)を証明することを保証するのは有益であり得る。
VCの特性を利用して、クライアントが、sのプリイメージ(preimage)の知識を効率的に証明することが可能になる。VCは、Cにプリイメージの幾つかのランダム位置の知識を証明させる。この実施形態において、この特性は、Cがその入力のt個のランダム位置の知識を証明することをKSにチャレンジさせることにより利用され、ここで、tは、x(ベクトル)の長さnよりずっと小さいものであり得る。tの値の決定は、所定のプロトコルに対して受容できる健全性(soundness)エラーに依存する。
構成
Setup:セットアップ要求Setup及びSetupの特定の呼び出しについてのセットアップid sidの受信時、KSは以下を実行する:
1.信頼できるソースから(par)を受け取り、ここで、par=(parPRF,parVC,parCS,parPK,parHES)、すなわち、上記のPRF.Setup、CS.Setup、PK.Setup及びHES.Setupにおけるparである。(これらの選択されたスキームにおいて、これらは全て、共有パラメータを有する同じ設定で機能する。表記を簡単化するために、使用されるプリミティブが文脈から明白である場合、そのプリミティブの特定のパラメータではなく、parが参照され得る。)
2.k←PRF.KeyGen(1λ,par)を実行し、kを格納する。
3.(Setup,sid)を出力する。
Evaluate(評価する):Cにおける
Figure 2020521369

(ここで、qidは、Evaluateの特定の呼び出しについてのクエリ識別子である)の受信時、CとKSとの間で以下のプロトコルが実行される。
1.信頼できるソースから、(par)=(parPRF,parVC,parCS,parPK,parHES)を受け取る。
2.Cは、ランダム
Figure 2020521369

を選び、
Figure 2020521369

を計算する。
付加的に、Cは、以下を行う:
(a)ランダム
Figure 2020521369

を選ぶ。
(b)com←CS.Commit(par,s,r)を計算する。
(c)次に、Cは、以下の知識の証明
Figure 2020521369

を生成する。
(d)付加的に、Cは、以下の知識の証明
Figure 2020521369

を計算し、(s´,com,Πs,Πs)をKSに送る。
3.KSは、Πs1及びΠs2を検証する。検証が成功した場合、次に、KSは次のステップに進む。
4.KSは、[1,n]からインデックスのサブセットI={j,...j}をランダムに選び、IをCに送る。
5.各チャレンジ・インデックス(challenged index)j∈Iについて、Cは、
Figure 2020521369

を計算し、以下の知識の証明
Figure 2020521369

を生成する。Πs3={π|j∈I}とする。Ciは、Πs3をKSに送り返す。
6.KSは、Πs3を検証し、検証が成功した場合、KSは、次のステップに進む。
7.KSは、(epk,esk)←HES.KeyGen(par)を選び、
[k]←HES.Enc(epk,k)を計算し、(epk,[k])をCに送る。
8.次に、Cは、
Figure 2020521369

を選び、
Figure 2020521369

を計算し、ここで、[s]←HES.Enc(epk,s)である。
9.次に、Cは、以下の知識の証明
Figure 2020521369

を生成し、Cは、(ct,Π)をKSに送る。
10.KSは、Πを検証し、検証が成功した場合、KSは続行する。
11.KSは、V←HES.Dec(esk、ct)を計算する。
12.次に、KSは、
Figure 2020521369

を計算し、K´をCに送る。
13.
Figure 2020521369

の場合、
Figure 2020521369

を出力する。他の場合には、
Figure 2020521369

を計算し、Kを出力する(ランダムネスrは、この構成において選択されるような適切な値域を有する代数PRFを用いてここで打ち消される)。
上記の構成において、コミットメントs、s´及びcomは、それぞれ、図4及び図5における第1、第2、及び第3のコミットメントc、c及びcに対応し、ランダム値rは、これらの図におけるノンスNに対応する。第2の部分証明Πs2は、c及びcが、cである共通の値から計算されることを証明する。ここでの準同型暗号スキームHESは加法準同型スキームであり、そのため、C=HES.Encepk(m)及びC=HES.Encepk(m)の場合、
Figure 2020521369

であり、ここで、
Figure 2020521369

は、ここでは乗算に対応する。従って、ステップ8において:
Figure 2020521369

であり、そのため、ステップ11において、V=r(k+s)である。ステップ12において、
Figure 2020521369

であり、そのため、ステップ13において、
Figure 2020521369

であり、先に定められたPRFに対応する。鍵サーバ103は、ベクトルx(ベクトル)又は最終的なクライアント鍵Kについて何も知らず、クライアントは、サーバ鍵kについての情報を入手しない。
パラメータtは、効率と引き換えに通信帯域幅を与える調整パラメータである。このパラメータを所望の通りに設定し、証明者(すなわち、クライアント)がファイル全体を保有する所望の信頼度を与えることができる。健全性エラーを最小にするために、最初にクライアント・ファイルFを消失コード化し、消失コード化されたファイルをn個のブロックに分割することによりベクトルx(ベクトル)を定める。消失コードが、ビットのαの割合まで消失を復元でき、
Figure 2020521369

が、所望の健全性限界である場合、tは、
Figure 2020521369

となる最小の整数として選ぶことができる。
上記の構成に基づいて、実施形態で用いるためのベクトル・コミットメント・スキームの2つの例は、以下の通りである。
マークル木(Merkle Tree)ベースのベクトル・コミットメント
このVCスキームは、非特許文献10に提示されるアキュムレータ構成に基づく。1つの実施形態において、構成に基づき、同じマークル・ハッシュ木(MHT)を用いることができるが、葉のインデックス位置を隠し、効率を向上させる必要はない。
VC.Setup(1λ,n):セキュリティ・パラメータ1λ及び上界nの入力時、アルゴリズムは、CS.Setup(1λ)を呼び出す。CS.Setup(1λ)は、
Figure 2020521369

を返すものとする。このアルゴリズムは、
Figure 2020521369

として定められる衝突困難ハッシュ関数
Figure 2020521369

によりタプルを追加し、それをparとして返す。
Figure 2020521369

公開パラメータpar及び入力
Figure 2020521369

の入力時、アルゴリズムは、
Figure 2020521369

を用いて、x(ベクトル)に対してマークル・ハッシュ木を再帰的に構築する。(nが2の累乗ではない場合、nが2の完全累乗になるまで「ダミー」要素をx(ベクトル)に挿入する。MRは、MHTの根とする。アルゴリズムは、コミットメントcom=MRを出力する。
Figure 2020521369

公開パラメータpar、位置インデックスi、及び入力
Figure 2020521369


の入力時、アルゴリズムは、以下を行う。MHTにおける、値MRを有する根ノードから、値x[i]を有する葉ノードまでの経路に沿ったノード値を、
Figure 2020521369

として示すものとする。
Figure 2020521369

であることに留意されたい。
Figure 2020521369

は、
Figure 2020521369

の兄弟経路とする(pは、兄弟を有さないことに留意されたい)。次に、アルゴリズムは、
Figure 2020521369

を計算し、証拠
Figure 2020521369

を出力する。
VC.Verify(par,i,com,w,x):公開パラメータpar、位置インデックスi、コミットメントcom=MR、及び証拠(w,x)の入力時、アルゴリズムは、wを
Figure 2020521369

として解釈し、p=xを設定する。各々のj=d,...,1について、アルゴリズムは、左右の子をハッシュすることにより、内部ノードを再帰的に計算する。
Figure 2020521369

とする(pが左の兄弟である場合、他の場合には、
Figure 2020521369

である)。このアルゴリズムは、MR=pであるかどうかをチェックする。アルゴリズムは、等しさが成り立つ場合、1を出力し、他の場合には、0を出力する。NHVC実現のために、wを、
Figure 2020521369

として解釈しなければならない。ステップの残りは同じままである。最後のステップにおいて、MR=pであるかどうかをチェックする代わりに、アルゴリズムは、CS.Verify(par,comMR,MR,openMR)=1であるかどうかをチェックすることになる。アルゴリズムは、等しさが成り立つ場合、1を出力し、他の場合には0を出力する。
VC.RandCommitment(par,com,r):公開パラメータpar、非秘匿ベクトル・コミットメントcom=MR、及びランダムネス
Figure 2020521369

の入力時、アルゴリズムは、CS.Commit(par,MR,r)を呼び出す。CS.Commit(par,MR,r)は、(comMR,openMR)を返すものとする。com´=comMRを出力する。
VC.RandWitness(par,com,i,r,w):公開パラメータpar、非秘匿ベクトル・コミットメントcom=MR、位置i、ランダムネス
Figure 2020521369

及び部分証拠wの入力時、アルゴリズムは、wを
Figure 2020521369

として解釈し、(comMR,openMR)をwに付加し、ここで、(comMR,openMR)=CS.Commit(par,MR,r)であり、
Figure 2020521369

を出力する。
マークル木ベースのベクトル・コミットメントについての知識の証明
本実施形態において、3つの付随するPoKを、効率的に実施することを必要とすることがある。全てのPoKの完全な実施は、以下により詳細に説明される。ここで説明されるのは、証明であり、これは、このVCインスタンス化のために回避することができ、より多くの配慮を必要とする。VC.RandCommitmentは、NHVC、MRに対するPedersenコミットメント・スキームを計算するCS.Commitアルゴリズムと同じである。従って、Πs2は、等しさの標準的な証明にすぎないことになる。実際に、以下の最適化を行うことができ:プロトコル全体にわたってs´をcomとして使用し、Πs2をスキップする。例えば、証明πについては:
PoK{(w´,x):1=HVC.Verify(par,j,com,w´,x)}
であり、これらの関連の証明はより複雑であり、以下のステップを必要とすることを証明する。
1.アルゴリズムは、w´を
Figure 2020521369

として解釈する。
2.MHTにおける、値MRを有する根ノードから、値xを有する葉ノードまでの経路に沿ったノード値が、
Figure 2020521369

として示される。アルゴリズムは、
Figure 2020521369

を用いて、この経路をボトムアップ式に再帰的に回復する。各ステップにおいて、インデックス位置jは、左の子及び右の子を一意に決定する。
3.次に、アルゴリズムは、この経路におけるあらゆる値p及びMHTにおけるpの左及び右の子の値にコミットする、すなわち、lを左の子とし、rを右とするとき、アルゴリズムは、
Figure 2020521369

を計算する。
次に、アルゴリズムは、Pが、実際、根に対するコミットメントである証明を生成する(明確にするために、CS.Commitの出力におけるopenは無視する。):
Figure 2020521369
5.次に、j=0,...,d−1について、以下の知識の証明は、各トリプレット(P、L、R)が適格である(well-formed)ことを証明する。L(又は、R)は、Pj+1として用いられることに留意されたい。
Figure 2020521369
この証明は、以下のサブステップを必要とする。
(a)この証明は、Pedersenコミットメント・スキームの準同型特性、及び2つの値の乗算のためのPoKmultのためのサブプロトコルを使用する。このプロトコルは、標準的な技術を用いてインスタンス化され、それは、次のようにPoKmultにより簡潔に表される。
Figure 2020521369

(b)証明者は、
Figure 2020521369

及び
Figure 2020521369

を計算する。
(c)証明者は、以下のトリプレットの各々に対するPoKmultを呼び出し、コミットメントの正当性を証明する。:
Figure 2020521369

(d)検証者は、
Figure 2020521369

として
Figure 2020521369

を用いて(準同型性を用いて)、
Figure 2020521369

を計算することができる。
(e)証明者は、全てのこれらのコミットメント及びPoKmultを検証者に送る。
6.d=log nは、MHTの深さとする。完全証明は、コミットメントのセット
Figure 2020521369

、前のサブステップにおける10d補助コミットメント、及び8d+1 PoKから成る。証明の全体のサイズは、0(d)=0(log n)である。PoKごとの10コミットメント及び8 PoKmultは、表記PoK内に吸収されることに留意されたい。
RSAベースのベクトル・コミットメント
このスキームは、(1)コミットメント・スキームが秘匿するように構成される、及び(2)値及び証拠を直接提供する代わりに、i番目のインデックスを証明するPoKが付加される、という2つの主な変更を伴う、非特許文献13に提示されるRSAベースの非秘匿VCスキームに基づいている。
VC.Setup(1λ,n):セキュリティ・パラメータ1λ及び上界nの入力時、アルゴリズムは、以下を行う:
1.2つのλビットの安全素数p=2p´+1及びq=2q´+1を選び、N=pqを設定する。
2.メッセージの長さ上の上界であるl=poly(λ)を選ぶ。
3.φ(N)を割り切らないn個のl+161ビット素数をe,...,eを選択する。
4.ランダムな
Figure 2020521369

を選ぶ。
5.j=1〜nについて、
Figure 2020521369

を計算する。
6.
Figure 2020521369

を設定する。
7.パラメータ
Figure 2020521369

を出力する。
Figure 2020521369

公開パラメータpar及び入力x(ベクトル)=(x,...,x)の入力時、アルゴリズムは、
Figure 2020521369

を計算し、コミットメントcomを出力する。
Figure 2020521369

公開パラメータpar、位置i、及びx(ベクトル)=(x,...,x)の入力時、アルゴリズムは、
Figure 2020521369

を計算し、証拠(w,x)を出力する。
VC.Verify(par,i,com,w,x):公開パラメータpar、位置i、コミットメントcom、及び証拠(w,x)の入力時、アルゴリズムは、
Figure 2020521369

の場合1を出力し、他の場合には0を出力する。検証アルゴリズムは、アルゴリズムが、comの代わりに、com´を入力として利用することを除いて、HVC及びNHVCの両方に対して同じである。
VC.RandCommitment(par,com,r):公開パラメータpar、非秘匿ベクトル・コミットメントcom及びランダムネス
Figure 2020521369

の入力時、アルゴリズムは、
Figure 2020521369

を計算し、com´を出力する。
VC.RandWitness(par,com,i,r,w):公開パラメータpar、非秘匿ベクトル・コミットメントcom、位置i、ランダムネス
Figure 2020521369

及び部分証拠wの入力時、アルゴリズムは、
Figure 2020521369

を計算し、w´を出力する。
以下は、上記に使用されるPoKプロトコルの具体的な実施を与える。CRSは、Camenisch−Shoup暗号化スキーム(先に参照した非特許文献8)のCPAバージョンの公開鍵を含む。この実施形態において、CRSにおける係数Nが獲得され、ここで、Nは、分散方式で生成され得る2つの安全素数の積である。g´及びy´は、CRS内に含まれる
Figure 2020521369

のランダム要素とし、g=g´2N、y=y´2N、及びh=1+N mod Nを設定する。最初に、上記のVCインスタンス化の両方に共通しているPoKの実施を説明し、次に、各VCに特有の実施を与える。当技術分野において周知のように、全てのPoKは、所望の通り、対話型又は非対話型証明として実行することができる。
両方のVCスキームに共通のPoK:
Figure 2020521369

これは、最初に、r及びrが[N/4]からランダムに選ばれるものとして
Figure 2020521369

を計算し、これらの値を検証者に送り、証明者により以下の証明
Figure 2020521369

を実行することにより行われ、ここで、簡潔にするために、mod ρ及びmod Nは省略される。
Figure 2020521369

は、次のように実行される。[k]=(e,e)を示すものとする。証明者は、最初に、uが[N/4]からランダムに選ばれるものとして
Figure 2020521369

を計算し、これらの値を検証者に送り、検証者により以下の証明プロトコル:
Figure 2020521369

を実行する。
ここで、項
Figure 2020521369

は、w=srであること、従って、
Figure 2020521369

であることを示し、Bは、暗号化をランダム化するために証明者が使用した値である。
MHT−VCのためのPoK
これらの証明は、Πs3を証明する(上で説明したように、ここではΠs2を省略できる)。
Figure 2020521369

は、r、r及びrが[N/4]からランダムに引き出されるものとして、最初に、
Figure 2020521369

を計算し、これらの値を検証者に送り、検証者により以下の証明プロトコル:
Figure 2020521369

を実行することにより行われ、ここで、簡潔にするために、mod ρ及びmod Nは省略される。
Figure 2020521369

は、r、r及びrが[N/4]からランダムに引き出されるものとして、最初に、
Figure 2020521369

を計算し、これらの値を検証者に送り、次に、検証者により以下の証明プロトコル:
Figure 2020521369

を実行することにより行われる。1つの実施形態において、これは、x及びyから計算できるので、証拠wを検証可能な形で暗号する必要がない場合がある。同様に、ハッシュ木の経路のより大きい証明においてこれらの証明を結合するとき、多数の暗号がドロップされることがある。
RSA−VCのためのPoK
Figure 2020521369

この記述は、s´が、次にcomがコミットするベクトル・コミットメントのランダム化されたバージョンであることを証明する。言い換えれば、rのある値及びcomにおいてコミットされたsに対して
Figure 2020521369

が成り立つ。この記述は、以下の証明プロトコル
Figure 2020521369

により証明することができる。ここで、r´は、ランダムネス
Figure 2020521369

を吸収するが、r´について何も証明する必要がない場合がある。このプロトコルは、これが「ダブル離散対数(double discrete logarithm)」関係(従って、GSPK01の接尾辞01)を伴うため、バイナリ・チャレンジと共に機能する。
Figure 2020521369

この証明において、CRSは、位数p´q´の
Figure 2020521369

から要素z、z及びzを含むことを必要とし得るので、wは、zに対して検証可能な形でエルガマル(ElGamal)暗号化し、z及びzに対してwについての範囲証明を行うことができる。従って、証明者は、u及びrが[N/4]からランダムに選ばれるものとして、最初に
Figure 2020521369

を計算し、E、E、E´及びEを検証者に送り、検証者により以下の証明:
Figure 2020521369

実行する。この証明は、
Figure 2020521369

がxに対する証拠であり、xが必要とされる範囲内にあることを示す。
上記の実施形態は、重複排除アプリケーションに適し、かつ、鍵を生成するファイルを保有しているクライアントによってしか取得できない、クライアント鍵の、並外れてセキュアかつ効率的な生成を可能にすることが分かるであろう。しかしながら、説明される鍵生成手順は、鍵を取得するためにクライアントが知識を証明するデータから決定論的に導出される、オブリビアスな(oblivious)鍵生成を必要とするあらゆる用途に適用できることが理解されるであろう。
説明される例示的な実施形態に対して他の多くの変更及び修正をなすことができる。例えば、ストレージ・サーバ4によるファイル・レベルの重複排除が上述されるが、他の実施形態において、重複排除の粒度は、データ・ブロック、オブジェクト、又は他のいずれかのデータ・ユニットとすることができる。また、幾つかの実施形態において、鍵サーバ103はクライアントとの対話において何も知らないので、鍵サーバ103及びストレージ・サーバ104の機能を併合することが可能である。しかしながら、オフラインのブルートフォース攻撃に対して与えられる付加的な保護のために、サーバ103及び104を別個のエンティティとして実装することが好ましい。
特に効率的な実施を説明したが、鍵生成プロトコルにおけるオブリビアスな鍵生成及び種々の証明の構成のために、他のスキームを考えることができる。
一般に、フローチャートのステップは、示されるものとは異なる順序で実行することができ、必要に応じて幾つかのステップを同時に実行することができる。
本発明の種々の実施形態の説明は説明を目的として提示されているが、網羅的であること、又は開示された実施形態に限定することを意図したものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の用途、若しくは市場で見出される技術に優る技術的改善を最も良く説明するために、又は当業者が本明細書に開示される実施形態を理解するのを可能にするために、選択された。
図6は、本発明の実施形態による、図1のコンピュータ・システム500の内部コンポーネント及び外部コンポーネントのブロック図である。図6は、1つの実装の例証のみを与えるものであり、異なる実施形態を実装できる環境に関するいずれの限定も意味しないことを認識されたい。一般に、図6に示されるコンポーネントは、マシン可読プログラム命令を実行できる任意の電子デバイスを表す。図6に示されるコンポーネントにより表すことができるコンピュータ・システム、環境、及び/又は構成の例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ラップトップ・コンピュータ・システム、タブレット・コンピュータ・システム、携帯電話(例えば、スマートフォン)、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステム若しくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境が挙げられる。
コンピュータ・システム500は、1つ又は複数のプロセッサ504、メモリ506、永続的ストレージ508、通信ユニット512、及び入力/出力(I/O)インターフェース514の間の通信を提供する通信ファブリック502を含む。通信ファブリック502は、プロセッサ(マイクロプロセッサ、通信及びネットワーク・プロセッサ等のような)、システム・メモリ、周辺機器、及びシステム内の他のいずれかのハードウェア・コンポーネントの間でデータ及び/又は制御情報を送るように設計された任意のアーキテクチャを有するように実装することができる。例えば、通信ファブリック502は、1つ又は複数のバスを有するように実装することができる。
メモリ506及び永続的ストレージ508は、コンピュータ可読ストレージ媒体である。この実施形態において、メモリ506は、ランダム・アクセス・メモリ(RAM)516及びキャッシュ・メモリ518を含む。一般に、メモリ506は、任意の好適な揮発性又は不揮発性コンピュータ可読ストレージ媒体を含むことができる。ソフトウェアは、メモリ506の1つ又は複数のメモリを介した、それぞれのプロセッサ504の1つ又複数による実行及び/又はアクセスのために、永続ストレージ508内に格納される。
永続的ストレージ508は、例えば、複数の磁気ハードディスク・ドライブを含むことができる。代替的に又は磁気ハードディスク・ドライブに加えて、永続的ストレージ508は、1つ又は複数のソリッド・ステート・ハード・ドライブ、半導体ストレージ・デバイス、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、フラッシュメモリ、又はプログラム命令若しくはデジタル情報を格納することができる他のいずれかのコンピュータ可読ストレージ媒体を含むことができる。
永続的ストレージ508により使用される媒体は、取り外し可能とすることもできる。例えば、取り外し可能なハードドライブを、永続的ストレージ508のために用いることができる。他の例として、光ディスク及び磁気ディスク、サムドライブ、及び永続的ストレージ508の一部でもある別のコンピュータ可読ストレージ媒体に転送するためにドライブに挿入されるスマートカードが挙げられる。
通信ユニット512は、ネットワーク(例えば、ネットワーク105)を介するコンピュータ・システム又はデバイスとの通信を提供する。この例示的な実施形態において、通信ユニット512は、TCP/IPアダプタ・カード、無線Wi−Fiインターフェース・カード、又は3G若しくは4G無線インターフェース・カード、又は他の有線若しくは無線通信リンクを含む。ネットワークは、例えば、銅線、光ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。本発明の実施形態を実施するために用いられるソフトウェア及びデータは、通信ユニット512を通じて(例えば、インターネット、ローカル・エリア・ネットワーク、又は他の広域ネットワークを介して)ダウンロードすることができる。通信ユニット512から、ソフトウェア及びデータを永続的ストレージ508にロードすることができる。
1つ又は複数のI/Oインターフェース514は、コンピュータ・システム500に接続することができる他のデバイスとのデータの入力及び出力を可能にする。例えば、I/Oインターフェース514は、キーボード、コンピュータ・マウス、タッチスクリーン、仮想キーボード、タッチパッド、ポインティング・デバイス、又は他のヒューマン・インターフェース・デバイスのような1つ又は複数の外部デバイス520への接続を提供することができる。外部デバイス520はまた、例えば、サムドライブ、携帯型光ディスク又は磁気ディスク、及びメモリカードなどの携帯型コンピュータ可読ストレージ媒体を含むこともできる。I/Oインターフェース514は、ディスプレイ522にも接続される。
ディスプレイ522は、データを表示するための機構をユーザに提供し、例えば、コンピュータ・モニタとすることができる。ディスプレイ522は、組み込み式ディスプレイとすることもでき、タブレット・コンピュータの内蔵ディスプレイのようなタッチスクリーンとして機能することができる。
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体(単数又は複数)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカード若しくは命令がそこに記録された溝内の隆起構造のような機械的にエンコードされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び/又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び/又はエッジ・サーバを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語若しくは類似のプログラミング言語などの通常の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を用いて電子回路を個人化することによりコンピュータ可読プログラム命令を実行し、本発明の態様を実施することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本開示はクラウド・コンピューティングについての詳細な説明を含むが、本明細書に記載される教示の実装は、クラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在周知の又は後で開発される他のいずれかのタイプのコンピューティング環境と共に実施することができる。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスに存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図7を参照すると、例示的なクラウド・コンピューティング環境10が示される。示されるように、クラウド・コンピューティング環境10は、例えば携帯情報端末(PDA)又は携帯電話14A、デスクトップ・コンピュータ14B、ラップトップ・コンピュータ14C、及び/又は自動車コンピュータ・システム14Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード10を含む。ノード1は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境10は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。図7に示されるコンピューティング・デバイス14A〜Nのタイプは単に例示であることを意図し、コンピューティング・ノード1及びクラウド・コンピューティング環境10は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
ここで図8を参照すると、クラウド・コンピューティング環境10(図7)によって提供される機能抽象化層の組が示される。図8に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層600は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム601と;RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ602と;サーバ603と;ブレード・サーバ604と;ストレージ・デバイス605と;ネットワーク及びネットワーキング・コンポーネント606とが含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア607及びデータベース・ソフトウェア608を含む。
仮想化層700は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ701、仮想ストレージ702、仮想プライベート・ネットワークを含む仮想ネットワーク703、仮想アプリケーション及びオペレーティング・システム704、並びに仮想クライアント705を提供することができる。
一例においては、管理層800は、以下で説明される機能を提供することができる。リソース・プロビジョニング801は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定802は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。一例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル803は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理804は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行805は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層900は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション901、ソフトウェア開発及びライフサイクル管理902、仮想教室教育配信903、データ分析処理904、トランザクション処理905、及びシステム906が含まれる。
100:システム
102:クライアント・コンピュータ
103:鍵サーバ
104:ストレージ・サーバ
105:ネットワーク
106:データベース
500:コンピュータ・システム
502:通信ファブリック
504:プロセッサ
506:メモリ
508:永続的ストレージ
512:通信ユニット
514:I/Oインターフェース
520:外部デバイス
522:ディスプレイ

Claims (24)

  1. クライアント・データを提供するためのクライアント・コンピュータであって、
    前記クライアント・データに対応する、インデックスi=1乃至nを有する複数n個のデータ・ブロックxを含むベクトル
    Figure 2020521369

    を定め、
    前記ベクトルx(ベクトル)に対する、非秘匿ベクトル・コミットメントである第1のコミットメントを生成し、
    前記ベクトルx(ベクトル)に対する、秘匿ベクトル・コミットメントである第2のコミットメントを生成し、
    前記第1のコミットメントに対する第3のコミットメントを生成し、
    前記第2のコミットメント及び前記第3のコミットメントを鍵サーバに送り、
    前記第2のコミットメント及び前記第3のコミットメントにおける前記ベクトルx(ベクトル)の、前記インデックスiのサブセットについての対応する前記データ・ブロックxの知識の第1の証明を前記鍵サーバに提供する、
    ように構成されたクライアント・コンピュータと、
    ネットワーク上で通信するための鍵サーバであって、
    秘密のサーバ鍵kを格納し、
    前記第1の証明を検証することに応答して、鍵生成プロトコルにおいて前記クライアント・コンピュータと関与する、
    ように構成された鍵サーバと、
    を含み、
    前記クライアント・コンピュータは、関与する間、
    前記第1のコミットメントのブラインド関数を前記鍵サーバに送り、前記ブラインド関数及び前記第3のコミットメントにおける前記第1のコミットメントの知識の第2の証明を前記鍵サーバに提供する、
    ように構成され、
    前記鍵サーバは、関与する間、
    前記第2の証明を検証することに応答して、前記ブラインド関数から、前記第1のコミットメント及び前記サーバ鍵kの前記ブラインド関数を含むブラインド鍵K´を生成し、
    前記ブラインド鍵K´を前記クライアント・コンピュータに送る、
    ように構成され、
    前記クライアント・コンピュータは、前記関与する間、前記ブラインド鍵K´を非ブラインド化し、前記第1のコミットメント及び前記サーバ鍵kの決定性関数を含むクライアント鍵Kを取得するように構成される、システム。
  2. 前記鍵生成プロトコルの間、前記システムにおいて、さらに、
    前記鍵サーバは、準同型暗号化スキームを介して暗号化スキームの公開鍵の下で前記サーバ鍵kを暗号化して、暗号化された鍵を生成し、前記暗号化された鍵を前記クライアント・コンピュータに送るように構成され、
    前記クライアント・コンピュータは、前記暗号化スキームを介して前記公開鍵の下で前記第1のコミットメントを暗号化して暗号化されたコミットメントを生成し、ナンスを用いて前記暗号化された鍵及び前記暗号化されたコミットメントの関数をブラインド化することにより、前記第1のコミットメントの前記ブラインド関数を生成するように構成され、
    前記鍵サーバは、前記暗号化スキームの復号アルゴリズムを介して、前記公開鍵に対応するプライベート鍵を用いて、前記第1のコミットメントの前記ブラインド関数を復号して、復号された値Vを取得し、前記復号された値Vから前記ブラインド鍵K´を生成するように構成され、
    前記クライアント・コンピュータは、前記ナンスを用いて、前記ブラインド鍵K´を非ブラインド化することにより、前記クライアント鍵Kを取得するように構成される、請求項1に記載のシステム。
  3. 前記鍵サーバは、前記クライアント鍵Kが前記第1のコミットメント及び前記サーバ鍵kの疑似ランダム関数を含むように、前記ブラインド鍵K´を生成するように構成される、請求項2に記載のシステム。
  4. 前記システムは、さらに、
    知識の前記第1の証明が、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、
    前記クライアント・コンピュータは、前記第2のコミットメント及び前記第3のコミットメントと共に、前記第1の部分証明及び前記第2の部分証明を前記鍵サーバに送るように構成され、
    前記鍵サーバは、前記第1の部分証明及び前記第2の部分証明を検証することに応答して、前記インデックスiの前記サブセットを選択し、前記サブセットを前記クライアント・コンピュータに送るように構成され、
    前記クライアント・コンピュータは、前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する第3の部分証明を生成するように構成され、
    前記鍵サーバは、前記第3の部分証明を検証して、知識の前記第1の証明を検証するように構成される、請求項1に記載のシステム。
  5. 前記第2のコミットメントは、前記第1のコミットメントから計算され、共通の値は、前記第1のコミットメントを含む、請求項4に記載のシステム。
  6. 前記システムは、1つより多くの前記クライアント・コンピュータを含み、前記1つより多くのクライアント・コンピュータの各々は、前記ネットワークを介して前記鍵サーバと通信するように適合される、請求項1に記載のシステム。
  7. 前記1つより多くのクライアント・コンピュータは、その前記クライアント鍵Kを用いて前記クライアント・データを暗号化して暗号文を生成し、前記ネットワークにおける遠隔ストレージのために前記暗号文を送るようにさらに構成される、請求項6に記載のシステム。
  8. 前記システムは、
    前記1つよい多くのクライアント・コンピュータから受け取った暗号文を格納するための、前記ネットワークに接続されたストレージ・サーバをさらに含み、前記ストレージ・サーバは、前記暗号文のための重複排除プロセスを実施するように構成される、請求項7に記載のシステム。
  9. クライアント・コンピュータにより、前記クライアント・コンピュータにおけるクライアント・データに対応する、インデックスi=1乃至nを有する複数n個のデータ・ブロックxを有するベクトルx(ベクトル)を定めることと、
    前記クライアント・コンピュータにより、前記ベクトルx(ベクトル)に対する、非秘匿ベクトル・コミットメントである第1のコミットメントを生成することと、
    前記クライアント・コンピュータにより、前記ベクトルx(ベクトル)に対する、秘匿ベクトル・コミットメントである第2のコミットメントを生成することと、
    前記クライアント・コンピュータにより、前記第1のコミットメントに対する第3のコミットメントを生成することと、
    前記クライアント・コンピュータにより、前記第2のコミットメント及び前記第3のコミットメントを鍵サーバに送ることと、
    前記クライアント・コンピュータにより、前記第2のコミットメント及び前記第3のコミットメントにおける前記ベクトルx(ベクトル)の、前記インデックスiのサブセットについての対応する前記データ・ブロックxの知識の第1の証明を前記鍵サーバに提供することと、
    前記鍵サーバにより前記第1の証明を検証することに応答して、
    前記クライアント・コンピュータにより、前記第1のコミットメントのブラインド関数を前記鍵サーバに送ることにより、鍵生成プロトコルを実行し、前記ブラインド関数及び前記第3のコミットメントにおける前記第1のコミットメントの知識の第2の証明を前記鍵サーバに提供し、前記鍵サーバから、前記ブラインド関数から生成され、前記第1のコミットメント及び前記鍵サーバの秘密サーバ鍵kの前記ブラインド関数を含むブラインド鍵K´を受け取り、前記ブラインド鍵K´を非ブラインド化して、前記第1のコミットメント及び前記サーバ鍵kの決定性関数を含むクライアント鍵Kを取得することと、
    を含む、方法。
  10. 前記鍵生成プロトコルを実行することは、
    前記クライアント・コンピュータにより、前記鍵サーバから、準同型暗号化スキームを介して暗号化スキームの公開鍵の下で前記サーバ鍵を暗号化することにより生成される暗号化鍵を受け取ることと、
    前記クライアント・コンピュータにより、前記暗号化スキームを介して前記公開鍵の下で前記第1のコミットメントを暗号化し、暗号化されたコミットメントを生成することと、
    前記クライアント・コンピュータにより、ナンスを用いて前記暗号化された鍵及び前記暗号化されたコミットメントの関数をブラインド化することにより、前記第1のコミットメントの前記ブラインド関数を生成することと、
    前記第1のコミットメントの前記ブラインド関数を復号することにより取得される復号された値Vから、前記鍵サーバにおいて生成された前記ブラインド鍵K´を受け取ることに応答して、前記クライアント・コンピュータにより、前記暗号化スキームの復号アルゴリズムを介して、前記公開鍵に対応するプライベート鍵を使用し、前記ナンスを用いて前記ブラインド鍵K´を非ブラインド化することと、
    を含む、請求項9に記載の方法。
  11. 知識の前記第1の証明は、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、さらに、
    前記クライアント・コンピュータにより、前記第2のコミットメント及び前記第3のコミットメントと共に、前記第1の部分証明及び前記第2の部分証明を前記鍵サーバに送ることと、
    前記鍵サーバにより前記第1の部分証明及び前記第2の部分証明を検証することに応答して、前記クライアント・コンピュータにより、前記鍵サーバから、前記インデックスiの前記サブセットを受け取ることと、
    前記クライアント・コンピュータにより、前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する前記第3の部分証明を生成することと、
    前記クライアント・コンピュータにより、前記第3の部分証明を前記鍵サーバに送ることと、
    を含む、請求項9に記載の方法。
  12. 前記クライアント・コンピュータにより、前記第1のコミットメントから前記第2のコミットメントを計算することをさらに含み、前記共通の値は、前記第1のコミットメントを含む、請求項11に記載の方法。
  13. 前記クライアント・コンピュータにより、前記クライアント鍵Kを用いて前記クライアント・データを暗号化して暗号文を生成することと、
    前記クライアント・コンピュータにより、前記暗号文を、ネットワークに接続され、格納された暗号文のための重複排除プロセスを実施するように適合されたストレージ・サーバに送ることと、
    をさらに含む、請求項9に記載の方法。
  14. 知識の前記第1の証明は、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、前記方法はさらに、
    前記クライアント・コンピュータにより、前記第2のコミットメント及び前記第3のコミットメントと共に、前記第1の部分証明及び前記第2の部分証明を前記鍵サーバに送ることと、
    前記鍵サーバにより前記第1の部分証明及び前記第2の部分証明を検証することに応答して、前記クライアント・コンピュータにより、前記鍵サーバから、前記インデックスiの前記サブセットを受け取ることと、
    前記クライアント・コンピュータにより、前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する前記第3の部分証明を生成することと、
    前記クライアント・コンピュータにより、前記第3の部分証明を前記鍵サーバに送ることと、
    前記クライアント・コンピュータにより、前記クライアント鍵Kを用いて前記クライアント・データを暗号化して暗号文を生成することと、
    前記クライアント・コンピュータにより、前記暗号文を、ネットワークに接続され、格納された暗号文のための重複排除プロセスを実施するように構成されたストレージ・サーバに送ることと、
    を含む、請求項10に記載の方法。
  15. クライアント鍵Kをクライアント・コンピュータに提供する方法であって、前記クライアント・コンピュータは、クライアント・データを提供し、前記クライアント・データに対応する、インデックスi=1乃至nを有する複数n個のデータ・ブロックxを有するベクトルx(ベクトル)を定め、前記ベクトルx(ベクトル)に対する、非秘匿ベクトル・コミットメントである第1のコミットメントを生成するように適合され、前記方法は、ネットワークを介して前記クライアント・コンピュータと通信するように適合された鍵サーバにおいて、
    秘密サーバ鍵kを格納することと、
    前記クライアント・コンピュータから、前記ベクトルx(ベクトル)に対する、秘匿ベクトル・コミットメントである第2のコミットメント、及び前記第1のコミットメントに対する第3のコミットメントを受け取ることと、
    前記クライアント・コンピュータから、前記第2のコミットメント及び前記第3のコミットメントにおける前記ベクトルx(ベクトル)の、インデックスiのサブセットについての対応する前記データ・ブロックxの知識の第1の証明を受け取ることと、
    前記第1の証明を検証することと、
    前記第1の証明の検証に応答して実施される鍵生成プロトコルにおいて、前記クライアント・コンピュータから、前記第1のコミットメントのブラインド関数、並びに前記ブラインド関数及び前記第3のコミットメントにおける前記第1のコミットメントの知識の第2の証明を受け取ることと、
    前記第2の証明を検証し、それに応答して、前記第1のコミットメントの前記ブラインド関数から、前記第1のコミットメント及び前記サーバ鍵kのブラインド関数を含むブラインド鍵K´を生成し、前記クライアント・コンピュータにおける非ブラインド化のために前記ブラインド鍵K´を前記クライアント・コンピュータに送り、前記第1のコミットメント及びサーバ鍵kの決定性関数を含むクライアント鍵Kを取得することと、
    を含む、方法。
  16. 前記鍵生成プロトコルにおける前記鍵サーバにおいて、
    準同型暗号化スキームを介して前記スキームの公開鍵の下で前記サーバ鍵kを暗号化し、暗号化された鍵を生成することと、
    前記暗号化された鍵を前記クライアント・コンピュータに送って、前記暗号化スキームを介して前記公開鍵の下で前記第1のコミットメントを暗号化して前記第1のコミットメントの前記ブラインド関数を生成し、暗号化されたコミットメント生成し、ナンスを用いて前記暗号化された鍵及び前記暗号化されたコミットメントの関数をブラインド化することにより、前記第1のコミットメントの前記ブラインド関数を生成することと、
    前記暗号化スキームの復号アルゴリズムを介して、前記公開鍵に対応するプライベート鍵を用いて、前記第1のコミットメントの前記ブラインド関数を復号し、復号された値Vを取得することと、
    前記ナンスを用いて前記ブラインド鍵K´を非ブラインド化することにより、前記クライアント・コンピュータが前記クライアント鍵Kを取得できるように、前記復号された値Vから前記ブラインド鍵K´を生成することと、
    を含む、請求項15に記載の方法。
  17. 前記クライアント鍵Kが前記第1のコミットメント及び前記サーバ鍵kの疑似ランダム関数を含むように、前記ブラインド鍵K´を生成することを含む、請求項16に記載の方法。
  18. 知識の前記第1の証明は、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、前記方法は、前記鍵サーバにおいて、
    前記第2のコミットメント及び前記第3のコミットメントと共に、前記クライアント・コンピュータから、前記第1の部分証明及び前記第2の部分証明を受け取ることと、
    前記第1の部分証明及び前記第2の部分証明を検証し、それに応答して、前記インデックスiの前記サブセットを選択し、前記サブセットを前記クライアント・コンピュータに送ることと、
    前記クライアント・コンピュータから、前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する前記第3の部分証明を受け取ることと、
    前記第3の部分証明を検証し、知識の前記第1の証明を検証することと、
    を含む、請求項15に記載の方法。
  19. 知識の前記第1の証明は、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、前記方法は、前記鍵サーバにおいて、
    前記第2のコミットメント及び前記第3のコミットメントと共に、前記クライアント・コンピュータから、前記第1の部分証明及び前記第2の部分証明を受け取ることと、
    前記第1の部分証明及び前記第2の部分証明を検証し、それに応答して、前記インデックスiの前記サブセットを選択し、前記サブセットを前記クライアント・コンピュータに送ることと、
    前記クライアント・コンピュータから、前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する前記第3の部分証明を受け取ることと、
    前記第3の部分証明を検証し、知識の前記第1の証明を検証することと、
    前記鍵生成プロトコルにおいて、前記クライアント鍵Kが前記第1のコミットメント及び前記サーバ鍵kの疑似ランダム関数を含むように、前記ブラインド鍵K´を生成することと、
    を含む、請求項16に記載の方法。
  20. ネットワークを介して鍵サーバと通信するように適合されたクライアント・コンピュータにおいてクライアント鍵Kを取得するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、前記クライアント・コンピュータにより実行可能なプログラム命令を含み、前記プログラム命令は、
    前記クライアント・コンピュータにおけるクライアント・データに対応する、インデックスi=1乃至nを有する複数n個のデータ・ブロックxを有するベクトルx(ベクトル)を定めるためのプログラム命令と、
    前記ベクトルx(ベクトル)に対する、非秘匿ベクトル・コミットメントである第1のコミットメントを生成するためのプログラム命令と、
    前記ベクトルx(ベクトル)に対する、秘匿ベクトル・コミットメントである第2のコミットメントを生成ためのプログラム命令と、
    前記第1のコミットメントに対する第3のコミットメントを生成するためのプログラム命令と、
    前記第2のコミットメント及び前記第3のコミットメントを前記鍵サーバに送るためのプログラム命令と、
    前記第2のコミットメント及び前記第3のコミットメントにおける前記ベクトルx(ベクトル)の、前記インデックスiのサブセットについての対応する前記データ・ブロックxの知識の第1の証明を前記鍵サーバに提供するためのプログラム命令と、
    前記鍵サーバにより前記第1の証明を検証することに応答して実施される鍵生成プロトコルにおいて、前記第1のコミットメントのブラインド関数を前記鍵サーバに送り、前記ブラインド関数及び前記第3のコミットメントにおける前記第1のコミットメントの知識の第2の証明を前記鍵サーバに提供し、前記鍵サーバから、前記ブラインド関数から生成され、前記第1のコミットメント及び前記鍵サーバの秘密サーバ鍵kのブラインド関数を含むブラインド鍵K´を受け取り、前記ブラインド鍵K´を非ブラインド化して、前記第1のコミットメント及び前記サーバ鍵kの決定性関数を含む前記クライアント鍵Kを取得するためのプログラム命令と、
    を含む、コンピュータ・プログラム。
  21. 知識の前記第1の証明は、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、前記プログラム命令は、
    前記第2のコミットメント及び前記第3のコミットメントと共に、前記第1の部分証明及び前記第2の部分証明を前記鍵サーバに送るためのプログラム命令と、
    前記鍵サーバにより前記第1の部分証明及び前記第2の部分証明を検証することに応答して、前記鍵サーバから、前記インデックスiの前記サブセットを受け取るためのプログラム命令と、
    前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する前記第3の部分証明を生成するためのプログラム命令と、
    前記第3の部分証明を前記鍵サーバに送るためのプログラム命令と、
    準同型暗号化スキームを介して前記スキームの公開鍵の下で前記サーバ鍵kを暗号化することにより生成される暗号化された鍵を生成するための前記鍵生成プロトコルにおいて、前記暗号化スキームを介して前記公開鍵の下で前記第1のコミットメントを暗号化し;ナンスを用いて前記暗号化された鍵及び前記暗号化されたコミットメントの関数をブラインド化することにより、前記第1のコミットメントの前記ブラインド関数を生成し、前記第1のコミットメントの前記ブラインド関数を復号することにより得られる復号された値Vから、前記鍵サーバにおいて生成される前記ブラインド鍵K´を受け取ることに応答して、前記暗号化スキームの復号アルゴリズムを介して、前記公開鍵に対応するプライベート鍵を使用し、前記ナンスを用いて前記ブラインド鍵K´を非ブラインド化するためのプログラム命令と、
    をさらに含む、請求項20に記載のコンピュータ・プログラム。
  22. 前記プログラム命令は、
    前記クライアント鍵Kを用いて前記クライアント・データを暗号化して暗号文を生成するためのプログラム命令と、
    前記暗号文を、ネットワークに接続され、格納された暗号文のための重複排除プロセスを実施するように適合されたストレージ・サーバに送るためのプログラム命令と、
    をさらに含む、請求項21に記載のコンピュータ・プログラム。
  23. クライアント鍵Kを、ネットワークを介して鍵サーバと通信するように適合されたクライアント・コンピュータに提供するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、クライアント・データを提供し、前記クライアント・データに対応する、インデックスi=1乃至nを有する複数n個のデータ・ブロックxを有するベクトルx(ベクトル)を定め、前記ベクトルx(ベクトル)に対する、非秘匿ベクトル・コミットメントである第1のコミットメントを生成するように適合され、かつ、前記コンピュータ・プログラムは、前記鍵サーバにより実行可能なプログラム命令を含み、前記プログラム命令は、
    秘密サーバ鍵kを格納するためのプログラム命令と、
    前記クライアント・コンピュータから、前記ベクトルx(ベクトル)に対する、秘匿ベクトル・コミットメントである第2のコミットメントと、前記第1のコミットメントに対する第3のコミットメントを受け取るためのプログラム命令と、
    前記クライアント・コンピュータから、前記第2のコミットメント及び前記第3のコミットメントにおける前記ベクトルx(ベクトル)の、インデックスiのサブセットについての対応する前記データ・ブロックxの知識の第1の証明を受け取るためのプログラム命令と、
    前記第1の証明を検証するためのプログラム命令と、
    前記第1の証明の検証に応答して実施される鍵生成プロトコルにおいて、前記クライアント・コンピュータから、前記第1のコミットメントのブラインド関数及び前記ブラインド関数及び前記第3のコミットメントにおける前記第1のコミットメントの知識の第2の証明を受け取り、前記第2の証明を検証し、それに応答して、前記第1のコミットメントの前記ブラインド関数から、前記第1のコミットメント及び前記サーバ鍵kの関数を含むブラインド鍵K´を生成し、前記クライアント・コンピュータにおいて非ブラインド化するために前記ブラインド鍵K´を前記クライアント・コンピュータに送り、前記第1のコミットメント及び前記サーバ鍵kの決定性関数を含む前記クライアント鍵Kを取得するためのプログラム命令と、
    を含む、コンピュータ・プログラム。
  24. 知識の前記第1の証明は、前記第3のコミットメントにおける前記第1のコミットメントの知識を証明する第1の部分証明、前記第2のコミットメント及び前記第3のコミットメントが共通の値から計算されることを証明する第2の部分証明、及び第3の部分証明を含み、前記プログラム命令は、
    前記第2のコミットメント及び前記第3のコミットメントと共に、前記第1の部分証明及び前記第2の部分証明を受け取るためのプログラム命令と、
    前記第1の部分証明及び前記第2の部分証明を検証し、それに応答して、前記インデックスiの前記サブセットを選択し、前記サブセットを前記クライアント・コンピュータに送るためのプログラム命令と、
    前記クライアント・コンピュータから、前記第2のコミットメントにおける前記ベクトルx(ベクトル)の、前記サブセットにおける前記インデックスiの各々に対する前記データ・ブロックxの知識を証明する前記第3の部分証明を受け取るためのプログラム命令と、
    前記第3の部分証明を検証して、知識の前記第1の証明を検証するためのプログラム命令と、
    前記鍵生成プロトコルにおいて、準同型暗号化スキームを介して前記スキームの公開鍵の下で前記サーバ鍵kを暗号化し、前記暗号化スキームを介して前記公開鍵の下で前記第1のコミットメントを暗号化して暗号化された鍵を生成し、前記暗号化スキームを介して前記公開鍵の下で前記第1のコミットメントを暗号化し、前記暗号化された鍵を前記クライアント・コンピュータに送って、暗号化されたコミットメントを生成し、ナンスを用いて前記暗号化された鍵及び前記暗号化されたコミットメントの関数をブラインド化することにより、前記第1のコミットメントの前記ブラインド関数を生成し、前記暗号化スキームの復号アルゴリズムを介して、前記公開鍵に対応するプライベート鍵を使用し、復号された値Vを取得し、前記ナンスを用いて前記ブラインド鍵K´を非ブラインド化することにより前記クライアント鍵を取得できるように、前記復号された値Vから前記ブラインド鍵K´を生成するためのプログラム命令と、
    をさらに含む、請求項23に記載のコンピュータ・プログラム。
JP2019563127A 2017-05-19 2018-05-17 データ重複排除のためのアプリケーションによる暗号化鍵の生成 Active JP6959994B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/600,142 2017-05-19
US15/600,142 US10277395B2 (en) 2017-05-19 2017-05-19 Cryptographic key-generation with application to data deduplication
PCT/IB2018/053465 WO2018211446A1 (en) 2017-05-19 2018-05-17 Cryptographic key-generation with application to data deduplication

Publications (2)

Publication Number Publication Date
JP2020521369A true JP2020521369A (ja) 2020-07-16
JP6959994B2 JP6959994B2 (ja) 2021-11-05

Family

ID=64272724

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019563127A Active JP6959994B2 (ja) 2017-05-19 2018-05-17 データ重複排除のためのアプリケーションによる暗号化鍵の生成

Country Status (6)

Country Link
US (1) US10277395B2 (ja)
JP (1) JP6959994B2 (ja)
CN (1) CN110637441B (ja)
DE (1) DE112018001285B4 (ja)
GB (1) GB2576289B (ja)
WO (1) WO2018211446A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10536267B2 (en) * 2017-09-15 2020-01-14 Visa International Service Association Cryptographic services utilizing commodity hardware
US10897357B2 (en) * 2018-04-04 2021-01-19 International Business Machines Corporation Computation using lattice-based cryptography
KR102602119B1 (ko) * 2018-04-06 2023-11-15 주식회사 크립토랩 블록체인 및 동형암호 기술을 이용하여 데이터를 공유하는 사용자 장치와 전자장치 및 그 방법들
BR112019008151A2 (pt) * 2018-11-07 2019-09-10 Alibaba Group Holding Ltd método implementado por computador, meio de armazenamento legível por computador não transitório e sistema
US10447475B1 (en) * 2018-11-08 2019-10-15 Bar Ilan University System and method for managing backup of cryptographic keys
CN109543451B (zh) * 2018-11-28 2023-05-09 中共中央办公厅电子科技学院 一种基于模分量同态的隐私保护处理方法
BR112019014629A2 (pt) 2018-12-21 2021-07-20 Advanced New Technologies Co., Ltd. método implementado por computador, meio de armazenamento legível por computador e sistema
CN111602161B (zh) 2018-12-21 2023-08-22 创新先进技术有限公司 基于通用账户模型和同态加密的区块链数据保护
CN111092715B (zh) * 2019-12-27 2023-06-16 山东师范大学 一种网约车信息安全处理方法、系统及设备
IL272521B2 (en) * 2020-02-06 2023-05-01 Google Llc Creating sequences of network data while preventing the acquisition or manipulation of time data
CN111338572B (zh) * 2020-02-18 2021-09-14 电子科技大学 一种可调节加密重复数据删除方法
CN113590020A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于数据管理的方法、设备和计算机程序产品
WO2022144966A1 (ja) * 2020-12-28 2022-07-07 富士通株式会社 情報処理システム、制御方法、情報処理装置および制御プログラム
CN112822009B (zh) * 2021-01-26 2022-07-22 西安邮电大学 一种支持密文去重的属性密文高效共享系统
CN112947855B (zh) * 2021-02-01 2022-10-14 电子科技大学 一种基于硬件安全区的高效加密重复数据删除方法
US12010237B2 (en) 2022-01-25 2024-06-11 QPQ Ltd. System and method for digital proof generation
CN116484443B (zh) * 2023-06-19 2023-09-15 深圳市优博生活科技有限公司 一种基于鸿蒙系统的可信安全存储方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007157021A (ja) * 2005-12-08 2007-06-21 Nippon Telegr & Teleph Corp <Ntt> 耐タンパ証明携帯プログラム配信システム及びその方法
JP2015022318A (ja) * 2013-07-16 2015-02-02 日本電気株式会社 暗号化装置、復号装置、暗号化方法および暗号化プログラム
WO2016128070A1 (en) * 2015-02-13 2016-08-18 Nec Europe Ltd. Method for storing a data file of a client on a storage entity

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197142B2 (en) 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
CA2668676C (en) * 2006-11-07 2016-01-05 Security First Corp. Systems and methods for distributing and securing data
US8189769B2 (en) * 2007-07-31 2012-05-29 Apple Inc. Systems and methods for encrypting data
US8281143B1 (en) * 2008-09-29 2012-10-02 Symantec Operating Corporation Protecting against chosen plaintext attacks in untrusted storage environments that support data deduplication
EP2768177A1 (en) 2013-02-15 2014-08-20 Thomson Licensing Cryptographic devices and methods for generating and verifying commitments from linearly homomorphic signatures
CN104717067B (zh) * 2013-12-17 2018-02-23 中国移动通信集团辽宁有限公司 基于非交互式零知识的安全验证方法、设备及系统
US10911235B2 (en) 2015-03-31 2021-02-02 Nec Corporation Method for verifying information
CN105491006B (zh) * 2015-11-13 2018-11-13 河南师范大学 云外包密钥共享装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007157021A (ja) * 2005-12-08 2007-06-21 Nippon Telegr & Teleph Corp <Ntt> 耐タンパ証明携帯プログラム配信システム及びその方法
JP2015022318A (ja) * 2013-07-16 2015-02-02 日本電気株式会社 暗号化装置、復号装置、暗号化方法および暗号化プログラム
WO2016128070A1 (en) * 2015-02-13 2016-08-18 Nec Europe Ltd. Method for storing a data file of a client on a storage entity

Also Published As

Publication number Publication date
WO2018211446A1 (en) 2018-11-22
DE112018001285B4 (de) 2020-11-19
US10277395B2 (en) 2019-04-30
GB201917321D0 (en) 2020-01-15
JP6959994B2 (ja) 2021-11-05
GB2576289A (en) 2020-02-12
US20180337775A1 (en) 2018-11-22
GB2576289B (en) 2020-08-12
DE112018001285T5 (de) 2019-12-19
CN110637441B (zh) 2023-05-02
CN110637441A (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
JP6959994B2 (ja) データ重複排除のためのアプリケーションによる暗号化鍵の生成
Worku et al. Secure and efficient privacy-preserving public auditing scheme for cloud storage
Wang et al. Privacy-preserving public auditing for data storage security in cloud computing
Yu et al. Enhanced privacy of a remote data integrity-checking protocol for secure cloud storage
AU2021370924B2 (en) Certificate based security using post quantum cryptography
JP6016948B2 (ja) 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム
US10846372B1 (en) Systems and methods for trustless proof of possession and transmission of secured data
CN111989891A (zh) 数据处理方法、相关装置及区块链系统
Garg et al. Comparative analysis of cloud data integrity auditing protocols
JP2022547876A (ja) メッセージの署名のためのシステムおよび方法
JP7492508B2 (ja) コンピュータにより実施される、デジタル署名されたデータのシェアを分配するシステム及び方法
Yi et al. Efficient integrity verification of replicated data in cloud computing system
Rabaninejad et al. An identity-based online/offline secure cloud storage auditing scheme
Hariharasitaraman et al. A dynamic data security mechanism based on position aware Merkle tree for health rehabilitation services over cloud
JP2024501197A (ja) データをセキュア保護するためのハイブリッド鍵導出
Mishra et al. Dynamic large branching hash tree based secure and efficient dynamic auditing protocol for cloud environment
Wang et al. TrDup: enhancing secure data deduplication with user traceability in cloud computing
Kate et al. Flexirand: Output private (distributed) vrfs and application to blockchains
Salvakkam et al. An improved lattice based certificateless data integrity verification techniques for cloud computing
Rewadkar et al. Cloud storage system enabling secure privacy preserving third party audit
Esiner et al. Two-factor authentication for trusted third party free dispersed storage
Abraham et al. Proving possession and retrievability within a cloud environment: A comparative survey
Kiruthika Preserving the Privacy of Remote Data in Cloud using Bilinear Pairing Auditing Mechanism
Lin Cloud data storage with group collaboration supports
Mohanty Secure Data Storage on the Cloud using Homomorphic Encryption

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200526

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211005

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211006

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211008

R150 Certificate of patent or registration of utility model

Ref document number: 6959994

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150