(57)【要約】  オンラインサービス提供プロセスが提供され、その間にサービスが配信されるユーザについてのサービスプロバイダの知識は増加しない。これは、ユーザ属性情報を、独立して検証され得、プライバシーを保護する難読化されたオブジェクトとしてサービスプロバイダに提示することによって実現される。
2019533852.tif 000002
【特許請求の範囲】
【請求項１】
ユーザへの製品および/またはサービスの引き渡しを容易にするための方法であって、
第1の実行可能コンピュータコードを、ユーザセッションが確立されているコンピューティング環境に挿入させるステップであって、前記第1の実行可能コンピュータコードが、前記製品および/またはサービスを提供するエンティティに関連付けられる、ステップと、
前記コンピューティング環境において、ユーザセッションを確立するステップと、
前記第1の実行可能コンピュータコードが前記ユーザセッションに挿入されたことに応答して、第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の実行可能コンピュータコードによって生成された前記第2の出力データに少なくとも部分的に基づいて、前記ユーザコンピューティングデバイスの前記ユーザへの前記製品および/またはサービスの引き渡しを行わせるステップと
を備える、方法。
【請求項２】
前記ユーザ情報属性が前記ユーザの識別情報を含む、請求項1に記載の方法。
【請求項３】
情報の前記第1および/または第2の適切なサブセットが、前記ユーザに関連付けられる認証資格情報を含み、前記認証資格情報が、前記ユーザの識別情報を開示することなしに検証エンティティによって検証されると前記ユーザを認証する、請求項1に記載の方法。
【請求項４】
情報の前記第1および/または第2の適切なサブセットが、前記ユーザに関連付けられる暗号化認証情報を含み、前記暗号化認証情報が、前記ユーザデータを開示することなしに検証エンティティによって検証されると認証されるユーザデータを表す、請求項1に記載の方法。
【請求項５】
前記ユーザデータが前記ユーザのバイオメトリックデータを含む、請求項4に記載の方法。
【請求項６】
前記ユーザデータが前記ユーザのユーザプリファレンスデータを含む、請求項4に記載の方法。
【請求項７】
前記ユーザデータが前記ユーザのクレジットカード情報を含む、請求項4に記載の方法。
【請求項８】
情報の前記第1および第2の適切なサブセット内の前記情報の仲介を選択的に有効または無効にするステップが、前記ユーザによって決定される、請求項1に記載の方法。
【請求項９】
前記第2の実行可能コンピュータコードを実行するステップが、前記第2の実行可能コンピュータコードによって生成された前記第1の出力データの少なくとも第2の部分を使用して前記第2の実行可能コンピュータコードを実行するステップを含む、請求項1に記載の方法。
【請求項１０】
前記第1の出力データの前記第1の部分が、前記第2の実行可能コンピュータコードの識別子を含む、請求項1に記載の方法。
【請求項１１】
前記第1の実行可能コンピュータコードによって生成された前記第1の出力データの少なくとも一部が、前記ユーザコンピューティングデバイスに関連付けられる暗号化鍵で暗号化され、前記第2のコンピューティングデバイスを実行するステップが、前記第1の実行可能コンピュータコードによって暗号化された前記出力データを復号するために前記暗号化鍵を取得するステップを含む、請求項10に記載の方法。
【請求項１２】
前記ユーザコンピューティングデバイスの前記ユーザへの前記製品および/またはサービスの引き渡しを行わせた後に前記ユーザセッションを終了させるステップをさらに備える、請求項1に記載の方法。
【請求項１３】
ユーザアクションに応答して前記ユーザセッションを終了させるステップをさらに備える、請求項12に記載の方法。
【請求項１４】
前記コンピューティング環境のアクションに応答して前記ユーザセッションを終了させるステップをさらに備える、請求項12に記載の方法。
【請求項１５】
前記ユーザセッションを終了するステップが、前記コンピューティング環境から前記ユーザセッションのメモリを消去するステップを含む、請求項12に記載の方法。
【請求項１６】
前記ユーザセッションに含まれるデータストアに前記情報の前記第1および第2の適切なサブセットを記憶するステップをさらに備える、請求項1に記載の方法。
【請求項１７】
通信ネットワークを介してトランザクションを実行するための方法であって、
前記通信ネットワークを介して受信されたユーザ要求に応答して、コンピューティング環境においてユーザセッションを確立するステップと、
それぞれが前記トランザクションの一部を実行する複数の実行可能コンピュータコードを実行するステップであって、前記実行可能コンピュータコードの各々を実行するステップが、通信ネットワークを介して、前記ユーザのユーザコンピューティングデバイスから前記トランザクションを完了するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての情報の異なる適切なサブセットを取得するステップを含み、すべての前記情報の前記適切なサブセットの各々は、前記トランザクションを完了するために必要とされる、前記ユーザコンピューティングデバイスから必要とされるすべての前記情報の完全なセットよりも少なく、前記実行可能コンピュータコードの各々が、それが取得した情報の前記それぞれのサブセットを処理し、
前記実行可能コンピュータコードによって前記情報が取得される前に、前記ユーザのユーザ情報属性を難読化するエンティティを通じて、情報の前記異なる適切なサブセット内の前記情報の仲介を選択的に有効または無効にするステップと、
前記実行可能コンピュータコードのうちの1つから以前に出力された暗号化された出力情報を取得することによって、前記実行可能コンピュータコードの各々の実行中に前記複数の実行可能コンピュータコード間でのみ情報が交換され、前記暗号化された出力情報が、前記出力情報を復号するために1つまたは複数の復号鍵が前記ユーザから要求されるように暗号化される、ステップと、
前記トランザクションを完了するために必要な前記実行可能コンピュータコードの最後の1つの実行を完了した後、情報の前記サブセットの各々がもはや前記コンピューティング環境において存在しなくなるように、前記ユーザセッションを終了するステップとを備える、方法。
【請求項１８】
前記実行可能コンピュータコードの各々が、実行が完了した後、前記実行可能コンピュータコードのうちの後続の1つを実行する前に終了される異なる仮想マシンにおいて実行される、請求項17に記載の方法。
【請求項１９】
前記トランザクションを完了するために必要とされる、前記ユーザコンピューティングデバイスから必要とされる前記情報のすべてを、前記実行可能コンピュータコードの個々のいかなる実行可能コンピュータコードもが取得しないことを保証するために、前記複数の実行可能コンピュータコードを監視するステップをさらに備える、請求項10に記載の方法。
【請求項２０】
前記ユーザによって提供された何らかの情報が、暗号化されていない前記実行可能コンピュータコードのいずれかによって別の実行可能コンピュータコードに通信されているかどうかを前記ユーザに警告するステップをさらに備える、請求項12に記載の方法。
【請求項２１】
通信ネットワークを介してサービスプロバイダにより製品および/またはサービスをユーザに引き渡すことを容易にするために1つまたは複数のプロセッサ上で動作するコンピュータエミュレーションシステムのための方法であって、
セッションを作成することによって製品/サービス引き渡しプロセスを開始するステップであって、第1の仮想マシンを前記セッション内で実行し、前記第1の仮想マシンが、あらかじめ定められた動作のセットのみをサポートするように構成され、前記第1の仮想マシンが第1のコンピュータプログラムを実行する、ステップと、
ユーザコンピューティングデバイスを前記第1のコンピュータプログラムとの前記セッションに招待させるステップと、
前記第1のコンピュータプログラムが前記ユーザへの前記製品および/またはサービスの引き渡しを行わせるのに必要な難読化されたユーザデータを、前記通信ネットワークを介して前記ユーザコンピューティングデバイスから取得するステップと、
前記第1のコンピュータプログラムからの要求に応じて、前記難読化されたユーザデータに含まれる前記ユーザデータを検証させるステップであって、前記引き渡し提供プロセスの開始前に前記第1のコンピュータプログラムが所有していなかった前記ユーザに関するいかなる情報も前記製品および/またはサービスの引き渡し後に保有することなしに前記第1のコンピュータプログラムが前記製品および/またはサービスの引き渡しを前記ユーザに提供することができるように、前記難読化されたユーザデータに含まれる前記ユーザデータのいずれをも明らかにすることなしに前記検証が達成される、ステップと、
前記ユーザコンピューティングデバイスから要求を受信すると、前記第1のコンピュータプログラムとの前記セッションから前記ユーザコンピューティングデバイスを削除させるステップと
を備える、方法。
【請求項２２】
前記コンピュータエミュレーションシステムが仮想化されたオペレーティングシステムである、請求項21に記載の方法。
【請求項２３】
検証されるべき前記難読化されたユーザデータが、バイオメトリックユーザデータを表すデータセットを含む、請求項21に記載の方法。
【請求項２４】
前記難読化されたユーザデータの前記検証が、前記バイオメトリックユーザデータを表す前記データセットに基づく、請求項23に記載の方法。
【請求項２５】
前記難読化されたユーザデータが、前記ユーザの財務データを表すデータセットを含む、請求項21に記載の方法。
【請求項２６】
前記財務データがクレジットカードデータを含む、請求項25に記載の方法。
【請求項２７】
前記難読化されたユーザデータの前記検証が、前記財務データを表す前記データセットに基づく、請求項25に記載の方法。
【請求項２８】
検証されるべき前記難読化されたユーザデータが、外部から追加されたデータを含むユーザ属性データを含む、請求項21に記載の方法。
【請求項２９】
前記難読化されたユーザデータの前記検証が、第2の仮想マシンにおいて第2のコンピュータプログラムを実行させることを含む、請求項28に記載の方法。
【請求項３０】
前記第2のコンピュータプログラムを実行することが、前記第2のコンピュータプログラムを前記第1のコンピュータプログラムとの前記セッションに招待することを含む、請求項29に記載の方法。
【請求項３１】
前記第2のコンピュータプログラムを実行することが、前記ユーザコンピューティングデバイスと前記第2のコンピュータプログラムとの間に直接通信を確立することを含む、請求項29に記載の方法。
【請求項３２】
前記第2の仮想マシンが、あらかじめ定められた動作のセットのみをサポートするように構成される、請求項29に記載の方法。
【請求項３３】
前記構成することが、前記第1のコンピュータプログラムからコマンドを受信すると、前記第2の仮想マシンにそのメモリおよび内部レジスタを消去させることを含む、請求項32に記載の方法。
【請求項３４】
前記第1のコンピュータプログラムが、前記ユーザコンピューティングデバイスから受信した要求に基づいて前記ユーザコンピューティングデバイスを前記セッションに招待する、請求項21に記載の方法。
【請求項３５】
前記ユーザコンピューティングデバイスによる前記要求が、前記ユーザコンピューティングデバイス上で実行されており、前記ユーザコンピューティングデバイスに関連付けられる1つまたは複数のセンサデバイスに応答する、コンピュータプログラムによってトリガされる、請求項34に記載の方法。
【請求項３６】
前記第1のコンピュータプログラムが、前記第1のコンピュータプログラム内で実行されているサービスロジックに基づいて前記ユーザコンピューティングデバイスを前記セッションに招待する、請求項21に記載の方法。
【請求項３７】
前記ユーザデータを検証することが、前記検証プロセスにおいて使用される検証認証情報を生成する際に使用されるアルゴリズムが変更されないままであることを検証することをさらに含む、請求項21に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
相互参照
本出願は、2017年8月7日に出願された米国特許出願第15/671,021号の一部継続出願であり、2016年9月9日に出願された仮出願第62/385,515号の利益を主張するものであり、両出願の内容は参照により本明細書に組み込まれる。
【背景技術】
【０００２】
サービス経験は、インターネットおよびウェブ上に豊富にある。ブロックチェーンベースのシステムなどの新しい発明は、自律走行車などのスマートデバイスにサービスを提供するためのスマートコントラクトと呼ばれるコンピュータプログラムを想定している。さらに、全体的なサービス経験が複数の構成要素に分解され得、複数のサービスプロバイダが個々の構成要素を提供し得ることが想定される。多くのスマートデバイス、スマートコンピュータプログラム、およびサービス経験はまた、ユーザコンピューティングデバイス、またはユーザデバイスが近接して配置されている物理的環境に配置されているセンサデバイスから取得されたデータを利用する。したがって、自律走行車の使用を伴うサービス経験は、ますます多くの量のユーザデータを収集し得る。ほとんどのサービス経験は、ユーザが提供した情報にも基づく。消費者は、ユーザデータのプライバシーを保護することに関心があるという兆候をますます示している。したがって、ますます大量のユーザデータを収集するセンサデバイスを用いてオンラインネットワークにおけるユーザデータのプライバシーを保護するサービス提供システムは、大きな社会的価値および商業的利益をもたらすであろう。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】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
【非特許文献３】Eli Ben-Sassonらによる、「Snarks for C:verifying program executions succinctly and in zero knowledge」
【非特許文献４】メリーランド州ゲイザーズバーグの米国標準技術局のJ. Chuらによる「Using Chebyshev's inequality to determine sample size in Biometric evaluation of fingerprint data」
【非特許文献５】Paarらによる「Understanding Cryptography, Springer, New York」ISBN:978-3-642-04100-6
【非特許文献６】J. McCarthy, Approximate Objects and Approximate Theories, Principles of Knowledge Representation and Reasoning, Proc. of 7th International Conf, Colorado, 2000
【非特許文献７】L. Zadeh, From Computing with Numbers to Computing with Words, IEEE Trans. On Circuits and Systems, 45(1)105:119, 1999
【発明の概要】
【課題を解決するための手段】
【０００４】
本明細書に記載の主題の一態様によれば、ユーザへの製品および/またはサービスの引き渡しを容易にするためのシステムおよび方法が提供される。本方法によれば、第1の実行可能コンピュータコードを、ユーザセッションが確立されているコンピューティング環境に挿入させる。第1の実行可能コンピュータコードは、製品および/またはサービスを提供するエンティティに関連付けられる。ユーザセッションがコンピューティング環境において確立される。第1の実行可能コンピュータコードがユーザセッションに挿入されたことに応答して、第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の仮想マシンは、第2の実行可能コンピュータコードの実行が完了すると終了する。第2の実行可能コンピュータコードによって生成された第2の出力データに少なくとも部分的に基づいて、ユーザコンピューティングデバイスのユーザへの製品および/またはサービスの引き渡しを行わせる。
【０００５】
本明細書に記載の主題の別の態様によれば、通信ネットワークを介してトランザクションを実行するためのシステムおよび方法が提供される。本方法によれば、通信ネットワークを介して受信されたユーザ要求に応答して、コンピューティング環境においてユーザセッションが確立される。それぞれがトランザクションの一部を実行する複数の実行可能コンピュータコードがコンピューティング環境において実行され、実行可能コンピュータコードの各々を実行するステップは、通信ネットワークを介して、ユーザのユーザコンピューティングデバイスから、トランザクションを完了するために必要とされる、ユーザコンピューティングデバイスから必要とされるすべての情報の異なる適切なサブセットを取得するステップを含む。すべての情報の適切なサブセットの各々は、トランザクションを完了するために必要とされるユーザコンピューティングデバイスから必要とされるすべての情報の完全なセットよりも少ない。実行可能コンピュータコードの各々は、それが取得した情報のそれぞれのサブセットを処理する。異なる適切な情報のサブセット内の情報の仲介は、実行可能コンピュータコードによって情報が取得される前にユーザのユーザ情報属性を難読化するエンティティを通じて選択的に有効または無効にされる。実行可能コンピュータコードのうちの1つから以前に出力された暗号化された出力情報を取得することによって、実行可能コンピュータコードの各々の実行中に複数の実行可能コンピュータコード間でのみ情報が交換される。暗号化された出力情報は、出力情報を復号するために1つまたは複数の復号鍵がユーザから要求されるように暗号化される。トランザクションを完了するために必要な実行可能コンピュータコードの最後の1つの実行を完了した後、情報のサブセットの各々がもはやコンピューティング環境において存在しなくなるように、ユーザセッションは終了される。
【０００６】
本明細書に記載の主題のさらに別の態様によれば、通信ネットワークを介してサービスプロバイダにより製品および/またはサービスをユーザに引き渡すことを容易にするために1つまたは複数のプロセッサ上で動作するコンピュータエミュレーションシステムのためのシステムおよび方法が提供される。この方法によれば、製品/サービス引き渡しプロセスはセッションを作成することによって開始される。第1の仮想マシンは、セッション内で実行される。第1の仮想マシンは、あらかじめ定められた動作のセットのみをサポートするように構成されている。第1の仮想マシンは、第1のコンピュータプログラムを実行する。ユーザコンピューティングデバイスを第1のコンピュータプログラムとのセッションに招待させる。難読化されたユーザデータは、通信ネットワークを介してユーザコンピューティングデバイスから取得される。難読化されたユーザデータは、第1のコンピュータプログラムがユーザへの製品および/またはサービスの引き渡しを行わせるのに必要なユーザデータである。第1のコンピュータプログラムからの要求に応じて、難読化されたユーザデータに含まれるユーザデータを検証させる。検証は、引き渡し提供プロセスの開始前に第1のコンピュータプログラムが所有していなかったユーザに関するいかなる情報も製品および/またはサービスの引き渡し後に保有することなしに第1のコンピュータプログラムが製品および/またはサービスの引き渡しをユーザに提供することができるように、難読化されたユーザデータに含まれるユーザデータのいずれをも明らかにすることなしに達成される。ユーザコンピューティングデバイスから要求を受信すると、第1のコンピュータプログラムとのセッションからユーザコンピューティングデバイスを削除させる。
【図面の簡単な説明】
【０００７】
【図１】書籍のオンライン購入における分散型トランザクションの要素を示す図である。
【図２】分散型トランザクションに内在する例示的なリンク情報を示す図である。
【図３】本発明の全体的な動作環境の一例を示す図である。
【図４Ａ】従来のDHアルゴリズムを示す図である。
【図４Ｂ】DHアルゴリズムの例示的な拡張を示す図である。
【図５Ａ】DHアルゴリズムへの拡張の動作を示す図である。
【図５Ｂ】DHアルゴリズムへの拡張の動作を示す図である。
【図５Ｃ】DHアルゴリズムへの拡張の動作を示す図である。
【図６】ディレクトリに含まれ得るコンテンツの一例を示す図である。
【図７】単一のVMを含む単一のセッションに関するデータベースプロセッサの動作を示す図である。
【図８Ａ】例示的なコンピュータプログラムを示す図である。
【図８Ｂ】コンピュータプログラム命令とそれらの意味論の例を示す図である。
【図９】データベースプログラムの動作に内在する図8Aのプログラムの例示的な書換えを示す図である。
【図１０】例示的な実施形態のための例示的なシステムアーキテクチャを示す図である。
【図１１Ａ】例示的な実施形態の動作の詳細を示す図である。
【図１１Ｂ】例示的な実施形態の動作の詳細を示す図である。
【図１１Ｃ】例示的な実施形態の動作の詳細を示す図である。
【図１２】第1の例示的な商業的実施形態を示す図である。
【図１３Ａ】第2の例示的な商業的実施形態を示す図である。
【図１３Ｂ】第2の例示的な商業的実施形態を示す図である。
【図１４】あるサービスプロバイダから別のサービスプロバイダへの例示的なサービスポータビリティを示す図である。
【図１５Ａ】図10の複製である。
【図１５Ｂ】図15Aのユーザコンピューティングデバイス100およびコンピューティング環境200の拡大図を示し、ここで、コンピュータ/アプリケーションプログラムCPが、コンピューティング環境に注入されて(分散されて)いる図である。
【図１５Ｃ】プライバシー保護サービスを消費者に提供するように意図された新しいロジックネットワーク要素、プライバシースイッチを示す図である。
【図１５Ｄ】図15Cのプライバシースイッチの一実施形態を示す図である。
【図１６】UPS/ユーザコンピューティングデバイス、SPS、およびコンピューティング環境200の間の通信経路を示す図である。
【図１７Ａ】認証プロバイダの一般的なアーキテクチャを示す図である。
【図１７Ｂ】ユーザコンピューティングデバイスが認証情報を提供される一般的な方法を示す図である。
【図１７Ｃ】図17Bの方法を要約する図である。
【図１８Ａ】暗号化鍵およびオブジェクトを生成する鍵生成エンジン(KGE)の動作を示す機能ブロック図である。
【図１８Ｂ】暗号化証明を生成する証明生成エンジン(PGE)の動作を示す機能ブロック図である。
【図１８Ｃ】暗号化認証情報の正確性を検証する証明検証エンジン(PVE)の動作を示す機能ブロック図である。
【図１９Ａ】KGEに入力される、およびKGEによって出力される例示的な構成要素を示す図である。
【図１９Ｂ】KGEに入力される、およびKGEによって出力される例示的な構成要素を示す図である。
【図１９Ｃ】KGEに入力される、およびKGEによって出力される例示的な構成要素を示す図である。
【図２０Ａ】PGEに入力される、およびPGEによって出力される例示的な構成要素を示す図である。
【図２０Ｂ】PGEに入力される、およびPGEによって出力される例示的な構成要素を示す図である。
【図２１】PVEの例示的な動作を示す図である。
【図２２Ａ】認証プロバイダによる鍵生成を示す図である。
【図２２Ｂ】認証プロバイダによる認証情報生成を示す図である。
【図２２Ｃ】ユーザコンピューティングデバイスによる認証情報生成を示す図である。
【図２２Ｄ】サービスプロバイダによる認証情報検証を示す図である。
【図２３】例示的な近似オブジェクトを示す図である。
【図２４Ａ】本明細書に記載の本発明の方法を使用した例示的なサービスを示す図である。
【図２４Ｂ】本明細書に記載の本発明の方法を使用した例示的なサービスを示す図である。
【図２４Ｃ】本明細書に記載の本発明の方法を使用した例示的なサービスを示す図である。
【発明を実施するための形態】
【０００８】
いくつかの図面は、コンピュータプログラム間の例示的な相互作用を表すメッセージシーケンス図を示す。そのような図面は、一般に、これらのプログラム、すなわち計算エンティティが実行され得る物理的なコンピュータを示さない。
【０００９】
動機付け
ウェブサービスとウェブのビジネスモデルは、消費者から収集したデータ、および消費者についてのデータに大きく依存している。カスタマイズされ、パーソナライズされたサービス、およびユーザ経験は、消費者から収集され、場合によっては第三者プロバイダから取得されたデータを使用して作成される。広告、コンテンツおよびサービスのマーケティング、推奨事項などはすべて、ユーザデータとその分析結果に部分的に基づく。スマートカー、スマート家電などの、センサおよびセンサベースのデバイスをサポートするためにウェブが進化するにつれて、ユーザデータの収集が増加することが予想される。
【００１０】
付随的に、ユーザコミュニティは、ウェブ企業が彼らの個人データを大量に記憶するという事実を認識し始めており、この認識により、多くのユーザがユーザデータの記憶と使用に疑問を投げかけている。データのプライバシーに関する懸念が高まっている。企業におけるデータの停止や侵害、および企業のソフトウェアシステムのハッキングは、そのような懸念を悪化させる。
【００１１】
いくつかの実施形態では、本発明は、これらの懸念に対処するいくつかの特徴を提供するオープン分散型市場が構築され得るシステムおよび方法を説明する。「オープン」という用語は、独自のインターフェースなしで複数のサービスプロバイダが対話する可能性を指す。「分散型」という用語は、単一のエンティティが主導権を握っているわけではなく、全体的なサービスを提供するために様々なエンティティが組み合わされ得るという概念を指す。
【００１２】
本明細書に記載の発明により、ユーザが個人データの選択された要素を1つまたは複数のサービスプロバイダに明らかにし、サービスを取得することが可能になる。しかしながら、そのようなユーザデータの提供は、設計上、提供されたデータまたはそのメモリを保持することができない計算エンティティに自分のデータを明らかにするユーザによって制御される。すなわち、計算構造は、ユーザデータを受信し、後述する意味で「無菌」である環境においてそれ自体を実行し、次いでそれ自体を終了する。
【００１３】
1つまたは複数のサービスプロバイダは、ユーザに提供される製品および/またはサービスを一緒になって構成する別個の機能を実行する個々のエンティティとして編成され得る。そのような取決めの例として、ユーザが販売者から書籍を購入し、支払い処理業者(payment processor)を使用してそれに対して支払いをし、それを荷送人によって管理される出荷において受け取ることができるビジネスの取決めを締結するオンライン書籍販売者、支払い処理業者、および荷送人を考察する。
【００１４】
本発明では、書籍販売者、支払い処理業者、および荷送人は、特別に構成され(後でより詳細に説明される)、ユーザデバイスによって受信される、たとえばダウンロードされる、コンピュータプログラムまたはアプリなどの実行可能コンピュータコードによって表される。次いで、ユーザデバイスは、データベースプロセッサを含む(分散型)コンピューティング環境にプログラムを注入する。例示の目的で、個々の実行可能コンピュータコードはコンピュータプログラムと呼ばれるが、より一般的には、本明細書に記載の方法で構成された任意の適切な種類のコンピュータコードが使用され得る。
【００１５】
さらに進む前に、説明全体を通して使用されるいくつかの用語を定義することが有用であろう。
【００１６】
本明細書で使用されるとき、「仮想マシン」という用語は、当業者によって使用されるようなその従来の意味を与えられるべきである。一般に、仮想マシンは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せを使用した物理的なコンピュータシステムのエミュレーションである。たとえば、「オペレーティングシステムレベルの仮想化」は、仮想マシンを実装するための1つの知られている技法である。この技法では、物理的なコンピュータはオペレーティングシステムレベルにおいて仮想化され、複数の「分離された」および「安全な」「ゲスト」(ソフトウェア)マシン、すなわち仮想マシンが単一の物理的なコンピュータ上で実行することを可能にする。「安全な」という用語は、あらかじめ定められた動作のみがゲストマシン内で実行され得ることを意味する。「分離された」という用語は、動作が他のゲストマシン内のリソースにアクセスできないことを意味する。すべてのゲストマシンは同じカーネルを共有するが、個々のユーザ空間を有し得る。したがって、ゲスト/仮想マシン内で実行されているコンピュータ/アプリケーションプログラムは、それをスタンドアロンコンピュータシステムと見なす。オペレーティングシステムレベルの仮想化技法を使用するソフトウェアシステムの例には、Solaris Containers、iCore Virtual Accounts、Linux-VServerなどがある。
【００１７】
仮想マシンをサポートするための別の知られている技法は、ゲストマシンが独自のカーネルを実行することを可能にするハイパーバイザまたは仮想マシンモニタを使用する点に留意されたい。たとえば、ハイパーバイザは、単一の物理的なコンピュータ上でそれぞれmacOS、Windows、Linux（登録商標）を実行している3台のゲスト/仮想マシンをサポートし得る。主要なUnixベンダは、Sun Microsystems、HP等の仮想化ハードウェアを販売している。
【００１８】
以下の説明では、コンピューティング環境(または、単に環境)は、ハードウェア、ソフトウェアおよび/またはファームウェアのプログラム可能な構成である。「分散コンピューティング環境」という用語は、ハードウェア、ファームウェア、およびソフトウェアの相互接続されたプログラム可能な構成を指す。「データベースプロセッサ」という用語は、一実施形態では、(分散)コンピューティング環境のオペレーティングシステム(OS)を示すことができ、OSは、本明細書で説明されるように、仮想マシン、セッション管理などの機能をサポートするように適切に構成される。
【００１９】
本明細書で使用される「セッション」という用語は、交換において使用される情報が特定のメモリまたはレジスタのセットに記憶され、次いで後に消去され(「破棄」または「終了」され)得る2つ以上の通信デバイスまたはコンピュータプログラム間の情報交換のプロセスを指す。デバイスおよび/またはコンピュータプログラムはまた、セッションから招待および削除されてもよく、あるいは対話がデバイスおよび/またはコンピュータプログラム間で交換される一連のデータ項目であるセッション中に1つまたは複数の対話を開始または終了してもよい。
【００２０】
ログイン、ログアウト、登録、登録解除などの一般的な使用における特定の動作は、我々のセッションの概念の1つまたは複数の側面を組み込んでもよく、それを伴ってもよい。したがって、サーバにログインするクライアントデバイスは、クライアントとサーバとの間のセッションを確立することを組み込んでもよい。コンピュータプログラムは、インスタントメッセージングサービスを提供するサーバにそれ自体を登録してもよく、そのようなアクションはまたセッションを確立することを伴ってもよい。
【００２１】
我々はまた、「一時的」という用語を使用する機会がある。この用語は、コンピュータプログラムによって作成されたセッション内に存在し、セッションが終了する前に、またはセッションの終了プロセスの一部として消去されるデータ項目を意味する。たとえば、セッション内で動作しているコンピュータプログラムは、ユーザから入力データ項目を受信して記憶することもでき、メモリユニットからデータ項目を読み取ることもできる。次いで、コンピュータプログラムは実行を終了することができ、セッションは終了されるか、消去されるか、または破棄され得る。セッション終了プロセスの一部として、メモリユニットおよびコンピュータシステムの任意の内部レジスタも消去される。このように、データ項目は一時的であると見なされる。
【００２２】
データプロセッサは、従来のデータベースプロセッサによって実行されない様々なアクションを実行する点に留意されたい。具体的には、データベースプロセッサは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のサービスプロバイダによって提供されない構成要素を選択するためにユーザデバイスを利用することによって達成される。ユーザデバイスがユーザのデータを制御し、したがって後者が選択的なサービスプロバイダのみに提供されるようにすることができるので、このサービスのポータビリティの概念は可能になる。
【０１９０】
プライバシースイッチ
上記で説明され、図10の複製である図15Aに示された本発明のいくつかの態様の要約から始める。コンピューティング環境200は、他の選択されたコンピュータプログラムを実行するために使用されてもよく、選択は、ユーザコンピューティングデバイス100を利用するサービスプロバイダまたは消費者によって実行される。いくつかの実施形態では、選択は、プログラム的手段によって、たとえば1つまたは複数のセンサデバイスによってトリガされるコンピュータプログラムによって実行され得る。選択されたコンピュータプログラムは、ユーザコンピューティングデバイスからユーザデータを取得し得る。一態様では、本発明は、選択されたコンピュータプログラムがユーザのデータのプライバシーを損なうことなしに動作し、サービスを提供し得る方法を説明する。
【０１９１】
図15Bは、図15Aの2つの要素を拡大したものであり、すなわち、ユーザコンピューティングデバイス100は、接続95を介してコンピューティング環境200と対話する。コンピューティング環境は、データベースプロセッサまたは仮想化OSによって作成および管理される。データベースプロセッサは、その中で1つまたは複数の仮想マシンVMが実行し得るセッションオブジェクトを作成するように要求される場合がある。アプリケーションプログラムはVM内で実行し得、そのようなアプリケーションプログラム(または、単にプログラム)は、それらの計算のためにユーザコンピューティングデバイス100(図15B)にユーザデータを要求し、受信し得る。
【０１９２】
「プログラムを環境に注入させる」または「プログラムを環境に注入する」という語句は、コンピュータプログラム、ユーザコンピューティングデバイス、またはサービスプロバイダがアプリケーションプログラムを選択して、データベースプロセッサまたは仮想化されたOSによって作成および管理されたセッション内のVMにおいて実行させ得る動作を示す略語として使用する。たとえば、サービスプロバイダは、ライドシェアリングプログラムを注入させたり、ライドシェアリングプログラムを環境に注入したりすることができる。図15Bは、接続95を介してユーザコンピューティングデバイス100と対話する、コンピューティング環境200に注入された例示的なプログラムCPを示す。
【０１９３】
本明細書に記載の発明は、サービスの終了時にサービスプロバイダがユーザコンピューティングデバイスによって提供されるいかなるユーザ属性情報も保持しないように、環境に注入されたコンピュータプログラムがユーザコンピューティングデバイスにサービスを提供し得ることを示す。同時に、サービスプロバイダは、提供されたユーザデータが検証可能で正確であることが保証される。この意味で、注入されたプログラムによって提供されるサービスはプライバシーを保護すると言われる。
【０１９４】
すなわち、以下で説明するユーザコンピューティングデバイスおよび関連付けられるコンピュータプログラムは、製品および/またはサービスをユーザに引き渡しながら、ユーザのプライバシー上の懸念およびサービスプロバイダのデータの完全性の懸念を強化するように動作する。本発明は、図15Cに示されるようなシステムまたは構成を提案し、そのいくつかの詳細は、以下の提示においてさらに説明される。
【０１９５】
一般に、図15Cは、図15Bの構成へのロジックネットワーク要素、プライバシースイッチ400の導入を示す。一実施形態では、プライバシースイッチは、ユーザプライバシースイッチ(UPS)50とサーバプライバシースイッチ(SPS)300の2つの部分を備える。プライバシースイッチは、ソフトウェアエンティティの集合として実装され得る。一実施形態では、UPSは、ユーザコンピューティングデバイス100内で実行されるソフトウェアプログラムの集合として実装され、図15DではUPS50とラベル付けされ、SPS300はスタンドアロンサーバ複合体、たとえばクラウドベースのコンピューティング環境において実装され、次に、コンピューティング環境200に接続する。いくつかの実施形態では、SPS300は、コンピューティング環境200の一部として実装され得る。
【０１９６】
プライバシースイッチのUPS50は、ユーザの制御下で、オンまたは有効、およびオフまたは無効の2つの設定を有する。以下の説明で詳しく説明するように、「オン」に設定すると、UPSはSPSとともにサービス提供中にユーザのプライバシーを保護するように動作する。「オフ」に設定すると、UPSおよびSPSは機能しなくなり、ユーザコンピューティングデバイスは従来の振る舞いに戻る。以下の説明では、UPS設定は「オン」であると仮定される。従来の方法で振る舞うユーザコンピューティングデバイスは、サービス提供中にユーザデータのプライバシーを保護しないことがある点に留意されたい。プライバシー保護サービスを利用するために、ユーザはUPSを「オン」設定に設定し得る。
【０１９７】
本発明の一実施形態では、UPSおよびSPSは仮想マシン内で実行する。
【０１９８】
簡単に言えば、プライバシースイッチPSは、UPSが「有効」であるとき、または「オン」の位置に設定されているとき、ユーザコンピューティングデバイスがプライバシーを保護する方法でサービスプロバイダと対話し、サービスプロバイダからサービスを受信することを可能にするUPSとSPSの組合せ(図15Cおよび図15D)であると言える。
【０１９９】
次に、(データベースプロセッサまたは仮想化されたOSによって作成されたコンピューティング環境に関連して)プライバシースイッチによって提供される機能、および実行される動作をさらに説明し、特徴付ける。
【０２００】
コンピュータプログラムによって表され、ユーザ情報を提供されるサービスプロバイダは、受信したユーザ情報を処理する必要がある場合があり、その処理は受信した情報をコピーして保存する動作を超えて拡張することを観察する。いくつかのそのような可能性のある処理ニーズを考察し、それらが以下のようにユーザ情報のさらなる分類につながることを観察する。
1.別名情報:別名の例として、消費者によって選択されたユーザ名の一般的な使用がある。サービスプロバイダは、ユーザが提供した情報と以前の履歴使用パターンを関連付けるために、ユーザ名を使用する。例:推奨事項を決定するために履歴トランザクションが現在のトランザクションに関連付けられ得るように、ユーザによって過去に使用された@johnなどのユーザ名または別名を提供し得る。
2.識別情報:サービスプロバイダは、ユーザを認証するためにユーザによって提供された識別情報を処理する必要がある。例:ユーザの身元を認証するために、バイオメトリック情報が使用され得る。
3.個人属性または履歴データに基づくアサーション/プリファレンス:サービスプロバイダは、ユーザによって提供された情報の正確性を検証する必要がある。一例として、ユーザは、知られているアルゴリズムによるユーザの運転免許証データセットの処理に基づいて、彼の「年齢は21歳を超えている」と主張し得る。ユーザは、知られているアルゴリズムによる彼の履歴購入データの処理に基づいて、クラシック音楽が好きであると主張し得る。
4.近似情報:サービスプロバイダは、ユーザの実際の情報/データに近似する情報のみを解決する必要がある。例:ユーザは自分の位置の郵便番号を提供するが、サービスプロバイダは、たとえばユーザに品目を配達するために住所を必要とする。
【０２０１】
プライバシースイッチ(400、図15C参照)は、ユーザのプライバシー上の懸念を保証しながら、サービスプロバイダの上記の識別された4つのニーズに対処する。詳細は以下の説明において明らかにされる。以下の説明における「ユーザコンピューティングデバイス」への言及は、UPS50を組み込んだユーザデバイス100を指すものとして解釈されるべきである(図15Cまたは図15D参照)。
【０２０２】
一実施形態では、本発明は、集合的に難読化されたオブジェクトと呼ばれるユーザ情報、すなわち別名、識別情報、アサーション/プリファレンス、および近似情報がサービスプロバイダに提示され得、次いで提示されたオブジェクトを検証し得る方法を提示する。検証プロセスは、サービスプロバイダに具体的な利益をもたらし、それは真正性、解決可能性および起源と呼ばれ、さらに後述される。
【０２０３】
別名情報/ユーザ名情報
サービスプロバイダにとって、ユーザのサービス経験をカスタマイズするために、ユーザ名などの識別子によってインデックス付けされたユーザの履歴使用データを使用することは一般的である。したがって、多くのサービスは、ユーザによる以前の訪問から保存されたそのような履歴データに基づいて、推奨および広告をユーザに提供する。ユーザの識別情報または他の情報属性をサービスプロバイダから秘密にすることは、ユーザのサービス経験を個人化するサービスプロバイダの能力に悪影響を及ぼす可能性がある。
【０２０４】
一方、ユーザ名は、ユーザのプライバシーを損なう可能性がある唯一の種類のユーザ属性情報ではない。たとえば、後でユーザに連絡するために、電話番号などの識別子が使用され得る。従来技術によって教示されているように、IPアドレスを物理的な位置にマッピングする地理的データベースを使用して物理的な位置を導出するために、ユーザのIPアドレスが利用され得る。
【０２０５】
したがって、ユーザとサービスプロバイダの両方に、対処される必要がある懸念がある。
【０２０６】
いくつかの実施形態では、本発明は、1)解釈不可能な識別子を通じてユーザ識別子が知られること、および2)ユーザコンピューティングデバイスと外部コンピューティング環境との間の通信が、ユーザ識別子およびその他のユーザ属性情報を難読化するエンティティによって仲介されることを要求することによって、上記の問題に対する解決策を提供する。ユーザは自分の判断で識別子を変更することがあるので、識別子に関連付けられるあらゆる解釈は一時的なものになる。解釈不可能な識別子を示すために「別名」という用語を使用することがある。
【０２０７】
一実施形態では、セッション内のユーザコンピューティングデバイス間の通信を難読化するエンティティは、以下に説明する特定の方法で動作するプライバシースイッチである。
【０２０８】
図16は、SPS300がユーザコンピューティングデバイス100(同様に、UPS50)と例示的なコンピュータプログラムCP200との間の通信のための仲介者として機能する構成の動作を示す。すなわち、CP200およびUPS50は、データベースプロセッサによって作成されセッション中である。UPS50は、SPS300によって受信されCPに転送される要求を送信する。逆方向では、CPからのデータはSPS300によって受信され、UPS50に転送される。一実施形態では、UPS50は、SPS300から情報を「引き出す」という一般に知られている手法を使用し得る。
【０２０９】
後述されるように、(SPS300を介する)UPS50からCP200への要求は、認証、クレジットカードトランザクション、および他のユーザ属性情報を含む様々な種類のサービス要求を備え得る。
【０２１０】
上述した難読化の要件は、SPS300をCP200に転送する前にUPS50から受信した要求に識別子を割り当てることをSPS300に要求することによって実装され得ることを観察する。サブシステムSPS300によるそのような処理を以下のように説明する。
【０２１１】
UPS50を有するユーザデバイス100は、コンピュータプログラムCP200によって提供されるサービスを招待されるか(帯域外プロセスにおいて)「発見」する。上述のように、我々はUPSが有効であると仮定する。ユーザデバイス100(同様に、UPS50)は識別子、たとえば「@john」を選択し、SPS300に到着する要求を送信し(または、対話を開始し)、それは次に、たとえば「@john123」という第2の識別子を作成し、受信した要求をCP200に転送し、識別子@johnを@john123に置換する。したがって、CP200は、要求が@john123として識別されるエンティティからのものであると仮定する。CP200は、「@john123」として識別されるユーザコンピューティングデバイス/UPSからの要求を受信するが、関連付けリスト(@john、@john123)を保持することによって、SPS300は、ユーザコンピューティングデバイスが「@john」として識別されていると認識する。
【０２１２】
したがって、CP200は、ユーザ名「john123」を有するSPS300とセッション中であり得る。実際には、SPS300がユーザコンピューティングデバイス100のための仲介者またはプロキシとして機能するので、CP200は、ユーザ名「@john」を使用してユーザコンピューティングデバイス100とセッション状態にある。
【０２１３】
関連付けリスト(@john、@john123)を維持することによって、SPS300は、将来のセッションにおける対話のために、ユーザコンピューティングデバイス100とCP200との間の仲介者として機能し続けることができる。SPS300は、識別子「@john123」を使用してユーザコンピューティングデバイス100に関連するトランザクションデータを保存し、それをユーザコンピューティングデバイス100から受信した後続の要求において使用し得る。
【０２１４】
ユーザのプライバシーを保護するために、ユーザコンピューティングデバイスに識別子を割り当て、識別子を備える関連付けリストを維持するそのような動作は、図15DのSPS300によって実行される動作の一例を提供する。
【０２１５】
SPSは、UPSによって記憶および管理され得る認証情報およびユーザ名を備える別のタイプの関連付けリストをUPSが作成するのを助けることができる。そのような実施形態では、SPSは、関連付けリスト、たとえば(A3、A4)を生成するために使用される特定のアルゴリズム(後述される)をUPSに提供し、A3は「認証情報」と呼ばれる暗号オブジェクトであり、A4は「@john123」のような(暗号化されていない)ユーザ名である。
【０２１６】
認証情報およびユーザ名を備える関連付けリスト、たとえば(A3、A4)は、次いで、様々な方法で使用され得、たとえば、コンピュータプログラムまたはウェブサイトにログインするためにユーザコンピューティングデバイスによって使用され得る。次いで、後者は、認証情報A3の真正性を「検証する」ための動作を引き受けることができる(このプロセスの詳細は後述される)。検証が成功すると、ユーザデバイスはコンピュータプログラムまたはウェブサイトにログインするために認証され得る。(一実施形態では、SPSは指示された検証動作において使用される。)
【０２１７】
したがって、そのような実施形態では、UPSは認証情報およびユーザ名を備える関連付けリストを作成し、その関連付けリストを維持するのに対し、以前の実施形態では、SPSはその関連付けリストを作成し維持した。ユーザコンピューティングデバイスは、認証情報およびユーザ名を備える関連付けリストを使用して、サービス提供プログラムと直接、すなわちSPSを仲介者として使用せずに、通信し得る。
【０２１８】
以上、2つの実施形態を示した。一実施形態では、ユーザコンピューティングデバイスはSPSを介してサービス提供プログラムと通信し、後者は1つのタイプの関連付けリストを作成し維持する。他の実施形態では、ユーザコンピューティングデバイスは、SPSの助けを借りて第2のタイプの関連付けリストを作成し維持するが、SPSを仲介者として使用せずにサービス提供プログラムと直接通信し得る。
【０２１９】
識別情報
インターネット/ウェブ上で消費者が利用可能なほとんどのサービスは、消費者がユーザ識別情報を入力することを要求する。識別情報は、ユーザを一意に識別するユーザ情報のサブセットとして分類され得る。たとえば、名前または住所は個人を一意に識別できない場合があるが、社会保障番号と指紋は一意の識別子である。ユーザ名/パスワードの組合せは、ユーザに固有の識別情報の別の例を提供する。識別情報はユーザに固有のものであるため、ユーザのプライバシーを考慮する際には特に注意が必要である。
【０２２０】
我々は、ユーザコンピューティングデバイスによって要求側プログラムに情報を提供するために使用され得る識別情報を開示するための方法を提案する。
・ユーザコンピューティングデバイスは、識別情報を代表的なデータセットに変換し、次いで、代表的なデータセットは、認証情報と呼ばれる暗号化オブジェクトとして符号化される。認証情報は、すべてのエンティティに対して不透明であるという特性を有する。認証情報は、検証者と呼ばれる計算エンティティによって(以下で説明する意味で)検証され得る。しかしながら、検証者はユーザの識別情報を再導出することはできない。
【０２２１】
したがって、ユーザの識別情報は、コンピュータプログラムに提示され得る認証情報に変換され得る。受信側コンピュータプログラムは、ユーザに関するこれ以上の情報を知ることなしに、認証情報の真正性を検証するように検証エンティティに要求し得る。検証エンティティは、認証情報からユーザ情報を再導出することができなくても認証情報を検証することができる。
【０２２２】
以下に、その方法の詳細を提示する。
【０２２３】
現在の慣例では、ユーザはサービスを受けるためにサービスプロバイダに登録し得る。登録のプロセスは、ユーザを認証するためにサービスプロバイダによって使用されるユーザ名およびパスワードをユーザが選択することを伴い得る。パスワードは悪意のあるエンティティによってハッキングされる可能性があるため、暗号化認証情報を検討することが望ましい場合がある。
【０２２４】
現在の技術動向では、ユーザを認証するために指紋データ、顔画像データなどのバイオメトリック情報が認証情報として使用されてきた。たとえば、モバイル電話またはスマートフォンは、デバイスまたは1つまたは複数のサービスプロバイダに対してユーザを認証するために、ユーザからの指紋データを使用し得る。しかしながら、プライバシー上の懸念から、ユーザは一般に、自分のバイオメトリックデータがサービスプロバイダと共有されることを望まない。
【０２２５】
この問題を回避するために、スマートフォンは指紋データをプロセッサのローカルメモリに保存し、プロセッサのオペレーティングシステムが、参加しているサービスプロバイダによって認識されるトークンを生成する。典型的には、これらのサービスプロバイダは、スマートフォン(のオペレーティングシステム)からトークンを受け取り、それ(または、代表)を参加しているサービスプロバイダに送信する、いわゆる「アプリ」などのソフトウェアをスマートフォンに常駐させる必要がある。そのような方法は、共通のトークンのセット(または、それらのアプリによって生成されたものの代表)の受け入れにすべて参加しているサービスプロバイダのクローズドシステムを生み出す。
【０２２６】
要するに、ユーザは、自分の、たとえばスマートフォンのオペレーティングシステムに対して自分自身を認証することができ、次に、そのスマートフォンは、その有効性が他のサービスプロバイダによって受け入れられるトークンを提供する。したがって、サービスプロバイダがスマートフォンのオペレーティングシステムを信頼しているので、ユーザは参加しているサービスプロバイダのシステムへのアクセスを許可される。
【０２２７】
スマートフォンおよび他のユーザコンピューティングデバイスは、ユーザデータ、たとえばバイオメトリックデータを記憶するための安全な内部ストレージ領域を提供する技術を開発してきた。そのような内部ストレージ領域はスマートデバイスのオペレーティングシステムにのみアクセス可能であり、外部の第三者ソフトウェアにはアクセスできない可能性がある。我々は、そのような発明によって奨励され、そして以下に説明されるようにそれらを本発明において適切に利用する。
【０２２８】
一態様では、本明細書に記載の主題により、企業からのトークンに入れられた信頼を方法、すなわち暗号オブジェクトを操作する1つまたは複数の(おそらく分散型)コンピューティングエンティティによって実行される一連のステップまたはアクションと置換することが可能になる。そのような方法は、次いで、任意のサービスプロバイダ、オペレーティングシステム、デバイス、またはプラットフォームとは無関係に検証され得る。
【０２２９】
したがって、検証は、デバイスおよびプラットフォームに依存しない方法で実行され得る。そのような独立性は、セキュリティへの影響において非常に重要である。単一の企業に依存する信頼モデルは、本質的に安全ではなく、単一障害点であるため攻撃を受けやすい。多くのコンピューティングエンティティの間で分散されるデバイスおよびプラットフォームに依存しない方法では、異なるエンティティが他のエンティティをチェックし、たとえ一部の部分が攻撃を受けていても、その方法はその機能を実行し続けることができる。たとえば、インターネットの転送またはルーティングの堅牢性は、送信元アドレスと宛先(IP)アドレスの間に複数の経路があることに依存している点に留意されたい。さらなる例として、電気通信ネットワークは、所望のレベルの信頼性を達成するために分散コンピューティングエンティティをしばしば使用する。同様に、データセンタはデータを地理的に離れたエンティティに分散する。
【０２３０】
さらに、ユーザデータを(ユーザデータのプライバシーを侵害することなしに)安全に検証され得る認証情報としてカプセル化することは、ユーザ名とパスワードを作成および記憶すること、プライバシー侵害の知られている原因、およびコンピュータ動作のセキュリティにおけるセキュリティ問題からユーザを解放する。
【０２３１】
図17Aは、開示される主題の態様が実施され得る動作環境の一例の一般的なアーキテクチャを示す。
【０２３２】
識別子、たとえば、@johnを使用してサービスプロバイダとの間でアカウントを確立したユーザは、次いで、将来の訪問を認証するために使用され得る認証情報を提供するように要求され得る。あるいは、ユーザは、認証情報とユーザ名とをペアとして一緒に提示し得る。
【０２３３】
バイオメトリック指紋情報を使用して認証情報を生成するために、ユーザは以下のように進むことができる。
【０２３４】
一実施形態では、ユーザコンピューティングデバイスは統合指紋スキャナを含む。スキャナは、ユーザの指紋をスキャン/捕捉し、それをデータの行列に変換し、後で計算に使用するために指紋およびデータ行列をユーザコンピューティングデバイスのメモリに記憶することができる。一実施形態では、指紋およびデータ行列は、オペレーティングシステム、またはオペレーティングシステムによって許可されている選択されたアプリケーションにのみアクセス可能なユーザコンピューティングデバイスの安全なストレージ領域に記憶される。現代のスマートフォンは、統合指紋スキャナを備えたユーザコンピューティングデバイスの一例を表している。
【０２３５】
指紋スキャナは、ユーザのバイオメトリックデータの捕捉および使用を容易にするデバイスの一例である。網膜スキャン、顔の特徴を捕捉するカメラセンサ、声紋インプリントなど、やはりユーザを識別するために使用され得るユーザのバイオメトリックデータの他の例がある。本発明における指紋バイオメトリックデータの使用は純粋に例示的なものであり、本明細書に開示された本発明を限定することが意図されるものでは決してない。
【０２３６】
ユーザの指紋(バイオメトリック)データは、ユーザコンピューティングデバイスによって捕捉され処理されるか、またはサーバに送信され、そこでユーザコンピューティングデバイスおよびサーバによって実行される計算活動の組合せによって処理され得る。本明細書に開示されている主題では、限定なしに、指紋データは、ユーザコンピューティングデバイスとサーバの両方において発生する計算活動の組合せによって処理されると仮定する。
【０２３７】
図17Aは、本明細書で認証情報クリエータと呼ばれる、ソフトウェアロジック101を含み、認証情報と呼ばれる暗号データオブジェクトを作成するために使用され得る、ユーザコンピューティングデバイスを示す。認証情報が作成されるプロセスの詳細については、以下で説明する。認証情報クリエータ101によって実行される機能は、1つまたは複数のサービスプロバイダに提示され得る出力データセットまたは認証情報を生成するために入力データセットまたは認証情報を処理することとして説明され得ることを手短に説明する。
【０２３８】
サービスプロバイダは、以下で説明するソフトウェアベースの方法を使用して提示された認証情報を検証し得る。一実施形態では、検証は、第三者、いわゆる検証者に頼ることを伴うことがある。第2の実施形態では、検証者はプライバシースイッチのSPS構成要素に統合される(図15D参照)。後者の実施形態を限定なしに仮定する。
【０２３９】
次に、認証情報の作成、提示、および検証に目を向けると、図17Aから始まる。認証プロバイダは、認証情報を作成および提示するために使用され得るアルゴリズムをユーザコンピューティングデバイスに提供するエンティティである。一実施形態では、プライバシースイッチのSPS構成要素(図15D参照)が認証プロバイダとして機能する。図17Aにおいて、認証プロバイダ2000は、後により詳細に説明される様々な機能を実行することができるソフトウェアプログラムを表す構成要素201、202、および203を含む。これらの機能は集合的に200としてラベル付けされ、分散型ストレージおよびデータベースシステム300へのアクセスを有すると仮定される。図示されるように、200とラベル付けされた機能は、ユーザを認証するために役立つ認証情報の生成に参加し、ユーザの指紋データの暗号化されたバージョンは、ストレージシステム300のレコード375に記憶され得る。
【０２４０】
一実施形態では、データベースシステム300(2000、図17A参照)は、ブロックチェーン元帳システムとして実装され、機能は、元帳内のデータ上で動作するスマートコントラクトのセットとして200とラベル付けされている。
【０２４１】
認証プロバイダが、ユーザコンピューティングデバイスが認証情報を作成してサービスプロバイダに提示することを可能にしたいと仮定し、後者は、提示された認証情報を検証するために認証プロバイダに頼ることができる。この目的を達成するために、認証プロバイダは、図17Aにおいて鍵生成器201、証明生成器202、および検証者203として示される機能を実行することを可能にするソフトウェアプログラムを開発または取得する。最初に、これらの機能が実行される一般的な方法について説明し、次いでより詳細な説明を提示する。一般的な方法は、図17Bを参照して説明される。
[方法M1]:
・提供ステップにおいて、ユーザコンピューティングデバイスは、認証情報クリエータ101(図17A)と呼ばれる特定のソフトウェアを提供される。
・ステップ1a(図17B)において、ユーザコンピューティングデバイスは識別子@johnを選択し、それに対する認証情報の認証を認証プロバイダに要求する。
・ステップ1bにおいて、認証プロバイダは、鍵生成器201(図17A)と呼ばれるソフトウェアプログラムを、特定の入力である認証情報作成アルゴリズム上で実行する。出力は、一連の計算オブジェクト(鍵と呼ばれる)のセット、PK1およびVK1である。このソフトウェアプログラムの詳細と鍵の性質については以下で説明する。認証プロバイダは、第2の入力である認証情報照合アルゴリズムを使用して鍵生成プログラムも実行し、これは、出力としてPK2とVK2と呼ばれる2つの鍵のセットを生成する。
・ステップ2において、認証プロバイダは、指紋データ行列の暗号化されたバージョン(しかし、指紋自体ではない)を要求し、それをユーザコンピューティングデバイスから受信する。ユーザコンピューティングデバイスは、提供ステップの結果として受信したソフトウェアプログラム認証情報クリエータ101を使用し得る。101の機能のさらなる詳細は後で説明される。
・ステップ3において、認証プロバイダは、集合的に認証情報、認証情報-1と呼ばれる2つのオブジェクト、証明-1および符号化データ-1を生成するために、ユーザコンピューティングデバイスから受信したデータ行列と、証明生成器202(図17A)と呼ばれるソフトウェアプログラムとを使用する。任意で、証明生成器202への入力は、後で論じるように他のデータセットをさらに含み得る。
・ステップ4において、生成された認証情報、認証情報-1、ならびに鍵PK1、VK1、およびPK2は、ユーザコンピューティングデバイスに送信される。VK2は送信されない点に留意されたい。VK2は、後で認証情報を検証する際に使用するために、認証プロバイダによって保存される。
・ユーザコンピューティングデバイスが認証情報を提示したいときに起こり得るステップ5aにおいて、ユーザコンピューティングデバイスは、(ソフトウェアプログラム認証情報クリエータ101を使用して、図17Aを参照)新しい認証情報、認証情報-2を生成し、それを、提示された認証情報が認証プロバイダによって検証されるように要求し得るサービスプロバイダ/環境(200、図15D参照)に提示する(ステップ6)。
・ステップ7aおよび7bにおいて、認証プロバイダは、ユーザを認証し、それに従ってサービスプロバイダ/環境に応答する際に、提示された認証情報、認証情報-2を検証するために、検証者203(図17A)と呼ばれるソフトウェアプログラムを(入力として以前に保存されたVK2とともに)使用する。
【０２４２】
図17Cは方法M1を要約したものであり、ここで我々はSPSが認証プロバイダとして使用されることを限定なしに仮定する。いくつかの実施形態では、図17Cにおけるサービスプロバイダ200は、認証プロバイダ300をサブ構成要素として統合し得る点に留意されたい。
【０２４３】
次に、上記で言及した様々な計算オブジェクト、すなわち、鍵、証明、認証情報などが導出され認証される方法をより詳細に説明することに進む。
【０２４４】
KGE(鍵生成エンジン)、PGE(証明生成エンジン)、およびPVE(証明検証エンジン)の3つのソフトウェアエンジンの存在を仮定する。(図17Aに示される認証プロバイダの鍵生成器201、証明生成器202、および検証者203という構成要素は、コンピュータプログラムとしてこれらのエンジンをカプセル化し得る。)従来技術で知られているように、これらのエンジンの各々は、特別なソフトウェアロジックを実行する1つまたは複数のコンピュータ上で実装され得る。様々なエンジンの機能を説明する便利な方法は、18A、18B、18C、および18Dにそれぞれ示されるように「ブロックボックス」デバイスとしてそれらを扱うことである。KGE(111、図18A参照)は、入力としてコンピュータプログラムL、100を受け取る。それは、それぞれ証明鍵および検証鍵と呼ばれる2つの暗号化鍵PK300およびVK400を生成する。
【０２４５】
一例として、ソフトウェアロジックは、コンピュータプログラムを処理し、主要なオブジェクトを生成するインターネットプロバイダによって、パブリックドメインで公開されている(たとえば、Eli Ben-Sassonらによる、「Snarks for C:verifying program executions succinctly and in zero knowledge」を参照されたい。これは、安全なhttp、すなわち、https接続を介して、ウェブサイトeprint(dot)iacr(org)(slash)2013(slash)507(dot)pdfで入手可能である)。
【０２４６】
KGEによって生成された鍵PKとVKは入力ソフトウェアロジックの機能である点に留意することが重要である。ソフトウェアロジックへの任意の変更によって、異なるPKとVKが生成される。さらに、PKとVKの相補性は入力ソフトウェアロジックに依存する。すなわち、入力アルゴリズムに対するいかなる変更も出力キーに対する変更を必要とするという意味で、出力キーは入力アルゴリズムを独自に特徴付ける。
【０２４７】
「鍵または暗号化鍵」という用語は、以下の特性を満たすデジタルデータオブジェクトを指す。
・(P1)出力キーは、表示画面上にレンダリングされると、ランダムな一連の2進(16進)数字として表示されることがある。
・(P2)KGEへの2つの異なる入力アルゴリズムが同じ出力キーを生成することはない。
【０２４８】
PGE(222、図18B)は、符号化オブジェクトEO500(すなわち、以下の説明に従って生成されたデータセット)および証明鍵PK300(上記のKGEによって生成された)を受け取り、照明と呼ばれる暗号化オブジェクトP(555)と、入力EO 500の関数である新しいデータセット符号化オブジェクト(EO-2 550)を生成する。暗号化オブジェクト「P555」は、上記のプロパティP1を満たす、すなわち、表示された場合、それは、(16進)数字のランダムな集合として現れる。
【０２４９】
PVE(333、図18C)は、入力として、KGEによって生成された検証鍵VK(400)、PGEによって生成された証明オブジェクトP(555)、およびデータセットEO-2(550)を受け取り、「真」または「偽」のいずれかを出力する。次の条件がすべて当てはまる場合に限り、応答「真」を生成する。そうでなければ、応答「偽」を生成する。
・データセット550および証明オブジェクトP(555)はPGE222によって生成される(図18B参照)。
・鍵VKはKGEによって生成される。
【０２５０】
したがって、PVE(図18C)は、オブジェクト「証明」および「符号化データ」(図18B)がKGEへのアルゴリズム「L」入力(図18A)を使用して生成されたことを検証するために使用され得る点に留意されたい。オブジェクト「証明」および「符号化データ」がともに「認証情報」または「カード」と呼ばれる場合、認証情報またはカードが所与のアルゴリズムLによって生成されたことが検証されたと述べることができる。
【０２５１】
検証鍵を使用することによって認証情報を検証することで、所与のアルゴリズムを使用してエンジンKGEを実行することによって認証情報が確実に生成されたことを確認する。この特徴を認証情報の起源の検証と呼び、すなわち認証情報は、知られており変更されていないアルゴリズムから導出される。
【０２５２】
次に、KGE、PGE、およびPVEを構築し使用する有効化実施形態を示して説明する。
【０２５３】
指紋センサ/スキャナによって捕捉されたときのユーザの指紋データが、典型的には1000×1000行列のデータの行列として表され得ることは、従来技術においてよく知られている(たとえば、メリーランド州ゲイザーズバーグの米国標準技術局のJ. Chuらによる「Using Chebyshev's inequality to determine sample size in Biometric evaluation of fingerprint data」参照)。説明を簡単にするために、我々の有効化の例を、9個のサンプルを有するデータセット、すなわち図19Aに示されるような正方形3×3行列に限定する。(同様に、ユーザの顔のデータもデータセットとして捕捉され得る。当然のことながら、顔のデータセットは指紋のデータセットよりもサイズが大きくなる。)
【０２５４】
次に、エンジンKGEおよびPGEの機能が、以下のように図19A、図19B、図19C、図20A、および図20Bを参照して説明され得る。
【０２５５】
入力データセットから相補鍵のペアを生成することは、従来技術においてよく知られており(たとえば、Paarらによる「Understanding Cryptography, Springer, New York」ISBN:978-3-642-04100-6を参照されたい。上記で引用したEli Ben-Sassonらによる論文は、鍵がどのように効率的に生成され得るかを示している)、したがって、KGEはそれに応じて構築され得る。
【０２５６】
次に、PGEの有効化実施形態に注目すると、図19Aは、ユーザの指紋データの例示的なデータセットを3×3行列として示している。行列のセルには、ローマ数字(i、iiなど)を使用して1から9までの番号が付けられており、セル値は整数37、42などとして示されている。図19Bにおいて、図示されるように、各セル値とその位置をペアとして、1、2、または3の整数のうちの1つにマッピングする。ペアはセル番号とセル値を表すので、(i、37)は行列のセル「i」におけるサンプル値37などを意味する。
【０２５７】
次に、整数1、2、および3を使用して3×3数独パズル(ラテンスクエアとしても知られている)を構築する。そのような構成の1つが図19Cに示されている。よく知られているように、数独パズルは各行および列の合計が等しいという制約を満たす。(図19Cに示される例では、各行および各列のセル値は合計で6になる。)
【０２５８】
数独パズルは3×3の次数(すなわち次元)であるように選択され、入力データセットも3×3の次数の行列であると仮定されたが、これは単に偶然の一致である。セルの数がマッピングテーブル、すなわち図19Bのエントリの数以上である限り、任意の次数の数独パズルを選択し得る。数独パズルの次数は、その計算上の難しさに関連している点に留意されたい。したがって、エンジニアはそれに応じて次数を決定することを望む場合がある。
【０２５９】
図19Cの数独構成の知識は、図19Bのデータを持たずに図19Aの行列を導出するために使用することはできない点に留意されたい。すなわち、図19Bを介して図19Aから図5Cに進むことは、計算は簡単であるが、逆進であり、図19Bの知識なしに図19Cから図19Aを導出することは計算的に難しい。
【０２６０】
(計算の容易さおよび難しさの概念は、コンピュータ動作の効率を指し、従来技術においてよく知られている。)
【０２６１】
したがって、PGEの機能は、入力として指紋データセットおよびアルゴリズムLをとるソフトウェアプログラム(エンジン)として説明され得る。アルゴリズム「L」は、マッピング(図19Bに示されるような)を生成するために入力データセットを操作し、そこから図19Cに示されるような完成した/解決された数独パズルを生成する。
【０２６２】
図19Cのデータセット、すなわち完成した/解決された数独パズルを取ると、PGEはそれを図20Aおよび図20Bに示されるように2つの部分に分割する。元の完成した表、図19Cを取得するために、2つの分割部分、図20Aおよび図20Bをまとめるのは、計算上簡単である点に留意されたい。しかしながら、図20Aから完成した表、図19Cを導出することは、計算上困難である。たとえば、9×9の数独パズルには無数の可能な解決策(6,670,903,752,021,072,936,960通り)があると推定される。
【０２６３】
したがって、PGEは、入力として符号化データセットおよびアルゴリズムを受け取り、出力として(1)部分的に解決された数独パズル(図20A)を表す暗号化データセット(「証明構成要素」)と、(2)暗号化されていない、数独パズルの「欠けている」部分(図20B、「欠けている構成要素」)とを生成するエンジンとして説明され得る。
【０２６４】
次に、次の通り図21を用いてPVEの有効化の例を説明する。
【０２６５】
PVEは、数独の制約を満たす完成した表を得るために、証明構成要素(図20A)を復号し、それを、暗号化されていない、欠けている構成要素(図20B)と結合する。表が完成して制約が満たされると、PVEは「true」を出力し、制約が満たされない場合は「false」を出力する。
【０２６６】
数独パズルの計算上の難しさは、数独パズルを2つの部分に分割し、それらを別々のエンティティに分散するときに、パズルの1つのピースを所有するエンティティは、問題を「解決する」、すなわち欠けているピースを計算するために膨大な計算力を必要とするという事実に依存している一方、パズルの2つのピースを持つエンティティは、比較的小さな計算量でそれらを組み合わせることができることを意味する点に留意されたい。
【０２６７】
次に、図17Bに示されるように実行される方法をより完全に説明するために、KGE、PGE、およびPVEの上記の説明を適用し、すなわち、提供動作の詳細、ならびにステップ1b、3、5a、および7aの詳細を提示する。
【０２６８】
認証プロバイダは、認証情報作成アルゴリズムと認証情報照合アルゴリズムの2つのアルゴリズムを、認証情報クリエータと呼ばれるソフトウェアパッケージに、アルゴリズムを利用するためのロジックとともにカプセル化する。図17Bの提供ステップにおいて、パッケージ認証情報クリエータがユーザコンピューティングデバイスに提供される。
【０２６９】
「認証情報作成アルゴリズム」は、上述したように証明鍵および検証鍵を生成するコンピュータアルゴリズムである。「認証情報照合アルゴリズム」は、2つの(実際の)指紋を照合して「はい/いいえ」の応答を返すコンピュータアルゴリズムである。いくつかのインターネットサービスプロバイダ、たとえばAmazonは、オープンソースソフトウェアとして指紋データおよび顔画像データ照合アルゴリズムを提供している。
【０２７０】
ステップ1b(図17B参照)において、認証プロバイダは、KGEへの入力として認証情報生成アルゴリズムを用いて鍵PK1およびVK1を生成する。次に、KGEへの入力として認証情報照合アルゴリズムを使用して鍵PK2およびVK2を生成する。これら2つの場合が図22Aに示されている。
【０２７１】
ステップ3(図17B参照)において、認証プロバイダは、証明オブジェクトと符号化オブジェクトとからなる認証情報C1を生成するためにPGEを使用する。これは図22Bに示されている。PGEへの入力は、認証情報クリエータ101によって導出された指紋データ行列である(図17A参照)。特定の実施形態では、任意の動作において、追加のデータセットもPGEへの入力として提供され得る。たとえば、ユーザは、認証情報に符号化される名前または語句を提供し得る。この機能は、認証情報がユーザを認証するために2つの項目、指紋データ、およびユーザ名またはフェーズをカプセル化するという意味で、2要素認証を彷彿とさせる。したがって、認証情報生成および提示フェーズでは2つの情報項目が必要になる。
【０２７２】
PGE(図22B)は、出力として証明オブジェクトおよび符号化データのバージョンを生成する。これらのオブジェクトの組合せは、カードC1と呼ばれる。「カード」という用語は単に、指示された計算オブジェクト、すなわち証明データセットおよび符号化データセットの組合せの名前である点に留意されたい。それは物理的エンティティを指さない。(「認証情報」および「カード」という用語は同義語として使用される。)
【０２７３】
ステップ5a(図17B参照)において、ユーザコンピューティングデバイスは、図22Cに示されるプロセスを実行するために認証情報クリエータソフトウェアパッケージを使用する。プロセスが実行されると、第2の認証情報/カードC2が生成される。
【０２７４】
図22Cの処理は、以下のように説明され得る。ユーザコンピューティングデバイスが「C1」を所有し、認証プロバイダからVK1を受信したことを思い出されたい(図17Bにおいて説明されるように)。PVEへの入力としてC1とVK1を使用し、PVEを使用してC1を検証する。C1が検証された場合(すなわち、PVEが「はい」を出力した場合)、以下のように進み、C1が検証されない場合は、失敗を報告してプロセスを終了する。
【０２７５】
次に、図22Cの処理は、ユーザに自分の指紋(実際の)とユーザ入力(もしあれば、たとえば、ユーザ名)を提供するように要求する。これらは、提供された指紋が記憶されているユーザの指紋と一致するかどうかをチェックするために、認証情報照合アルゴリズムに入力として与えられる。負の一致は失敗として報告される。正の一致があると、カードC2を生成するために、入力PK2およびユーザデータ(もしあれば)を用いてPGEを呼び出す。
【０２７６】
ステップ7a(図17B参照)において、認証プロバイダは、図22Dに示されるようにC2を検証するために、PVEとVK2を使用する。
【０２７７】
C1は指紋データ行列とユーザ指定の入力との間の関係を符号化するのに対し、C2は2つの事実を符号化することに注意することが重要である:
1.(1)C1の検証は、指紋データ行列とユーザ入力との間の関係を確立し、
2.(2)C2の検証は、ユーザ入力とユーザの実際の指紋との間の関係を確立する。
【０２７８】
事実(1)および(2)から、ユーザ入力データは指紋データ行列をユーザの実際の指紋に「リンク」することになる。
【０２７９】
したがって、C2の検証は、C1を生成したユーザがC2を生成したユーザと同じであることを証明する。認証プロバイダへのユーザ識別情報、および認証プロバイダが記憶、生成、または検証し得るデータオブジェクトの開示はない点にも留意されたい。ユーザ入力は指紋データ行列に符号化されているので、認証プロバイダはユーザ入力を認識しない点に留意されたい。認証プロバイダによって取得された(ユーザコンピューティングデバイスまたはサービスプロバイダによって提供された)すべてのデータオブジェクトは暗号化オブジェクトである。
【０２８０】
提供された情報の正確性
上記の説明は、エンジンKGEおよびPGEを使用することによって認証情報を作成するために、ユーザの指紋または他のバイオメトリックデータが使用され得る方法を示した。(次いで、認証情報はエンジンPVEを使用することによって検証され得る。)これらのエンジンへの入力は、認証情報作成アルゴリズムおよび認証情報照合アルゴリズムと呼ばれるアルゴリズムのペアである。
【０２８１】
指紋だけでなく顔画像などの他のバイオメトリックデータセットに関するデータセットから認証情報を作成および検証するために、KGE、PGE、およびPVEエンジンを使用し得る。上述のように、顔画像は、アルゴリズムによる操作に適したデータ行列として符号化され得る画素データの行列として見ることができる。認証情報作成アルゴリズムおよび認証情報照合アルゴリズムが指紋データ行列を操作するのと同様に、顔画像データ行列を操作するアルゴリズムが必要になる。そのような2つのアルゴリズムを提案し、それら顔認証情報作成アルゴリズムおよび顔認証情報照合アルゴリズムとしてダビングすることができる。
【０２８２】
特定の実施形態では、ユーザはまた、ユーザコンピューティングデバイス上の適切なAPIを利用することによって、選択された属性情報、たとえば「@john」、「クラシック音楽を好む」、「住所=メインストリート10」などの文字列を(「ユーザ入力」として)追加することを許可され得る。これは、図22CにおいてPGEへの任意の入力(99)として示されている。
【０２８３】
指紋および画像データセットに加えて、データセットとして扱われる場合、ユーザの財務情報(たとえば、クレジットカード)または運転免許証が入力データセットとして使用され得る。一般的な運転免許証は、ユーザの顔画像と、住所、生年月日などのユーザ属性の両方を含む点に留意されたい。ユーザの運転免許証やクレジットカードからのユーザ属性情報が検証可能な認証情報として符号化されている場合、サービスプロバイダがユーザ情報の正確性を確認することが可能となる。
【０２８４】
したがって、たとえば、ユーザは、そのユーザの運転免許証から導出されている認証情報に基づいて、そのユーザの年齢が21歳を超えていることを示す認証情報をサービスプロバイダに提示し得る可能性がある。すなわち、ユーザコンピューティングデバイスは、運転免許証の画像データセットを処理するために、図17Aに示される認証情報クリエータ101を模倣して、適切なソフトウェアを提供され得る。
【０２８５】
より具体的には、図22Aにおいて上述したように、2つの鍵のセット(PK1、VK1)および(PK2、VK2)をそれぞれ導出するために、それぞれKGEへの入力としてDL認証情報作成アルゴリズムとDL認証情報照合アルゴリズムの2つのアルゴリズムを使用し得る。すなわち、KGEエンジンは、図22Aに示されたものとは異なるDL作成アルゴリズムおよびDL照合アルゴリズムを供給される。
【０２８６】
さらに説明を続けると、ステップ2a(図17B参照)において、ユーザコンピューティングデバイスは、適切に修正された認証情報作成ソフトウェアパッケージを提供される(図17A参照)。
【０２８７】
運転免許証データセットから認証情報を生成するために、次に上述の方法M1を使用し得る。指紋データセットではなく運転免許証データセットを処理するために方法M1に必要とされる唯一の変更は、異なるアルゴリズム、すなわち、DL作成アルゴリズムおよびDL認証情報照合アルゴリズムの使用である点に留意されたい。
【０２８８】
ユーザの運転免許証には、ユーザの顔の特徴の画像と彼の生年月日の両方が含まれているので、そこから導出される認証情報が、ユーザと彼の年齢の両方を認証するために役立ち得る点に留意されたい。同様に、運転免許証にはユーザの住所が含まれているため、運転免許証に基づく認証情報もユーザの住所などを検証し得る。(ユーザによって入力データセットに追加された追加の情報属性の正確性もまた、同様に証明され得る。)
【０２８９】
同様に、口座番号などの追加の情報属性とともに、ユーザの指紋および/または顔画像データを含むクレジットカードは、暗号化認証情報の基礎として役立ち得る。やはり、これもクレジットカードデータセットを操作するアルゴリズムを使用することによって実現され得る。
【０２９０】
次に、SPSがユーザ名を表す関連付けオブジェクトを作成および記憶し得ることを先に主張した上述の実施形態に戻る。そのアサーションをサポートするために以下の説明を提供する。
【０２９１】
ユーザ名作成アルゴリズムとユーザ名照合アルゴリズムの2つのアルゴリズムが存在すると仮定する。前者のアルゴリズムは以下のように動作する。
【０２９２】
ユーザは、第1のユーザ名を提供または選択するように要求される。アルゴリズムは、提供されたユーザ名に応じて、一意のデータセット、すなわちデータの表を生成する。すなわち、データセットは入力の関数である。データセットおよび第1のユーザ名は、上述のように、SPSに記憶されている第1の認証情報/カードC1を生成するために使用され得る。
【０２９３】
ユーザ名照合アルゴリズムは次のように動作する。ユーザは第2のユーザ名を提供するように要求される。アルゴリズムは、提供された第2のユーザ名に関連する第2のデータセットを生成する。これで、第1のユーザ名と第2のユーザ名を照合させることができる(同様に、第1のデータセットと第2のデータセットも照合させることができる)。照合が成功すると、上述のように第2の認証情報/カードC2を生成し得る。C2には暗号化オブジェクトと平文データオブジェクトが含まれ、平文データオブジェクトは第1のユーザ名または第2のユーザ名のいずれかである点に留意されたい。
【０２９４】
カード、C2を受信するサービスプロバイダは、それが暗号化オブジェクトと平文オブジェクトを含むのでそれを関連オブジェクトとして扱うことができる。その真正性を検証するために、サービスプロバイダは(上述のように)SPSから同じものを要求し得る。
【０２９５】
したがって、KGE、PGE、およびPVEエンジンとともに、これらの手段に関連するデータセットを処理できるアルゴリズムを採用することによって、ユーザの識別情報、ユーザの情報属性、およびユーザによって作成されるアサーションの正確性を認証および検証する認証情報を作成するために、運転免許証、クレジットカード、および消費者に関する認証および様々な属性情報を含む他のそのような手段が使用され得る。
【０２９６】
PVEによる認証情報の検証は、そうでなければ、PVEは検証に失敗したはずなので、認証情報を生成した入力アルゴリズム、たとえば、図22Aの認証情報作成アルゴリズムなどは変更されていないという事実をさらに伴う点にさらに留意されたい。すなわち、PVEによる検証の成功は、鍵生成エンジンへのアルゴリズム入力の起源を伴う。
【０２９７】
したがって、上述のようにUPSによって作成および維持された、ユーザ名に対応する難読化されたオブジェクトも、PVEエンジンを使用することによって、その真正性および起源に関して検証され得る。
【０２９８】
上述した認証情報生成および提示プロセスにおいて使用される様々なソフトウェアエンジンおよびアルゴリズムは、運転免許証またはクレジットカードなどの手段を消費者に提供するエンティティによって提供され得る。特定の実施形態では、上述の様々な認証情報に関連付けられる検証機能は、そのような手段提供エンティティによって、およびその中に統合され得る。
【０２９９】
近似オブジェクト
いくつかの実施形態では、サービスプロバイダは、環境に注入されたアプリケーションプログラムを通じてサービスを提供するためにユーザデータを必要とし得、たとえば、アプリケーションプログラムはユーザコンピューティングデバイスとセッション中であり得、後者にサービスを提供するためにユーザの位置を必要とし得る。属性の特異値を値の範囲に変換することによって、ユーザの属性情報が近似オブジェクトで表され得ることを提案する。
【０３００】
すなわち、データ型「t」の属性の値「v」を取り、それから同じ型でアルゴリズム処理によって選択された追加の要素(v1、v2など)を追加することによって、それから近似オブジェクトを導出する。一例として、値「21」を有する属性年齢、すなわち「年齢=21」が、近似オブジェクト「年齢=(15、18、21、45、54、...)」に変換され得、属性/値「名前=john」は「名前=(john、peter、smith、...)」などに変換され得る。属性の値は範囲に含まれる点に留意されたい。
【０３０１】
近似オブジェクトの範囲、すなわちその基数は、有限であり、あらかじめ定められていることが必要である。
【０３０２】
近似オブジェクトの概念は、様々な種類の近似情報を捕捉するために、従来技術においてMcCarthy(J. McCarthy, Approximate Objects and Approximate Theories, Principles of Knowledge Representation and Reasoning, Proc. of 7th International Conf, Colorado, 2000を参照)によって、およびZadeh(L. Zadeh, From Computing with Numbers to Computing with Words, IEEE Trans. On Circuits and Systems, 45(1)105:119, 1999を参照)によって紹介された。McCarthyの定式化においてすべての情報は近似である。たとえば、「Johnは近くにいる」という文は、特定のドメインでは真であり、他のドメインでは偽である。
【０３０３】
本明細書で使用されるとき、近似オブジェクト「x=(al, a2,...)」は、属性「x」が、その値として、セットAS=(a1、a2、...)の要素のうちの1つ、および1つだけを有することを意味する。すなわち、ASの各要素y≠zについて、述部「x=z」が真であり、述部「x=y」が偽である要素「z∈AS」が存在する。
【０３０４】
McCarthyの扱いにおいては、すべての情報は近似値であり、ドメイン固有の手段、すなわち適切な「近似理論」によってのみ決定され得る。我々の用法では、ユーザコンピューティングデバイスは近似オブジェクトに変換される正確な情報を有する。近似オブジェクトが正確にレンダリングされる逆のプロセスは、近似オブジェクトを作成したユーザコンピューティングデバイスによってのみ実行され得る。
【０３０５】
すなわち、ユーザは、上記の値「z」を決定するために、自分のユーザコンピューティングデバイスを知っているか、または利用し得る。たとえば、ユーザの位置を特定するためにユーザコンピューティングデバイスのGPSセンサが使用され得る。次いで、我々の定式化における近似オブジェクトは、ユーザコンピューティングデバイスによって生み出された理論によって解決され得る、すなわち正確にレンダリングされ得ると言える。
【０３０６】
たとえば、McCarthyの定式化における属性/値「near=2マイル」は、一部の領域(理論)においては真、他の領域においては偽と解釈され得る。我々の用法では、属性/値「near=2マイル」は、ユーザまたはユーザコンピュータデバイス上で実行されるコンピュータプログラムによって、おそらくユーザコンピュータデバイスにとって利用可能なセンサを利用して、真/偽として解釈され得る。簡単に言うと、近似オブジェクトを解くために必要な近似理論(または、領域)のMcCarthyの概念は、利用可能なセンサとともにユーザコンピューティングデバイスによって実現される。
【０３０７】
近似オブジェクトの真正性および起源は、(上述のように)表されたサービスプロバイダによって提供されるアルゴリズムを使用してそれを認証情報に変換することによって、上述の方法を使用して検証され得る。そのような認証情報を受信すると、サービスプロバイダは(PVEエンジンを所有するエンティティに頼ることによって)それを検証し得、検証は、2つの目的、すなわち近似オブジェクトがユーザによって提供されたこと、すなわち真正性、そして、認証情報を生成するために提供されたアルゴリズムは知られており修正されていないこと(起源)を果たす。
【０３０８】
近似オブジェクトの有用性を示すために、コンピューティング環境に注入されたRP(Retail Program:小売プログラム)などのコンピュータプログラムを考察する。RPが、ユーザの所与の位置に最も近いサービスプロバイダの小売場所を提供すると仮定する。以下のステップは例示的なものである。
3.RPは、ユーザコンピューティングデバイス、UDにその位置を問い合わせる。
1.UDは、UDが配置されている位置を表す近似オブジェクト、ALOを提供する。
2.RPは、X、Y、Zなどの3つの最も近い小売店の位置を計算するために、近似オブジェクト、ALOを使用する。
3.RPはX、Y、およびZをUDに提供する。
4.UDは、その正確な位置を知っているので、グループX、Y、およびZの各メンバーまでの距離を計算し、それに応じてそれから最小の距離を持つメンバー/小売位置を選択する。
【０３０９】
次に、ユーザコンピューティングデバイスは、選択された小売位置と直接接続することを望む場合があり、たとえば、選択された小売位置への経路を取得することを望む場合がある。しかしながら、そのような経路を計算するためには、ユーザコンピューティングデバイスの正確な出発位置が必要であり、近似目的はこの目的には不十分である。
【０３１０】
つまり、近似オブジェクトをその「正確な」値に解決する必要がある。そして、本発明の指示により、そのような解決策はプライバシーを保護するものでなければならない。上記の例、すなわち、ユーザは、自分の位置からプログラムRSによって提供される小売位置までの経路を見つけたい例におけるRSプログラムの振る舞いに戻ることによって、解決可能性問題を解決し、例示するために、以下の方法を提案する。
【０３１１】
サービスプロバイダが、それらの位置によってインデックス付けされたすべての彼の小売店のリストを含む表、TRを所有すると仮定する。
[方法:解決可能性(M2)]
1.属性Lに対応する近似オブジェクトがALOによって示されるとする。ALOの基数は有限であり、あらかじめ定められている点に留意されたい。
2.サービスプロバイダはRSを環境に注入する。RSとユーザコンピューティングデバイス、UDとの間にセッションが確立される。
3.UDは最寄りの小売店の位置について、RSと対話を開始するか、RSに要求する。
4.RSがユーザコンピューティングデバイス、UDにその位置を問い合わせる。
5.UDはALOを提供できると回答する。
6.RSは、基数、たとえば5(限定なし)のALOを要求する。特定の実施形態では、基数は、UDとRSとの間で交渉され得る。
7.UDはALOに基数5を提供する。
8.RSは、たとえば、ALO要素によって囲まれた領域に最も近い3つの小売店を決定するために、表、TRを検索する。RSはこれら3店舗の位置をUDに通信する。
9.RSは、RSによって提供された3店舗のリストから最寄りの店舗を計算する。
10.RSは経路探索プログラムをセッションに招待し、それをUDにリダイレクトする。
11.UDは経路探索プログラムとの対話を開始し、その正確な位置をそれに伝える。
12.経路探索プログラムが経路を計算し、UDに通知する。
13.UDは経路探索プログラムとの相互作用/対話を終了し、RSに通知する。
14.RSはセッション内のすべての仮想マシンを消去する。
【０３１２】
図23は、ユーザの位置属性を表す2つの例示的な近似オブジェクトを示す。「ドット」は近似オブジェクトの要素を示し、ドットのうちの1つはユーザコンピューティングデバイスの正確な位置であり、ユーザコンピューティングデバイスだけに知られている。
【０３１３】
次の節の例示的な実施形態において、本発明のこの態様をさらに説明する。
【０３１４】
例示的な実施形態(プライベートライドシェアリングサービス)
図15Dに示されるように、ユーザ提供情報の様々なカテゴリ、およびプライバシー保護方法でのその処理を説明したので、上述の様々な技法を包含する例示的な実施形態を提示する。すなわち、本明細書で提案され、図15Dに示される本発明の有用性を、以下の例示的な実施形態によって示す。
【０３１５】
以下の例示的な実施形態では、ライドシェアリングサービスを提供するサービスプロバイダを考察する。より一般的には、当然のことながら、任意のサービスまたは製品を引き渡すために、またはトランザクションを実行するために、類似の技法が使用され得る。ライドシェアリングサービスを備える要素は、以下のように列挙され得る。
1.ユーザは、ユーザコンピューティングデバイスを利用して乗車を要求する。
2.サービスプロバイダは、乗車提供デバイス(たとえば、自動車または他の乗り物)をユーザの位置に送らせる。
3.ユーザがピックアップされて目的地に運ばれる。
4.ユーザは、ユーザコンピューティングデバイスを使用してサービスに対して支払う。
ユーザのいくつかの懸念は、以下のように列挙され得る。
1.ユーザは自分のIDとユーザ名を非公開にしたい。
2.ユーザは、乗車位置と目的地の位置を非公開にしたい。
3.ユーザは自分のクレジットカード/支払いデータを非公開にしたい。
【０３１６】
サービスプロバイダにもいくつかの懸念がある場合があり、そのうちのいくつかは以下のようにリストアップされ得る。
1.運転者は、ユーザの「待機」時間を最小限にするために、ユーザの位置に最も近いことに基づいてユーザに提供される。
2.プロバイダはユーザを認証したい、すなわち悪意のあるユーザはいない。
3.プロバイダは、支払い確認を保証されたい。
【０３１７】
図24A、図24B、および図24Cは、(上記のサービスの説明による)プライベートライドシェアリングサービスを実施し、ユーザおよびサービスプロバイダの懸念に対処する1つの方法を示す。実施は例示的なものであり、このサービスを実施するために本発明の技法を適用され得る1つの方法を説明することが意味される。
【０３１８】
この特定の実施形態は単一のセッションにおいて3つのコンピュータプログラムを使用するが、より一般的には、任意の適切な数のコンピュータプログラムがセッションにおいて使用され得る。他の実施形態は、複数のデバイス、コンピュータ、およびプログラムを含む複数のセッションを使用し得る。
【０３１９】
プライベートライドシェアリングサービスプロバイダは、乗車を望むユーザに運転者を一致させるライドシェアリングコンピュータプログラムRSによって表されることを決定すると仮定する。サービスプロバイダは、データベースプロセッサ、DBPによって管理されるコンピューティング環境を有する。後者は、セッション、仮想マシン、VMを作成し、本明細書の本発明において説明されるようにVMにおいて注入されたコンピュータプログラムを実行するように適切に構成される。
【０３２０】
例示的な実施形態の説明は、図24Aに関して以下のように進められる。
【０３２１】
サービスプロバイダは、運転者デバイス(たとえば、運転者によって使用されるモバイル通信デバイス)と呼ばれるデバイスのグループから位置更新を受信する。運転者デバイスから受信した位置更新はデータベースに記憶される。プライバシーを保護したライドシェアリングサービスを提供することを望むサービスプロバイダは、コンピュータプログラムRSを開発または取得する。
【０３２２】
初期化ステップInit-1において、ユーザコンピューティングデバイスは、SPSに認証およびクレジットカードの認証情報、それぞれACrおよびCCrを要求し、受信する。ユーザコンピューティングデバイスは、適切なユーザ名、たとえば、(ACr,@john123)および(CCr,@john123)を選択することによって、認証情報を関連付けリストにカプセル化する。
【０３２３】
初期化ステップInit-2において、サービスプロバイダは、データベースプロセッサDBPによって管理されるコンピューティング環境を開始し、RSが実行されることになっている第1の仮想マシンVM1とのセッションを作成するように後者に要求する。(理解を容易にするために、プログラムRSは、図17Cにおける例示的なプログラムCPに対応する。)
【０３２４】
したがって、セッションは、コンピュータプログラムRSを実行するVM、VM1を含む。この状況を、ステップInit-3に示されている「コンテキストはVM1/(RS)である」と示す。
【０３２５】
サービスプロバイダは1つのセッションにおいて複数の仮想マシンを実行し得、その各々が、複数の同時ユーザ要求をサポートするためにRSプログラムのコピーを実行し得る点に留意されたい。
【０３２６】
代替実施形態では、プログラムRSは、ディレクトリ内でユーザコンピューティングデバイスによって発見され、それをコンピューティング環境に注入させることができる。
【０３２７】
さらに別の実施形態では、コンピューティング環境へのコンピュータプログラムRSの注入は、ユーザコンピューティングデバイス上で実行されているコンピュータプログラムによって受信されたトリガによって引き起こされてもよく、トリガはユーザコンピューティングデバイスにとって利用可能である。
【０３２８】
RSは事前に提供され、「運転者デバイス位置更新」データベースにアクセスするように構成されていると仮定する。
【０３２９】
プライバシーを保護したライドシェアリングサービスを利用したいユーザコンピューティングデバイスは、プログラムRSから同じものを要求し得る。そのような要求は、アカウントを開くこと、特定のサービスロジックを受け取ることなどをユーザコンピューティングデバイスに必要とする可能性がある。そのような動作を集合的にInit-4として示される「登録」ステップと呼ぶ。
【０３３０】
登録ステップが完了すると、RSはユーザコンピューティングデバイスをセッションに招待する。次いで、ステップInit-5に示されるように、コンテキストをVM1/(RS、UPS)と示すことがある。
【０３３１】
UPSとRSとがセッション中であり、両者間の通信がSPSによって仲介されていない上述の実施形態を仮定していることを観察することが重要である。
【０３３２】
ステップInit-5は初期化フェーズを終了する。次に、例示的実施形態の残りの説明を続ける。
【０３３３】
ステップ1において、UPSは関連付けリスト(ACr,@john123)を使用してRSにログイン要求を発行する。あるいは、UPSは、RSから受信したログイン要求に応答し、それにACrおよびユーザ名を提供し得る。
【０３３４】
ステップ2aにおいて、RSは提示された認証情報が検証されることをSPSに要求し、ステップ2bにおいて肯定を受信する。サービスプロバイダは、提示された認証情報書は本物であるが、以前の履歴データに関して使用し得る識別子@john123以外のユーザに関する識別情報を知らないことが保証されている点に留意されたい。たとえば、サービスプロバイダは、@john123はライドシェアリングサービスを使用している間に特定の種類の音楽が再生されることを好む、または特定の容量を有するスマートカーを好むことを決定するために、その履歴データを調べることができる。ユーザは要求を開始するために識別子@johnを使用したが、将来の要求のためにこの識別子を変更することがある点にさらに留意されたい。
【０３３５】
ステップ3において、UPSはRSに乗車を要求する。
【０３３６】
ステップ4において、RSはUPSにその位置を提供するように要求する。
【０３３７】
ステップ5aにおいて、UPSはその位置に近いデータオブジェクト(ALO)で応答する。RSは、上述の方法を使用してALOの正確性を検証し得、このステップはオプションと見なす。
【０３３８】
ステップ5bにおいて、プログラムRSは、運転者デバイスから受信した位置更新とUPSからのALOオブジェクトとに基づいて、RSに最も近い3つの(限定なし)運転者デバイスを計算し選択する。RSはユーザを@john123として認識し、サービスプロバイダのために@john123の履歴データにアクセスできる点にさらに留意されたい。したがって、運転者デバイスのその選択は履歴データによって影響を受ける可能性があり、たとえば、@john123および他のユーザによって提供される格付けに基づいて、近くの運転者デバイスのその選択を変調する可能性がある。
【０３３９】
ステップ6において、3つの選択された運転者デバイスの位置がRSによってUPSに通信される。ステップ6bにおいて、UPSはそれ自体の正確な位置を知っているので、3つの運転者デバイスのうちの1つ、たとえばXを計算して選択する。すなわち、UPSはALOを解決し、解決策に基づいて装置「X」を選択する。ステップ7aにおいて、UPSはその決定をRSに通信する。
【０３４０】
図24Bに関して上記の説明を続ける。
【０３４１】
ステップ7bにおいて、UPSから運転者デバイス「X」を選択したという決定をUPSから受信したプログラムRSは、デバイス「X」をセッションに招待し、デバイス「X」に第2の仮想マシンVM2の起動を要求する(ステップ7c)。
【０３４２】
ステップ7dに示されるように、次にセッションコンテキストはVM1/(RS、UPS、X)になる。(オペレーティングシステムの)デバイス「X」は、独自の仮想マシンVM2を実行している。
【０３４３】
ステップ7eにおいて、RSはUPSをデバイスXにリダイレクトする。
【０３４４】
プログラムが将来の要求を別のプログラムにリダイレクトするという概念は、従来技術においてよく知られている点に留意されたい。たとえば、Webサイトがそのアドレスを変更すると、古いアドレスに着信した要求は新しいアドレスにリダイレクトされる。そのようなリダイレクト要求は後で中止される可能性がある点にさらに留意されたい。
【０３４５】
ステップ8aにおいて、UPSは乗車要求を開始するために、その正確な位置を運転者デバイスXに通信する。UPSはステップ7eにおいて上記のデバイスXにリダイレクトされているので、ユーザコンピューティングデバイスのその正確な位置の表示はデバイス「X」に対して行われ、RSに対して行われない点に留意されたい。
【０３４６】
ステップ8bは、UPSが運転者デバイスXによる送迎プロセスの対象となるプロセスを示す。これらのオペレーションの詳細は、基礎となるサービスプロバイダに固有であり、ユーザインターフェースおよびカスタマイズの対象となるため、省略する。
【０３４７】
ステップ9において、デバイス「X」はUPSに支払いを要求する。ステップ10において、UPSは、クレジットカード認証情報、CCr、およびユーザ名@john123をデバイス「X」に提示する。ステップ11aにおいて、デバイス「X」はSPSにCCrを認証するよう要求し、ステップ11bにおいて肯定表示を受信する。
【０３４８】
ステップ12aにおいて、デバイス「X」は、帯域外プロセスを使用して、認証情報CCrに従ってUPSから受信した支払いを記録する。CCrはユーザ情報をデバイス「X」に伝えないことを思い出されたい。それは、認証情報が本物であること、および支払い処理業者が未知のソースから来るものとして支払いの処理を進めることができるという保証を単に提供するにすぎない。
【０３４９】
ステップ12bにおいて、デバイス「X」は、現在の対話を終了するようにUPSに要求を送信する。ステップ12cにおいて、UPSは「X」がセッションから消去され得ることをRSに通知する。ステップ12dにおいて、RSはXにVM2を消去するように要求する。ステップ13において、RSはセッションから「X」を削除する。
【０３５０】
図24Cに関して上記の説明を続ける。
【０３５１】
ステップ13の後、現在のコンテキストは「VM1/(RS、UPS)」である。これはステップ14に示されている。
【０３５２】
ステップ15において、プログラムRSは、デバイス「X」がもはやセッション中ではないことをUPSに通知する。ステップ16において、UPSは、それがそのライドシェアリング要求を終了したことをプログラムRSに通知する。
【０３５３】
ステップ17において、プログラムRSはUPSをセッションから削除する。セッションからUPSを削除すると、プログラムUPSをログアウトする必要がある点に留意されたい。
【０３５４】
ステップ17の後、プログラムRSは、現在のコンテキストVM1(RS)においてそれと通信する他のプログラムを有さず、その設計に従って、UPSからの要求を待つように構成され得る(ステップ18)。
【０３５５】
ステップ7bが運転者デバイス「X」に仮想マシンの起動を要求することを観察する。この要求の目的は、XとUPSとの相互作用が追加のプライバシーレベルを有することを確実にすることである。しかしながら、特定の実施形態ではそのような追加のプライバシーレベルは任意であると考えられてよく、運転者デバイス「X」は仮想マシンを実行するために必要とされない場合があり、すなわち、「X」はそのような介在ソフトウェア層なしでUPSと対話し得る。
【０３５６】
上記のステップ12aを再検討することは有益であり、デバイス「X」は、クレジットカード認証情報を用いて行われたユーザコンピューティングデバイスからの支払いを処理するために、帯域外方法を利用する。上述したように、認証情報は安全であり、ユーザのプライバシーを保護する。
【０３５７】
しかしながら、熱心な読者は、ステップ8aにおいてUPSがその正確な位置をデバイス「X」に伝えることに気付くかもしれない。デバイスXはまた、@john123がどこで降ろされたかを知っている。すなわち、上記のプロセスの後のユーザに関するデバイスXの総合的な知識は、要素:「識別子=@john123」、認証情報CCr、ならびに乗車位置と目的地の位置からなる。識別子@john123は、認証情報CCrと同様に、ユーザのプライバシーを保護するが、送迎位置に関するXの知識は、ユーザのプライバシーに関して問題があると見なされる場合がある。次のように観察する。
【０３５８】
第1に、デバイス「X」は、第1の場所から@john123を乗車させ、その人物の身元を知らずに第2の場所に彼を降車させたことを認識している。
【０３５９】
第2に、デバイス「X」は、仮想マシンVM2において、ユーザの送迎位置情報を取得し、その情報はデバイスが登録解除されたときに消去される、すなわち「X」の知識は一時的である。
【０３６０】
第3に、デバイス「X」がRSとUPSを含むセッションから削除される。
【０３６１】
最後に、デバイス「X」がセッションから消去されると、UPSもセッションから消去される。RSに残っている可能性のあるユーザに関する情報は、難読化されたオブジェクトのみを備える。したがって、サービス提供者は、サービス提供中に消費者によって提供されたユーザ属性情報を、難読化された識別子および不透明な暗号オブジェクト以外に保持しない。
【０３６２】
代替実施形態では、プログラムRSもまた、DBPによって作成されたセッションにおいて実行されるので、削除され得る。さらに、DBPはセッション自体を破棄するよう要求されることがある。次いで、DBPは、新しいライドシェアリング要求を受け入れるコンピュータプログラムRSの新しいコピーを実行する新しいセッションを開始し得る。したがって、サービスプロバイダはユーザ属性情報を保持し得ない。
【０３６３】
例示的なコンピューティング環境
本明細書に記載の主題の態様は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明され得る。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。本明細書に記載の主題の態様はまた、通信ネットワークを通じてリンクされている遠隔処理デバイスによってタスクが実行される分散コンピューティング環境において実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルと遠隔の両方のコンピュータストレージ媒体に配置され得る。
【０３６４】
また、いくつかの実施形態は、流れ図またはブロック図として示されるプロセスとして説明されている点に留意されたい。それぞれが動作を逐次プロセスとして説明し得るが、動作の多くは並行してまたは同時に実行され得る。さらに、動作の順序は並べ替えられてもよい。プロセスには、図面に含まれていない追加のステップがある場合がある。
【０３６５】
請求される主題は、開示された主題を実装するためにコンピュータを制御するために、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成するために、標準プログラミングおよび/またはエンジニアリング技法を使用する、方法、装置、または製品として実装され得る。たとえば、請求される主題は、任意のコンピュータ可読ストレージデバイスまたはストレージ媒体からアクセス可能なコンピュータプログラムを包含する、コンピュータ実行可能プログラムを埋め込んだコンピュータ可読ストレージ媒体として実装され得る。たとえば、コンピュータ可読ストレージ媒体は、これらに限定されないが、磁気ストレージデバイス(たとえば、ハードディスク、フロッピーディスク、磁気ストリップなど)、光ディスク(たとえば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)など)、スマートカード、およびフラッシュメモリデバイス(たとえば、カード、スティック、キードライブなど)を含むことができる。しかしながら、コンピュータ可読ストレージ媒体は、たとえば伝搬信号などの一時的な形態のストレージを含まない。もちろん、請求される主題の範囲または趣旨から逸脱することなしに、この構成に対して多くの修正が加えられてよいことを当業者は理解するであろう。
【０３６６】
さらに、本出願で使用されるとき、用語「構成要素」、「モジュール」、「エンジン」、「システム」、「装置」、「インターフェース」などは、一般に、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかの、コンピュータ関連のエンティティを指すことが意図されている。たとえば、構成要素は、これらに限定されないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例として、コントローラ上で実行されているアプリケーションとコントローラとの両方が構成要素になり得る。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に存在してもよく、構成要素が1つのコンピュータ上でローカライズされてもよく、および/または2つ以上のコンピュータ間に分散されてもよい。
【０３６７】
前述の実施形態は、異なる他の構成要素内に含まれるか、またはそれと接続される、異なる構成要素を示す。そのように示されたアーキテクチャは単に例示的なものであり、実際には、同じ機能を達成する他の多くのアーキテクチャが実装され得ることができることを理解されたい。概念的な意味では、同じ機能を達成するための構成要素の任意の構成は、所望の機能が達成されるように効果的に「関連付けられている」。したがって、特定の機能を達成するために本明細書で組み合わされる任意の2つの構成要素は、アーキテクチャまたは中間構成要素とは関係なしに、所望の機能が達成されるように互いに「関連付けられている」と見なされ得る。同様に、そのように関連付けられる任意の2つの構成要素もまた、所望の機能を達成するために互いに「動作可能に接続される」または「動作可能に結合される」と見なされ得る。
【符号の説明】
【０３６８】
3  リンク
5  リンク
10  センサデバイス
11  センサデバイス
30  サーバ
31  PL
41  TL
41  リスト
50  ユーザプライバシースイッチ(UPS)
51  センサ
52  センサ
53  ワイヤード/ワイヤレス接続
95  リンク、接続
100  ユーザコンピューティングデバイス、ユーザデバイス、鍵、コンピュータプログラムL
101  認証情報クリエータ
105  リンク
111  KGE
150  ユーザコンピューティングデバイス
200  分散コンピューティング環境、仮想マシンVM、ユーザデバイス、コンピューティング環境、例示的なコンピュータプログラムCP、サービスプロバイダ
201  構成要素、鍵生成器
201-1  データストア
201-2  データストア
202  構成要素、照明生成器
202  セッションオブジェクト
202-1  セッション
202-2  セッション
203  データベースプロセッサ、構成要素、検証者
204  仮想マシン
205  プログラム
300  仮想マシンVM、スマートデバイス、デバイス、自動車、サーバプライバシースイッチ(SPS)、データベースシステム、ストレージシステム、認証プロバイダ、暗号鍵PK
375  レコード
400  コンピュータプログラム、オンライン書籍購入サービス、プライバシースイッチ、VK
401  書籍
401  構成要素
402  支払い
402  構成要素
403  出荷
403  構成要素
500  ディレクトリサーバ、EO
550  EO-2
555  暗号化オブジェクトP
600  アプリケーションサーバ
2000  認証プロバイダ
【図１】
2019533852.tif 000003
【図２】
2019533852.tif 000004
【図３】
2019533852.tif 000005
【図４Ａ】
2019533852.tif 000006
【図４Ｂ】
2019533852.tif 000007
【図５Ａ】
2019533852.tif 000008
【図５Ｂ】
2019533852.tif 000009
【図５Ｃ】
2019533852.tif 000010
【図６】
2019533852.tif 000011
【図７】
2019533852.tif 000012
【図８Ａ】
2019533852.tif 000013
【図８Ｂ】
2019533852.tif 000014
【図９】
2019533852.tif 000015
【図１０】
2019533852.tif 000016
【図１１Ａ】
2019533852.tif 000017
【図１１Ｂ】
2019533852.tif 000018
【図１１Ｃ】
2019533852.tif 000019
【図１２】
2019533852.tif 000020
【図１３Ａ】
2019533852.tif 000021
【図１３Ｂ】
2019533852.tif 000022
【図１４】
2019533852.tif 000023
【図１５Ａ】
2019533852.tif 000024
【図１５Ｂ】
2019533852.tif 000025
【図１５Ｃ】
2019533852.tif 000026
【図１５Ｄ】
2019533852.tif 000027
【図１６】
2019533852.tif 000028
【図１７Ａ】
2019533852.tif 000029
【図１７Ｂ】
2019533852.tif 000030
【図１７Ｃ】
2019533852.tif 000031
【図１８Ａ】
2019533852.tif 000032
【図１８Ｂ】
2019533852.tif 000033
【図１８Ｃ】
2019533852.tif 000034
【図１９Ａ】
2019533852.tif 000035
【図１９Ｂ】
2019533852.tif 000036
【図１９Ｃ】
2019533852.tif 000037
【図２０Ａ】
2019533852.tif 000038
【図２０Ｂ】
2019533852.tif 000039
【図２１】
2019533852.tif 000040
【図２２Ａ】
2019533852.tif 000041
【図２２Ｂ】
2019533852.tif 000042
【図２２Ｃ】
2019533852.tif 000043
【図２２Ｄ】
2019533852.tif 000044
【図２３】
2019533852.tif 000045
【図２４Ａ】
2019533852.tif 000046
【図２４Ｂ】
2019533852.tif 000047
【図２４Ｃ】
2019533852.tif 000048
【国際調査報告】
2019533852.tif 000049