(57)【要約】【課題】本発明は、ユーザ・デバイスのセットの匿名読み取り／書き込みアクセスをサーバに対して実行する。【解決手段】セットのユーザ・デバイスの書き込みアクセスは、匿名暗号化方式によって暗号化されたファイルを生成することと、疑似ランダム・タグを計算することと、このタグをユーザ・セットのユーザ・セット・インデックスとして使用して、暗号化済みファイルにインデックスを付けることと、暗号化済みファイルおよび関連するタグをサーバのストレージ・システムに書き込むこととを含む。セットのユーザ・デバイスの読み取りアクセスは、複数のタグに対応するタグ・データをサーバからダウンロードすることであって、このタグ・データが、各セットのユーザ・デバイスがユーザ・デバイスの各セットのユーザ・デバイスのうちの１つによって計算された、いわゆる「ユーザ・デバイス自身の」タグを認識できるようにする、ダウンロードすることと、複数のタグのうちからユーザ・デバイス自身のタグを決定することと、ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取ることと、暗号化済みファイルを暗号解読することとを含む。【選択図】図１
2019510261.tif 000002
【特許請求の範囲】
【請求項１】
サーバに対するユーザ・デバイスのセットの匿名読み取り／書き込みアクセスを実行するためのコンピュータ実装方法であって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、
前記セットの前記ユーザ・デバイスのうちの１つの書き込みアクセスが、
前記セットの前記ユーザ・デバイスのうちの前記１つのプロセッサ・システムを使用して、匿名暗号化方式によって暗号化済みファイルを生成するステップと、
前記プロセッサ・システムを使用して疑似ランダム・タグを計算するステップと、
前記タグを前記ユーザ・セットのユーザ・セット・インデックスとして使用して、前記暗号化済みファイルにインデックスを付けるステップと、
前記暗号化済みファイルおよび前記関連するタグを前記サーバのストレージ・システムに送信するステップと
を含んでおり、
前記セットの前記ユーザ・デバイスのうちの前記１つの読み取りアクセスが、
複数のタグに対応するタグ・データを前記サーバからダウンロードするステップであって、前記タグ・データが、各セットの前記ユーザ・デバイスがそれ自身のタグを認識できるようにし、前記ユーザ・デバイス自身のタグが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算されたタグを含んでいる、前記ダウンロードするステップと、
前記複数のタグのうちから前記ユーザ・デバイス自身のタグを決定するステップと、
前記ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取るステップと、
前記暗号化済みファイルを暗号解読するステップと
を含む、コンピュータ実装方法。
【請求項２】
疑似ランダム・タグを計算するステップが、シードおよびタグ番号の疑似ランダム関数を計算するステップを含み、前記タグ番号が前記ユーザ・デバイスのセットの前記タグの前記計算のための一意の番号である、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記ユーザ・デバイスに、前記匿名暗号化方式の１つまたは複数の暗号化キーおよび１つまたは複数の対応する暗号解読キーを提供するステップと、
前記ユーザ・デバイスに、共有疑似ランダム関数および共有シードを提供するステップと、
前記１つまたは複数の暗号化キーのうちの少なくとも１つを使用して、格納されるファイルを暗号化するステップと、
前記疑似ランダム関数を用いて前記共有シードおよび前記タグ番号から前記疑似ランダム・タグを計算するステップと
をさらに含む、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記タグ番号が、前記ユーザ・デバイスのカウンタによって計算されるカウンタ値である、請求項２または３に記載のコンピュータ実装方法。
【請求項５】
前記タグ番号が、前記ユーザ・デバイスによって生成されたノンスであり、
書き込みアクセスが、前記ノンスを前記暗号化済みファイルおよび前記関連するタグと一緒に前記サーバに書き込むステップを含み、
読み取りアクセスが、前記タグ・データおよび前記対応するノンスを前記サーバからダウンロードするステップを含む、請求項２または３に記載のコンピュータ実装方法。
【請求項６】
前記タグ番号が、前記サーバによって提供されたサーバ・インデックスである、請求項２または３に記載のコンピュータ実装方法。
【請求項７】
１つまたは複数の暗号化済みファイルを読み取るステップが、プライベート情報検索（ＰＩＲ）プロトコルを実行するステップを含む、請求項１ないし６のいずれか一項に記載のコンピュータ実装方法。
【請求項８】
１つまたは複数の暗号化済みファイルを読み取るステップが、紛失通信プロトコルを実行するステップを含む、請求項１ないし７のいずれか一項に記載のコンピュータ実装方法。
【請求項９】
前記ユーザ・デバイス自身のタグを決定するステップが、
前記シードおよび事前に定義されたタグ番号のセットの疑似ランダム関数を計算することによって比較タグを計算するステップと、
前記ダウンロードされたタグ・データを前記計算された比較タグと比較して、一致するタグを識別するステップと
を含み、
前記事前に定義されたタグ番号のセットが、ユーザ・デバイスの１つまたは複数のセットのユーザ・デバイスによって以前に使用されたタグ番号を含む、請求項２ないし６のいずれか一項に記載のコンピュータ実装方法。
【請求項１０】
前記匿名暗号化方式が対称暗号化方式または非対称暗号化方式である、請求項１ないし９のいずれか一項に記載のコンピュータ実装方法。
【請求項１１】
タグ・データをダウンロードするステップが、複数のタグをダウンロードするステップを含む、請求項１ないし１０のいずれか一項に記載のコンピュータ実装方法。
【請求項１２】
タグ・データをダウンロードするステップが、１つまたは複数のブルーム・フィルタをダウンロードするステップを含み、前記ブルーム・フィルタが、前記ブルーム・フィルタの配列の１つまたは複数の位置への前記タグのマッピングを含む、請求項１ないし１１のいずれか一項に記載のコンピュータ実装方法。
【請求項１３】
前記各ユーザ・デバイスによって、前記ユーザ・デバイスによって計算された最新のタグを前記ダウンロードされたタグ・データと比較するステップと、
一致が存在しない場合にさらにタグをダウンロードするステップと、
一致が存在する場合に、前記カウンタ値を増やし、前記疑似ランダム関数を用いて前記シードおよび前記増やされたカウンタ値から新しいタグを計算するステップと、
前記各ユーザ・デバイスによって、前記新しいタグを前記ダウンロードされたタグ・データと比較するステップと、
前記増やし計算するステップおよびその後の前記比較するステップを、一致が検出されなくなるまで繰り返すステップと、
一致をもたらした最大のカウンタ値を含む前記タグに関連付けられた前記暗号化済みファイルを読み取るステップと
を含む、請求項４に記載のコンピュータ実装方法。
【請求項１４】
複数のタグおよび前記関連するノンスを前記サーバからダウンロードするステップと、
前記シードおよび前記ダウンロードされたノンスの前記疑似ランダム関数を計算することによって比較タグを計算するステップと、
前記比較タグを前記タグ・データと比較して一致を識別するステップと
を含む、請求項５に記載のコンピュータ実装方法。
【請求項１５】
読み取りアクセスが、
前記サーバから発行された最新のサーバ・インデックスを受信するステップと、
比較タグを、前記シードおよびタグ番号の疑似ランダム関数として連続的に減少する順序で計算するステップであって、前記タグ番号が前記最新のサーバ・インデックスから開始して連続的に減らされる、前記計算するステップと、
前記比較タグを前記タグ・データと比較して一致を識別するステップと
を含む、請求項６に記載のコンピュータ実装方法。
【請求項１６】
サーバによって匿名ストレージ・サービスをユーザ・デバイスのセットに提供するためのコンピュータ実装方法であって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、前記方法が、
前記サーバによって、格納されるファイルを受信するステップであって、前記ファイルが匿名暗号化方式に従って暗号化されている、前記受信するステップと、
前記サーバによって、疑似ランダム・タグをユーザ・セット・インデックスとして受信するステップと、
前記暗号化済みファイルを関連するタグ・データと一緒に格納するステップであって、前記タグ・データが、各セットの前記ユーザ・デバイスがそれ自身のタグを認識できるようにし、前記ユーザ・デバイス自身のタグが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算されたタグを含んでいる、前記格納するステップと、
ユーザ・デバイスの読み取り要求に応答して、複数のタグに対応するタグ・データを前記ユーザ・デバイスに提供するステップと
を含む、コンピュータ実装方法。
【請求項１７】
前記ストレージ・サービスがクラウド環境内で提供される、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記サーバによって、前記ユーザ・デバイスから受信された前記タグをブルーム・フィルタに追加するステップを含み、前記ブルーム・フィルタが前記ブルーム・フィルタの配列の１つまたは複数の配列位置への前記タグのマッピングを実行する、請求項１６または１７に記載のコンピュータ実装方法。
【請求項１９】
匿名ストレージ・サービスをユーザ・デバイスのセットに提供するためのサーバであって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、前記サーバが、
格納されるファイルを受信することであって、前記ファイルが匿名暗号化方式に従って暗号化されている、前記受信することと、
疑似ランダム・タグをユーザ・セット・インデックスとして受信することと、
前記暗号化済みファイルを関連するタグ・データと一緒に格納することであって、前記タグ・データが、各セットの前記ユーザ・デバイスが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算された前記ユーザ・デバイス自身のタグを認識できるようにする、前記格納することと、
ユーザ・デバイスの読み取り要求に応答して、複数のタグに対応するタグ・データを前記ユーザ・デバイスに提供することと
を実行するように構成されている、サーバ。
【請求項２０】
前記サーバが、クラウド環境内でストレージ・サービスを提供するように構成されている、請求項１９に記載のサーバ。
【請求項２１】
前記サーバが、前記ユーザ・デバイスから受信された前記タグをブルーム・フィルタに追加するように構成されており、前記ブルーム・フィルタが前記ブルーム・フィルタの配列の１つまたは複数の配列位置への前記タグのマッピングを実行するように構成されている、請求項１９または２０に記載のサーバ。
【請求項２２】
サーバに対する匿名読み取り／書き込みアクセスを実行するためのユーザ・デバイスであって、前記ユーザ・デバイスがユーザまたはユーザ・グループに関連付けられており、前記ユーザ・デバイスが、
書き込みアクセスを実行することであって、
前記ユーザ・デバイスのプロセッサ・システムを使用して、匿名暗号化方式によって暗号化済みファイルを生成すること、
前記プロセッサ・システムを使用して疑似ランダム・タグを計算すること、
前記タグを前記ユーザ・セットのユーザ・セット・インデックスとして使用して、前記暗号化済みファイルにインデックスを付けること、ならびに
前記暗号化済みファイルおよび前記関連するタグを前記サーバのストレージ・システムに送信すること
を含んでいる、前記書き込みアクセスを実行することと、
読み取りアクセスを実行することであって、
複数のタグに対応するタグ・データを前記サーバからダウンロードすることであって、前記タグ・データが、各セットの前記ユーザ・デバイスが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算された前記ユーザ・デバイス自身のタグを認識できるようにする、前記ダウンロードすること、
前記複数のタグのうちから前記ユーザ・デバイス自身のタグを決定すること、
前記ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取ること、および
前記暗号化済みファイルを暗号解読すること
を含んでいる、前記読み取りアクセスを実行することと
を実行するように構成されている、ユーザ・デバイス。
【請求項２３】
前記ユーザ・デバイスが、
前記疑似ランダム・タグを、前記ユーザ・デバイスのセットの共有シードおよびタグ番号の疑似ランダム関数として計算することであって、前記タグ番号が、前記ユーザ・デバイスのセットの前記タグの前記計算のための一意の番号である、前記計算することと、
前記ユーザ・デバイスのセットの共有暗号化キーを使用して、格納されるファイルを暗号化することと
を実行するように構成されている、請求項２２に記載のユーザ・デバイス。
【請求項２４】
サーバに対するユーザ・デバイスのセットの匿名読み取り／書き込みアクセスのためのコンピュータ・プログラム製品であって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、
前記コンピュータ・プログラム製品が、プログラム命令が具現化されている非一時的コンピュータ可読記憶媒体を備えており、前記プログラム命令が、前記ユーザ・デバイスに方法を実行させるように、前記ユーザ・デバイスによって実行可能であり、前記方法が、
書き込みアクセスを実行するステップであって、
匿名暗号化方式によって暗号化済みファイルを生成するステップ、
疑似ランダム・タグを計算するステップ、
前記タグを前記ユーザ・セットのユーザ・セット・インデックスとして使用して、前記暗号化済みファイルにインデックスを付けるステップ、ならびに
前記暗号化済みファイルおよび前記関連するタグを前記サーバのストレージ・システムに送信するステップ
を含んでいる、前記書き込みアクセスを実行するステップと、
読み取りアクセスを実行するステップであって、
複数のタグに対応するタグ・データを前記サーバからダウンロードするステップであって、前記タグ・データが、各セットの前記ユーザ・デバイスがそれ自身のタグを認識できるようにし、前記ユーザ・デバイス自身のタグが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算されたタグを含んでいる、前記ダウンロードするステップ、
前記複数のタグのうちから前記ユーザ・デバイス自身のタグを決定するステップ、
前記ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取るステップ、および
前記暗号化済みファイルを暗号解読するステップ
を含んでいる、前記読み取りアクセスを実行するステップと
を含んでいる、コンピュータ・プログラム製品。
【請求項２５】
前記プログラム命令が、前記ユーザ・デバイスに方法を実行させるように、前記ユーザ・デバイスによって実行可能であり、前記方法が、
前記疑似ランダム・タグを、前記ユーザ・デバイスのセットの共有シードおよびタグ番号の疑似ランダム関数として計算するステップであって、前記タグ番号が、前記ユーザ・デバイスのセットの前記タグの前記計算のための一意の番号である、前記計算するステップと、
前記ユーザ・デバイスのセットの共有暗号化キーを使用して、格納されるファイルを暗号化するステップと
を含んでいる、請求項２４に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ・デバイスのセットの匿名読み取り／書き込みアクセスをサーバに対して実行するためのコンピュータ実装方法に関する。ユーザ・デバイスのセットは、ユーザまたはユーザ・グループに関連付けられる。本発明は、さらに、対応するサーバ、対応するユーザ・デバイス、および対応するコンピュータ・プログラム製品に関する。
【背景技術】
【０００２】
電子デバイスのユーザの多くは、電子取引を実行するために使用する複数のデバイス（例えば、１つまたは複数の携帯電話、ラップトップ、タブレット・コンピュータ、またはデスクトップ・コンピュータ、あるいはその組み合わせ）のセットを持っている。そのようなデバイスのセットは、１人によってのみ使用されることもあれば、複数人のグループ（例えば、家族のメンバー）によって共有されることもある。
【０００３】
電子取引は通常、サービス・プロバイダに対する認証を含んでいる。サービス・プロバイダに対する認証は、サーバを運用しているサービス・プロバイダの各サービスとのアカウントおよび対応する認証情報の最初の確立、ならびにその後のサービスへの再接続、およびアカウント・ホルダとしての識別を含むことがある。また、取引は、電子データに変換され、ユーザ・デバイス上で処理されて格納される。セットの複数のデバイスを使用する場合、それらのデバイス間でデータを同期させることが課題になる。
【０００４】
１つの可能な解決策は、すべてのデータをクラウド内のサーバに格納し、その後、データが必要とされるときに、情報をクラウドからデバイスに取り出すことである。取引の完了後に、更新された情報が再びクラウド内に蓄積される。そのような方法の場合、セットのすべてのユーザ・デバイスは、同じ暗号化／暗号解読キーを共有してよい。
【０００５】
この方法に伴う１つの問題は、多くの付帯情報がクラウド・プロバイダに漏洩する恐れがあることである。さらに詳細には、どのユーザがどの時点で情報を取り出し、蓄積するかを、クラウド・プロバイダが知る恐れがある。
【０００６】
米国特許第２０１５／０１８０９０５  Ａ１号は、複数のコンピューティング・デバイス間のデータの安全な同期のためのシステムおよび方法を開示する。この方法は、第１のクライアント・コンピュータ・システム上のファイル内容の更新を検出することを含み、このファイルは、複数の形式で、複数の異なるタイプのクライアント・コンピュータ・システム上で同期させる。この方法は、セキュリティ・ポリシーをファイルに関連付けることであって、このセキュリティ・ポリシーが、ファイルに対して実行され得る１つまたは複数の操作を限定するための制限を含む、関連付けることと、セキュリティ・ポリシーを適用して第２のクライアント・コンピュータ・システムでの制限の実施を制御しながら、ファイルを第２のクライアント・コンピューティングシステムと同期させることとをさらに含む。
【０００７】
米国特許第２０１４／００６８２５４号は、オンライン・サービス、あるいはクラウドベース・プラットフォームまたはクラウドベース環境との間でのアップロードまたはダウンロードあるいはその両方のストリーミング暗号化のためのシステムおよび方法を開示する。暗号化プロセスは、アップロードでの暗号化、ダウンロードでの暗号解読、およびインターバル・キー・サーバ（ＩＫＳ：Interval Key Server）と呼ばれる主要なインフラストラクチャを含む。アップロードおよびダウンロードの両方の間、ファイルがアップロード／ダウンロードされているときに、暗号化プロセスおよび暗号解読プロセスが実行される。
【０００８】
米国特許第８９２５０７５  Ｂ２号は、データの準同型暗号化を含んでいるクラウド・コンピューティングの保護のための方法を開示する。提案された方式は、代数的アプローチおよび分析的アプローチの両方と共に使用され得る。クラウド・サービスは、サーバ上に実装される。クライアントは、完全準同型暗号化を使用してデータを暗号化し、サーバに送信する。クラウド・サーバは、データを暗号解読せずに計算を実行し、暗号化された計算結果をクライアントに返す。クライアントは結果を暗号解読し、その結果は、最初のプレーンテキスト・データに対して実行された同じ計算の結果と一致する。
【０００９】
米国特許第２０１０／０３２５４４１号は、信頼当事者（ＲＰ：relying party）での、ＩＤプロバイダ（ＩｄＰ：identity provider）によって仲介される、プライバシーを保護して柔軟にユーザ選択される匿名アクセスおよび仮名アクセス（pseudonymous access）のためのシステムおよび方法を開示する。匿名アクセスは、ＲＰでのユーザの過去または未来のどのアクセスにも関連付けることができない。ユーザは、仮名アクセスを使用して、アクセスを、ＲＰで以前に登録された仮名に関連付けることができる。仮名システムが開示されている。仮名システムは、ユーザによって保持された少数の秘密のみを使用して、多数の異なる関連付けが不可能な仮名を生成することができるようにする。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第２０１５／０１８０９０５  Ａ１号
【特許文献２】米国特許第２０１４／００６８２５４号
【特許文献３】米国特許第８９２５０７５  Ｂ２号
【特許文献４】米国特許第２０１０／０３２５４４１号
【非特許文献】
【００１１】
【非特許文献１】Mohassel, P., Abe, M. (Ed.): A closer look at anonymity and robustness in encryption schemes, ASIACRYPT 2010, LNCS 6477, pp. 501-518, 2010
【非特許文献２】Abadi, M., Rogaway, P.: Reconciling two views of cryptography (the computational soundness of formal encryption) 20(3) 395(2007)
【非特許文献３】Desai, A.: The security of all-or-nothing encryption: Protecting against exhaustive key search, pp.359-375 (2000)
【非特許文献４】Fischlin, M.: Pseudorandom function tribe ensembles based on one-way permutations: Improvements and applications, pp. 432-445 (1999)
【非特許文献５】Abdalla, M., Bellare, M., Rogaway,P.: The oracle Diffie-Hellman assumptions and ananalysis of DHIES, pp. 143-158 (2001)
【非特許文献６】8.Boneh, D., Franklin, M.K.:Identity-based encryption from the Weil pairing, pp. 213-229 (2001)
【非特許文献７】Boyen, X., Waters, B.: Anonymous hierarchical identity-based encryption (without random oracles), pp. 290-307 (2006)
【非特許文献８】Cramer, R., Shoup,V.: Design and analysis of practical public-key encryption schemes secure against adaptive chosen ciphertext attack, vol.33(1), pp. 167-226 (2003)
【非特許文献９】Chor, B. et al: Private Information Retrieval, Journal of the ACM(JACM), Volume 45 Issue 6, Nov. 1998, Pages 965-981
【発明の概要】
【発明が解決しようとする課題】
【００１２】
したがって、中央サーバでプライバシーが強化されたデータの格納を可能にする方法ならびに対応するユーザ・デバイスおよびサーバを提供する必要がある。さらに、セットの複数のユーザ・デバイスが、プライバシーが強化された方法で、データを、そのような中央サーバに格納して同期させること、およびそのような中央サーバから取り出すことができるようにする方法および対応するユーザ・デバイスを提供する必要がある。
【課題を解決するための手段】
【００１３】
第１の態様によれば、本発明は、ユーザ・デバイスのセットの匿名読み取り／書き込みアクセスをサーバに対して実行するためのコンピュータ実装方法として具現化される。ユーザ・デバイスのセットは、ユーザまたはユーザ・グループに関連付けられる。セットのユーザ・デバイスのうちの１つの書き込みアクセスは、匿名暗号化方式（anonymous encryption scheme）によって暗号化されたファイルを作成することと、疑似ランダム・タグ（pseudorandom tag）を計算することと、このタグをユーザ・セットのユーザ・セット・インデックス（user set index）として使用して、暗号化済みファイルにインデックスを付けることと、暗号化済みファイルおよび関連するタグをサーバのストレージ・システムに送信することとを含む。セットのユーザ・デバイスの読み取りアクセスは、複数のタグに対応するタグ・データをサーバからダウンロードすることを含む。タグ・データは、各セットのユーザ・デバイスが、ユーザ・デバイスの各セットのユーザ・デバイスのうちの１つによって計算されたそのユーザ・デバイス自身のタグを認識できるようにする。読み取りアクセスは、複数のタグのうちからユーザ・デバイス自身のタグを決定することと、ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取ることと、暗号化済みファイルを暗号解読することとをさらに含む。
【００１４】
本発明の１つまたは複数の実施形態に従う１つのアイデアは、例えばユーザがファイルの更新を保存したい場合に、ユーザ・デバイスの書き込みアクセスごとに匿名暗号化方式を使用することである。デバイスは、更新を行おうとするたびに、匿名暗号化方式を使用することによって、古いファイルに関連付けることができない新しい暗号化済みファイルを生成する。
【００１５】
１つまたは複数の実施形態によれば、匿名暗号化方式は、秘密キーおよび秘密キーの所有者の同一性に関するどのような情報も明らかにしない方式として定義されてよい。非対称匿名暗号化方式の場合、暗号文は、暗号文の作成に使用された公開キーに関するどのような情報も明らかにしない。
【００１６】
ユーザ・デバイスのセットの別のデバイスによって蓄積された暗号化済みファイルを効率的に認識できるようにするために、疑似ランダム・タグを使用して暗号化済みファイルにインデックスが付けられる。そのような疑似ランダム・タグは、サーバに対して互いに関連付けることができない。ただし、それらのタグは、ユーザ・デバイスがそれ自身のタグ（すなわち、ユーザ・デバイス自身が生成したタグ、およびユーザ・デバイスの各セットの別のユーザ・デバイスによって生成されたタグ）を認識できる方法で生成される。したがって、ユーザ・デバイスのセットのデバイスは、それ自身のタグを認識した後に、対応する暗号化済みファイルをダウンロードすることができる。これによって、それらのユーザ・デバイスは、プライバシーが強化された方法で、セットのさまざまなユーザ・デバイスのファイルを書き込むこと、および読み取ることができる。
【００１７】
１つまたは複数の実施形態によれば、疑似ランダム・タグを計算することは、シードおよびタグ番号の疑似ランダム関数を計算することを含む。タグ番号は、ユーザ・デバイスのセットのタグの計算のための、一意の番号である。
【００１８】
これは、サーバによって関連付けることができないが、ユーザ・デバイスのセットのユーザ・デバイスによって認識できるタグを生成するための効率的で信頼性が高く、洗練された方法である。さらに詳細には、セットのすべてのユーザ・デバイスは、疑似ランダム関数およびシードを認識することができ、一意のタグ番号によって、ダウンロードされたタグ・データが、各セットのデバイスのうちの１つによって生成されたタグに一致するかどうかをチェックすることができる。
【００１９】
１つまたは複数の実施形態によれば、方法は、匿名暗号化方式の１つまたは複数の暗号化キーおよび１つまたは複数の対応する暗号解読キーをユーザ・デバイスに提供するステップと、共有疑似ランダム関数（joint pseudorandom function）および共有シードをユーザ・デバイスに提供するステップと、１つまたは複数の暗号化キーのうちの少なくとも１つを使用して格納されるファイルを暗号化するステップと、疑似ランダム関数を用いて共有シードおよびタグ番号から疑似ランダム・タグを計算するステップとを含む。
【００２０】
これは、サーバによって関連付けることができないが、ユーザ・デバイスのセットのユーザ・デバイスによって認識できるタグを生成するための効率的で信頼性が高く、洗練された方法である。
【００２１】
さらに詳細には、セットのすべてのユーザ・デバイスは、共有疑似ランダム関数および共有シードを保持している。これによって、一意のタグ番号によって、ダウンロードされたタグ・データが、各セットのデバイスのうちの１つによって生成されたタグと一致するかどうかをチェックすることが可能になる。
【００２２】
１つまたは複数の暗号化キーは、対称暗号化方式の秘密キーまたは非対称暗号化方式の公開キーであってよい。実施形態によれば、すべてのユーザ・デバイスが、共有暗号化キーと同じ暗号化キーを使用してよく、またはユーザ・デバイスが、デバイスごとに異なる暗号化キーを使用してもよい。後者の実施形態では、各ユーザ・デバイスには、そのユーザ・デバイスの暗号解読キーが提供される。
【００２３】
１つまたは複数の実施形態によれば、タグ番号は、ユーザ・デバイスのカウンタによって計算されるカウンタ値である。そのような実施形態によれば、セットのすべてのユーザ・デバイスは、タグ番号を生成するためのカウンタを備えている。これは、タグの生成に使用されたタグ番号を追跡するための効率的で洗練された方法である。さらに、セットの各ユーザ・デバイスは、セットの他のユーザ・デバイスがタグ番号を生成する方式を認識する。これによって、セットのユーザ・デバイスの同期を容易にする。さらに、ユーザ・デバイスは、それ自身のセットのタグ番号だけをチェックすればよい。これによって、一致の効率的な計算を促進する。
【００２４】
１つまたは複数の実施形態によれば、タグ番号は、ユーザ・デバイスによって生成されるノンスである。さらに、書き込みアクセスは、ノンスを暗号化済みファイルおよび関連するタグと一緒にサーバに書き込むことを含み、読み取りアクセスは、タグ・データおよび対応するノンスをサーバからダウンロードすることを含む。
【００２５】
これは、タグ番号を生成し、各セットによって使用されたタグ番号を追跡する、別の効率的な方法である。
【００２６】
１つまたは複数の実施形態によれば、タグ番号は、サーバによって提供されたサーバ・インデックスである。
【００２７】
そのような実施形態によれば、タグ番号は、サーバによって中心的に提供される。これは、タグ番号を生成し、各セットによって使用されたタグ番号を追跡する、別の効率的な方法である。
【００２８】
１つまたは複数の実施形態によれば、１つまたは複数の暗号化済みファイルを読み取ることは、プライベート情報検索（ＰＩＲ：private information retrieval）プロトコルを実行することを含む。
【００２９】
そのようなＰＩＲプロトコルは、当技術分野において知られており、サーバがユーザ・デバイスによって取り出されたファイルの同一性に関する情報を取得しないということを保証することができる。したがって、そのようなＰＩＲプロトコルを使用して、サーバおよび関連するクラウド・サービスが、デバイスがどの暗号化済みファイルをダウンロードしているかを知ることがないということが、保証されてよい。これによって、プライバシーをさらに強化する。
【００３０】
１つまたは複数の実施形態によれば、１つまたは複数の暗号化済みファイルを読み取ることは、紛失通信プロトコル（oblivious transfer protocol）を実行することを含む。
【００３１】
そのような紛失通信プロトコルを使用して、サーバおよび関連するクラウド・サービスが、デバイスがどの暗号化済みファイルをダウンロードしているかを知ることがないということが、保証されてよい。これによって、プライバシーをさらに強化する。
【００３２】
１つまたは複数の実施形態によれば、ユーザ・デバイス自身のタグを決定することは、シードおよび事前に定義されたタグ番号のセットの疑似ランダム関数を計算することによって比較タグを計算することを含む。さらに、ダウンロードされたタグ・データは、一致するタグを識別するために、計算された比較タグと比較される。本明細書では、事前に定義されたタグ番号のセットは、ユーザ・デバイスの１つまたは複数のセットのユーザ・デバイスによって以前に使用されたタグ番号を含む。
【００３３】
これは、ユーザ・デバイス自身のタグを決定するための効率的で信頼性の高い方法である。
【００３４】
１つまたは複数の実施形態によれば、タグ・データをダウンロードすることは、複数のタグをダウンロードすることを含む。そのような実施形態によれば、ユーザ・デバイスは、それ自身のタグ・データをサーバから読み取る／ダウンロードする。これによって、タグの直接比較が可能になる。
【００３５】
１つまたは複数の実施形態によれば、タグ・データをダウンロードすることは、１つまたは複数のブルーム・フィルタをダウンロードすることを含む。ブルーム・フィルタは、ブルーム・フィルタの配列の１つまたは複数の位置へのタグのマッピングを含む。
【００３６】
これは、計算された比較タグが、ブルーム・フィルタによって表されたタグのメンバーであるかどうかをチェックするための効率的かつ高速な方法である。
【００３７】
本発明の別の態様によれば、１つまたは複数の実施形態は、サーバによって匿名ストレージ・サービス（anonymous storage services）をユーザ・デバイスのセットに提供するためのコンピュータ実装方法であり、ユーザ・デバイスのセットはユーザまたはユーザ・グループに関連付けられている。方法は、サーバで、格納されるファイルを受信するステップであって、ファイルが、匿名暗号化方式に従って暗号化されている、受信するステップと、疑似ランダム・タグをユーザ・セット・インデックスとして受信するステップと、暗号化済みファイルを関連するタグ・データと一緒に格納するステップであって、タグ・データが、各セットのユーザ・デバイスがユーザ・デバイスの各セットのユーザ・デバイスのうちの１つによって計算されたユーザ・デバイス自身のタグを認識できるようにする、格納するステップとを含む。方法は、ユーザ・デバイスの読み取り要求に応答して、複数のタグに対応するタグ・データをユーザ・デバイスに提供するステップをさらに含む。
【００３８】
１つまたは複数の実施形態では、クラウド環境内でストレージ・サービスが提供される。
【００３９】
本発明の別の態様によれば、１つまたは複数の実施形態では、匿名ストレージ・サービスをユーザ・デバイスのセットに提供するためのサーバが提供される。ユーザ・デバイスのセットは、ユーザまたはユーザ・グループに関連付けられる。サーバは、匿名暗号化方式に従って暗号化された、格納されるファイルを受信するように構成される。サーバは、疑似ランダム・タグをユーザ・セット・インデックスとして受信することと、暗号化済みファイルを関連するタグ・データと一緒に格納することであって、タグ・データが、各セットのユーザ・デバイスがユーザ・デバイスの各セットのユーザ・デバイスのうちの１つによって計算されたユーザ・デバイス自身のタグを認識できるようにする、格納することと、ユーザ・デバイスの読み取り要求に応答して、複数のタグに対応するタグ・データをユーザ・デバイスに提供することとを実行するようにさらに構成される。
【００４０】
１つまたは複数の実施形態では、このサーバは、クラウド環境内でストレージ・サービスを提供するように構成される。
【００４１】
本発明の別の態様によれば、１つまたは複数の実施形態は、匿名読み取り／書き込みアクセスをサーバに対して実行するためのユーザ・デバイスを提供する。ユーザ・デバイスは、ユーザまたはユーザ・グループに関連付けられる。ユーザ・デバイスは、匿名暗号化方式によって暗号化されたファイルを生成することと、疑似ランダム・タグを計算することと、タグをユーザ・セットのユーザ・セット・インデックスとして使用して暗号化済みファイルにインデックスを付けることと、暗号化済みファイルおよび関連するタグをサーバのストレージ・システムに送信することとを含んでいる書き込みアクセスを実行するように構成される。ユーザ・デバイスは、複数のタグに対応するタグ・データをサーバからダウンロードすることを含んでいる読み取りアクセスを実行するようにさらに構成され、タグ・データは、各セットのユーザ・デバイスがユーザ・デバイスの各セットのユーザ・デバイスのうちの１つによって計算されたユーザ・デバイス自身のタグを認識できるようにする。ユーザ・デバイスは、複数のタグのうちからユーザ・デバイス自身のタグを決定することと、ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取ることと、暗号化済みファイルを暗号解読することとを実行するようにさらに構成される。
【００４２】
さらに別の態様によれば、１つまたは複数の実施形態は、サーバに対するユーザ・デバイスのセットの匿名読み取り／書き込みアクセスのためのコンピュータ・プログラム製品を提供する。ユーザ・デバイスのセットは、ユーザまたはユーザ・グループに関連付けられる。コンピュータ・プログラム製品は、プログラム命令が具現化された非一時的コンピュータ可読記憶媒体を備え、これらのプログラム命令は、ユーザ・デバイスに方法を実行させるように、ユーザ・デバイスによって実行可能であり、方法は、書き込みアクセスを実行するステップを含んでおり、書き込みアクセスを実行するステップは、匿名暗号化方式によって暗号化されたファイルを生成するステップと、疑似ランダム・タグを計算するステップと、タグをユーザ・セットのユーザ・セット・インデックスとして使用して、暗号化済みファイルにインデックスを付けるステップと、暗号化済みファイルおよび関連するタグをサーバのストレージ・システムに送信するステップとを含んでいる。さらに、これらのプログラム命令は、ユーザ・デバイスに、複数のタグに対応するタグ・データをサーバからダウンロードするステップを含んでいる読み取りアクセスを実行するステップを含んでいる方法を実行させ、タグ・データは、各セットのユーザ・デバイスがユーザ・デバイスの各セットのユーザ・デバイスのうちの１つによって計算されたユーザ・デバイス自身のタグを認識できるようにする。さらに、これらのプログラム命令は、ユーザ・デバイスに、複数のタグのうちからユーザ・デバイス自身のタグを決定するステップと、ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取るステップと、暗号化済みファイルを暗号解読するステップとを含んでいる方法を実行させる。
【００４３】
本発明の実施形態は、実例および非限定的な例の目的で添付の図面を参照して、下でさらに詳細に説明される。
【図面の簡単な説明】
【００４４】
【図１】本発明の１つまたは複数の実施形態に記載されたクラウド・コンピューティング・ノードを示す図である。
【図２】本発明の１つまたは複数の実施形態に記載されたクラウド・コンピューティング環境を示す図である。
【図３】本発明の１つまたは複数の実施形態に記載された抽象モデル・レイヤを示す図である。
【図４】本発明の１つまたは複数の実施形態に記載されたシステムの基本設定および対応する方法のステップを示す図である。
【図５】１つまたは複数の実施形態に記載された、ユーザ・デバイスのセットのユーザ・デバイスの書き込みアクセスの方法のステップのフローチャートを示す図である。
【図６】１つまたは複数の実施形態に記載された、ユーザ・デバイスのセットのユーザ・デバイスの読み取りアクセスの方法のステップのフローチャートを示す図である。
【図７】１つまたは複数の実施形態に記載された、図４のシステムに従って読み取りアクセスの方法のステップのフローチャートをさらに詳細に示す図である。
【図８】本発明の１つまたは複数の実施形態に記載されたブルーム・フィルタを示す図である。
【図９】ブルーム・フィルタを使用する本発明の１つまたは複数の実施形態に記載されたシステムの別の基本設定および対応する方法のステップを示す図である。
【図１０】図９のシステムの読み取りアクセスの方法のステップのフローチャートをさらに詳細に示す図である。
【図１１】本発明の１つまたは複数の実施形態に記載されたユーザ・デバイスの詳細なブロック図を示す図である。
【発明を実施するための形態】
【００４５】
この説明の文脈では、以下の規則、用語、または表現、あるいはその組み合わせを使用できる。
【００４６】
匿名暗号化方式は、秘密キーおよび秘密キーの所有者の同一性に関するどのような情報も明らかにしない方式として定義されてよい。匿名暗号化方式は、当技術分野においてよく知られている。そのような匿名暗号化方式の概要は、例えば、Mohassel, P., Abe,M. (Ed.): A closer look at anonymity and robustness in encryption schemes, ASIACRYPT 2010, LNCS 6477, pp. 501-518, 2010で提供されている。匿名暗号化方式は、対称または非対称であってよい。非対称匿名暗号化方式の場合、暗号文は、暗号文の作成に使用された公開キーに関するどのような情報も明らかにしない。対称匿名暗号化方式は、例えば、Abadi, M., Rogaway, P.: Reconciling two views of cryptography (the computational soundness of formal encryption) 20(3) 395 (2007)、またはDesai, A.: The security of all-or-nothing encryption: Protecting against exhaustive key search, pp. 359-375 (2000)、またはFischlin, M.: Pseudorandom functiontribe ensembles based on one-way permutations: Improvements and applications,pp. 432-445 (1999)に記載されている。
【００４７】
非対称匿名暗号化方式は、例えば、Abdalla, M., Bellare, M., Rogaway,P.: The oracle Diffie-Hellman assumptions and ananalysis of DHIES, pp. 143-158 (2001)、または8.Boneh, D.,Franklin, M.K.: Identity-based encryption from the Weil pairing, pp. 213-229(2001)、またはBoyen, X., Waters, B.: Anonymous hierarchical identity-based encryption(without random oracles), pp. 290-307 (2006)、またはCramer,R., Shoup, V.: Design and analysis of practical public-key encryption schemes secure against adaptive chosen ciphertext attack, vol. 33(1), pp. 167-226 (2003)に記載されている。
【００４８】
上で引用された参考文献は、本発明の１つまたは複数の実施形態に従って使用されてよい匿名暗号化方式の単なる例であるが、通常は、前述の特性を有する任意の匿名暗号化方式が使用されてよい。
【００４９】
本開示にはクラウド・コンピューティングに関する詳細な説明が含まれているが、本明細書において示された内容の実装は、クラウド・コンピューティング環境に限定されないと理解されるべきである。本発明の実施形態は、現在既知であるか、または今後開発される任意のその他の種類のコンピューティング環境と組み合わせて実装できる。
【００５０】
クラウド・コンピューティングは、構成可能な計算リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス）の共有プールへの便利なオンデマンドのネットワーク・アクセスを可能にするためのサービス提供モデルであり、管理上の手間とサービス・プロバイダとのやりとりを最小限に抑えて、それらのリソースを迅速にプロビジョニングおよび解放することができる。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、および少なくとも４つのデプロイメント・モデルを含むことができる。
【００５１】
特徴は、次のとおりである。
【００５２】
オンデマンドのセルフ・サービス：クラウドの利用者は、サーバの時間、ネットワーク・ストレージなどのコンピューティング能力を一方的に、サービス・プロバイダとの人間的なやりとりを必要とせず、必要に応じて自動的にプロビジョニングすることができる。
【００５３】
幅広いネットワーク・アクセス：クラウドの能力は、ネットワークを経由して利用可能であり、標準的なメカニズムを使用してアクセスできるため、異種のシン・クライアントまたはシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、およびＰＤＡ）による利用を促進する。
【００５４】
リソース・プール：プロバイダの計算リソースは、プールされ、マルチテナント・モデルを使用して複数の利用者に提供される。さまざまな物理的および仮想的リソースが、要求に従って動的に割り当ておよび再割り当てされる。場所に依存しないという感覚があり、利用者は通常、提供されるリソースの正確な場所に関して管理することも知ることもないが、さらに高い抽象レベル（例えば、国、州、データセンタ）では、場所を指定できる場合がある。
【００５５】
迅速な順応性：クラウドの能力は、迅速かつ柔軟に、場合によっては自動的にプロビジョニングされ、素早くスケールアウトし、迅速に解放されて素早くスケールインすることができる。プロビジョニングに使用できる能力は、利用者には、多くの場合、任意の量をいつでも無制限に購入できるように見える。
【００５６】
測定されるサービス：クラウド・システムは、計測機能を活用することによって、サービスの種類（例えば、ストレージ、処理、帯域幅、およびアクティブなユーザのアカウント）に適した抽象レベルで、リソースの使用を自動的に制御および最適化する。リソースの使用量は監視、制御、および報告することができ、利用されるサービスのプロバイダと利用者の両方に透明性が提供される。
【００５７】
サービス・モデルは、次のとおりである。
【００５８】
ＳａａＳ（Software as a Service）：利用者に提供される能力は、クラウド・インフラストラクチャ上で稼働しているプロバイダのアプリケーションの利用である。それらのアプリケーションは、Ｗｅｂブラウザ（例えば、Ｗｅｂベースの電子メール）などのシン・クライアント・インターフェイスを介して、さまざまなクライアント・デバイスからアクセスできる。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む基盤になるクラウド・インフラストラクチャを、限定的なユーザ固有のアプリケーション構成設定を行う可能性を除き、管理することも制御することもない。
【００５９】
ＰａａＳ（Platform as a Service）：利用者に提供される能力は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、利用者が作成または取得したアプリケーションをクラウド・インフラストラクチャにデプロイすることである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、デプロイされたアプリケーション、および場合によってはアプリケーション・ホスティング環境の構成を制御することができる。
【００６０】
ＩａａＳ（Infrastructure as a Service）：利用者に提供される能力は、処理、ストレージ、ネットワーク、およびその他の基本的な計算リソースのプロビジョニングであり、利用者は、オペレーティング・システムおよびアプリケーションを含むことができる任意のソフトウェアをデプロイして実行できる。利用者は、基盤になるクラウド・インフラストラクチャを管理することも制御することもないが、オペレーティング・システム、ストレージ、およびデプロイされたアプリケーションを制御することができ、場合によっては、選択されたネットワーク・コンポーネント（例えば、ホスト・ファイアウォール）を限定的に制御できる。
【００６１】
デプロイメント・モデルは、次のとおりである。
【００６２】
プライベート・クラウド：このクラウド・インフラストラクチャは、ある組織のためにのみ運用される。このクラウド・インフラストラクチャは、この組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【００６３】
コミュニティ・クラウド：このクラウド・インフラストラクチャは、複数の組織によって共有され、関心事（例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスに関する考慮事項）を共有している特定のコミュニティをサポートする。このクラウド・インフラストラクチャは、これらの組織またはサード・パーティによって管理することができ、オンプレミスまたはオフプレミスに存在することができる。
【００６４】
パブリック・クラウド：このクラウド・インフラストラクチャは、一般ユーザまたは大規模な業界団体が使用できるようになっており、クラウド・サービスを販売する組織によって所有される。
【００６５】
ハイブリッド・クラウド：このクラウド・インフラストラクチャは、データとアプリケーションの移植を可能にする標準化された技術または独自の技術（例えば、クラウド間の負荷バランスを調整するためのクラウド・バースト）によって固有の実体を残したまま互いに結合された２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）の複合である。
【００６６】
クラウド・コンピューティング環境は、ステートレス、疎結合、モジュール性、および意味的相互運用性に重点を置いたサービス指向の環境である。クラウド・コンピューティングの中心になるのは、相互接続されたノードのネットワークを含んでいるインフラストラクチャである。
【００６７】
ここで図１を参照すると、クラウド・コンピューティング・ノード１０の例の概略図が示されている。クラウド・コンピューティング・ノード１０は、適切なクラウド・コンピューティング・ノードの一例に過ぎず、本明細書に記載された本発明の実施形態の使用または機能の範囲に関して、いかなる限定を示唆することも意図されていない。いずれにせよ、クラウド・コンピューティング・ノード１０は、前述した機能のいずれかを実装すること、または実行すること、あるいはその両方を行うことができる。
【００６８】
クラウド・コンピューティング・ノード１０内には、他の多数の汎用または専用のコンピューティング・システム環境または構成で運用できるサーバ１２が存在する。サーバ１２での使用に適したものにすることができる既知のコンピューティング・システム、環境、または構成、あるいはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサベース・システム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークＰＣ、マイクロコンピュータ・システム、メインフレーム・コンピュータ・システム、およびこれらのシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などを含むが、これらに限定されない。
【００６９】
サーバ１２は、コンピュータ・システムによって実行されているプログラム・モジュールなどの、コンピュータ・システムによって実行可能な命令との一般的な関連で説明することができる。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。サーバ１２は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散クラウド・コンピューティング環境で実行されてよい。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されてよい。
【００７０】
図１に示すように、クラウド・コンピューティング・ノード１０内のサーバ１２は、汎用コンピューティング・デバイスの形態で示されている。サーバ１２のコンポーネントは、１つまたは複数のプロセッサまたはプロセッシング・ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含むさまざまなシステム・コンポーネントをプロセッサ１６に結合するバス１８を含むことができるが、これらに限定されない。
【００７１】
バス１８は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィックス・ポート、および任意のさまざまなバス・アーキテクチャを使用するプロセッサまたはローカル・バスを含む、１つまたは複数の任意の種類のバス構造を表す。例として、そのようなアーキテクチャは、ＩＳＡ（Industry Standard Architecture）バス、MCA（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカル・バス、およびＰＣＩ（Peripheral Component Interconnect）バスを含むが、これらに限定されない。
【００７２】
サーバ１２は、通常、さまざまなコンピュータ・システム可読媒体を含む。そのような媒体は、サーバ１２によってアクセスできる任意の使用可能な媒体にすることができ、揮発性および不揮発性媒体、取り外し可能および取り外し不可の媒体の両方を含む。
【００７３】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）３０またはキャッシュ・メモリ３２あるいはその両方などの、揮発性メモリの形態でのコンピュータ・システム可読媒体を含むことができる。サーバ１２は、その他の取り外し可能／取り外し不可、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単に例として、取り外し不可、不揮発性の磁気媒体（図示されておらず、通常は「ハード・ドライブ」と呼ばれる）に対する読み取りと書き込みを行うために、ストレージ・システム３４を提供することができる。図示されていないが、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（Ｒ）・ディスク」）に対する読み取りと書き込みを行うための磁気ディスク・ドライブ、およびＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光媒体などの取り外し可能、不揮発性の光ディスクに対する読み取りと書き込みを行うための光ディスク・ドライブを提供することができる。そのような例では、それぞれを、１つまたは複数のデータ媒体インターフェイスによってバス１８に接続することができる。下で詳細に示され、説明されるように、メモリ２８は、本発明の実施形態の機能を実行するように構成された一連の（例えば、少なくとも１つの）プログラム・モジュールを備える少なくとも１つのプログラム製品を含むことができる。
【００７４】
例えば、一連の（少なくとも１つの）プログラム・モジュール４２を含んでいるプログラム／ユーティリティ４０がメモリ２８に格納されてよいが、これに限定されず、オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データも格納されてよい。オペレーティング・システム、１つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データまたはこれらの組み合わせは、それぞれネットワーク環境の実装を含むことができる。プログラム・モジュール４２は、通常、本明細書に記載された本発明の実施形態の機能または方法あるいはその両方を実行する。
【００７５】
サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４などの１つまたは複数の外部デバイス１４、ユーザがサーバ１２と情報をやりとりできるようにする１つまたは複数のデバイス、またはサーバ１２が１つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス（例えば、ネットワーク・カード、モデムなど）、あるいはその組み合わせと通信することもできる。そのような通信は、入出力（Ｉ／Ｏ：Input/Output）インターフェイス２２を介して行うことができる。さらに、サーバ１２は、ローカル・エリア・ネットワーク（ＬＡＮ：Local Area Network）、一般的な広域ネットワーク（WAN：Wide Area Network）、またはパブリック・ネットワーク（例えば、インターネット）、あるいはその組み合わせなどの１つまたは複数のネットワークと、ネットワーク・アダプタ２０を介して通信することができる。図示されているように、ネットワーク・アダプタ２０は、バス１８を介してサーバ１２の他のコンポーネントと通信する。図示されていないが、その他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方を、サーバ１２と併用できるということが理解されるべきである。その例として、マイクロコード、デバイス・ドライバ、冗長プロセッシング・ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システムなどが挙げられるが、これらに限定されない。
【００７６】
ここで図２を参照すると、クラウド・コンピューティング環境５０の例が示されている。図示されているように、クラウド・コンピューティング環境５０は、クラウドの利用者によって使用されるローカル・ユーザ・デバイス（例えば、ＰＤＡ（Personal Digital Assistant）または携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、または自動車コンピュータ・システム５４Ｎ、あるいはその組み合わせなど）が通信できる１つまたは複数のクラウド・コンピューティング・ノード１０を含んでいる。ユーザ・デバイス５４Ａ、５４Ｂ、５４Ｃ、および５４Ｎは、以下において、ユーザ・デバイス５４と総称されてもよい。ユーザ・デバイス５４は、同じユーザまたはユーザ・グループに属してよい。同じユーザまたはユーザ・グループに属しているユーザ・デバイス５４は、ユーザ・デバイス５４のセット５５と呼ばれる。ノード１０は、互いに通信することができる。ノード１０は、本明細書において前述されたプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはこれらの組み合わせなどの、１つまたは複数のネットワーク内で物理的または仮想的にグループ化されてよい（図示されていない）。これによって、クラウド・コンピューティング環境５０は、クラウドの利用者がローカル・コンピューティング・デバイス上でリソースを維持する必要のないインフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組み合わせをサービスとして提供できる。図１に示されたコンピューティング・デバイス５４Ａ〜Ｎの種類は、例示のみが意図されており、コンピューティング・ノード１０およびクラウド・コンピューティング環境５０は、任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続（例えば、Ｗｅｂブラウザを使用した接続）あるいはその両方を経由して任意の種類のコンピュータ制御デバイスと通信することができると理解される。
【００７７】
ここで図３を参照すると、クラウド・コンピューティング環境５０（図２）によって提供される機能的抽象レイヤのセットが示されている。図３に示されたコンポーネント、レイヤ、および機能は、例示のみが意図されており、本発明の実施形態がこれらに限定されないということが、あらかじめ理解されるべきである。図示されているように、次のレイヤおよび対応する機能が提供される。
【００７８】
ハードウェアおよびソフトウェア・レイヤ６０は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム６１、ＲＩＳＣ（Reduced Instruction Set Computer）アーキテクチャベースのサーバ６２、サーバ６３、ブレード・サーバ６４、ストレージ・デバイス６５、ならびにネットワークおよびネットワーク・コンポーネント６６が挙げられる。一部の実施形態では、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア６７およびデータベース・ソフトウェア６８を含む。
【００７９】
仮想化レイヤ７０は、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーションおよびオペレーティング・システム７４、ならびに仮想クライアント７５などの仮想的実体を提供できる抽象レイヤを備える。
【００８０】
一例を挙げると、管理レイヤ８０は、以下で説明される機能を提供できる。リソース・プロビジョニング８１は、クラウド・コンピューティング環境内でタスクを実行するために利用される計算リソースおよびその他のリソースの動的調達を行う。計測および価格設定８２は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびそれらのリソースの利用に対する請求書の作成と送付を行う。一例を挙げると、それらのリソースは、アプリケーション・ソフトウェア・ライセンスを含んでよい。セキュリティは、クラウドの利用者およびタスクのＩＤ検証を行うとともに、データおよびその他のリソースの保護を行う。ユーザ・ポータル８３は、クラウド・コンピューティング環境へのアクセスを利用者およびシステム管理者に提供する。サービス・レベル管理８４は、必要なサービス・レベルを満たすように、クラウドの計算リソースの割り当てと管理を行う。サービス水準合意（ＳＬＡ：Service Level Agreement）計画および実行８５は、今後の要求が予想されるクラウドの計算リソースの事前準備および調達を、ＳＬＡに従って行う。
【００８１】
ワークロード・レイヤ９０は、クラウド・コンピューティング環境で利用できる機能の例を示している。このレイヤから提供されてよいワークロードおよび機能の例としては、マッピングおよびナビゲーション９１、ソフトウェア開発およびライフサイクル管理９２、仮想クラスルーム教育の配信９３、データ分析処理９４、トランザクション処理９５、および匿名ストレージ・サービス９６の提供が挙げられる。
【００８２】
図４は、本発明の１つまたは複数の実施形態に従ってシステムの基本設定および対応する方法のステップを示している。左側では、サーバ１２のストレージ・システム３４に対する匿名読み取り／書き込みアクセスを実行するように構成されたユーザ・デバイス５４のセット５５が示されている。ユーザ・デバイス５４は、図２のユーザ・デバイス５４Ａ、５４Ｂ、５４Ｃ、および５４Ｎに対応してよい。ユーザ・デバイス５４のセット５５は、一般ユーザ５６またはユーザ・グループ５７に関連付けられる。言い換えると、ユーザ・デバイス５４は、１人のユーザ５６によって操作されるか、またはユーザ・グループ５７の複数のユーザによって操作される。ユーザ・グループ５７は、例えば、ユーザ・デバイス５４およびユーザ・デバイス５４上で実行されているいくつかのアプリケーションを共有している家族または同僚のグループであってよい。ユーザ・デバイス５４は、サーバ１２のストレージ・システム３４に対する匿名読み取り／書き込みアクセスを実行するように構成される。さらに、ユーザ・デバイス５４は、ユーザ・デバイス５４がストレージ・システム３４に書き込む／格納するデータ、およびストレージ・システム３４から読み取る／取り出すデータを同期させるように構成される。それに応じて、ユーザ・デバイス５４のセット５５のユーザ５６が、サーバ１２のストレージ・システム３４からデータを読み取る／取り出すときに、ユーザ５６には、データの最新バージョンが提供される。サーバ１２は、特に、クラウド内のストレージ・サービスおよびその他のサービスを提供するクラウド・サーバであってよい。一例として、ユーザ５６は、ユーザ・デバイスのセット５５のすべてのユーザ・デバイス５４上でカレンダー・アプリケーションを実行してよい。そのようなカレンダー・アプリケーションは、すべてのユーザ・デバイス５４が、ユーザ・デバイス５４のうちの１つに対して作成された最新のカレンダー・エントリにアクセスできるように、ユーザ・デバイス５４間で、定期的に更新する／同期させる必要がある。
【００８３】
ユーザ・デバイス５４は、共有暗号化キー、共有疑似ランダム関数ＰＲＦ、および疑似ランダム関数の共有シードを共有するように構成される。暗号化キー、疑似ランダム関数ＰＲＦ、およびシードは、ユーザ・デバイス５４の安全なメモリに格納されてよい。さらに、図４の実施形態によれば、すべてのデバイス５４は、タグ番号を計算するためのカウンタ５８を備えている。
【００８４】
サーバ１２のストレージ・システム３４は、図４のテーブル４１０に示されているように、複数の暗号文Ｃｉをサーバ・インデックスｉおよび対応するタグｔａｇｉと一緒に格納するように構成されている。
【００８５】
図５は、図４のセット５５のユーザ・デバイス５４の書き込みアクセスの方法のステップのフローチャートを示している。
【００８６】
図６は、図４のセット５５のユーザ・デバイス５４の読み取りアクセスの方法のステップのフローチャートを示している。
【００８７】
以下では、図４、５、および６を参照して、書き込みアクセスおよび読み取りアクセスの方法のステップの実施形態例について説明する。
【００８８】
ステップ５１０で、ユーザ・デバイス５４のうちの１つが、匿名暗号化方式によって暗号化済みファイルを生成する。図４を参照すると、ユーザ・デバイス５４は、暗号化キーを使用して書き込まれるデータを暗号化することによって、暗号文ＣＮ＋１を暗号化されたファイルとして計算する。暗号化キーは、対称暗号化方式の秘密キーまたは非対称暗号化方式の公開キーであってよい。
【００８９】
ステップ５２０で、ユーザ・デバイス５４が、シードおよびカウンタ値ｃｔｒの疑似ランダム関数を計算することによって、疑似ランダム・タグｔａｇＮ＋１を計算する。カウンタ値ｃｔｒは、ユーザ・デバイス５４の各カウンタ５８によって提供される。カウンタ値ｃｔｒはタグ番号を表し、タグ番号ｃｔｒは、ユーザ・デバイス５４のセット５５のタグの計算のための一意の番号である。言い換えると、タグ番号ｃｔｒが、各セット５５のタグの計算に一度だけ使用されるということが保証される。これによって、ユーザ・デバイスは、その後、そのユーザ・デバイス自身のタグ（すなわち、各セット５５のユーザ・デバイス５４のうちの１つによって計算されたタグ）を用いて暗号化済みファイルを識別／認識できるようになる。
【００９０】
ステップ５３０で、各ユーザ・デバイス５４が、タグｔａｇＮ＋１をユーザ・セットのユーザ・セット・インデックスとして使用して、暗号化済みファイルにインデックスを付ける。言い換えると、タグｔａｇＮ＋１は、このタグがセット５５のユーザ・デバイス５４のうちの１つによって暗号化された暗号化済みファイルに属しているということを、セットのユーザ・デバイスに示すタグを表している。
【００９１】
ステップ５４０で、ユーザ・デバイス５４が、暗号化済みファイルおよび関連するタグを中央サーバ１２に送信する／書き込む。図４を参照すると、ユーザ・デバイス５４が、暗号文ＣＮ＋１および対応するタグｔａｇＮ＋１を、ストレージ・システム３４のテーブル４１０に書き込むか、または送信する。
【００９２】
ここで図６を参照すると、ユーザ・デバイス５４のうちの１つの読み取りアクセスは、ステップ６１０で、複数のタグに対応するタグ・データをサーバ１２からダウンロードすることを含んでいる。
【００９３】
タグ・データは、各セット５５のユーザ・デバイス５４のすべてが、それ自身のタグを認識できるようにするデータとして通常は定義されてよい。ユーザ・デバイス自身のタグは、ユーザ・デバイスの各セット５５のユーザ・デバイス５４のうちの１つによって計算されたとタグとして理解される。言い換えると、タグは、各セット５５のユーザ・デバイス５４のうちの１つによって生成された暗号化済みファイルを識別するために、各セット５５のユーザ・デバイス５４の識別子として機能する。
【００９４】
図４を参照して説明されるような実施形態によれば、タグ・データはタグ自体によって具現化され、したがって、タグ・データをダウンロードするステップは、複数のタグ（ｔａｇ１、…、ｔａｇＮ）をダウンロードする／読み取るステップを含む。１つまたは複数の実施形態によれば、タグ・データをダウンロードするステップは、１つまたは複数のブルーム・フィルタ（下でさらに説明される）をダウンロードするステップを含んでよい。
【００９５】
ステップ６２０で、ユーザ・デバイス自身のタグ（すなわち、ユーザ・デバイス５４の各セット５５のタグ）が、複数のダウンロードされたタグ（ｔａｇ１、…、ｔａｇＮ）のうちから決定される。さらに詳細には、ダウンロードされたタグ（ｔａｇ１、…、ｔａｇＮ）は、ユーザ・デバイス自身のセットのタグだけでなく、ユーザ・デバイスのその他セットのタグも含む。
【００９６】
ステップ６２０は、次のサブステップを含む。
【００９７】
ステップ６２２で、各ユーザ・デバイス５４が、シードおよび事前に定義されたタグ番号のセットの疑似ランダム関数ＰＲＦを計算することによって、比較タグｃｔａｇｉを計算する。図４の例では、タグ番号はカウンタ値ｃｔｒである。通常、事前に定義されたタグ番号のセットは、ユーザ・デバイスの１つまたは複数のセット５５のユーザ・デバイス５４によって以前に使用されたタグ番号を含む。図４の例では、タグ番号は、ユーザ・デバイス５４のカウンタ５８のうちの１つによって以前に発行されたカウンタ値ｃｔｒである。
【００９８】
ステップ６２４で、各ユーザ・デバイス５４が、ダウンロードされたタグ・データを計算された比較タグと比較して、一致するタグを識別する。再び図４を参照すると、計算された比較タグｃｔａｇｉが、ダウンロードされたタグ（ｔａｇ１、…、ｔａｇＮ）と比較されている。
【００９９】
その後、ステップ６２６で、各ユーザ・デバイス５４によって、それ自身のタグが識別される。その後、ステップ６３０で、タグｔａｇｉを用いてユーザ・デバイス自身のファイルとして識別された暗号化済みファイル／暗号文Ｃｉが、サーバ１２のストレージ・システム３４から読み取られ／取り出される。この取り出しは、特に、プライベート情報検索（ＰＩＲ）プロトコルを実行することによって、または紛失通信プロトコルを実行することによって実行されてよい。そのようなプロトコルは、当技術分野においてよく知られている。プライベート情報検索プロトコルは、例えば、Chor, B. et al:Private Information Retrieval, Journal of the ACM (JACM), Volume 45 Issue 6,Nov. 1998, Pages 965-981に記載されている。
【０１００】
最後にステップ６４０で、ユーザ・デバイス５４によって、匿名暗号化方式の秘密キーを用いて、暗号化済みファイルＣｉが暗号解読される。
【０１０１】
図７は、図４のシステムに従って読み取りアクセスの方法のステップのフローチャートをさらに詳細に示している。したがって、ユーザ・デバイス５４はカウンタ５８を備えている。
【０１０２】
ステップ７１０で、複数のタグ（ｔａｇ１、…、ｔａｇＮ）がサーバ１２からダウンロードされる。
【０１０３】
ステップ７２０で、タグ（ｔａｇ１、…、ｔａｇＮ）をダウンロードした各ユーザ・デバイス５４が、シードおよびカウンタ値ｃｔｒ＿ｉの疑似ランダム関数として比較タグｃｔａｇ＿ｉを計算する。カウンタ値ｃｔｒ＿ｉは、各デバイス５４のカウンタ５８によって使用された最後のカウンタ値である。
【０１０４】
ｃｔａｇ＿ｉ／ｃｔａｇｉ、ｃｔｒ＿ｉ／ｃｔｒｉ、およびＣ＿ｉ／Ｃｉという表現が交換可能なように使用されていることに注意するべきである。
【０１０５】
ステップ７３０で、ユーザ・デバイス５４が、ダウンロードされたタグ（ｔａｇ１、…、ｔａｇＮ）をｃｔａｇ＿ｉと比較する。ステップ７４０で、ユーザ・デバイス５４が、一致が存在するかどうか（すなわち、タグ（ｔａｇ１、…、ｔａｇＮ）のうちの１つがｃｔａｇ＿ｉに等しいかどうか）を決定する。
【０１０６】
一致が存在しない場合、この方法はステップ７１０に戻り、さらにタグをダウンロードする。これは、例えば、各ユーザ・デバイス５４が長期間使用されなかったため、各ユーザ・デバイスのタグが非常に古くなり、１回目のダウンロードのステップではダウンロードされなかった場合であることがある。
【０１０７】
一致が存在する場合、ステップ７５０で、ユーザ・デバイス５４がカウンタ値を１だけ増やす（すなわち、カウンタ値をｃｔｒ＿ｉ＋１に設定するか、または一般的に言えば、ｃｔｒ＿ｉｎｅｗ＝ｃｔｒ＿ｉｏｌｄ＋１のように設定する）。次に、ステップ７５５で、ユーザ・デバイス５４が、新しい比較タグｃｔａｇ＿ｉを、シードおよび新しい増やされたカウンタ値ｃｔｒ＿ｉの疑似ランダム関数として計算する。この背後にある論理的根拠は、セット５５のさまざまなユーザ・デバイス５４のカウンタ５８を同期させることである。一例として、現在の読み取りアクセスが図２の携帯電話５４Ａによって実行される場合、携帯電話５４Ａによって実行された最後の更新／書き込みアクセスの後に、デスクトップ・コンピュータ５４Ｂが何らかの更新されたデータ／ファイルをストレージ・システム３４に書き込んだ可能性がある。それに応じて、デスクトップ・コンピュータ５４Ｂのカウンタは、携帯電話５４Ａのカウンタよりも大きい値を持つ。
【０１０８】
ステップ７６０で、ユーザ・デバイス５４が、ダウンロードされたタグ（ｔａｇ１、…、ｔａｇＮ）をｃｔａｇ＿ｉと比較する。ステップ７７０で、ユーザ・デバイス５４が、一致が存在するかどうか（すなわち、タグ（ｔａｇ１、…、ｔａｇＮ）のうちの１つがｃｔａｇ＿ｉに等しいかどうか）を決定する。
【０１０９】
一致が存在する場合、この方法は再びステップ７５０に戻ってカウンタ値を増やし、新しいステップ７５５で、別の新しい比較タグｃｔａｇ＿ｉを、シードおよび増やされたカウンタ値ｃｔｒ＿ｉの疑似ランダム関数として計算する。このループが、一致が存在しなくなるまで繰り返される。
【０１１０】
一致が存在しない場合、ユーザ・デバイス５４は、前のカウンタ値ｃｔｒ＿ｉが、各セット５５のユーザ・デバイス５４のうちの１つによって使用された最新のカウンタ値だったと結論を下す。次にステップ７８０で、ユーザ・デバイス５４は、比較タグｃｔａｇ＿ｉ−１と対応する一致するダウンロードされたタグの間における最後の一致の比較によってこのユーザ・デバイス自身のファイルとして識別された暗号化済みファイルＣ＿ｉ−１を読み取る／取り出す。したがって、ユーザ・デバイス５４は、一致をもたらした最大のカウンタ値を含むタグに関連付けられた暗号化済みファイルを読み取る。
【０１１１】
最後にステップ７９０で、ユーザ・デバイス５４によって、匿名暗号化方式の秘密キーを用いて暗号化済みファイルＣ＿ｉ−１が暗号解読される。
【０１１２】
図８は、ブルーム・フィルタ８００の実施形態例を示している。ブルーム・フィルタ８００は、ブルーム・フィルタ８００の配列８２０の１つまたは複数のビット位置８１０へのタグのマッピングを実行する。ブルーム・フィルタ８００は、簡単かつ効率的な方法で、タグｔａｇｉが、ブルーム・フィルタにマッピングされたタグ（ｔａｇ１、…、ｔａｇＮ）のメンバーであるかどうかをテストできるようにする、確率的データ構造である。タグをブルーム・フィルタ８００に追加するために、ｋ個の異なるハッシュ関数Ｈ１、…、Ｈｋがタグに対して計算され、各ハッシュ関数が、均一なランダム分布で、タグを配列８２０のｍ個の配列位置８１０のうちの１つにマッピングする。数学的用語では、これは次のように記述されてよい。
【０１１３】
Ｈ１，．．．，ｋ：｛０，１｝＊→｛１，．．．，ｍ｝
【０１１４】
タグがブルーム・フィルタＢに含まれているかどうかをテストするには、そのタグを、ｉ＝１，．．．，ｋのすべてについて次の式が成り立つかどうかチェックする必要がある。
【０１１５】
ｂＨｉ（ｔａｇ）＝１
【０１１６】
ブルーム・フィルタ８００は、誤検出することがあるが、検出漏れを引き起こすことはない。誤検出率がｐの場合のおおよそのフィルタ長ｍは、ｍ≒−２ｎ  ｌｎ（ｐ）によって推定されてよい。
【０１１７】
ここで、ｎは、ブルーム・フィルタに格納されなければならないタグの数である。
【０１１８】
図９は、本発明の１つまたは複数の実施形態に従って別のシステムの基本設定および対応する方法のステップを示している。全体的な設定は、図４を参照して説明された設定に対応している。したがって、左側には、サーバ１２のストレージ・システム３４に対する匿名読み取り／書き込みアクセスを実行するように構成されたユーザ・デバイス５４のセット５５がある。ユーザ・デバイス５４は、秘密キー、疑似ランダム関数ＰＲＦ、および疑似ランダム関数のシードを共有するように構成される。ただし、図４の設定とは対照的に、ユーザ・デバイス５４はカウンタを備えておらず、サーバ１２から受信されたサーバ・インデックスをタグ番号として使用する。加えて、図９の設定によれば、ストレージ・システム３４は、タグ自体の代わりに、タグのブルーム・フィルタを格納するように構成される。
【０１１９】
サーバ１２のストレージ・システム３４は、暗号文Ｃｉをサーバ・インデックスｉと一緒にテーブル９１０に格納するように構成される。さらに、ストレージ・システム３４は、ブルーム・フィルタＢ１、Ｂ２、および場合によってはさらに多くのブルーム・フィルタをテーブル９２０に格納するように構成され、これらのブルーム・フィルタは、ブルーム・フィルタの配列の配列位置への、ユーザ・デバイス５４から受信されたタグのマッピングを含む。この例では、ブルーム・フィルタＢ１はタグｔａｇ１、…、ｔａｇ１００００のマッピングを含み、ブルーム・フィルタＢ２はタグｔａｇ１００００、…、ｔａｇ２００００のマッピングを含む。
【０１２０】
図１０は、図９のセット５５のユーザ・デバイス５４の読み取りアクセスの方法のステップのフローチャートをさらに詳細に示している。
【０１２１】
以下では、図９および１０を参照して、書き込みアクセスおよび読み取りアクセスの方法のステップの実施形態例について説明する。
【０１２２】
書き込みアクセスの場合、ユーザ・デバイス５４のうちの１つは、暗号化キーを使用して書き込まれるデータを暗号化することによって、暗号文ＣＮ＋１を暗号化されたファイルとして計算する。さらに、ユーザ・デバイス５４が、シードおよびサーバ・インデックスＮ＋１の疑似ランダム関数を計算することによって、疑似ランダム・タグｔａｇＮ＋１を計算する。サーバ・インデックスＮ＋１はサーバ１２から受信されてよく、ストレージ・システム３４の次のストレージ空き容量のスロットと見なされてよい。したがって、この例では、サーバ・インデックスＮ＋１はタグ番号を表し、タグ番号は、この場合も、ユーザ・デバイス５４のセット５５のタグの計算のための一意の番号である。この実施形態によれば、ユーザ・デバイス５４が、暗号文ＣＮ＋１をサーバ１２に送信し、サーバ１２が暗号文ＣＮ＋１をストレージ・システム３４のテーブル９１０に書き込む。さらに、サーバ１２は、対応するタグｔａｇＮ＋１をテーブル９２０の現在のブルーム・フィルタに追加する。さらに詳細には、サーバ１２は、タグｔａｇＮ＋１を受信し、タグｔａｇＮ＋１の対応するハッシュ関数を計算し、現在のブルーム・フィルタＢｉの対応する配列を更新する。
【０１２３】
読み取りアクセスの場合、ステップ１０１０で、各デバイス５４が、サーバ１２によって発行された最新のサーバ・インデックスＮに加えて、１つまたは複数のブルーム・フィルタＢ１、Ｂ２、…、ＢＮをダウンロードする。
【０１２４】
ステップ１０２０で、ブルーム・フィルタをダウンロードした各ユーザ・デバイス５４が、シードおよびサーバ１２から受信された最新のサーバ・インデックスＮの疑似ランダム関数として比較タグｃｔａｇ＿ｉを計算する。
【０１２５】
ステップ１０３０で、ユーザ・デバイス５４が、比較タグｃｔａｇ＿ｉをダウンロードされたブルーム・フィルタＢ１およびＢ２と比較する。ステップ１０４０で、ユーザ・デバイス５４が、一致が存在するかどうか（すなわち、比較タグｃｔａｇ＿ｉがブルーム・フィルタＢ１およびＢ２のうちの１つのメンバーであるかどうか）を決定する。
【０１２６】
一致が存在しない場合、ステップ１０５０で、ユーザ・デバイス５４がサーバ・インデックスを１だけ減らす（すなわち、サーバ・インデックスをＮ−１に設定するか、または一般的に言えば、ｉｎｅｗ＝ｉｏｌｄ−１のように設定する）。次に、ユーザ・デバイス５４はステップ１０２０に戻り、別のステップ１０３０で、新しい比較タグｃｔａｇ＿Ｎ−１をシードおよび減らされたサーバ・インデックスＮ−１の疑似ランダム関数として計算する。その後、新しいステップ１０４０で、ユーザ・デバイス５４が、一致が存在するかどうかを決定する。やはり一致が存在しない場合、一致が存在するまで、再びサーバ・インデックスを減らすことによって、ループが繰り返される。
【０１２７】
一致が存在する場合、ステップ１０６０で、ユーザ・デバイス５４が暗号化済みファイル／暗号文Ｃ＿ｉを読み取る／取り出す。
【０１２８】
最後にステップ１０７０で、ユーザ・デバイス５４によって、匿名暗号化方式の秘密キーを用いて暗号化済みファイルＣ＿ｉが暗号解読される。
【０１２９】
代替の実施形態によれば、タグ番号は、ユーザ・デバイス５４によって生成されるノンスであってよい。そのような実施形態によれば、書き込みアクセスは、ノンスを暗号化済みファイルおよび関連するタグと一緒にサーバ１２に書き込むステップを含む。さらに、読み取りアクセスは、タグ・データまたはタグおよび対応するノンスをサーバ１２からダウンロードするステップと、シードおよびダウンロードされたノンスの疑似ランダム関数を計算することによって比較タグを計算するステップとを含む。
【０１３０】
図１１は、ユーザ・デバイス５４のより詳細な実施形態を含んでいるシステム１１００の概略ブロック図を示している。この例によれば、ユーザ・デバイス５４はデスクトップ・コンピュータとして示されている。実施形態例では、ハードウェア・アーキテクチャに関して図１１に示されているように、ユーザ・デバイス５４は、プロセッサ１１０５、メモリ・コントローラ１１１５に結合されたメモリ１１１０、ならびにローカル入出力コントローラ１１３５を介して通信可能に結合された１つまたは複数の入力または出力あるいはその両方の（Ｉ／Ｏ：input and/or output）デバイス１１４０、１１４５、１１５０、１１５５（または周辺機器）を含む。入出力コントローラ１１３５は、１つまたは複数のバスあるいは当技術分野において知られたその他の有線接続または無線接続であることができるが、これらに限定されない。入出力コントローラ１１３５は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ（キャッシュ）、ドライバ、リピータ、およびレシーバなどのその他の要素を含むことができる。さらに、ローカル・インターフェイスは、前述のコンポーネント間の適切な通信を可能にするために、アドレス、制御部、またはデータ接続、あるいはその組み合わせを含んでよい。
【０１３１】
プロセッサ１１０５は、ソフトウェア、詳細には、メモリ１１１０に格納されたソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ１１０５は、カスタムメイドであるか、あるいは市販されたプロセッサ、中央処理装置（ＣＰＵ：central processing unit）、コンピュータ１１０１に関連付けられた複数のプロセッサ間の補助プロセッサ、（マイクロチップまたはチップ・セットの形態での）半導体ベースのマイクロプロセッサ、または一般的に、ソフトウェア命令を実行するため任意のデバイスであることができる。
【０１３２】
メモリ１１１０は、揮発性メモリ素子（例えば、ランダム・アクセス・メモリ）および不揮発性メモリ素子のうちの任意の１つまたは組み合わせを含むことができる。さらに、メモリ１１１０は電子、磁気、光、またはその他の種類のストレージ媒体、あるいはその組み合わせを組み込んでよい。メモリ１１１０が、さまざまなコンポーネントが互いに遠く離れた位置にあるが、プロセッサ１１０５によってアクセスされ得る、分散アーキテクチャを含むことができるということに注意する。
【０１３３】
メモリ１１１０内のソフトウェアは、１つまたは複数の別々のプログラム、特に、中央クラウド・サーバに対する匿名読み取り／書き込みアクセスを実行するためのプログラムを含んでよい。図１１の例では、メモリ１１１０内のソフトウェアは、実施形態例に従う本明細書に記載された方法、および適切なオペレーティング・システム（ＯＳ：operating system）１１１１を含む。ＯＳ１１１１は、基本的に、本明細書に記載された方法などの他のコンピュータ・プログラムの実行を制御し、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。
【０１３４】
場合によっては、従来のキーボード１１５０およびマウス１１５５が（特に、必要に応じてＢＳ用の）入出力コントローラ１１３５に結合され得る。その他のＩ／Ｏデバイス１１４０〜１１５５は、（特にネットワーク要素の場合に）センサ（すなわち、温度または圧力（監視される物理データ）のような物理的条件における変化に対する測定可能な応答を生成するハードウェア・デバイス）を含んでよい。通常は、センサによって生成されたアナログ信号が、アナログ／デジタル・コンバータによってデジタル化され、さらに処理するためにコントローラ１１３５に送信される。
【０１３５】
加えて、Ｉ／Ｏデバイス１１４０〜１１５５は、入力および出力の両方を伝達するデバイスをさらに含んでよい。システム１１００は、ディスプレイ１１４０に結合されたディスプレイ・コントローラ１１２５をさらに含むことができる。実施形態例では、システム１１００は、ネットワーク１１６５に結合するためのネットワーク・インターフェイスまたはトランシーバ１１６０をさらに含むことができる。
【０１３６】
ネットワーク１１６５は、ユーザ・デバイス５４と外部システム（特に、図１を参照して説明されたように、サーバ１２）の間でデータを送受信する。ネットワーク１１６５は、例えば、ＷｉＦｉ、ＷｉＭａｘなどの無線プロトコルおよび無線技術を使用して、無線方式で実装されることがある。ネットワーク１１６５は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、無線広域ネットワーク（ＷＡＮ：wide area network）、パーソナル・エリア・ネットワーク（ＰＡＮ：personal area network）、仮想プライベート・ネットワーク（ＶＰＮ：virtual private network）、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含む。
【０１３７】
ネットワーク１１６５は、ユニット１１０１と、任意の外部サーバ、クライアントなどとの間でブロードバンド接続（特に、図１を参照して説明されたようなサーバ１２などのクラウド・サーバとの接続）を介して通信するためのＩＰベースのネットワークであることもできる。実施形態例では、ネットワーク１１６５は、サービス・プロバイダによって管理された管理ＩＰネットワークであることができる。加えて、ネットワーク１１６５は、ＬＡＮ、ＷＡＮ、インターネット・ネットワークなどのパケット交換ネットワークであることができる。
【０１３８】
ユニット１１０１がＰＣ、ワークステーション、インテリジェント・デバイスなどである場合、メモリ１１１０内のソフトウェアは、基本入出力システム（ＢＩＯＳ：basic input output system）をさらに含んでよい。ＢＩＯＳは、コンピュータ１１０１を起動させたときにＢＩＯＳを実行できるように、ＲＯＭに格納される。
【０１３９】
ユーザ・デバイス５４が動作中であるときに、プロセッサ１１０５は、メモリ１１１０内に格納されたソフトウェアを実行することと、データをメモリ１１１０との間で伝達することと、ソフトウェアに従ってコンピュータ１１０１の動作を全体的に制御することとを実行するように構成される。本明細書に記載された方法およびＯＳ１１１１は、全体的または部分的に、プロセッサ１１０５によって読み取られ、通常はプロセッサ１１０５内のバッファに格納されてから、実行される。
【０１４０】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、サーバ１２またはユーザ・デバイス５４あるいはその両方のプロセッサ／プロセッシング・ユニットに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいる１つまたは複数のコンピュータ可読記憶媒体を含んでよい。
【０１４１】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されているコンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一時的信号であると解釈されるべきではない。
【０１４２】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【０１４３】
本発明の処理を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）または広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【０１４４】
本発明の態様は、本明細書において、本発明の実施形態に記載された方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【０１４５】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【０１４６】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックに指定される機能／動作を実施するように、コンピュータ実施プロセスを作出するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、一連の動作可能なステップを、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行させるものであってもよい。
【０１４７】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に記載されているシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および処理を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、指定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令を組み合わせて実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【０１４８】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択された。
【図１】
2019510261.tif 000003
【図２】
2019510261.tif 000004
【図３】
2019510261.tif 000005
【図４】
2019510261.tif 000006
【図５】
2019510261.tif 000007
【図６】
2019510261.tif 000008
【図７】
2019510261.tif 000009
【図８】
2019510261.tif 000010
【図９】
2019510261.tif 000011
【図１０】
2019510261.tif 000012
【図１１】
2019510261.tif 000013
【手続補正書】
【提出日】平成30年12月25日(2018.12.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サーバに対するユーザ・デバイスのセットの匿名読み取り／書き込みアクセスを実行するためのコンピュータ実装方法であって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、
前記セットの前記ユーザ・デバイスのうちの１つの書き込みアクセスが、
前記セットの前記ユーザ・デバイスのうちの前記１つのプロセッサ・システムを使用して、匿名暗号化方式によって暗号化済みファイルを生成するステップと、
前記プロセッサ・システムを使用して疑似ランダム・タグを計算するステップと、
前記タグを前記ユーザ・デバイスのセットのユーザ・セット・インデックスとして使用して、前記暗号化済みファイルにインデックスを付けるステップと、
前記暗号化済みファイルおよび前記関連するタグを前記サーバのストレージ・システムに送信するステップと
を含んでおり、
前記セットの前記ユーザ・デバイスのうちの前記１つの読み取りアクセスが、
複数のタグに対応するタグ・データを前記サーバからダウンロードするステップであって、前記タグ・データが、各セットの前記ユーザ・デバイスがそれ自身のタグを認識できるようにし、前記ユーザ・デバイス自身のタグが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算されたタグを含んでいる、前記ダウンロードするステップと、
前記複数のタグのうちから前記ユーザ・デバイス自身のタグを決定するステップと、
前記ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取るステップと、
前記暗号化済みファイルを暗号解読するステップと
を含む、コンピュータ実装方法。
【請求項２】
疑似ランダム・タグを計算するステップが、シードおよびタグ番号の疑似ランダム関数を計算するステップを含み、前記タグ番号が前記ユーザ・デバイスのセットの前記タグの前記計算のための一意の番号である、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記ユーザ・デバイスに、前記匿名暗号化方式の１つまたは複数の暗号化キーおよび１つまたは複数の対応する暗号解読キーを提供するステップと、
前記ユーザ・デバイスに、共有疑似ランダム関数および共有シードを提供するステップと、
前記１つまたは複数の暗号化キーのうちの少なくとも１つを使用して、格納されるファイルを暗号化するステップと、
前記疑似ランダム関数を用いて前記共有シードおよび前記タグ番号から前記疑似ランダム・タグを計算するステップと
をさらに含む、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記タグ番号が、前記ユーザ・デバイスのカウンタによって計算されるカウンタ値である、請求項２または３に記載のコンピュータ実装方法。
【請求項５】
前記タグ番号が、前記ユーザ・デバイスによって生成されたノンスであり、
書き込みアクセスが、前記ノンスを前記暗号化済みファイルおよび前記関連するタグと一緒に前記サーバに書き込むステップを含み、
読み取りアクセスが、前記タグ・データおよび前記対応するノンスを前記サーバからダウンロードするステップを含む、請求項２または３に記載のコンピュータ実装方法。
【請求項６】
前記タグ番号が、前記サーバによって提供されたサーバ・インデックスである、請求項２または３に記載のコンピュータ実装方法。
【請求項７】
１つまたは複数の暗号化済みファイルを読み取るステップが、プライベート情報検索（ＰＩＲ）プロトコルを実行するステップを含む、請求項１ないし６のいずれか一項に記載のコンピュータ実装方法。
【請求項８】
１つまたは複数の暗号化済みファイルを読み取るステップが、紛失通信プロトコルを実行するステップを含む、請求項１ないし７のいずれか一項に記載のコンピュータ実装方法。
【請求項９】
前記ユーザ・デバイス自身のタグを決定するステップが、
前記シードおよび事前に定義されたタグ番号のセットの疑似ランダム関数を計算することによって比較タグを計算するステップと、
前記ダウンロードされたタグ・データを前記計算された比較タグと比較して、一致するタグを識別するステップと
を含み、
前記事前に定義されたタグ番号のセットが、ユーザ・デバイスの１つまたは複数のセットのユーザ・デバイスによって以前に使用されたタグ番号を含む、請求項２ないし６のいずれか一項に記載のコンピュータ実装方法。
【請求項１０】
前記匿名暗号化方式が対称暗号化方式または非対称暗号化方式である、請求項１ないし９のいずれか一項に記載のコンピュータ実装方法。
【請求項１１】
タグ・データをダウンロードするステップが、複数のタグをダウンロードするステップを含む、請求項１ないし１０のいずれか一項に記載のコンピュータ実装方法。
【請求項１２】
タグ・データをダウンロードするステップが、１つまたは複数のブルーム・フィルタをダウンロードするステップを含み、前記ブルーム・フィルタが、前記ブルーム・フィルタの配列の１つまたは複数の位置への前記タグのマッピングを含む、請求項１ないし１１のいずれか一項に記載のコンピュータ実装方法。
【請求項１３】
前記各ユーザ・デバイスによって、前記ユーザ・デバイスによって計算された最新のタグを前記ダウンロードされたタグ・データと比較するステップと、
一致が存在しない場合にさらにタグをダウンロードするステップと、
一致が存在する場合に、前記カウンタ値を増やし、前記疑似ランダム関数を用いて前記シードおよび前記増やされたカウンタ値から新しいタグを計算するステップと、
前記各ユーザ・デバイスによって、前記新しいタグを前記ダウンロードされたタグ・データと比較するステップと、
前記増やし計算するステップおよびその後の前記比較するステップを、一致が検出されなくなるまで繰り返すステップと、
一致をもたらした最大のカウンタ値を含む前記タグに関連付けられた前記暗号化済みファイルを読み取るステップと
を含む、請求項４に記載のコンピュータ実装方法。
【請求項１４】
複数のタグおよび前記関連するノンスを前記サーバからダウンロードするステップと、
前記シードおよび前記ダウンロードされたノンスの前記疑似ランダム関数を計算することによって比較タグを計算するステップと、
前記比較タグを前記タグ・データと比較して一致を識別するステップと
を含む、請求項５に記載のコンピュータ実装方法。
【請求項１５】
読み取りアクセスが、
前記サーバから発行された最新のサーバ・インデックスを受信するステップと、
比較タグを、前記シードおよびタグ番号の疑似ランダム関数として連続的に減少する順序で計算するステップであって、前記タグ番号が前記最新のサーバ・インデックスから開始して連続的に減らされる、前記計算するステップと、
前記比較タグを前記タグ・データと比較して一致を識別するステップと
を含む、請求項６に記載のコンピュータ実装方法。
【請求項１６】
サーバによって匿名ストレージ・サービスをユーザ・デバイスのセットに提供するためのコンピュータ実装方法であって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、前記方法が、
前記サーバによって、格納されるファイルを受信するステップであって、前記ファイルが匿名暗号化方式に従って暗号化されている、前記受信するステップと、
前記サーバによって、疑似ランダム・タグをユーザ・セット・インデックスとして受信するステップと、
前記暗号化されたファイルを関連するタグ・データと一緒に格納するステップであって、前記タグ・データが、各セットの前記ユーザ・デバイスがそれ自身のタグを認識できるようにし、前記ユーザ・デバイス自身のタグが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算されたタグを含んでいる、前記格納するステップと、
ユーザ・デバイスの読み取り要求に応答して、複数のタグに対応するタグ・データを前記ユーザ・デバイスに提供するステップと
を含む、コンピュータ実装方法。
【請求項１７】
前記ストレージ・サービスがクラウド環境内で提供される、請求項１６に記載のコンピュータ実装方法。
【請求項１８】
前記サーバによって、前記ユーザ・デバイスから受信された前記タグをブルーム・フィルタに追加するステップを含み、前記ブルーム・フィルタが前記ブルーム・フィルタの配列の１つまたは複数の配列位置への前記タグのマッピングを実行する、請求項１６または１７に記載のコンピュータ実装方法。
【請求項１９】
匿名ストレージ・サービスをユーザ・デバイスのセットに提供するためのサーバであって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、前記サーバが、
格納されるファイルを受信することであって、前記ファイルが匿名暗号化方式に従って暗号化されている、前記受信することと、
疑似ランダム・タグをユーザ・セット・インデックスとして受信することと、
前記暗号化されたファイルを関連するタグ・データと一緒に格納することであって、前記タグ・データが、各セットの前記ユーザ・デバイスが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算された前記ユーザ・デバイス自身のタグを認識できるようにする、前記格納することと、
ユーザ・デバイスの読み取り要求に応答して、複数のタグに対応するタグ・データを前記ユーザ・デバイスに提供することと
を実行するように構成されている、サーバ。
【請求項２０】
前記サーバが、クラウド環境内でストレージ・サービスを提供するように構成されている、請求項１９に記載のサーバ。
【請求項２１】
前記サーバが、前記ユーザ・デバイスから受信された前記タグをブルーム・フィルタに追加するように構成されており、前記ブルーム・フィルタが前記ブルーム・フィルタの配列の１つまたは複数の配列位置への前記タグのマッピングを実行するように構成されている、請求項１９または２０に記載のサーバ。
【請求項２２】
サーバに対する匿名読み取り／書き込みアクセスを実行するためのユーザ・デバイスであって、前記ユーザ・デバイスがユーザまたはユーザ・グループに関連付けられており、前記ユーザ・デバイスが、
書き込みアクセスを実行することであって、
前記ユーザ・デバイスのプロセッサ・システムを使用して、匿名暗号化方式によって暗号化済みファイルを生成すること、
前記プロセッサ・システムを使用して疑似ランダム・タグを計算すること、
前記タグを前記ユーザ・デバイスのセットのユーザ・セット・インデックスとして使用して、前記暗号化済みファイルにインデックスを付けること、ならびに
前記暗号化済みファイルおよび前記関連するタグを前記サーバのストレージ・システムに送信すること
を含んでいる、前記書き込みアクセスを実行することと、
読み取りアクセスを実行することであって、
複数のタグに対応するタグ・データを前記サーバからダウンロードすることであって、前記タグ・データが、各セットの前記ユーザ・デバイスが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算された前記ユーザ・デバイス自身のタグを認識できるようにする、前記ダウンロードすること、
前記複数のタグのうちから前記ユーザ・デバイス自身のタグを決定すること、
前記ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取ること、および
前記暗号化済みファイルを暗号解読すること
を含んでいる、前記読み取りアクセスを実行することと
を実行するように構成されている、ユーザ・デバイス。
【請求項２３】
前記ユーザ・デバイスが、
前記疑似ランダム・タグを、前記ユーザ・デバイスのセットの共有シードおよびタグ番号の疑似ランダム関数として計算することであって、前記タグ番号が、前記ユーザ・デバイスのセットの前記タグの前記計算のための一意の番号である、前記計算することと、
前記ユーザ・デバイスのセットの共有暗号化キーを使用して、格納されるファイルを暗号化することと
を実行するように構成されている、請求項２２に記載のユーザ・デバイス。
【請求項２４】
サーバに対するユーザ・デバイスのセットの匿名読み取り／書き込みアクセスのためのコンピュータ・プログラム製品であって、前記ユーザ・デバイスのセットがユーザまたはユーザ・グループに関連付けられており、
前記コンピュータ・プログラム製品が、プログラム命令が具現化されている非一時的コンピュータ可読記憶媒体を備えており、前記プログラム命令が、前記ユーザ・デバイスに方法を実行させるように、前記ユーザ・デバイスによって実行可能であり、前記方法が、
書き込みアクセスを実行するステップであって、
匿名暗号化方式によって暗号化済みファイルを生成するステップ、
疑似ランダム・タグを計算するステップ、
前記タグを前記ユーザ・デバイスのセットのユーザ・セット・インデックスとして使用して、前記暗号化済みファイルにインデックスを付けるステップ、ならびに
前記暗号化済みファイルおよび前記関連するタグを前記サーバのストレージ・システムに送信するステップ
を含んでいる、前記書き込みアクセスを実行するステップと、
読み取りアクセスを実行するステップであって、
複数のタグに対応するタグ・データを前記サーバからダウンロードするステップであって、前記タグ・データが、各セットの前記ユーザ・デバイスがそれ自身のタグを認識できるようにし、前記ユーザ・デバイス自身のタグが前記ユーザ・デバイスの各セットの前記ユーザ・デバイスのうちの１つによって計算されたタグを含んでいる、前記ダウンロードするステップ、
前記複数のタグのうちから前記ユーザ・デバイス自身のタグを決定するステップ、
前記ユーザ・デバイス自身のタグに関連付けられた１つまたは複数の暗号化済みファイルを読み取るステップ、および
前記暗号化済みファイルを暗号解読するステップ
を含んでいる、前記読み取りアクセスを実行するステップと
を含んでいる、コンピュータ・プログラム製品。
【請求項２５】
前記プログラム命令が、前記ユーザ・デバイスに方法を実行させるように、前記ユーザ・デバイスによって実行可能であり、前記方法が、
前記疑似ランダム・タグを、前記ユーザ・デバイスのセットの共有シードおよびタグ番号の疑似ランダム関数として計算するステップであって、前記タグ番号が、前記ユーザ・デバイスのセットの前記タグの前記計算のための一意の番号である、前記計算するステップと、
前記ユーザ・デバイスのセットの共有暗号化キーを使用して、格納されるファイルを暗号化するステップと
を含んでいる、請求項２４に記載のコンピュータ・プログラム製品。
【国際調査報告】
2019510261.tif 000014
2019510261.tif 000015