(57)【要約】  本開示は、「読出し専用クッキー」(「ROC」)とも呼ばれることのある、セキュアで、ユーザに透過であり、かつ高効率のコンテンツプロバイダ固有識別子(「CPSID」)を提供する。これらのコンテンツプロバイダ固有識別子は、クライアントデバイスによって生成されて、コンテンツプロバイダの公開鍵で暗号化され得、それによって、サードパーティがマッチングを間接的に特定することが防がれるとともに、プロバイダ側のクッキーマッチングテーブルおよびリソース多用のトラッキング通信の必要性がなくなる。コンテンツプロバイダ固有識別子の生成は、順守サービス利用規約(ToS)が例えばドメイン内の所定のアドレスから取り出し可能なコンテンツプロバイダ、(例えばユーザが明示的に同意した)ホワイトリストに載っているコンテンツプロバイダ、および/または(例えばユーザが明示的に同意を拒否した)ブラックリストに載っていないコンテンツプロバイダについてのみ識別子が作成されるように、ユーザポリシーによって制御され得る。
2021519981.tif 000002
【特許請求の範囲】
【請求項１】
ドメイン間での制御されたデータ交換のための方法であって、
クライアントデバイスのネットワークインターフェースによって、中継サーバから、前記中継サーバによって選択されたコンテンツプロバイダのリストを受信するステップと、
前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、
前記クライアントデバイスの識別エンジンによって、コンテンツプロバイダ固有識別子を生成するステップと、
前記クライアントデバイスのエンクリプタによって、前記コンテンツプロバイダ固有識別子を、対応する前記コンテンツプロバイダの暗号化鍵を使用して暗号化するステップと、
前記クライアントデバイスの前記ネットワークインターフェースによって、前記中継サーバに、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについての前記暗号化されたコンテンツプロバイダ固有識別子を送信するステップと
を含み、前記中継サーバが、暗号化されたコンテンツプロバイダ固有識別子の各々を、対応する前記コンテンツプロバイダに転送する、方法。
【請求項２】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記エンクリプタによって、前記クライアントデバイスの識別子および対応する前記コンテンツプロバイダのドメイン名を含む入力の暗号学的ハッシュを計算するステップを含む、請求項1に記載の方法。
【請求項３】
前記暗号学的ハッシュへの前記入力が、前記コンテンツプロバイダ固有識別子の期限満了時間をさらに含む、請求項2に記載の方法。
【請求項４】
前記クライアントデバイスの前記識別子が、前記クライアントデバイスによって実行されるアプリケーションに固有である、請求項2に記載の方法。
【請求項５】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、ルックアップテーブル内で、対応する前記コンテンツプロバイダのドメイン名と関連付けられたインデックスにおける所定のランダム値を特定するステップを含む、請求項1に記載の方法。
【請求項６】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、対応する前記コンテンツプロバイダが前記クライアントデバイスのブラックリスト内で特定されないとの判定をするステップをさらに含む、請求項1に記載の方法。
【請求項７】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、対応する前記コンテンツプロバイダが前記クライアントデバイスの同意リスト内で特定されるとの判定をするステップをさらに含む、請求項1に記載の方法。
【請求項８】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、前記ネットワークインターフェースを介して、対応する前記コンテンツプロバイダの公開鍵を取り出すステップをさらに含む、請求項1に記載の方法。
【請求項９】
対応する各コンテンツプロバイダの標識を、識別子を受信するコンテンツプロバイダのログに追加するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
ドメイン間での制御されたデータ交換のためのシステムであって、
中継サーバから受信したコンテンツプロバイダのリスト内の各コンテンツプロバイダについて、コンテンツプロバイダ固有識別子を生成するように構成された識別エンジンと、
各コンテンツプロバイダ固有識別子を、対応する前記コンテンツプロバイダの暗号化鍵を使用して暗号化するように構成されたエンクリプタと、
前記中継サーバに、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについての前記暗号化されたコンテンツプロバイダ固有識別子を送信するように構成されたネットワークインターフェースと
を備え、前記中継サーバが、暗号化されたコンテンツプロバイダ固有識別子の各々を、対応する前記コンテンツプロバイダに転送する、システム。
【請求項１１】
前記エンクリプタが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、前記クライアントデバイスの識別子および対応する前記コンテンツプロバイダのドメイン名を含む入力の暗号学的ハッシュを計算するようにさらに構成される、請求項10に記載のシステム。
【請求項１２】
前記暗号学的ハッシュへの前記入力が、前記コンテンツプロバイダ固有識別子の期限満了時間をさらに含む、請求項11に記載のシステム。
【請求項１３】
前記クライアントデバイスの前記識別子が、前記クライアントデバイスによって実行されるアプリケーションに固有である、請求項11に記載のシステム。
【請求項１４】
前記識別エンジンが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、ルックアップテーブル内で、対応する前記コンテンツプロバイダのドメイン名と関連付けられたインデックスにおける所定のランダム値を特定するようにさらに構成される、請求項10に記載のシステム。
【請求項１５】
前記識別エンジンが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダが前記クライアントデバイスのブラックリスト内で特定されないとの判定をするようにさらに構成される、請求項10に記載のシステム。
【請求項１６】
前記識別エンジンが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダが前記クライアントデバイスの同意リスト内で特定されるとの判定をするようにさらに構成される、請求項10に記載のシステム。
【請求項１７】
前記識別エンジンが、前記ネットワークインターフェースを介して、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダの公開鍵を取り出すようにさらに構成される、請求項10に記載のシステム。
【請求項１８】
前記識別エンジンが、対応する各コンテンツプロバイダの標識を、識別子を受信するコンテンツプロバイダのログに追加するようにさらに構成される、請求項10に記載のシステム。
【請求項１９】
制御されたデータ交換のためのシステムであって、
クライアントデバイスおよび複数のコンテンツプロバイダと通信するネットワークインターフェースであって、前記クライアントデバイスからコンテンツ要求を受信するように構成された、ネットワークインターフェースと、
前記複数のコンテンツプロバイダのサブセットを選択し、前記選択されたサブセットの各コンテンツプロバイダの識別情報を含むリストを生成するように構成された、コンテンツプロバイダセレクタと
を備え、
前記ネットワークインターフェースが、
前記リストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから、前記複数のコンテンツプロバイダのさらなるサブセットの各コンテンツプロバイダについての暗号化されたコンテンツプロバイダ固有識別子を含む応答を受信することと、
前記さらなるサブセットの各コンテンツプロバイダに、さらなるコンテンツ要求を送信することであって、各々のさらなる要求が、受信側である前記コンテンツプロバイダに対応する前記暗号化されたコンテンツプロバイダ固有識別子を含む、ことと、
第1のコンテンツプロバイダから、前記受信した暗号化されたコンテンツプロバイダ固有識別子に基づいて前記コンテンツプロバイダによって選択されたコンテンツアイテムを受信することと、
前記受信したコンテンツアイテムを、前記クライアントデバイスによる提示のために前記クライアントデバイスに転送することと
を行うようにさらに構成される、システム。
【請求項２０】
前記応答から暗号化されたコンテンツプロバイダ固有識別子の各々を抽出し、抽出した暗号化されたコンテンツプロバイダ固有識別子の各々を、対応する前記コンテンツプロバイダと関連付けるように構成された、識別子エクストラクタをさらに備える、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、ブラウザクッキーの置換えとしてのドメイン固有ブラウザ識別子に関する。
【背景技術】
【０００２】
ブラウザクッキー、またはデバイス固有、ユーザ固有、もしくはセッション固有の短い識別子は、ウェブページパブリッシャ、アドバタイザ、または他のそのようなエンティティなどのコンテンツプロバイダに対し、デバイス、ユーザ、またはセッションを一意に(または半一意に)識別するために使用される。これらのクッキーは、典型的には、コンテンツプロバイダによって、例えば最初のセッションまたはログインプロセスの間に生成され、クライアントデバイスのブラウザまたは他のアプリケーションからの後続の要求の中で提供される。次いで、パブリッシャは、各要求を同一識別子と(また暗黙的に同一のデバイス、ユーザ、またはセッションと)関連付けて、コンテンツ選択のカスタマイズを可能にすることができる。
【０００３】
しかし、典型的なブラウザクッキーには、いくつかの重大な欠点がある。ウェブサイト内に埋込みコンテンツを提供するサードパーティコンテンツプロバイダは、ブラウザをトラッキングするためのクッキーを、ユーザが必ずしもこれらのサードパーティによって識別またはトラッキングされていることに気付いているとは限らない状態で提供することができる(なぜなら、例えばブラウザアドレスバー内に示されたアドレスは、メインページのソースを特定するにすぎず、必ずしも埋込みコンテンツのソースを特定するとは限らない場合があるからである)。したがって、ユーザが潜在的なプライバシの問題を特定し、個人情報のプライバシを制御することは、困難となり得る。
【０００４】
加えて、典型的なブラウザクッキーは、ドメイン固有である。何らかのセキュリティ手段を提供しようとする試みの中で、ブラウザおよび他のアプリケーションのメーカーは、あるコンテンツプロバイダが、他のドメインの他のコンテンツプロバイダによって生成されたクッキーを読み出す、または受信することのないようにしている。これに対処するため、正当と不当の両方の理由で、コンテンツプロバイダは、クッキーマッチングを利用して、あるコンテンツプロバイダからのクッキーと別のコンテンツプロバイダのクッキーとの間の関連付けを生成する。クッキーマッチングの一実装形態は、ページ内の小さな埋込みコンテンツアイテム(例えば、ブラウザに、対応するクッキーの送信とともに画像を要求させる、「トラッキングピクセル」と呼ばれる1ピクセル×1ピクセルの「不可視の」画像)を利用するものであり、この要求は、あるエンティティによって受信され、別のエンティティにリダイレクトされる。この結果、そのピクセルを「レンダリングする」ための2回のラウンドトリップ通信交換、すなわち、第1のエンティティへの要求とリダイレクションアドレスによる応答、および第2のエンティティへの要求と応答が生じる。10個以上の埋込みトラッキングピクセルのある典型的なページでは、これらの通信の実施が大幅に時間をとることがある。通信が完了する前にユーザがそのページから離れてナビゲートする場合、マッチングは特定されないことがある。結果として、クッキーマッチングは遅く、しばしば未完了であり、ウェブページのレンダリングの速度を遅くし、帯域幅を消費し、バッテリ寿命を縮める。さらに、クッキーマッチングは、サードパーティエンティティがオンライン行動を非透過式に、ユーザが明示的に同意することなくトラッキングすることを可能にし、これはユーザのプライバシにとっての脅威となる。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書において論じるシステムおよび方法は、従来のブラウザクッキーを、「読出し専用クッキー(read-only cookie)」(「ROC」)とも呼ばれることのある、セキュアで、ユーザに透過であり、かつ高効率のコンテンツプロバイダ固有識別子(content provider-specific identifier)(「CPSID」)と置き換える。これらのコンテンツプロバイダ固有識別子は、クライアントデバイスによって生成されて、コンテンツプロバイダの公開鍵で暗号化され得、それによって、サードパーティがマッチングを間接的に特定することが防がれるとともに、プロバイダ側のクッキーマッチングテーブル、ならびにユーザへの透過性とクッキーの使われ方の明確な把握および監査とを妨げるリソース多用のクッキーマッチング通信およびシステムの必要性がなくなる。コンテンツプロバイダ固有識別子の生成は、順守サービス利用規約(compliant terms of service)(ToS)が例えばドメイン内の所定のアドレスから取り出し可能なコンテンツプロバイダ、(例えばユーザが明示的に同意した)ホワイトリストに載っているコンテンツプロバイダ、および/または(例えばユーザが明示的に同意を拒否した)ブラックリストに載っていないコンテンツプロバイダについてのみ識別子が作成されるように、ユーザポリシーによって制御され得る。
【０００６】
コンテンツプロバイダ固有識別子は、入力であるブラウザ固有、アプリケーション固有、デバイス固有、またはセッション固有のプライベート識別子(例えば、デバイスの他のユーザとは別の、特定のユーザのブラウザのインスタンスに固有の識別子)およびコンテンツプロバイダのドメイン名またはアドレス(例えば「example.com」)から、暗号学的ハッシュ(例えば、MD5、SHA256などのような任意の適切なハッシングアルゴリズムなど)として生成され得る。いくつかの実装形態では、追加のソルトを与えるために、ハッシュ入力は、コンテンツプロバイダ固有識別子の作成時間または期限満了時間を含むことができ、これは、例えばどちらか一方の入力値と連結され得る。ハッシュ入力の複雑さを同様に増大させるために、デバイスのタイプもしくはシリアル番号、クロックスキュー時間、ハードウェア識別子、または他の任意のそのようなデータなど、他のエントロピーソースを利用することができる。いくつかの実装形態では、「期限満了時間」は、コンテンツプロバイダ固有識別子が期限満了するまでの週間の数、月数、または年数など、粒度による値(granular value)とすることができ、それによって、クライアントによる自動再生成が可能となる。
【０００７】
他の実装形態では、コンテンツプロバイダ固有識別子を、ルックアップテーブル内にコンテンツプロバイダのドメイン(例えばexample.com)をキーとして記憶された、ランダムに生成された値とすることができる。これにより、必要となるプロセッサリソースは暗号学的ハッシュ結果を計算するよりも少なくなり得るが、テーブルのための大きな記憶空間が必要となり得る。
【０００８】
コンテンツプロバイダ固有識別子は、暗号化された読出し専用クッキー(「eROC」)を生成するために、クライアントデバイスによってコンテンツプロバイダの公開鍵を通じて暗号化され得る。いくつかの実装形態では、クライアントデバイスは、結果として得られるeROCが単一ドメインのものであっても大いに異なるように、暗号化の前にコンテンツプロバイダ固有識別子を作成タイムスタンプおよび/または乱数(例えばナンスソルト)と連結することができる。したがって、意図されたコンテンツプロバイダは、コンテンツプロバイダ固有識別子を復号および抽出できる可能性があり、一方、他のコンテンツプロバイダ(例えばクッキーマッチングを実施しようと試みるコンテンツプロバイダ)は、そうすることができない。eROCをクライアントデバイスから中継体を経て意図されたコンテンツプロバイダに送信する間に保護するために、作成タイムスタンプおよび/またはナンス値を使用して、意図されたコンテンツプロバイダ以外の誰にも無用または解読不能な不安定なeROC(unstable eROC)を生成することができる。コンテンツプロバイダ間のデータ交換を可能にするために、第1のコンテンツプロバイダが、第2のコンテンツプロバイダのためにクライアントデバイスにeROCを要求することができ、受信したeROCを第2のコンテンツプロバイダに転送することができる。受信したクッキーは第2のコンテンツプロバイダの公開鍵で暗号化されているので、第1のコンテンツプロバイダは、第2のコンテンツプロバイダのROCを復号または回復することはできない可能性があるが、その代わりに単にeROCを転送し、関連するデータを要求することができる。したがって、適切なeROCを所有しているということは、データ交換についてクライアントデバイスによる認可がなされたことを意味する。各要求がクライアントデバイスを通過しなければならないので、クライアントデバイスは、プライバシおよびコンテンツプロバイダ間のデータ交換を制御することができ、またそのような任意の転送について監査ログまたはデータ交換ログを生成することもでき、それによって、ユーザに対する透過性が増大する。
【０００９】
これらの実装形態は、本開示の範囲を限定または定義するためにではなく、その理解を助けるために言及されている。次の利点のうちの1つまたは複数を実現するために、特定の実装形態を開発することができる。従来のブラウザクッキーを、暗号化されたコンテンツプロバイダ固有識別子と置き換えることによって、クライアントデバイスのユーザは、パートナーコンテンツプロバイダ間のデータ交換を含めてプライベートデータに対し、そのような任意の交換を特定する透過な監査ログを用いてより一層制御することができる。さらに、クライアントデバイス上でのクッキーの生成および暗号化を活用することによって、コンテンツプロバイダにおける大きなクッキーマッチングテーブルによるリソース消費が回避されて、効率が上がる。クッキーマッチングのためのトラッキングピクセルおよびデュアルラウンドトリップ通信をなくすことも、効率を上げ、ユーザのプライバシをより良好に保護し、それによって、クライアントブラウザまたはアプリケーションが、バッテリおよびプロセッサをそれほど利用せずにページをより速くレンダリングできるようになる。
【００１０】
1つまたは複数の実装形態の詳細については、添付の図面および下の説明中に記載されている。本開示の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【００１１】
【図１Ａ】いくつかの実装形態による、データ交換のためのネットワークおよびデバイス環境のブロック図である。
【図１Ｂ】いくつかの実装形態による、従来のクッキー交換およびマッチングの様子を示す流れ図である。
【図１Ｃ】いくつかの実装形態による、例示的なクッキーマッチングテーブルの図である。
【図１Ｄ】いくつかの実装形態による、コンテンツプロバイダ固有識別子(読出し専用クッキーすなわち「ROC」)を利用したデバイス識別子交換の様子を示す流れ図である。
【図２】コンテンツプロバイダ固有識別子とともに使用するためのコンピューティングデバイスの実装形態を示すブロック図である。
【図３Ａ】コンテンツプロバイダ固有識別子を使用したデータ交換のための方法の一実装形態を示すフローチャートである。
【図３Ｂ】コンテンツプロバイダ固有識別子を使用したデータ交換のための方法の一実装形態を示すフローチャートである。
【発明を実施するための形態】
【００１２】
さまざまな図面中の同様の参照番号および名称は、同様の要素を示す。
【００１３】
ブラウザクッキー、または簡単に、デバイス固有、ユーザ固有、もしくはセッション固有の識別子は、ウェブページパブリッシャ、アドバタイザ、または他のそのようなエンティティなどのコンテンツプロバイダに対し、デバイス、ユーザ、またはセッションを一意に(または半一意に)識別するために使用される。これらのクッキーは、典型的には、コンテンツプロバイダによって、例えば最初のセッションまたはログインプロセスの間に生成され、クライアントデバイスのブラウザまたは他のアプリケーションからの後続の要求の中で提供される。次いで、パブリッシャは、各要求を同一識別子と(また暗黙的に同一のデバイス、ユーザ、またはセッションと)関連付けて、コンテンツ選択のカスタマイズを可能にすることができる。
【００１４】
例えば、図1Aは、いくつかの実装形態による、データ交換のためのネットワークおよびデバイス環境のブロック図である。図示のように、クライアントデバイス100が、ネットワーク106、106'を介して、全体的にコンテンツサーバまたはコンテンツプロバイダ104と呼ばれる1つまたは複数のコンテンツサーバ104A〜104Nと通信することができる。クライアントデバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルコンピュータ、タブレットコンピュータ、ウェアラブルコンピュータ、組込みコンピュータ、スマートテレビ、コンソール、モノのインターネット(IoT)デバイスもしくはスマートアプライアンス、または他の任意のタイプおよび形態のコンピューティングデバイスを含む、任意のタイプおよび形態のコンピューティングデバイスを備えることができる。多くの実装形態では、クライアントデバイス100は、ウェブブラウザ、ソーシャルメディアアプリケーション、ビデオゲーム、または他のそのようなアプリケーションなど、コンテンツを要求するためのアプリケーションを実行することができる。クライアントデバイス100は、コンテンツを要求することができ、またデバイス識別子、クッキー、または他のそのような識別子を提供することができ、それによって、コンテンツプロバイダは、対応するデバイスまたはそのデバイスのユーザ向けにカスタマイズしたコンテンツを選択することができる。
【００１５】
ネットワーク106、106'は、ローカルエリアネットワーク(LAN)、インターネットなどの広域ネットワーク(WAN)、衛星ネットワーク、ケーブルネットワーク、ブロードバンドネットワーク、光ファイバネットワーク、マイクロ波ネットワーク、セルラーネットワーク、ワイヤレスネットワーク、またはこれらのネットワークもしくは他のそのようなネットワークの任意の組合せを含む、任意のタイプおよび形態のネットワークを備えることができる。ネットワーク106、106'は、同一タイプのネットワークでもよく、異なるタイプでもよく、また、ゲートウェイ、モデム、ファイアウォール、ルータ、スイッチなどを含む、複数の追加のデバイス(図示せず)を含むことができる。ネットワーク106、106'は、ネットワーク106、106'内でデータを受信および/または送信するように構成された任意数のコンピューティングデバイス(例えばコンピュータ、サーバ、ルータ、ネットワークスイッチなど)を含むこともできる。ネットワーク106、106'はさらに、任意数の有線接続および/またはワイヤレス接続を含むこともできる。クライアントデバイス100は、ネットワーク106、106'内の他のコンピューティングデバイスに(例えば光ファイバケーブル、CAT5ケーブルなどを介して)有線接続されたトランシーバと、(例えばWiFi、セルラー、無線などを介して)ワイヤレスで通信することができる。いくつかの実装形態では、ネットワーク106、106'は、単一の物理的なマシンによって実行される複数の仮想マシン間の仮想ネットワークなどの仮想ネットワークとすることもでき、あるいは物理的に移動可能な媒体を介したデータのオフラインでの転送などの抽象的なネットワーク(例えば、テープ媒体、CD-ROM、フラッシュ媒体、外付けハードドライブ、フロッピーディスクなどを介してデータを転送するスニーカーネット)とすることもできる。
【００１６】
多くの実装形態では、通信は、利用可能なプロバイダのプールまたは複数の利用可能なプロバイダからコンテンツプロバイダを選択する働きをすることのできる中継サーバ(intermediary server)102を介して流れることができる。例えば、いくつかの実装形態では、中継サーバ102は、クライアントデバイス100からコンテンツ要求を受信することができ、コンテンツプロバイダ104の中から、要求されたコンテンツを提供するコンテンツプロバイダを選択することができる。いくつかの実装形態では、そのような選択は、ロードバランシングアルゴリズム、(例えばプロバイダがコンテンツを提供する機会に入札する)オークションアルゴリズムなどを介してよい。したがって、中継サーバ102は、交換サーバ、ロードバランサ、オークションプロバイダと、または他の任意のそのような用語で、呼ばれることがある。中継サーバ102は、ネットワーク106、106'間に示されているが、多くの実装形態では、コンテンツサーバ104と同一のネットワークセグメント上にデプロイされてよい。
【００１７】
中継サーバ102およびコンテンツサーバ104は、デスクトップコンピュータ、サーバ、ワークステーション、ラップトップコンピュータ、ポータブルコンピュータ、組込みコンピュータ、または他の任意のタイプおよび形態のコンピューティングデバイスを含む、任意のタイプおよび形態のコンピューティングデバイスを備えることができる。多くの実装形態では、中継サーバ102および/またはコンテンツサーバ104は、1つまたは複数の物理的なコンピューティングデバイスによって実行される仮想マシンを備えることができ、デバイスのサーバファーム、クラスタ、またはクラウドとして構成することができる。
【００１８】
上で論じたように、クッキーは、カスタマイズしたコンテンツを提供するために利用することができる。例えば、クライアントデバイス100は、コンテンツ要求を発行するとき、デバイス識別子またはクッキーを中継サーバ102に提供することができる。クライアントのプライバシを維持するために、いくつかの実装形態では、中継サーバ102はクッキーをコンテンツサーバ104に転送するのではなく、中継サーバ102は、各コンテンツサーバ104の識別子とクライアントデバイス100のクッキーとのマッチングテーブルを維持することができる。中継サーバ102は、クッキーを受信すると、マッチングテーブル内でそのクッキーを検索し、各コンテンツプロバイダの識別子を取り出すことができ、次いで、中継サーバ102は、コンテンツプロバイダ識別子を各コンテンツプロバイダにコンテンツ要求とともに送信することができる。
【００１９】
例えば、図1Bは、いくつかの実装形態による、従来のクッキー交換およびマッチングの様子を示す流れ図である。ステップ120において、クライアントデバイス100が、コンテンツアイテムを要求し、デバイス、ユーザ、またはセッションに対応するデバイス識別子またはクッキーを中継サーバ102に提供することができる。ステップ122において、中継サーバ102は、受信したクッキーを各コンテンツサーバ104のクッキーにマッチングさせることができる。ステップ124において、中継サーバは、コンテンツ要求とコンテンツサーバ104に対応するクッキーとを、各コンテンツサーバ104に送信することができる(したがって、1回の送信しか示されていないが、多くの実装形態では、ステップ124において多くの要求が順次または並列に送られ得る)。ステップ126において、各コンテンツサーバ104は、コンテンツサーバ識別子を使用して、カスタマイズしたコンテンツを選択することができ、ステップ128において、コンテンツを中継サーバに提供することができる。次いで、中継サーバ102は、ステップ130において、受信したコンテンツのうちの1つ(例えばいくつかの実装形態では最初に受信したコンテンツ)または受信したコンテンツの全てを、クライアントデバイスに転送することができる。
【００２０】
図示の実装形態は、カスタマイズしたコンテンツをブラウザクッキーを使用して提供する単なる1つの方途であり、他の多くの同様の実装形態が可能である。例えば、いくつかの実装形態では、中継サーバが、要求をコンテンツサーバ104に、対応するコンテンツサーバ識別子とともに送信することができ、1つまたは複数のコンテンツサーバ104は、クライアントデバイスにコンテンツを提供する機会への入札をもって、応答することができる。中継サーバ102は、落札した入札を選択し、選択されたコンテンツをただ1つのサーバに要求することができる。
【００２１】
他の実装形態では、クッキーマッチングがコンテンツサーバ104によって同様のマッチングテーブルを用いて実施され得る。コンテンツサーバ104は、クライアントデバイスによって提供され、中継サーバによって転送されたクッキー(前記クッキーは中継サーバのドメインを参照するかまたはそれと関連付けられる)を受信し、対応するクッキーをそれら自体のマッチングテーブル内でルックアップすることができる。したがって、各実装形態において、プライバシ手段を提供するために、クッキーは、ドメインまたはコンテンツサーバに固有であり、異なるドメインのコンテンツサーバ104間で共有されず、またクライアントデバイスによって提供されるクッキーとマッチングされなければならない。
【００２２】
典型的なブラウザクッキーには、いくつかの重大な欠点がある。ウェブサイト内に埋込みコンテンツを提供するサードパーティコンテンツプロバイダ104は、ブラウザをトラッキングするためのクッキーを、ユーザが必ずしもこれらのサードパーティによって識別またはトラッキングされていることに気付いているとは限らない状態で(というのも、例えばブラウザアドレスバー内に示されたアドレスは、メインページのソースを特定するにすぎず、必ずしも埋込みコンテンツのソースを特定するとは限らない場合があるためである)、提供することができる。したがって、ユーザが潜在的なプライバシの問題を特定し、個人情報のプライバシを制御することは、困難となり得る。
【００２３】
典型的なブラウザクッキーは、上で述べたようにドメイン固有であるので、コンテンツプロバイダは、クッキーマッチングを利用して、あるコンテンツプロバイダからのクッキーと別のコンテンツプロバイダのクッキーとの間の関連付けを生成する。クッキーマッチングの一実装形態は、ページ内の小さな埋込みコンテンツアイテム(例えば、ブラウザに、対応するクッキーの送信とともに画像を要求させる、「トラッキングピクセル」と呼ばれる1ピクセル×1ピクセルの「不可視の」画像)を利用するものであり、この要求は、あるエンティティによって受信され、別のエンティティにリダイレクトされる。この結果、そのピクセルを「レンダリングする」ための2回のラウンドトリップ通信交換、すなわち、第1のエンティティへの要求とリダイレクションアドレスによる応答、および第2のエンティティへの要求と応答が生じる。10個以上の埋込みトラッキングピクセルのある典型的なページでは、これらの通信の実施が大幅に時間をとることがある。通信が完了する前にユーザがそのページから離れてナビゲートする場合、マッチングは特定されないことがある。結果として、クッキーマッチングは遅く、しばしば未完了であり、ウェブページのレンダリングの速度を遅くし、帯域幅を消費し、バッテリ寿命を縮める。さらに、クッキーマッチングは、サードパーティエンティティがオンライン行動を非透過式に、ユーザが明示的に同意することなくトラッキングすることを可能にし、これはユーザのプライバシにとっての脅威となる。加えて、クッキーマッチングテーブルが埋められた後で、中継サーバおよびコンテンツサーバはユーザデータをその後、ユーザへの透過性およびユーザ制御が全くない状態で自由に共有することができ、というのも、サーバ間のさらなる要求およびデータ交換は、クライアントデバイスを通過する必要がないためである。そのようなユーザデータ共有は、たとえクライアントデバイス上のキャッシュされたクッキーまたはアカウント識別子をユーザが消去しても継続し得る。サーバ側でオプトアウトメカニズムを使用したとしても、セキュリティまたはプライバシを確保することはできない。
【００２４】
図1Cは、いくつかの実装形態による、例示的なクッキーマッチングテーブル135の図である。中継サーバ102は、例えばそのようなテーブル135を維持し、テーブルをデバイス識別子またはクッキー、およびコンテンツサーバクッキーで埋めることができる。図示のように、テーブルは、クライアントデバイスおよびコンテンツサーバの数の関数として、非常に大きく非常に迅速に成長し得る。数万または数十万以上のクライアントデバイス、および数百または数千のコンテンツプロバイダを伴う典型的な実装形態では、テーブルは、かなりの記憶領域を必要とし、検索してマッチングを特定するための大量のサーバリソース(例えばプロセッサ時間およびメモリ)を必要とすることがある。
【００２５】
したがって、従来のブラウザクッキー実装形態は、遅く非効率であり、大量のサーバリソースを消費し、マッチングテーブルをトラッキングおよび作成する間の長い遅延のため不正確であるかまたは十分にはマッチングされないことがあり、トラッキングピクセルによる追加の往復通信のためウェブページのレンダリングに大幅な遅延を追加することがある。加えて、これらの実装形態は、セキュリティもしくはプライバシが不十分であることがあり、かつ/または監査もしくはユーザに対する透過性に欠くことがあり、ユーザは、プライベート情報が共有されているかどうか、またはプライベート情報がどのように共有されているかを突き止められないことがある。
【００２６】
そうではなく、本明細書において論じるシステムおよび方法は、従来のブラウザクッキーを、「読出し専用クッキー」(「ROC」)とも呼ばれることのある、セキュアで、ユーザに透過であり、かつ高効率のコンテンツプロバイダ固有識別子(「CPSID」)と置き換える。これらのコンテンツプロバイダ固有識別子は、クライアントデバイスによって生成されて、コンテンツプロバイダの公開鍵で暗号化され得、それによって、サードパーティがマッチングを間接的に特定することが防がれるとともに、プロバイダ側のクッキーマッチングテーブルおよびリソース多用のトラッキング通信の必要性がなくなる。コンテンツプロバイダ固有識別子の生成は、順守サービス利用規約(ToS)が例えばドメイン内の所定のアドレスから取り出し可能なコンテンツプロバイダ、(例えばユーザが明示的に同意した)ホワイトリストに載っているコンテンツプロバイダ、および/または(例えばユーザが明示的に同意を拒否した)ブラックリストに載っていないコンテンツプロバイダについてのみ識別子が作成されるように、ユーザポリシーによって制御され得る。
【００２７】
コンテンツプロバイダ固有識別子は、入力であるブラウザ固有、アプリケーション固有、デバイス固有、またはセッション固有のプライベート識別子(例えば、デバイスの他のユーザとは別の、特定のユーザのブラウザのインスタンスに固有の識別子)およびコンテンツプロバイダのドメイン名またはアドレス(例えば「example.com」)から、暗号学的ハッシュ(例えば、MD5、SHA256などのような任意の適切なハッシングアルゴリズムなど)として生成され得る。いくつかの実装形態では、追加のソルトを与えるために、ハッシュ入力は、コンテンツプロバイダ固有識別子の作成時間または期限満了時間を含むことができ、これは、例えばどちらか一方の入力値と連結され得る。ハッシュ入力の複雑さを同様に増大させるために、デバイスのタイプもしくはシリアル番号、クロックスキュー時間、ハードウェア識別子、または他の任意のそのようなデータなど、他のエントロピーソースを利用することができる。いくつかの実装形態では、「期限満了時間」は、コンテンツプロバイダ固有識別子が期限満了するまでの数週間、数カ月、または数年など、粒度による値とすることができ、それによって、クライアントによる自動再生成が可能となる。いくつかの実装形態では、クライアントデバイス上の各ブラウザ、モバイルアプリケーション、ウェブビューなどからの要求に同一コンテンツプロバイダ固有識別子を使用することができるように、コンテンツプロバイダ固有識別子をクライアントデバイス上のアプリケーションにわたって統一することができる。例えば、暗号学的ハッシュへの入力は、どのアプリケーションがハッシュ計算をトリガしたか(例えばデバイス上のウェブブラウザかビデオゲームか)にかかわらず入力が同一であるように、コンテンツプロバイダのドメイン名またはアドレスと、それに加えてデバイス固有識別子とを含むことができる。
【００２８】
他の実装形態では、コンテンツプロバイダ固有識別子または読出し専用クッキー(ROC)を、ルックアップテーブル内にコンテンツプロバイダのドメイン(例えばexample.com)をキーとして記憶された、ランダムに生成された値とすることができる。これにより、必要となるプロセッサリソースは暗号学的ハッシュ結果を計算するよりも少なくなり得るが、テーブルのための大きな記憶空間が必要となり得る。
【００２９】
コンテンツプロバイダ固有識別子は、暗号化された読出し専用クッキー(「eROC」)を生成するために、クライアントデバイスによってコンテンツプロバイダの公開鍵を通じて暗号化され得る。いくつかの実装形態では、クライアントデバイスは、結果として得られるeROCが単一ドメインのものであっても大いに異なるように、暗号化の前にコンテンツプロバイダ固有識別子を作成タイムスタンプおよび/または乱数(例えばナンスソルト)と連結することができる。したがって、意図されたコンテンツプロバイダは、コンテンツプロバイダ固有識別子を復号および抽出できる可能性があり、一方、他のコンテンツプロバイダ(例えばクッキーマッチングを実施しようと試みるコンテンツプロバイダ)または識別子を傍受する悪意ある中継者(例えば中間者攻撃者)は、そうすることができない。コンテンツプロバイダ間のデータ交換を可能にするために、第1のコンテンツプロバイダが、第2のコンテンツプロバイダのためにクライアントデバイスにeROCを要求することができ、受信したeROCをその指定されたまたは「正当な」所有者、すなわち第2のコンテンツプロバイダに転送することができる。受信したクッキーは第2のコンテンツプロバイダの公開鍵で暗号化されているので、第1のコンテンツプロバイダは、第2のコンテンツプロバイダのオリジナルのROCを復号または回復することはできないが、その代わりに単にeROCを転送し、関連するデータを要求することができる。したがって、適切なeROCを所有しているということは、ユーザデータ交換についてクライアントデバイスによる認可がなされたことを意味する。各要求がクライアントデバイスを通過しなければならないので、クライアントデバイスは、プライバシおよびコンテンツプロバイダ間のデータ交換を制御することができ、またそのような任意の転送について監査ログまたはデータ交換ログを生成することもでき、それによって、ユーザに対する透過性が増大する。
【００３０】
図1Dは、いくつかの実装形態による、コンテンツプロバイダ固有識別子を利用したクッキー交換の様子を示す流れ図である。ステップ150において、クライアントデバイス100がコンテンツアイテムを要求することができる。いくつかの実装形態では、要求、例えば、バナーもしくは他の画像、プレロール、ポストロール、もしくはインタースティシャルメディアファイルなどのメディアファイル、または他の任意のそのようなコンテンツなど、ページ内の埋込みコンテンツを求める要求は、ウェブページをレンダリングする間に生成され得る。いくつかの実装形態では、要求は未知のコンテンツアイテムとすることができ、したがって、コンテンツサーバ104が適切なコンテンツアイテムを選択することができる。要求は、いくつかの実装形態では、ユーザ名、アカウント名、アドレスもしくはハードウェア識別子、または他の任意のそのような情報を含む、クライアントデバイスのデバイス識別子または他の識別子を含むことができる。
【００３１】
ステップ152において、中継サーバは、要求を受信し、クライアントデバイス100にコンテンツを提供する1つまたは複数のコンテンツサーバまたはプロバイダを選択することができる。いくつかの実装形態では、コンテンツサーバの選択は、ロードバランシング要件、オークション落札者、または他の任意のそのような方法に基づいていてよい。例えば、中継サーバ102は、コンテンツを提供する可能性のあるコンテンツサーバのリストから10個のコンテンツサーバ104を選択することができ、新たな各要求についてそれらのサーバを順に巡ることができる。いくつかの実装形態では、中継サーバは、コンテンツサーバ104と通信して、クライアントデバイス100にコンテンツを提供する機会への入札または他のオファーを要求することができる。中継サーバは、コンテンツを提供する1つまたは複数の落札した入札を選択することができる。
【００３２】
中継サーバ102は、クライアントデバイス100とデータを交換する可能性のある、選択されたコンテンツサーバを特定する応答を生成することができる。応答は、選択された各コンテンツサーバ104のドメインもしくはアドレスまたは他のそのような識別子を、識別子同士が互いに連結された状態で含むことができる。いくつかの実装形態では、識別子は、32バイトや64バイトなどの所定の長さを有することができ、それよりも短いドメインまたはアドレスはパディングされ、それよりも長いドメインは切り捨てられる。その場合、クライアントデバイス100が所定の長さに従って各識別子を抽出することができるので、識別子同士を直接連結することができる。他の実装形態では、識別子は、区切り文字(例えば所定の文字またはストリング)によって区切ることができる。ステップ154において、中継サーバは、識別子のリストをクライアントデバイスに送信することができる。
【００３３】
ステップ156において、クライアントデバイスは、リスト内の各コンテンツサーバについて、暗号化された読出し専用クッキーまたはコンテンツプロバイダ固有識別子を生成することができる。上で論じたように、クライアントデバイスは、コンテンツプロバイダのドメイン名やアドレスなどの識別子を、リストから抽出することができる。クライアントデバイスは、ドメイン名またはアドレスと、それに加えてクライアントデバイス100によって維持され、他のデバイスとは共有されない秘密鍵または識別子との、暗号学的ハッシュを計算することができる。いくつかの実装形態では、クッキーの作成日やクッキーの期限満了日など、追加のソルトをハッシュに与えることができ、または追加のデータをエントロピーソースとして使用することができる。いくつかの実装形態では、「期限満了時間」は、コンテンツプロバイダ固有識別子が期限満了するまでの数週間、数カ月、または数年など、粒度による値とすることができ、それによって、クライアントによる自動再生成が可能となる。任意の適切な一方向性ハッシング関数を使用することができ、適切なハッシング関数は、利用されるアドレス空間(例えばドメインまたはアドレス長と、それに加えて秘密鍵と、それに加えて任意の追加のエントロピーソルト)においてほとんどまたは全く衝突がないものである。ハッシュ関数としては、MD5、SHA256、または他の任意のそのような関数があり得る。
【００３４】
いくつかの実装形態では、ハッシュ結果を計算するのではなく、クライアントデバイスがその代わりに、例えばクライアントデバイスの秘密鍵または識別子をシードとして使用して計算されたかまたはその他の方法で(例えば乱数発生器もしくは疑似乱数発生器の出力から)生成されたランダム値のルックアップテーブルを維持することができる。ルックアップテーブルのインデックスは、コンテンツプロバイダのドメインまたはアドレスを含むことができる。いくつかの実装形態では、ルックアップテーブルは事前に生成されてよく、一方、他の実装形態では、クライアントデバイスが、各ドメインまたはプロバイダ識別子についてルックアップテーブルにエントリを、まだエントリが存在していない場合に追加することができる。
【００３５】
したがって、暗号学的ハッシュ関数を介して生成されようと、ルックアップテーブル内のランダムデータであろうと、クライアントデバイスは、各コンテンツプロバイダに固有の、ただし、コンテンツプロバイダのクッキーを求めるさらなる要求に対してクライアントデバイスが(いくつかの実装形態では少なくともクッキーの期限満了またはユーザリセットまで)同一識別子を取り出すかまたは作成することができるという点で再現可能な、一意の識別子を取り出すかまたは作成することができる。
【００３６】
クッキーのセキュリティを確保するために、クライアントデバイス100は各クッキーを、コンテンツプロバイダの公開暗号化鍵を使用して暗号化することができる。鍵は、事前に取り出されるかまたはクッキー生成の間に動的に取り出され得る(例えば、クライアントデバイスは鍵を、「example.com」ドメインの「key.html」ファイルすなわち「example.com/key.html」など、コンテンツプロバイダのドメインの所定のロケーションまたはアドレスから取り出すことができる)。したがって、クライアントデバイスは、ステップ154においてリスト内で特定された各コンテンツプロバイダについて、暗号化された読出し専用クッキーすなわちeROCを生成することができる。これらのeROCは、ステップ158においてさらなる要求の中で中継サーバ102に提供され得る。いくつかの実装形態では、eROC同士が直接連結され得、eROCは所定の長さ(例えば64バイト、256バイトなど)を有することができる。他の実装形態では、eROCは、可変長を有することができ、所定の識別子またはストリング(例えばURL中のパラメータと値のペアなど)によって分離され得る。
【００３７】
いくつかの実装形態では、ステップ154において受信したリスト内の各コンテンツプロバイダにeROCが提供され得る。他の実装形態では、クライアントデバイスは、リストをフィルタリングするための、すなわちコンテンツプロバイダを含めるかまたは除外するためのポリシーを適用することができる。例えば、いくつかの実装形態では、クライアントデバイスは、プライバシ要件およびセキュリティ要件の順守を確実なものにするために、各ドメインからサービス利用規約(ToS)文書を取り出すことができる。クライアントデバイスは、ToS文書を取り出すことができる場合にのみ、かつ/またはToS文書が所定のストリング(例えばセキュリティポリシー、法的補償など)を含むかもしくはそれに合致する場合にのみ、プロバイダのeROCを生成することができる。同様に、いくつかの実装形態では、クライアントデバイスは、クライアントがプロバイダのeROCを生成するためにプロバイダがホワイトリスト内で特定されなければならないかまたはブラックリスト内で特定されてはならないような、コンテンツプロバイダのホワイトリストおよび/またはブラックリストを維持することができる。これにより、ユーザまたはアドミニストレータに、識別可能な情報を受信する可能性のあるコンテンツプロバイダに対する制御手段を提供することができる。いくつかの実装形態では、ブラックリストは、悪意ある行為者を特定したセキュリティエージェンシやセキュリティグループなどのサードパーティエンティティによって提供され得る。
【００３８】
中継サーバ102は、eROCを受信すると、ステップ160において、応答から各eROCを抽出し、そのeROCを対応するコンテンツプロバイダにコンテンツ要求とともに転送することができる。いくつかの実装形態では、サーバ102は、要求を順次に抽出および転送し、すなわち、コンテンツプロバイダからの応答またはタイムアウトタイマの期限満了を待ってから次の要求を抽出および転送することができ、一方、他の実装形態では、サーバは、複数の要求を並列に抽出および転送することができる。
【００３９】
各コンテンツプロバイダは、要求と前記コンテンツプロバイダに対応するeROCとを受信すると、ステップ162において、それらの秘密鍵を使用してeROCを復号して、ROCを回復させることができる。上で論じたように、ROCは乱数または一方向性ハッシュ結果として生成されるので、コンテンツプロバイダは、クライアントデバイスのプライベート識別子を抽出できない可能性がある。それにもかかわらず、ROCは、そのコンテンツプロバイダにとって一意となることができ、コンテンツプロバイダ固有識別子(CPSID)として、クライアントデバイスを一意に識別するために使用することができる。コンテンツサーバは、クライアントデバイスに配信するためのコンテンツを選択することができ、コンテンツを中継サーバに送信することができ(164)、中継サーバは、ステップ166において、コンテンツをクライアントデバイスに転送することができる。いくつかの実装形態では、コンテンツサーバは、コンテンツを直接クライアントデバイスに送信することができる。例えば、いくつかの実装形態では、クライアントデバイスは、eROCと要求とを、ステップ154においてリスト内で特定された各コンテンツサーバ104に、ステップ158〜160における中継サーバをバイパスして送信することができ、コンテンツサーバは、ステップ164〜166における中継サーバをバイパスするように応答することができる。そのようないくつかの実装形態では、ROCが別途暗号化される必要があるのではなく、対応するコンテンツサーバ104に直接送信される各要求が、HTTPSなどの暗号化されたプロトコルを介して送信され得る。そのような実装形態では、ROCは、プロトコル暗号化によってサードパーティ行為者から保護され得、クライアントによって別途暗号化される必要はない。そうではなく、ROCは、(例えば下で論じるように中継サーバまたは他のコンテンツサーバを介した)間接的な通信の場合にのみ、暗号化され得る。
【００４０】
上で論じたように、いくつかの実装形態では、コンテンツサーバ104には、(例えばドメイン間のフェデレーテッドサービス(federated service)のため)ユーザデータを共有する正当な必要性のある場合がある。セキュリティおよびプライバシを維持しながらこれを達成するために、いくつかの実装形態では、第1のコンテンツサーバ104および/または中継サーバ102は、クライアントデバイスに、第2のコンテンツサーバとデータを交換したいと信号伝達することができる。これは、ブラウザAPIへのjavascriptコールを介して、ウェブページ内の特別なタグパラメータを介して、(例えばコンテンツプロバイダのデータ共有先のドメインを特定するなどの)公的にアクセス可能なパートナーファイルを介して、メタデータ内に別のドメインを特定するHTTPS応答ヘッダを介して、または他の任意のそのような手段を介して、行うことができる。データ交換を可能にするために、クライアントデバイスは、第1のコンテンツプロバイダに対応するeROCを(第1のコンテンツプロバイダがROCを復号し、クライアントデバイスを特定できるように)前記第1のコンテンツプロバイダに送信することができ、第2のコンテンツプロバイダに対応するeROCも前記第1のコンテンツプロバイダに送信することができる。これらのeROCは、例えばコンテンツプロバイダへのコンテンツ要求の中で送信され得る。第1のコンテンツプロバイダには、第2のコンテンツプロバイダの秘密鍵がないので、第1のコンテンツプロバイダは、第2のeROCを復号して第2のROCを回復できない可能性があるが、第2のeROCをパートナーコンテンツプロバイダにユーザデータ要求とともに転送することができる。第2のコンテンツプロバイダは、要求を受信すると、第2のeROCを復号し、ROCに従ってクライアントデバイスを特定し、要求されたデータを第1のコンテンツプロバイダに提供することができる。いくつかの実装形態では、コンテンツプロバイダは、それ自体のROCとそのパートナーコンテンツプロバイダのeROCとの間のマッピングを、コンテンツプロバイダがそのeROCを使用してさらなるデータを要求することができるように、一時的な期間にわたってキャッシュまたは記憶することができる。しかし、多くの実装形態では、そのようなキャッシングは許されていないか極めて限定されていることがあり、したがって、クライアントデバイスは、ユーザデータ交換の正確な監査ログを維持することができる。
【００４１】
クライアントデバイスは、データを共有しeROCを提供せよとの要求を受信するので、コンテンツプロバイダ間または中継サーバ102とコンテンツプロバイダ104との間のデータ共有の各インスタンスの監査ログまたは記録を生成すること、ならびに(例えばブラックリストに載ったエンティティ間でのそのようなデータ共有を防ぐ、またはホワイトリストに載ったエンティティへの共有を制限するなどの)プライバシポリシーおよびセキュリティポリシーを適用することができる。
【００４２】
図2は、コンテンツプロバイダ固有識別子とともに使用するためのコンピューティングデバイスの実装形態を示すブロック図である。上で論じたように、クライアントデバイス100は、クライアント、デバイス、クライアントデバイス、コンピューティングデバイス、ユーザデバイス、または他の任意のそのような用語と、さまざまに呼ばれることがあり、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ビデオゲームコンソール、スマートテレビもしくはセットトップボックス、サーバ、ワークステーション、またはネットワーク106経由で通信することの可能な他の任意のタイプおよび形態のコンピューティングデバイスとすることができる。いくつかの実装形態では、クライアントデバイス100は、ウェブブラウザ、メールクライアント、ビデオプレーヤ、音楽プレーヤ、ビデオゲーム、または他の任意のそのようなアプリケーションなど、ネットワーク106経由で通信するための、アプリケーション、サービス、サーバ、デーモン、ルーチン、または他の実行可能ロジックを実行することができる。そのようなアプリケーションは、コマンドラインインターフェース、グラフィカルユーザインターフェース、またはこれらのインターフェースもしくは他のインターフェースの任意の組合せを含むことができる。クライアントデバイスがスマートテレビまたはセットトップボックスである実装形態では、クライアントデバイスは、地上波放送、衛星放送、またはケーブル放送などの第1のインターフェースを介して、コンテンツを受信することができ、イーサネットインターフェースやWiFiインターフェースなど、ネットワーク106を介する第2のインターフェースを介して、視聴者測定サーバ(audience measurement server)と通信することができる。他の実装形態では、クライアントデバイス100は、ネットワーク106を介してコンテンツを受信することができ、ネットワーク106を介して対話の識別情報を送信することができる。
【００４３】
クライアントデバイス100は、限定はしないが、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、スマートフォン、デジタルビデオレコーダ、テレビ用セットトップボックス、ビデオゲームコンソール、または他の任意のタイプおよび形態のコンピューティングデバイスもしくはデバイスの組合せを含む、ネットワーク106を介して通信するように構成された任意数の異なるタイプのユーザ電子デバイスとすることができる。いくつかの実装形態では、クライアントデバイス100のタイプは、モバイルデバイス、デスクトップデバイスまたは据え置きのままであることが意図されるかもしくは主としてネットワーク106にローカルエリアネットワークを介してアクセスするように構成されたデバイス、あるいはメディア消費デバイスなどの別分類の電子デバイスとして、分類することができる。
【００４４】
多くの実装形態では、クライアントデバイス100は、プロセッサ200およびメモリ206を含む。メモリ206は、プロセッサ200によって実行されるとプロセッサ200に本明細書において説明する動作のうちの1つまたは複数を実施させる機械命令を記憶することができる。プロセッサ200は、マイクロプロセッサ、ASIC、FPGAなど、またはそれらの組合せを含むことができる。多くの実装形態では、プロセッサ200は、マルチコアプロセッサ、またはプロセッサアレイとすることができる。メモリ206は、それに限定されないが、プロセッサ200にプログラム命令を提供することの可能な、電子記憶デバイス、光学記憶デバイス、磁気記憶デバイス、または他の任意の記憶デバイスを含むことができる。メモリ206は、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光学式媒体、またはプロセッサ200がそこから命令を読み出すことのできる他の任意の適切なメモリを含むことができる。命令は、それに限定されないが、C、C++、C#、Java、JavaScript、Perl、HTML、XML、Python、およびVisual Basicなど、任意の適切なコンピュータプログラミング言語によるコードを含むことができる。
【００４５】
クライアントデバイス100は、1つまたは複数のネットワークインターフェース202を含むことができる。ネットワークインターフェース202は、10Base T、100Base T、もしくは1000Base T(「ギガビット」)を含むイーサネット、802.11a、802.11b、802.11g、802.11n、もしくは802.11acなど、各種802.11ワイヤレスのいずれか、CDMAセルラー、LTEセルラー、3Gセルラー、もしくは4Gセルラーを含むセルラー、Bluetoothもしくは他の短距離ワイヤレス接続、またはネットワーク106と通信するための、これらのインターフェースもしくは他のインターフェースの任意の組合せを含む、任意のタイプおよび形態のインターフェースを含むことができる。多くの実装形態では、クライアントデバイス100は、異なるタイプの複数のネットワークインターフェース202を含み、それによって、多様なネットワーク106への接続、またはインターネットなどのネットワーク106への、異なるサブネットワークを介した接続を可能にすることができる。
【００４６】
クライアントデバイス100は、1つまたは複数のユーザインターフェースデバイス204を含むことができる。ユーザインターフェースデバイス204は、感覚情報(例えばディスプレイ上の視覚化、1つもしくは複数の音、触覚フィードバックなど)を生成することによってユーザにデータを伝達し、かつ/またはユーザから受領した感覚情報を電子信号に変換する、任意の電子デバイス(例えばキーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロホンなど)とすることができる。1つまたは複数のユーザインターフェースデバイスは、さまざまな実装形態に従って、組込みディスプレイ、タッチスクリーン、マイクロホンなどのような、クライアントデバイス100のハウジングに内蔵のものであってもよく、クライアントデバイス100に接続されたモニタ、クライアントデバイス100に接続されたスピーカなどのような、クライアントデバイス100のハウジングに外付けのものであってもよい。
【００４７】
クライアントデバイス100は、メモリ206内にアプリケーション208を含むこともでき、あるいはプロセッサ200を用いてアプリケーション208を実行することもできる。アプリケーション208は、コンテンツを受信し、コンテンツをクライアントデバイスの出力インターフェース204(例えばディスプレイ、スピーカなど)を介して表示するかまたはその他の方法で出力するための、アプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、または他の実行可能ロジックとすることができる。一実装形態では、アプリケーション208はウェブブラウザとすることができる。アプリケーション208は、ネットワークインターフェース202を介して受信した、かつ/またはプロセッサ200によってローカルに生成されたコンテンツを表示するための機能を含むことができる。いくつかの実装形態では、アプリケーション208は、メディアプレーヤとすることもでき、あるいはウェブブラウザ内のプラグインメディアプレーヤやネイティブメディアプレーヤなどの埋込みメディアプレーヤを含むこともできる。アプリケーション208は、スキップコントロール、よくないね(dislike)ボタン、または任意の同様のインターフェースなど、メディアプレーヤ内で再生されるコンテンツと対話するためのユーザインターフェースを提供することができる。
【００４８】
クライアント100は、デバイス識別子210を含んでもよく、デバイス識別子210を用いて識別されてもよい。デバイス識別子210は、英数字ストリング、データストリング、シリアル番号、メディアアクセス制御(MAC)アドレス、インターネットプロトコル(IP)アドレス、ユーザ名もしくはアカウント名、グローバル一意識別子(GUID)、クッキー、乱数もしくは疑似乱数、またはこれらの識別子もしくは他の識別子の組合せを含む他の任意のタイプおよび形態の識別子とすることができる。いくつかの実装形態では、デバイス識別子210は、メーカーシリアル番号やMACアドレスなど、デバイスに固定であるかまたはデバイス内に事前に構成されるものとすることができ、一方、他の実装形態では、デバイス識別子210は、クッキーやユーザ名など、コンテンツプロバイダ、ストリーミングサーバ、アプリケーション208、または他のエンティティによって動的に設定されるものとすることができる。いくつかの実装形態では、コンテンツプロバイダおよび/または視聴者測定サーバへの通信ごとに、一意のまたは新たなデバイス識別子210が設定され得、一方、他の実装形態では、デバイス識別子210は、変更することができないか、または周期的に(例えば毎時、毎日、毎週など)もしくは他の間隔で(例えばクライアントデバイスの再起動時、インターネットサービスへのログイン時などに)変更され得る。いくつかの実装形態では、デバイス識別子210は、1つまたは複数の他のデバイス識別子210(例えば、モバイルデバイスのデバイス識別子、家庭用コンピュータのデバイス識別子など)と関連付けられ得る。多くの実装形態では、上で論じたように、デバイス識別子210は、コンテンツプロバイダによって生成され、かつ/またはデバイス100に送信され得る。他の実装形態では、上で論じたように、クライアント100が、測定サービスまたはコンテンツプロバイダにデバイス識別子またはクッキー210を要求することができ、またデバイス識別子またはクッキー210を測定サービスまたはコンテンツプロバイダに、コンテンツ要求または測定データ要求と関連付けて送信することができる。
【００４９】
クライアントデバイス100は、さまざまな実装形態では、読出し専用クッキールックアップテーブル(LUT)216、および/またはエンクリプタ214を含むことができる。上で論じたように、いくつかの実装形態では、ROC LUT216は、対応するコンテンツプロバイダの識別子(例えばドメイン名、アドレスなど)によってインデックスされた、各コンテンツプロバイダについてのランダム識別子を含むことができる。ランダム識別子は、事前に生成されてもよく、(例えば新たなプロバイダをLUTに追加するときに)動的に生成されてもよい。いくつかの実装形態では、デバイス識別子210を、ランダム識別子を生成するためのシードとして使用することができる。他の実装形態では、エンクリプタ214を使用して、入力であるデバイス識別子210およびコンテンツプロバイダのドメインまたはアドレス(また、上で論じたように、場合によっては追加のエントロピーソルト)からハッシュ結果を計算することができる。エンクリプタ214は、ハードウェアもしくはソフトウェア、またはハードウェアとソフトウェアとの組合せを備えることができる。いくつかの実装形態では、エンクリプタ214は、暗号化モジュール、トラステッドプラットフォームモジュール(TPM)、ASIC、または暗号化および暗号学的ハッシュ計算を実施するための他の任意のタイプおよび形態の回路を備えることができる。
【００５０】
クライアントデバイス100は、識別エンジン(identification engine)212を実行することができる。識別エンジン212は、ルックアップテーブル216からROCを特定し取り出すための、またはデバイス識別子210およびコンテンツプロバイダのドメインもしくはアドレスに基づいてコンテンツプロバイダのROCを生成するための、アプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジック備えることができる。識別エンジンは、複数のROCを生成するかまたは取り出すように、エンクリプタ214を通じてROCを暗号化するように、また暗号化されたROCを中継サーバまたは直接コンテンツプロバイダ104に(例えばコンテンツ要求とともに)送信するように、構成することができる。
【００５１】
図2には、中継サーバ102の一実装形態のブロック図も示されている。クライアントデバイス100と同様に、中継サーバ102も、1つまたは複数のプロセッサ200、メモリまたは記憶デバイス206、ネットワークインターフェース202、およびユーザインターフェース204を含むことができる。ヘッドレスサーバと呼ばれるいくつかの実装形態では、サーバ102は、ユーザインターフェース204を含まないことがあるが、クライアント100またはコンテンツプロバイダと、ユーザインターフェース204を用いてネットワーク106を介して通信することができる。いくつかの実装形態では、メモリ206は、コンテンツを配信するかまたはクライアントがコンテンツプロバイダのコンテンツにアクセスできるようにするリダイレクションコマンドを配信するための、FTPサーバ、ウェブサーバ、メールサーバ、ファイル共有サーバ、ピアツーピアサーバ、または他のそのようなアプリケーションを含む、サーバのプロセッサ200によって実行するための1つまたは複数のアプリケーションを記憶することができる。
【００５２】
中継サーバ102は、いくつかの実装形態では、コンテンツプロバイダセレクタ220および/またはクッキーエクストラクタ222を含むことができる。コンテンツプロバイダセレクタ220およびクッキーエクストラクタ222はそれぞれ、アプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備えることができる。コンテンツプロバイダセレクタ220は、コンテンツプロバイダのリストから、例えばラウンドロビンもしくは他のロードバランシングシステムを通じて、またはオークションベースのシステムを通じて、コンテンツプロバイダ104を選択するように構成することができる。したがって、コンテンツプロバイダセレクタ220は、いくつかの実装形態では、クライアントデバイスにコンテンツを提供する機会への入札などの要求をコンテンツプロバイダ104に送信し、同入札などの応答をコンテンツプロバイダ104から受信するように構成することができる。コンテンツプロバイダセレクタ220は、クライアントデバイス100の要求に対する、選択されたコンテンツプロバイダのドメインやアドレスなどの識別子を含む応答を生成するようにも構成することができ、それによって、クライアントデバイスは対応するeROCを生成することができる。
【００５３】
上で論じたように、いくつかの実装形態では、これらのeROCは、クライアントからのさらなる要求の中で中継サーバ102に提供され得、そのような実装形態では、クッキーエクストラクタ222が、要求から各eROCを抽出し、要求と対応するeROCとを各コンテンツプロバイダに転送することができる。他の実装形態では、クライアントデバイスが、コンテンツプロバイダのコンテンツを直接要求することができ、要求と対応するeROCとを各コンテンツプロバイダに送信することができる。いくつかの実装形態では、各eROCは、要求の中のパラメータと値のペアとして、(例えば、さまざまな実装形態では、区切り文字によって区切られたかもしくは固定の長さを有する)データの連結されたストリングとして、または他の任意のそのようなフォーマットで、受信され得る。したがって、クッキーエクストラクタ222は、eROCからなる受信した要求から所定のバイト数を抽出し、抽出したeROCを対応するコンテンツプロバイダに転送するように構成することができる。いくつかの実装形態では、各コンテンツプロバイダが、クライアントから受信したコンテンツ要求の中に明示的に特定され得る。例えば、要求は、区切り文字もしくは他の識別子で区切られているか、または所定の長さが対応するフィールドを分割した、コンテンツプロバイダ識別子とeROCのセット(例えば「example.com, [eROC]; example.org, [eROC];など」)を含むことができる。他の実装形態では、eROCのセットが、(例えば上で論じた図1Dのステップ154において)中継サーバによってクライアントデバイスに提供されたコンテンツプロバイダのリストと1対1に対応することができる。例えば、複数のコンテンツプロバイダを特定するリスト(例えば「example1.org, example2.org, example3.orgなど」)があるとすると、クライアントは、各コンテンツプロバイダについてeROCを生成するかまたは取り出し、それらを同じ順序で要求に添付することができ(例えば「eROC1, eROC2, eROC3など」)、したがって中継サーバは、各eROCを抽出し、それを、クライアントからの要求の中で各コンテンツプロバイダを特定し直す必要なく、リスト内で特定された順序で対応するコンテンツプロバイダに転送することができる。そのような実装形態では、サーバはリストをバッファまたはキャッシュ内に維持する必要があり得る。さらなるそのような実装形態では、どのコンテンツプロバイダ104もクライアントデバイスのポリシーに合致しない(例えば、クライアントデバイスによって維持された、ホワイトリスト内にリストされていないかもしくはブラックリスト内にリストされている、または順守ToS文書を欠いている)場合、クライアントデバイスは、そのようなコンテンツプロバイダのeROCの代わりにデフォルト(例えばオールゼロ)データストリング、ヌルデータストリング、またはランダムデータストリングを与えることができる。デフォルトデータストリングまたはヌルデータストリングについて、中継サーバ102は、データストリングを、コンテンツプロバイダに転送せずに破棄するように構成することができる。ランダムデータストリングについて、中継サーバ102は、そのようなストリングをそれがあたかも適切なeROCであるかのようにコンテンツプロバイダに転送することができ、コンテンツプロバイダは、そのデータストリングを復号で���ないかまたは無効なデータを回復させることができるにすぎない。
【００５４】
図2には、コンテンツプロバイダ104も示されている。コンテンツプロバイダ104は、ネットワーク106に接続され、直接または中継サーバ102を介してクライアント100にコンテンツを提供するように構成された、1つまたは複数のコンピューティングデバイスを含むことができる。コンテンツプロバイダは、コンテンツプロバイダ、サーバ、ウェブサーバ、データサーバ、パブリッシャ、サービスプロバイダと、または他の同様の用語で、さまざまに呼ばれることがある。多くの実装形態では、コンテンツプロバイダは、サーバファームまたはクラウドとして構成された複数のコンピューティングデバイスを含むことができ、ルータ、ロードバランサ、ネットワークアドレス変換器、ファイアウォール、または他のそのようなデバイスを含むことができる。コンテンツプロバイダは、コンピュータサーバ(例えばFTPサーバ、ファイル共有サーバ、ウェブサーバなど)、またはサーバの組合せ(例えばデータセンタ、クラウドコンピューティングプラットフォームなど)とすることができる。コンテンツプロバイダは、テキスト、画像、ビデオ、オーディオ、マルチメディア、もしくは他のデータ、またはこれらの任意の組合せを含む、任意のタイプおよび形態のコンテンツを提供することができる。コンテンツは、ライブメディアコンテンツ、事前に記録したメディアコンテンツ、レンダリング済みコンテンツ、映画、テレビ番組、ポッドキャスト、ビデオブログ、ビデオゲームもしくは他の対話型コンテンツ、任意のフォーマットの広告、ソーシャルメディア、または他の任意のタイプおよび形態のコンテンツを含むことができる。
【００５５】
コンテンツプロバイダ104は、図示のように、1つまたは複数のプロセッサ200、ネットワークインターフェース202、I/Oインターフェース204、および/またはメモリデバイス206を含むことができる。多くの実装形態では、コンテンツプロバイダ104は、物理的なデバイスによって実行される仮想マシンを含む、複数のコンピューティングデバイスを備えることができる。例えば、コンテンツプロバイダ104は、1つまたは複数の物理的なコンピューティングデバイスによって実行される複数の仮想マシンを備えることができ、そのような仮想マシンはそれぞれ、コンテンツサーバ(例えばウェブサーバ、ファイルサーバ、ストリーミングメディアサーバなど)を実行し、ネットワーク記憶デバイス、RAID記憶デバイス、または他のそのようなデバイスなど、1つまたは複数の記憶デバイスと通信する。
【００５６】
コンテンツプロバイダ104は、コンテンツセレクタ230を含むことができる。コンテンツセレクタ230は、クライアントデバイス100に配信するためのコンテンツをコンテンツ記憶領域234から選択するための、アプリケーション、サービス、サーバ、デーモン、ルーチン、または他の実行可能ロジックを備えることができる。多くの実装形態では、コンテンツセレクタ230は、クライアントに配信するためのコンテンツを、識別子データベース232内に記憶されたクライアントについての情報に基づいて選択することができる。例えば、データベース232は、ROCによってインデックスされた、デバイスの能力(例えばスクリーンの解像度もしくは向き、色深度、帯域幅など)についての情報またはカスタマイズしたコンテンツを選択するための他の任意のそのような情報を含むことができる。コンテンツサーバ104は、中継サーバ102から、またはいくつかの実装形態では直接クライアントデバイス100からeROCを受信すると、eROCを復号して、読出し専用クッキー(ROC)を回復させることができる。コンテンツセレクタ230は、データベース232内のクライアントについての情報を、クッキーを通じて特定し、対応するコンテンツを記憶領域234から選択することができる。コンテンツセレクタ230は、さまざまな実装形態では、コンテンツをクライアントデバイス100にプッシュもしくはストリーミングするか、またはクライアントアプリケーション208が後に(例えばコンテンツプロバイダ104のウェブサーバから)配信およびレンダリングするためのコンテンツを要求することができるように、コンテンツの一意リソース識別子(URI)もしくはアドレスをクライアントデバイスに提供するか、またはURIもしくはアドレスをクライアントデバイスに転送するために中継サーバ102に提供することができる。
【００５７】
コンテンツ記憶領域234は、メモリ206内に示されているが、多くの実装形態では、コンテンツ記憶領域234は、コンテンツプロバイダと通信する1つまたは複数の追加の記憶デバイス(例えばストレージクラウド、ネットワーク記憶装置など)によって提供され得る。上で論じたように、コンテンツ記憶領域234は、オーディオ、ビデオ、アニメーション、テキスト、マルチメディア、静止グラフィックスもしくは動画グラフィックス、実行可能スクリプト、または他の任意のタイプおよび形態のコンテンツを含む、任意のタイプおよび形態のデータを含むことができる。
【００５８】
上で論じたように、識別子データベース232は、クライアントデバイス、クライアントアカウント、またはクライアントセッションについての情報を読出し専用クッキーまたはコンテンツプロバイダ固有識別子と関連付けるための、データベース、フラットファイル、インデックス付きファイル、または他のタイプおよび形態のデータ構造を含むことができる。いくつかの実装形態では、識別子データベース232は、メモリ206内に記憶することができ、一方、他の実装形態では、識別子データベース232は別個に記憶することができ、(例えば別個のデータベースサーバによって)コンテンツセレクタ230に提供され得る。
【００５９】
コンテンツプロバイダ104は、デクリプタ236を含むことができる。デクリプタ236は、暗号化された読出し専用クッキーをコンテンツプロバイダの秘密鍵を通じて復号するための、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアとの組合せを備えることができる。デクリプタ236は、任意の適切なタイプの復号アルゴリズムを実施することができ、ASIC、FPGA、トラステッドプラットフォームモジュール(TPM)、または他のそのような要素などの復号回路を備えることができる。
【００６０】
図3Aおよび図3Bは、コンテンツプロバイダ固有識別子または読出し専用クッキーを使用したデータ交換のための方法の一実装形態を示すフローチャートである。各フローチャートは、クライアントデバイス100、中継サーバ102、またはコンテンツプロバイダ104によって実施されるステップまたは手順を示すために、一部分割されている。
【００６１】
ステップ300において、いくつかの実装形態では、クライアントデバイス100が、コンテンツ要求を中継サーバ102に送信することができる。いくつかの実装形態では、クライアントデバイス100上のウェブブラウザやメディアアプリケーションなどのアプリケーションが、ウェブページをレンダリングする間や、別のコンテンツアイテムの再生中に時限イベントに遭遇した際などに、コンテンツ要求を生成することができる。要求は、任意の適切な手段(例えばHTTPS要求、RESTful要求など)を介して送信され得、いくつかの実装形態ではハンドシェーキング手続きの実施を含むことができる。要求は、いくつかの実装形態では、中継サーバ102がクライアントデバイスを一意に識別できるように、デバイス識別子、アカウント識別子、ユーザ識別子、セッション識別子、もしくは他のそのような識別子、またはクライアントデバイスによって生成されたクッキー(例えばROC)を含むことができる。例えば、いくつかの実装形態では、中継サーバ102が、(例えば認証手続きまたは他のそのような事象の間に)クライアントデバイス100に前もってクッキーを提供しておくことができ、クライアントデバイス100は、後に同じクッキーを要求の中で提供することができる。
【００６２】
ステップ302において、いくつかの実装形態では、中継サーバ102は、クライアントデバイスにコンテンツを提供する可能性のあるコンテンツプロバイダを選択することができる。コンテンツプロバイダは、上で論じたように、オークションシステムや、ラウンドロビンアルゴリズムまたは他のロードバランシングシステムなど、任意の方法を通じて選択され得る。いくつかの実装形態では、中継サーバ102はコンテンツサーバ104に、入札を得るための要求、コンテンツサーバ104がコンテンツを提供できることを確認するための要求、または他のそのような要求(図示せず)を送信することができ、応答に基づいてコンテンツサーバ104を選択することができる。
【００６３】
ステップ304において、中継サーバ102は、選択されたプロバイダを、コンテンツを提供する可能性のあるプロバイダのリストに追加することができる。プロバイダを追加することは、プロバイダのドメイン名もしくはアドレスをリストに追加すること、ドメイン名もしくはアドレスを、名もしくはアドレスのセットに連結すること、またはその他の方法でプロバイダの識別情報をリストに追加することを含むことができる。
【００６４】
ステップ306において、中継サーバは、さらなるプロバイダをリストに追加すべきかどうかを判定することができる。いくつかの実装形態では、リストは所定の長さ(例えば5プロバイダ、10プロバイダなど)を有することができ、中継サーバは、この長さに達するまでプロバイダを追加することができる。他の実装形態では、中継サーバは、タイマの期限満了に達するまでプロバイダを追加することができる。例えば、中継サーバ102はコンテンツプロバイダに、コンテンツを提供するための入札またはコンテンツの提供に対する利用可能性を求める要求を送信することができ、5秒以内、3秒以内、1秒以内、または他の任意のそのような時間期間内に応答した任意のプロバイダをリストに追加することができる。ステップ302〜306は、リストが完成する(例えば、所定の長さもしくは時間期間に達するか、または全てのプロバイダに要求を発行してしまうか、または全てのプロバイダをリストに追加する)まで、反復的に繰り返され得る。ステップ308において、中継サーバは、生成されたリストをクライアントデバイスに、第1の要求に対する応答として送信することができる。
【００６５】
ステップ310において、クライアントデバイスは、リストから第1のコンテンツプロバイダのドメインまたはアドレスを抽出することができる。上で論じたように、リストは、さまざまな実装形態では、所定の長さのフィールド、または区切り文字によって区切られた可変長のフィールドを含むことができる。クライアントデバイスは、それに応じて長さまたは区切り文字に従ってドメインまたはアドレスを抽出することができる。
【００６６】
上で論じたように、いくつかの実装形態では、クライアントデバイスは、コンテンツプロバイダのドメインまたはアドレスまたは他の識別子によってインデックスされた、各コンテンツプロバイダについてのランダムに生成された読出し専用クッキーを備えたルックアップテーブルを維持することができる。そのような実装形態では、ステップ312Aにおいて、クライアントデバイスは対応するROCを特定することができる。上で論じたように、いくつかの実装形態では、テーブルは、ランダムROC値で事前に埋められ得る。他の実装形態では、クライアントデバイスが、プロバイダについてテーブル内にROCが存在するかどうかを判定することができ、存在しない場合、(クライアントデバイスのプライベート識別子、ランダムシード、もしくはシステム時間、および/またはハードウェア乱数発生器、ソフトウェア乱数発生器、ネットワーク特性(例えばレイテンシ、ジッタ、誤り率など)、もしくは他の任意のそのような情報を含む他の任意のエントロピーソースを使用して)そのプロバイダの新たなランダムROCを生成することができる。
【００６７】
他の実装形態では、ステップ312Bにおいて、クライアントデバイスは、入力であるコンテンツプロバイダのドメインまたはアドレスまたは他の識別子、およびクライアントデバイスの秘密鍵または識別子に適用されたハッシングアルゴリズムの結果を計算することができる。いくつかの実装形態では、クッキーの期限満了時間や作成時間など、追加のエントロピーを使用することができる。任意の適切なハッシングアルゴリズムを使用することができる。いくつかの実装形態では、暗号学的ハッシングに必要となるコンピューティングリソースを低減するために、クッキーが、生成後に(いくつかの実装形態では、所定の期限満了期間が終了するまでなど、一時的な期間にわたって)クライアントデバイスによって記憶またはキャッシュされ得る。そのような実装形態では、ステップ312Aと同様に、クライアントデバイスは最初に、コンテンツプロバイダのROCが前もって生成されてキャッシュ内に記憶されているかどうかを判定することができ、記憶されていない場合、ハッシュを計算し、新たなROCを生成することができる。
【００６８】
ステップ314において、いくつかの実装形態では、クライアントデバイスは、コンテンツプロバイダの公開鍵を、例えば所定のアドレス(例えば「[domain]/key.html」)もしくは他のそのようなロケーションにおいて取り出すこともでき、あるいはHTTPS/TLSハンドシェーキングセッションを開始してコンテンツプロバイダの公開鍵を取得することもできる。別の実装形態では、所定の「信頼できる」サーバが、複数のコンテンツプロバイダの公開鍵を、各クライアントデバイスへの送信または各クライアントデバイスによる取り出しができるようにフェッチすることができる。ステップ316において、クライアントデバイスは、キャッシュされた、取り出された、または生成されたROCを、対応するコンテンツプロバイダの公開鍵で暗号化することができる。多くの実装形態では、ステップ314は、ステップ312Aまたは312Bの前に実施され得る。多くの実装形態では、コンテンツプロバイダの公開鍵は、本方法の初回の通信または反復の間にクライアントデバイスによってキャッシュまたは記憶され得、後続の反復の間、クライアントデバイスは公開鍵をキャッシュまたはデータ記憶領域から取り出すことができる。例えば、ルックアップテーブルは、コンテンツプロバイダのROC、ならびにその前もって取り出しておいた公開鍵を記憶することができる。ROCがハッシュから計算される実装形態でもクライアントデバイスはやはり、ステップ314において取り出せるように、コンテンツプロバイダのドメインまたはアドレスによってインデックスされた公開鍵のルックアップテーブルを維持することができる。
【００６９】
ステップ318において、クライアントデバイスは、リストがさらなるプロバイダを含むかどうかを判定することができ、含む場合、ステップ310〜318を繰り返すことができる。
【００７０】
上で論じたように、いくつかの実装形態では、クライアントデバイスは、プロバイダのリストにセキュリティポリシーまたはプライバシポリシーを適用することができる。例えば、ステップ310の後で、プロバイダのROCを生成するかまたは取り出す前に、クライアントデバイスは最初に、プロバイダがブラックリスト内で特定されるかまたはホワイトリスト内で特定されないかどうかを判定することができる。プロバイダがブラックリスト内で特定されるかまたはホワイトリスト内で特定されない場合、クライアントデバイスは、直接ステップ318にスキップすることができる。同様に、いくつかの実装形態では、クライアントデバイスは、プロバイダが順守ToS契約書を有しているかどうかを(例えば、「[domain]/tos.html」などの所定のアドレスからその契約書を取り出すことによって)判定することができる。有していない場合、クライアントデバイスは、直接ステップ318にスキップすることができる。
【００７１】
同様に、いくつかの実装形態では、クライアントデバイスは、リスト内で特定されたかつ/またはクライアントデバイスにコンテンツを提供するために選択された各コンテンツプロバイダの識別情報を、監査ログ内に記録することができる。したがって、監査ログは、1つまたは複数のどのコンテンツプロバイダが中継サーバ102とユーザデータを共有することができるか、またはコンテンツプロバイダのどのペアがそれらの間でユーザデータを共有することができるか、を示すことができる。監査ログは、クライアントデバイスのユーザに対する透過性、ならびにユーザ情報のセキュリティおよびプライバシに対するさらなる制御を可能にする。
【００７２】
ステップ320において、いくつかの実装形態では、クライアントデバイスは、暗号化されたROC(eROC)のセットを中継デバイスに送信することができる。上で論じたように、eROCは、連結されてもよく、区切り文字によって区切られてもよく、また対応するコンテンツプロバイダの識別情報を含んでもよく、受信したオリジナルのリストに対応する順序をなしていてもよい。ステップ322において、いくつかの実装形態では、中継サーバはそのセットから、例えば区切り文字または固定の長さに従ってeROCを抽出することができる。ステップ324において、中継サーバは、eROCとコンテンツアイテム要求とをプロバイダに転送することができる。いくつかの実装形態では、eROCと要求とを転送することは、クライアントデバイスにコンテンツを提供するための入札を要求することを含むことができる。ステップ326において、中継サーバは、クライアントデバイスから受信した情報がさらなるeROCを含むかどうかを判定することができ、含む場合、さらなる各eROCについて、ステップ322〜326を繰り返すことができる。
【００７３】
他の実装形態では、上で論じたように、クライアントデバイスは、各eROCを対応するコンテンツプロバイダに、中継サーバをバイパスして送信することができる。これは例えば、中継サーバがステップ302においてロードバランシングまたはオークションを実施する実装形態において、特に中継サーバがただ1つのコンテンツプロバイダしか選択しない場合に、行われ得る。そのような場合、複数のeROCからのeROCの抽出および転送が実施される必要はなく、クライアントデバイスはその代わりに、コンテンツプロバイダと直接通信することができる。
【００７４】
図3Bに移ると、各コンテンツサーバ104は、図示のようにコンテンツ要求とeROCとを中継サーバ102から受信することができる(または上で論じたように、いくつかの実装形態では、コンテンツサーバ104は、要求とeROCとをクライアントデバイスから直接受信することができる)。ステップ332において、コンテンツサーバは、eROCをその秘密鍵を使用して復号することができる。
【００７５】
ステップ334において、コンテンツサーバは、復号されたROCがそのローカルのクッキーデータベース内にあるかどうかを判定することができる。例えば、これが特定のクライアントからコンテンツサーバがコンテンツ要求を初めて受信したときである場合、またはクライアントの古いROCがその後期限満了となったかもしくはユーザがROCをリセットし、そのためクライアントが新たなROCを生成した場合、ROCはコンテンツサーバのデータベース内にない可能性がある。ROCがコンテンツサーバのデータベース内にない場合、ステップ336において、コンテンツサーバはROCをそのローカルデータベースに追加することができる。
【００７６】
ステップ338において、コンテンツサーバは、クライアントデバイスに配信するためのコンテンツアイテムを選択することができる。コンテンツアイテムは、任意の適切な手段を通じて選択され得、例えばコンテンツサーバのローカルデータベース内のROCと関連付けられた情報に基づいて、またクライアントデバイスから受信した情報、クライアントデバイスと関連するウェブの閲覧もしくは検索の履歴、以前のコンテンツ要求もしくは対話、または他の任意のタイプおよび形態の情報に基づいて、クライアントデバイス向けに個人化またはカスタマイズされ得る。
【００７７】
いくつかの実装形態では、ステップ340において、コンテンツサーバは、選択されたコンテンツを中継サーバに送信することができる。中継サーバは、ステップ342において、コンテンツをクライアントデバイスに転送することができる。いくつかの実装形態では、中継サーバは、複数のコンテンツサーバ104からコンテンツを受信することができる(例えば複数のコンテンツサーバによってステップ330〜340が並列に実施され得る)。中継サーバは、ステップ342においてクライアントデバイスに転送するためのコンテンツアイテムを、例えば、入札プロセスもしくはオークションを通じて、または複数のコンテンツサーバから受信した最初のコンテンツアイテムに応答し、残りのコンテンツアイテムは破棄して、選択することができる。他の実装形態では、コンテンツサーバは、選択されたコンテンツを、ステップ342をバイパスして直接クライアントデバイスに送信することができる。図3Aに手短に戻ると、クライアントデバイスは、選択されたコンテンツアイテムを受信すると、ステップ350においてコンテンツをレンダリングまたは表示することができる。
【００７８】
したがって、本明細書において論じるシステムおよび方法は、従来のブラウザクッキーを、「読出し専用クッキー」(「ROC」)とも呼ばれることのある、セキュアで、ユーザに透過であり、かつ高効率のコンテンツプロバイダ固有識別子(「CPSID」)と置き換える。これらのコンテンツプロバイダ固有識別子は、クライアントデバイスによって生成されて、コンテンツプロバイダの公開鍵で暗号化され得、それによって、サードパーティがマッチングを間接的に特定することが防がれるとともに、プロバイダ側のクッキーマッチングテーブルおよびリソース多用のトラッキング通信の必要性がなくなる。コンテンツプロバイダ固有識別子の生成は、順守サービス利用規約(ToS)が例えばドメイン内の所定のアドレスから取り出し可能なコンテンツプロバイダ、(例えばユーザが明示的に同意した)ホワイトリストに載っているコンテンツプロバイダ、および/または(例えばユーザが明示的に同意を拒否した)ブラックリストに載っていないコンテンツプロバイダについてのみ識別子が作成されるように、ユーザポリシーによって制御され得る。さらに、これらのシステムおよび方法は、アイデンティファイアフォーアドバタイザ(Identifier for Advertisers)(IDFA)システムまたはアドバタイザID(Advertiser ID)(AdID)システムなど、従来のブラウザクッキーと同様のデバイス識別システムに適用することもできる。これらのシステムの従来の実装形態では、ユーザによりリセット可能な識別子が、クライアントデバイス上に利用され、受信者が関知しない形で要求の中でコンテンツサーバに提供され得、サーバ同士は、ユーザの監督または制御なしに、IDFA識別子またはAdID識別子を使用してデータを自由に交換することができる。そうではなく、開示した方法およびシステムを使用すると、コンテンツサーバ固有識別子またはROCを提供することができる。
【００７９】
一態様では、本開示は、ドメイン間での制御されたデータ交換のための方法を対象とする。方法は、クライアントデバイスのネットワークインターフェースによって、中継サーバから、中継サーバによって選択されたコンテンツプロバイダのリストを受信することを含む。方法は、コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、クライアントデバイスの識別エンジンによって、コンテンツプロバイダ固有識別子を生成することと、クライアントデバイスのエンクリプタによって、コンテンツプロバイダ固有識別子を、対応するコンテンツプロバイダの暗号化鍵を使用して暗号化することとを含む。方法はまた、クライアントデバイスのネットワークインターフェースによって、中継サーバに、コンテンツプロバイダのリスト内の各コンテンツプロバイダについての暗号化されたコンテンツプロバイダ固有識別子を送信することを含み、中継サーバが、暗号化されたコンテンツプロバイダ固有識別子の各々を、対応するコンテンツプロバイダに転送する。
【００８０】
いくつかの実装形態では、コンテンツプロバイダ固有識別子を生成することが、エンクリプタによって、クライアントデバイスの識別子および対応するコンテンツプロバイダのドメイン名を含む入力の暗号学的ハッシュを計算することを含む。さらなる一実装形態では、暗号学的ハッシュへの入力が、コンテンツプロバイダ固有識別子の期限満了時間をさらに含む。別のさらなる実装形態では、クライアントデバイスの識別子が、クライアントデバイスによって実行されるアプリケーションに固有である。いくつかの実装形態では、コンテンツプロバイダ固有識別子を生成することが、識別エンジンによって、ルックアップテーブル内で、対応するコンテンツプロバイダのドメイン名と関連付けられたインデックスにおける所定のランダム値を特定することを含む。いくつかの実装形態では、コンテンツプロバイダ固有識別子を生成することが、識別エンジンによって、対応するコンテンツプロバイダがクライアントデバイスのブラックリスト内で特定されないとの判定をすることを含む。いくつかの実装形態では、コンテンツプロバイダ固有識別子を生成することが、識別エンジンによって、対応するコンテンツプロバイダがクライアントデバイスの同意リスト内で特定されるとの判定をすることを含む。いくつかの実装形態では、コンテンツプロバイダ固有識別子を生成することが、識別エンジンによって、ネットワークインターフェースを介して、対応するコンテンツプロバイダの公開鍵を取り出すことを含む。いくつかの実装形態では、方法は、対応する各コンテンツプロバイダの標識を、識別子を受信するコンテンツプロバイダのログに追加することを含む。
【００８１】
別の態様では、本出願は、ドメイン間での制御されたデータ交換のためのシステムを対象とする。システムは、中継サーバから受信したコンテンツプロバイダのリスト内の各コンテンツプロバイダについて、コンテンツプロバイダ固有識別子を生成するように構成された識別エンジンを含む。システムはまた、各コンテンツプロバイダ固有識別子を、対応するコンテンツプロバイダの暗号化鍵、例えば公開鍵を使用して暗号化するように構成されたエンクリプタと、中継サーバに、コンテンツプロバイダのリスト内の各コンテンツプロバイダについての暗号化されたコンテンツプロバイダ固有識別子を送信するように構成されたネットワークインターフェースとを含み、中継サーバが、暗号化されたコンテンツプロバイダ固有識別子の各々を、対応するコンテンツプロバイダに転送する。
【００８２】
いくつかの実装形態では、エンクリプタが、コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、クライアントデバイスの識別子および対応するコンテンツプロバイダのドメイン名を含む入力の暗号学的ハッシュを計算するようにさらに構成される。さらなる一実装形態では、暗号学的ハッシュへの入力が、コンテンツプロバイダ固有識別子の期限満了時間をさらに含む。別のさらなる実装形態では、クライアントデバイスの識別子が、クライアントデバイスによって実行されるアプリケーションに固有である。
【００８３】
いくつかの実装形態では、識別エンジンが、コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、ルックアップテーブル内で、対応するコンテンツプロバイダのドメイン名と関連付けられたインデックスにおける所定のランダム値を特定するようにさらに構成される。いくつかの実装形態では、識別エンジンが、コンテンツプロバイダのリスト内の各コンテンツプロバイダがクライアントデバイスのブラックリスト内で特定されないとの判定をするようにさらに構成される。
【００８４】
いくつかの実装形態では、識別エンジンが、コンテンツプロバイダのリスト内の各コンテンツプロバイダがクライアントデバイスの同意リスト内で特定されるとの判定をするようにさらに構成される。いくつかの実装形態では、識別エンジンが、ネットワークインターフェースを介して、コンテンツプロバイダのリスト内の各コンテンツプロバイダの公開鍵を取り出すようにさらに構成される。いくつかの実装形態では、識別エンジンが、対応する各コンテンツプロバイダの標識を、識別子を受信するコンテンツプロバイダのログに追加するようにさらに構成される。
【００８５】
別の態様では、本開示は、制御されたデータ交換のためのシステムを対象とする。システムは、クライアントデバイスおよび複数のコンテンツプロバイダと通信するネットワークインターフェースであって、クライアントデバイスからコンテンツ要求を受信するように構成された、ネットワークインターフェースを含む。システムは、複数のコンテンツプロバイダのサブセットを選択し、選択されたサブセットの各コンテンツプロバイダの識別情報を含むリストを生成するように構成された、コンテンツプロバイダセレクタも含む。ネットワークインターフェースは、リストをクライアントデバイスに送信することと、クライアントデバイスから、複数のコンテンツプロバイダのさらなるサブセットの各コンテンツプロバイダについての暗号化されたコンテンツプロバイダ固有識別子を含む応答を受信することと、さらなるサブセットの各コンテンツプロバイダに、さらなるコンテンツ要求を送信することであって、各々のさらなる要求が、受信側であるコンテンツプロバイダに対応する暗号化されたコンテンツプロバイダ固有識別子を含む、送信することと、第1のコンテンツプロバイダから、受信した暗号化されたコンテンツプロバイダ固有識別子に基づいてコンテンツプロバイダによって選択されたコンテンツアイテムを受信することと、受信したコンテンツアイテムを、クライアントデバイスによる提示のためにクライアントデバイスに転送することとを行うようにさらに構成される。
【００８６】
いくつかの実装形態では、システムは、応答から暗号化されたコンテンツプロバイダ固有識別子の各々を抽出し、抽出した暗号化されたコンテンツプロバイダ固有識別子の各々を、対応するコンテンツプロバイダと関連付けるように構成された、識別子エクストラクタを含む。
【００８７】
本明細書において説明した本主題および動作の実装形態は、デジタル電子回路として、またはコンピュータソフトウェア、コンピュータファームウェア、もしくは本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータハードウェアとして、またはそれらのうちの1つもしくは複数の組合せとして、実装することができる。本明細書において説明した本主題の実装形態は、データ処理装置によって実行できるように、またはデータ処理装置の動作を制御するために、1つまたは複数のコンピュータ記憶媒体上に符号化された、1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして、実装することができる。その代わりにまたはそれに加えて、プログラム命令は、情報をデータ処理装置によって実行する目的で適切なレシーバ装置に送信できるように符号化するために生成される、人工的に生成された伝搬信号、例えばマシンにより生成された電気信号、光信号、または電磁信号上に、符号化することもできる。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスのメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せとすることもでき、あるいはその中に含めることもできる。さらに、コンピュータ記憶媒体は、伝搬信号ではないが、人工的に生成された伝搬信号内に符号化されたコンピュータプログラム命令の供給元または供給先とすることもできる。コンピュータ記憶媒体は、1つまたは複数の別々のコンポーネントまたは媒体(例えば複数のCD、ディスク、または他の記憶デバイス)とすることもでき、あるいはその中に含めることもできる。したがって、コンピュータ記憶媒体は有形であってよい。
【００８８】
本明細書において説明した動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたデータまたは他の供給元から受領したデータに対してデータ処理装置によって実施される動作として、実施することができる。
【００８９】
「クライアント」または「サーバ」という用語には、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または前述したもののうちの複数のもの、もしくは前述したものの組合せなど、データを処理するためのあらゆる種類の装置、デバイス、およびマシンが含まれる。装置は、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を生み出すコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むこともできる。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなど、さまざまな異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００９０】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)コンピュータプログラムは、コンパイル型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で記述することができ、それはまた、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他のユニットとしてを含む、任意の形態でデプロイすることができる。コンピュータプログラムは、その必要はないが、ファイルシステム内のファイルに対応していてよい。プログラムは、他のプログラムもしくはデータを保持するファイルの一部分(例えば、マークアップ言語ドキュメント内に記憶された1つもしくは複数のスクリプト)内に、当該のプログラムに専用の単一のファイル内に、または複数の連係されたファイル(例えば、コードの1つもしくは複数のモジュール、サブプログラム、もしくは一部分を記憶したファイル)内に、記憶させることができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように、デプロイすることができる。
【００９１】
本明細書において説明したプロセスおよび論理フローは、アクションを実施するための1つまたは複数のコンピュータプログラムを、入力データに作用し出力を生成することによって実行する、1つまたは複数のプログラマブルプロセッサによって実施され得る。プロセスおよび論理フローを、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施することもでき、また装置を、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)として実装することもできる。
【００９２】
コンピュータプログラムの実行に適したプロセッサとしては、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサがある。一般に、プロセッサは、読出し専用メモリ、またはランダムアクセスメモリ、またはその両方から、命令およびデータを受領する。コンピュータの不可欠な要素が、命令に従ってアクションを実施するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、例えば磁気ディスク、光磁気ディスク、または光ディスクを含むか、またはそこからデータを受領するか、もしくはそこにデータを転送するか、もしくはその両方のために、動作可能に結合される。しかし、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは別のデバイス、例えば、ほんの数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオプレーヤもしくはモバイルビデオプレーヤ、ゲームコンソール、グローバルポジショニングシステム(GPS)レシーバ、またはポータブル記憶デバイス(例えばユニバーサルシリアルバス(USB)フラッシュドライブ)に、組み込むことができる。コンピュータプログラム命令およびデータを記憶するのに適したデバイスとしては、半導体メモリデバイス、例えばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性のメモリ、媒体、およびメモリデバイスがある。プロセッサおよびメモリは、専用論理回路によって補完するか、またはそれに組み込むことができる。
【００９３】
ユーザとの対話を可能にするために、本明細書において説明した本主題の実装形態は、ディスプレイデバイス、例えばCRT(陰極線管)、LCD(液晶ディスプレイ)、OLED(有機発光ダイオード)、TFT(薄膜トランジスタ)、プラズマ、他のフレキシブル構成、または情報をユーザに表示するための他の任意のモニタ、およびユーザがそれによってコンピュータに入力を行うことのできる、キーボード、ポインティングデバイス、例えばマウス、トラックボールなど、またはタッチスクリーン、タッチパッドなどを有する、コンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとの対話を可能にすることもでき、すなわち、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受領することができる。それに加えて、コンピュータは、ユーザによって使用されているデバイスにドキュメントを送り、そこからドキュメントを受信することによって、すなわち、ユーザのクライアントデバイス上のウェブブラウザに、そのウェブブラウザから受信した要求に応答してウェブページを送ることによって、ユーザと対話することができる。
【００９４】
本明細書において説明した本主題の実装形態は、例えばデータサーバとしてのバックエンドコンポーネントを含むか、またはミドルウェアコンポーネント、例えばアプリケーションサーバを含むか、またはフロントエンドコンポーネント、例えば本明細書において説明した本主題の一実装形態とそれを通じてユーザが対話することのできるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステム内に実装することができる。システムのコンポーネント同士は、任意の形態または媒体のデジタルデータ通信、例えば通信ネットワークによって、相互接続され得る。通信ネットワークには、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(例えばインターネット)、ならびにピアツーピアネットワーク(例えばアドホックピアツーピアネットワーク)が含まれてよい。
【００９５】
本明細書において論じたシステムがユーザについての個人情報を収集するかまたは個人情報を使用することのできる状況では、ユーザには、プログラムまたは特徴が個人情報(例えばユーザのソーシャルネットワーク、社会的行為もしくは社会的活動、ユーザの嗜好、またはユーザの位置についての情報)を収集することができるかどうかを制御する、またはコンテンツサーバもしくはユーザにとってより関連のあり得る他のデータ処理システムからコンテンツを受信するかどうか、もしくはその受信の仕方を制御する機会が与えられてよい。加えて、特定のデータが、それが記憶または使用される前に、パラメータの生成の際に個人を識別可能な情報が取り除かれるように、1つまたは複数の方途で匿名化されてよい。例えば、ユーザの識別情報が、そのユーザにとって個人を識別可能な情報が特定できないように匿名化されてよく、または位置情報が得られるユーザの地理的位置が、ユーザの特定の位置が特定できないように、(市、郵便番号、または州レベルなどに)一般化されてよい。したがって、ユーザは、コンテンツサーバによって自身についてどのように情報が収集され使用されるかに対して制御することができてよい。
【００９６】
本明細書は、実装形態の多くの具体的詳細を含んでいるが、これらは、任意の発明の範囲または特許請求され得るものの範囲に対する限定と解釈するのではなく、特定の発明の特定の実装形態に固有の特徴についての説明と解釈すべきである。本明細書において別々の実装形態の文脈の中で説明されるいくつかの特徴は、単一の実装形態において組み合わせて実装することもできる。反対に、単一の実装形態の文脈の中で説明されるさまざまな特徴は、複数の実装形態において別々に、または任意の適切な部分組合せで、実装することもできる。さらに、特徴については上で、特定の組合せで作用するものと説明されていることがあり、そのようなものとして最初に特許請求されていることすらあるが、特許請求された組合せからの1つまたは複数の特徴を、場合によってはその組合せから削除することができ、また特許請求された組合せが、部分組合せまたは部分組合せの変形を対象としてよい。
【００９７】
同様に、動作は図面中に特定の順序で描かれているが、これは、望ましい結果を達成するために、そのような動作が図示の特定の順序でもしくは順番に実施されること、または図示の全ての動作が実施されることを要求するものと理解すべきではない。特定の状況下では、マルチタスキングおよび並列処理が有利となることがある。さらに、上で説明した実装形態におけるさまざまなシステムコンポーネントの分離は、全ての実装形態においてそのような分離を要求するものと理解すべきではなく、説明したプログラムコンポーネントおよびシステムは一般に単一のソフトウェア製品に一緒に統合するかまたは複数のソフトウェア製品にパッケージ化できる、ということを理解されたい。
【００９８】
かくして、本主題の特定の実装形態について説明してきた。他の実装形態が、添付の特許請求の範囲に記載の範囲に含まれる。場合によっては、特許請求の範囲に記載されたアクションを異なる順序で実施し、それでもなお望ましい結果を達成することができる。加えて、添付の図中に描いたプロセスは、望ましい結果を達成するために、図示の特定の順序または順番を必ずしも要求するとは限らない。いくつかの実装形態では、マルチタスキングまたは並列処理が利用されてよい。
【符号の説明】
【００９９】
100  クライアントデバイス、クライアント
102  中継サーバ
104  コンテンツサーバまたはコンテンツプロバイダ
104A〜104N  コンテンツサーバ
106  ネットワーク
106'  ネットワーク
135  クッキーマッチングテーブル
200  プロセッサ
202  ネットワークインターフェース
204  ユーザインターフェースデバイス、出力インターフェース、ユーザインターフェース、I/Oインターフェース
206  メモリまたは記憶デバイス、メモリデバイス
208  クライアントアプリケーション
210  デバイス識別子またはクッキー
212  識別エンジン
214  エンクリプタ
216  読出し専用クッキールックアップテーブル(LUT)、ROC LUT
220  コンテンツプロバイダセレクタ
222  クッキーエクストラクタ
230  コンテンツセレクタ
232  識別子データベース
234  コンテンツ記憶領域
236  デクリプタ
【図１Ａ】
2021519981.tif 000003
【図１Ｂ】
2021519981.tif 000004
【図１Ｃ】
2021519981.tif 000005
【図１Ｄ】
2021519981.tif 000006
【図２】
2021519981.tif 000007
【図３Ａ】
2021519981.tif 000008
【図３Ｂ】
2021519981.tif 000009
【手続補正書】
【提出日】令和2年10月21日(2020.10.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ドメイン間での制御されたデータ交換のための方法であって、
クライアントデバイスのネットワークインターフェースによって、中継サーバから、前記中継サーバによって選択されたコンテンツプロバイダのリストを受信するステップと、
前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、
前記クライアントデバイスの識別エンジンによって、コンテンツプロバイダ固有識別子を生成するステップと、
前記クライアントデバイスのエンクリプタによって、前記コンテンツプロバイダ固有識別子を、対応する前記コンテンツプロバイダの暗号化鍵を使用して暗号化するステップと、
前記クライアントデバイスの前記ネットワークインターフェースによって、前記中継サーバに、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについての前記暗号化されたコンテンツプロバイダ固有識別子を送信するステップと
を含み、前記中継サーバが、暗号化されたコンテンツプロバイダ固有識別子の各々を、対応する前記コンテンツプロバイダに転送する、方法。
【請求項２】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記エンクリプタによって、前記クライアントデバイスの識別子および対応する前記コンテンツプロバイダのドメイン名を含む入力の暗号学的ハッシュを計算するステップを含む、請求項1に記載の方法。
【請求項３】
前記暗号学的ハッシュへの前記入力が、前記コンテンツプロバイダ固有識別子の期限満了時間をさらに含む、請求項2に記載の方法。
【請求項４】
前記クライアントデバイスの前記識別子が、前記クライアントデバイスによって実行されるアプリケーションに固有である、請求項2に記載の方法。
【請求項５】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、ルックアップテーブル内で、対応する前記コンテンツプロバイダのドメイン名と関連付けられたインデックスにおける所定のランダム値を特定するステップを含む、請求項1に記載の方法。
【請求項６】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、対応する前記コンテンツプロバイダが前記クライアントデバイスのブラックリスト内で特定されないとの判定をするステップをさらに含む、請求項1に記載の方法。
【請求項７】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、対応する前記コンテンツプロバイダが前記クライアントデバイスの同意リスト内で特定されるとの判定をするステップをさらに含む、請求項1に記載の方法。
【請求項８】
前記コンテンツプロバイダ固有識別子を生成するステップが、前記識別エンジンによって、前記ネットワークインターフェースを介して、対応する前記コンテンツプロバイダの公開鍵を取り出すステップをさらに含む、請求項1に記載の方法。
【請求項９】
対応する各コンテンツプロバイダの標識を、識別子を受信するコンテンツプロバイダのログに追加するステップをさらに含む、請求項1に記載の方法。
【請求項１０】
ドメイン間での制御されたデータ交換のためのシステムであって、
クライアントデバイスにおいて中継サーバから受信したコンテンツプロバイダのリスト内の各コンテンツプロバイダについて、コンテンツプロバイダ固有識別子を生成するように構成された識別エンジンと、
各コンテンツプロバイダ固有識別子を、対応する前記コンテンツプロバイダの暗号化鍵を使用して暗号化するように構成されたエンクリプタと、
前記中継サーバに、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについての前記暗号化されたコンテンツプロバイダ固有識別子を送信するように構成されたネットワークインターフェースと
を備え、前記中継サーバが、暗号化されたコンテンツプロバイダ固有識別子の各々を、対応する前記コンテンツプロバイダに転送する、システム。
【請求項１１】
前記エンクリプタが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、前記クライアントデバイスの識別子および対応する前記コンテンツプロバイダのドメイン名を含む入力の暗号学的ハッシュを計算するようにさらに構成される、請求項10に記載のシステム。
【請求項１２】
前記暗号学的ハッシュへの前記入力が、前記コンテンツプロバイダ固有識別子の期限満了時間をさらに含む、請求項11に記載のシステム。
【請求項１３】
前記クライアントデバイスの前記識別子が、前記クライアントデバイスによって実行されるアプリケーションに固有である、請求項11に記載のシステム。
【請求項１４】
前記識別エンジンが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダについて、ルックアップテーブル内で、対応する前記コンテンツプロバイダのドメイン名と関連付けられたインデックスにおける所定のランダム値を特定するようにさらに構成される、請求項10に記載のシステム。
【請求項１５】
前記識別エンジンが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダが前記クライアントデバイスのブラックリスト内で特定されないとの判定をするようにさらに構成される、請求項10に記載のシステム。
【請求項１６】
前記識別エンジンが、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダが前記クライアントデバイスの同意リスト内で特定されるとの判定をするようにさらに構成される、請求項10に記載のシステム。
【請求項１７】
前記識別エンジンが、前記ネットワークインターフェースを介して、前記コンテンツプロバイダのリスト内の各コンテンツプロバイダの公開鍵を取り出すようにさらに構成される、請求項10に記載のシステム。
【請求項１８】
前記識別エンジンが、対応する各コンテンツプロバイダの標識を、識別子を受信するコンテンツプロバイダのログに追加するようにさらに構成される、請求項10に記載のシステム。
【請求項１９】
制御されたデータ交換のためのシステムであって、
クライアントデバイスおよび複数のコンテンツプロバイダと通信するネットワークインターフェースであって、前記クライアントデバイスからコンテンツ要求を受信するように構成された、ネットワークインターフェースと、
前記複数のコンテンツプロバイダのサブセットを選択し、前記選択されたサブセットの各コンテンツプロバイダの識別情報を含むリストを生成するように構成された、コンテンツプロバイダセレクタと
を備え、
前記ネットワークインターフェースが、
前記リストを前記クライアントデバイスに送信することと、
前記クライアントデバイスから、前記複数のコンテンツプロバイダのさらなるサブセットの各コンテンツプロバイダについての暗号化されたコンテンツプロバイダ固有識別子を含む応答を受信することと、
前記さらなるサブセットの各コンテンツプロバイダに、さらなるコンテンツ要求を送信することであって、各々のさらなる要求が、受信側である前記コンテンツプロバイダに対応する前記暗号化されたコンテンツプロバイダ固有識別子を含む、ことと、
第1のコンテンツプロバイダから、前記受信した暗号化されたコンテンツプロバイダ固有識別子に基づいて前記コンテンツプロバイダによって選択されたコンテンツアイテムを受信することと、
前記受信したコンテンツアイテムを、前記クライアントデバイスによる提示のために前記クライアントデバイスに転送することと
を行うようにさらに構成される、システム。
【請求項２０】
前記応答から暗号化されたコンテンツプロバイダ固有識別子の各々を抽出し、抽出した暗号化されたコンテンツプロバイダ固有識別子の各々を、対応する前記コンテンツプロバイダと関連付けるように構成された、識別子エクストラクタをさらに備える、請求項19に記載のシステム。
【国際調査報告】
2021519981.tif 000010
2021519981.tif 000011
2021519981.tif 000012