(57)【要約】  記憶されているデータにアクセスするための方法およびシステムは、データストレージユニット内に記憶されているデータにアクセスする要求を受信するステップを含む。要求は、記憶されているデータにアクセスすることができるシステムによって1つまたは複数のデータオペレーションが実行されることを必要とする。データ要求に応答して、1つまたは複数のロックが導出され、データオペレーションのうちの1つまたは複数に割り当てられる。ロックの各々は、それぞれのロックの割り当て先となるデータオペレーションの呼び出しを制御する。導出は、一部は(i)要求を発行するユーザから取得されたユーザコンテキストデータおよび(ii)要求の1つまたは複数の属性を含むデータコンテキストに基づく。1つまたは複数のロックの各々は、ロック解除され、1つまたは複数のデータオペレーションは、1つまたは複数のロックがロック解除された後に呼び出される。
2019514113.tif 000002
【特許請求の範囲】
【請求項１】
記憶されているデータにアクセスするための方法であって、
データストレージユニット内に記憶されているデータにアクセスする要求を受信するステップであって、前記要求は前記記憶されているデータにアクセスすることができるシステムによって1つまたは複数のデータオペレーションが実行されることを必要とする、ステップと、
前記データ要求に応答して、1つまたは複数のロックを導出し、前記データオペレーションのうちの1つまたは複数に割り当てるステップであって、前記ロックの各々は前記それぞれのロックの割り当て先となる前記データオペレーションの呼び出しを制御し、
導出する前記ステップは一部は(i)前記要求を発行するユーザから取得されたユーザコンテキストデータおよび(ii)前記要求の1つまたは複数の属性を含むデータコンテキストに基づく、ステップと、
前記1つまたは複数のロックの各々をロック解除するステップと、
前記1つまたは複数のロックがロック解除された後に前記1つまたは複数のデータオペレーションを呼び出すステップとを含む方法。
【請求項２】
前記1つまたは複数のロックは、ロック解除されるために1つまたは複数の計算タスクが実行されることを必要とする仕事ロックを含む、請求項1に記載の方法。
【請求項３】
前記計算タスクの少なくとも1つは、所定の入力値に付加されたときに、所定のターゲット出力値を生成する計算的に不可逆な関数への入力として働くようなノンスを見つけるステップを含む、請求項2に記載の方法。
【請求項４】
前記1つまたは複数のロックは1つまたは複数のセンサロックを含み、前記センサロックのうちの少なくとも1つは前記要求を発行する前記ユーザを認証するための認証ロックであり、前記認証ロックは、前記ユーザが前記要求を発行する際に使用したスマートデバイスから取得された規定された一組の環境データを以前に取得した一組の環境テンプレートデータとマッチングすることによってロック解除される、請求項1に記載の方法。
【請求項５】
前記規定された一組の環境データと前記環境テンプレートデータとの間の前記マッチングは、前記マッチングが指定された信頼水準を超えた場合のみ前記認可ロックをロック解除するのに十分である、請求項4に記載の方法。
【請求項６】
前記規定された一組の環境データは、前記ユーザの行動のパターンを表す、請求項4に記載の方法。
【請求項７】
前記規定された一組の環境データは、前記スマートデバイスからの前記ユーザによる前記要求の前記発行の前の時間期間にわたってローリングベースで取得される、請求項6に記載の方法。
【請求項８】
前記環境テンプレートデータは、規定された時間期間にわたって取得される、請求項6に記載の方法。
【請求項９】
前記1つまたは複数のロックは、エンカンブランスロックを含み、前記エンカンブランスロックはすべてのロックが正しく開かれたことを検証することによってロック解除される、請求項1に記載の方法。
【請求項１０】
前記1つまたは複数のロックは、エンカンブランスロックを含み、前記エンカンブランスロックはすべてのロックが正しく開かれたことを検証することによってロック解除される、請求項2に記載の方法。
【請求項１１】
前記仕事ロックに関連付けられている前記1つまたは複数の計算タスクが実行されたことを検証するステップは、前記仕事ロックに関連付けられている前記1つまたは複数の計算タスクが実行されたことを規定された方式で検証するステップであって、前記規定された方式は少なくとも一部は前記要求を発行する前記ユーザから取得された前記ユーザコンテキストデータおよび/または前記要求の前記1つまたは複数の属性に基づく、ステップを含む、請求項10に記載の方法。
【請求項１２】
前記規定された方式で検証するステップは、指定された数のネットワークノードが前記1つまたは複数の計算タスクが実行されたことを独立して検証することを必要とするステップを含む、請求項11に記載の方法。
【請求項１３】
ロック解除し検証する前記ステップは、コンピューティングノードのネットワークによって実行され、前記1つまたは複数の計算タスクを実行する前記コンピューティングノードは前記仕事ロックに関連付けられている前記1つまたは複数の計算タスクが実行されたことを検証する前記コンピューティングノードと異なる、請求項10に記載の方法。
【請求項１４】
前記1つまたは複数のロックは、前記要求を発行する前記ユーザを認証するための秘密鍵ロックを含む、請求項1に記載の方法。
【請求項１５】
前記仕事ロックの強度は、少なくとも一部は前記データ要求の性質、前記要求に応答する解集合の予想されるサイズ、および前記1つまたは複数のデータオペレーションを実行することで生じる前記記憶されているデータへの変更の大きさに基づく、請求項2に記載の方法。
【請求項１６】
前記エンカンブランスロックの強度は、少なくとも一部はシステムポリシー、前記要求に応答する前記解集合の予想されるサイズ、および前記1つまたは複数のデータオペレーションを実行することで生じる前記記憶されているデータへの変更の大きさに基づく、請求項9に記載の方法。
【請求項１７】
前記センサロックの強度は、少なくとも一部はユーザの行動から導出された規則ならびにネットワーキングおよびスマートデバイスコンテキストに基づき決定される、請求項4に記載の方法。
【請求項１８】
前記秘密鍵ロックの強度は、少なくとも一部は前記要求を発行する前記ユーザの対応する公開鍵に基づく、請求項14に記載の方法。
【請求項１９】
前記要求の前記1つまたは複数の属性は、前記要求の性質、前記要求に応答する解集合の予想されるサイズ、および前記要求を満たすことで生じる前記記憶されているデータへの変更の大きさからなる群から選択される、請求項1に記載の方法。
【請求項２０】
前記ユーザコンテキストデータは、前記要求が発行された前記ユーザのスマートデバイスに組み込まれるか、または関連付けられているセンサから取得されたセンサデータを含む、請求項1に記載の方法。
【請求項２１】
前記データオペレーションは、プリミティブデータオペレーションであり、前記要求を複数のプリミティブデータオペレーションに変換するステップをさらに含む、請求項1に記載の方法。
【請求項２２】
前記データオペレーションのうちの少なくとも2つは、異なるロックを割り当てられる、請求項1に記載の方法。
【請求項２３】
前記1つまたは複数のロックは、決済ロックをロック解除するためにデジタル通貨で手数料を前記ユーザが支払うことを必要とする前記決済ロックを含み、前記決済ロックをロック解除するために支払われる必要があるデジタル通貨の金額は、前記決済ロックの強度が上がるにつれ増加する、請求項1に記載の方法。
【請求項２４】
前記決済ロックの前記強度は、少なくとも一部は前記ユーザコンテキストデータに基づく、請求項23に記載の方法。
【請求項２５】
導出する前記ステップは、一部は前記ユーザおよび/または前記システムの他のユーザの履歴的使用度データにさらに基づく、請求項1に記載の方法。
【請求項２６】
前記それぞれのロックが割り当てられる前記データオペレーションの呼び出しを制御する前記ロックの各々は、前記それぞれのロックがロック解除されない限り、前記それぞれのロックが割り当てられる前記データオペレーションの呼び出しを防ぐ、請求項1に記載の方法。
【請求項２７】
導出する前記ステップは、一部は管理プロビジョニングデータにさらに基づく、請求項1に記載の方法。
【請求項２８】
前記ロックを導出するステップは、複数のロックを導出するステップと、前記ロックがロック解除されるべき順序を指定するステップとを含み、前記ロックの各々をロック解除するステップは、前記導出されたロックによって課される前記順序に従って前記ロックをロック解除するステップを含む、請求項26に記載の方法。
【請求項２９】
ユーザを認証する方法であって、
運用データの時系列を認証されるべき前記ユーザのネットワーク関係のアクティビティから収集するステップであって、前記運用データは1つまたは複数のネットワークおよび1つまたは複数のスマートデバイスとのユーザインタラクションを示す、ステップと、
運用データの前記時系列を、前記ユーザの前記ネットワーク関係のアクティビティの以前に取得されたテンプレートデータの時系列と比較するステップと、
以前に取得されたテンプレートデータの前記時系列が指定された信頼水準の範囲内で運用データの前記時系列とマッチングする場合に前記ユーザが認証済みユーザであると決定するステップとを含む方法。
【請求項３０】
運用データの前記時系列および以前に取得されたテンプレートデータの前記時系列は、前記スマートデバイスのうちの1つまたは複数に組み込まれているか、または関連付けられている1つまたは複数のセンサから取得された環境データを含む、請求項29に記載の方法。
【請求項３１】
前記ユーザの前記ネットワーク関係のアクティビティは、前記ユーザのソーシャルネットワーキングアクティビティを含む、請求項29に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、それらの内容が参照により本明細書に組み込まれている、2016年4月12日に出願した米国仮出願第62/321,302号および2016年6月27日に出願した米国仮出願第62/355,290号の利益を主張するものである。
【背景技術】
【０００２】
記憶されているデータが不正アクセスに対して脆弱であり、悪意のある変更および操作、すなわち、攻撃に曝されやすいという問題は、初期の頃のコンピューティング技術以降、すなわち、60年以上にわたって知られている。数週間から数ヶ月間、そのような攻撃のニュースを聞かずに過ごすことはほとんどない。政府、企業、および銀行は、すべて、そのような攻撃の結果として損失を被ったと報告している。これは、多くのコンピュータエンジニア、セキュリティ専門家、およびビジネスリーダーたちを心配させてきた主要な問題であった。今まで、そのような攻撃のすべてを回避するための完全に安全なシステムおよび方法は考案されていない。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】E. F. Codd「A relational model of data for large shared data banks」、Comm. of the ACM、第13巻、第6号、1970年6月
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書で開示されている主題の一態様により、記憶されているデータにアクセスするための方法およびシステムが提供される。この方法によれば、データストレージユニットに記憶されているデータにアクセスための要求が受信される。要求は、記憶されているデータにアクセスすることができるシステムによって1つまたは複数のデータオペレーションが実行されることを必要とする。データ要求に応答して、1つまたは複数のロックが導出され、データオペレーションのうちの1つまたは複数に割り当てられる。ロックの各々は、それぞれのロックの割り当て先となるデータオペレーションの呼び出しを制御する。導出は、一部は(i)要求を発行するユーザから取得されたユーザコンテキストデータおよび(ii)要求の1つまたは複数の属性を含むデータコンテキストに基づく。1つまたは複数のロックの各々は、ロック解除され、1つまたは複数のデータオペレーションは、1つまたは複数のロックがロック解除された後に呼び出される。
【０００５】
本明細書で開示されている主題の別の態様により、ユーザを認証する方法が提供される。この方法によれば、運用データの時系列は、認証されるべきユーザのネットワーク関係のアクティビティから収集される。運用データは、1つまたは複数のネットワークおよび1つまたは複数のスマートデバイスとのユーザインタラクションを示す。運用データの時系列は、ユーザのネットワーク関係のアクティビティの以前に取得されたテンプレートデータの時系列と比較される。ユーザは、以前に取得されたテンプレートデータの時系列が指定された信頼水準の範囲内で運用データの時系列とマッチングする場合に認証済みユーザであると決定される。
【図面の簡単な説明】
【０００６】
【図１Ａ】一連のロックを作成することによってオペレーションRの呼び出しを制御するコンピューティングエンティティを示す図である。
【図１Ｂ】ロックを開くための方法の一例を示す図である。
【図１Ｃ】図1Bの方法で採用されている検証ステップの一例を示す図である。
【図２Ａ】記憶されているデータなどのロックされたオブジェクトにアクセスするための方法の一例を示すフローチャートである。
【図２Ｂ】図2Aの方法を実装するために使用され得るピアツーピアネットワークの一例の論理概略図である。
【図２Ｃ】図2Aの方法を実装するために使用される図2Bに示されているネットワークの機能図である。
【図３Ａ】リレーショナルデータベースシステムの一次サブシステムの例示的なブロック図である。
【図３Ｂ】シャードとしてのデータの例示的な配置構成を示す図である。
【図３Ｃ】リレーショナルデータベースの一例を示す図である。
【図４Ａ】秘密鍵でロックされているロック済みオブジェクトRを示す図である。
【図４Ｂ】秘密鍵でロックされているロック済みオブジェクトRを示す図である。
【図４Ｃ】秘密鍵でロックされているロック済みオブジェクトRを示す図である。
【図５】ユーザを認証するために使用され得るテンプレートデータを生成するために使用され得る、1週間にわたって平均をとられたユーザの環境データの要約を示す図である。
【図６】マッチングの程度に基づきユーザを認証するためにテンプレートデータの1行が運用データの1行と比較されるユーザに対する例示的なアイデンティティテーブルを示す図である。
【図７】ロックをロック解除するために必要な計算仕事の量を割り当てるためのユーザ要求の重要度を決定するために使用され得るデータ値のテーブルである。
【図８】ユーザ要求を処理するために図2Cのネットワークによって実行され得る一連のステップを示す図である。
【図９】クエリを処理するためのプランを導出するために従来のデータベースクエリ処理システムによって実行され得る一連のステップを示す図である。
【図１０】様々なサイズの出力を生成するデータ取り出しオペレーションを実行するために必要な計算仕事の量を示すテーブルの一例を示す図である。
【図１１】データレコードに記憶されている数値に対してトランザクションが引き起こす変化率に基づきトランザクションを実行するために必要な計算仕事の量を示すテーブルの一例を示す図である。
【図１２】要求されたトランザクションが前のそのような要求とそれだけ異なっている範囲の尺度に基づきトランザクションを実行するために必要な計算仕事の量を示すテーブルの一例を示す図である。
【図１３】「who is customer John's banker」を尋ねるユーザ要求を処理するための方法の一例を示す図である。
【図１４】図2Cに示されているネットワークの実装の一例を示す図である。
【発明を実施するための形態】
【０００７】
一態様において、本発明は、記憶されているデータの脆弱性問題を解決する。我々は、認可されたまたは不正なユーザからの悪意ある変更およびアクセスが成功することを計算上実行不可能にすることによってデータ脆弱性を低減するシステムおよび方法を提案する。より簡単に言うと、本発明は、最初から攻撃を完全に排除しようとするものではない。そうではなくむしろ、攻撃が成功することが全くありそうにないようにするのである。さらに、いくつかのパラメータの思慮深い選択によって攻撃が成功する確率が非常に小さくされるものとしてよく、前記選択はシステム管理者の権限内にある。そのような選択肢の対価は、システム応答時間の短縮またはより大きな計算能力の使用の低減である。
【０００８】
「計算上実行不可能」という語は、データへのアクセスを得るために、認可されたまたは不正なエンティティがいくつかの計算タスクを実行し、いくつかのテストに合格する必要があることを意味する。これらのテストおよびタスクは、解を正しく推測する確率が天文学的に小さいという意味でエントロピーに関する熱力学の法則が間違っていない限り偽造することも正しく推測することもできない。したがって、エンティティは、タスクを実際に実行し、テストに合格せざるを得ない。
【０００９】
本発明は、記憶されているデータまたは着信クエリおよびトランザクションを管理するソフトウェアプログラムを理解することを試みない。したがって、これはプログラムの理解に関連する通常のよく知られている問題を回避する。むしろ、これは熱力学的なまたは計算の仕事の概念に依存する。データへのアクセスを得るには、関連付けられている計算仕事が終了される必要がある。仕事の概念は、既定で固定または設定されない。むしろ、ユーザの行動、ユーザアイデンティティ、ユーザの過去のアクセス歴、ユーザによって要求されたデータの変化の大きさ、ユーザによってアクセスされたデータの量などによってパラメータ化される。各データアクセスオペレーションは、ユーザが要求を行うことと、アクセスを得るために実行される必要がある仕事のパラメータ量を決定するためのユーザのコンテキストとともに分析される。条件または制限の各セットは、アクセスを得るか、または記憶されたデータに変更を加えるために取り除かれる必要がある障害としてみなされ得る。
【００１０】
さらに、複数のコンピューティングエンティティは、要求されたデータアクセスに関連付けられている熱力学的な(すなわち、計算)仕事を実行する際に競合し、他のエンティティの前に終了するエンティティ、すなわち、最初に終了するエンティティが、データにアクセスする権利を取得する。したがって、仕事を達成するためにエンティティによって使用されるハードウェアは、いくつかの最低速度で動作できる必要があるか、または他の何らかのハードウェアエンティティが最初に終了する。この意味で、本発明は、Bitcoinネットワークなどの暗号通貨ネットワークにおいて使用されるものと似た技術を使用する。本発明は、部分的に、必要なハードウェア速度が、基幹ハードウェアの最低能力が2017年頃に利用可能になると予想される10Nmチップ製造技術などの、2014年頃、またはそれ以降になって初めて世界に知られるようになった、現代的製造技術、たとえば、14Nmチップ製造技術を必要とするような速度であることに依存する。したがって、何らかの悪意あるユーザがガレージ内に座って旧式のパーソナルコンピュータを使用して計算タスクを解くことによってシステムのハードウェアエンティティの「ふりをする」ことが可能であろうという考え方は、きわめてありそうにない。
【００１１】
一般的説明
記憶されているデータのセーフガードを行う問題を解決するために本発明によって取られるアプローチは、ソフトウェアロックの概念を用いることで説明され得るソフトウェアオペレーションの呼び出しを制御することに一部は基づく。ソフトウェアロックは、特定の値とともにいくつかの数の入力を取り、「真/偽」の解を返すソフトウェア関数である。ロックに対する入力値が未指定のままであるか、不正である限り、それはロックされていると考えられる。要求された入力値が与えられ、ロックが「真」に評価された場合、これはロック解除されていると言われる。入力値が指定され、ロックが「偽」に評価される、すなわち、入力値がロックの指定に関して不正である場合、この関数はロックされたままであるとみなされる。
【００１２】
次のように説明されている状況を考察する。
【００１３】
ロックLは、必要な入力値X、Yなどを有する関数Fを含む。我々は、そのような状況を次のように表し得る。
ロックL: [関数F(X,Y,...)|オペレーションR]
【００１４】
ロックLは、関数「F」が「真」に評価されるように入力値X、Y、...が関数に与えられるまでオペレーションRを「ガード」する。「ガード」という語は、ロックがオペレーション「R」の呼び出しを制御することを指示する。(より現代的な使い方では、呼び出しの同義語として「起動」という語が使用され、たとえば、アプリケーションを起動する、というように使う。)
【００１５】
オペレーションRの呼び出しを制御することを望んでいる、コンピューティングエンティティは、一連のロック100〜400を作成する(図1A)。各ロックは、次のように様々なパラメータに基づく。
・  秘密鍵ロック100:ユーザの秘密/公開鍵に基づく。
・  センサロック200:導出されたユーザの行動規則から、次いで、ユーザのスマートデバイス、スマートまたはセンサ化環境、およびネットワークに関連付けられているセンサデータから、取得される。
・  仕事ロック300:システムの現在のユーザおよび他のユーザの過去のアクセス歴、要求の性質、要求されているデータの量、データ要求の性質を含むユーザコンテキストから取得される。
・  エンカンブランスロック(Encumbrance Lock)400:前のデータ要求ならびに企業の規定およびポリシーと比較してオペレーション500から結果として得られるデータへの変化の大きさを含むデータコンテキストから取得される。
【００１６】
ロックは、受信されたデータ要求に応答してシステムによって導出され、この導出はロックが開かれる特定の順序、すなわち、実行の順序に留意することは重要である(および一瞬にしてより明らかになる)。また、ロックを開くために必要なロックの数および強度、すなわち、計算作業量は、着信要求、ユーザ、および記憶されているデータの状態の様々なパラメータとともに変化することに留意することも重要である。異なる要求は、異なるロック、ロックの実行の異なる順序、およびロックの異なる強度に関連付けられる。同じユーザからの第1の要求の後に受信された第2の要求であっても、記憶されているデータは暫定期間に変化してしまっている可能性があるので、ロックの異なる数、ロックの強度などに関連付けられ得る。
【００１７】
いくつかの実施形態において、センサロックは、ユーザのスマートデバイスから導出されたデータ、ユーザのネットワーク接続、一方または他方のネットワークにアクセスするか、または一方のデバイス/ネットワークから他方のデバイス/ネットワークに遷移している間のユーザの行動、ユーザから他のスマートデバイス、たとえば、ユーザの犬のスマート首輪までの近接度などに基づく。次いで、そのようなデータは、ユーザが適切に認証されるようにセンサロックの導出において使用され得る。仕事ロックは、着信要求の性質およびデータの現在の状態に基づくものとしてよい。エンカンブランスロックは、1人または複数のユーザに関連付けられている認可に対するより厳しい、またはあまり厳しくない要求条件を課すものとしてよい企業規則および規定に基づき得る。
【００１８】
次に、我々は、ロックおよびロック解除の概念に関してより詳しく述べる。データに対する要求は、オペレーション「R」の呼び出しを必要とするシステムによって受信されると仮定する。「R」の呼び出しを保護するために、システムは、次に、オペレーション「R」をガードする関数「F」を有するロックLを導出する。「F」は、2つの入力値を必要とし、その合計が整数7に等しい場合に「真」を返す。2つの入力値の和が7に等しくなければならないという制約条件は、例示することのみを目的として提示されていることに留意されたい。より一般的に、入力値は、任意の制約条件の影響を受けやすいか、または制約条件の影響を全く受けないことすらあり得る。
【００１９】
したがって、ロック「L」は、表記?Aおよび?Bが、値が指定された関数への入力として与えられる必要がある変数を表すことを意味されている場合に次のように書かれ得る。
L: [?A:?B:F(A,B){if A + B = 7 then "真" else "偽"}|オペレーションR]
【００２０】
図1Bは、ロックを開くために従う方法を示している。ステップ100において、データ要求は、その後、ロック「L」を前記受信された要求に関連付けることを決定する「System」という名前のエンティティによってエンティティ「Input Device」から受信される。我々は、ロック「L」を200として視覚的に提示し、これは次のように理解され得る。「シンボル「?A」および「?B」は、値を供給されることを必要とする入力変数であり、「PLUS」、「EQUAL」、および「7」は、それぞれシステム提供関数および値である。」
【００２１】
ステップ300において、Input Deviceは、それぞれ、「?A」および「?B」(それぞれ)の代わりになる値3および4をオブジェクト400に提供する。ステップ500において、検証ステップが実行され(後で詳述)、その結果、ロック「L」が正常に開かれる(600)。したがって、ロックはすでに開かれているので、そこでオペレーション「R」が呼び出され得る。
【００２２】
図1Cは、上で指示されている検証ステップの一例の詳細を示している。オブジェクト50を検証するために、この例では、従来技術でよく知られているスタックベースマシンを使用する。図1Cは、スタック100から600までの様々な状態を示している。スタックベースマシンは、次のように作動する。
【００２３】
実行されるべきオブジェクト、すなわち、マシンへの入力は50として示され、ポインタ60は矢印70で指示されているように一度に1正方形分だけ左から右へ移動する。矢印60が
・  値を指している場合、マシンは値をスタックの一番上に移動し、1ステップ右に移動する。
・  関数を指している場合、マシンはその関数をスタックの一番上の値に適用する(プロセス内の値を消費する)、すなわち、スタックを「ポップ」し、結果をスタックの一番上に置く。
・  入力の終わりに到達し、スタックの一番上の値が「TRUE」である場合、マシンは真である検証を有すると仮定される。さもなければ検証は失敗する。
【００２４】
入力が図1Cにおいて50として示されていると仮定し、マシンは次のように進行する。
【００２５】
最初に、スタックは空であり(100)、ポインタ60は値「3」を指している。マシンは、値「3」をスタック上に置き(200)、1ステップ右に移動する、すなわち、現在、値「4」を指している。次に、マシンは、値「4」をスタックに積み、右に移動する(300)。
【００２６】
マシンは、次に、関数「PLUS」を見て、それをスタック上の一番上の2つの値に適用し、プロセス内の2つの値を消費する。結果は、「7」であり、これはマシンによってスタックの一番上に置かれる(400)。マシンは、そのポインタを右に移動する。
【００２７】
次に、マシンは、値「7」を見て、これをスタックに積み(700)、ポインタを右に移動する。次に、マシンは、関数「EQUAL」を見て、それをスタック上の一番上の2つの値に適用し、スタック上の2つの一番上の値を消費し、「TRUE」をスタックの一番上に置く。
【００２８】
マシンが入力の終わりに到達し、スタックの一番上の値が「TRUE」であるので、マシンはオブジェクトを検証することに成功している。
【００２９】
スタックベースマシンはロックが開かれる実行の順序を課すことに留意することが重要である。したがって、スタックマシンが図1Aに示されているロック済みオブジェクトに適用された場合、ロックの実行の順序は「左から右へ」となる。一般に、当業者は、スタックベースマシンが「逆ポーランド記法」または「後置記法」の順序として説明される順序を課し、たとえば、35+7*はよく知られている中置記法((3+5)*7)に対する後置記法であることに留意する。当業者は、また、スタックベースマシンの選択は制限的でないことにも留意する。抽象マシンの他の多くの形態が利用可能であり、また使用されている可能性もあり、その異なるマシンは、ロックに対して実行の異なる順序を課すものとしてよい。本発明の説明において、スタックベースマシンは、教育上の理由のみで使用されており、本発明への制限として使用されず、観察してわかるとおり、ロックに対して左から右への実行順序を課す。
【００３０】
我々は、次のように、記憶されているデータのセーフガードを行う問題を解決するための我々の一般的アプローチを説明し得る。着信要求が、1つまたは複数のデータオペレーションの使用を必要とする場合、我々は、特定の仕方でいくつかのデータオペレーションの呼び出しを制御するように1つまたは複数のロック済みオブジェクトを導出する。
【００３１】
さらに、我々は、マルチノードネットワーク600上で上で作成されたロック済みオブジェクトを実行する(図1A)。我々は、マルチノードネットワーク600上のロック済みオブジェクトの実行の方法を後でより詳しく説明する。一般的に、マルチノードネットワークは、分散された一組のコンピュータを備え、その各々はロック済みオブジェクトのコピーを受け取る。各コンピュータは、必要な順序でロック済みオブジェクトのロックを開くことを最初に試みることによってそれが受け取ったロック済みオブジェクトを実行する。すべてのロックを開くことに成功した最初のコンピュータが、ガードされているオペレーションへのアクセスを得る、すなわち、ガードされているオペレーションを呼び出すことになる。
【００３２】
ロックは計算作業を必要とするので、一般に、異なるリソース、たとえば、CPUパワーを有するコンピュータがロックを開くのに要する時間量は異なる。したがって、マルチノードネットワーク内の1つまたは複数のコンピュータが最初に終了する。これからわかるように、そのようなマルチノードネットワークは、セキュリティがより高いコンピューティング環境を作成する。
【００３３】
鍵認証
本発明のシステムおよび方法の主要コンポーネントを説明する前に、我々は、次のプレゼンテーションにおいて有益である特定の従来技術を説明する。
【００３４】
従来技術は、認証と認可とを区別する。認証は、個人のアイデンティティを確認するプロセスである。認可は、権利および許可をそのアイデンティティに関連付けることである。
【００３５】
コンピュータシステムおよびデータへのアクセスを認可するための「鍵」を生成するいくつかの種類の暗号関数の使用は、従来技術において知られている。しかしながら、公開暗号ベースのシステムでは、ユーザのアイデンティティ、すなわち、認証問題は未解決のままである。
【００３６】
問題のこの態様は、公開鍵認証問題として知られている。一般的に、公開鍵は広く知られているが、公開鍵に対応する人のアイデンティティを確認するための満足の行く知られている解決方法はない。すなわち、公開鍵と人のアイデンティティとの間の関連付けは未検証であり、したがって悪意のある使用の影響を受けやすい。
【００３７】
ネットワーキング環境
ノードは、所望の関数グループをまとめて実行するように構成されている1つまたは複数のコンピュータの集合体である。ネットワークは、通常、プロトコルとも呼ばれる、メッセージ伝搬機構を定義し、これにより、メッセージ/情報は、ネットワークのノード間で伝達される。ピアツーピアネットワークは、1つのノードがそのピアと呼ばれる1つまたは複数の他のノードに接続し、次いで、それらのピアに接続し、というように相互接続されている1つまたは複数のノードのネットワークである。したがって、たとえば、ネットワーク全体にメッセージを伝搬させるために、ノードはメッセージをそのピアに送信し、次いでそれらのピアはそれらのピアに送信し、というように続くものとしてよい。ピアツーピアネットワークは、ブロードキャストスタイルのプロトコルまたは他の形態のプロトコルを使用してノード間にメッセージを伝搬させ得る。本発明において、我々は、教育上の理由によりブロードキャストスタイルのプロトコルを使用すること、またここでは本発明を制限しないことを仮定する。たとえば、我々は、ネットワークが完全に接続されていると仮定することによって伝搬プロトコルの特に単純な形態を考察するものとしてよい。「N」個のコードの完全に接続されたネットワークの1つの含意は、任意のノードが「N-1」個のピアを有することである。代替的に、完全に接続されたネットワークは、すべての経路が単位長さを有するようなネットワークである、すなわち、ネットワークはワンホップネットワークである。我々は、伝搬プロトコルが、ネットワークのすべてのノードにわたってメッセージの相互の整合性および完全な複製を維持するようなプロトコルであることを必要とする。
【００３８】
説明されているようなネットワークは、1つまたは複数のサブネットワークに論理的にパーティション分割されてよく、各サブネットワークは1つまたは複数のノードを含む。そのようなパーティション分割は、地理的分布の理由、またはネットワークのいくつかのノードに合わせていくつかの関数をローカライズするという理由などにより実行され得る。後者の場合、サブネットワーク内のすべてノードは、同じ一組の関数を実行する必要があり得る、すなわち、サブネットワークは同質であると言われる。
【００３９】
計算仕事およびそのプルーフ
従来技術では、計算不可逆性に基づく関数のクラス、すなわち、計算作業が比較的少ない所与の入力に対する出力を生成する関数を説明しているが、所与の出力に対する入力は、たとえば、天文学的に大きい可能性空間にわたってランダムな推測を用いずには、容易に計算され得ない。そのような関数の例は、SHA128、SHA256、いわゆるラビン関数、離散対数関数などである。たとえば、関数SHA256は、入力として、任意の情報の列(テキスト、数、文字など)を取り、出力として--それほどの計算作業なしで--256ビットの文字列(または範囲[0,1,2,...,9,A,B,C,D,E,F]内の64個の16進数文字)を生成する。
【００４０】
しかしながら、SHA256に所与の出力を生成させる入力を見つけることは、一般に、膨大な量の計算を必要とし、そのような入力を見つけるための効率的な方法は知られていない。
【００４１】
出力として2進数列を生成するSHA256への入力を考える。出力内の第1のビットが「0」である確率は50%であり、続くビット位置に対して幾何学的に減少する。そこで、次の問題を考える。我々は、入力を与えられる、すなわち「hello」である。我々は、「nonce」という文字列を「hello」に「付加」して、入力としてSHA256に供給されたときに「hello + nonce」が、「ターゲット」と呼ばれる所与の数より小さい数を生成するようにすると想定される。たとえば、ターゲットは、5個の先行ゼロを有する数とすることが可能である。次いで、我々は、SHA256を繰り返し実行することが可能であり、毎回出力がターゲットより小さくなるまで「nonce」を「推測」する。こうして、我々は、入力「hello1」、「hello2」などをSHA256に、それがターゲットより小さい文字列を出力として生成するまで供給することを開始し得る。
【００４２】
SHA256を使用してある量の仕事を行うには多数の推測、すなわち、大量の計算仕事を必要とし得るが、必要な仕事が行われたことを検証することは比較的容易である。入力「X」、ノンス「Y」、およびターゲット「Z」が与えられた場合、我々は、単に、YをXに付加し、それを入力としてSHA256に供給し、出力を所与のターゲット「Z」と比較するだけでよい。
【００４３】
具体的には、プルーフオブワークに基づくロック済みオブジェクトは、
[?nonce:?input:?target:verifyWork|オペレーションR]
としてセットアップされ、表されるものとしてよく、「verifyWork」は、「nonce」、「input」、および「target」に対して提供される値が上で説明されているSHA-256に対する条件を満たす場合に、前の方で説明されているスタックマシン上で実行されたときに「真」を返すSHA-256を使用するシステム提供関数であると仮定される。計算仕事を検証する上記のプロセスは、プルーフオブワークと呼ばれる。プルーフオブワークは、我々に入力、ノンス、およびターゲット数が知らされることを必要とすることに留意されたい。
【００４４】
ログ
ノードへの要求は、前記ノードの論理に基づき1つまたは複数のアクションを実行する、前記ノードへのコマンドである。ログは、ネットワークのノードに関連付けられているメモリの予約された量である。各ノードはそれ自身のログを有する。
【００４５】
ログは、ノードによって受信された要求を記録する。特に、これは、要求を、(1)満たされている要求および(2)依然として満たされるべきである要求の、2つのカテゴリにパーティション分割する。前の方で述べたように、ネットワークの伝搬プロトコルは、ネットワークのすべてのノードにわたってログの相互の整合性および完全な複製を維持することを仮定される。
【００４６】
ノードは、新しい要求を受信した後に、それにユーザ識別番号およびそれが受信された「ネットワーク時間」を指示するタイムスタンプを割り当てる。次いで、前記ノードは、新規に受信された要求をネットワーク内のピアに伝搬させるものとしてよい。ノードは、要求を受信した後に、それをログに、満たされていない要求として記録し得る。新しい要求がピアツーピアネットワーク内の複数のノードに到来し得るので、ノードは、重複する満たされていない要求を受信し得る。
【００４７】
特に、任意の所与の時点において、ノードのログは、満たされた要求のリスト(たとえば、受信時タイムスタンプによって編成された)および満たされていない要求のリストを含み得る。後者のリストは、一実施形態において、先入れ先出し(FIFO)リストとして編成され得る。
【００４８】
ノードの主タスクは、FIFOリスト上の満たされていない要求を満たすことである。したがって、ノードは、FIFOリストの先頭からアイテムを選択し、それを満たし、もし成功したなら(後で説明するように)、その成功をネットワークのピアノードにアナウンスする。アナウンスは、十分に満たされた要求の詳細を含む。そのようなアナウンスを受信したノードは、それをしかるべく記録する、すなわち、受信ノードはその満たされたリストおよび満たされていないリストを新しい受信されたアナウンスと整合するように修正する。
【００４９】
初期化時のネットワークを考える、すなわち、すべてのノードのログは空のFIFOリストを有する(満たされたリストは、空またはそうでないと仮定され得る)。次に、新しい要求が、それをログに記録し、それにユーザ識別番号および受信時タイムスタンプを割り当て、それをすべてのピアに伝搬するノードによって受信される。
【００５０】
すべてのノードが伝搬された要求を受信し、それをFIFOリスト内に記録する。その主タスクにより、上で説明されているように、ノードはFIFOリスト上の第1のアイテム、この場合、新規に到来した要求を選択し、それを満足させようと試みる。ノードが要求を満たすことに成功した場合、成功したことをネットワーク内の他のすべてのノードにアナウンスする。
【００５１】
要求を満たすことを試みているノード「N」が他の何らかのノードが要求を満たすことに成功しているとのアナウンスを受信すると仮定する。次いで、ノード「N」は、アナウンスを受け入れる必要がある、すなわち、ノード「N」は、受信された情報を有効であると検証し(後で説明するように)、検証が成功した場合、ノード「N」は、要求をFIFOリストから満たされた要求のリストに移動する。次いで、FIFOリスト上の(次の)第1のアイテムを満たすことを試みることに進んでよい。
【００５２】
次に、我々は、より多くの情報を本発明の一般的説明に追加するものとしてよい。データ要求、すなわち、特定のデータアイテムにアクセスするユーザから受信された要求が、ネットワークの1つまたは複数のノードによって受信される。受信された要求は、1つまたは複数のロック済みオブジェクトを導出するために使用され、各ロック済みオブジェクトは可変強度の1つまたは複数のロックを有し、いくつかのデータオペレーションをガードする。ロック済みオブジェクトは、ネットワークのノードのFIFOリストに追加される。しばらくしてから、ネットワークのすべてのノードがロック済みオブジェクトを満たす(ロック解除する)ことを試みることに携わる。ロック済みオブジェクトをロック解除する第1のノードは、ガードされたデータオペレーションを呼び出すことになる。
【００５３】
したがって、ノードが着信データ要求を満たすことに成功するかどうかは、着信要求に伴う1つまたは複数のデータオペレーションをガードするすべてのロックをロック解除するノードの能力に依存することがわかる。
【００５４】
例示的な実施形態
本発明の例示的な実施形態によって要求が処理される全体的および一般的な方法は、図2Aに示されている。
【００５５】
ステップ100(初期化ステップ)において、ユーザのアイデンティティを認証するシステムの準備をするため様々な種類のセンサデータが収集される。このデータは、センサロックを導出するために使用される。
【００５６】
ステップ200において、伴うデータオペレーションを決定するために着信要求が分析される。伴うデータオペレーションをガードするためにロックが導出される。
【００５７】
ステップ300において、次いで、すべての導出されたロック済みオブジェクトのすべてのロックを開く試みがなされる。ステップ400において、すべてのロック済みオブジェクトについてすべてのロックを開くことに成功したかどうかの決定がなされる。ステップ500において、すべてのロック済みオブジェクトのロック解除が成功すると結果として、1つまたは複数のガードされたデータオペレーションが呼び出される。着信データ要求について任意のロック済みオブジェクトを開くことに失敗した場合、すべての導出されたオブジェクトおよびデータ要求が破棄される。
【００５８】
ステップ600において、様々なデータオペレーションを呼び出した結果は、着信要求に対する応答として組み立てられる。
【００５９】
図2Bは、図2Aのプロセスを実装するために使用され得るピアツーピアネットワークの論理概略図を示している。
【００６０】
ネットワーク接続を有するコンピュータ(またはプロセッサを含むデバイス)は、本明細書においてスマートデバイスと称される。それに加えて、これもまたセンサ(ハードウェアもしくはソフトウェア)を含むか、またはスマートデバイスまたはスマートデバイスのユーザの状態、環境、または条件に関係するデータを生成する他のセンサデバイス(センサデバイスの近くにある)の範囲内にあり得る。図2Bにおいて、300は、センサデバイスを含むか、またはセンサデバイスの近くにあるものとしてよい様々な種類のスマートデバイスから発せられるセンサデータを収集することをタスクとする1つまたは複数のコンピュータを示している。そのようにして収集されたデータは、1つまたは複数のコンピュータ500に提供される。
【００６１】
コンピュータ500によって実行される1つの関数は、デバイス300によって収集されたセンサデータをシステムの他のコンポーネントによって必要とされるフォーマットに変換することである。別の関数は、ユーザからの着信要求を受け入れ、着信要求に伴うプリミティブデータオペレーションのリストを決定する関数である。コンピュータ500のさらに別の関数は、決定されたプリミティブデータオペレーションに対応する1つまたは複数のロック済みオブジェクトを導出し、前者をネットワーク2000内に注入する関数である。
【００６２】
ネットワーク2000は、それぞれ600および700と番号が振られた2つのサブネットワークからなる。601、602、および603は、サブネットワーク600のノードである。701および702は、サブネットワーク700のノードである。ノード601、602、603、701、および702のうちのどれかが、類似のコンピュータまたはコンピュータの配置構成および数を含むという仮定はなされない。少数のノードのみがサブネットワーク600および700の各々を含むものとして示される。実際、サブネットワークは、図示されているノードの個数より多い、または少ない数のノードを含み得る。サブネットワーク600内のすべてのノードは、同じ論理関数を実行する。しかしながら、これらは、物理的コンピュータの構造および数、メモリの量などの点で異なり得る。同様に、サブネットワーク700内のすべてのノードは、同じ論理関数を実行する。しかしながら、サブネットワーク600のノードによって実行される論理関数は、サブネットワーク700のノードによって実行される論理関数と異なる。すなわち、2つのサブネットワーク600および700は、異なる関数を実行し、それらは、個別に同質なサブネットワークである。
【００６３】
図2Bの矢印は、制御およびデータのフローを表す。0とマークされた矢印は、センサデータが収集され、後で使用できるように用意される初期化ステップを伝達することを意味する。矢印1は、新しいデータ要求の到来を指示する。受信されたデータ要求に対応する1つまたは複数のロック済みオブジェクトが導出され、矢印3を介して制御がサブネットワーク700に流れるところからサブネットワーク600内に注入される(矢印2)。次に、サブネットワーク700によってロック解除されているデータオペレーションは、記憶されているデータレコードに対して呼び出され得る(矢印4)。ステップ5において、ガードされたオペレーションの呼び出しからのデータは、着信要求への応答に組み立てられるところから500を含むコンピュータに送信される。
【００６４】
図2Cは、図2B(および図2Aの方法)の機能の内訳を示している。400は、センサデバイスを含むか、またはユーザのスマートデバイスに近接近100している1つまたは複数のスマートデバイス300からセンサデータを受信することをタスクとする1つまたは複数のコンピュータを備える。モジュール400は、着信センサデータを総計し、それを正規化し、それをシステムの他のコンポーネントによる処理に備えるものとしてよい。
【００６５】
スマートデバイスは、いくつかの場合において、スマートデバイスの状態、環境または条件、位置などに関係するデータを収集し、伝送する1つもしくは複数のハードウェアまたはソフトウェアセンサを組み込むか、または他の何らかの形で関連付けられ得る。スマートデバイスは、それ自体スマートデバイスである(すなわち、プロセッサおよびネットワーク接続を含む)他のタイプのセンサからそのようなデータを受信するものとしてもよい。スマートセンサデバイスの例は、AppleのiBeaconなどのビーコン、スマートウォッチ、スマートサーモスタット、冷蔵庫、GPS測位技術を含むデバイス、屋内GPSシステム、万歩計（登録商標）などのユーザが身に着ける医用センサデバイス、血圧監視デバイス、パルス酸素濃度計、侵襲的技術によって現在実行されているテストを実行し得るデバイス、フィットネスブレスレットなどを含む。1つまたは複数のセンサを含むスマートフォン、タブレット、スマートグラス、スマートウォッチ、ウェアラブルコンピュータなどのモバイルデバイスは、本発明の範囲内にある例示的なスマートデバイスとも考えられる。
【００６６】
初期化ステップにおいて、様々なセンサデータが400によって受信され、収集され、表にされ、前記コンポーネントによって指示され、また必要とされるように接続50を介して他のコンポーネントに提供される。
【００６７】
ユーザ要求150は、1つまたは複数のコンピュータによって受信され(500)、場合によっては、応答200を介してそれに500が応答する。図2Cの変換エンジン(TE)500は、メイン関数が着信要求に伴うデータオペレーションをガードするためにロック済みオブジェクトを導出する関数である1つまたは複数のコンピュータを表す。
【００６８】
図2Cにおいて、実行エンジン(EE)600は、メイン関数(後でより詳しく説明されるような)がエンカンブランスロックを除き、500から注入されたロック済みオブジェクトのすべてのロックをロック解除する関数である1つまたは複数のノードのサブネットワークである。
【００６９】
図2Cにおいて、検証エンジン(VE)700は、メイン関数(後でより詳しく説明されるような)がロック済みオブジェクトのエンカンブランスロックをロック解除する関数である1つまたは複数のノードのサブネットワークである。
【００７０】
図2Cの800は、いくつかのデータオペレーションを呼び出すことによってアクセスされ得る記憶されている一組のデータレコードを示す。ロック済みオブジェクトのすべてのロックがロック解除された後、そのロックでガードされているオペレーションは、記憶されているデータレコードに対して呼び出され得る。
【００７１】
図2Cは600および700を、いくつかの関数を実行するそれ自身の一組のノードを各々が有する異なるサブネットワークとして示す。前の方で述べたように、サブネットワーク600のノードおよびサブネットワーク700のノードによって実行される関数は異なる。サブネットワーク600および700の各々は個別には同質であるが、それらの組合せは非同質である。
【００７２】
「伝搬」とマークされている矢印は、メッセージがサブネットワーク600内に伝搬され、600からサブネットワーク700に伝搬されることを示すことを意味する。「内部伝搬」とマークされている円形矢印は、メッセージが指示されているサブネットワーク内で伝搬されることを伝えることを意味する。「アクセス」とマークされている矢印は、サブネットワーク700内のノードが、800におけるリソースにアクセスするのに必要な認可を有することを指示する。
【００７３】
図2Cの800は、たとえば、リレーショナルデータベース技術で説明されるような、データレコードを表す。図2Cの1000は、500、600、および700にアクセス可能なデータテーブルの集合であり、後でより詳しく説明される様々なプロビジョニングデータおよび二次索引を含む。
【００７４】
データのリレーショナルモデル
1970年に、E. F. Coddは、いわゆるリレーショナルデータベースシステムの基礎を形成するデータのリレーショナルモデルを発明した。(「大規模共有データバンク」という用語は、歴史的な用語であり、E. F. Coddによって影響力の大きい論文E. F. Codd「A relational model of data for large shared data banks」、Comm. of the ACM、第13巻、第6号、1970年6月で使用された。)本発明において、我々は、データのリレーショナルモデルを例示的なデータストレージシステムとして使用する。しかしながら、本発明の方法は、すべてのデータ管理システムに一般的に適用可能である。
【００７５】
図3Aは、リレーショナルデータベースシステムの一次サブシステムの例示的なブロック図を示している。クライアント1(100)は、リレーショナルデータベースシステムにアクセスするように構成されているコンピュータプログラムである。これは、デスクトップ、モバイルコンピュータ、タブレット、ラップトップ、スマートデバイスなどの様々なコンピュータ上で実行し得る。前記コンピュータプログラムは、他のデバイス内に収容されている任意の数および任意の種類のプロセッサ上で実行し得る。前記コンピュータプログラムは、テキスト、オーディオ、ビデオ、またはマシン可読文字列もしくはそれらの組合せの形態で入力を受信し得る。これは、上で指定されたフォーマットのうちの1つまたは組合せの出力を生成し得る。サブシステム200は、ユーザ、すなわちクライアントデバイスを認証し、その後サブシステム300に受け渡されそこで処理される着信クエリおよびトランザクションを受け入れる。サブシステム400は、一般的に、記憶されているデータを取り出す、編集する、変更する、などを行い得る1つまたは複数のデータアクセス方法からなる。サブシステム400は、一般的に、ディスクドライブ、磁気テープなどの周辺ストレージシステムを制御し、管理することも行う。
【００７６】
図3Aは、サブシステムの論理ビューを示す。実際には、サブシステムの1つまたは複数、たとえば、データストレージサブシステム400は、地理的に異なる場所にそれら自体配置され得る複数のデバイスにわたって分散され得る。したがって、様々な分散コンポーネントを相互接続するために通信リンクが必要になる。
【００７７】
データストレージサブシステムを編成するための一方法は、通信ネットワークを介して相互接続される水平方向にパーティション分割されたデータセット(シャードとも呼ばれる)の集合としてであり、そのようなパーティションは異なるクラウドクラスタ内に置かれる。たとえば、郵便番号が50000未満である顧客のデータレコードは、一方のパーティション、たとえば、Eastに置かれており、郵便番号が50000を超える顧客に対するデータレコードは、第2のパーティション、たとえば、Westに置かれる。次いで、顧客の全体集合を導出するために、我々は両方のシャードにわたって合併を実行する必要があり得る。
【００７８】
図3Bは、シャードとしてのデータの例示的な配置構成を示す。テーブルは、シャードに分割され、任意の数のネットワークトポロジーを利用して様々な通信ネットワークを通じてアクセス可能な地理的に分散されているサイトに記憶され、たとえば、図3Bは、テーブルのシャードを保持するために使用される5つの分散サイトのスター型ネットワークトポロジーを示している。そのような配置構成において、すべてノードが他のすべてのノードに接続されているわけではないので、データ要求は、集計を目的として補助ノードのうちの1つへの中間的搬送を伴い得る。そのような取り出し技術は、従来技術の一部である。
【００７９】
次いで、個別のシャードへのアクセスは、暗号法により認証された要求に基づき得る。
【００８０】
データをシャードとして配置構成する利点は、ユーザクエリに答えるために搬送され処理される必要があるデータの量をかなり減らせるという点である。たとえば、上記の例の東海岸の顧客を伴うクエリは、ローカルシャードのみに含まれるデータへのアクセスを必要とし得る。
【００８１】
図3Cは、3つの関係CUSTOMER、BRANCH、およびBANKERを含むリレーショナルデータベースの一例を示している。第1の2つの関係は、図3に示されている可能な例の1つを持つ表形式データ構造体として実装され得る。BANKER関係は、表形式構造体としてまたは従来技術から知られているリレーショナル代数演算子を使用することによって導出された関係としても実装され得る。(そのような決定の良い点と悪い点は、従来技術においてよく説明されている。)Branch ManagerとCustomerとの間の関係「Banker」は、データベース内に明示的に記憶され得ず、むしろ、他のデータを操作することによって導出され得ることに留意されたい。本発明の説明において、我々は、後のオプションを仮定する。図3Cは、サンプルクエリおよびトランザクションも示している。
【００８２】
またデータベーススキーマは、データ値を含まず、データベースの構造、関係がいくつあるか、どのような属性があるか、どのような属性が識別子として使用されるか、などの記述のみを含むことにも留意されたい。
【００８３】
また、いくつかの属性/値が関係の1つまた複数のタプルを一意的に識別するために使用されることにも留意すべきである。そのような属性はキー属性とも称され、後で説明されるように「秘密」および「公開」鍵と混同されるべきでない。
【００８４】
従来技術においてよく知られているように、キー属性は、データの効率的な取り出しを可能にする二次索引データ構造体を構築するために使用される。図3Aを参照すると、図3Aに(300)として示されているクエリおよびトランザクション処理サブシステムは、二次索引データ構造体を含む。
【００８５】
クエリ処理システムにおいて、典型的には、次の一般的な方法が実行される。クライアントシステム100(図3A)は、サブシステム200によって受信されるクエリを生成する。クエリを行うユーザのアイデンティティは、ユーザ提供資格証明書を介して認証され、クエリは、ユーザがシステム/データにアクセスすることを許されていると決定された場合にクエリサブシステム300に転送される。サブシステム300内のソフトウェアロジックは、どのようなタプル(データレコード)が必要かを計算し、前記タプルはそのキー属性/値ペアによって識別される。実行されたときに、所与のクエリに答えることに至るアクションのそのようなシーケンスは、従来技術において「プラン」と呼ばれる。プランは、データベースのスキーマ記述に含まれる情報を使用している。キー属性/値は、次いでクエリへの解集合として返され得るデータストレージシステム400からタプルを取り出すために使用される。
【００８６】
我々は、プランの基本コンポーネントが記憶されているデータへのアクセスを伴うことに気付いている。データがアクセスされた後、これは着信要求への応答として送信される前に操作され処理され得る。すべてのデータ管理システムは、基礎および基本レベルにおいて、そのクエリおよびトランザクション処理システムの一部としてある時点で記憶されているデータがアクセスされることを必要とする。
【００８７】
したがって、本明細書で説明されている実施形態は、本発明がデータアクセスオペレーションに適用可能であることに主眼を置いており、そのため、本発明は、リレーショナルデータベースシステムのみの適用に限定されない。特に、本発明は、記憶されているデータにアクセスするデータオペレーションに依存するすべてのデータ管理システムに適用される。
【００８８】
従来のデータベースシステムでは、クエリとトランザクションとの間で区別がなされる。クエリは、データの状態を変化させない要求である。たとえば、「what is John's account balance」は、クエリである。トランザクションは、データの状態を変化させる/追加する/修正する/削除する要求である。たとえば、「add $200 to John's account」は、トランザクションである。
【００８９】
リレーショナルデータベースでは、クエリへの解のサイズ、実際には上限は、データを実際に取り出す前にスキーマ情報および二次索引構造体を用いて計算され得る、たとえば、二次索引のサイズは関係/テーブル内のタプル/行の数に上限を課すことに留意されたい。関係/テーブルのサイズは、関係/テーブル内のタプル/行の数である。
【００９０】
トランザクションは、一般的に言えば、次のように論理項で処理される。
【００９１】
第1のステップは、受信されたトランザクションを、必要なデータタプルがトランザクションの要求条件に従って取り出されて修正され、データベース内に戻されるという意味で、クエリとして取り扱うことである。データベース内に事前に存在していない新しいデータ値、たとえば、新しい銀行顧客アカウントがデータベース内に挿入される場合、対応するトランザクションをヌルクエリを含むと仮定しその後データベース内にタプルを挿入するものとしてよい。ヌルクエリは、解が空であるクエリである。
【００９２】
公開鍵暗号
我々は、次に、最初にユーザを認可する問題から始めることで、図2Cの好ましい実施形態の機能を説明する。ユーザを認可することはユーザの権利を認証手順によって確定されるユーザのアイデンティティに基づき決定することを伴うことを思い出してもらいたい。
【００９３】
従来技術では、ユーザ要求を認可するために公開鍵暗号を使用することを推奨している。そのようなシステムにおいて、ユーザは、秘密鍵および公開鍵と呼ばれる暗号データのペアを生成する。公開鍵は全員に知られ、秘密鍵はその所有者にのみ知られている。公開鍵と秘密鍵とのペアは一意的なペアを形成する。
【００９４】
ユーザBobがAliceのみがオペレーション「R」を呼び出すことができればよいと望んでいると仮定する。次いで、Bobはロック済みオブジェクトを作成し得る。Aliceの公開鍵をPub(Alice)とし、秘密鍵をPri(Alice)とする。次いで、図4Aは、対応するロック済みオブジェクトを示している。ロック済みオブジェクトは、Aliceのみが自分の秘密鍵へのアクセスを有しているので、Aliceによってしか開けない。オブジェクトをロック解除するために、Aliceは、「?Pri(Alice)」への入力として秘密鍵を提供しなければならず、公開鍵は、全員に知られており、関数「Private Key Lock」内に組み込まれ得る。
【００９５】
したがって、Aliceによってのみ開かれるように設計されているロックは、対応する公開鍵が関数「Private Key Lock」に組み込まれていると仮定してロック[?Pri(Alice):Private Key Lock]によってより簡潔に表され得る(図4B)。互いに協力し合うAliceおよびCharlieによって開かれるように設計されている秘密鍵ロックは、[?Pri(Alice):?Pri(Charlie):Private Key Lock]として表され得る(図4C)。後者は、それぞれの公開鍵が関数「Private Key Lock」に組み込まれていると仮定して、関数「Private Key Lock」がロックを開くためにAliceとCharlieの両方からの入力を必要とする。
【００９６】
環境センサインディシア(ESI:Environmental Sensory Indicia)
次に、ユーザのアイデンティティを検証する、すなわち、ユーザを認証する問題を検討することにするが、我々は、公開鍵暗号の中心的な問題が、所与の公開鍵が正真正銘である、すなわち、請求当事者に属していることを示すプルーフを提供しないことにあると観察している。公開鍵と個人アイデンティティとの間の関連付けは、不正に利用されやすい。Wikipediaを引用すると「To date, no fully satisfactory solution to the 'public key authentication problem' has been found」(Online Wikipedia, en. wikipedia.org/wiki/Public-key cryptography)と書かれている。
【００９７】
従来技術で公開鍵認証問題を解決した典型的な方式は、公開鍵の証明者として働く「信頼できる第三者」を伴うことである。しかしながら、信頼できる第三者が悪意ある第三者に変わった場合にこの方式は失敗する。
【００９８】
次に、我々は、例示的な実施形態のシステムのユーザのアイデンティティを確立する方法を説明する。方法は、ユーザのスマートデバイス、ユーザのスマートデバイスに関連付けられているセンサ、前記ユーザに近接近している他のスマートデバイス、ユーザのスマートデバイスと通信しているネットワーク(有線および/またはワイヤレス)などから取得されるセンサデータに基づく。
【００９９】
今日ではユーザが複数のスマートデバイスを所有し、使用するのは普通のことである。スマートデバイスは、ネットワーク接続を有するコンピュータ(またはプロセッサを含むデバイス)である。それに加えて、これもまたセンサ(ハードウェアもしくはソフトウェア)を含むか、またはスマートデバイスの状態、環境、または条件に関係するデータを生成する他のセンサデバイス(センサデバイスの近くにある)の範囲内にあり得る。スマートデバイスの例は、限定はしないが、デスクトップおよびラップトップコンピュータ、タブレットコンピュータ、モバイルデバイス(たとえば、携帯電話、スマートウォッチ、スマートグラス)、モバイルデバイスを組み込んだデバイスなどである。
【０１００】
スマートデバイス内の、またはスマートデバイスの近くにある物理的またはソフトウェアベースのセンサからのデータは、スマートデバイスによって受信され、処理され、収集され得るか、またはスマートデバイスと接続しているサーバに送信され得る。
【０１０１】
たとえば、ユーザの仕事場で、Wi-Fiネットワークをサポートしている場合がある。したがって、ユーザが自分の仕事場にいるときに、ユーザのスマートデバイスがWi-Fiネットワークと接続し、Wi-Fiルーターからデータを受信し、前記スマートデバイスに接続されているサーバにデータを記録するかまたは送信し得る。
【０１０２】
さらに、ユーザが自宅にいるときに、スマートフォンは異なるデータセットを生成し得る自宅Wi-Fiネットワークに接続するものとしてよい。ユーザが車内にいるときに、スマートフォンデバイスは車の音楽システムとのBluetooth（登録商標）接続を確立し、それにより、他の記録可能なデータを生成し得る。
【０１０３】
こうして、ユーザが日課をこなすときに、スマートデバイスが1つまたは複数の他のスマートデバイス、センサ、およびネットワークからデータを受信することがわかる。したがって、我々は、そのようなデバイスに関するデータ、接続の時刻および持続時間、1つのネットワーク/デバイスに接続した後別のネットワークもしくはデバイスに接続するパターン、などを取得するものとしてよい。したがって、様々なネットワーク上のユーザの存在、一方のネットワークから別のネットワークへの遷移、そのようなネットワーク存在の持続時間およびタイミング、様々な地理的位置におけるユーザの存在、ならびに関連付けられている日付、日時は、すべて、ユーザのスマートデバイスまたは前記デバイスに接続されているサーバによってデータセットとして記録され得る。そのようなデータセットは、環境データセットと称されてよく、分析されその結果イベントからパターンを導出し得る。たとえば、我々は、そのような1つのパターンを「User spent X amount of time in his office, Y amount of time in his car, and Z amount of time in his house」と記述することができ得る。別の例として、我々は、すべてのネットワーク遷移の80%超においてユーザはネットワークXからネットワークYに遷移するという規則を導出し得る。
【０１０４】
環境データセット内の情報は、図5に示されているように要約を得るために使用され得る。テーブルは、環境データが1週間にわたって平均されたユーザ「ユーザ1」に対するデータを示す。このテーブルは、その週に、ユーザ1が仕事場のWi-Fiに接続され平均して6時間、自宅Wi-Fiに接続され毎日8時間、Bluetooth（登録商標）ネットワークに接続され平均30分間費やしたことを示している。第2のテーブルは、一方のネットワークから別のネットワークへの遷移頻度を示している。ユーザのスマートデバイスまたはユーザに近接近しているスマートデバイスから得られた毎日、毎週、または毎月のデータセットから少しずつ集められたそのような要約データは、次のように前記ユーザのアイデンティティを確立するために使用され得る。
【０１０５】
ユーザは、最初に、特定の長さの訓練期間、たとえば1週間のサンプルデータを提供する必要がある。サンプルデータを取得するために、ユーザは、人間オペレータ、たとえば、セキュリティ要員によって監視され得る。ユーザは、ウェアラブルスマートブレスレットなどの監視機器を着用するように求められてもよい。この週に、システムは、前記ユーザのスマートデバイス、人間オペレータ、または近くにあるデバイスからデータを集計してデータセットに入れる。次いで、データセットは分析され、アイデンティティテーブルと呼ばれるテーブルとして表される、要約データセットを生成する。
【０１０６】
第1週の訓練期間の終わりに、前記ユーザは、いわゆる運用フェーズに入り、そのときに、ユーザのスマートデバイスまたは近くにあるデバイスからのデータが「ローリング」ベースで運用行(Operational Row)と呼ばれるアイデンティティテーブルの1行に集計される。実際の行は、「ローリング週」方式で最新に保たれる、すなわち、システムは常に最新の週のデータを有することに留意することが重要である。
【０１０７】
ユーザのアイデンティティを確立するために、前記ユーザがアクセス要求を行ったときに、システムは、アイデンティティテーブル内のユーザのテンプレート行と運用行とのマッチングを行う。システム管理者の考慮事項に基づき、マッチングオペレーションは、状況の要求に応じて近似マッチングまたは完全マッチングを可能にし得る。
【０１０８】
図6は、1週間分のデータ、すなわち、訓練フェーズにおいてユーザから得られた1週間分のテンプレートデータおよび運用フェーズにおける1週間分のローリングデータに基づく、テンプレート行および運用行とともにユーザに対する例示的なアイデンティティテーブルを示している。ユーザのテンプレート行および運用行の値が「マッチング」するかどうかを確認するために、我々は、完全マッチングプロセス、近似マッチングプロセス、またはファジーマッチングプロセス(従来技術においてすべてよく知られている)を使用し得る。
【０１０９】
マッチングプロセスの結果は、0(マッチングなし)から9(完全マッチング)までの間の整数であってよく、システムはこれをユーザのテンプレートおよび実際の行動のマッチングに対する信頼度として使用し得る。ユーザにアクセスを付与する際のそのような尺度の使用について後で説明する。テンプレート行データと運用行データとのマッチングを行い、それに応じて真/偽を返す2値関数が、マッチングを目的として定義され得る。
【０１１０】
環境インディシアデータセットからユーザの行動のパターンを導出するというアイデアが利用されて、強力なパターンの導出がもたらされ得る。たとえば、我々は、配偶者のスマートフォンから位置データおよびイベントを集計し、それらと連れ合いのスマートフォンからのデータとの相関を求め、「the user spent 5 hours per day on average at home with his spouse」などの例示的なパターンを導出することが可能である。
【０１１１】
スマートデバイスおよび近くにあるスマートデバイスのデータを通じてユーザアイデンティティを確立することの背後にある基本的なアイデアは、このデータを偽装するためには悪意のあるユーザが本物のユーザの自宅、オフィス、および自動車などを所有するか、ハッキングするか、または押し入る必要があるということである。そのようなタスクは、多数の異なるデバイス、位置、ネットワーク、近くにあるデバイス、配偶者のデバイスなどからのデータを使用することによって悪意のあるユーザにとって極めて困難なものとなり得る。
【０１１２】
さらに、我々は、前記デバイスからデータ要素をランダムに選択し、ユーザがテンプレート行および実際の行を組み立てるのに使用されるデータを推測することをより困難にし得る。
【０１１３】
誰かが本物のユーザのふりをすることが困難になるだけでなく、自分のアイデンティティ情報に基づきアクセスを得るユーザが自分がシステムにアクセスしたことを否定することも困難になる。したがって、前述のアイデンティティ機構を介してアクセスを許されるユーザは、この過失性を否定することが困難であることに気付く。
【０１１４】
上記の例示的な説明は、Wi-FiおよびBluetooth（登録商標）ネットワークおよびデバイスからのデータを使用することに基づいているが、より一般的に、限定はしないが、位置センサ、時間センサ、ウェアラブルコンピューティングデバイス、ユーザまたはシステムのユーザに近接近しているペットが身に着けているデバイスなどを含む、任意のデバイスおよびネットワークからのデータが使用され得る。
【０１１５】
スマートデバイス上のユーザのアクションからのデータを使用する別の例として、Facebook、Twitterなどのソーシャルネットワーキングウェブサイト上のユーザアクションを考える。1つの典型的なユーザアクティビティは、「ツイート」および「インスタントメッセージ」などと称される、メッセージをウェブサイト上に投稿することである。特定のユーザの投稿は、ある時間期間にわたって、たとえば、数週間にわたって集計され、それによりパターンを識別し得る。たとえば、我々は、ユーザが一日にいくつものツイートを投稿し、1週間にたくさんのFacebook更新を投稿することを観察し得る。上で説明されているように、そのようなパターンは、識別され、アイデンティティテーブル内に「テンプレート行」(上で説明されている)として記憶され得る。次いで、ユーザのデバイスは、最新のデータセット、すなわち、「運用行」(上で説明されている)を含む。
【０１１６】
引き続き上記の例において、ユーザがデータストレージユニットにアクセスすることを望んでいるときに、我々は、アイデンティティテーブルのテンプレート行と運用行とのマッチングを行ってユーザのアイデンティティを確認するものとしてよい。たとえば、我々は、ユーザの最新のソーシャルネットワーキングアクティビティ(運用行)がそのユーザの全体的なソーシャルネットワーキングアクティビティパターン(テンプレート行)と「マッチング」(上で説明されている意味で)しないことに気付き得る。
【０１１７】
ユーザの計算アクションおよびアクティビティをキャプチャし、そのようなデータからパターンを抽出するという考え方は、Wi-Fiネットワークまたはソーシャルネットワークなどでのアクションに限定されない。さらに、そのようなパターンは、ユーザの行動を示すものとして使用されてよく、したがって、多くの目的のために使用されてよく、ユーザを識別または認証することはそのような一目的である。
【０１１８】
上で説明されている方法の例は、テンプレートデータの収集フェーズに対する1週間分に相当するデータに基づいていたことに留意されたい。しかしながら、一般に、任意の時間期間が、典型的には、システム管理者の裁量で使用され得る。
【０１１９】
我々は、次のようにユーザを認証するために環境データセットを利用し得る。ユーザがクライアントデバイス上で実行しているソフトウェアプログラムから要求を発行する。ソフトウェアプログラムは、本実施形態のシステムにデータを送信するためにすでに使用されており、これはアイデンティティテーブル内の1行(テンプレート行)として記憶される。コンピュータプログラムはローカルクライアントデバイス内にデータの運用行も記録する。(説明されているように、「ローリング」時間期間に関連付けられているデータは、コンピュータプログラムによって収集される。)ユーザが要求を発行したときに、システムは、次のように表され得るセンサロックを含むロック済みオブジェクトを生成する。
[?Operational-Row:Template-Row:sensorLock|オペレーションR]
【０１２０】
関数「sensorLock」は、図6に示されているようにマッチング関数100を使用する。システムは、(初期化フェーズからの)データの「テンプレート行」を保有し、ユーザが要求を入力したときにクライアントコンピュータプログラムが「運用行」データを提供することを必要とする。認証要求条件は、関数「sensorLock」が「真」を返した場合に満たされる。
【０１２１】
ユーザ要求
次に、前の方で説明されている本発明の一般的な動作は、図2Cに関して次のように補足され得る。初期化ステップにおいて、クライアントデバイス300からのデータおよびデバイス100からのセンサデータを使用することで、コンピュータ400は、登録ユーザに対するテンプレート行データとして使用されるべき環境データセットを集めてまとめると仮定される。コンピュータ400は、環境データセット(テンプレート行データを含む)をプロビジョニングテーブル1000に示されているようにデータセットを記憶することによってサブネットワーク500、600、および700に利用可能にする。テンプレート行データは、ユーザアイデンティティまたは公開鍵によって索引を付けられるものとしてよい。
【０１２２】
ユーザ要求150は、TE500に届く(図2C)。要求150を行うユーザデバイス10は、前記ユーザに対する必要な運用行データを有すると仮定される。TE500は、着信ユーザ要求を受信し、それをプリミティブデータオペレーションのリストに変換する(そのような導出の一例は、後で提示される)。このリストは、一般に、1つまたは複数のデータアクセスオペレーションを有する。
【０１２３】
結果としてプリミティブデータオペレーションのリストをもたらしたユーザ要求を考える。次に、我々は、ユーザ要求に対応する1つまたは複数のロック済みオブジェクトを導出する。ロック済みオブジェクトは、次の一般形式を有する。
ロック済みオブジェクトの一般形態
1.秘密鍵ロック
2.センサロック
3.プルーフオブワークロック
4.エンカンブランスロック
5.上記のロックによってガードされる1つまたは複数のデータオペレーション。
【０１２４】
所与のロック済みオブジェクトは、様々なロックの1つもしくは複数のインスタンスを有するか、または全く有し得ないことに留意されたい。次に、我々は、例示的な目的のための単一のロック済みオブジェクトの処理を説明する。データオペレーション「R」をガードする上記の各タイプのロックの1つのインスタンスを有するロック済みオブジェクトを考える。
【０１２５】
TE500は、ロック済みオブジェクトをサブネットワーク600内に伝搬し、その後、サブネットワーク600のすべてのノードによって満たされていない要求として、すなわち、それぞれのFIFOリスト内に記録される。
【０１２６】
時間内に、前記ロック済みオブジェクトは、サブネットワーク600のすべてノードによってそれぞれのFIFOリスト内の第1の満たされていないエントリであるとしてピックアップされ、その後、それらのノードはオブジェクトの第1のロックをロック解除することを試みる。
【０１２７】
第1のロックは、秘密鍵ロックであるので、ユーザ(またはそのユーザのデバイス)のみが、秘密鍵ロックをロック解除する秘密鍵を提供し得る。
【０１２８】
第1のロックがEEサブネットワーク600内のEEノードによってロック解除された後、前記ノードは、その成功をEEサブネットワーク600内のすべてのノードにアナウンスする。サブネットワーク600のすべてのノードは、受信された情報を検証し、そのログをしかるべく修正する。(受信された情報を検証することの詳細は、後で提示される。)
【０１２９】
次に、すべてのノードは、センサロックである第2のロックに向かう。(プルーフオブワークロックを開くことの詳細は後で提示される。)ここでもまた、EEサブネットワーク600の何らかのノードが第2のロックをロック解除することに成功し、EEサブネットワーク600のすべてのノードによって記録される対応するアナウンスを行う。
【０１３０】
上記のプロセスは、プルーフオブワークロックについて繰り返す。後者のロックが開かれた後、プルーフオブワークロックを開くEEサブネットワークノードは、残りのエンカンブランスロックが開かれるようにロック済みオブジェクトをVEサブネットワーク700に伝搬させる。エンカンブランスロックを開くことに関する詳細は後で提示される。すべてのロックが開かれた後、ガードされたオペレーション「R」は、最後のロックを開くことに成功したVEサブネットワーク700のノードによって呼び出され得る。
【０１３１】
上で説明されているロック済みオブジェクトの一般形態に戻り、我々は、エントリ1および2が前の方で説明されていることに留意する。次に、我々は、残りのエントリ3および4についてより詳しく説明する。
【０１３２】
仕事とエンカンブランスロック
計算仕事の概念は、前に導入されている。思い出すと、SHA256などの不可逆関数は所定の入力文字列および所与のターゲット数Tとともに使用されている。この考え方は、入力文字列に付加されたときに、所与のターゲット数より小さい数を生成するノンスを見つけるというものである。
【０１３３】
発明の一態様は、ユーザ要求の重要度を測定し、強度が重要さのその尺度と比例する仕事ロックを導出することである。ロックの強度は、計算仕事の対応する量を意味する。
【０１３４】
我々は、様々な仕方で要求の重要度を推定することができる。たとえば、我々は、ユーザの前のアクセス履歴から導出されたユーザアクセスの毎日の頻度を使用し得る。他の可能な考慮事項は、ユーザの位置および/またはユーザが以前に要求を発行するために使用した可能性のあるデバイスである。新しい/未知のユーザ位置から、またはめったに使用されないデバイスから発せられる要求は、余計な予防を必要とするものとしてよく、使用についても考慮され得るであろう。これらの例はすべて、図2Cのプロビジョニングテーブル1000に記憶されている、過去のユーザアクセス履歴を分析することから生じる。
【０１３５】
データ値が例である図7に示されているテーブルを考察し、ユーザ要求の重要度を測定するために(システム管理者および管理者によって)使用され得る特定の一組のデータ値を示す。そのようなテーブルは、特定のデータ値の使用を通じて企業の事業規則をキャプチャすることを意味する。また、列の値は独立していると仮定される。
【０１３６】
この例では、図7に示されているデータ値により、2未満の毎日のユーザアクセス頻度で特徴付けられるユーザからの要求の結果、開かれるのに非常に多量の計算仕事を必要とする仕事ロックをもたらす、すなわち、ターゲットは10個の先行16進数ゼロを有する。システムにあまり頻繁にアクセスしない、すなわち、毎日2回未満アクセスし、マッチングスコアが低い(1〜3)ユーザにとって、アクセスを得るのは計算上困難である。この結果は、図7のテーブルに入るデータ値が特定のポリシーを伴うために生じることに留意されたい。異なる一組のデータ値は、異なるポリシーを組み込む。
【０１３７】
他方で、アクセス要求を発行する高いマッチングスコア(8)を有する頻繁なユーザ(たとえば、毎日7件の要求)は、より少ない仕事およびより容易なエンカンブランスを割り当てられ、たとえば、T=0xx...xおよびE=1である。
【０１３８】
上記は次のように読まれるべきである。
【０１３９】
T=0xx...x(16進数)は、仕事ロックによって満たされるべきターゲットが、1先行16進数ゼロ桁を有する数より小さい数、たとえば、2先行ゼロを有する数である。「E」は、制約条件として理解され得るエンカンブランスを表す。より具体的には、エンカンブランスは、「m」個のノードのネットワークの少なくとも「n」個のノードが検証(承認)しなければならないことを意味する「n-of-m」制約条件として述べられ、したがってE=1は、少なくとも1つのノードがロック済みスクリプトのロック解除を承認しなければならないことを意味する。
【０１４０】
したがって、仕事ロックは、次の形式を有するものとしてよい。
[?nonce:?input:?target:workLock|オペレーションR]
【０１４１】
関数workLockは、図7からの値を使用して、所与のユーザ要求に対する「T」の値を導出する、すなわち、「T」の値はユーザ要求の重要度の測定値であり、仕事ロックを開く際に費やされるべき計算作業量を定義するために使用される。
【０１４２】
同様に、エンカンブランスロックは、「E」値を使用して、ロック済み要求を検証するためにノードがいくつ必要かを決定する。本実施形態では、ユーザの過去の使用度およびマッチングデータに基づき「T」および「E」値を得るためにテーブルとして表され、認可テーブルと称される図7に示されているようなアクセス履歴データおよびアイデンティティマッチングデータを使用する。次いで、前記データは、所与のユーザ要求に対する仕事ロックおよびエンカンブランスロックを導出するために使用される。契約関連付けのプロセスにおいてガイドするために多くの異なる種類の履歴データおよびマッチングデータが認可テーブルに記憶され得ることは理解されるであろう。
【０１４３】
認可テーブルは、プロビジョニングテーブルおよび二次索引と総称されるテーブルの集合体の一部である。この集合体は、図2Cにおいて1000として示されている。これはTE500内のすべてのすべてのコンピュータならびにEE600およびVE700サブネットワーク内のすべてのノードに利用可能であると仮定される。
【０１４４】
ロック済みオブジェクトの仕事ロックが説明されたが、エンカンブランスロックをより詳しく説明することにする。「n-of-m」エンカンブランスは、前の方で述べたように、条件を検証するためにネットワーク内の合計「m」個のうちの少なくとも「n」のノードを必要とする制約条件を表す。VEネットワークのノードの各々は、それ自体の秘密鍵を有すると仮定される。したがって、前記ノードがA、B、C、などと名前を付けられている場合、対応する秘密鍵は、Pri(A)、Pri(B)、およびPri(C)として指定され得る。次いで、我々は、たとえば、次のように、VEネットワーク内に合計3つのノードがあると仮定して、2-of-3制約条件を指定し得る。
[:Pri(A):Pri(B):Pri(C):2of3encVerify|オペレーションR]
ただし、「2of3encVerify」は、3つの入力のうちの2つが前記関数の制約条件を満たす場合に「真」を返すシステム提供関数であると仮定される。
【０１４５】
次に、「verifyWork」ロックをちょうどロック解除したばかりの、図2CのEEサブネットワーク600のノードがその成功をEEサブネットワーク内のピアにアナウンスし、またアナウンスをVEサブネットワーク700のノードに伝搬する説明を再開することにしよう。アナウンスは、ロック済みスクリプトの最近ロック解除された要素と、残りのロック解除されているロック、すなわちエンカンブランスロックを含むことに留意されたい。
【０１４６】
次に、VEサブネットワーク700のノードは各々、エンカンブランスロックを開くことを試みる。しかしながら、ノード「A」、「B」、および「C」のみが、その秘密鍵を知っている。これらのノードのうちの1つ、たとえば「A」は、その秘密鍵をロック済みオブジェクトに提供し、結果として得られるオブジェクトを、すなわち、VEサブネットワーク700内の他のノードに「内部的に」伝搬する。伝搬されたオブジェクトは、それでも、ロック解除され得る、すなわち、必要な入力のうちの1つのみが供給されていることに留意されたい。(この方式で、VEサブネットワーク700に対する伝搬プロトコルは、EEサブネットワーク600のと異なり、したがって、我々が2つの異なるサブネットワークを有する理由の1つとなっている。)次に、「B」が、その秘密鍵を受信されたロック済みオブジェクトに供給し、結果として得られるオブジェクトをVEサブネットワーク700の他のノードに伝搬すると想定する。次に、Pri(A)およびPri(B)に対して供給された値を持つ、この新しく伝搬されたロック済みオブジェクトを受信したVEサブネットワークのノードでは、「2of3encVerify」ロックを開くことが可能であることがわかる。したがって、ロック済みオブジェクトの最終ロックは、開かれ得る。
【０１４７】
このタスクに成功したVEサブネットワーク700内のノードは、ロック済みオブジェクトに関連付けられているガードされたオペレーションを実行する権利を得る。
【０１４８】
エンカンブランスロックの動作に関する次の補足的詳細は重要である。VEサブネットワークのノードが、部分的にロック解除されたオブジェクトを受信する。我々は、エンカンブランスロックが、VEサブネットワークのノードによって実行されたときにロック解除された要素の妥当性を検証することを可能にする専用ソフトウェアロジックを含むと仮定している。たとえば、仕事ロックが開かれた場合、受信されたオブジェクトは、仕事ロックを開くことが検証され得るように「nonce」、「input」、および「target」値を含んでいなければならない。同様に、他の開かれたロックも検証される必要がある。部分的に開かれたオブジェクトのエンカンブランスロックは、すべての以前に開かれたロックを検証する。そのような検証が失敗した場合、エンカンブランスロックを開くことは失敗する(ロック済みオブジェクト全体を開く場合のように)。
【０１４９】
それに加えて、一般的な制約条件および条件は、ユーザの特定の態様、データ要求などを検証する前述の専用ソフトウェアロジックに組み込まれ得る。
【０１５０】
検証目的のためにエンカンブランスロックによって使用される専用ソフトウェアロジックを実装する一方法は、図7において、「参照」というラベルが付けられた列に示されている。参照の値は、上で説明されているように検証可能性を満たすためにエンカンブランスロックによって実行され得る記憶されているソフトウェアロジックへのリンクである。ロック済みオブジェクトの一般的な導出におけるエンカンブランスロックの導出は、参照値の認識を受け取り、参照されたソフトウェアロジックをエンカンブランスロックに組み込む。したがって、広い範囲の条件および制約条件は、エンカンブランスロックによって検証され得る。
【０１５１】
ユーザデータ要求
ユーザ要求の特定の例を考察することは有益である。説明を簡単にするため、我々は、ユーザ要求が2つのフェーズ、すなわち、ユーザ許可要求(フェーズ1)およびユーザデータ要求(フェーズ2)に分割されると仮定する。ユーザ許可要求は、ユーザを認証する作業に関係する。
【０１５２】
図8の行2は、ユーザ許可要求が受信されていることを示している。要求は、図1CのTE500を含むコンピュータによって受信される。
【０１５３】
TE500は、行3に示されているロックにより許可要求をロック済みオブジェクトに変換する。ロックに対する特定の値および強度は、前の方で説明されているように認可テーブルから取得されることに留意されたい。
【０１５４】
行4において、TEコンピュータは、ロック済みオブジェクト「ABC」を図2CのEEサブネットワーク600内に注入し、(ステップ5)ロック済みオブジェクトはそれ自体EEサブネットワークのすべてのノードのFIFOリスト上にある。
【０１５５】
ステップ6において、我々は、EEサブネットワークのすべてのノードが、新規に追加されたロック済みオブジェクト「ABC」のロック解除することに取り組み、指定された順序で、介入アナウンスにより1つずつロックを開くことを開始すると仮定する。さらに、その1つのノードは、最初にエンカンブランスロックを除くすべてのロックを開くことに成功する。前の方で説明されているように、これは勝利ノードがその成功をEEおよびVEサブネットワークのすべてのノードにアナウンスすることを可能にする。
【０１５６】
ステップ7において、VEノードは、部分的にロック解除されたオブジェクトを受信し、残りの(エンカンブランス)ロックをロック解除することを続ける。すべての前に開かれているロックは、再検証される必要がある。成功する第1のノードは、しかるべく、EEおよびVEサブネットワークにアナウンスする。アナウンスを受信した後、EEおよびVEサブネットワークのすべてのノードは、しかるべくその個別のログを更新する。オブジェクトABCがロック解除されたので、ユーザ要求の第2のフェーズは、したがって、呼び出され得る。
【０１５７】
次に、我々は、ユーザ要求の第2のフェーズを考え、データ取り出しがその処理において必要であると仮定する。例示的な目的のために、我々は、図3に示されているデータベースに関して要求「Who is John's banker」を考察する。
【０１５８】
従来のデータベースクエリ処理システムは、上記のクエリを処理するためのプランを導出する。そのような1つのプランが、図9に示されている。
【０１５９】
図9に示されているプランの行1は、着信要求を表す。行2は、プランの第1のステップを表す、すなわち、テーブル「Customer」を含むデータレコードを取得する。テーブル「Customer」は、2つのシャードに分割されており、従来のクエリ処理システムは、図8の行2の要求を行3、4、および5に示されている3つのプリミティブアクションに分解する。ここで、「プリミティブ」という用語は、システムによってより単純なアクションに簡約され得ないアクション、すなわち、システムに利用可能な基礎的な方法によって実行され得るアクションを意味する。行6、7、8、および9は、テーブル「Branch」を含むデータレコードに関する類似のアクションを表す。
【０１６０】
行10は、行5および9において組み立てられた2つのテーブルのデータレコードの結合を要求し、行11および12は、所望の結果を得るために従来のプリミティブアクションを要求する。
【０１６１】
上で述べたように、図9に表されているプランは従来のものであり、上で示されている例示的なクエリなどのクエリを処理するための従来技術においてよく知られている。
【０１６２】
そのようなプランにおいて観察すべき重要な点は、プリミティブアクションがデータアクセス要求を含むことである。そのような観察は、リレーショナルデータベースシステムおよびSQLデータベースシステムだけでなく、オブジェクト指向データベース、非SQLデータベースなどにも適用される。
【０１６３】
プロビジョニングテーブル(図2Cの1000を参照)は、データベースの内容および二次索引を記述したスキーマ、すなわち、必要なデータ、たとえば、キーベースのテーブルおよび逆データルックアップテーブルなどを取り出すためにアクセス方法によって使用され得るテーブルを含む。着信要求のサイズは、二次索引のサイズから推定され得る。次に簡単な説明を述べる。
【０１６４】
リレーショナル代数の演算は、2つの種類に分割され得る。1つのクラスは、単一の関係、すなわち、単項演算に作用する。そのような演算の例は、SELECTおよびPROJECT演算である。第2の種類の演算は、2つまたはそれ以上の関係に作用する演算、たとえば、JOIN、SET DIFFERENCE、UNIONなどである。
【０１６５】
単項演算のドメインは、基礎的な関係であり、したがって、解集合の濃度、すなわち、サイズは、対応する二次索引のサイズに対する上限、すなわち、索引のドメインとして推定され得る。すべての関係は有限であることを思い起こしていただきたい。
【０１６６】
非単項演算では、我々は、解集合のサイズに対する上限を得るために基礎的なドメインの合併を取るものとしてよい。要点は、予想される解集合のサイズを計算するために実際のデータにアクセスする必要がないという点である。
【０１６７】
本発明の見解は、プランの各データ取り出し演算は保護される必要がある場合があるということである。したがって、我々は、データレコードは、ロック済みオブジェクトによってガードされたデータオペレーションによってアクセスされ得ることを必要とする。
【０１６８】
いくつかの実施形態において、データ要求で実行する必要のある計算仕事の量は、予想される解集合のサイズおよび値集合の範囲の関数となっている。
【０１６９】
データ取り出しオペレーションで特定のサイズの出力を生成するために必要なターゲット、すなわち、仕事の量を示す図10のテーブルを考える。さらに、エンカンブランス列は、出力を承認するためにネットワーク内で必要なノードの数を示している、すなわち、それらを認可またはチェックのレベルと考えるものとしてよい。たとえば、500〜1000の出力タプルの解集合を生成するために、そのサイズの解を生成することを試みるノードは「3先行16進数ゼロ」に相当する量の仕事を行う必要がある、すなわち、ターゲット「000xx...x(16進数)」より小さい数を生成するノンスを見つける。さらに、前記ノードの仕事は、「N」がネットワーク内のノードの総数である場合に、4-of-Nエンカンブランスの影響を受ける。
【０１７０】
トランザクションは、前者がデータ項目を変更するか、更新するか、またはデータベースに追加する、すなわち、副作用を生じるという意味でクエリと異なる。たとえば、トランザクションは、数値を変化させ得る、たとえば、勘定残高が$500から$700に変更され得る。
【０１７１】
本発明では、履歴データを使用して、トランザクションによって引き起こされ得る変化率を確認し、測定する。たとえば、図11は、データレコードに記憶されている数値へのそのような変化率を計算するために使用され得るテーブルを示している。
【０１７２】
トランザクションは、データレコードの追加または削除を必要とし得る。ここでもまた、過去のすべてのそのようなトランザクションの履歴的レコードが、ユーザごとの方式であっても、前記トランザクションが前のそのような要求とそれだけ異なる範囲を測定するために、保持され得る。図12は、そのような目的に使用され得る値の例示的なテーブルを示している。
【０１７３】
したがって、図11および図12に示されているテーブルを使用して、我々は、平均からのずれおよびトランザクションに対する変化率を計算し得る。図10は、所与のクエリに対する解のサイズを推定するために使用され得る。
【０１７４】
図10、図11、および図12は、したがって、仕事の量(対応する仕事ロックに対するターゲット)および所与のクエリまたはトランザクションに必要なエンカンブランスを推定するために使用され得る。
【０１７５】
特に、図9に示されているクエリに関係する上で説明されている例に戻り、我々は、TEコンピュータが、クエリ「Who is John's banker?」を受信した後に、図9に示されているプランを導出し(従来の手段を使用して)、次いで、必要に応じて図10、図11、および図12に示されているような履歴的使用度データ値を使用して仕事およびエンカンブランスロックを導出することによって続行し得ることを観察する。
【０１７６】
図13は、テーブルの形態の結果として得られるそのようなロック済みオブジェクトを示している。行3、4、7、および8のそれぞれのロックに対する仕事およびエンカンブランス値は、図10、図11、および図12に示されているテーブルを用いることによって得られる。したがって、行3、4、7、および8の各々は、一般的形態が同じであるが個別の要素が異なり得る対応する仕事およびエンカンブランスロックとともにロック済みオブジェクトを取得する。
【０１７７】
前の説明は、順次処理されたユーザからの2つの要求を記述することに基づいていた。より高度な処理も可能である。たとえば、上記の2つの部分要求は、順次モードではなくインターリーブモードで実行されてよい。オペレーションのそのようなインターリーブモードも、我々が複数のロックを同時にロック解除する場合に必要になることがある。
【０１７８】
図14は、本発明を実装するために使用され得る物理的配置構成を示している。500は、様々なセンサデバイス150、またはセンサ100を含むクライアント(スマート)デバイスからセンサデータを受信することをタスクとする1つまたは複数のコンピュータを備える。500を備えるコンピュータは、また、ユーザデバイス50からユーザ要求を収集することをタスクとする。
【０１７９】
さらに、500を備えるコンピュータは、また、TEコンピュータ(図2Cの500)によって記述されている関数を動作させ実行することもタスクとする。特に、着信ユーザ要求が分析され、ネットワーク200内にその後伝搬されるロック済みオブジェクトを導出する。
【０１８０】
ビジネスエンティティは、コンピュータシステム500および150などのセンサデバイス(またはデバイスからのデータ)に責任があるものとしてよい。次いで、このエンティティの役割は、着信データを処理し、ユーザ要求をネットワーク200にサブミットすることであってよい。
【０１８１】
ネットワーク200は、第2のビジネスエンティティによって管理され得るノードのネットワークであってよい。これは、ネットワーク内に注入されるロック済みオブジェクトを実行し、対応する応答をコンピュータ500を実行するエンティティに返す責任がある。ネットワーク200は、パーミッション付きのプライベートネットワークまたはパーミッション付きでないパブリックネットワークとして実装され得る。
【０１８２】
ネットワーク200は2つのタイプのノードを含み、一方のタイプはノードN1、N2、およびN3を例示的に含み、他方のタイプはノードN4およびN5を例示的に含む。ノードの前者のグループは、図2CのEEサブネットワーク600の関数を実行し、後者はVEサブネットワーク700の関数を実行する。したがって、ノードN1からN5を含むネットワークは非同質である。各ノードはプライベートログファイルを有する。ネットワーク200内のノードN1〜N5は、リンクA〜Eを介して記憶領域300に接続され、様々な二次索引テーブルおよびプロビジョニングテーブルがそこに記憶される。実際のデータレコードは、分散共有ベースリポジトリ400に記憶されるものとしてよく、そのサーバへのアクセスは暗号により制御され得る。
【０１８３】
我々は、本明細書においてプロビジョニングテーブル(1000、図2Cを参照)と称されるテーブルにシステム管理者によって使用されるデータを記憶することについて説明したが、顧客データは、異なるストレージシステム、たとえば、800(図2Cを参照)に記憶される。実際、2つのストレージシステムは、一体化され、プロビジョニングデータも、後者のストレージシステムに記憶され得る。このアイデアは、システム管理者データも操作するオペレーションに対し呼び出し制限を課す追加のセキュリティ要求条件によってさらに強化される。したがって、システム管理者データおよび顧客データは両方とも、類似の呼び出し制限によってガードされる。
【０１８４】
代替的実施形態
他の実施形態も本発明によって企図される。たとえば、クエリに答えるために、シャードとして記憶されているデータをより効率的に使用するという意味で、より優れたクエリ処理プランが導出され得る。当業者には、多くの種類のプランが所与のクエリおよびトランザクションについて導出され得ることがわかる。本発明の1つのアイデアは、依然として真である、すなわち、そのようなプラン内のデータアクセスオペレーションは、伴うデータオペレーションをガードするロック済みオブジェクトに関連付けられる。
【０１８５】
EEネットワークのノードがピアよりも早くアナウンスを受信し、それによりロックを開くのに先にスタートを切ることがあり得るという点で上記の提案に異議が唱えられ得る。
【０１８６】
しかしながら、上記の推測は当てはまらない。EEサブネットワークにおいて、ロックを開くことを開始するノードでは、その計算作業が様々なロックに左右されることに気付く。したがって、ノードに、ネットワーク待ち時間によりわずかな利点がある場合でも、他のすべてのノードに統計的に勝利するわけではない。
【０１８７】
本発明は、いくつかのデータオペレーションの呼び出しに制限を課す。そのような制限は、システムダウンを遅くするとみなし、したがって、ユーザに要求への応答を得るのを待たせる。我々は、クエリ処理における遅延を取り除くための代替的な実施形態を提示する。
【０１８８】
すべての認可されたユーザは、認可された管理者によってのみ発行され得る特定の量のデジタル通貨、すなわち、コインを割り振られる。他に誰もコインを生成することはできない。従来技術では、暗号通貨を生成する方法を教示している。
【０１８９】
認可されたユーザは、データベースシステムに提示される各クエリまたはトランザクションについて前記コインで支払い可能な手数料を請求される。
【０１９０】
データベースシステムは、要求側ユーザがデジタルウォレット内に十分なコインを有している場合にのみ支払いできる「決済」ロックを導出する。クエリまたはトランザクションで「決済ロック」をロック解除するために必要なコインの量は、ユーザコンテキスト、データコンテキスト、企業規則、などに基づく。
【０１９１】
したがって、高い「重要度」を有する(上で説明されているように)とみなされ、様々なロックをロック解除するために大量の計算仕事を必要としたであろう要求は、その代わりに、コインの高手数料を必要とするロックを割り当てられる。したがって、応答時間は、効率的に保たれるが、それと引き換えにユーザは手数料を支払うために十分なコインを保有していなければならない。次に、悪意あるユーザは、自分の要求に応えてもらうために大量のコインを必要とし、したがって、より多くのコインを発行してくれるように認可された要員に頼む必要がある。そのユーザが十分なコインを有している場合であっても、監視システムは、高いコイントランザクションに対してアラートを発行するようにプログラムされるものとしてよい。
【０１９２】
最後に、我々は(前に述べたように)、これまでに提示された様々な例示的な実施形態は、データのリレーショナルモデルに基づきデータストレージユニットを仮定しているが、そのような仮定は、本発明の範囲を制限しないことに留意する。たとえば、データストレージユニットは、電子メールレコード(メッセージおよびメタデータ)を記憶し、ガードされる必要のあるデータオペレーション(図1A、500を参照)は、電子メールメッセージを読み、記憶することである一実施形態を考える。そのような一実施形態において、前記データオペレーションの呼び出しは、特定のユーザ要求に応答して導出される様々なロックによって制御され得る。したがって、センサロックおよび秘密鍵ロックは、ユーザを認証するために使用される可能性があり、仕事およびエンカンブランスロックは、ユーザ要求が複数のエンティティなどによって検証されることを確実にするために使用される可能性がある。
【０１９３】
最後に留意すべきこととして、我々は、センサデータを使用してユーザの行動を表すパターンを導出し、後者をロック機構として使用するという概念は、プルーフオブワークに基づくロックに比べて長い寿命を有し得ることを観察している。後者は、コンピュータが(現在の技術を使用して)所与の長さの時間内に行うことができる基本オペレーションの最大数に基づくことを思い出してもらいたい。したがって、任意のコンピュータがそのようなロックをロック解除するのに要する最短時間を推定することができる。コンピュータ処理能力が増大し続けると、ロックベースのプルーフオブワークをロック解除するのに必要な計算を実行するのに必要な時間の長さは減少する。
【０１９４】
他方では、また本明細書で説明されているタイプのセンサデータベースロックは、ユーザ行動にのみ依存し、したがって計算の進歩に左右されない。コンピュータの速度ではなく、ロックのロック解除を決定するのがユーザおよびそのアクションである。さらに、プルーフオブワークロックおよびセンサデータベースロックは、基本的に異なる原理に基づき動作するので、データベース中のデータをセキュリティで保護するために両方のタイプを使用することは、補完的である。
【０１９５】
例示的なコンピューティング環境
本明細書において説明されている主題の態様は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストにおいて説明され得る。一般的に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などを含む。また、本明細書で説明されている主題の態様は、通信ネットワークを通じてリンクされているリモート処理デバイスによってタスクが実行される分散コンピューティング環境で実施され得る。分散コンピューティング環境では、プログラムモジュールをメモリストレージデバイスなどのローカルとリモートの両方のコンピュータ記憶媒体に配置され得る。
【０１９６】
また、いくつかの実施形態は、流れ図またはブロック図として示されているプロセスとして説明されていることに留意されたい。各々オペレーションを逐次プロセスとして記述している場合があるが、オペレーションの多くは、並列または同時実行されてよい。それに加えて、動作の順序は並べ替えられ得る。プロセスは、図に含まれていない追加のステップを有していてもよい。
【０１９７】
請求されている主題は、標準的なプログラミングおよび/またはエンジニアリング技術を使用してソフトウェア、ファームウェア、ハードウェア、またはこれらの任意の組合せを生産しコンピュータを制御して開示されている主題を実装する製造の方法、装置、または物品として実装され得る。たとえば、請求されている主題は、コンピュータ可読ストレージデバイスまたは記憶媒体からアクセス可能なコンピュータプログラムを包含する、コンピュータ実行可能プログラムとともに埋め込まれているコンピュータ可読記憶媒体として実装され得る。たとえば、コンピュータ可読記憶媒体は、限定はしないが、磁気ストレージデバイス(たとえば、ハードディスク、フロッピィディスク、磁気ストリップ、...)、光ディスク(たとえば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)...)、スマートカード、およびフラッシュメモリデバイス(たとえば、カード、スティック、キードライブ、...)を含み得る。しかしながら、コンピュータ可読記憶媒体は、たとえば伝搬信号など、一時的な記憶形態を含まない。もちろん、当業者は、請求されている主題の範囲または精神から逸脱することなくこの構成に多くの修正が加えられ得ることを認識するであろう。
【０１９８】
さらに、本出願で使用されているように、「コンポーネント」、「モジュール」、「エンジン」、「システム」、「装置」、「インターフェース」、または同様の用語は、一般的に、コンピュータ関係のエンティティ、つまりハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを指すことを意図されている。たとえば、コンポーネントは、限定はしないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであるものとしてよい。たとえば、コントローラ上で実行しているアプリケーションおよびコントローラは両方ともコンポーネントであってよい。1つまたは複数のコンポーネントは、1つのプロセスおよび/または実行スレッド内に常駐してよく、またコンポーネントは、1台のコンピュータにローカルとして配置され、および/または2台以上のコンピュータ間に分散されることも可能である。
【０１９９】
前述の実施形態は、異なる他のコンポーネント内に含まれるか、または異なる他のコンポーネントと接続されている異なるコンポーネントを示している。そのような示されているアーキテクチャは、単なる例であり、実際、同じ機能を達成する他の多くのアーキテクチャが実装され得ることは理解されるであろう。概念的な意味において、同じ機能を達成するコンポーネントの配置構成は、所望の機能が達成されるように効果的に「関連付けられる」。したがって、特定の機能を達成するように組み合わされた本明細書の2つのコンポーネントは、アーキテクチャまたは中間コンポーネントに関係なく所望の機能が達成されるように互いに「関連付けられている」ものとみなされ得る。同様に、そのように関連付けられている2つのコンポーネントは、所望の機能を達成するように互いに「動作可能に接続される」か、または「動作可能に結合される」ものとしてみなされ得る。
【符号の説明】
【０２００】
1、2、3、4、60、70  矢印
10  ユーザデバイス
50  接続
50  ユーザデバイス
60  ポインタ
100〜400  ロック
100〜600  スタック
100  近接近
100  秘密鍵ロック
100  クライアント1
100  クライアントシステム
100  マッチング関数
100  デバイス
100  センサ
150  ユーザ要求
150  センサデバイス
200  センサロック
200  システム
200  ネットワーク
300  仕事ロック
300  スマートデバイス
300  サブシステム
300  クライアントデバイス
400  エンカンブランスロック
400  コンピュータ
500  オペレーション
500  コンピュータ
500  変換エンジン(TE)
600  マルチノードネットワーク
600  実行エンジン(EE)
600  サブネットワーク
700  サブネットワーク
【図１Ａ】
2019514113.tif 000003
【図１Ｂ】
2019514113.tif 000004
【図１Ｃ】
2019514113.tif 000005
【図２Ａ】
2019514113.tif 000006
【図２Ｂ】
2019514113.tif 000007
【図２Ｃ】
2019514113.tif 000008
【図３Ａ】
2019514113.tif 000009
【図３Ｂ】
2019514113.tif 000010
【図３Ｃ】
2019514113.tif 000011
【図４Ａ】
2019514113.tif 000012
【図４Ｂ】
2019514113.tif 000013
【図４Ｃ】
2019514113.tif 000014
【図５】
2019514113.tif 000015
【図６】
2019514113.tif 000016
【図７】
2019514113.tif 000017
【図８】
2019514113.tif 000018
【図９】
2019514113.tif 000019
【図１０】
2019514113.tif 000020
【図１１】
2019514113.tif 000021
【図１２】
2019514113.tif 000022
【図１３】
2019514113.tif 000023
【図１４】
2019514113.tif 000024
【手続補正書】
【提出日】平成30年10月15日(2018.10.15)
【手続補正１】
【補正対象書類名】図面
【補正対象項目名】図１Ａ
【補正方法】変更
【補正の内容】
【図１Ａ】
2019514113.tif 000025
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図１Ｂ
【補正方法】変更
【補正の内容】
【図１Ｂ】
2019514113.tif 000026
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図２Ａ
【補正方法】変更
【補正の内容】
【図２Ａ】
2019514113.tif 000027
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図２Ｂ
【補正方法】変更
【補正の内容】
【図２Ｂ】
2019514113.tif 000028
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図２Ｃ
【補正方法】変更
【補正の内容】
【図２Ｃ】
2019514113.tif 000029
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図３Ａ
【補正方法】変更
【補正の内容】
【図３Ａ】
2019514113.tif 000030
【手続補正７】
【補正対象書類名】図面
【補正対象項目名】図３Ｂ
【補正方法】変更
【補正の内容】
【図３Ｂ】
2019514113.tif 000031
【手続補正８】
【補正対象書類名】図面
【補正対象項目名】図３Ｃ
【補正方法】変更
【補正の内容】
【図３Ｃ】
2019514113.tif 000032
【手続補正９】
【補正対象書類名】図面
【補正対象項目名】図４Ａ
【補正方法】変更
【補正の内容】
【図４Ａ】
2019514113.tif 000033
【手続補正１０】
【補正対象書類名】図面
【補正対象項目名】図４Ｂ
【補正方法】変更
【補正の内容】
【図４Ｂ】
2019514113.tif 000034
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図４Ｃ
【補正方法】変更
【補正の内容】
【図４Ｃ】
2019514113.tif 000035
【手続補正１２】
【補正対象書類名】図面
【補正対象項目名】図５
【補正方法】変更
【補正の内容】
【図５】
2019514113.tif 000036
【手続補正１３】
【補正対象書類名】図面
【補正対象項目名】図６
【補正方法】変更
【補正の内容】
【図６】
2019514113.tif 000037
【手続補正１４】
【補正対象書類名】図面
【補正対象項目名】図７
【補正方法】変更
【補正の内容】
【図７】
2019514113.tif 000038
【手続補正１５】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2019514113.tif 000039
【手続補正１６】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2019514113.tif 000040
【手続補正１７】
【補正対象書類名】図面
【補正対象項目名】図１０
【補正方法】変更
【補正の内容】
【図１０】
2019514113.tif 000041
【手続補正１８】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2019514113.tif 000042
【手続補正１９】
【補正対象書類名】図面
【補正対象項目名】図１２
【補正方法】変更
【補正の内容】
【図１２】
2019514113.tif 000043
【手続補正２０】
【補正対象書類名】図面
【補正対象項目名】図１３
【補正方法】変更
【補正の内容】
【図１３】
2019514113.tif 000044
【手続補正２１】
【補正対象書類名】図面
【補正対象項目名】図１４
【補正方法】変更
【補正の内容】
【図１４】
2019514113.tif 000045
【国際調査報告】
2019514113.tif 000046
2019514113.tif 000047