(57)【要約】  アプリケーションプログラムの分散化はますます進んでいる。トランザクションまたはアプリケーションの異なる構成要素に通信されたユーザデータは、ユーザの複合プロファイルを導出するためにリンクされ得ることが知られている。おそらく複数のセンサデバイスを含む分散ネットワークにおいて、ユーザデータのプライバシーを維持するシステムおよび方法が提示される。スマートデバイスの制御とプロバイダ間のサービスポータビリティへの応用が示される。
2019531532.tif 000002
【特許請求の範囲】
【請求項１】
ユーザへの製品および/またはサービスの引き渡しを容易にするための方法であって、
第1の実行可能コンピュータコードを、ユーザセッションが確立されているコンピューティング環境に挿入させるステップであって、前記第1の実行可能コンピュータコードが、前記製品および/またはサービスを提供するエンティティに関連付けられる、ステップと、
前記コンピューティング環境において、ユーザセッションを確立するステップと、
前記第1の実行可能コンピュータコードが前記ユーザセッションに挿入されたことに応答して、第1の仮想マシンを前記ユーザセッション内に作成するステップと、
前記第1の実行可能コンピュータコードを前記第1の仮想マシンにおいて実行するステップであって、前記第1の実行可能コンピュータコードを実行するステップが、通信ネットワークを介して、前記ユーザのユーザコンピューティングデバイスから、前記製品および/またはサービスの引き渡しを遂行するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての情報の第1の適切なサブセットを取得するステップを含み、すべての前記情報の前記第1の適切なサブセットは、前記製品および/またはサービスの引き渡しを遂行するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての前記情報の完全なセットよりも少なく、前記情報の前記第1の適切なサブセットが、前記第1の実行可能コンピュータコードによって処理され、前記第1の実行可能コンピュータコードが、第1の出力データを生成する、ステップと、
前記第1の実行可能コンピュータコードの実行が完了すると、前記第1の仮想マシンを終了するステップと、
前記第1の実行可能コンピュータコードによって生成された前記第1の出力データの少なくとも第1の部分に基づいて、第2の実行可能コンピュータコードを取得するステップと、
前記第2の実行可能コンピュータコードを、前記コンピューティング環境において確立された前記ユーザセッションに挿入させるステップと、
前記第2の実行可能コンピュータコードが前記ユーザセッションに挿入されたことに応答して、前記ユーザセッション内に第2の仮想マシンを作成するステップと、
前記第2の仮想マシンにおいて前記第2の実行可能コンピュータコードを実行するステップであって、前記第2の実行可能コンピュータコードを実行するステップが、前記通信ネットワークを介して、前記ユーザコンピューティングデバイスから、前記製品および/またはサービスの引き渡しを遂行するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての前記情報の第2の適切なサブセットを取得するステップを含み、すべての前記情報の前記第2の適切なサブセットが、前記製品および/またはサービスの引き渡しを遂行するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての前記情報の前記完全なセットよりも少なく、前記情報の前記第1の適切なサブセットに含まれていない情報を含み、前記情報の前記第2の適切なサブセットが、前記第2の実行可能コンピュータコードによって処理され、前記第2の実行可能コンピュータコードが、第2の出力データを生成する、ステップと、
前記第2の実行可能コンピュータコードの実行が完了すると、前記第2の仮想マシンを終了するステップと、
前記第2の実行可能コンピュータコードによって生成された前記第2の出力データに少なくとも部分的に基づいて、前記ユーザコンピューティングデバイスの前記ユーザへの前記製品および/またはサービスの引き渡しを行わせるステップと、
を備える、方法。
【請求項２】
前記第2の実行可能コンピュータコードを実行するステップが、前記第2の実行可能コンピュータコードによって生成された前記第1の出力データの少なくとも第2の部分を使用して前記第2の実行可能コンピュータコードを実行するステップを含む、請求項1に記載の方法。
【請求項３】
前記第1の出力データの前記第1の部分が、前記第2の実行可能コンピュータコードの識別子を含む、請求項1に記載の方法。
【請求項４】
前記第1の実行可能コンピュータコードによって生成された前記第1の出力データの少なくとも一部が、前記ユーザコンピューティングデバイスに関連付けられる暗号化鍵で暗号化され、前記第2のコンピューティングデバイスを実行するステップが、前記第1の実行可能コンピュータコードによって暗号化された前記出力データを復号するために前記暗号化鍵を取得するステップを含む、請求項3に記載の方法。
【請求項５】
前記ユーザコンピューティングデバイスの前記ユーザへの前記製品および/またはサービスの引き渡しを行わせた後に前記ユーザセッションを終了させるステップをさらに備える、請求項1に記載の方法。
【請求項６】
ユーザアクションに応答して前記ユーザセッションを終了させるステップをさらに備える、請求項5に記載の方法。
【請求項７】
前記コンピューティング環境のアクションに応答して前記ユーザセッションを終了させるステップをさらに備える、請求項5に記載の方法。
【請求項８】
前記ユーザセッションを終了するステップが、前記コンピューティング環境から前記ユーザセッションのメモリを消去するステップを含む、請求項5に記載の方法。
【請求項９】
前記ユーザセッションに含まれるデータストアに前記情報の前記第1および第2の適切なサブセットを記憶するステップをさらに備える、請求項1に記載の方法。
【請求項１０】
通信ネットワークを介してトランザクションを実行するための方法であって、
前記通信ネットワークを介して受信されたユーザ要求に応答して、コンピューティング環境においてユーザセッションを確立するステップと、
それぞれが前記トランザクションの一部を実行する複数の実行可能コンピュータコードを実行するステップであって、前記実行可能コンピュータコードの各々を実行するステップが、通信ネットワークを介して、前記ユーザのユーザコンピューティングデバイスから前記トランザクションを完了するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての情報の異なる適切なサブセットを取得するステップを含み、すべての前記情報の前記適切なサブセットの各々は、前記トランザクションを完了するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての前記情報の完全なセットよりも少なく、前記実行可能コンピュータコードの各々が、それが取得した情報の前記それぞれのサブセットを処理し、
前記実行可能コンピュータコードのうちの1つから以前に出力された暗号化された出力情報を取得することによって、前記実行可能コンピュータコードの各々の実行中に前記複数の実行可能コンピュータコード間でのみ情報が交換され、前記暗号化された出力情報が、前記出力情報を復号するために1つまたは複数の復号鍵が前記ユーザから要求されるように暗号化される、ステップと、
前記トランザクションを完了するために必要な前記実行可能コンピュータコードの最後の1つの実行を完了した後、情報の前記サブセットの各々がもはや前記コンピューティング環境において存在しなくなるように、前記ユーザセッションを終了するステップとを備える、方法。
【請求項１１】
前記実行可能コンピュータコードの各々が、実行が完了した後、前記実行可能コンピュータコードのうちの後続の1つを実行する前に終了される異なる仮想マシンにおいて実行される、請求項10に記載の方法。
【請求項１２】
前記トランザクションを完了するために必要とされる、前記ユーザコンピューティングデバイスから必要とされる前記情報のすべてを、前記実行可能コンピュータコードの個々のいかなる実行可能コンピュータコードもが取得しないことを保証するために、前記複数の実行可能コンピュータコードを監視するステップをさらに備える、請求項10に記載の方法。
【請求項１３】
前記ユーザによって提供された何らかの情報が、暗号化されていない前記実行可能コンピュータコードのいずれかによって別の実行可能コンピュータコードに通信されているかどうかを前記ユーザに警告するステップをさらに備える、請求項12に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
相互参照
本出願は、その内容全体が参照により本明細書に組み込まれている、2016年8月5日に出願された米国特許仮出願第62/371,403号の利益を主張する。
【背景技術】
【０００２】
サービス経験は、インターネットおよびウェブ上に豊富にある。ブロックチェーンベースのシステムなどの新しい発明は、自律走行車などのスマートデバイスにサービスを提供するためのスマートコントラクトと呼ばれるコンピュータプログラムを想定している。さらに、全体的なサービス経験が複数の構成要素に分解され得、複数のサービスプロバイダが個々の構成要素を提供し得ることが想定される。多くのスマートデバイス、スマートコンピュータプログラム、およびサービス経験はまた、ユーザコンピューティングデバイス、またはユーザデバイスが近接して配置されている物理的環境に配置されているセンサデバイスから取得されたデータを利用する。したがって、自律走行車の使用を伴うサービス経験は、ますます多くの量のユーザデータを収集し得る。ほとんどのサービス経験は、ユーザが提供した情報にも基づく。消費者は、ユーザデータのプライバシーを保護することに関心があるという兆候をますます示している。したがって、ますます大量のユーザデータを収集するセンサデバイスを用いてオンラインネットワークにおけるユーザデータのプライバシーを保護するサービス提供システムは、大きな社会的価値および商業的利益をもたらすであろう。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Emil Post(1947), Recursive Unsolvability of a Problem of Thue, The Journal of Symbolic Logic, vol. 12 (1947) pp.1-11
【非特許文献２】Martin Davis編(1965), The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions, Raven Press, New York, pp. 239ff
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書に記載の主題の一態様によれば、ユーザへの製品および/またはサービスの引き渡しを容易にするためのシステムおよび方法が提供される。本方法によれば、第1の実行可能コンピュータコードを、ユーザセッションが確立されているコンピューティング環境に挿入させる。第1の実行可能コンピュータコードは、製品および/またはサービスを提供するエンティティに関連付けられる。ユーザセッションがコンピューティング環境において確立される。第1の実行可能コンピュータコードがユーザセッションに挿入されたことに応答して、第1の仮想マシンがユーザセッション内に作成される。第1の実行可能コンピュータコードは、第1の仮想マシンにおいて実行され、第1の実行可能コンピュータコードを実行するステップは、通信ネットワークを介して、ユーザのユーザコンピューティングデバイスから、製品および/またはサービスの引き渡しを遂行するために必要とされる、ユーザコンピューティングデバイスから必要とされるすべての情報の第1の適切なサブセットを取得するステップを含む。すべての情報の第1の適切なサブセットは、製品および/またはサービスの引き渡しを遂行するために必要とされる、ユーザコンピューティングデバイスから必要とされるすべての情報の完全なセットよりも少ない。情報の第1の適切なサブセットは、第1の実行可能コンピュータコードによって処理される。第1の実行可能コンピュータコードは、第1の出力データを生成する。第1の仮想マシンは、第1の実行可能コンピュータコードの実行が完了すると終了される。第2の実行可能コンピュータコードは、第1の実行可能コンピュータコードによって生成された第1の出力データの少なくとも第1の部分に基づいて取得される。第2の実行可能コンピュータコードを、コンピューティング環境において確立されたユーザセッションに挿入させる。第2の実行可能コンピュータコードがユーザセッションに挿入されたことに応答して、第2の仮想マシンがユーザセッション内に作成される。第2の実行可能コンピュータコードは、第2の仮想マシンにおいて実行され、第2の実行可能コンピュータコードを実行するステップは、通信ネットワークを介して、ユーザコンピューティングデバイスから、製品および/またはサービスの引き渡しを遂行するために必要とされる、ユーザコンピューティングデバイスから必要とされるすべての情報の第2の適切なサブセットを取得するステップを含む。すべての情報の第2の適切なサブセットは、製品および/またはサービスの引き渡しを遂行するために必要とされる、ユーザコンピューティングデバイスから必要とされるすべての情報の完全なセットよりも少なく、情報の第1の適切なサブセットに含まれていない情報を含む。情報の第2の適切なサブセットは、第2の実行可能コンピュータコードによって処理される。第2の実行可能コンピュータコードは、第2の出力データを生成する。第2の仮想マシンは、第2の実行可能コンピュータコードの実行が完了すると終了する。第2の実行可能コンピュータコードによって生成された第2の出力データに少なくとも部分的に基づいて、ユーザコンピューティングデバイスのユーザへの製品および/またはサービスの引き渡しを行わせる。
【０００５】
本明細書に記載の主題の一態様によれば、通信ネットワークを介してトランザクションを実行するためのシステムおよび方法が提供される。本方法によれば、通信ネットワークを介して受信されたユーザ要求に応答して、コンピューティング環境においてユーザセッションが確立される。それぞれがトランザクションの一部を実行する複数の実行可能コンピュータコードがコンピューティング環境において実行され、実行可能コンピュータコードの各々を実行するステップは、通信ネットワークを介して、ユーザのユーザコンピューティングデバイスから、トランザクションを完了するために必要とされる、ユーザコンピューティングデバイスから必要とされるすべての情報の異なる適切なサブセットを取得するステップを含む。すべての情報の適切なサブセットの各々は、トランザクションを完了するために必要とされるユーザコンピューティングデバイスから必要とされるすべての情報の完全なセットよりも少ない。実行可能コンピュータコードの各々は、それが取得した情報のそれぞれのサブセットを処理する。実行可能コンピュータコードのうちの1つから以前に出力された暗号化された出力情報を取得することによって、実行可能コンピュータコードの各々の実行中に複数の実行可能コンピュータコード間でのみ情報が交換される。暗号化された出力情報は、出力情報を復号するために1つまたは複数の復号鍵がユーザから要求されるように暗号化される。トランザクションを完了するために必要な実行可能コンピュータコードの最後の1つの実行を完了した後、情報のサブセットの各々がもはやコンピューティング環境において存在しなくなるように、ユーザセッションは終了される。
【図面の簡単な説明】
【０００６】
【図１】書籍のオンライン購入における分散型トランザクションの要素を示す図である。
【図２】分散型トランザクションに内在する例示的なリンク情報を示す図である。
【図３】本発明の全体的な動作環境の一例を示す図である。
【図４Ａ】従来のDHアルゴリズムを示す図である。
【図４Ｂ】DHアルゴリズムの例示的な拡張を示す図である。
【図５Ａ】DHアルゴリズムへの拡張の動作を示す図である。
【図５Ｂ】DHアルゴリズムへの拡張の動作を示す図である。
【図５Ｃ】DHアルゴリズムへの拡張の動作を示す図である。
【図６】ディレクトリに含まれ得るコンテンツの一例を示す図である。
【図７】単一のVMを含む単一のセッションに関するデータベースプロセッサの動作を示す図である。
【図８Ａ】例示的なコンピュータプログラムを示す図である。
【図８Ｂ】コンピュータプログラム命令とそれらの意味論の例を示す図である。
【図９】データベースプログラムの動作に内在する図8Aのプログラムの例示的な書換えを示す図である。
【図１０】例示的な実施形態のための例示的なシステムアーキテクチャを示す図である。
【図１１Ａ】例示的な実施形態の動作の詳細を示す図である。
【図１１Ｂ】例示的な実施形態の動作の詳細を示す図である。
【図１１Ｃ】例示的な実施形態の動作の詳細を示す図である。
【図１２】第1の例示的な商業的実施形態を示す図である。
【図１３Ａ】第2の例示的な商業的実施形態を示す図である。
【図１３Ｂ】第2の例示的な商業的実施形態を示す図である。
【図１４】あるサービスプロバイダから別のサービスプロバイダへの例示的なサービスポータビリティを示す図である。
【発明を実施するための形態】
【０００７】
動機付け
ウェブサービスとウェブのビジネスモデルは、消費者から収集したデータ、および消費者についてのデータに大きく依存している。カスタマイズされ、パーソナライズされたサービス、およびユーザ経験は、消費者から収集され、場合によっては第三者プロバイダから取得されたデータを使用して作成される。広告、コンテンツおよびサービスのマーケティング、推奨事項などはすべて、ユーザデータとその分析結果に部分的に基づく。スマートカー、スマート家電などの、センサおよびセンサベースのデバイスをサポートするためにウェブが進化するにつれて、ユーザデータの収集が増加することが予想される。
【０００８】
付随的に、ユーザコミュニティは、ウェブ企業が彼らの個人データを大量に記憶するという事実を認識し始めており、この認識により、多くのユーザがユーザデータの記憶と使用に疑問を投げかけている。データのプライバシーに関する懸念が高まっている。企業におけるデータの停止や侵害、および企業のソフトウェアシステムのハッキングは、そのような懸念を悪化させる。
【０００９】
いくつかの実施形態では、本発明は、これらの懸念に対処するいくつかの特徴を提供するオープン分散型市場が構築され得るシステムおよび方法を説明する。「オープン」という用語は、独自のインターフェースなしで複数のサービスプロバイダが対話する可能性を指す。「分散型」という用語は、単一のエンティティが主導権を握っているわけではなく、全体的なサービスを提供するために様々なエンティティが組み合わされ得るという概念を指す。
【００１０】
本明細書に記載の発明により、ユーザが個人データの選択された要素を1つまたは複数のサービスプロバイダに明らかにし、サービスを取得することが可能になる。しかしながら、そのようなユーザデータの提供は、設計上、提供されたデータまたはそのメモリを保持することができない計算エンティティに自分のデータを明らかにするユーザによって制御される。すなわち、計算構造は、ユーザデータを受信し、後述する意味で「無菌」である環境においてそれ自体を実行し、次いでそれ自体を終了する。
【００１１】
1つまたは複数のサービスプロバイダは、ユーザに提供される製品および/またはサービスを一緒になって構成する別個の機能を実行する個々のエンティティとして編成され得る。そのような取決めの例として、ユーザが販売者から書籍を購入し、支払い処理業者(payment processor)を使用してそれに対して支払いをし、それを荷送人によって管理される出荷において受け取ることができるビジネスの取決めを締結するオンライン書籍販売者、支払い処理業者、および荷送人を考察する。
【００１２】
本発明では、書籍販売者、支払い処理業者、および荷送人は、特別に構成され(後でより詳細に説明される)、ユーザデバイスによって受信される、たとえばダウンロードされる、コンピュータプログラムまたはアプリなどの実行可能コンピュータコードによって表される。次いで、ユーザデバイスは、データベースプロセッサを含む(分散型)コンピューティング環境にプログラムを注入する。例示の目的で、個々の実行可能コンピュータコードはコンピュータプログラムと呼ばれるが、より一般的には、本明細書に記載の方法で構成された任意の適切な種類のコンピュータコードが使用され得る。
【００１３】
データプロセッサは、従来のデータベースプロセッサによって実行されない様々なアクションを実行する点に留意されたい。具体的には、データベースプロセッサは3つのアクションを実行するように構成されている。
【００１４】
第1に、サービスを求めているユーザコンピューティングデバイスに接続されると、データベースプロセッサは、ユーザコンピューティングデバイスとそれ自体との間にセッションを作成する。いくつかの実施形態では、ユーザデバイスとデータベースプロセッサとの間でデータを交換するために使用される通信チャネルは、保護されることが好ましい。使用され得るそのような安全なプロトコルの一例は、以下に説明される。
【００１５】
第2に、データベースプロセッサは、前述のコンピュータプログラムのうちの1つで提供される1つまたは複数の仮想マシン(VM)を生成する。VMは、順次または並行して生成され得る。各VMは、提供されたコンピュータプログラムのうちの1つを実行し、それらの各々は、後に説明されるように制限された出力を生成し得る。VMは、提供されたコンピュータプログラムの実行の終わりにそれら自体を終了するように構成される。
【００１６】
最後に、データベースプロセッサは、ユーザデバイスとデータベースプロセッサとの間に確立されたセッションを終了させる。このアクションは、たとえば、データベースプロセッサがユーザデバイスからのサービス要求が満たされたと決定した場合、またはデータベースプロセッサがユーザデバイスから特別なコマンドを受信した場合に起こり得る。データベースプロセッサは、セッション中に様々なVMによって出力された任意のデータを消去する。出力されたデータを消去する動作を表すために、セッションが「消去」された、またはセッションを「破棄」したと言える。
【００１７】
したがって、「データベースプロセッサ」という用語は従来技術において知られているが、本発明におけるその使用には、いくつかの新しい革新および機能、たとえば、仮想マシンの作成および管理などが必要であることが理解されよう。
【００１８】
説明のための実例(オンラインで書籍を購入する)
オンライン書店などのウェブサービスプロバイダの説明のための実例を考察することから始める。現在いくつかのそのような企業が存在し、それらは一般的に消費者が書籍を閲覧および選択し、自社内の支払いシステムを通じてタイトルを購入することを可能にする。次いで、購入した書籍は、別の自社内発送業務によって引き渡しされ得る。このように、オンライン書店は「シングルストップ」サービスを提供する。
【００１９】
消費者がそのようなサービスプロバイダに提供することが必要とされる情報は、ユーザ名、請求先住所、発送先住所、電話番号、クレジットカード情報、電子メールアドレス、およびユーザID/パスワードを備え得る。(サービスプロバイダは、クッキーやその他のメカニズムからユーザに関する情報を収集する第三者プロバイダから、消費者および彼らのアクションに関する追加情報を取得することもある。)
【００２０】
消費者は、そのようなすべての情報が提供される必要があるかどうかを尋ねる権利がある。企業を、販売者、支払いエンティティ、荷送人エンティティなどの別々のエンティティに分散されると仮定すると、消費者は、適切な情報のサブセットのみを個々のエンティティに提供することが可能であり得る。たとえば、他のいかなる情報も必要としない荷送人には自分の発送先住所のみが提供され得る。同様に、販売者は、タイトルに対する支払いが認証され得る場合、購入されるタイトルのみを必要とする。支払い処理業者は、消費者と資金を認証することだけを必要とする。
【００２１】
したがって、オンラインサービスプロバイダを別々のエンティティに分散させることによって、消費者は、必要に応じて自分の情報のサブセットを様々なエンティティに提供することが可能であり得る。
【００２２】
しかしながら、消費者は現在、個々のアクション(または、サブトランザクション)を単一のトランザクションに結び付ける「リンク情報」を管理するためのアクションを実行することに煩わされている。言い換えれば、個々のサブトランザクションは、書籍を選択すること、支払いをすること、および出荷を手配することを備え得る。リンク情報は、どの販売者とタイトルが購入されているかを支払い処理業者に知らせる。リンク情報の別の部分は、どのタイトルか、およびどこで出荷を引き取るかを荷送人に伝える。販売者は、支払い処理業者によって、どのタイトルが支払われるか、および誰の代わりに支払われるのか等を知らされる必要がある。
【００２３】
消費者はそのようなアクションに煩わされることを望まないので、オンラインシステムは、状態情報がエンティティ間で、たとえば販売者、支払い処理業者、および荷送人の間で受け渡されることを可能にする。状態情報は、個々のサブトランザクションが単一のトランザクションに一緒にリンクされることを可能にするコンテキスト情報を含む。従来技術では、タグまたはトークンなどの用語は、共有状態情報を含む計算構造を表すために使用されてきた。
【００２４】
事業体間でのトークンおよびタグの自動共有は、消費者が個々のサブトランザクションに関連付けられる「リンク情報」を管理することから解放されることを可能にする。しかしながら、欠点として、トランザクション全体を再構築するために第三者が共有トークン/タグを使用することが可能であり、その結果、ユーザ情報がユーザプロファイルに収集される。たとえば、ブラウザの「クッキー」に含まれるユーザ情報は、ユーザの統合プロファイルを構築するために日常的に使用されている。
【００２５】
関連する問題は、共有トークン/タグを受け取って使用するエンティティはこれらの手段を信頼しなければならないということである。悪意のあるユーザは、偽造または悪意のある情報をトークンまたはタグに挿入し、たとえば、資金や出荷を悪意のある住所にリダイレクトすることがある。
【００２６】
したがって、サービスプロバイダを別々のエンティティに分散させても、依然として第三者企業はユーザ情報を集約することが可能であることが明らかである。また、共有情報に関する追加のセキュリティと信頼の懸念も生じる。
【００２７】
したがって、以下の特徴を提供するシステムおよび方法を提供する発明を有することが望ましいであろう。
・オンラインサービスは、オープン分散型市場、すなわち、分散コンピューティング環境またはコンピュータプログラムのネットワークとして編成されたコンピュータプログラムのグループによって提供される。すなわち、事業体は、オープンネットワーク環境によって相互接続されたコンピュータプログラムによって表される。
・ユーザ情報は、(i)明示的な情報と、(ii)潜在的な情報の2つのクラスに分割される。コンピュータプログラムがその機能を実行し得るように、消費者によって明示的な情報がコンピュータプログラムに提供され、たとえば、消費者が指示された住所で商品を受け取ることができるように、プログラムによって必要とされるときに、消費者によって発送先住所が提供される。潜在的な情報、たとえば位置情報は、ユーザデバイスに関連付けられるセンサデバイスによって提供される。
・統合されたユーザプロファイルを取得するためにコンピュータプログラムによって出力された情報をリンクすることは不可能である。
・ユーザは上記の要件にもかかわらず統合された経験を経験し得る。
【００２８】
消費者が書籍を購入し、それを自分の住所に引き渡しさせる例示的なオンライントランザクションは以下を備える。(以下の説明において大文字で始まる名前はコンピュータプログラムを表す。)
・販売者は、注文時に顧客があらかじめ定められた地理的領域内、たとえばニューヨーク州内にいることを要求する。(そのような制限の1つの理由は、地方税法であり得る。)
・顧客はオンライン支払い処理業者から支払いを手配しなければならない。販売者は支払いの証明、すなわち支払い金額とタイトルを必要とする。
・支払い処理業者はユーザを認証する必要がある。
・購入したタイトルは、荷送人によって受け取ることができるように販売者によって入手可能になる。荷送人は、出荷を受け取るためのトークン(一実施形態では消費者によって提供される)情報と引き渡し先住所を必要とする。荷送人は、販売者がそのタイトルの受取りを承認したことを確認する必要がある。
【００２９】
我々は、消費者がデバイス、たとえばスマートフォン(以下、ユーザコンピューティングデバイスと呼ぶ)を使用してコンピューティング環境内のコンピュータプログラムと対話すると仮定する。したがって、消費者は、自分のコンピューティングデバイス上で実行されているコンピュータプログラムによって表されると考えられ得る。従来技術を利用して、販売者からタイトルを購入したい消費者、ジョンは、以下の一連のステップに着手することができる(図1参照)。
【００３０】
ステップ1において、ジョンは支払い処理業者に訪問し、必要に応じて支払い処理業者に情報を提供することによってアカウントを確立する。(注:このアクションは初期設定段階の一部であると見なされる場合がある。)ジョンは将来の使用のためにアカウント番号を発行される。
【００３１】
ステップ2において、ジョンはLocation Certifying Authority(LCA)にアクセスし、自分のGPS対応のモバイルデバイスからデータを提供する。LCAは自分の位置を示すトークン(トークン-1)をジョンに発行する。
【００３２】
ステップ3において、ジョンは販売者に訪問してトークン-1を提供し、販売者は、トークンが有効であることと、ジョンの位置が販売者制約を満たすこととを確認する。ジョンは購入するタイトルを選択する。販売者は彼にトークンを発行する(トークン-2)。
【００３３】
ステップ4において、ジョンは支払い処理業者にトークン2を提供し、支払い処理業者はトークンが有効であることを確認し、ジョンを認証し、トークン-2に含まれる情報に従って支払いを処理したことを示すトークン(トークン-3)をジョンに提供する。
【００３４】
ステップ5において、ジョンは販売者に再び訪問してトークン-3を提示する。販売者は、トークン-3が有効であることと、選択したタイトルの支払いを受け取ったことを確認する。確認の副産物として、販売者は、購入されるタイトルに関する情報、支払い金額、および購入者に関するいくつかの情報、たとえば、ジョンの名前または顧客番号を受け取る。販売者は、新しいトークン(トークン-4)をジョンに発行する。
【００３５】
ステップ6において、ジョンは荷送人を訪問し、トークン-4を提示する。荷送人は、トークンが有効であること、および出荷の準備ができていることを確認し、(後述されるように)確認プロセスの副産物として引き渡し先住所を取得する。
【００３６】
ステップ7において、トークン-4を使用して、荷送人は販売者から出荷を受け取り、それをステップ6において提供された引き渡し先住所に引き渡しする。
【００３７】
(上記では、説明のために、サービス提供エンティティの特定の分散型構成を仮定している。実際には、本発明を限定することなしに、サービス提供エンティティのうちの1つまたは複数が結合またはさらに分割され得る。)
【００３８】
以下の所見は上記のプロセスに関して注目に値する。
・ユーザは7つのステップのうち6つ(初期設定ステップを含む)を実行する必要がある。
・消費者がサービスを単一のプロバイダによって提供されても、プロバイダの集合体によって提供されても、ユーザが提供する情報の総量は同じである。
【００３９】
コンピュータプログラムは様々なトークンを使用することによって情報を確認し得る点にも留意されたい。まず、販売者は、トークン-1を使用して、購入者が位置制約を満たしていることを確認することができる。次に、販売者は、購入者が(トークン-3を使用して)購入代金を支払ったこと、および購入者が位置制約を満たしていることを確認することができる(トークン-1)。リンク現象の別の例として、荷送人は、出荷の準備ができていること、出荷の支払いが済んでいること、および購入者が位置制約を満たしていることを確認することができる点に留意されたい。図2においてA、B、C、およびDとマークされた矢印は、リンク現象を示す。
【００４０】
言い換えれば、すべてのトークンにアクセスできるエンティティは、トランザクション全体を効果的に再構築し、したがって統合されたユーザプロファイルを導出することができる。
【００４１】
ビットコインや元帳ベースのブロックチェーンシステムなどの高度な分散型でオープンなシステムおよび環境は、特定のエンティティが、たとえばスマートコントラクトまたはトランザクションなどのコンピュータプログラムからの情報をリンクし、複合ユーザプロファイルを作成することが可能であったことを報告している点に留意することは価値がある。
【００４２】
したがって、ユーザの個人データを保護するために、第三者が、たとえば図2におけるリンク情報A、B、C、およびDをまとめることによって、顧客データを使用してそのような統合/複合ユーザプロファイルを構築することを防止する解決策を有することが望ましい。これが本発明の目的である。
【００４３】
以下の説明では、2つのケースに注目する。
1.ユーザデータは、たとえばスマートフォンからのGPS位置データなどのユーザデバイス内に配置されたセンサから、または、たとえばユーザのスマートフォンに関連付けられるフィットネスブレスレットなどのユーザデバイスの外部のセンサデバイスから、コンピュータプログラムによって取得され得る。
2.消費者は、たとえば発送先住所を入力することによって、ユーザ入力によってサービスプロバイダに情報を提供してもよく、ユーザデバイスがユーザデバイス上で実行される1つまたは複数のアプリケーションを介してユーザデータを提供してもよい。
【００４４】
本明細書に記載の主題のいくつかの実施形態は、上記の両方のケースに対処する。
【００４５】
本発明の一般的なシステムおよび方法
図3は、本明細書に記載の主題が実装され得る動作環境の一例の高レベル概略図を示す。例示的なユーザコンピューティングデバイス100および150は、内部センサ、たとえばセンサ51、または外部センサ、たとえばセンサ52と関連付けられ得る。外部センサは、ブルートゥース(登録商標)、Wi-Fiなどの通信リンクを介して、そのそれぞれのユーザデバイスと通信し得る。ユーザコンピューティングデバイスの例は、これらに限定されないが、モバイル通信デバイス(たとえば、セルラー電話、スマートフォン)、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、スマートウォッチ、ウェアラブルコンピュータ(たとえば、フィットネスバンド)、携帯情報端末(PDA)、スマート包帯などのウェアラブル医療機器などを含む。
【００４６】
ユーザコンピューティングデバイスは、ワイヤレスおよび/またはワイヤードネットワーキングリンクを使用して、データベースプロセッサ203、すなわち、コンピュータプログラムを実行するコンパイラに類似している、それに供給されるコンピュータプログラムを実行するコンピュータプログラムを実行するハードウェアプロセッサを含む分散コンピューティング環境200に接続され得る。類推を進めるために、コンパイラは、コンピュータプログラミング言語またはFORTRANなどの仕様言語を使用して書かれたプログラムを実行する。データベースプロセッサは、後述する仕様言語を用いてコンピュータプログラムを実行する。
【００４７】
データベースプロセッサ203は、適切に指定されたコンピュータプログラムを実行するように要求されると、図3に示されるセッション202-1および202-2などのセッションと呼ばれる計算オブジェクトを生成する。データベースプロセッサ203は、分散コンピューティング環境200内の任意の所与の時間に動作する任意の数のセッションを有し得る。セッションは1つまたは複数の仮想マシンVMを含み得る。図3の例では、2つのセッション202-1および202-2はいくつかのVM204を含む。
【００４８】
セッションは、データが2つのリストに分類されるデータストアも含み、このリストは、TL(トークンリスト)およびPL(プログラムリスト)と呼ばれる。たとえば、セッション202-1はデータストア201-1を含み、セッション202-2はデータストア201-2を含む。通常、セッションごとに作成されるデータストアは1つだけである。TLリストおよびPLリスト内のデータに対してデータベースプロセッサによって実行される動作の詳細は後で提供される。
【００４９】
実際には、いくつかの実施形態では、データベースプロセッサは、1つまたは複数のセッションオブジェクトが作成され得る1つまたは複数のユーザ空間の作成および終了をオペレーティングシステムのカーネルによって可能にするコンピュータ仮想化プログラムとして実装され得る。データベースプロセッサは、セッション内のデータストア内のTLリストおよびPLリスト上で動作する1つまたは複数のVMをセッションオブジェクト内に作成する。コンピュータソフトウェアの仮想化は従来技術においてよく知られている。
【００５０】
センサデバイスからのデータ
ユーザコンピューティングデバイスは、1つまたは複数のネットワーク接続(固定および/またはワイヤレス)を有する1つまたは複数のプロセッサと、場合によってはデバイスの状態またはその環境を検出する1つまたは複数のセンサとを含むデバイスである。前述のように、ユーザコンピューティングデバイスの例は、スマートフォン、タブレットコンピュータ、ラップトップ/デスクトップコンピュータ、スマートカー、スマート家電製品、ウェアラブルコンピュータなどを含む。
【００５１】
図3における説明のための実例を参照すると、センサ51は、ユーザデバイス100から分散コンピューティング環境200によって受信され、データストア201に記憶される、たとえば地理的位置データ、周囲温度、ユーザ動作データなどのデータを生成し得る点に留意するべきである。
【００５２】
そのようなセンサデータ上で動作するコンピュータプログラムは、データが信頼できるセンサによって生成されていることを保証する必要があり得る。信頼モデルを達成するために、1つの実装形態は以下のように進行する。
【００５３】
コンピュータプログラムにデータを提供しようとするユーザコンピューティングデバイスに関連付けられるセンサ(内部または外部)が、最初にコンピュータプログラムに登録されなければならないことを必要とする。
【００５４】
2つのエンティティ間に安全な接続を確立することは従来技術においてよく知られている。たとえば、ディフィーヘルマン(DH)法を使用し得る。DHアルゴリズムは、2つの通信当事者によって共有される秘密を構築することによって動作する。それは次のように働く。
【００５５】
2つの当事者をAおよびBと命名する。(AおよびBをコンピュータプログラムであると仮定し得る)。AとBは2つの素数「g」と「p」について合意する。次に、Aは暗証番号、たとえば「a」を生成し、Bは暗証番号「b」を生成する。
「A」は、
ga(mod p)=x
を計算し、Bは、
gb(mod p)=y
を計算する。AとBは、計算された数値「x」と「y」を交換する。「A」は、「B」から受け取った「y」の数値が、自分が生成した数値、つまり「x」と等しいことを発見する。同様に、Bは、Aから受け取った数値「x」が、自分が生成した数値「y」と等しいことを発見する。互いに一致する発見は、べき乗の数学的性質と整数乗算の可換性に基づく。
(gamod p)b(mod p)=gab(mod p)
(gbmod p)a(mod p)=gba(mod p)
【００５６】
図4Aは、オープンチャネルを保護するために従来のDHプロトコル/方法を使用する、アリスとボブという名前の2つのコンピュータプログラムを示す。プロトコルの概念に読者を精通させるために、DHプロトコルについて簡単に説明する。
【００５７】
ステップ1において、アリスとボブの両方が整数「g」と「p」について合意し、ステップ2において、標準DHアルゴリズムを使用してそれらの間に安全なチャネルが設定される。ステップ3において、アリスは、ランダムな整数「a」を選択し、(gamod p)を計算し、ステップ4においてその結果をボブに送信する。ステップ5においてボブはランダムな整数「b」を選択し、(gbmod p)を計算し、ステップ6においてその結果をアリスに送信する。ステップ7aおよび7bにおいて、アリスとボブの両方は、示されるようにK=(gabmod p)を計算する。ステップ8において、両者は、それらの間で交換される将来のメッセージのための暗号化鍵として、計算された「K」を使用することに同意する。
【００５８】
DHプロトコルの使用により、アリスとボブのプログラムは、計算された鍵「K」を使用すれば、オープンな公開チャネルを介してそれら自身の間でメッセージを安全に交換し得ることが保証される。つまり、メッセージ「m1」をボブに送信したいアリスは、関数encrypt(m1、K)=m2を使用してメッセージを暗号化する。ボブは、「m2」を受信すると、関数decrypt(m2、K)=m1を使用してそれを復号し得る。
【００５９】
2つの当事者間の安全な通信のためのDHアルゴリズムはよく知られているが、それは3つ以上の当事者のために拡張されてもよい。しかしながら、そのような拡張は、参加する当事者によって実行されるべき追加のべき乗/暗号化ステップを含み得る。場合によっては、通信しているすべてのエンティティ間で複数のメッセージがブロードキャストされる必要がある場合もある。べき乗は高価なプロセスであり、ユーザデバイスに関連付けられる多くのセンサデバイスを有する可能性があるため、DHへのそのような拡張は法外に高価になる可能性がある。また、べき乗演算を実行することができる(または、それらを迅速に実行することができる)ハードウェアは、センサデバイスにおいて利用できない場合がある。したがって、複数のセンサデバイスを有するチャネルにおけるDHの使用を考察するとき、我々は計算コストがより安価な方法を使用したいと思うかもしれない。
【００６０】
DHアルゴリズムは特定の状況において脆弱性を有することが知られている。(これらの脆弱性を軽減するために使用され得る技術も知られている。)しかしながら、第2の当事者との安全なチャネルを確立した第1の当事者とセンサデバイスを関連付ける我々の方法は、安全なチャネルを設定するためにDHアルゴリズムを使用することに依存せず、2つの当事者間に安全なチャネルを確立する任意のアルゴリズムが使用され得る。
【００６１】
したがって、上記のDHアルゴリズムの説明は純粋に教育的なものであり、実現例として役立つ。2つの当事者間に安全なチャネルを確立する方法はいずれも、我々の方法と組み合わせて使用され得る。
【００６２】
次に、我々の方法を提示し、それが軽量であって、複数のセンサデバイスをユーザコンピューティングデバイスと関連付けることを可能にする点に留意されたい。すなわち、センサデバイス(s1、s2、s3など)がユーザコンピューティングデバイス「ud」と関連付けられ得るチャネルを考察し、次に、そのチャネルはデータベース「db」に記憶されたデータ上で動作するコンピュータプログラム「A」への安全な接続を有する。この状況を次のように表現することができる。
[s1,s2,s3,…] ---ud---db---A
【００６３】
我々の手法は、概して、以下の一連のステップとして説明され得る(図4B)。この図は、コンピュータプログラムに登録された単一のセンサデバイスを示している。実際には、いくつかのセンサデバイスが単一のコンピュータプログラムに登録され得る。センサデバイスはまた、複数のコンピュータプログラムに登録され得る。
1.「ud」、「db」、およびコンピュータプログラム「A」の間にセッションを確立する。
2.適切なアルゴリズムを使用して、「ud」と「db」との間に安全な接続を確立する。一実施形態では、安全な接続を確立するためにDHアルゴリズムを使用し、したがって、「ud」および「db」は暗号化関数、たとえばK(共有秘密に基づく)、素数ベース「g」、および係数「p」について合意する。
3.プログラム「A」は、センサデバイスにそれ自身を登録するように要求し、登録識別子をセンサデバイスに発行する。後者は、ハッシュされたバージョンの識別子をユーザデバイスに提供する。ここで使用される関数は、上記のステップ2において合意されたハッシュ関数とは異なる点に留意されたい。
4.センサデバイスはセンサデータを「db」に送信し、それを記憶させる。
5.「A」は「db」からセンサデータを要求し、それは特定のパラメータとともに「ud」にリダイレクトされる。
6.「A」は、ステップ5からのパラメータとその前に発行された識別子(「A」およびセンサデバイス「s1」のみに知られている)に基づいて、「ud」から承認を要求および受信する。
7.承認されると、「A」は「db」からデータにアクセスする。
8.上記のステップ1において確立したセッションが消去される。
【００６４】
次に、図5Aを参照して上記のプロセスのより完全な説明を提供する。
【００６５】
ステップ1aにおいて、ユーザデバイス、第1のコンピュータプログラム(いくつかの実施形態では、本明細書で言及されるデータベースプロセッサであり得る)、および第2のコンピュータプログラムの間にセッションを確立する。ステップ1bにおいて、ユーザデバイスと第1のコンピュータプログラムは、「g」(素数ベース)と「p」(素数係数)について合意する。
【００６６】
ステップ2において、ユーザデバイスと第1のコンピュータプログラムとの間に安全なチャネルを確立する。DHまたは何らかの適切なアルゴリズムのいずれかが使用され得る。説明のためにDHを使用すると仮定する。
【００６７】
ステップ3において、センサデバイスが初期化され、すなわち、そのソフトウェアロジックがトリガまたは起動され、ステップ4aにおいて、第2のプログラムがセンサデバイスに登録要求を発行する。第2のコンピュータプログラムがセンサデータを必要としていると仮定し得る。第2のコンピュータプログラムはセンサデバイスのアドレスを知らない可能性があるので、要求はユーザデバイスに送信される。ユーザデバイスは、第2のコンピュータプログラムのアドレスとともに要求をセンサデバイスに転送する。
【００６８】
ステップ4bにおいて、センサデバイスは第2のコンピュータプログラムに識別子を要求し、ステップ5において「D」で示される識別子が提供される。暗号化関数の名前、たとえばH(または、暗号化関数の実行可能コード)も提供される。(たとえば、センサデバイスは、その製造業者によって1つまたは複数の暗号化関数を事前に提供されていることがある)。ステップ6aにおいて、センサデバイスは、関数「H」を使用して「D」をハッシュし、その結果をユーザデバイスに送信する。ユーザデバイスは「D」を認識せず、H(D)のみを受信する点に留意されたい。暗号化関数「H」はステップ2からの暗号化関数「K」とは異なることが要求される。
【００６９】
ステップ6bにおいて、ユーザデバイスは、g^H(D)(「^」はべき乗演算を表す)を計算し、その結果をデータベースプロセッサに送信する。ステップ7において、センサデバイスはセンサデータの生成を開始し、それをデータベースプロセッサに送信し、データベースプロセッサは他のコンピュータプログラムによる後の検索のためにそれを記憶させる。
【００７０】
1つまたは複数のコンピュータプログラムがセンサデータへのアクセスを要求し、そのようなコンピュータプログラムの要求を承認するためにユーザデバイスを使用することを予想して、データベースプロセッサは認証識別子Aを生成し、それをユーザデバイスに送信する(ステップ8Aおよび8B、図5B参照)。
【００７１】
次に、ユーザデバイスはステップ9(図5B)に示される一連の計算を実行する。これらのステップの目的は2つある。まず、センサデバイス識別子と認証識別子を秘密に組み入れることを望む。これにより、データベースプロセッサによって要求されたときに、ユーザデバイスがセンサデバイスを確認することが可能になる。
【００７２】
第2に、認証識別子を秘密に組み入れることにより、要求されたときに(以下に示されるように)ユーザデバイスがセンサデバイスを第2のコンピュータプログラム(データベースプロセッサとは異なる)に対して確認することが可能になる。
【００７３】
ステップ9に示される計算(図5B参照)は、データベースプロセッサによって生成された認証識別子とセンサデバイスに割り当てられた識別子「D」とに関連付けられる3つのパラメータT、U、およびVの導出をもたらす。(上述の計算を実行できるように、すべての識別子は整数であることが必要とされる点に留意されたい。)
【００７４】
ステップ10において、ユーザデバイスはパラメータT、U、およびVを記憶のためにデータベースプロセッサに送信する。データベースプロセッサおよびユーザデバイスは、安全なチャネルDHを設定する際に素数ベース「g」について前もって合意しているので、エンティティ、たとえば、パラメータT、U、およびVを導出するための「g」を知らない図5Bに示されるコンピュータプログラムにとっては計算上困難である点に留意されたい。データベースプロセッサによってユーザデバイスに提供される認証識別子「A」は、パラメータを計算するために必要である点にも留意されたい。
【００７５】
チャネルを設定し、様々な導出されたパラメータを記憶したので、次に、第2のコンピュータプログラムがセンサデータへのアクセスを要求するケースを考察する(ステップ11、図5C)。データベースプロセッサは、本発明の原則のうちの1つによって、ユーザデバイスからの許可を必要とする。同時に、第2のコンピュータプログラムは、センサデバイスが要求された情報を提供することを承認されることを保証されることを望む。
【００７６】
これら2つの目的を達成するために、コンピュータプログラムは、ユーザデバイスから許可を求めるようにリダイレクトされる(ステップ12A)。リダイレクト命令は、図5Bに示されるように、センサデバイスに以前に関連付けられ、ユーザデバイスによってデータベースに記憶されたパラメータA、T、U、およびVを提供することによってオーバーロードされる。
【００７７】
ステップ12Bにおいて、第2のコンピュータプログラムは、識別子「D」(第2のコンピュータプログラムおよびセンサデバイスにのみ知られている)ならびにパラメータA、T、U、およびVをユーザデバイスに送信する。後者(ステップ13Cおよび13D)は、(図示のように)Zを導出し、それを(第2のコンピュータプログラムから受け取った)Tの値と比較するために、UおよびVならびに素数ベース(それおよびデータベースプロセッサにのみ知られている)を使用する。(ZはUとVの知識に依存し、UとVはU、V、Aなどを知っていることに依存する点に留意されたい。)一致が成功すると、データベースプロセッサによってA、T、U、およびVパラメータが第2のコンピュータプログラムに提供されたことをユーザデバイスに保証する。(「g」および暗号化鍵Kを知ることなしにT、U、およびVを生成することはコンピュータプログラムにとって計算上困難であることを思い出されたい。)
【００７８】
さらに、ステップ13AにおいてユーザデバイスはH(D)を計算し、ステップ13Bにおいて、それをステップ6aにおいてセンサデバイスから受信したハッシュ値「D」と比較する。成功した一致は、第2のコンピュータプログラムがセンサデバイスに識別子を提供したことを示す。
【００７９】
ステップ14において、ユーザデバイスは、認証されたものとして識別子「D」をマーク付けし、それをステップ15において第2のコンピュータプログラムへのアクセスを許可し得るデータベースプロセッサに送信する。次に、第2のコンピュータプログラムは、ステップ16において、データベースプロセッサにデータアクセス要求を発行するために、データベースプロセッサによって提供された承認を使用し得る。
【００８０】
データアクセスが完了すると、ステップ1aにおいて確立されたセッションは消去され得る(ステップ17)。
【００８１】
センサデバイスを含む例示的な実施形態
上記の方法の使用の実際的な例として、人が自動車の様々な機能を制御する、たとえば、自動車のロックを解除すること、所有者が待っている場所などに自動車を呼び出すことなどを可能にするキーフォブを装備したスマートカー(たとえば、自動運転車)を所有する人を考察する。
【００８２】
上記で提供された説明からいくつかの用語を使用して、以下の対応関係を仮定する。
1.自動車のキーフォブはセンサデバイスに対応する。
2.所有者のスマートフォンはユーザコンピューティングデバイスに対応する。
3.コンピュータ環境において動作するコンピュータプログラムは「第1のコンピュータプログラム」と呼ばれることになる。
4.スマートカー内の1つまたは複数のプロセッサ上で動作するアプリケーションプログラムは、第2のプログラムと呼ばれることになる。
【００８３】
(キーフォブとは異なる)センサデバイスの別の例として、スマートカーは、料金所への支払いを管理するために設置されたデバイスを有し得、すなわち、料金支払いデバイスは料金レーン内の機器によってトリガされ、デバイスは、事前に提供された銀行/クレジットカードアカウントに基づいて支払いを行うために機器と相互作用する。すなわち、この場合、(i)自動車に設置された料金支払いデバイスと、(ii)所有者/運転者によって運ばれるキーフォブとの2つのセンサデバイスを有し得る。上記で説明したように、2つのセンサデバイスは、第2のコンピュータプログラム、すなわち自動車のプロセッサにおいて実行されているプログラムとの独立した登録を確立し得る。
【００８４】
たとえば、ニューヨークにおけるEZ-Passなどの現在の料金支払いデバイスは、いかなる時も、誰か自動車を運転または制御しているかに関係なく、ユーザの銀行アカウントに永久的にリンクされている。本明細書に記載の発明を使用して、適切に構成された料金支払いデバイスが優先的に車内に設置され、運転者によって運ばれるユーザデバイスに結び付けられ得る。次いで、ユーザデバイスは、ユーザデバイスのユーザ/所有者によって指定された銀行アカウントを使用することを料金支払いデバイスに承認する。したがって、ユーザであるジョンが自動車を運転していて、自分のスマートフォンを持っている場合は、料金支払いデバイスはジョンのアカウントに請求する。同じ自動車が異なるユーザ、たとえばメアリーによって運転されており、メアリーがスマートフォンを持っている場合、メアリーの銀行アカウントに料金が請求される。したがって、たとえば、自動車製造業者は、料金支払いデバイスが事前設置された自動車を提供し得る。さらに、現在の慣例では、レンタカー会社は、料金支払いデバイスを「所有」しているために料金を支払う義務がある、すなわち、レンタカー内の料金支払いデバイスはレンタル会社の銀行アカウントまたはクレジットカードに関連付けられるため、レンタカー会社はそのような車を利用し得る。
【００８５】
上述したプロトコルは、センサデバイス、たとえばキーフォブまたは料金支払いデバイスをユーザコンピューティングデバイスと関連付ける。ユーザコンピューティングデバイス、第1および第2のコンピュータプログラムは、ユーザデバイスと第1のコンピュータプログラムとの間に安全なチャネルとのセッションを確立する。第1のコンピュータプログラムは、たとえば自動車製造業者のクラウドコンピューティング環境によって実行され得、第2のコンピュータプログラムは、たとえばスマートカー内に設けられたプロセッサ上で実行し得る。(特定の実施形態では、クラウドコンピューティング環境は、たとえばダウンロード動作を使用して、クラウドコンピューティング環境への接続が必要とされないように、車内の1つまたは複数のプロセッサに実行可能コードを定期的に提供する。)第2のプログラムは、運転手/所有者にサービスを提供するために、センサデバイスからのデータを必要とする。場合によっては、第2のプログラムは、キーフォブが自動車から一定の距離内にあることを確認する必要があり得る。他の場合では、第2のプログラムは、キーフォブがユーザデバイスによって承認されたこと、たとえば、キーフォブは料金を支払うためにユーザデバイスによって承認されたか?を保証する必要がある場合がある。
【００８６】
キーフォブは、自動車の中に存在しなくても、所有者/運転者によって様々なサービスを開始するために使用され得る。たとえば、キーフォブから発行されたコマンドによって、自動車を指定された場所まで運転したり、車内を特定の温度まで温めたりすることができる。
【００８７】
所有者/運転手の情報は、自動車のプロセッサにおいて実行される第2のプログラムには記憶されていない点に留意することが重要である。第2のプログラムは、第1のプログラムによって記憶されているデータを読み取って、データを使用し得る。(この態様は、後の記述において詳しく説明される。)第2のプログラムの実行の終わりに、後者のプログラムを実行しているプロセッサのメモリが消去される。以下に説明されるように、所有者/運転者セッションの終わりに、セッションデータも消去される。
【００８８】
したがって、自動車の機器はユーザのデータのみにアクセスすることができ、そのプロセッサはユーザのためにサービスを実行しており、これらのプロセッサは実行後にユーザのデータを保持しない。
【００８９】
暗号化鍵に関するメモ
上記の説明に従ってデータベースプロセッサおよびユーザコンピューティングデバイスによって合意された暗号化鍵に加えて、ユーザデバイスが1つまたは複数の追加の暗号化/復号鍵を備えていると仮定する。後述の例では、データを暗号化または復号する必要性について説明する機会がある。その目的のために、そのようなプログラムは、ユーザデバイスから関連する鍵を探すことが要求され、次に内部ポリシーを使用して鍵を提供し得、たとえば、提供された鍵のリストからランダムに鍵を提供することを選択してもよく、あらかじめ定められた期間にわたって使用されていない鍵を提供することなどを選択してもよい。
【００９０】
データベースプロセッサと仮想マシン
センサデータを処理したので、次にユーザが提供した情報の処理について説明する。たとえば、オンラインサービスプロバイダがオンライン書店である例では、ユーザが提供した情報は、発送先住所、支払いアカウント番号などを含むことになる。この目的のために、データベースプロセッサの詳細、すなわちセッション、VMおよびそれが作成し管理する実行可能コンピュータコード(たとえば、コンピュータプログラム)をさらに説明する必要がある。
【００９１】
1つまたは複数のサービスプロバイダは、ディレクトリに記憶されている、後述する仕様言語を使用してコンピュータプログラムまたはアプリを作成する。一実施形態では、ディレクトリは、図3の分散コンピューティング環境200の内部構成要素である。他の実施形態では、ディレクトリはスタンドアロンシステムとして実装され得る。一実施形態では、ディレクトリは、コンピュータプログラムがアクセスされ得るオンライン位置(サーバ、ウェブサイトなど)のアドレスを含む。したがって、ディレクトリはコンピュータプログラムの検索可能なリストを含み得る。
【００９２】
例示的なコンピュータプログラムは、「書籍販売者」、または「支払い処理業者」、「荷送人」などのアクションを実行し得る。他の例示的なサービスプロバイダは、「スマートカーサービス」または「医療サービス」などを可能にするプログラムを提供し得る。図6は、提案されたプログラムのディレクトリ内のいくつかの例示的なエントリを示している。
【００９３】
「プログラム名の一致」というタイトルの列は、コンピュータプログラムの名前を表す。「全体的なサービス記述」というタイトルの列は、名前が付けられたプログラムによって提供されるサービスを記述する一般的な語句を表す。「ユーザ情報リスト」列は、要求された場合にサービスの提供のためにユーザに要求されるすべてのユーザデータ属性のリストを提供する。これらのユーザデータ属性の適切なサブセットは、サービスをユーザに提供するために必要な異なるコンピュータプログラムに提供される点に留意されたい。すなわち、ユーザが最初にサービスを要求したオンラインサービスプロバイダによって提供されるプログラム(たとえば、書籍販売者)を含む個々のプログラムのいずれも、図6の「ユーザ情報リスト」に含まれるすべてのユーザデータ属性を受け取ることはない。後者については以下でさらに後述する。
【００９４】
データベースプロセッサによるオンライン検索を可能にするようにディレクトリが編成されることが想定される。たとえば、「プログラム名の一致」という列は検索可能なデータ構造として編成され得、データベースプロセッサがディレクトリ内のエントリ、すなわちコンピュータプログラムの存在を効率的に検索し確認することを可能にする。「供給者の名前および住所」とラベル付けされた列は、供給者の名前およびそのオンライン位置、たとえば名前が付けられたコンピュータプログラムが取得され得るIPアドレス、ウェブサイトアドレスなどを記述することを意味する。たとえば、供給者の名前によって、コンピュータプログラムを見つけるために、ユーザがディレクトリを検索し得ることが想定される。
【００９５】
ディレクトリ内のプログラムを検索し発見することは、ユーザが検索可能な属性を述べ得ること、たとえば、書籍を購入することを可能にするプログラムを見つけ得ることをさらに意味する。たとえば、ディレクトリ内に「書籍」という名前のプログラムがあると仮定する。それは、「書籍を買う」、「安い書籍」などの関連付けられる検索属性を有し得る。図6における表の「検索属性」という列は、この概念を伝えることが意図されている。
【００９６】
また、コンピュータプログラムがディレクトリ内の「一致する」コンピュータプログラムの名前または他の識別子を見つける機会もあり、たとえば、プログラムの名前Nが与えられると、その名前が名前「N」と一致するディレクトリ内のコンピュータプログラムを見つける。したがって、ディレクトリがコンピュータプログラムの名前または他の識別子を含むエントリを含むと仮定する。図6における「プログラム名の一致」という列は、この概念を伝えることが意図されている。
【００９７】
実際には、上述の様々な種類の検索メカニズムはすべて、AND、OR、およびNOTなどのブール接続詞を使用して組み合わせられ得る。したがって、たとえば、「書籍を買う」という属性などを用いて、供給者3によって供給される名前Nを有するプログラムを見つける。
【００９８】
ユーザはそのディレクトリを検索し、プログラムを見つけ、そのプログラムを自分のユーザコンピューティングデバイスにダウンロードし得る。サービスプロバイダからサービスを探す場合、ユーザはデータベースプロセッサに、セッションを開始し、発見されたプログラムをセッションのデータストアのPLリストに注入するように要求し得る(図3)。あるいは、ユーザは、データベースプロセッサにセッションを作成させ、発見されたコンピュータプログラムをそのセッションのPLリストに注入させるディレクトリを検索するときにアクションを実行するかまたはコマンドを発行し得る。これらの実施形態のいずれかを示すために、「ユーザデバイスはコンピュータプログラムの注入を引き起こす」という語句を使用する。
【００９９】
サービスまたは製品を取得するか、または何らかのオンライントランザクションを実行するために、ユーザデバイスはデータベースプロセッサに要求を発行する。要求により、データベースプロセッサはセッションを開始し、1つまたは複数の仮想マシン、たとえばVM1、VM2などを作成し、セッション内のデータストア内のTLおよびPLリストを初期化する(図3)。最初はTLリストとPLリストが空である点に留意されたい。ユーザデバイスは、発見されたプログラムの名前をリストPLに注入させる。
【０１００】
後述するように、データベースプロセッサは、プログラムの名前についてリストPLを監視し始めるようにさらに構成される。PLリスト内に名前が見つかった場合、データベースは、PLリストに挿入された名前と名前が一致するディレクトリ内の1つまたは複数のコンピュータプログラムを検索しようとする。
【０１０１】
データベースプロセッサはPLリストを監視しているので、ユーザデバイスによって注入させられた名前と名前が一致するディレクトリ内の1つまたは複数のコンピュータプログラムを見つけ得る。
【０１０２】
データベースプロセッサは、ディレクトリ内の1つまたは複数の一致するプログラムをフェッチし、そのような各プログラムをセッション内の1つの仮想マシンに挿入し、各仮想マシンに注入されたプログラムを実行することを要求する。注入されたプログラムがVM1、VM2において実行を開始すると、それらは出力を生成し得る。後で示されるように、そのようなプログラムの出力は、一般に、暗号化されたデータを含むトークンと、コンピュータプログラムの名前または他の識別子の2つの形式になるように制限されている。名前や他の識別子は暗号化されていない(in the clear)。
【０１０３】
データベースプロセッサは、VM内で実行されているプログラムによって出力され得る(暗号化された)トークンをそのセッションのTLリストに記憶するように構成される。そのセッションのPLリストには、VM内で実行中のプログラムによって出力されたあらゆるプログラムの名前が記憶される。
【０１０４】
したがって、データベースプロセッサの動作を指定する監視条件を述べることができる。
[監視条件、MC]:データベースプロセッサは、各セッション内のPLリストを検索してコンピュータプログラムの名前を探し、名前がPLリスト内の名前と一致するディレクトリ内のコンピュータプログラムを見つける。たとえば、名前が「P」のディレクトリ内にあるコンピュータプログラムを考察する。すなわち、
プログラム:名前=「P」
次に、PLが名前「P」を含むとする。この場合の一致条件は満たされる。
【０１０５】
VM内で実行中のプログラムが実行を終了すると、そのプログラムとそれが実行しているVMの両方が消去される。セッション内のすべてのVMが消去されると、セッションが終了する。
【０１０６】
プログラムリストを監視し、プログラムを実行してPLおよびTLなどをポピュレートする(populate)出力を生成するセッションおよびVMを作成する上記のプロセスは、MC条件を使用して新しい一致が見つけられなくなるまで続く。我々は、方法RMと表される以下の方法によって上述のプロセスをカプセル化し得る。
1.ユーザ要求を受信する。リストPLとTLを含むセッションとそのデータストアを作成する。
2.ユーザがプログラムの名前をPLに注入させる。
3.データベースプロセッサは、条件MCを使用して監視プロセスを実行する。
4.成功した一致が見つかった場合は、一致したコンピュータプログラムがディレクトリからフェッチされ、各プログラムはこの目的のために作成されたVMに挿入され、VMは挿入されたプログラムを実行するように構成される。プログラムは、TLリスト内のデータ上で動作し得る。それらの出力は、PLリストに挿入されたプログラムの名前、またはTLリストに挿入されたトークンを備え得る。
5.重複する一致が発生しないように、ディレクトリの内容と一致したPLリスト内の名前がPLリストから削除される。
6. VM内で実行中のプログラムが実行を終了すると、VMは消去される。
7. PLリストが空になるまで、ステップ4、5、および6を繰り返す。
8.セッションを消去する。
【０１０７】
したがって、単一のセッションに対するデータベースプロセッサの上記の動作は、図7に示されるように表され得る。セッションオブジェクト202は、TL41上で動作し、TL41にトークンを記憶し、PL31にプログラム名を出力するプログラム205を実行するVM204を含む。データベースプロセッサ203はディレクトリサーバ500にアクセスする。ディレクトリサーバ500はまた、上述のようにコンピュータプログラムを検索または発見することを望むユーザコンピューティングデバイスによってアクセスされ得る点に留意されたい。データベースプロセッサ203は、上述のように方法RMに従って動作するように構成される。
【０１０８】
データベースプロセッサによって作成されたVM内で実行されるコンピュータプログラムをまだ説明していない。最初に例示的なケースを説明する。
【０１０９】
図8Aの書籍、支払い、および出荷という名前の3つのコンピュータプログラムを考察する。
【０１１０】
プログラム「書籍」は、ほとんど自明の命令を備える。したがって、「書籍のリストをユーザに表示する」は、コンピュータプログラムが指示された命令を実行すると、書籍のリストがユーザデバイスに表示されることを意味すると解釈される。リスト内のデータは、コンピュータプログラムに先験的に提供され、たとえば、プログラムはそのようなリストを用いて最初に提供され得ると仮定される点に留意されたい。(ユーザデバイスの仕様は実行時に「束縛」され、コンピュータ命令内の変数の特定のエンティティへの束縛は従来技術においてよく知られている。)別の例として、命令「書籍のタイトルをユーザに尋ねる」は、ユーザデバイスからの入力を求める。そのような情報は実行時にユーザによって提供される。
【０１１１】
命令「ユーザデバイスの位置を取得する」は、ユーザデバイスからどのセンサデータがアクセスされるかによって前述の手順に類似した手順を実行するための命令である。
【０１１２】
命令「トークン:位置」は、さらなる説明を伴う。命令は、データ「位置」をTL41(図7)に出力される暗号化形式にカプセル化することを示すことを意味する。一般に、トークン命令は、暗号化され、次いでリスト41に出力されるべきデータ要素のリストを含む。暗号化鍵は、プログラムが実行されているセッションを開始するユーザデバイスから、たとえば、サブルーチンとして命令「取得」を使用することによって取得されるべきである。
【０１１３】
命令「出力:支払い」は、名前「支払い」が暗号化されていないことを除いて、上記のトークン命令と同様である。
【０１１４】
図8Aにおいて「支払い」とラベル付けされたプログラムは、トークンリスト41(図7)からトークン「タイトル」および「位置」を読み取るための、また、示された要素は上記のように暗号化されるので、ユーザデバイスから再度取得された鍵を使用して、たとえばサブルーチンとして「取得」命令を使用して指示された要素を復号するための、命令を伝達する命令「入力:タイトル、位置」を含む。プログラム「支払い」は、リスト41(図7)内に暗号化された形式で記憶されている「金額」および「支払い」のためのトークンを作成する点に留意されたい。さらに、プログラムはデータ「ユーザ名」をユーザデバイスから取得するが、そのためのトークンは作成しない。これは、本明細書に記載のプログラム仕様言語の設計上の特徴であり、すなわち、プログラムによって取得または計算されたデータは、任意で出力されないことがある。
【０１１５】
プログラム「出荷」の命令も同様に記述され得る。「出荷」はトークンを作成せず、いかなる「出力」命令もない点に留意されたい。
【０１１６】
図8Bは、図8Aの例示的なプログラムに示される新しい種類の命令を、それらの意味論と一緒に要約する。
【０１１７】
上記のコンピュータプログラムの例示的な説明を考えると、本発明の目的に適したコンピュータプログラムの仕様言語が教示され得る。問題の言語は、一般的な動作が上述されており、サブルーチン、暗号化、および復号の従来の手段を使用して実装され得る、新しい命令「トークン」、「表示」、「取得」、「要求」、「出力」、および「入力」を除いて、ほとんどの従来のプログラミング言語と同様のプログラミング命令からなる。
【０１１８】
ユーザデバイスから情報を取得する命令「取得」および「要求」は、以下のように追加機能を有する。
【０１１９】
両方の命令の実行は、データベースプロセッサによって監視される。そのような監視は、たとえば、ユーザデバイスにアクセスしようとするときに、両方の命令が最初にデータベースプロセッサにアクセスし、その後ユーザコンピューティングデバイスにアクセスするように構成されることを保証することによって可能にされ得る。すなわち、データベースプロセッサは、ユーザデバイスへの「取得」および「要求」からのアクセス要求を仲介する。
【０１２０】
「取得」および「要求」命令の監視は、以下の2つの条件を保証するようにさらに構成される。
1.「取得」および「要求」命令によってユーザデバイスに要求された情報属性は、サービスに関連付けられる指定された「ユーザ情報リスト」内に含まれる(図5参照)。
2.単一のコンピュータプログラムがユーザデバイスから情報属性のすべてを要求して取得することはできない。
【０１２１】
上記の2つの条件は、複数のコンピュータプログラムを利用し、単一のコンピュータプログラムがユーザデバイスから受信し得る情報の全体を制限するサービスを提供することをサービスプロバイダに強いる。上記の2つの条件は、トークンリスト内の識別子を暗号化するアクション、ならびにVMおよびセッションオブジェクトの終了および消去とともに、データベースプロセッサによってユーザコミュニティに提供される信頼モデルを構成する。
【０１２２】
データベースプロセッサは信頼モデルを保護するように動作する。この意味で、後者はユーザコミュニティとデータベースプロセッサとの間のコントラクトを表し、すなわち、信頼モデルは「ユーザデータのプライバシー」という語句の意味を特定し、そのコントラクトはデータベースプロセッサによって実施される。
【０１２３】
次に、データベースプロセッサの動作が、図8Aに示されるプログラムに関して、図9において、および以下のようにさらに説明される。
【０１２４】
ユーザデバイスは、セッションを確立し、PLリストとTLリストの監視を開始するデータベースプロセッサに要求を発行する。ユーザデバイスは、「書籍」という名前のプログラムをプログラムリスト内に注入する。データベースプロセッサはプログラムリストPLを監視し、ディレクトリ内で一致するエントリを見つけようと試みる。成功した一致を見つけると、すなわち、条件MCが満たされると、それは方法RMを実行する。
【０１２５】
方法RMを実行すると、「書籍」という名前のプログラムが実行を開始するVMが作成される。プログラムの出力、すなわちトークン「位置」および「書籍のタイトル」は暗号化された形式でTLに記憶され、文字列「支払い」(暗号化されていない)はPLに記憶される。
【０１２６】
プログラム「書籍」は終了し、データベースプロセッサはVMを終了する。PLリストは空ではなく、すなわち、名前「支払い」を含むので、監視プロセスは継続する。次に、監視は、ディレクトリエントリとPLにおける名前「支払い」との間の一致を見つける。
【０１２７】
データベースプロセッサは、MCが満たされていることがわかったので、「支払い」という名前のプログラムが実行を開始する第2のVMを作成し、TLにおけるトークン「金額」および「支払い」(暗号化形式)、およびPLにおける暗号化されていない文字列「出荷」を生成する。プログラム「支払い」が終了すると、そのVMは終了する。
【０１２８】
PLは依然として空ではないので、データベースプロセッサによる監視は継続してMCが成功裏に満たされることを見つけ、それによって、トークン「金額」および「支払い」上で動作する「出荷」という名前のプログラムを実行するために、VMが作成される。このVMは、「出荷」がその実行を完了したときにも終了される。プログラム「出荷」によって、いかなるプログラムの名前も出力されない。したがって、リストPLは空になり、それ以上の一致は見つからない。データベースプロセッサはセッションを終了して消去し得る。
【０１２９】
データベースプロセッサの技術的説明
データベースプロセッサの動作についての技術的説明が提供され得る。サービスプロバイダからサービス提供を受けるために、ユーザデバイスはコンピュータプログラムを実行し得る計算環境にコンピュータプログラムを注入する。コンピュータプログラムの実行は、ユーザデータを要求するか、または出力を生成する方法で制御され、たとえば、コンピュータプログラムの出力は、トークンリストに書き込まれたトークン、またはPLリストに書き込まれたコンピュータプログラムの名前または他の識別子のいずれかになるように制約される。
【０１３０】
さらに、コンピュータプログラムはポストリライティングシステムの意味でそれ自体を書き換える。[参照、Emil Post(1947), Recursive Unsolvability of a Problem of Thue, The Journal of Symbolic Logic, vol. 12 (1947) pp.1-11。Martin Davis 編(1965), The Undecidable: Basic Papers on Undecidable Propositions, Unsolvable Problems and Computable Functions, Raven Press, New York, pp. 239ffに転載]。すなわち、コンピュータプログラムSは、それぞれプリコンテキストおよびポストコンテキストとして知られているデータコンテキスト「u」および「v」を与えられると、コンピュータプログラムTとしてそれ自体を書き換える。概念
uSv→uTv
は、上記の概念を表す。
【０１３１】
したがって、そのような書換えシステムの実装形態は、状態uTvがuSvとして書き換えられない可能性があり、すなわち、「矢印」が左から右にのみ移動され、逆方向には移動されないため、「メモリ」を保持せず、プリコンテキストおよびポストコンテキスト、すなわち「u」および「v」は、上記の表記の左右で変わらないままである。
【０１３２】
すぐに明らかになるように、我々はTLリスト(41、図7参照)内のデータ要素をプリコンテキストおよびポストコンテキスト、すなわち上記の表記における「u」および「v」に関連付ける。また、「S」および「T」などの大文字で示されるコンピュータプログラムを、プログラムリストPL(31、図7参照)内のプログラムの名前と関連付ける。したがって、表記「uSv→uTv」は、「入力「u」で動作するプログラムSが出力「v」を生成する場合、Sは(同じ入力および出力データコンテキストを有する)Tとして書き換えられ得る」と解釈され得る。
【０１３３】
本発明では、たとえばサービスプロバイダによって提供されるコンピュータプログラムまたはアプリは、ユーザデバイスによって計算環境に注入される。環境は、注入されたコンピュータプログラムを実行するための仮想マシンとのセッションを生成し、各コンピュータプログラムはそれ自体の仮想マシンにおいて実行される。注入されたコンピュータプログラム、たとえばSが入力「u」を備えていると仮定する。Sは実行し、すなわち仮想マシンにおいて実行し、出力、すなわちトークン「v」およびプログラムの名前Tを生成する。出力(および、入力)要素はセッションに関連付けられており、セッション内の仮想マシンには関連付けられていない。
【０１３４】
この時点でのセッションは、データ「u」、データ「v」、およびプログラムSを含む。計算環境はプログラムSとそれに関連付けられる仮想マシンを終了して消去し、セッションに注入されたプログラム、すなわちTを取得するためにディレクトリにアクセスする。現在、セッションはプログラムTとコンテキスト「u」および「v」を含む。したがって、我々は、計算環境が、規則「uSv→uTv」を用いてSをTとして書き換えると言うことによって、計算環境の上記の動作を表し得る。図8Aに示される例示的なプログラムを考えると、データベースプロセッサの動作を、以下のポスト書換え規則のペアに内在する書換えとして説明し得る。「<>」は空のコンテキストを示す点に留意されたい。
<>書籍<タイトル><位置>→
<>支払い<タイトル><位置>
<支払い><金額>支払い<>→
<支払い><金額>出荷<>
データベースプロセッサは、プログラム書籍、支払い、および出荷を含む適切なディレクトリを提供される。図9は、ラベルR1およびR2による書換えプロセスの絵画的表現を示す。さらに、図9は、示されたコンテキスト要素を含むリストTL41およびPL31を示す。
【０１３５】
前の段落では、書籍という名前のプログラムを実行するための第1のVMであるVM1が作成されるプロセスR1(図9)について説明した。このプログラムによって生成された出力は、第2のプログラム「支払い」を見つけるための一致基準としてデータベースプロセッサによって使用される。次いで、データベースプロセッサは第2のVM2を作成し、VM2内でプログラム「支払い」を実行させる。プログラム「書籍」と「支払い」との間の因果関係は、ポストロジックの書換え規則R1によって表されるように、上記の説明にカプセル化された書換え動作と呼ばれる。
【０１３６】
同様に、動作R2は、プログラム金額をプログラム出荷として書き換えることを示し、書換えは、ラベルR2として示される。
【０１３７】
なお、書換え動作は明示的に記述されておらず、またデータベースプロセッサのいかなる構成要素にも含まれていない点に留意されたい。書換え動作はデータベースプロセッサの動作に暗黙のうちに含まれ、すなわち、書換え動作は監視条件およびそれによってデータベースプロセッサが動作する方法RMの副次的影響である。
【０１３８】
したがって、データベースプロセッサによって実行される条件MCおよび方法RMは、プログラム書換え動作を暗黙的に記述するために役立つ。書換えプロセスのそのような暗黙の動作は仕様によるものである。書換えプロセスは決して明示的に宣言されないため、第三者によるアクセスのために使用することが決してできず、したがって、異なるデータ要素をリンクさせる情報を識別するために使用されることはできない。
【０１３９】
例示的な実施形態
ここで、本発明の例示的な実施形態の説明を提供する(図10参照)。
【０１４０】
様々なセンサデバイス10(図10)は、1つまたは複数の(内部)センサデバイス11を含み得るユーザデバイス100も含む環境に配置され得る。デバイス10は、リンク3によってユーザデバイス100と関連付けられてもよい。あるいは、デバイス10は、リンク105を介してユーザデバイス100と関連付けられるサーバ30に、リンク5を介して集約されてもよい。ユーザデバイス100は、リンク95を介して分散コンピューティング環境200に接続されている。また、ユーザデバイス100は、ディレクトリサーバにアクセスすることもできる。上述したデータベースプロセッサプログラム(203、図3参照)は、環境200内で動作する。
【０１４１】
環境200は、ディレクトリサーバ500およびアプリケーションサーバ600にもリンクされている。後者はまた、ディレクトリサーバに任意に接続され得る。
【０１４２】
データベースプロセッサは、上述のように、セッションオブジェクトおよびVMなどを作成する。これらは上記で説明され、図3に示されているため、図10には示されていない。
【０１４３】
ユーザがオンラインで書籍を購入することと、その代金を支払うことと、その発送を手配することとを可能にするアプリケーションを考察する。プロセス全体は、複数の相互作用するエンティティ、すなわち、様々なプロバイダによって供給されるコンピュータプログラムによって実行され得るが、ユーザにとってエンドツーエンドまたは単一のトランザクションとして見える。ユーザは自分のユーザデバイスを利用し、必要に応じて、たとえば書籍のタイトル、支払いなどの情報を提供する。たとえば位置などのいくつかの情報は、ユーザのデバイス内のセンサから収集され得る。すべての情報は、ユーザに関する全体的な知識を導出するために単一のトランザクションの個々の構成要素がリンクされないことがあるという意味で、ユーザの情報を保護するように動作するデータベースプロセッサに提供される。さらに、ユーザ情報を受信する単一のトランザクションの個々の構成要素は、作成され、計算を実行するために存在しなくなり、次いで存在しなくなる計算エンティティである。
【０１４４】
アプリケーションサーバを使用するサービスプロバイダは、ユーザコンピューティングデバイスおよびスマートデバイスのユーザに様々なサービスを提供するコンピュータプログラムを作成する。スマートデバイスは、一般に、1つまたは複数のプロセッサ、1つまたは複数のネットワークインターフェース、およびそれらの周囲から環境のしるしを感知するための1つまたは複数のセンサを含むデバイスを指す。スマートデバイスの例は、スマートアプライアンス、スマートビークルなどを含む。ディレクトリサーバには、そのように作成され消費者に提供されるコンピュータプログラムがポピュレートされる。スマートフォンなどのユーザコンピューティングデバイスを使用する消費者は、ディレクトリサーバ500を閲覧または検索し、オンラインで書籍を購入することを可能にするプログラムを発見する。(たとえば、プログラムは、ユーザデータのプライバシーを保護するものとして宣伝され得る。)ユーザデバイスは、おそらく後でプログラムをダウンロードして起動する。
【０１４５】
図11Aは、ユーザデバイスがコンピュータプログラムを選択した状況を示す。ユーザデバイスは、セッションを確立する(ステップ1b)ためにデータベースプロセッサに要求を発行し(ステップ1a)、選択されたプログラムの名前、書籍をPLに記憶させる(ステップ1c)。ステップ1dにおいて、データベースプロセッサはディレクトリからコンピュータプログラム「書籍」をフェッチする。上述のように、これにより、データベースプロセッサは、プログラム「書籍」のロジックを実行する(ステップ3)仮想マシンVM100を作成する(ステップ2)。実行の結果、書籍のリストが表示され、ユーザは(選択された)書籍のタイトルをプログラムに提供する(ステップ4aおよび4b)。プログラムは、ステップ5において、デバイスのセンサからユーザデバイスの位置も取得する(この取得プロセスの詳細は上述されている。)
【０１４６】
次に、ステップ6aにおいて、プログラムは、ユーザデバイスに暗号化鍵を要求し、ステップ6bにおいて、データ要素「タイトル」および「位置」のためのトークンを作成する。トークンはTLに記憶される。ステップ6cにおいて、プログラムはPLに「支払い」を出力する。プログラム「書籍」は実行を終了し、したがってVM100が終了される。
【０１４７】
ステップ8a(図11B)において、データベースプロセッサは、PLにおいて「支払い」を見つけ、ステップ8bにおいて、ディレクトリからプログラム「支払い」をフェッチする。ステップ9において、データベースプロセッサは仮想マシンVM200を作成する。ステップ10aにおいて、プログラムは実行を開始し、ステップ10bにおいてTLからトークン「タイトル」および「位置」を読み取る。ステップ10cにおいて、トークン「タイトル」および「位置」を復号するためにユーザデバイスに復号鍵を要求する。ステップ11は、ユーザからの支払い情報の取得およびステップ12におけるその処理につながる。ステップ13aにおいて、プログラムはユーザデバイスから復号鍵をフェッチし、ステップ13bにおいてトークン「支払い」および「金額」を作成し、それらをTLに記憶する。ステップ13cにおいて、プログラムはPLに「出荷」を出力する。
【０１４８】
次に、プログラムは実行を終了し、VM200を終了させる。
【０１４９】
図11Cは、同様に、仮想マシンVM300におけるプログラム「出荷」の実行を説明しており、その結果、PLに出力は提供されない。
【０１５０】
ステップ19a「出荷手配(OOB)」に留意することが重要であり、プログラム「出荷」はユーザの住所を荷送人に伝達する。略語OOB(Out-of-band)は、ユーザデータを外部エンティティに伝達するという意味で「特別」と見なされる通信を表す。
【０１５１】
データベースプロセッサは、ユーザデバイスから取得されたデータが外部エンティティに伝達されるすべての通信にフラグを立てる。次いで、データベースプロセッサは、ユーザデバイスへの警告とともにフラグ付き(OOB)通信を追跡し得る。ステップ19bは、データベースプロセッサによって生成されたユーザデバイスへの警告を示す。すなわち、データベースプロセッサは、ユーザが提供した情報要素に関する暗号化されていない出力を検出したときはいつでも、ユーザデバイスへの警告メッセージを生成する。
【０１５２】
図11Cを続けると、「出荷」によってPLへの出力が生成されないので、PLリストは空になる。さらに、出荷はその実行を終了する。したがって、VM300は終了され得、監視プロセスは新しい一致を見つけられない。したがって、セッションは消去され得る。この意味で、データ要素、すなわちリストPLおよびTLの内容は一時的である。
【０１５３】
このようにして、全体的なサービスのユーザへの提供中に提供されるユーザ情報が、システム内に保持されている彼の情報のいずれももたらさないことを示した。これは、たとえば図2を参照することによって、全体的なサービス提供インフラストラクチャの異なる構成要素からのユーザ情報のリンクは、本明細書に記載の発明においては不可能であることを意味する。
【０１５４】
熟練した読者は、様々なサービスプロバイダが全体的なサービスの構成要素を提供し得る、上記のユーザ経験の分散化の多くの変形が可能であることを理解するであろう。
【０１５５】
留意すべき点は、プログラムが仮想マシン環境におけるデータベースプロセッサにおいて実行され、ユーザデバイスからの暗号化鍵を使用してデータストア内のそれぞれのリストに暗号化された情報を書き込むことである。したがって、他のどのプロセスも、リスト内のデータを読み取って、統合されたユーザプロファイルを構築することはできない。さらに、プログラムが終了すると、データストア内に状態情報は残っていない。
【０１５６】
当然のことながら、サービスプロバイダが、ユーザが全体的なサービスを受けているために取得された特定の情報を保持することが可能である。たとえば、荷送人は、出荷が引き渡しされた住所を記録し得る。しかし、消費者の名前は荷送人には知られない。
【０１５７】
したがって、帯域外通信プロセスの使用は、1つまたは複数のサービスプロバイダにユーザデータの断片を明らかにし得る。本発明は、そのような帯域外通信がデータベースプロセッサによってユーザに強調されることを想定している。したがって、ユーザは自分のデータの断片がサービスプロバイダに公開される可能性があることを認識する。
【０１５８】
上記の実施形態は、全体的なサービス(たとえば、書籍をオンラインで購入する)が複数の相互作用するエンティティによって達成されると仮定したが、他の実施形態では、単一のプロバイダがサービスのすべての構成要素を提供し得る(たとえば、すべての必要なコンピュータプログラムを提供することによって)。コンピュータプログラムの実行は上述のようにユーザデータのプライバシーを保護するシステムを使用するので、これは本発明を制限しない。
【０１５９】
この点に関して、複数のエンティティによって提供されるスマートコントラクトとしてサービスを実装するためのブロックチェーンシステムの使用に言及することが適切であり、本明細書に記載の発明はそれを想定している。スマートコントラクトは、抽象的には、ブロックチェーンシステムの元帳に記憶されているデータ上で動作する、特定の形式のコンピュータプログラムとして視覚化され得る。すなわち、元帳はデータストアに類似しており、スマートプログラムは本明細書に記載のコンピュータプログラムに類似している。この意味で、データベースプロセッサの動作を支える書換えプロセスは、スマートコントラクト用のオペレーティングシステムの構成要素を提供するものと見なされ得る。
【０１６０】
熟練した実務者は、データベースプロセッサの例示的な説明がその動作に非決定論をもたらすことに気付いただろう。つまり、リストPLが複数のプログラムの名前を含んでもよく、PL内の名前がディレクトリ内の複数のプログラム名と一致してもよい。
【０１６１】
本明細書に記載の発明は、上述の「出力」プログラム命令を以下のようにオーバーロードすることを想定している。プログラムの名前を指定するために出力ステートメントを使用し得るだけでなく、供給者の名前や、ディレクトリの検索を絞り込む様々なプログラム属性などの、追加の属性を使用し得る。
【０１６２】
他の例示的な実施形態
本説明は販売者-荷送人-支払いサービス経験に集中したが、本明細書に記載された発明から利益を得ることができるサービス経験の他の多くの例が存在する。たとえば、スマートカーなどの自律走行車は、様々な種類のデータを報告する多くの内部センサデバイスを含むと予想される。本発明は、そのような自動車のユーザが、本明細書に記載の技法から利益を得ることができ、自動車からのセンサデータが(サービスプロバイダによって提供される)コンピュータプログラムをトリガすることを想定しており、次いで、そのようなプログラムは、所有者のデータのプライバシーを損なうことなしに、そのような自動車にサービスを提供するために、本明細書に記載のシステムおよび方法を使用し得る。
【０１６３】
別の例として、ユーザの身体活動は、ユーザによって着用されるスマートデバイスによって、またはユーザの近くにある、たとえばエクササイズマシンに設置されているデバイスによって監視および分析され得る。次いで、活動が分析され、格付けされ、採点され、そのような分析からのデータが医療提供者または保険提供者に伝達され得る。
【０１６４】
ユーザデータのポータビリティ
従来の電気通信システムでは、消費者が自分の電話番号を所有するのが一般的である。消費者は、あるサービスプロバイダから別のサービスプロバイダに切り替えるときに自分の電話番号を保持し得る。変更は規制によって必要とされ、市内番号のポータビリティとして知られている。
【０１６５】
ユーザが自分のデータを所有し、プロバイダを切り替えることができ、自分のユーザデータを古いプロバイダから新しいプロバイダに移行する必要があり得る、法的な理由を含む、いくつかの理由を想定することが可能である。個人的な医療記録は説得力のある例を提供する。消費者は、自分の医療データを、自分のユーザコンピューティングデバイス上に、またはユーザデバイスからのみ利用可能な必要な認証情報を提示することでサービスプロバイダにアクセス可能な専用ストレージシステム内に記憶し得る。次いで、消費者は、自分のユーザデバイスに頼ることによって、自分の医療データにアクセスする医療サービスを要求し得る。
【０１６６】
ソーシャルグラフという用語は、ソーシャルネットワーキングの例においてしばしば使用される。この用語は、ユーザとその友人およびフォロワーを備えるデータを指す。ソーシャルグラフのポータビリティが要求または強制され得ることが起こり得る。そのような状況では、ユーザは、以下に説明する意味で、自分のソーシャルグラフを一緒に持って、あるサービスプロバイダから別のサービスプロバイダに切り替えることができる。
【０１６７】
消費者が他のサービスプロバイダよりも特定のサービスプロバイダを信頼する今日のオンラインネットワークにおける現在の状況を考察する。たとえば、多くの消費者は、ユーザ名とパスワードの認証情報でグーグルを信頼している。この振る舞いをサポートする消費者によってなされた1つの仮定は、グーグルのサービスはより安全であり、悪意のある当事者によって侵入される可能性が低いということであり得る。この仮定の証拠は、消費者がグーグルの認証情報を使用して自分のアカウントにアクセスすることを許可する多くのサービスプロバイダによってサポートされている機能である。したがって、ユーザは、一例と、ツイッター(登録商標)またはフェイスブックにログインするために自分のグーグルの認証情報を使用し得る。
【０１６８】
最後の例として、インターネット上の「勝者がすべてを得る」現象は、多くのサービスを提供するさらに強力な企業を生み出すことが知られている。次いで、強力な企業は、自発的にまたは法的要件の下で、ユーザデータを処理し、特別な処理または法的に要求される保証を提供する(ビジネス)ユニットまたはエンティティを作成することを要求されると想定され得る。これは、すべてのユーザデータがユニットの管理下になければならず、したがって、あるサービスプロバイダから別のサービスプロバイダに移植される可能性があることを意味する。
【０１６９】
次に、ユーザデータのポータビリティをサポートするために、本明細書に記載の主題がどのように使用され得るか方法を説明する。これは、上記で提供された説明に次の追加要件を追加することによって達成され得る。
・上述の条件MCを以下のように拡張する。リストPLに含まれる名前とディレクトリ内のプログラムの名前とを一致させることに加えて、ユーザは、1つまたは複数のサービスプロバイダに関する失格一致基準を述べることが許可される。したがって、たとえば、ユーザは、条件MCを変更し、したがって、データベースプロセッサの振る舞いを変更する「リストPL内の名前と一致する供給者-1からのプログラムは選択されるべきではない」などの失格基準を述べることが許可され得る。
【０１７０】
図11A、図11B、および図11Cによって示される実施形態に戻ると、MC条件に対する変更は、成功した一致をもたらすために特定の供給者からのプログラムを失格にする可能性がある。したがって、ユーザデバイスは、失格プロバイダによって供給されたプログラムからいかなるサービスも決して受けない。同様に、供給者は、MC条件によって選択されるように指定され得る。
【０１７１】
本明細書に記載の様々な実施形態は、コンピューティング技術に関して様々な利点を提供し得る。これらの利点のいくつかは、以下を含み得る。
1.ユーザコンピューティングデバイスは、たとえばアプリなどの実行中のコンピュータプログラムから解放され得、したがって、処理リソース、電力などを節約する。これは、バッテリ電力を節約することが重要であるスマートフォンなどのモバイルユーザコンピューティングデバイスの場合に特に重要であり得る。
2.アプリは、ユーザのコンピュータデバイスにダウンロードされる必要はない場合がある。むしろ、ユーザがディレクトリサーバからアプリを選択すると(500、図7参照)、選択されたアプリを中間ダウンロード動作なしにデータベースプロセッサに直接注入させるオプションを提供され得る。これにより、ユーザは自分のユーザコンピューティングデバイス上でアプリを管理する必要がなくなる。したがって、ユーザによる自分のデバイスの処理と管理が簡素化される。これはまた、ユーザコンピューティングデバイス上のアプリが定期的に更新される必要がないことを意味し、ネットワークの帯域幅と容量を節約する。さらに、アプリは、そのアプリを自分のデバイスにダウンロードすることなしに推奨に基づいて行動し得るユーザに推奨され得る。
3.ディレクトリサーバ(図6)は、アプリストア技術の再アーキテクチャを表す。後者は現在多くのサービスプロバイダによって使用されている。アプリストア技術によって現在提供されているダウンロードおよび更新機能を削除することによって、アプリストアの技術と動作を改善および簡素化する。
4.1つのユーザコンピューティングデバイスを介して複数のセンサデバイスからのデータ通信を安全に処理するためによく知られているDHアルゴリズムとその類似物を拡張することによって、そのようなセンサデバイスを多用するスマートデバイス(自律走行車、スマート家電など)の新たに出現する技術を処理するために、ネットワーキングプロトコルの範囲と機能を拡張して簡素化する。DH(および、その類似品)は業界において広く使用されているので、そのような拡張はネットワーキングプロトコルの効率、動作、およびコストを改善する。
【０１７２】
特定の例示的な商業的実施形態
本明細書に記載の発明のいくつかの商業的実施形態を提供する。
【０１７３】
図12は、スマートデバイス300、たとえばスマートカー、家庭用冷蔵庫、または家庭へのスマートドアロックなどがワイヤード/ワイヤレス接続53を介して消費者にサービスを提供するように構成されている実施形態を示す。(「スマート」という用語の使用は、実行可能コードで構成される得る1つまたは複数のプロセッサを含むデバイスを意味することが意図されている。)スマートデバイスは、1つまたは複数のコンピュータプログラム400からその実行可能コードを取得し得、取得は事前提供、定期的な提供、または要求に応じた提供である。プログラム400はまた、実行可能コードを有するデバイス、鍵100を提供し得る。最後に、ユーザデバイス200は、プログラム400によって実行可能コードを提供され得る。やはり、そのような提供は要求主導であってもよく、定期的な帯域外プロセスを備えてもよい。
【０１７４】
商業的な例として、デバイス300がサービスを提供するためには、鍵100およびユーザデバイス200が一緒に必要とされる。このように、スマートカー300は、上記に示されるように、ユーザデバイス200と鍵100が一緒に使用されている場合にのみプログラムされたサービスを提供し得、鍵からのデータは、ユーザデバイス200によって承認されない限り、自動車300にアクセスできない場合がある。この意味で、接続51および52(図12)は、プログラムされたサービスを提供するために、それぞれデバイス200および100に対するデバイス300の依存性を表す。
【０１７５】
この意味で、鍵100およびユーザデバイス200の使用は、デバイス300によって配信されるプログラムされたサービスの2要素承認に類似していると言うことができ、さらに、そのサービスはプライバシーを保護している。鍵100によって収集されてデバイス300に提供されるデータのプライバシーは上述の発明によって保証される。
【０１７６】
最後に、鍵100とデバイス300との間の関連付けがユーザデバイス200によって制御されることは、本発明の明白な結果である。すなわち、たとえば500などの異なるユーザデバイスが鍵100との関連付けを確立し、成功した場合はデバイス300のサービスを呼び出すことができる。したがって、デバイス300と鍵100との間の関連付けを制御するのはユーザデバイス200である。これにより、デバイス300によって提供されるサービスが異なるユーザに移植されることが可能になる。
【０１７７】
図13Aおよび図13Bは異なる商業的実施形態を示す。図13Aは、本明細書に記載の発明によって強制されるサービス分解の抽象図を提供する。サービスプロバイダ、たとえば書籍のオンライン販売者は、本発明の指示により、そのサービス提供を分解して、複数のコンピュータプログラム、それら自体の間で相互作用する複数のコンピュータプログラム、および相互作用する構成要素のうちの1つであるユーザデバイスによって提供されるように生じさせられる。
【０１７８】
すなわち、図13Aは、「ブラックボックス」動作としてのサービス提供400を示すが、図13Bは、サービス400が構成要素401、402、および403に分解されていることを示している(本発明は、複数の構成要素を示す)。たとえば、オンライン書籍購入サービス400は、書籍401、支払い402、および出荷403の構成要素に分解されるように生じさせられ得る。さらに、構成要素401、402、および403の間の対話は、必ずユーザデバイス200を含まなければならない。
【０１７９】
したがって、ユーザデバイス200は、サービス提供プロセスの構成要素となり、単にサービスを要求し受信するデバイスではない。ユーザデバイスは、サービス提供の構成要素として機能するとき、サービス提供に必要なユーザデータを提供し制御する。この意味で、ユーザデバイスはサービス提供の制御構成要素になる。
【０１８０】
図14は、ユーザが自分のサービスを第1のプロバイダから第2のプロバイダに移植することができる、サービスプロバイダ間のサービスポータビリティを示す。そのような移植は、上述したように、サービスが分解されることを強いること、次いで、第1のサービスプロバイダによって提供されない構成要素を選択するためにユーザデバイスを利用することによって達成される。ユーザデバイスがユーザのデータを制御し、したがって後者が選択的なサービスプロバイダのみに提供されるようにすることができるので、このサービスのポータビリティの概念は可能になる。
【０１８１】
例示的なコンピューティング環境
本明細書に記載の主題の態様は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本明細書に記載の主題の態様はまた、通信ネットワークを通じてリンクされている遠隔処理デバイスによってタスクが実行される分散コンピューティング環境において実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルと遠隔の両方のコンピュータストレージ媒体に配置され得る。
【０１８２】
また、いくつかの実施形態は、流れ図またはブロック図として示されるプロセスとして説明されている点に留意されたい。それぞれが動作を逐次プロセスとして説明し得るが、動作の多くは並行してまたは同時に実行され得る。さらに、動作の順序は並べ替えられてもよい。プロセスには、図面に含まれていない追加のステップがある場合がある。
【０１８３】
請求される主題は、開示された主題を実装するためにコンピュータを制御するために、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成するために、標準プログラミングおよび/またはエンジニアリング技法を使用する、方法、装置、または製品として実装され得る。たとえば、請求される主題は、任意のコンピュータ可読ストレージデバイスまたはストレージ媒体からアクセス可能なコンピュータプログラムを包含する、コンピュータ実行可能プログラムを埋め込んだコンピュータ可読ストレージ媒体として実装され得る。たとえば、コンピュータ可読ストレージ媒体は、これらに限定されないが、磁気ストレージデバイス(たとえば、ハードディスク、フロッピーディスク、磁気ストリップなど)、光ディスク(たとえば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)など)、スマートカード、およびフラッシュメモリデバイス(たとえば、カード、スティック、キードライブなど)を含むことができる。しかしながら、コンピュータ可読ストレージ媒体は、たとえば伝搬信号などの一時的な形態のストレージを含まない。もちろん、請求される主題の範囲または趣旨から逸脱することなしに、この構成に対して多くの修正が加えられてよいことを当業者は理解するであろう。
【０１８４】
さらに、本出願で使用されるとき、用語「構成要素」、「モジュール」、「エンジン」、「システム」、「装置」、「インターフェース」などは、一般に、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかの、コンピュータ関連のエンティティを指すことが意図されている。たとえば、構成要素は、これらに限定されないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例として、コントローラ上で実行されているアプリケーションとコントローラとの両方が構成要素になり得る。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に存在してもよく、構成要素が1つのコンピュータ上でローカライズされてもよく、および/または2つ以上のコンピュータ間に分散されてもよい。
【０１８５】
前述の実施形態は、異なる他の構成要素内に含まれるか、またはそれと接続される、異なる構成要素を示す。そのように示されたアーキテクチャは単に例示的なものであり、実際には、同じ機能を達成する他の多くのアーキテクチャが実装され得ることができることを理解されたい。概念的な意味では、同じ機能を達成するための構成要素の任意の構成は、所望の機能が達成されるように効果的に「関連付けられている」。したがって、特定の機能を達成するために本明細書で組み合わされる任意の2つの構成要素は、アーキテクチャまたは中間構成要素とは関係なしに、所望の機能が達成されるように互いに「関連付けられている」と見なされ得る。同様に、そのように関連付けられる任意の2つの構成要素もまた、所望の機能を達成するために互いに「動作可能に接続される」または「動作可能に結合される」と見なされ得る。
【符号の説明】
【０１８６】
3  リンク
5  リンク
10  センサデバイス
11  センサデバイス
30  サーバ
31  PL
41  TL
41  リスト
51  センサ
52  センサ
53  ワイヤード/ワイヤレス接続
95  リンク
100  ユーザコンピューティングデバイス
100  ユーザデバイス
100  鍵
105  リンク
150  ユーザコンピューティングデバイス
200  分散コンピューティング環境
200  仮想マシンVM
200  ユーザデバイス
201-1  データストア
201-2  データストア
202  セッションオブジェクト
202-1  セッション
202-2  セッション
203  データベースプロセッサ
204  仮想マシン
205  プログラム
300  仮想マシンVM
300  スマートデバイス
300  デバイス
300  自動車
400  コンピュータプログラム
400  オンライン書籍購入サービス
401  書籍
401  構成要素
402  支払い
402  構成要素
403  出荷
403  構成要素
500  ディレクトリサーバ
600  アプリケーションサーバ
【図１】
2019531532.tif 000003
【図２】
2019531532.tif 000004
【図３】
2019531532.tif 000005
【図４Ａ】
2019531532.tif 000006
【図４Ｂ】
2019531532.tif 000007
【図５Ａ】
2019531532.tif 000008
【図５Ｂ】
2019531532.tif 000009
【図５Ｃ】
2019531532.tif 000010
【図６】
2019531532.tif 000011
【図７】
2019531532.tif 000012
【図８Ａ】
2019531532.tif 000013
【図８Ｂ】
2019531532.tif 000014
【図９】
2019531532.tif 000015
【図１０】
2019531532.tif 000016
【図１１Ａ】
2019531532.tif 000017
【図１１Ｂ】
2019531532.tif 000018
【図１１Ｃ】
2019531532.tif 000019
【図１２】
2019531532.tif 000020
【図１３Ａ】
2019531532.tif 000021
【図１３Ｂ】
2019531532.tif 000022
【図１４】
2019531532.tif 000023
【国際調査報告】
2019531532.tif 000024