(57)【要約】  データ構造は、データ構造の一部であるデータ項目に特定のユーザがアクセスできるようにし、ユーザが、データ構造に関連付けられるデータ項目を記憶させることができるようにするデータを含む。データ構造は、データ構造の起源である、ルートノードを含む。データ構造は、データ構造に対するアクセス権を付与された各ユーザのためのアクセスノードをさらに含む。データ構造に対するアクセス権をユーザに付与するアクセスノードは、ルートノードに直接結合される。データ構造に対するアクセス権が無効になっているユーザについては、データ構造は、ユーザにアクセス権を与えたアクセスノードに直接結合された、追加のアクセスノードを含む。データ構造は、各データ項目の記録ノードをさらに含み、これはデータ構造の一部である。各記録ノードは直接的に、または間接的にルートノードに結合される。【選択図】図２Ｅ
2019530332.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムによって、ユーザに関連付けられたクライアントデバイスから、データ構造に含まれるデータ項目にアクセスする要求を受信するステップと、
前記データ記憶システムによって、前記データ構造に含まれる、ルートノードに結合されたアクセスノードを識別するステップであって、前記アクセスノードは、前記データ構造の一部である、アクセスノードを識別するステップと、
前記データ記憶システムによって、前記ユーザに関連付けられた暗号情報を含む、前記識別されたアクセスノードのうちの１つのアクセスノードに基づいて、前記ユーザが前記データ項目に対するアクセス権を持っていると判定するステップと、
前記ユーザが前記データ項目に対するアクセス権を持っているという判定に応答して、前記データ記憶システムによって、前記クライアントデバイスに前記データ項目を送信するステップと
を含む、コンピュータ実装方法。
【請求項２】
前記データ構造が、前記ルートノードに結合された複数のアクセスノードを含み、前記アクセスノードを識別するステップが、
前記複数のアクセスノードから、子ノードのないアクセスノードを識別すること
を含む、請求項１に記載の方法。
【請求項３】
前記複数のアクセスノードから識別された前記アクセスノードが、前記ルートノードのハッシュダイジェストを含む、請求項２に記載の方法。
【請求項４】
前記暗号情報が、前記ユーザに関連付けられた公開鍵である、請求項１に記載の方法。
【請求項５】
前記ユーザが前記データ項目に対するアクセス権を持っていると判定するステップが、
前記クライアントデバイスから、前記ユーザに関連付けられた秘密鍵を用いて生成されたデジタル署名を受信することと、
前記識別されたアクセスノードのうちの前記アクセスノードに含まれる公開鍵を用いた、前記デジタル署名の検証に応答して、前記ユーザが前記データ項目に対するアクセス権を持っていると判定することと
をさらに含む、請求項１に記載の方法。
【請求項６】
前記データ構造が、前記ルートノードに結合された記録ノードを含み、前記記録ノードが前記データ項目を含む、請求項１に記載の方法。
【請求項７】
前記ユーザが前記データ項目に対するアクセス権を持っていると判定するステップが、
前記ユーザに関連付けられた暗号情報を含む、前記識別されたアクセスノードのうちの前記アクセスノードと、前記ユーザに関連付けられた前記暗号情報を含む、前記記録ノードとに応答して、前記ユーザが前記データ項目に対するアクセス権を持っていると判定すること
をさらに含む、請求項６に記載の方法。
【請求項８】
前記記録ノードが、前記ルートノードと、複数の記録ノードとを含む、前記データ構造のノード系統（ｎｏｄｅ  ｌｉｎｅａｇｅ）の一部であり、前記複数の記録ノードがそれぞれ、前記記録ノードに直接結合された、親ノードのハッシュダイジェストを含む、請求項６に記載の方法。
【請求項９】
追加のユーザに関連付けられた追加のクライアントデバイスから、前記データ項目にアクセスする追加の要求を受信するステップと、
前記追加のユーザに関連付けられた暗号情報を含んでいない、前記識別されたアクセスノードに基づいて、前記追加のユーザが前記データ項目に対するアクセス権を持っていないと判定するステップと
をさらに含む、請求項１に記載の方法。
【請求項１０】
データ記憶システムによって、ユーザに関連付けられたクライアントデバイスから、データ構造に関連するデータ項目を記憶する要求を受信するステップと、
前記データ記憶システムによって、前記データ構造に含まれる、ルートノードに結合された第１の記録ノードを識別するステップと、
前記データ記憶システムによって、前記第１の記録ノードに含まれる暗号情報に基づいて、前記ユーザが前記第１の記録ノードに対する所有権を持っているかどうかを判定するステップと、
前記ユーザが前記第１の記録ノードに対する所有権を持っているという判定に応答して、前記第１の記録ノードに結合された第２の記録ノードを作成するステップであって、前記第２の記録ノードは、前記データ項目を含む、作成するステップと
を含むコンピュータ実装方法。
【請求項１１】
前記データ項目が前記第１の記録ノードにリンクされるべきことを示す前記要求に基づいて、前記第１の記録ノードが識別される、請求項１０に記載の方法。
【請求項１２】
前記暗号情報が公開鍵であり、前記ユーザが前記第１の記録ノードに対する所有権を持っているかどうかを判定するステップが、
前記クライアントデバイスから、前記ユーザに関連付けられた秘密鍵を用いて生成されたデジタル署名を受信することと、
前記第１の記録ノードに含まれる前記公開鍵を用いた、前記デジタル署名の検証に応答して、前記ユーザが前記第１の記録ノードに対する所有権を持っていると判定することと
をさらに含む、請求項１０に記載の方法。
【請求項１３】
前記第２の記録ノードを作成するステップが、
前記ユーザが前記第１の記録ノードに対して所有権を持っており、かつ前記ユーザが前記データ構造に対してアクセス権を持っていると判定するステップに応答して、前記第２の記録ノードを作成すること
を含む、請求項１０に記載の方法。
【請求項１４】
前記クライアントデバイスから、前記ユーザに関連付けられた秘密鍵を用いて生成されたデジタル署名を受信することと、
前記ルートノードに結合された子ノードのないアクセスノードを識別することと、
前記識別されたアクセスノードのうちの１つのアクセスノードに含まれる公開鍵を用いた、前記デジタル署名の検証に応答して、前記ユーザが前記データ構造に対するアクセス権を持っていると判定することと
をさらに含む、請求項１３に記載の方法。
【請求項１５】
前記第２の記録ノードが、前記第１の記録ノードのハッシュダイジェストを含む、請求項１０に記載の方法。
【請求項１６】
前記第２の記録ノードが、前記第２の記録ノードに直接リンクする追加のデータ項目を記憶するために、所有権を持つ追加のユーザの公開鍵を含む、請求項１０に記載の方法。
【請求項１７】
データ記憶システムによって、クライアントデバイスから、データ構造に含まれるデータ項目に対するアクセス権をユーザに与える要求を受信するステップと、
前記要求が、前記データ構造の管理者によって開始されたことを検証するステップと、
前記データ記憶システムによって、前記データ構造に含まれるルートノードを識別するステップと、
前記ルートノードに結合されるアクセスノードを作成するステップであって、前記アクセスノードは、前記ユーザに関連付けられた暗号情報を含み、かつ前記データ構造の一部である、作成するステップと
を含むコンピュータ実装方法。
【請求項１８】
前記要求が、前記管理者によって開始されたことを検証するステップが、
前記クライアントデバイスからデジタル署名を受信することと、
前記ルートノードに含まれる公開鍵を識別することと、
前記ルートノードに含まれる前記公開鍵を用いた前記デジタル署名の検証に応答して、前記要求が前記データ構造の管理者によって開始されたと判定することと
を含む、請求項１７に記載の方法。
【請求項１９】
前記ユーザに付与された前記アクセス権を無効にする要求を受信するステップと、
前記ユーザに関連付けられた前記暗号情報を含む前記アクセスノードに結合される、追加のアクセスノードを作成するステップであって、前記追加のアクセスノードが、前記ユーザに関連付けられた前記暗号情報を含む、前記アクセスノードのハッシュダイジェストを含み、かつ前記ユーザに付与された前記アクセス権が無効にされたことを示す、作成するステップと
をさらに含む、請求項１７に記載の方法。
【請求項２０】
データ構造を記憶するステップであって、
ルートノードと、
前記ルートノードに結合された、複数の記録ノードであって、前記複数の記録ノードはそれぞれ、データ項目、および親ノードのハッシュダイジェストを含む、複数の記録ノードと、
前記ルートノードに結合された、複数のアクセスノードであって、前記複数のアクセスノードはそれぞれ、前記データ構造に含まれる少なくとも１つのデータ項目に対するアクセス権を持つユーザに関連付けられた暗号情報を含み、かつ前記データ構造の一部である、複数のアクセスノードと
を含む、データ構造を記憶するステップ
を含む、コンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１６年９月１５日に出願された米国特許出願第１５／２６７１１６号に対する利益を主張し、その全体が参照により本明細書に組み込まれる。
【０００２】
本開示は一般にデータの記憶に関し、特に、データ構造を介したデータの記憶、およびデータに対するアクセスの制御に関する。
【背景技術】
【０００３】
記憶システムによって記憶されたデータは、認証されていないエンティティがデータにアクセスしないように保護する必要がある。データの保護は、記憶されたデータの外部にあるプロセスに依存するところが大きい。例えば、プロセスは、記憶されているデータにアクセスできるように、ユーザが認証情報（ユーザ名およびパスワードなど）を与えることを必要とする場合がある。しかしながら、このようなプロセスはセキュリティ違反になりやすく、エンティティが、許可なくデータにアクセスする方法を見つける場合がある。プロセスはデータの外部にあるため、認証されていないエンティティによってデータがアクセスまたは変更されていないことを証明するのは不可能である。
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書では、データ項目（文書、画像、動画など）を記憶し、記憶したデータ項目に対するアクセスを制御するために、暗号の原理に依存するデータ構造について説明する。管理者が、ユーザを選択するために１つ以上のデータ項目に対するアクセスを制限したいとき、データ記憶システムは、ルートノードを作成することによってデータ構造の構築を開始する。
【０００５】
データ記憶システムは、各データ項目に対し、データ構造内に少なくとも１つの記録ノードを含み、データ項目はデータ構造の一部である。各記録ノードは直接的に、または１つ以上の記録ノードを介して間接的に、ルートノードに結合される。記録ノードは、入力および出力とともに、関連するデータ項目を含む。入力は、記録ノードに直接結合された親ノードのハッシュダイジェストである。一実施形態では、出力は、ノードに対する所有権を持っているユーザの公開鍵である。ユーザが記録ノードに対する所有権を持つとき、これはユーザが、記録ノードに直接リンクされるデータ項目を追加できることを示す。例えば、記録ノードが文書を含むと仮定する。記録ノードの出力は、文書に修正を加えるユーザの公開鍵を含んでもよい。他の実施形態では、記録ノードの出力は、公開鍵とは異なる、または公開鍵に加えて、記録ノードの所有権を示す制約を含む。出力は、記録ノードの所有権を示すために、１つ以上の公開鍵、ビジネスロジック、実行可能コード、またはこれらの任意の組み合わせを含んでもよい。
【０００６】
管理者が、データ構造に対するアクセス権をユーザに付与することを要求した場合、データ記憶システムは、子ノードとしてルートノードに結合するアクセスノードを作成する。作成されたアクセスノードは、入力および出力を含む。入力は、ルートノードのハッシュダイジェストであり、出力は、データ構造に対するアクセス権を付与されるユーザの公開鍵である。アクセスノードは、公開鍵に関連付けられたユーザが、データ構造に対するアクセス権を付与されていることを示すデータをさらに含む。記録ノードの出力と同様に、他の実施形態では、アクセスノードの出力は、データ構造に対するアクセス権を付与されるユーザを示すために、別の情報を含むことができる。例えば、出力は、データ構造に対するアクセス権を持っているユーザを示すために、１つ以上の公開鍵、ビジネスロジック、実行可能コード、またはこれらの任意の組み合わせを含んでもよい。
【０００７】
管理者が、ユーザのアクセス権を無効にすることを後で要求した場合、データ記憶システムは、ユーザにアクセスを付与するノードの子ノードとして、新しいアクセスノードを作成する。新しいノードは、ユーザにアクセスを付与した親ノードのハッシュダイジェストである入力を含む。新しいノードは、公開鍵に関連付けられたユーザのアクセス権が無効になっていることを示すデータをさらに含む。
【０００８】
ユーザが、データ構造の記録ノードに関連付けられたデータ項目にアクセスすることを要求したとき、データ記憶システムは、ユーザがデータ構造に対するアクセス権を持っているかどうかを判定する。ユーザがデータ構造に対するアクセス権を持っているかどうかを判定するために、データ記憶システムは、要求に含まれるデジタル署名を識別する。デジタル署名は、ユーザの秘密鍵を用いて作成される。データ記憶システムは、入力としてルートノードのハッシュダイジェストを含み、かつ子ノードのない、データ構造内のアクセスノードをさらに識別する。識別されたアクセスノードは、データ構造に対するアクセス権を現在持っているユーザのアクセスノードである。データ記憶システムが、識別されたアクセスノードのうちの１つの出力公開鍵を用いてデジタル署名を検証できる場合、データ記憶システムは、ユーザがデータ構造に対するアクセス権を持っていると判定して、ユーザにデータ項目を提供する。
【０００９】
データ構造に対するアクセス権を持つユーザが、データ構造の記録ノードにリンクされるデータ項目を記憶するように要求したとき、データ記憶システムは、ユーザが記録ノードに対する所有権を持っているかどうかを判定する。データ記憶システムは、記録ノードの出力公開鍵を用いて要求に含まれるデジタル署名を検証できる場合、ユーザが記録ノードに対する所有権を持っていると判定する。データ記憶システムが、ユーザが記録ノードに対する所有権を持っていると判定した場合、データ記憶システムは、ユーザが所有権を持っている記録ノードの子ノードとして、新しい記録ノードを作成する。新しい記録ノードは、データ項目を含む。
【図面の簡単な説明】
【００１０】
【図１】一実施形態による、データ記憶環境のブロック図である。
【図２Ａ】一実施形態による、データ構造の例を示す。
【図２Ｂ】一実施形態による、データ構造の別の例を示す。
【図２Ｃ】一実施形態による、データ構造のさらに別の例を示す。
【図２Ｄ】一実施形態による、データ構造のさらに別の例を示す。
【図２Ｅ】一実施形態による、データ構造のさらに別の例を示す。
【図３】一実施形態による、データ記憶システムのブロック図である。
【図４】一実施形態による、ユーザに、データ構造に対するアクセス権を与えるプロセスを示すフローチャートである。
【図５】一実施形態による、データ構造の情報にアクセスするプロセスを示すフローチャートである。
【図６】一実施形態による、データ構造に関連するデータ項目を、記憶させる要求を処理するプロセスを示すフローチャートである。
【図７】一実施形態による、データ構造に対するユーザのアクセス権を無効にするプロセスを示すフローチャートである。
【図８】一実施形態による、コンピュータシステムの機能図を示すブロック図である。
【発明を実施するための形態】
【００１１】
さまざまな非限定的な実施形態を例示のみを目的として図面に図示し、詳細な説明を記載する。当業者であれば、本明細書で述べる原理から逸脱することなく、本明細書で示す構造および方法の代替的な実施形態が使用されてもよいことが、以下の説明から容易に理解できよう。
【００１２】
図１は、一実施形態による、データ記憶環境１００のブロック図である。データ記憶環境１００は、クライアントデバイス１０２Ａ、１０２Ｂ、および１０２Ｃと、ネットワーク１０６を介して接続された、データ記憶システム１０４とを含む。図示されている環境１００は、選ばれた数の各エンティティのみを含んでいるが、他の実施形態では、より多い、またはより少ない各エンティティ（追加のクライアントデバイス１０２など）を含むことができる。
【００１３】
図１その他の図面では、同一の要素を識別するのに同一の参照番号を使用する。「１０２Ａ」など、参照番号の後ろにアルファベットの文字がある場合、この特定の参照番号を有する要素を、この文字列が特に指していることを示す。「１０２」など、後ろに続くアルファベットの文字が文字列中にない参照番号は、その参照番号を有する図面内の任意またはすべての要素を指す。
【００１４】
ネットワーク１０６は、クライアントデバイス１０２と、データ記憶システム１０４との間の通信経路を表す。一実施形態では、ネットワーク１０６はインターネットであり、標準的な通信技術および／またはプロトコルを用いる。また、ネットワーク１０６には、必ずしもインターネットの一部ではない、専用の、カスタムの、またはプライベートの通信リンクを使用することができる。ネットワーク１０６は、有線および／または無線の通信システムを用いた、ローカルエリアおよび／またはワイドエリアネットワークの任意の組み合わせを含んでもよい。一実施形態では、ネットワーク１０６を介して交換された情報は、送信者、および対象とする受信者の暗号鍵を用いて、暗号化され復号される。
【００１５】
クライアントデバイス１０２は、データ記憶システム１０４と通信するために、ユーザが使用する装置である。クライアントデバイス１０２は、例えば、パソコン、スマートフォン、タブレットコンピュータ、または携帯情報端末（ＰＤＡ）であってもよい。クライアントデバイス１０２は、ユーザの暗号鍵ペアを記憶する。暗号鍵ペアは、自由に公開することができる公開鍵と、ユーザが特別に知っている秘密鍵とを含む。公開鍵と秘密鍵とは、互いに関連している。
【００１６】
ユーザはクライアントデバイス１０２を通してデータ記憶システム１０４と通信し、データ項目をシステム１０４に記憶させ、システム１０４が記憶したデータ項目にアクセスする。クライアントデバイス１０２が、データ項目を記憶させる、またはデータ項目にアクセスする要求を送信するとき、クライアントデバイス１０２は、ユーザの秘密鍵を用いて生成したデジタル署名を要求に含める。デジタル署名は、データ項目を記憶させる、またはデータ項目にアクセスする権限がユーザにあることを検証するために、データ記憶システム１０４に用いられる。
【００１７】
本明細書で説明する実施形態によれば、データ記憶システム１０４は、データ構造を介してデータ項目を記憶し、データ項目へのアクセスを制御するコンピュータシステムである。データ記憶システム１０４は、複数のデータ構造を記憶する。各データ構造は、データ構造の一部であるデータ項目に特定のユーザがアクセスできるようにし、ユーザが、データ構造に関連するデータ項目を記憶させることができるようにするデータを含む。データ項目は、データの集まり、またはデータの集まりの一部である。例えば、データ項目は、文書、画像、動画、プレゼンテーション、音声ファイルなどであってもよい。
【００１８】
データ構造は、データ構造の起源である、ルートノードを含む。ルートノードは、データ構造の管理者の公開鍵を含む。管理者は、どのユーザにデータ構造にアクセスさせるかを制御するユーザである。データ構造は、データ構造に対するアクセス権を付与された各ユーザのためのアクセスノードをさらに含む。データ構造に対するアクセス権をユーザに付与するアクセスノードは、子ノードとしてルートノードに直接結合される。アクセスノードは、ルートノードのハッシュダイジェストである入力と、アクセス権を付与されたユーザの公開鍵である出力と、公開鍵に関連付けられたユーザが、データ構造に対するアクセス権を付与されたことを示すデータとを含む。一実施形態では、データ構造に対するアクセス権を持つユーザは、データ構造の一部である各データ項目にアクセスでき、また、データ構造に関連するデータ項目を記憶させることができる。本明細書で説明するように、ハッシュダイジェストは、データに適用された片道暗号のハッシュ関数の結果であり、反転させることはできないように設計される。ハッシュ関数は、例えば、ＳＨＡ−２５６ハッシュ関数であってもよい。
【００１９】
データ構造に対するアクセス権が無効になっているユーザについては、データ構造は、データ構造に対するアクセス権をユーザに与えたアクセスノードに直接結合された、追加のアクセスノードを含む。追加のアクセスノードは、ユーザにアクセス権を与えたアクセスノードの子ノードである。追加のアクセスノードは、ユーザにアクセス権を与えたアクセスノードのハッシュダイジェストである、入力を含む。一実施形態では、追加のアクセスノードは、ユーザのアクセス権を無効にした管理者の公開鍵である出力を含み、かつユーザのアクセス権が無効になっていることを示すデータをさらに含む。
【００２０】
データ構造は、各データ項目の記録ノードをさらに含み、これはデータ構造の一部である。各記録ノードは直接的に、または１つ以上の記録ノードを介して間接的に、ルートノードにリンクされる。記録ノードは、入力と、出力と、ノードのデータ項目とを含む。入力は、記録ノードに直接結合された親ノードのハッシュダイジェストである。出力は、記録ノードに対する所有権を与えられているユーザの公開鍵である。記録ノードに対する所有権を持つユーザは、記録ノードに直接リンクされるデータ項目を追加することができる。データ構造の記録ノードをリンクさせることにより、データ構造が、データ項目同士の関係についての情報を含むことが可能になる。例えば、データ項目のバージョンが異なる記録ノードが、データ構造内でリンクされてもよい。本明細書で述べるように、ノード（例えば、ルートノード、アクセスノード、および記録ノード）は、データ構造の基本単位である。
【００２１】
図２Ａ〜図２Ｅは、一実施形態による、データ構造２００の例を示す。図２Ａは、ルートノード２０２と、アクセスノード２０４と、アクセスノード２０６とを含む、データ構造２００を示す。ルートノード２０２は、データ構造２００の作成を開始した、管理者の公開鍵を含む。アクセスノード２０４は、第１のユーザに、データ構造２００に対するアクセス権を与え、アクセスノード２０６は、第２のユーザに、データ構造２００に対するアクセス権を与える。データ記憶システム１０４は、管理者の要求で、アクセスノード２０４、および２０６を作成する。アクセスノード２０４は、ルートノード２０２のハッシュダイジェストである入力と、第１のユーザの公開鍵である出力と、公開鍵に関連付けられた第１のユーザが、データ構造２００に対するアクセス権を持っていることを示すデータとを含む。アクセスノード２０６は、ルートノード２０２のハッシュダイジェストである入力と、第２のユーザの公開鍵である出力と、公開鍵に関連付けられた第２のユーザが、データ構造２００に対するアクセス権を持っていることを示すデータとを含む。
【００２２】
図２Ｂは、管理者の要求で、データ記憶システム１０４によって、データ構造２００に追加された記録ノード２０８を示す。記録ノード２０２は、ルートノード２０２のハッシュダイジェストである入力と、第１のユーザの公開鍵である出力と、第１のデータ項目の第１のバージョンとを含む。記録ノード２０８は、出力として第１のユーザの公開鍵を含んでいるので、第１のユーザは、記録ノード２０８に対する所有権を持っており、記録ノード２０８に直接リンクされるデータ項目を追加することができる。第２のユーザの公開鍵は記録ノード２０８の出力として含まれていないため、第２のユーザは、記録ノード２０２にリンクされるデータ項目を追加することはできない。
【００２３】
しかしながら、第２のユーザは、アクセスノード２０６を介し、データ構造２００に対するアクセス権を持っているため、第２のユーザは、第１のデータ項目の第１のバージョンにアクセスすることができる。第２のユーザが、第１のデータ項目の第１のバージョンにアクセスすることを要求した場合、データ記憶システム１０４は、アクセスノード２０４または２０６のうちの１つの出力公開鍵を用いて第２のユーザが提供したデジタル署名を検証できるので、システム１０４は、第２のユーザは第１のデータ項目の第１のバージョンにアクセスできると判定する。この例では、データ記憶システム１０４は、アクセスノード２０６に含まれる第２のユーザの公開鍵を用いて、デジタル署名を検証する。第２のユーザが、データ構造に対するアクセス権を持っていることを検証した後に、データ記憶システム１０４は、第２のユーザに、第１のデータ項目の第１のバージョンを提供する。データ構造に対するアクセス権を与えられていない第３のユーザが、第１のデータ項目の第１のバージョンにアクセスすることを要求した場合、データ記憶システム１０４は、アクセスノード２０４および２０６が第３のユーザの公開鍵を含んでいないために、要求を拒否する。
【００２４】
第１のユーザが、記録ノード２０８にリンクされた、第１のデータ項目の第２のバージョンを記憶するように要求した場合、データ記憶システム１０４は、記録ノード２０８が出力として第１のユーザの公開鍵を含み、その結果、記録ノード２０８の出力公開鍵を用いて、第１のユーザが要求に含めたデジタル署名を検証できるため、これを許可する。図２Ｃは、データ記憶システム１０４によってデータ構造２００に追加された、記録ノード２１０を示し、第１のデータ項目の第２のバージョンを有し、記録ノード２０８に結合されている。記録ノード２１０は、記録ノード２０８のハッシュダイジェストである入力と、第２のユーザの公開鍵である出力とを含む。したがって、この例では、第２のユーザは、記録ノード２１０に対する所有権を与えられており、記録ノード２１０に直接リンクされるデータ項目を追加することができる。
【００２５】
図２Ｄは、管理者の要求で、データ記憶システム１０４によって、データ構造に追加された記録ノード２１２を示す。記録ノード２１２は、ルートノード２０２のハッシュダイジェストである入力と、第２のユーザの公開鍵である出力と、第２のデータ項目の第１のバージョンとを含む。出力が第２のユーザの公開鍵を有しているため、第２のユーザは記録ノード２１２に対する所有権を有し、記録ノード２１２にリンクされるデータ項目（例えば、第２のデータ項目の第２のバージョン）を追加することができる。
【００２６】
図２Ｅに示されているように、管理者が、第１のユーザのデータ構造２００に対するアクセス権を無効にするよう要求した場合は、データ記憶システム１０４は、データ構造２００にアクセスノード２１４を追加することによって、第１のユーザのアクセス権を無効にする。アクセスノード２１４は、子ノードとしてアクセスノード２０４に直接結合される。アクセスノード２１４は、アクセスノード２０４のハッシュダイジェストである入力と、管理者の公開鍵である出力と、第１のユーザが、データ構造２００に対するアクセス権を持っていないことを示すデータとを含む。アクセスノード２０４が子ノード（アクセスノード２１４）を持っているため、アクセスノード２０４は、データ構造２００に対するアクセス権を判定する際に、データ記憶システム１０４に考慮されない。
【００２７】
例えば、第１のユーザが、記録ノード２０８、２１０、または２１２のうちの１つに含まれるデータ項目にアクセスすることを要求した場合、データ記憶システム１０４は、第１のユーザが要求に含めたデジタル署名を識別することによって、かつ子ノードを持たないデータ構造のアクセスノードを識別することによって、第１のユーザが、データ構造に対するアクセス権を有するかどうかを判定する。図２Ｅの例では、データ記憶システム１０４は、アクセスノード２０６のみを識別する。データ記憶システム１０４は、出力としてアクセスノード２０６に含まれる第２のユーザの公開鍵を用いて、第１のユーザのデジタル署名を検証できないため、データ記憶システム１０４は、第１のユーザはデータ構造にアクセスできないと判定する。データ記憶システム１０４は、第１のユーザがデータ構造に対するアクセス権を有していないため、第１のユーザの要求を拒否する。
【００２８】
図２Ｅに見られるように、ルートノードに直接結合された各ノードは、異なる暗号ノード系統（ｎｏｄｅ  ｌｉｎｅａｇｅ）の一部である。例えば、第１のノード系統は、ルートノード２０２と、記録ノード２０８と、記録ノード２１０とを含む。第２のノード系統は、ルートノード２０２と、アクセスノード２０４と、アクセスノード２１４とを含む。第３のノード系統は、ルートノード２０２と、アクセスノード２０６とを含む。第４のノード系統は、ルートノード２０２と、記録ノード２１２とを含む。各系統のノードは、その決定的入力によって、系統の最後のノードからルートノードまで、暗号的にリンクされる。例えば、ルートノード２０２、記録ノード２０８、および記録ノード２１０を含む系統では、記録ノード２０８の入力は、ルートノード２０２のハッシュダイジェストである。記録ノード２１０の入力は、記録ノード２０８のハッシュダイジェストである。したがって系統のノードは、直接結合する親ノードのハッシュダイジェストである入力を含む、系統の各ノードが暗号的にリンクしている。
【００２９】
各ノード系統が、暗号的にリンクしたノードを含む結果、データ構造が記憶したデータの完全性が証明される。暗号系統に対する完全性の証明は、系統の一部であるノードの、各入力のハッシュダイジェストを再計算することで提供することができる。ノードに対して計算した入力ハッシュダイジェストが、ノードのデータ構造に含まれる入力と一致しない場合、データ記憶システム１０４は、系統の１つ以上のノードが変更されていると判定することができる。図２Ｅの例に戻ると、データ記憶システム１０４は、ルートノード２０２をハッシングして、記録ノード２０８の入力を後で再計算すると仮定する。計算した入力が、記録ノード２０８に含まれる入力と一致しない場合、データ記憶システム１０４は、ルートノード２０２が変更されていると判定する。データ記憶システム１０４は、記録ノード２０８の入力に加えて、またはこれに代えて、記録ノード２１０の入力を再計算してもよい。データ記憶システム１０４は、記録ノード２０８をハッシングすることによって、入力を再計算する。再計算した入力が、記録ノード２１０の入力と一致しない場合、データ記憶システム１０４は、記録ノード２０８、および／またはルートノード２０２が変更されていると判定する。
【００３０】
また、図２Ａ〜図２Ｅの例に示すように、データ項目に対するアクセスを制御するのに用いられるデータ、すなわちアクセスノードは、データ項目と同じデータ構造内に含まれる。図２Ｅは、記録ノード２０８、２１０、および２１２と同じ構造２００の一部としての、アクセスノード２０４、２０６、および２１４を示す。したがって、データ記憶システム１０４は、データ構造の一部であるデータ項目に対するアクセスを制御するために、外部のシステムまたはデータ構造に依存する必要はない。
【００３１】
図３は、一実施形態による、データ記憶システム１０４の構成要素を示すブロック図である。データ記憶システム１０４は、データ構造記憶装置３０２と、作成モジュール３０４と、許可モジュール３０６と、検証モジュール３０８と、記憶モジュール３１０と、アクセスモジュール３１２とを含む。インターフェースシステム１０４の他の実施形態は、本明細書で説明したものとは異なる構成要素、および／または他の構成要素を有することが可能であり、かつ機能性を別の仕方で構成要素間に分配できることが、当業者には理解されよう。
【００３２】
データ構造記憶装置３０２は、データ構造を記憶する。各データ構造は、暗号情報とともにデータ項目を含み、暗号情報は、データ項目のユーザアクセスと、データ構造に関連するデータ項目の記憶とを制御するのに用いられる。以下でより詳細に説明するように、データ構造は、データ構造の一部である各データ項目の記録ノードを含む。また、データ構造は、データ構造の一部であるデータ項目にアクセスする権利を持ち、データ構造に関連するデータ項目を記憶できる、各ユーザのアクセスノードを含む。
【００３３】
作成モジュール３０４は、ユーザの要求を処理して新しいデータ構造を作成する。ユーザは、いくつかのデータ項目に特定のユーザをアクセスさせたいときは、新しいデータ構造を作成するように要求してもよい。例えば、ユーザは、会社内のグループ固有のデータ項目を含めるため、かつグループのメンバーがデータ項目にアクセスできるようにするために、新しいデータ構造を作成してもよい。ユーザがクライアントデバイス１０２を介して、新しいデータ構造を作成する要求を出すと、データ記憶システム１０４は、ユーザが新しいデータ構造の作成を要求できるかどうかを判定する。一実施形態では、データ記憶システム１０４のすべてのユーザが、新しいデータ構造の作成を要求することができる。別の実施形態では、データ記憶システム１０４の特定のユーザが、新しいデータ構造を作成する権限を持っている。一実施形態では、作成モジュール３０４は、新しいデータ構造を作成する権限を持っているユーザの公開鍵を保持する。ユーザが出した要求には、ユーザのクライアントデバイス１０２がユーザの秘密鍵を用いて生成した、デジタル署名が含まれる。作成モジュール３０４が、保持されている公開鍵の１つを用いてデジタル署名を検証できる場合、作成モジュール３０４は、ユーザが、新しいデータ構造を作成する権限を与えられていると判定する。
【００３４】
作成モジュール３０４が、ユーザが新しいデータ構造を作成する権限を与えられていると判定した場合、作成モジュール３０４は、データ構造記憶装置３０２内にルートノードを生成する。ルートノードは、データ構造の起源である。ユーザは、データ構造の管理者であり、ユーザの公開鍵は、ルートノードに含まれる。データ構造の管理者は、どのユーザにデータ構造に対するアクセス権を持たせるかを制御する。一実施形態では、作成モジュール３０４はルートノードに、データ構造を識別する情報（識別番号など）をさらに含める。
【００３５】
一実施形態では、データ構造は、複数の管理者を有してもよい。データ構造が複数の管理者を有するとき、作成モジュール３０４は、ルートノードに各管理者の公開鍵を含める。一実施形態では、ユーザがデータ構造の作成を要求するとき、ユーザは、データ構造の管理者となる各ユーザの公開鍵を提供する。
【００３６】
許可モジュール３０６は、ユーザにデータ構造に対するアクセス権を与え、かつ無効にする。一実施形態では、ユーザがデータ構造に対するアクセス権を持っているとき、ユーザは、データ構造の一部である各データ項目にアクセスでき、データ構造に関連する新しいデータ項目を記憶させることができる。例えば、図２Ｄに戻ると、この実施形態では、第１のユーザ、および第２のユーザは、ユーザが、アクセスノード２０４および２０６を介してデータ構造２００に対するアクセス権を有しているために、記録ノード２０８、２１０、および２１２に関連付けられたデータ項目にアクセスすることができる。別の実施形態では、ユーザがデータ構造に対するアクセス権を持っていると、ユーザは、データ構造のそれぞれの記録ノードが出力としてユーザの公開鍵を含んでいる、データ構造のデータ項目にのみアクセスすることができる。例えば、図２Ｄに戻ると、この実施形態では、記録ノード２０８が出力として第１のユーザの公開鍵を含んでいるため、第１のユーザは、記録ノード２０８に関連付けられたデータ項目にアクセスすることができる。第２のユーザは、記録ノード２１０および２１２が出力として第２のユーザの公開鍵を含んでいるため、これらに関連付けられたコンテンツ項目にアクセスすることができる。
【００３７】
データ記憶システム１０４が、クライアントデバイス１０２から要求を受信して、ユーザにデータ構造に対するアクセス権を与えると、許可モジュール３０６は、要求を開始したクライアントデバイス１０２のユーザが、データ構造の管理者かどうかを判定する。ユーザが管理者かどうかを判定するために、許可モジュール３０６は、要求に含まれるデジタル署名を識別する。デジタル署名は、ユーザの秘密鍵を用いて、クライアントデバイス１０２によって生成される。許可モジュール３０６は、データ構造記憶装置３０２内の、データ構造のルートノードをさらに識別する。許可モジュール３０６が、ルートノードに含まれている公開鍵を用いてデジタル署名を検証できる場合、許可モジュール３０６は、ユーザがデータ構造の管理者であると判定する。
【００３８】
ユーザがデータ構造の管理者である場合、許可モジュール３０６はデータ構造に、子ノードとしてルートノードに直接結合するアクセスノードを作成する。許可モジュール３０６は、ルートノードのハッシュダイジェストである入力と、アクセス権を付与されているユーザの公開鍵である出力と、公開鍵に関連付けられたユーザが、データ構造に対するアクセス権を持っていることを示すデータとをアクセスノードに含める。一実施形態では、アクセス権を付与されているユーザの公開鍵が、管理者が出した要求により、許可モジュール３０６に提供される。他の実施形態では、アクセス権を付与されたユーザを示す出力として、１つ以上の公開鍵、ビジネスロジック、実行可能コード、またはこれらの任意の組み合わせなどの別の情報、または追加の情報が含まれてもよい。
【００３９】
一実施形態では、作成モジュール３０４によって、ユーザがデータ構造の管理者として追加されると、許可モジュール３０６は、管理者にデータ構造に対するアクセス権を与えるために、ルートノードに直接結合されるアクセスノードを自動的に作成する。許可モジュール３０６は、ルートノードのハッシュダイジェストである入力と、管理者の公開鍵である出力と、公開鍵に関連付けられたユーザが、データ構造に対するアクセス権を持っていることを示すデータとをアクセスノードに含める。
【００４０】
データ記憶システム１０４が、クライアントデバイス１０２から要求を受信して、ユーザのデータ構造に対するアクセス権を無効にすると、許可モジュール３０６は、要求を開始したクライアントデバイス１０２のユーザが、データ構造の管理者かどうかを判定する。前述したのと同様に、許可モジュール３０６は、要求に含まれるデジタル署名と、データ構造記憶装置３０２内のデータ構造のルートノードに含まれる、１つ以上の公開鍵とに基づいて、ユーザが管理者かどうかを判定する。
【００４１】
ユーザがデータ構造の管理者であると判定された場合、許可モジュール３０６は、管理者の要求から、アクセス権が無効になっているユーザの公開鍵を識別する。許可モジュール３０６は、データ構造において、アクセスノードの出力として公開鍵を含むアクセスノードを識別する。許可モジュール３０６は、識別済みのアクセスノードに子ノードとして直接結合する、新しいアクセスノードを作成する。許可モジュール３０６は、識別済みのアクセスノードのハッシュダイジェストを生成し、生成したハッシュダイジェストを入力として新しいアクセスノードに含める。一実施形態では、許可モジュール３０６は、管理者の公開鍵である出力と、ユーザのアクセス権が無効になっていることを示すデータとを新しいアクセスノードにさらに含める。新しい子アクセスノードを識別済みのアクセスノードに結合することによって、ユーザのアクセス権が無効になる。
【００４２】
検証モジュール３０８は、ユーザがデータ構造に対するアクセス権を持っているかどうかを判定する。記憶モジュール３１０、またはアクセスモジュール３１２からの要求で、検証モジュール３０８は、ユーザがデータ構造に対するアクセス権を持っているかどうかを判定する。要求には、データ構造の識別子と、ユーザのクライアントデバイス１０２がユーザの秘密鍵を用いて生成した、デジタル署名とが含まれる。
【００４３】
ユーザがデータ構造に対するアクセス権を持っているかどうかを判定するために、検証モジュール３０８はデータ構造記憶装置３０２において、子ノードを持っていない、データ構造のアクセスノードを識別する。一実施形態では、検証モジュール３０８はまた、識別済みのノードが、データ構造のルートノードのハッシュダイジェストである、入力を含んでいることを検証する。識別済みのアクセスノードはそれぞれ、出力として公開鍵を含む。検証モジュール３０８が、識別済みのアクセスノードのうちの１つの出力公開鍵を用いてデジタル署名を検証できる場合、検証モジュール３０８は、ユーザがデータ構造に対するアクセス権を持っていると判定する。検証モジュール３０８が、識別済みのアクセスノードのうちの１つの出力公開鍵を用いてデジタル署名を検証できない場合、検証モジュール３０８は、ユーザがデータ構造に対するアクセス権を持っていないと判定する。検証モジュール３０８は、記憶モジュール３１０、またはユーザがデータ構造に対するアクセス権を持っているかどうかを判定する要求を出したアクセスモジュール３１２に通知する。
【００４４】
記憶モジュール３１０は、ユーザの要求を処理して、データ構造に関連するデータ項目を記憶する。データ記憶システム１０４が、ユーザのクライアントデバイス１０２から要求を受信してデータ構造に関連するデータ項目を記憶すると、記憶モジュール３１０は、データ構造内でデータ項目を直接リンクさせることを要求が示しているのは、データ構造のどのノードかを判定する。一実施形態では、要求は、ノードのハッシュダイジェストを含めることによってノードを示す。要求が、データ項目をルートノードに直接リンクさせることを示している場合、記憶モジュール３１０は、ユーザがデータ構造に対するアクセス権を有しているかどうかを検証モジュール３０８が判定するように要求し、クライアントデバイス１０２から受信した要求の情報を検証モジュール３０８に提供する。
【００４５】
検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていないと判定した場合、記憶モジュール３１０はクライアントデバイス１０２に、要求を拒否する通知を送信する。しかしながら、検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていると判定した場合、記憶モジュール３１０は、子ノードとしてデータ構造のルートノードに直接結合される、記録ノードを作成する。ルートノードに直接結合される記録ノードを作成することによって、記憶モジュール３１０は、データ構造の新しいノード系統を作成している。ノード系統は、データ構造における、ルートノードから子ノードを持たないノードまでのノードの経路である。
【００４６】
記憶モジュール３１０は、作成した記録ノード内に、ユーザが記憶するように要求したデータ項目を含める。別の実施形態では、データ項目を含める代わりに、データ項目が記憶された場所までのポインタが記録ノードに含められる。記憶モジュール３１０は、ルートノードのハッシュダイジェストを生成し、ハッシュダイジェストを入力として記録ノードに含める。また、記憶モジュール３１０は、クライアントデバイス１０２から受信した要求を元に、記録ノードに対する所有権を持つべきユーザの公開鍵を決定する。記憶モジュール３１０は、記録ノードに公開鍵を出力として含める。クライアントデバイス１０２から受信した要求が、記録ノードに対する所有権を持つべき複数ユーザの公開鍵を含む場合、記憶モジュール３１０は、記録ノードに複数の出力を含め、各出力は、異なる公開鍵に対応する。記録ノードに対する所有権を持つユーザは、記録ノードに直接リンクされるデータ項目をデータ構造に追加することができる。他の実施形態では、記録ノードに対する所有権を持っている１人以上のユーザを示すために、別の情報、または追加の情報が出力として含まれる。含まれる情報は、例えば、１つ以上の公開鍵、ビジネスロジック、実行可能コード、またはこれらの任意の組み合わせであってもよい。
【００４７】
前述の実施形態では、データ構造に対するアクセス権を持つユーザは、ルートノードに直接リンクされるデータ項目を記憶させることができる。ユーザは、管理者であってもよいし、管理者でなくてもよい。しかしながら、他の実施形態では、データ構造の管理者のみが、ルートノードに直接リンクされるデータ項目を記憶させることができる。さらに他の実施形態では、記憶モジュール３１０は、記録ノードを作成する前に、ユーザが管理者であることを検証する。
【００４８】
クライアントデバイス１０２から受信した要求が、データ項目をデータ構造の記録ノードに直接リンクさせることを示す場合、記憶モジュール３１０は、ユーザが記録ノードに対する所有権を持っているかどうかを判定し、これにより、記録ノードに直接リンクされるデータ項目を記憶させることが可能になる。ユーザが記録ノードに対する所有権を持っているかどうかを判定するために、記憶モジュール３１０は、要求に含まれるデジタル署名を識別する。また、記憶モジュール３１０は、データ構造記憶装置３０２内の、データ構造の記録ノードをさらに識別する。記憶モジュール３１０が、記録ノードに出力として含まれる公開鍵を用いてデジタル署名を検証できる場合、記憶モジュール３１０は、ユーザが記録ノードに対する所有権を持っていると判定する。
【００４９】
ユーザが所有権を持っていないと判定された場合、記憶モジュール３１０はクライアントデバイス１０２に、要求が拒否されたことを示す通知を送信する。しかしながら、ユーザが記録ノードに対する所有権を持っていると判定された場合、記憶モジュール３１０は、ユーザがデータ構造に対するアクセス権を持っているかどうかを検証モジュール３０８が判定するように要求する（例えば、ユーザのデータ構造に対するアクセス権が無効になっていないことを検証する）。
【００５０】
検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていないと判定した場合、記憶モジュール３１０はクライアントデバイス１０２に、要求が拒否されたことを示す通知を送信する。その一方で、検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていると判定した場合、記憶モジュール３１０は、クライアントデバイス１０２から受信した要求によって識別済みの記録ノードに、直接結合される記録ノードを作成する。作成された記録ノードは、要求によって識別された記録ノードの子ノードになる。記憶モジュール３１０は、作成した記録ノード内に、ユーザが記憶するように要求したデータ項目を含める。別の実施形態では、データ項目を含める代わりに、データ項目が記憶された場所までのポインタが記録ノードに含められる。記憶モジュール３１０は、要求によって識別された記録ノードのハッシュダイジェストを生成し、ハッシュダイジェストを作成済みの記録ノードに含める。また、記憶モジュール３１０は、クライアントデバイス１０２から受信した要求を元に、記録ノードに対する所有権を持つべきユーザの公開鍵を決定する。記憶モジュール３１０は、記録ノードに公開鍵を出力として含める。クライアントデバイス１０２から受信した要求が、記録ノードに対する所有権を持つべき複数ユーザの公開鍵を含む場合、記憶モジュール３１０は、記録ノードに複数の出力を含め、各出力は、異なる公開鍵に対応する。
【００５１】
アクセスモジュール３１２は、データ構造のデータ項目に対するアクセスをユーザに提供する。データ記憶システム１０４が、ユーザのクライアントデバイス１０２から、データ構造の一部であるデータ項目を閲覧する要求を受信すると、アクセスモジュール３１２は、要求の情報を検証モジュール３０８に転送し、ユーザがデータ構造に対するアクセス権を持っているかどうかを検証モジュール３０８が判定するように要求する。
【００５２】
検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていないと判定した場合、記憶モジュール３１０はクライアントデバイス１０２に、要求が拒否されたことを示す通知を送信する。しかしながら、検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていると判定した場合、アクセスモジュール３１２は、データ構造記憶装置３０２内のデータ構造の記録ノードを識別する。検証モジュール３０８は、記録ノードが表現していることを表示するために、クライアントデバイス１０２に情報を送信する。各記録ノードの表現は、記録ノードに関連付けられたデータ項目を示し、データ項目に対するアクセスの要求に使用できる、記録ノードの識別子を含む。一実施形態では、識別子は、記録ノードのハッシュダイジェストである。別の実施形態では、識別子は、記録ノードの入力である。
【００５３】
データ記憶システム１０４が、ユーザのクライアントデバイス１０２から、データ構造の記録ノードに関連付けられたデータ項目にアクセスする要求を受信すると、アクセスモジュール３１２は、ユーザがデータ構造に対するアクセス権を持っていると、検証モジュール３０８が既に判定したことを検証する。検証モジュール３０８が、ユーザがデータ構造に対するアクセス権を持っていることをまだ判定していない場合、アクセスモジュール３１２は、検証モジュール３０８が判定をするように要求する。ユーザがデータ構造に対するアクセス権を持っている場合、アクセスモジュール３１２は、要求に含まれる、記録ノードの識別子を識別する。アクセスモジュール３１２は、識別子に基づいて、データ構造記憶装置３０２内の記録ノードを識別する。アクセスモジュール３１２は、記録ノードに含まれるデータ項目をクライアントデバイス１０２に送信する。記録ノードがデータ項目ではなく、データ項目が記憶されている場所までのポインタを含んでいる場合、アクセスモジュール３１２は、ポインタを用いてデータ項目を検索し、データ項目をクライアントデバイス１０２に送信する。別の実施形態では、アクセスモジュール３１２は、記録ノードがユーザの公開鍵である出力を含む場合のみ、クライアントデバイス１０２にデータ項目を送信する。
【００５４】
図４は、一実施形態による、ユーザに、データ構造に対するアクセス権を与えるプロセス４００を示すフローチャートである。この例については、データ構造が、ルートノードと、データ項目を含む複数の記録ノードとを含んでいると仮定する。また、この例については、データ構造の管理者のみが、データ構造に対するアクセス権の付与を要求できると仮定する。
【００５５】
データ記憶システム１０４は、クライアントデバイス１０２から、データ構造に対するアクセス権をユーザに与える要求を受信する（４０２）。要求は、要求を開始したクライアントデバイス１０２のユーザの秘密鍵を用いて、クライアントデバイス１０２が生成したデジタル署名を含む。要求は、アクセス権を要求しているユーザの公開鍵をさらに含む。データ記憶システム１０４は、データ構造のルートノードに含まれる公開鍵を識別する（４０４）。公開鍵は、データ構造の管理者に関連付けられている。データ記憶システム１０４は、公開鍵を用いてデジタル署名を検証することによって、データ構造の管理者によって要求が開始されたと判定する（４０６）。
【００５６】
データ記憶システム１０４は、管理者によって要求が開始されたという判定に基づいて、ルートノードに直接結合されるアクセスノードを作成する（４０８）。アクセスノードは、ルートノードのハッシュダイジェストである入力と、アクセス権を要求したユーザの公開鍵である出力とを含む。一実施形態では、アクセスノードは、出力の公開鍵に関連付けられたユーザが、データ構造に対するアクセス権を持っていることを示すデータをさらに含む。アクセスノードを作成することにより、データ構造に対するアクセス権をユーザに与える。
【００５７】
図５は、一実施形態による、データ構造の情報にアクセスするプロセス５００を示すフローチャートである。この例については、データ構造が、ルートノードと、データ構造に対するアクセス権をユーザに付与するアクセスノードと、データ項目を含む記録ノードとを含んでいると仮定する。
【００５８】
データ記憶システム１０４は、ユーザのクライアントデバイス１０２から、データ構造に関連付けられた情報にアクセスする要求を受信する（５０２）。要求には、ユーザの秘密鍵を用いて生成したデジタル署名が含まれる。データ記憶システム１０４は、ユーザがデータ構造に対するアクセス権を持っていることを検証する（５０４）。一実施形態では、データ記憶システム１０４は、子ノードを持たない、データ構造内の各アクセスノードを識別することによって、ユーザがアクセス権を持っていることを検証する。各識別済みアクセスノードは、出力として公開鍵を含む。データ記憶システム１０４は、識別済みアクセスノードの１つに含まれる公開鍵を用いたデジタル署名の検証に基づいて、ユーザがアクセス権を持っていると判定する。
【００５９】
データ記憶システム１０４は、クライアントデバイス１０２に、データ構造に含まれる記録ノードの情報を送信する（５０６）。一実施形態では、情報は各記録ノードに、記録ノードに関連付けられたデータ項目と、データ項目に対するアクセスの要求に使用できる、記録ノードに関連付けられた識別子を含める。データ記憶システム１０４は、クライアントデバイスから、データ構造の記録ノードに関連付けられたデータ項目にアクセスする要求を受信する（５０８）。要求は、記録ノードに関連付けられた識別子を含む。データ記憶システム１０４は、識別子に基づいてデータ構造内の記録ノードを識別する（５１０）。データ記憶システム１０４は、記録ノードに関連付けられたデータ項目をクライアントデバイス１０２に送信する（５１２）。
【００６０】
図６は、一実施形態による、データ構造に関連付けられたデータ項目を記憶する要求を処理するプロセス６００を示すフローチャートである。この例については、要求を出しているユーザは、データ構造に対するアクセス権を持つものと仮定する。
【００６１】
データ記憶システム１０４は、ユーザのクライアントデバイス１０２から要求を受信する（６０２）。要求は、データ項目が直接リンクされる、データ構造の記録ノードの識別子を含む。要求は、データ項目と、ユーザの秘密鍵を用いてクライアントデバイス１０２が生成したデジタル署名とをさらに含む。データ記憶システム１０４は、識別子に基づいてデータ構造内の記録ノードを識別する（６０４）。識別された記録ノードは、公開鍵である出力を含む。
【００６２】
データ記憶システム１０４は、出力公開鍵を用いてデジタル署名を検証することによって、ユーザが記録ノードに対する所有権を持っていると判定する（６０６）。データ記憶システム１０４は、ユーザが記録ノードに対する所有権を持っているという判定に基づいて、データ構造内に、識別済みの記録ノードに直接結合される記録ノードを作成する（６０８）。作成された記録ノードは、データ項目を含む。また、作成された記録ノードは、識別済み記録ノードのハッシュダイジェストである入力を含む。作成された記録ノードは、作成された記録ノードに対する所有権を持っているユーザの公開鍵をさらに含む。一実施形態では、要求は、所有権を持つべきユーザの公開鍵を含む。
【００６３】
図７は、一実施形態による、データ構造に対するユーザのアクセス権を無効にするプロセス７００を示すフローチャートである。この例については、データ構造は、データ構造のルートノードに直接結合されたアクセスノードを含み、アクセスノードは、ユーザの公開鍵を出力として含んでいると仮定する。アクセスノードは、子ノードを含まない。また、データ構造の管理者のみが、ユーザのアクセス権を無効にすることを要求できると仮定する。
【００６４】
データ記憶システム１０４はクライアントデバイス１０２から、ユーザのアクセス権を無効にする要求を受信する（７０２）。要求は、アクセス権を無効にすべきユーザの公開鍵を含む。要求には、要求を開始したユーザの秘密鍵を用いて生成したデジタル署名がさらに含まれる。データ記憶システム１０４は、データ構造のルートノードに含まれる公開鍵を識別する（７０４）。公開鍵は、データ構造の管理者に関連付けられている。データ記憶システム１０４は、公開鍵を用いてデジタル署名を検証することによって、データ構造の管理者によって要求が開始されたと判定する（７０６）。
【００６５】
データ記憶システム１０４は、アクセス権が無効になっているユーザの公開鍵を含む、データ構造内のアクセスノードを識別する（７０８）。データ記憶システム１０４は、データ構造内に、識別済みのアクセスノードに直接結合されるアクセスノードを作成する（７１０）。作成されたアクセスノードは、識別済みのアクセスノードの子ノードになる。作成されたアクセスノードは、識別済みのアクセスノードのハッシュダイジェストである入力を含む。一実施形態では、アクセスノードは、管理者の公開鍵である出力と、ユーザのアクセス権が無効になっていることを示すデータとをさらに含む。
【００６６】
図４〜図７で説明したステップは、他の実施形態で異なる順序で実行できることが、当業者には理解されよう。さらに、他の実施形態は、前述したステップとは異なるステップ、および／または追加のステップを含むことができる。
【００６７】
図８は、一実施形態による、図１の環境１００に示されているシステムの１つとして使用するための、コンピュータシステム８００の機能図を示すブロック図である。少なくとも１つのプロセッサ８０２が、チップセット８０４に結合されていることが示されている。チップセット８０４には、メモリ８０６、記憶装置８０８、キーボード８１０、グラフィックスアダプタ８１２、ポインティングデバイス８１４、およびネットワークアダプタ８１６がさらに結合される。表示装置８１８は、グラフィックスアダプタ８１２に結合される。一実施形態では、チップセット８０４の機能は、メモリコントローラハブ８２０、およびＩ／Ｏコントローラハブ８２２によって提供される。別の実施形態では、メモリ８０６は、チップセット８０４ではなく、プロセッサ８０２に直接結合される。
【００６８】
記憶装置８０８は、ハードディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、ＤＶＤ、またはソリッドステートメモリ装置などの、非一時的なコンピュータ読み取り可能記憶媒体である。メモリ８０６は、プロセッサ８０２が使用する命令およびデータを保持する。ポインティングデバイス８１４は、マウス、トラックボールその他の種類のポインティングデバイスであってもよく、コンピュータシステム８００にデータを入力するために、キーボード８１０と組み合わせて用いられる。グラフィックスアダプタ８１２は、表示装置８１８に、画像その他の情報を表示する。ネットワークアダプタ８１６は、コンピュータシステム８００をネットワーク１０６に結合する。コンピュータシステム８００のいくつかの実施形態は、図８に示されているものとは異なる構成要素および／または他の構成要素を有する。
【００６９】
コンピュータ８００は、本明細書で説明する機能を提供するために、図３のモジュール、および図４〜図７のプロセスを実行するように適合される。本明細書で用いる「モジュール」という用語は、特定の機能を提供するための、コンピュータプログラム命令その他のロジックを指す。モジュールは、ハードウェア、ファームウェア、および／またはソフトウェアで実装することができる。モジュールは通常、記憶装置８０８に記憶され、メモリ８０６に読み込まれ、プロセッサ８０２によって実行される。
【００７０】
モジュールは、１つ以上のプロセスを含むことができ、かつ／またはプロセスの一部のみが提供されてもよい。本明細書で説明するエンティティの実施形態は、他のモジュール、および／または本明細書で説明するものとは異なるモジュールを含むことができる。また、モジュールによる機能は、他の実施形態の他のモジュール、または別のモジュールによって実行することができる。さらに、本説明では、明快かつ簡便にするため、「モジュール」という用語を省略する場合がある。
【００７１】
図１のシステムに用いられるコンピュータシステム８００の種類は、実施形態、およびエンティティが使用する処理能力に応じて違うものにすることができる。例えば、携帯電話などのクライアントデバイス１０２は通常、処理能力に限りがあり、表示装置８１８が小さい。これとは対照的に、データ記憶システム１０４は、本明細書で説明する機能を提供するために、共に働く複数のブレードサーバを備えている場合がある。
【００７２】
先に説明した実施形態は、図示する目的で提示されており、網羅することや、または開示された正確な形態に限定することは意図していない。前述の開示に照らせば、多くの修正および変更が可能なことが当業者であれば理解できよう。
【００７３】
本説明の一部は、情報を操作するアルゴリズム、およびシンボリック表現の観点から実施形態を説明する。このようなアルゴリズム的な記述および表現は通常、データ処理分野の当業者によって、その作業の内容を他の当業者に効率的に伝えるために用いられる。機能的、計算的、または論理的に説明されるこのような操作は、コンピュータプログラム、または等価の電子回路、マイクロコードなどによって実装されると理解される。さらに、説明したモジュールは、ソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組み合わせで具体化されてもよい。
【００７４】
本明細書で言及する「一実施形態」または「実施形態」は、特定の特性、構造、または特徴が、本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書のさまざまな箇所にある「一実施形態では」、または「好ましい実施形態」という表現は、必ずしも同じ実施形態を指していない。
【００７５】
前述した内容の一部は、コンピュータメモリ内のデータビットに対する操作の方法、およびシンボリック表現の観点から提示されている。このような記述および表現は、その作業の内容を他の当業者に最も効率的に伝えるために、当業者によって用いられる手段である。方法は本明細書において、かつ一般的に、所望の結果が得られる、首尾一貫した一連のステップ（命令）と考えられる。ステップは、物理的な量の物理的な操作を必要とするものである。通常は、必ずしも必要ではないが、このような量は、記憶、伝達、結合、比較その他の操作ができる、電気信号、磁気信号、または光学信号の形態をとる。主に通常の使用上の理由から、このような信号をビット、値、要素、記号、文字、用語、数字などで呼ぶと便利なことがある。さらに、物理的な量の物理的な操作が必要なステップのいくつかの配置を、一般性を失うことなく、モジュール、またはコード装置として参照すると便利なことがある。
【００７６】
しかしながら、これらおよび類似の用語はすべて適切な物理量に関連付けられ、これらの量に適用される、単なる便利な標識であることに留意すべきである。特に記載されていない限り、以下の説明から明らかなように、説明の全体を通して、「処理する」または「算出する」「計算する」または「表示する」または「判定する」などの用語を使用した説明は、コンピュータシステムのメモリまたはレジスタその他の情報記憶装置、伝送装置または表示装置などで、物理的な（電子的な）量として表されるデータを操作し変換する、コンピュータシステム、または類似の電子計算装置の動作および処理を指していることは理解されよう。
【００７７】
本明細書で開示するいくつかの態様は、本明細書で説明するプロセスのステップおよび命令を方法の形態で含んでいる。なお、本明細書で説明するプロセスのステップおよび命令は、ソフトウェア、ファームウェア、またはハードウェアで具体化することができ、ソフトウェアで具体化されると、常駐させるためにダウンロードすることができ、さまざまなオペレーティングシステムが使用する異なるプラットフォームで動作させることができる。
【００７８】
また、前述の実施形態は、本明細書の動作を実行する装置に関する。本装置は、必要な目的のために特別に構築されてもよく、あるいはコンピュータに記憶されたコンピュータプログラムによって選択的に作動または再構成される、汎用コンピュータを備えてもよい。このようなコンピュータプログラムは、これに限定されないが、フロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、磁気光ディスクなどの任意の種類のディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気または光カード、特定用途向け集積回路（ＡＳＩＣ）、または電子的命令の記憶に適した任意の種類の媒体などであって、それぞれがコンピュータシステムバスに結合された媒体を含む、任意のタイプのディスクなどの非一時的なコンピュータ読み取り可能記憶媒体に記憶されてもよい。さらに、本明細書で言うコンピュータは、単一のプロセッサを含んでもよく、あるいは計算能力を高めるために複数プロセッサ設計を採用したアーキテクチャであってもよい。
【００７９】
本明細書で提示される方法および表示は本質的に、特定のコンピュータその他の装置に関するものではない。本明細書の教示によって、プログラムとともにさまざまな汎用システムが使用されてもよく、あるいは必要な方法ステップを実行するために、より特化した装置を構築すると便利なことがわかる場合がある。このようなさまざまなシステムに必要な構造は、以下の説明で明らかになる。また、実施形態は、特定のプログラム言語を参照して記述されているわけではない。本明細書で述べる教示を実装するために、さまざまなプログラム言語が使用されてもよく、特定の言語に対する以下の参照は、使用可能性および最良の形態を開示するために提供されることは理解されよう。
【００８０】
好ましい実施形態、およびいくつかの代替的な実施形態を参照して、本開示を具体的に図示して説明したが、本発明の精神および範囲から逸脱することなく、その形態および詳細をさまざまに変更できることが当業者には理解されよう。
【００８１】
最後に、本明細書で使用されている言葉は、主に読みやすさのために、かつ指示する目的のために選択されており、本発明の主題を正確に記述したり、制限したりするために選択されているものではないことに留意されたい。したがって本開示は、本発明の範囲を制限するものではなく、例示することを意図している。
【図１】
2019530332.tif 000003
【図２Ａ】
2019530332.tif 000004
【図２Ｂ】
2019530332.tif 000005
【図２Ｃ】
2019530332.tif 000006
【図２Ｄ】
2019530332.tif 000007
【図２Ｅ】
2019530332.tif 000008
【図３】
2019530332.tif 000009
【図４】
2019530332.tif 000010
【図５】
2019530332.tif 000011
【図６】
2019530332.tif 000012
【図７】
2019530332.tif 000013
【図８】
2019530332.tif 000014
【国際調査報告】
2019530332.tif 000015