(57)【要約】  本開示は、安全でユーザ透過的で高効率なコンテンツプロバイダ固有の識別子読み取り専用クッキー(「ROC」)を提供する。これらのROCは、クライアントデバイスによって生成され、コンテンツプロバイダの公開キーを用いて暗号化され得、サードパーティが一致を間接的に識別することを防止する。ROCは、ROCがコンテンツプロバイダまたは他のサードパーティによってキャッシュまたは他の方法で悪用されたかどうかをクライアントデバイスが判定することを可能にするために、認証トークンを含むことができる。
2021519022.tif 000002
【特許請求の範囲】
【請求項１】
データ交換を制御するシステムであって、
パートナードメインのリスト内のパートナードメインごとに、
パートナードメイン固有の識別子を生成し、
対応する前記パートナードメインの暗号化キーを使用して、前記パートナードメイン固有の識別子と第1の認証トークンとを暗号化する
暗号器と、
ネットワークインターフェースであって、
前記パートナードメインのリスト内の各パートナードメインのための前記暗号化されたパートナードメイン固有の識別子をコンテンツプロバイダに送信することと、
前記コンテンツプロバイダから、前記パートナードメインのリスト内の各パートナードメインからのデータに基づいて前記コンテンツプロバイダによって選択されたコンテンツアイテムを受信することであって、
前記パートナードメインのリスト内の各パートナードメインからの前記データが、前記暗号化されたパートナードメイン固有の識別子を受信することに基づいて選択される、受信することと、
前記コンテンツプロバイダから、前記パートナードメインのリスト内の各パートナードメインのための第2の認証トークンを受信することと
を行うネットワークインターフェースと、
前記パートナードメインのリスト内の各パートナードメインのための前記第1の認証トークンと、前記パートナードメインのリスト内の各パートナードメインのための前記第2の認証トークンとの比較に基づいて、前記コンテンツアイテムを表示することを決定する監査エンジンと
を備える、システム。
【請求項２】
前記監査エンジンが前記比較に基づいて前記コンテンツアイテムを表示することを決定することが、前記パートナードメインのリスト内の各パートナードメインのための前記第1の認証トークンの各々を、前記パートナードメインのリスト内の各パートナードメインのための前記第2の認証トークンのうちの1つと照合することをさらに含む、請求項1に記載のシステム。
【請求項３】
第2のパートナードメインに関する寄与スコアを決定することであって、前記寄与スコアが第2のコンテンツアイテムを選択する際の寄与のレベルを示す、決定することと、
前記寄与スコアが所定のしきい値未満であることに基づいて、前記第2のパートナードメインのためのパートナードメイン固有の識別子を生成しないことを決定することと
を行う前記監査エンジンをさらに備える、請求項1または2に記載のシステム。
【請求項４】
前記寄与スコアが、1つまたは複数の以前のコンテンツアイテムを選択する際の寄与のレベルを示す、請求項3に記載のシステム。
【請求項５】
パートナードメインの第2のリスト内の各ドメインパートナーのための第1の認証トークンを生成する前記暗号器と、
前記ネットワークインターフェースであって、
前記コンテンツプロバイダから、前記パートナードメインの第2のリスト内の各パートナードメインからのデータに基づいて前記コンテンツプロバイダによって選択された第2のコンテンツアイテムを受信することと、
前記コンテンツプロバイダから、前記パートナードメインの第2のリスト内の各ドメインパートナーのための第2の認証トークンを受信することと
を行う前記ネットワークインターフェースと、
前記パートナードメインの第2のリスト内の各ドメインパートナーのための前記第1の認証トークンと、前記パートナードメインの第2のリスト内の各ドメインパートナーのための前記第2の認証トークンのそれぞれ1つとが一致しないことに基づいて、前記第2のコンテンツアイテムを表示しないことを決定する前記監査エンジンと
をさらに備える、請求項1から4のいずれか一項に記載のシステム。
【請求項６】
前記暗号器が、クライアントデバイス識別子の暗号ハッシュと前記対応するパートナードメインのドメイン名とを計算することによって前記パートナードメイン固有の識別子を生成するように構成される、請求項1から5のいずれか一項に記載のシステム。
【請求項７】
前記クライアントデバイス識別子が前記パートナードメインのリスト内の前記パートナードメインの各々に対して一意である、請求項6に記載のシステム。
【請求項８】
前記パートナードメイン固有の識別子を暗号化するために、前記暗号器が、
少なくとも前記パートナードメイン固有の識別子と、前記第1の認証トークンと、タイムスタンプとを連結することによって文字列を生成し、
前記文字列を暗号化する
ように構成される、請求項1から7のいずれか一項に記載のシステム。
【請求項９】
前記暗号器が、前記パートナードメインがブラックリスト内にリストされていないことに基づいて前記パートナードメイン固有の識別子を生成するように構成される、請求項1から8のいずれか一項に記載のシステム。
【請求項１０】
前記暗号器が、前記パートナードメインの寄与スコアが所定のしきい値を上回ることに基づいて前記パートナードメイン固有の識別子を生成するように構成される、請求項1から9のいずれか一項に記載のシステム。
【請求項１１】
クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリストを受信するステップと、
前記パートナードメインのリスト内のパートナードメインごとに、
前記クライアントデバイスによってパートナードメイン固有の識別子を生成するステップと、
前記クライアントデバイスによって、対応する前記パートナードメインの暗号化キーを使用して、前記パートナードメイン固有の識別子と第1の認証トークンとを暗号化するステップと、
前記クライアントデバイスによって、前記コンテンツプロバイダに、前記パートナードメインのリスト内の各パートナードメインのための前記暗号化されたパートナードメイン固有の識別子を送信するステップと、
前記クライアントデバイスによって、前記コンテンツプロバイダから、前記パートナードメインのリスト内の各パートナードメインからのデータに基づいて前記コンテンツプロバイダによって選択されたコンテンツアイテムを受信するステップであって、
前記パートナードメインのリスト内の各パートナードメインからの前記データが、前記暗号化されたパートナードメイン固有の識別子を受信することに基づいて選択される、ステップと、
前記クライアントデバイスによって、前記コンテンツプロバイダから、前記パートナードメインのリスト内の各パートナードメインのための第2の認証トークンを受信するステップと、
前記クライアントデバイスによって、前記パートナードメインのリスト内の各パートナードメインのための前記第2の認証トークンの認証に基づいて前記コンテンツアイテムを表示するステップと
を含む、データ交換を制御する方法。
【請求項１２】
前記認証に基づいて前記コンテンツアイテムを表示するステップが、前記パートナードメインのリスト内の各パートナードメインのための前記第1の認証トークンの各々を、前記パートナードメインのリスト内の各パートナードメインのための前記第2の認証トークンのうちの1つと照合するステップをさらに含む、請求項11に記載の方法。
【請求項１３】
前記クライアントデバイスによって第2のパートナードメインを受信するステップと、
前記クライアントデバイスによって、前記第2のパートナードメインに関する寄与スコアを決定するステップであって、前記寄与スコアが第2のコンテンツアイテムを選択する際の寄与のレベルを示す、ステップと、
前記クライアントデバイスによって、前記寄与スコアが所定のしきい値未満であることに基づいて、前記第2のパートナードメインのためのパートナードメイン固有の識別子を生成しないことを決定するステップと
をさらに含む、請求項11または12に記載の方法。
【請求項１４】
前記寄与スコアが、1つまたは複数の以前のコンテンツアイテムを選択する際の寄与のレベルを示す、請求項13に記載の方法。
【請求項１５】
前記クライアントデバイスによってパートナードメインの第2のリストを受信するステップと、
前記クライアントデバイスによって、前記パートナードメインの第2のリスト内の各ドメインパートナーのための第1の認証トークンを生成するステップと、
前記クライアントデバイスによって、前記コンテンツプロバイダから、前記パートナードメインの第2のリスト内の各パートナードメインからのデータに基づいて前記コンテンツプロバイダによって選択された第2のコンテンツアイテムを受信するステップと、
前記クライアントデバイスによって、前記コンテンツプロバイダから、前記パートナードメインの第2のリスト内の各ドメインパートナーのための第2の認証トークンを受信するステップと、
前記クライアントデバイスによって、前記パートナードメインの第2のリスト内の各ドメインパートナーのための前記第1の認証トークンと、前記パートナードメインの第2のリスト内の各ドメインパートナーのための前記第2の認証トークンのそれぞれ1つとが一致しないことに基づいて、前記第2のコンテンツアイテムを表示しないことを決定するステップと
をさらに含む、請求項11から14のいずれか一項に記載の方法。
【請求項１６】
前記パートナードメイン固有の識別子を生成するステップが、クライアントデバイス識別子の暗号ハッシュと前記対応するパートナードメインのドメイン名とを計算するステップを含む、請求項11から15のいずれか一項に記載の方法。
【請求項１７】
前記クライアントデバイス識別子が前記パートナードメインのリスト内の前記パートナードメインの各々に対して一意である、請求項16に記載の方法。
【請求項１８】
前記パートナードメイン固有の識別子を暗号化するステップが、
少なくとも前記パートナードメイン固有の識別子と、前記第1の認証トークンと、タイムスタンプとを連結することによって文字列を生成するステップと、
前記文字列を暗号化するステップと
を含む、請求項11から17のいずれか一項に記載の方法。
【請求項１９】
前記パートナードメインがブラックリスト内にリストされていないことに基づいて前記パートナードメイン固有の識別子を生成するステップをさらに含む、請求項11から18のいずれか一項に記載の方法。
【請求項２０】
前記パートナードメインの寄与スコアが所定のしきい値を上回ることに基づいて前記パートナードメイン固有の識別子を生成するステップをさらに含む、請求項11から19のいずれか一項に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ブラウザクッキー、または、デバイス、ユーザ、もしくはセッション固有の短い識別子が、コンテンツプロバイダに対してデバイス、ユーザ、またはセッションを一意に(または半一意に)識別するために使用される。これらのクッキーは、典型的には、例えば、最初のセッションまたはログインプロセス中、コンテンツプロバイダによって生成され、クライアントデバイスのブラウザまたは他のアプリケーションからの後続の要求において提供される。発行者は、次いで、各要求を同じ識別子(暗黙的には、同じデバイス、ユーザ、またはセッション)と関連付けることができ、コンテンツ選択のカスタマイズを可能にする。
【０００２】
しかしながら、典型的なブラウザクッキーは、いくつかの重大な欠点を有する。ウェブサイト内に埋め込みコンテンツを提供するサードパーティのコンテンツプロバイダは、これらのサードパーティによって識別または追跡されていることをユーザが必ずしも意識することなく、ブラウザを追跡するためにクッキーを提供することができる(例えば、ブラウザアドレスバーにおいて示されたアドレスは、メインページのソースのみを識別することができ、埋め込まれたコンテンツを必ずしも識別できるとは限らないため)。したがって、ユーザが潜在的なプライバシーの問題を識別し、ユーザの個人情報のプライバシーを制御することが困難である可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも1つの態様によれば、データ交換を制御するシステムは、暗号器(encryptor)を含むことができる。暗号器は、パートナードメインのリスト内のパートナードメインごとに、パートナードメイン固有の識別子を生成し、対応するパートナードメインの暗号化キーを使用して、パートナードメイン固有の識別子と第1の認証トークンとを暗号化することができる。システムは、パートナードメインのリスト内の各パートナードメインのための暗号化されたパートナードメイン固有の識別子をコンテンツプロバイダに送信するためにネットワークインターフェースを含むことができる。ネットワークインターフェースは、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインからのデータに基づいてコンテンツプロバイダによって選択されたコンテンツアイテムを受信することができる。パートナードメインのリスト内の各パートナードメインからのデータは、暗号化されたパートナードメイン固有の識別子を受信することに基づいて選択される。ネットワークインターフェースは、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンを受信することができる。システムは、パートナードメインのリスト内の各パートナードメインのための第1の認証トークンと、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンとの比較に基づいて、コンテンツアイテムを表示するかどうかを決定する監査エンジンを含むことができる。
【０００４】
本開示の少なくとも1つの態様によれば、データ交換を制御する方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリストを受信するステップを含むことができる。方法は、パートナードメインのリスト内のパートナードメインごとに、クライアントデバイスによってパートナードメイン固有の識別子を生成するステップと、クライアントデバイスによって、対応するパートナードメインの暗号化キーを使用して、パートナードメイン固有の識別子と第1の認証トークンとを暗号化するステップとを含むことができる。方法は、クライアントデバイスによって、コンテンツプロバイダに、パートナードメインのリスト内の各パートナードメインのための暗号化されたパートナードメイン固有の識別子を送信するステップを含むことができる。方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインからのデータに基づいてコンテンツプロバイダによって選択されたコンテンツアイテムを受信するステップを含むことができる。パートナードメインのリスト内の各パートナードメインからのデータは、暗号化されたパートナードメイン固有の識別子を受信することに基づいて選択される。方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンを受信するステップを含むことができる。方法は、クライアントデバイスによって、パートナードメインのリスト内の各パートナードメインのための第1の認証トークンと、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンとの比較に基づいてコンテンツアイテムを表示するステップを含むことができる。
【０００５】
これらの実装形態は、本開示の範囲を限定または定義するためではなく、それを理解するのを助けるために言及される。以下の利点のうちの1つまたは複数を実現するために、特定の実装形態が開発され得る。従来のブラウザクッキーを暗号化されたコンテンツプロバイダ固有の識別子に置き換えることによって、クライアントデバイスのユーザは、パートナーコンテンツプロバイダ間のデータ交換を含むプライベートデータを、そのような交換を識別する透過的な監査ログを用いてより大きく制御する。暗号化されたコンテンツプロバイダ固有の識別子は、加えて、クライアントデバイスがコンテンツの変更を自動的に制御すること、および、特に、特定のサードパーティが表示のためにコンテンツを変更することを許可されるかどうかを制御することを可能にする。さらに、クライアントデバイスにおいてクッキー生成および暗号化を活用することによって、コンテンツプロバイダにおける大きいクッキーマッチングテーブルからのリソース消費が回避され、効率が向上する。クッキーマッチングのための追跡ピクセルおよび二重ラウンドトリップ通信の排除はまた、効率を向上させ、ユーザプライバシーをより良好に保護し、クライアントブラウザまたはアプリケーションが、より少ないバッテリおよびプロセッサの利用率で、ページをより高速にレンダリングすることを可能にする。
【０００６】
1つまたは複数の実装形態の詳細は、添付図面および以下の説明において記載されている。本開示の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】いくつかの実装形態による、データ交換のためのネットワークおよびデバイス環境のブロック図である。
【図２】いくつかの実装形態による、図1に示すネットワークおよびデバイス環境内で使用するためのコンピューティングデバイスの実装形態のブロック図である。
【図３】いくつかの実装形態による、クライアントデバイスがコンテンツ要求をフィルタリングするためのフロー図である。
【図４】いくつかの実装形態による、自己強制許可(self-enforcing permission)を用いるデータ交換のための方法のフローチャートである。
【図５】いくつかの実装形態による、自己強制許可を用いるデータ交換のための方法のフローチャートである。
【発明を実施するための形態】
【０００８】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【０００９】
ブラウザクッキー、または、デバイス、ユーザ、もしくはセッション固有の短い識別子が、ウェブページ発行者、広告者、または他のそのようなエンティティなどのコンテンツプロバイダに対してデバイス、ユーザ、またはセッションを一意に(または半一意に)識別するために使用される。これらのクッキーは、典型的には、最初のセッションまたはログインプロセス中、コンテンツプロバイダまたは他のデバイスによって生成される。クッキーは、クライアントデバイスのブラウザまたは他のアプリケーションからの後続の要求において提供され得る。発行者は、次いで、各要求を同じ識別子(暗黙的には、同じデバイス、ユーザ、またはセッション)と関連付けることができ、コンテンツ選択のカスタマイズを可能にする。
【００１０】
しかしながら、典型的なブラウザクッキーは、いくつかの重大な欠点を有する。ウェブサイト内に埋め込みコンテンツを提供するサードパーティのコンテンツプロバイダは、これらのサードパーティによって識別または追跡されていることをユーザが必ずしも意識することなく、ブラウザを追跡するためにクッキーを提供することができる(例えば、ブラウザアドレスバーにおいて示されたアドレスは、メインページのソースのみを識別することができ、埋め込まれたコンテンツを必ずしも識別できるとは限らないため)。したがって、ユーザが潜在的なプライバシーの問題を識別し、ユーザの個人情報のプライバシーを制御することが困難である可能性がある。セカンドパーティに提供されるとデータがどのように制御されるかを強制することは、技術的課題であるので、プライバシー制御は、技術的に困難である可能性がある。例えば、セカンドパーティは、データの元のプロバイダからの同意なしに、サードパーティとデータを共有することができる。
【００１１】
本明細書で説明するシステムおよび方法は、カスタマイズされたコンテンツ選択を可能にしながら、ユーザセキュリティおよびプライバシーを向上させることができる。加えて、本システムおよび方法は、帯域幅および他の計算リソースを節約するために、コンテンツを選択またはカスタマイズするために必要な送信の数を減らすことができる。コンテンツのカスタマイズは、複数の異なるドメインからのデータに基づいて実行され得る。ドメインの各々は、クライアントデバイスのプリファレンスが記憶され、後に取得されることを可能にするクッキーをクライアントデバイスに提供することができる。複数の異なるドメインからのプリファレンスは、コンテンツの選択およびカスタマイズにおいて使用され得る。本明細書で説明するシステムおよび方法は、コンテンツ要求をフィルタリング、制御、または防止することができる。サードパーティへの選択されたコンテンツ要求をフィルタリングすることは、ユーザがサードパーティによるコンテンツのカスタマイズを制御することを可能にする。しかしながら、追加のコンテンツ要求を制限することは、送信帯域幅を節約し、ユーザプライバシーも向上させる。
【００１２】
本明細書で論じるシステムおよび方法は、「読み取り専用クッキー」(ROC)と呼ばれ得る、安全でユーザ透過で高効率なコンテンツプロバイダ固有の識別子で、従来のブラウザクッキーの代わりを提供する。ROCは、クライアントデバイスによって生成され、サードパーティドメイン(例えば、コンテンツプロバイダ)の公開キーを用いて暗号化され得る。暗号化されたROCは、eROCと呼ばれ得る。ROCの暗号化は、意図しないサードパーティドメインがROCを読み取るのを防止する。
【００１３】
ROCの生成は、サードパーティのドメイン内の所定のアドレスから検索可能な準拠利用規約(ToS)を有するサードパーティ、(例えば、ユーザが明示的に同意した)ホワイトリスト上にあるサードパーティ、および/または、(例えば、ユーザが明示的に同意を拒否した)ブラックリスト上にないサードパーティに対してのみ識別子が作成されるように、ユーザポリシーによって制御され得る。
【００１４】
ROCが生成されると、ToS合意における違反を検出することが困難になる可能性がある。例えば、サードパーティは、有効なToS合意を有する場合があるが、サードパーティは、ToSに違反して第2のサードパーティのROCまたはeROCをキャッシュする場合がある。別の例において、ホワイトリストに記載されたサードパーティは、ブラックリストに記載されている第2のサードパーティとROCを共有する可能性がある。本システムおよび方法は、プライバシー違反を識別し、違反するサードパーティドメインのその後のROC生成を防止することができる。加えて、システムおよび方法は、カスタマイズされたコンテンツの選択に追加されないサードパーティのためのROC生成を防止し、ユーザのプライバシーを向上させることができる。
【００１５】
例えば、クライアントデバイスのためのコンテンツを選択するとき、コンテンツプロバイダは、1つまたは複数のパートナードメインと対話してもよい。パートナードメインは、コンテンツの選択またはカスタマイズのための分析または他のデータを提供することができる。パートナーからのデータを要求するために、ToS合意の下で、コンテンツプロバイダは、ブラウザに関するデータをパートナードメインと共有するための許可を要求することを要求され得る。本明細書で説明するシステムおよび方法は、ToSのエンジニアリングベースの強制を提供することができる自己強制ROCを提供することができる。自己強制ROCは、例えば、コンテンツプロバイダが後で使用するためにROCをキャッシュすることを防止することができる。本明細書で説明するシステムおよび方法は、一回限り使用の認証トークンを含むeROCを生成することができる。認証トークンは、コンテンツプロバイダとパートナードメインとの間のデータ共有を一時的に許可することができる。
【００１６】
コンテンツ要求に応答してコンテンツアイテムが返されると、ブラウザは、コンテンツアイテムとともにコンテンツプロバイダによって返された認証トークンを監査することができる。ブラウザは、コンテンツアイテムが、キャッシュされたROCを使用して選択されたか、キャッシュされたeROCを使用して選択されたか、またはToSに違反して選択されたかを判定することができる。コンテンツアイテムが監査プロセスに失敗した場合、ブラウザは、返されたコンテンツを表示しないことを決定することができる。
【００１７】
図1は、いくつかの実装形態による、データ交換のためのネットワークおよびデバイス環境50のブロック図を示す。図示のように、クライアントデバイス100は、ネットワーク106、106'を介して、1つまたは複数のコンテンツプロバイダ102、および、全体としてパートナーデバイス104と呼ばれ得る1つまたは複数のパートナーデバイス104(1)〜104(N)と通信することができる。ネットワーク106、106'は、集合的にネットワーク106と呼ばれ得る。
【００１８】
ネットワークおよびデバイス環境50は、1つまたは複数のクライアントデバイス100を含むことができる。クライアントデバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルコンピュータ、タブレットコンピュータ、ウェアラブルコンピュータ、埋め込みコンピュータ、スマートテレビ、コンソール、インターネットオブシングス(IoT)デバイスもしくはスマート家電、または任意の他のタイプおよび形態のコンピューティングデバイスを含む、任意のタイプおよび形態のコンピューティングデバイスを含むことができる。クライアントデバイス100は、ウェブブラウザ、ソーシャルメディアアプリケーション、ビデオゲーム、または他のそのようなアプリケーションなどのコンテンツを要求するためにアプリケーションを実行することができる。クライアントデバイス100は、コンテンツを要求することができ、コンテンツプロバイダ102またはパートナーデバイス104が、対応するデバイス、またはクライアントデバイス100のクライアントのためにカスタマイズされたコンテンツを選択するために使用され得るように、デバイス識別子、クッキー、または他のそのような識別子を提供することができる。
【００１９】
ネットワークおよびデバイス環境50は、1つまたは複数のネットワーク106、106'を含むことができる。ネットワーク106、106'は、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、衛星ネットワーク、ケーブルネットワーク、ブロードバンドネットワーク、光ファイバネットワーク、マイクロ波ネットワーク、セルラネットワーク、ワイヤレスネットワーク、または、これらもしくは他のそのようなネットワークの任意の組合せを含む、任意のタイプおよび形態のネットワークを含むことができる。ネットワーク106、106'は、同じタイプのネットワークまたは異なるタイプであり得る。ネットワーク106、106'は、同じネットワークの異なる部分であり得る。ネットワーク106、106'は、ゲートウェイ、モデム、ファイアウォール、ルータ、スイッチなどを含む、複数の追加のデバイスを含むことができる。ネットワーク106、106'は、ネットワーク106、106'内でデータを受信および/または送信するように構成された任意の数のコンピューティングデバイス(例えば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含むことができる。ネットワーク106、106'は、任意の数の有線および/またはワイヤレス接続を含むことができる。クライアントデバイス100は、ネットワーク106、106'内の他のコンピューティングデバイスに(例えば、光ファイバケーブル、CAT5ケーブルなどを介して)配線で接続されたトランシーバと(例えば、Wi-Fi、セルラ、無線などを介して)ワイヤレスで通信することができる。いくつかの実装形態において、ネットワーク106、106'は、単一の物理マシンによって実行される複数の仮想マシン間の仮想ネットワークなどの仮想ネットワーク、または、物理的に移動可能な媒体を介するデータのオフライン転送などの抽象ネットワーク(例えば、テープ媒体、CD-ROM、フラッシュメディア、外部ハードドライブ、フロッピーディスクなどを介してデータを転送するスニーカーネット)であってもよい。
【００２０】
ネットワークおよびデバイス環境50は、1つまたは複数のコンテンツプロバイダ102を含むことができる。コンテンツプロバイダ102は、コンテンツを選択することができる。コンテンツプロバイダ102は、パートナーデバイス104のプールからコンテンツを選択または受信することができる。例えば、コンテンツプロバイダ102は、クライアントデバイス100からコンテンツに対する要求を受信することができ、パートナーデバイス104の中から、要求されたコンテンツを提供するパートナーデバイス104を選択することができる。選択は、負荷分散アルゴリズム、オークションアルゴリズム(例えば、プロバイダがコンテンツを提供する機会に入札する)などを介して行われ得る。したがって、コンテンツプロバイダ102は、交換サーバ、負荷分散装置、オークションプロバイダ、または任意の他のそのような用語で呼ばれ得る。ネットワーク106、106'の間に示されているが、コンテンツプロバイダ102は、パートナーデバイス104と同じネットワークセグメント上に配置され得る。
【００２１】
ネットワークおよびデバイス環境50は、1つまたは複数のパートナーデバイス104を含むことができる。パートナーデバイス104は、クライアントデバイス100の識別子に基づいて、ネットワーク106、106'を介して、クライアントデバイス100に提供するコンテンツを選択することができる。識別子は、本明細書で説明するROCのうちの1つであり得る。パートナーデバイス104は、コンテンツプロバイダ102または他のパートナーデバイス104によるコンテンツの選択もサポートすることができる。例えば、パートナーデバイス104は、クライアントデバイス100のためのカスタマイズまたは調整されたコンテンツの選択を可能にすることができる分析、設定、コンテンツ、および他の情報をコンテンツプロバイダ102および他のパートナーデバイス104に提供することができる。パートナーデバイス104がコンテンツプロバイダ102または他のパートナーデバイス104に提供する分析、設定、コンテンツ、および他の情報は、一般に、データと呼ばれ得る。
【００２２】
コンテンツプロバイダ102およびパートナーデバイス104は、カスタマイズされたコンテンツをクライアントデバイス100に提供するために、ROCなどのクッキーを利用することができる。例えば、コンテンツに対する要求を発行するとき、クライアントデバイス100は、デバイス識別子またはクッキーをコンテンツプロバイダ102に提供することができる。クライアントのプライバシーを維持するために、クライアントデバイス100は、コンテンツプロバイダ102およびパートナーデバイス104の各々に対して、ROCなどのプライベートクッキーを生成することができる。コンテンツプロバイダ102によるクッキーのキャッシュを防止するために、パートナーデバイスのクッキーは、それぞれのパートナーデバイス104またはコンテンツプロバイダ102によってクッキーから抽出され得るだけの一意のトークンを含むことができる。一意のトークンは、認証トークンと呼ばれ得る。認証トークンは、ランダムなテキスト文字列または符号化された文字列を含むことができる。符号化された文字列は、タイムスタンプ、公開キー、一意の識別子、ノンス、ソルト、ドメイン識別子、またはそれらの組合せの組合せを含むことができる。パートナーデバイス104は、データまたはコンテンツをコンテンツプロバイダ102に返すときに認証トークンを返すことができる。認証トークンは、次いで、パートナーデバイス104からのデータが現在の要求に応答して選択され、キャッシュされたクッキーに応答して生成されなかった証拠としてクライアントデバイス100に転送される。
【００２３】
コンテンツプロバイダ102およびパートナーデバイス104は、デスクトップコンピュータ、サーバ、ワークステーション、ラップトップコンピュータ、ポータブルコンピュータ、埋め込みコンピュータ、または任意の他のタイプおよび形態のコンピューティングデバイスを含む、任意のタイプおよび形態のコンピューティングデバイスを含むことができる。コンテンツプロバイダ102およびパートナーデバイス104は、1つまたは複数の物理的コンピューティングデバイスによって実行される仮想マシンを含むことができ、サーバファーム、クラスタ、またはデバイスのクラウドとして構成され得る。
【００２４】
図2は、ネットワークおよびデバイス環境50内で使用するためのコンピューティングデバイスの実装形態のブロック図を示す。上記で説明したように、ネットワークおよびデバイス環境50は、コンテンツプロバイダ102を介してコンテンツを受信することができる1つまたは複数のクライアントデバイス100を含むことができる。コンテンツプロバイダ102は、1つまたは複数のパートナーデバイス104からコンテンツまたは他のデータを受信することができる。
【００２５】
上記で論じたように、クライアントデバイス100は、クライアント、デバイス、クライアントデバイス、コンピューティングデバイス、ユーザデバイス、または任意の他のそのような用語として様々に呼ばれ得、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ビデオゲームコンソール、スマートテレビもしくはセットトップボックス、サーバ、ワークステーション、または、ネットワーク106を介して通信することができる任意の他のタイプおよび形態のコンピューティングデバイスであり得る。いくつかの実装形態において、クライアントデバイス100は、ウェブブラウザ、メールクライアント、ビデオプレーヤ、音楽プレーヤ、ビデオゲーム、または任意の他のそのようなアプリケーションなどの、アプリケーション、サービス、サーバ、デーモン、ルーチン、または、ネットワーク106を介して通信するための他の実行可能ロジックを実行することができる。そのようなアプリケーションは、コマンドラインインターフェース、グラフィカルユーザインターフェース、またはこれらもしくは他のインターフェースの任意の組合せを含むことができる。クライアントデバイスがスマートテレビまたはセットトップボックスである実装形態において、クライアントデバイスは、地上波放送、衛星放送、またはケーブル放送などの第1のインターフェースを介してコンテンツを受信することができ、イーサネットまたはWi-Fiインターフェースなどの、ネットワーク106を介する第2のインターフェースを介して視聴者測定サーバと通信することができる。他の実装形態において、クライアントデバイス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(「Gigabit」)を含むイーサネット、802.11a、802.11b、802.11g、802.11n、もしくは802.11acなどの任意の種類の802.11ワイヤレス、CDMA、LTE、3G、もしくは4Gセルラを含むセルラ、Bluetoothもしくは他の短距離ワイヤレス接続、または、ネットワーク106と通信するためのこれらまたは他のインターフェースの任意の組合せを含む、任意のタイプおよび形態のインターフェースを含むことができる。クライアントデバイス100は、様々なタイプの複数のネットワークインターフェース202を含むことができ、様々なサブネットワークを介して様々なネットワーク106またはインターネットなどのネットワーク106への接続を可能にする。
【００２９】
クライアントデバイス200は、1つまたは複数のユーザI/Oインターフェース204を含むことができる。I/Oインターフェース204は、感知情報を生成することによってユーザにデータを伝達する(例えば、ディスプレイ上の視覚化、1つまたは複数の音、触覚フィードバックなど)、および/または、ユーザからの受信された感知情報を電子信号に変換する(例えば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)、任意の電子デバイスであり得、またはそれらに接続され得る。1つまたは複数のユーザインターフェースデバイスは、様々な実装形態によれば、内蔵ディスプレイ、タッチスクリーン、マイクロフォンなどのように、クライアントデバイス100のハウジングの内部にあり得、または、クライアントデバイス100に接続されたモニタ、クライアントデバイス100に接続されたスピーカなどのように、クライアントデバイス100のハウジングの外部にあり得る。
【００３０】
クライアントデバイス100は、メモリ206内にアプリケーション208を含むことができる。クライアントデバイス100は、プロセッサ200を用いてアプリケーション208を実行することができる。アプリケーション208は、コンテンツを受信し、クライアントデバイスのI/Oインターフェース204(例えば、ディスプレイ、スピーカ)を介してコンテンツを表示または他の方法で出力するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、または他の実行可能ロジックであり得る。アプリケーション208は、ウェブブラウザであり得る。アプリケーション208は、ネットワークインターフェース202を介して受信されたおよび/またはプロセッサ200によってローカルに生成されたコンテンツを表示するための機能を含むことができる。いくつかの実装形態において、アプリケーション208は、メディアプレーヤであり得、または、ウェブブラウザ内のプラグインもしくはネイティブメディアプレーヤなどの埋め込みメディアプレーヤを含むことができる。
【００３１】
クライアント100は、デバイス識別子210を含むことができ、またはデバイス識別子210を用いて識別され得る。デバイス識別子210は、英数字文字列、データ文字列、シリアル番号、メディアアクセス制御(MAC)アドレス、インターネットプロトコル(IP)アドレス、ユーザ名もしくはアカウント名、グローバル一意識別子(GUID)、クッキー、乱数もしくは擬似乱数、または、これらもしくは他の識別子の組合せを含む任意の他のタイプおよび形態の識別子であり得る。いくつかの実装形態において、デバイス識別子210は、製造者シリアル番号またはMACアドレスのように、デバイスに固定され得、またはデバイス内に事前構成され得る。デバイス識別子210は、コンテンツプロバイダ、ストリーミングサーバ、アプリケーション208、ユーザ、または他のエンティティによって動的に設定され得る。例えば、デバイス識別子は、クッキーまたはユーザ名内に設定および記憶され得る。
【００３２】
いくつかの実装形態において、コンテンツプロバイダ102またはパートナーデバイス104との通信ごとに、一意のまたは新しいデバイス識別子210が設定され得る。いくつかの実装形態において、デバイス識別子210は、静的、時間ベース(例えば、定期的に、毎時、毎日、毎週変更される)、または間隔ベース(例えば、クライアントデバイスの再起動時またはサービスへのログイン時に変更される)であり得る。
【００３３】
いくつかの実装形態において、デバイス識別子210は、1つまたは複数の他のデバイス識別子210(例えば、モバイルデバイスのためのデバイス識別子、ホームコンピュータのためのデバイス識別子など)に関連付けられ得る。デバイス識別子210は、コンテンツプロバイダ102またはパートナーデバイス104によって提供され得る。いくつかの実装形態において、クライアント100は、コンテンツプロバイダ102またはパートナーデバイス104からのデバイス識別子210を要求することができ、コンテンツまたは測定データに対する要求に関連して、デバイス識別子210をコンテンツプロバイダ102またはパートナーデバイス104に送信することができる。
【００３４】
クライアントデバイス100は、暗号器214を含むことができる。暗号器214は、ROCおよびeROCを生成するための任意のアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、または他の実行可能ロジックであり得る。暗号器214は、入力に基づいてハッシュ結果を計算するために使用され得る。ハッシュ結果は、ROCおよびeROC内で(またはROCおよびeROCとして)使用され得る。暗号器214は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを含むことができる。いくつかの実装形態において、暗号器214は、暗号化モジュール、トラステッドプラットフォームモジュール(TPM)。ASIC、または、暗号化および暗号ハッシュ計算を実行するための任意の他のタイプおよび形態の回路を含むことができる。
【００３５】
上記で説明したように、クライアントデバイス100は、従来のブラウザクッキーを安全なユーザ透過ROCで置き換えることができる。暗号器214は、ROCを生成することができる。暗号器214は、次いで、暗号化されたROC(eROC)を生成するために、コンテンツプロバイダ102、パートナーデバイス104、または他のサードパーティの公開キーを用いてROCを暗号化することができる。eROCの使用は、eROC内に含まれる識別子を使用する意図されないパーティを防ぐことができる。例えば、公開キーに関連付けられた秘密キーの所有者のみが、識別子にアクセスするためにeROCを復号することができる。ROCを暗号化することは、クライアントデバイス100がパートナーデバイス104に向けられたeROCをコンテンツプロバイダ102に送信することを可能にし、コンテンツプロバイダ102は、eROCをそれぞれのパートナーデバイス104に転送することができる。eROCは、(パートナーデバイス104の公開キーではなく)コンテンツプロバイダの公開キーを用いて暗号化されないので、コンテンツプロバイダ102は、パートナーデバイス104に向けられたeROC内に含まれる識別子を使用またはそれにアクセスすることができない。
【００３６】
コンテンツプロバイダ固有の識別子の生成は、準拠利用規約(ToS)を有するコンテンツプロバイダに対して、(例えば、ユーザが明示的に同意した)ホワイトリスト上にあるコンテンツプロバイダから、および/または、(例えば、ユーザが明示的に同意を拒否した)ブラックリスト上にないコンテンツプロバイダからのみ識別子が作成されるように、ユーザポリシーによって制御され得る。いくつかの実装形態において、ドメイン内の所定のアドレスから取得可能であり、取得されたToSのコンテンツが元のToSから変更されていない場合、ToSは、準拠することができる。
【００３７】
暗号器214は、暗号ハッシュを使用してROCおよびeROCを生成することができる。暗号ハッシュは、MD5およびSHA256などの任意の適切なハッシュアルゴリズムを含むことができる。暗号器214は、ブラウザ固有の、アプリケーション固有の、デバイス固有の、またはセッション固有のプライベート識別子(例えば、デバイスの他のユーザとは別の、特定のユーザのためのブラウザのインスタンスに固有の識別子)と、受信者(例えば、コンテンツプロバイダ102またはパートナーデバイス104)のドメイン名またはアドレスを含むことができる入力をハッシュすることによってROCを生成することができる。
【００３８】
いくつかの実装形態において、追加のソルトを提供するために、ハッシュ入力は、ROCに関する作成時間または有効期限も含んでもよい。ハッシュ入力の複雑さを同様に増加させるために、デバイスタイプもしくはシリアル番号、クロックスキュー時間、ハードウェア識別子、または任意の他のそのようなデータなどの他のエントロピー源が使用されてもよい。いくつかの実装形態において、「有効期限」は、クライアントによる自動再生成を許可する、コンテンツプロバイダ固有の識別子が期限切れになる前の数週間、数ヶ月、または数年などの細かい値であってもよい。
【００３９】
暗号器214は、正当な所有者または意図された受信者(例えば、コンテンツプロバイダ102またはパートナーデバイス104)の公開キーを介してROCを暗号化することによってeROCを生成することができる。暗号器214は、最初にROCを作成タイムスタンプ、ノンスと連結することによってeROCを生成し、結果として生じるeROCが単一のドメインであっても非常に変化するように、事前に受信者の公開キーを用いて連結結果を暗号化することができる。
【００４０】
クライアントデバイス100は、ノンスを認証トークンとして使用することができる。暗号器214は、暗号器214がeROCを生成するたびに新しい認証トークンを生成することができる。暗号器214は、要求ドメインと、受信者またはパートナードメインと、タイムスタンプと、プライベート識別子とを連結することによって、認証トークンを生成することができる。プライベート識別子は、ドメイン固有の識別子であり得る。暗号器214は、ノンスを形成するために、連結された文字列を暗号化することができる。暗号器214は、ノンスを形成するために、連結された文字列を、対称キー暗号化を用いて暗号化することができる。対称キー暗号化は、とりわけ、AES暗号化またはAESベースのGCM暗号化を含むことができる。いくつかの実装形態において、意図された受信者(例えば、コンテンツプロバイダ102またはパートナーデバイス104)は、プライベート識別子と認証トークンとを復号および抽出することができる。コンテンツプロバイダ102またはパートナーデバイス104は、コンテンツを選択またはカスタマイズするためにプライベート識別子を使用することができる。
【００４１】
クライアントデバイス100は、監査ログ216を含むことができる。監査ログ216は、メモリ206内に記憶されたデータベースであり得る。暗号器214が認証トークンを生成すると、暗号器214は、各認証トークンをキー値ペアの値としてルックアップテーブル内に記憶することができる。キー値ペアのキーは、要求識別子であり得る。例えば、コンテンツ要求に応答して、クライアントデバイス100は、複数のパートナーデバイス104とのデータ共有を開始するためにコンテンツプロバイダ102から要求を受信することができる。暗号器214は、パートナーデバイス104の各々に対してeROCを生成し、要求識別子にキー付けされた値として認証トークンを監査ログ216内に記憶することができる。図3および図4に関して説明したように、とりわけ、監査エンジン212は、監査ログ216において返された認証トークンとの一致を見つける監査エンジン212によって示されるように、パートナーデバイス104の各々が有効な認証トークンを返したかどうかを判定することによって、返されたコンテンツを表示する前にコンテンツ要求を監査することができる。監査ログ216は、返されたコンテンツを選択する際のパートナーデバイスの相対的な寄与の指標を提供する別のルックアップテーブルも含むことができる。監査エンジン212は、パートナーデバイス104の識別子に関連して寄与の指標を保存することができる。
【００４２】
クライアントデバイス100は、監査エンジン212を実行することができる。監査エンジン212は、返されたコンテンツ要求に対する応答を監査するためのアプリケーション、サービス、デーモン、ルーチン、または他の実行可能ロジックを含むことができる。監査エンジン212は、コンテンツプロバイダ102またはパートナーデバイス104が、例えば、eROCまたはROCをキャッシュすることによってToSに違反しているかどうかを判定するために、監査ログ216を監査することができる。
【００４３】
上記で説明したように、コンテンツ要求をコンテンツプロバイダ102に送信することに応答して、コンテンツプロバイダ102は、コンテンツの選択またはカスタマイズのために1つまたは複数のパートナーデバイス104と情報またはデータを共有する許可を要求することができる。クライアントデバイス100は、パートナーデバイス104の各々に対してそれぞれのeROCを生成することによって、要求を承認することができる。各eROCは、暗号器214が監査ログ216内に記憶することができる認証トークンを含むことができる。監査ログ216は、複数の行を含むことができる。行の各々は、認証トークンとして使用され得るランダムに生成されたキーを含むことができる。それぞれの行の各々に保存されるデータは、認証トークンを用いてまたはその中に符号化されたデータであり得る。コンテンツプロバイダ102がコンテンツアイテムでコンテンツ要求に応答するとき、コンテンツプロバイダ102は、認証トークンをパートナーデバイス104からクライアントデバイス100に転送することができる。eROCは、パートナーデバイスの公開キーを用いて符号化されているので、パートナーデバイス104(コンテンツプロバイダ102ではない)のみがeROCから認証トークンを抽出することができる。監査エンジン212は、監査ログ216にアクセスし、認証トークンが最新のコンテンツ要求に対応するかどうかを判定することによって、認証トークンが有効であるかどうかを判定することができる。いくつかの実装形態において、上記で説明したように、認証トークン内にタイムスタンプが含まれるか、または埋め込まれ得る。監査エンジン212は、認証トークンに対して所定のタイムアウト期間を設定することができる。返された認証トークンのタイムスタンプがタイムスタンプ期間外である場合、監査エンジン212は、認証トークンが無効であると判定することができる。認証トークンが有効ではなく、例えば、eROCがキャッシュされたことを示す場合、監査エンジン212は、返されたコンテンツを表示しないようにアプリケーション208に指示することができる。いくつかの実装形態において、認証トークンは、「自己完結型」であり得る。例えば、認証トークンは、クライアントデバイス100(または他のデバイス)が認証トークンを認証するために必
要なデータを含むことができる。例えば、要求、パートナードメイン、タイムスタンプ、または他のデータの指標が、クライアントデバイス100の秘密キーを用いて暗号化され、認証トークン内に含まれ得る。認証トークンを受信すると、クライアントデバイス100は、暗号化されたデータを取得するために認証トークンを復号し、認証トークンを認証するために復号されたデータを使用することができる。
【００４４】
コンテンツとともに、コンテンツプロバイダ102は、コンテンツの選択における各パートナーデバイス104の寄与を含むデータ構造を送信することもできる。データ構造は、各パートナーデバイス104(キー)の寄与(値)を示すキー値ペアを含むことができる。コンテンツアイテムの選択に対する所与のパートナーデバイス104の寄与は、パートナーデバイス104とコンテンツプロバイダ102との間で交渉され得る。パートナーデバイス104が所定の数のコンテンツ要求に関与した後、監査エンジン212は、コンテンツを選択またはカスタマイズすることへのパートナーデバイス104の平均寄与を計算することができる。将来のコンテンツ要求に応答して、パートナーデバイスの寄与が所定のしきい値を下回る場合、暗号器214は、パートナーデバイス104のためのeROCを生成しなくてもよい。
【００４５】
ネットワークおよびデバイス環境50は、コンテンツプロバイダ102を含むことができる。クライアントデバイス100と同様に、コンテンツプロバイダ102は、1つまたは複数のプロセッサ200と、メモリまたは記憶デバイス206と、ネットワークインターフェース202と、インターフェース204とを含むことができる。いくつかの実装形態において、コンテンツプロバイダ102は、ユーザインターフェースを含まないが、ネットワーク106を介してクライアント100またはパートナーデバイス104と通信することができるヘッドレスサーバであり得る。いくつかの実装形態において、メモリ206は、FTPサーバ、ウェブサーバ、メールサーバ、ファイル共有サーバ、ピアツーピアサーバ、または、クライアントがコンテンツプロバイダにおけるコンテンツにアクセスすることを可能にするためにコンテンツもしくはリダイレクトコマンドを送達するための他のそのようなアプリケーションを含む、サーバのプロセッサ200によって実行するための1つまたは複数のアプリケーションを記憶することができる。
【００４６】
コンテンツプロバイダ102は、クライアントデバイス100からのコンテンツ要求に対するコンテンツ応答を直接または間接的に選択することができる。例えば、コンテンツプロバイダ102は、コンテンツプロバイダ102のコンテンツデータベース234からコンテンツアイテムを選択することによって、コンテンツ要求に直接応答することができる。コンテンツプロバイダ102は、コンテンツを選択することができる1つもしくは複数のパートナーデバイス104に要求を転送することによって、または、コンテンツプロバイダ102がカスタマイズされたコンテンツを選択することを可能にする分析および他のデータを受信することによって、コンテンツ要求に間接的に応答することができる。
【００４７】
コンテンツプロバイダ102は、パートナーデバイスのリストからパートナーデバイス104を選択することができる。コンテンツプロバイダ102は、ラウンドロビンもしくは他の負荷分散システムを介して、またはアクションベースのシステムを介してパートナーデバイス104を選択することができる。1つまたは複数のパートナーデバイス104が選択されると、コンテンツプロバイダ102は、パートナーデバイス104を要求されたコンテンツの選択に含める許可に対する要求を送信することができる。いくつかの実装形態において、要求は、コンテンツがレンダリングされるウェブページまたは他のアプリケーション内に含まれ得る。例えば、コンテンツがレンダリングされるコンテンツスロットは、コンテンツアイテムの履行において使用されるパートナーデバイス104を識別する複数のタグを含むことができる。パートナーデバイス104の指標がウェブページのヘッダ内に含まれ得る。許可に対する要求に応答して、コンテンツプロバイダ102は、クライアントデバイス100から、クライアントデバイス100がコンテンツアイテムの選択に関与することを許可する各パートナーデバイス104に関するeROCを受信することができる。
【００４８】
コンテンツプロバイダ102は、応答テーブル220を含むことができる。応答テーブル220は、パートナーデバイス104から受信した認証トークンを記憶するためのデータベース、フラットファイル、インデックス付きファイル、または他のタイプおよび形態のデータ構造を含むことができる。本明細書で説明するように、eROCは、認証トークンを含むことができる。パートナーデバイスがコンテンツまたは他のデータをコンテンツプロバイダ102に提供するとき、パートナーデバイス104は、認証トークンのインスタンスをコンテンツプロバイダ102に提供することができる。コンテンツプロバイダ102は、認証トークンを応答テーブル220に記憶することができる。認証トークンに関連して、コンテンツプロバイダ102は、コンテンツプロバイダ102がクライアントデバイス100に提供するコンテンツの選択に対するパートナーデバイスの寄与の指標を記憶することもできる。コンテンツプロバイダ102がコンテンツをクライアントデバイス100に提供するとき、コンテンツプロバイダ102は、応答テーブル220のインスタンスを提供することもできる。クライアントデバイス100に送信される応答テーブル220のインスタンスは、キーとしての認証トークンと、応答テーブル220内に値として記憶されたパートナーデバイスの寄与とを有するキー値ペアを含むことができる。
【００４９】
また、図2に示すように、ネットワークおよびデバイス環境50は、1つまたは複数のパートナーデバイス104を含むことができる。パートナーデバイス104は、ネットワーク106に接続され、コンテンツ要求に応答してコンテンツを選択するかまたはコンテンツの選択を可能にするように構成された1つまたは複数のコンピューティングデバイスを含むことができる。パートナーデバイス104は、コンテンツアイテムをクライアントデバイス100に直接またはコンテンツプロバイダ102を介して提供することができる。パートナーデバイス104は、コンテンツプロバイダ、サーバ、ウェブサーバ、データサーバ、発行者、サービスプロバイダ、分析システム、または他のそのようなデバイスであり得る。パートナーデバイス104は、サーバファームまたはクラウドとして構成された複数のコンピューティングデバイスを含むことができ、ルータ、負荷分散装置、ネットワークアドレス変換器、ファイアウォール、または他のそのようなデバイスを含むことができる。パートナーデバイス104は、コンピュータサーバ(例えば、FTPサーバ、ファイル共有サーバ、ウェブサーバなど)またはサーバの組合せ(例えば、データセンタ、クラウドコンピューティングプラットフォームなど)であり得る。パートナーデバイス104は、テキスト、画像、ビデオ、オーディオ、マルチメディア、もしくは他のデータ、またはこれらの任意の組合せを含む、任意のタイプおよび形態のコンテンツを提供することができる。コンテンツは、ライブメディアコンテンツ、事前に記録されたメディアコンテンツ、レンダリングされたコンテンツ、映画、テレビ番組、ポッドキャスト、ビデオブログ、ビデオゲームもしくは他の対話型コンテンツ、任意のフォーマットにおける広告、ソーシャルメディア、または任意の他のタイプおよび形態のコンテンツを含むことができる。
【００５０】
パートナーデバイス104は、1つもしくは複数のプロセッサ200、ネットワークインターフェース202、I/Oインターフェース204、および/またはメモリデバイス206を含むことができる。パートナーデバイス104は、物理デバイスによって実行される仮想マシンを含む、複数のコンピューティングデバイスを含むことができる。例えば、コンテンツプロバイダ104は、1つまたは複数の物理デバイスによって実行される複数の仮想マシンを備えることができ、各々のそのような仮想マシンは、パートナーデバイス(例えば、ウェブサーバ、ファイルサーバ、ストリーミングメディアサーバなど)を実行し、ネットワーク記憶デバイス、RAID記憶デバイス、または他のそのようなデバイスなどの、1つまたは複数の記憶デバイスと通信する。
【００５１】
パートナーデバイス104およびコンテンツプロバイダ102は、コンテンツセレクタ230を含むことができる。コンテンツセレクタ230は、クライアントデバイス100に送達するためにコンテンツストレージ234からコンテンツを選択するためのアプリケーション、サービス、サーバ、デーモン、ルーチン、または他の実行可能ロジックを含むことができる。コンテンツセレクタ230は、識別子データベース232内に記憶されたクライアントに関する情報に基づいて、クライアントデバイス100に送達するためのコンテンツを選択することができる。例えば、データベース232は、クライアントデバイスの能力(例えば、画面解像度または向き、色深度、帯域幅など)に関する情報、または、カスタマイズされたコンテンツの選択のための任意の他のそのような情報を含むことができる。データベース232内に記憶された情報は、ROCによって、または、ROC内に含まれるか、ROCから導出されるか、もしくはROCに他の方法で関連付けられたプライベート識別子によってインデックス付けされ得る。
【００５２】
例えば、クライアントデバイス100からeROCを受信すると、コンテンツプロバイダ102およびパートナーデバイス104は、ROCを回復するためにeROCを復号することができる。コンテンツセレクタ230は、ROCを介してデータベース232内のクライアントデバイス100に関する情報を識別し、コンテンツストレージ234から対応するコンテンツを選択することができる。コンテンツセレクタ230は、コンテンツをクライアントデバイス100にプッシュまたはストリーミングし、クライアントアプリケーション208が送達およびレンダリングするための(例えば、コンテンツプロバイダ104のウェブサーバからの)コンテンツをその後に要求することができるように、コンテンツの一意のリソース識別子(URI)もしくはアドレスをクライアントデバイス100に提供するか、または、クライアントデバイスに転送するためにURIまたはアドレスをコンテンツプロバイダ102に提供することができる。
【００５３】
コンテンツストレージ234は、コンテンツプロバイダ102またはパートナーデバイス104と通信する1つまたは複数の追加の記憶デバイスによって提供され得る。コンテンツストレージ234は、オーディオ、ビデオ、アニメーション、テキスト、マルチメディア、静止画またはアニメ化されたグラフィックス、実行可能スクリプト、または任意の他のタイプおよび形態のコンテンツを含む、任意のタイプおよび形態のデータを含むことができる。
【００５４】
識別子データベース232は、クライアントデバイス、アカウント、またはセッションに関する情報をROCまたはプライベート識別子に関連付けるためのデータベース、フラットファイル、インデックス付きファイル、または他のタイプおよび形式のデータ構造を含むことができる。識別子データベース232は、メモリ206内に記憶され得る。識別子データベース232は、別個に記憶され、(例えば、別個のデータベースサーバによって)コンテンツセレクタ230に提供され得る。
【００５５】
コンテンツプロバイダ102およびパートナーデバイス104は、各々、復号器236を含むことができる。復号器236は、eROCを復号するための任意のアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、または他の実行可能ロジックであり得る。復号器236は、eROCの受信者(例えば、コンテンツプロバイダ102またはパートナーデバイス104)のプライベートキーを介してeROCを復号するためのソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組合せを含むことができる。復号器236は、任意の適切なタイプの復号アルゴリズムを実行することができ、ASIC、FPGA、トラステッドプラットフォームモジュール(TPM)、または他のそのような要素などの復号回路を含むことができる。復号器236は、eROCを復号し、ROCなどの復号されたROCから認証トークンと他のデータとを抽出することができる。
【００５６】
図3は、クライアントデバイスが利用規約を自己強制し、コンテンツ要求をフィルタリングするためのフロー図を示す。ステップ300において、クライアントデバイス100は、コンテンツのアイテムを要求することができる。いくつかの実装形態において、要求、例えば、バナーもしくは他の画像などのページ内の埋め込みコンテンツ、プリロール、ポストロール、もしくはインタースティシャルなメディアファイルなどのメディアファイル、または任意の他のそのようなコンテンツに対する要求は、ウェブページのレンダリング中に生成され得る。いくつかの実装形態において、要求は、コンテンツプロバイダ102またはパートナーデバイス104がコンテンツの適切なアイテムを選択することができるように、コンテンツの未知のアイテムに対するものであり得る。要求は、いくつかの実装形態において、ユーザ名、アカウント名、アドレスもしくはハードウェア識別子、または任意の他のそのような情報を含む、クライアントデバイスのデバイス識別子または他の識別子を含んでもよい。
【００５７】
ステップ302において、コンテンツプロバイダ102は、1つまたは複数の選択されたパートナーデバイス104とデータを共有する許可を要求することができる。例えば、要求を受信することに応答して、コンテンツプロバイダ102は、コンテンツをクライアントデバイス100に提供することができるか、またはコンテンツをクライアントデバイス100に提供する際に支援することができる1つまたは複数のパートナーデバイス104を選択することができる。パートナーデバイス104の選択は、負荷分散要件、オークション参加者、または任意の他のそのような方法に基づくことができる。例えば、コンテンツプロバイダ102は、コンテンツをクライアントデバイス100に提供する機会に対する入札または他の申し込みを要求するために、パートナーデバイス104と通信することができる。いくつかの実装形態において、パートナーデバイス104は、クライアントデバイス100に対するコンテンツの選択を可能にするかまたは改善することができる追加の情報またはデータを提供することができる。例えば、パートナーデバイス104は、コンテンツが選択またはカスタマイズされ得る関心の設定または指標を提供することができる。いくつかの実装形態において、クライアントデバイス100のためのコンテンツの選択においてパートナーデバイス104を用いることは、コンテンツプロバイダ102がクライアントデバイス100に関する情報をパートナーデバイス104と共有することを必要とする可能性がある。パートナーデバイス104と情報を共有する前に、コンテンツプロバイダ102は、パートナーデバイス104と情報を共有するためにクライアントデバイス100からの許可を要求することができる。いくつかの実装形態において、許可に対する要求は、コンテンツがレンダリングされるアプリケーションまたはウェブページに埋め込まれ得る。例えば、許可に対する要求は、コンテンツを提供することにおいて関与するパートナーデバイス104の各々を識別する複数のタグとして、ウェブページのヘッダまたはウェブページのコンテンツスロット内にあり得る。これらの実装形態において、コンテンツプロバイダ102は、許可を要求するクライアントデバイス100に明示的な送信を送らない場合があり(例えば、ステップ302)、ウェブページ内に埋め込まれた
データ共有要求のクライアントデバイスの承認は、コンテンツに対する要求内に含まれ得る(例えば、ステップ300)。例えば、ステップ300におけるコンテンツに対する要求は、ROCおよびeROCの以下に説明する送信も含むことができる(例えば、ステップ306)。
【００５８】
許可に対する要求は、各々の選択されたパートナーデバイス104のドメイン、アドレス、または他の識別子を含むことができる。いくつかの実装形態において、識別子は、より短いドメインまたはアドレスが引き延ばされ、より長いドメインが省略されて、32または64バイトなどの所定の長さを有することができる。クライアントデバイス100は、所定の長さに従って各識別子を抽出することができるので、識別子は、次いで、直接連結され得る。他の実装形態において、識別子は、デリミタ(例えば、所定の文字または文字列)によって区切られ得る。
【００５９】
ステップ304において、クライアントデバイス100がデータを共有する要求を承認した場合、クライアントデバイス100は、承認されたパートナーデバイス104の各々に対して暗号化されたeROCを生成することができる。例えば、本明細書で説明するように、クライアントデバイス100は、承認されたパートナーデバイス104の各々に対してeROCを生成することができる。eROCは、パートナーデバイス104の各々に関連付けられた識別子に基づいて生成され得、認証トークンを含むことができる。eROCは、パートナーデバイス104に対してクライアントデバイス100を識別するプライベート識別子(例えば、ROC)を含むことができる。クライアントデバイス100は、監査ログ内に、パートナーデバイス識別情報に関連付けて各認証トークンを記憶することができる。
【００６０】
ステップ306において、クライアントデバイス100は、eROCをコンテンツプロバイダ102に送信することができる。クライアントデバイス100は、HTTP要求においてeROCをコンテンツプロバイダ102に送信することができる。ステップ308において、コンテンツプロバイダ102は、それぞれのeROCを、それぞれのパートナーデバイス104の各々に転送することができる。eROCをパートナーデバイス104に転送するとき、送信は、コンテンツに対する要求、またはコンテンツの選択を可能にするデータに対する要求を含むことができる。
【００６１】
ステップ310において、各パートナーデバイス104は、パートナーデバイス104に対応する要求およびeROCを受信すると、ROCを回復するためにそれらの秘密キーを使用してeROCを復号することができる。eROCが復号されると、パートナーデバイス104は、クライアントデバイスのプライベート識別子と認証トークンとを抽出することができる。プライベート識別子に基づいて、パートナーデバイス104は、クライアントデバイス100に送達するためのコンテンツ、または、コンテンツの選択において使用され得るデータを選択することができる。ステップ312において、パートナーデバイス104は、データまたはコンテンツをコンテンツプロバイダ102に送信することができる。
【００６２】
ステップ314において、コンテンツプロバイダ102は、コンテンツを選択することができる。コンテンツプロバイダ102は、様々なパートナーデバイス104の各々によって提供される複数のコンテンツアイテムからコンテンツアイテムを選択することができる。コンテンツプロバイダ102は、パートナーデバイス104によって提供される設定または他のデータに基づいてコンテンツアイテムを選択することができる。例えば、パートナーデバイス104は、クライアントデバイスの計算能力、クライアントデバイス100のユーザの設定、または他のデータの指標を提供することができる。この例において、コンテンツプロバイダ102は、ユーザの設定を満たし、クライアントデバイスの計算能力に従ってレンダリングされ得るコンテンツを選択することができる。
【００６３】
コンテンツプロバイダ102がパートナーデバイス104からコンテンツまたはデータを受信すると、コンテンツプロバイダ102は、パートナーデバイス104が提供する認証トークンと、パートナーデバイス104から送信されたデータとを収集することができる。コンテンツプロバイダ102は、現在のコンテンツ要求に対応するコンテンツ要求識別子に関連して、認証トークンをテーブル内に記憶することができる。
【００６４】
ステップ316において、コンテンツプロバイダ102は、コンテンツと収集された認証トークンとをクライアントデバイス100に送信することができる。ステップ318において、クライアントデバイス100は、返された認証トークンを監査し、受信したコンテンツを表示することができる。クライアントデバイス100は、コンテンツを表示またはレンダリングする前に、認証トークンを監査することができる。認証トークンが監査を通過しない場合、クライアントデバイス100は、コンテンツをレンダリングすることを拒否または拒絶することができる。例えば、クライアントデバイス100は、返された認証トークンの各々が有効であるかどうかを判定するために認証トークンを監査することができる。有効な認証トークンは、コンテンツプロバイダ102がパートナーデバイス104とデータを共有する許可を受信したことを示す可能性がある。無効な認証トークンは、コンテンツプロバイダ102がパートナーデバイス104とデータを共有する許可を受信しておらず、例えば、1つまたは複数のeROCまたは認証トークンをキャッシュして再利用しようとしたことを示す可能性がある。
【００６５】
図4および図5は、自己強制許可を伴うデータ交換のための方法のフローチャートを示す。各フローチャートは、クライアントデバイス100、コンテンツプロバイダ102、およびパートナーデバイス104によって実行されるステップまたは手順を示すために部分的に分割されている。
【００６６】
ステップ400において、クライアントデバイス100は、コンテンツに対する要求をコンテンツプロバイダ102に送信することができる。ウェブブラウザまたはメディアアプリケーションなどのクライアントデバイス100上のアプリケーションが、コンテンツに対する要求を生成することができる。アプリケーションは、ウェブページのレンダリング中に、またはコンテンツの別のアイテムの再生中に時限イベントに遭遇したときに要求を生成することができる。要求は、任意の適切な送信プロトコル(例えば、HTTPS要求、RESTful要求など)を介して送信され得、ハンドシェイク手順を実行することを含むことができる。要求は、デバイス識別子、アカウント識別子、ユーザ識別子、セッション識別子、または、コンテンツプロバイダ102がクライアントデバイス100を一意に識別するためのクライアントデバイスによって生成された他のそのような識別子もしくはクッキー(例えば、ROC)を含むことができる。例えば、いくつかの実装形態において、コンテンツプロバイダ102は、クッキーをクライアントデバイス100に以前に(例えば、認証手順または他のそのようなイベント中に)提供している可能性があり、クライアントデバイス100は、その後の要求において同じクッキーを提供することができる。
【００６７】
ステップ402において、コンテンツプロバイダ102は、コンテンツをクライアントデバイス100に潜在的に提供するために、または、クライアントデバイス100に提供されるコンテンツの選択のためのデータを提供するために、1つまたは複数のパートナーデバイス104を識別することができる。コンテンツプロバイダ102は、オークションシステムもしくはラウンドロビンアルゴリズム、または他の負荷分散システムなどの任意の方法を介してパートナーデバイス104を選択することができる。いくつかの実装形態において、パートナーデバイス104は、コンテンツ要求が生成されたウェブページまたはアプリケーションにおいて、クライアントデバイス100に対して識別され得る。例えば、パートナーデバイス104のリストは、ウェブページ内の複数のタグパラメータ内に、または、ウェブページにおいて識別される公的にアクセス可能なパートナーファイルを介して含まれ得る。
【００６８】
ステップ404において、コンテンツプロバイダ102は、ステップ402において識別された1つまたは複数のパートナーデバイス104とデータを共有する許可を要求することができる。パートナーデバイス104とのデータの共有は、コンテンツプロバイダ102が、例えば、コンテンツプロバイダ102がクライアントデバイス100から受信した上記で説明したクライアント識別子を共有することを含むことができる。いくつかの実装形態において、パートナーデバイス104の各々は、デバイス識別子、アカウント識別子、ユーザ識別子、セッション識別子、または、他のそのような識別子もしくはクッキーをクライアントデバイス100と以前に交換している可能性がある。以前に共有された識別子は、クライアントデバイス100とそれぞれのパートナーデバイス104との間で一意であるROC(または他の識別子)であり得る。例えば、クライアントデバイス100は、パートナーデバイス104の各々について異なるROCを記憶することができる。いくつかの実装形態において、データを共有する許可に対する要求は、クライアントデバイス100が以前に記憶された識別子をパートナーデバイス104に送信することに対する要求を含むことができる。
【００６９】
許可要求は、クライアントデバイス100に対してパートナーデバイス104を識別するドメインなどの識別子を含むことができる。例えば、コンテンツプロバイダ102は、選択されたパートナーデバイス104をリストに追加することができる。パートナーデバイス104を追加することは、パートナーデバイス104のドメイン名もしくはアドレスをリストに追加すること、ドメイン名もしくはアドレスを名前もしくはアドレスのセットに連結すること、または、パートナーデバイス104の識別情報をリストに他の方法で追加することを含むことができる。
【００７０】
ステップ406において、クライアントデバイス100は、データを共有する要求とともに受信されたリストから第1のパートナーデバイス104のドメインまたはアドレスを抽出することができる。上記で論じたように、リストは、デリミタによって区切られた所定の長さまたは可変長のフィールドを含むことができる。したがって、クライアントデバイス100は、長さまたはデリミタに従ってドメインまたはアドレスを抽出することができる。
【００７１】
クライアントデバイス100は、(コンテンツプロバイダ102によってまたはクライアントデバイス100から直接)パートナーデバイス104と共有されるようにデータに許可が与えられるべきかどうかを決定することができる。上記で説明したように、クライアントデバイス100は、ホワイトリストまたはブラックリストに記載されているパートナーデバイス104のリストを含むことができる監査ログを維持することができる。クライアントデバイス100は、データがパートナーデバイス104と共有されるべきであるかどうかを判定するために、ホワイトリストまたはブラックリストに記載されているパートナーデバイス104を探索することができる。例えば、パートナーデバイスのドメインがブラックリスト内に含まれている場合、クライアントデバイス100は、データがパートナーデバイス104と共有されるべきではないと判定することができる。クライアントデバイス100は、ステップ406に戻り、コンテンツプロバイダ102によって提供されたリスト内の次のパートナーデバイス104を識別することによって、パートナーデバイス104のためのeROCを生成しないことを決定することができる。
【００７２】
上記で説明したように、監査ログは、パートナーデバイス104の各々に関する寄与情報を含むことができる。寄与情報は、以前に提供されたコンテンツの選択に対するパートナーデバイスの寄与を示すことができる。例えば、ステップ428に関連してさらに説明するように、コンテンツ要求を満たすとき、コンテンツプロバイダ102は、各パートナーデバイス104が要求を満たすためにコンテンツの選択において提供した寄与の量の指標を提供することができる。寄与のレベルは、各パートナーデバイス104について、パーセンテージとして表され得る。コンテンツ要求を満たすためのパートナーデバイス104の各々の合計パーセンテージ寄与は、100%に等しくなり得る。パートナーデバイス104がコンテンツ要求を満たす際に提供する寄与のレベルは、コンテンツプロバイダ102とそれぞれのパートナーデバイス104との間の合意に基づいて決定され得る。例えば、コンテンツプロバイダ102がクライアントデバイス100に提供されるコンテンツをカスタマイズすることを可能にするパートナーデバイス104からのデータと引き換えに、コンテンツプロバイダ102は、パートナーデバイス104に10%の寄与を与えることができる。いくつかの実装形態において、コンテンツプロバイダ102がコンテンツを提供するための支払いを提供される場合、支払いは、コンテンツを選択する際に各々が果たした寄与のレベルに基づいて、コンテンツプロバイダ102の各々とパートナーデバイス104との間で分割され得る。
【００７３】
パートナーデバイス104の過去の寄与を決定するために、クライアントデバイス100は、パートナーデバイス104に関する寄与値を計算することができる。寄与値は、過去のコンテンツアイテムを選択する際にパートナーデバイス104が提供した寄与のレベルの平均であり得る。いくつかの実装形態において、寄与値は、時間制限されたまたは特定の数のコンテンツ履行に基づいて計算され得る。例えば、寄与値は、最後の日、週、月、年、または他の時間枠におけるコンテンツ履行にのみ基づいてもよい。別の例において、寄与値は、過去N回のコンテンツ履行に基づいてもよい。寄与値は、加重平均であり得る。例えば、最新のコンテンツ履行からの寄与のレベルは、比較的古いコンテンツ履行からの寄与レベルよりも高く重み付けされ得る。
【００７４】
ステップ410において、クライアントデバイス100は、計算された寄与値が所定のしきい値を上回るかどうかを判定することができる。寄与値がしきい値を上回る場合、クライアントデバイス100は、ステップ412に進むことができる。寄与値がしきい値を下回る場合、クライアントデバイス100は、ステップ406に戻り、現在識別されているパートナーデバイス104のためのeROCを生成しなくてもよい。クライアントデバイス100は、パートナーデバイス104がコンテンツの選択およびカスタマイズに対して有する影響を決定するために、計算された寄与値をしきい値と比較することができる。パートナーデバイス104がクライアントデバイス100のためのコンテンツの選択において入力を提供することを可能にするために、クライアントデバイス100から(またはそれについて)パートナーデバイス104にいくつかの情報が提供される。クライアントデバイス100のプライバシーを高めるために、クライアントデバイス100は、コンテンツの選択に実質的に影響しない(例えば、しきい値未満の寄与値を有する)パートナーデバイス104とのデータ共有を許可しないことを決定することができる。パートナーデバイス104が低い寄与値を有するときにパートナーデバイス104とデータを共有しないことによって、クライアントデバイス100は、クライアントデバイス100のために選択されたコンテンツの品質に影響を与えずにクライアントデバイス100のプライバシーを保護することができる。いくつかの実装形態において、パートナーデバイス104がステップ400において送信された要求の前にコンテンツ要求の履行に参加していない場合、クライアントデバイス100は、パートナードメインの寄与値が所定のしきい値を下回っていても、パートナードメインをROCの生成にわたすことができる(例えば、ステップ412)。クライアントデバイス100は、パートナードメインの寄与値が所定のしきい値を下回る場合であっても、パートナードメインがデータ共有に参加することを許可される猶予期間を新しいパートナードメインに提供することができる。猶予期間は、所定の長さの時間(例えば、1日、1週間、1ヶ月)または所定の間隔(例えば、10、50、または100のコンテンツ要求の間)続くことができる。
【００７５】
クライアントデバイス100が、寄与値がしきい値を上回ると判定した場合、クライアントデバイス100は、パートナーデバイス104のためのROCを計算することができる。いくつかの実装形態において、寄与値をしきい値と比較する代わりに、またはそれに加えて、クライアントデバイス100は、パートナーデバイス104のドメインがデータ共有許可を示すホワイトリストまたはブラックリスト上にあるかどうかを判定することができる。例えば、クライアントデバイス100は、クライアントデバイス100がパートナーデバイスの寄与値に関係なくデータを共有する許可を与えたパートナーデバイス104のホワイトリストを含むことができる。別の例において、クライアントデバイス100は、ブラックリスト上にパートナーデバイス104のドメインを含めることができ、パートナーデバイスの寄与に関係なく、パートナーデバイス104とデータを共有する許可は、決して提供されなくてもよい。別の例では、クライアントデバイス100は、パートナーデバイス104とのデータ共有を許可するかどうか決定するときに、パートナーデバイス104と関連付けられた識別子かホワイトリストまたはブラックリスト上にあるかどうかのみを考慮すればよく、パートナーデバイス104の相対的寄与を計算しなくてもよい。
【００７６】
ステップ412において、パートナーデバイス104とのデータの共有を承認すると、クライアントデバイス100は、パートナーデバイス104のためのROCを生成することができる。ROCを生成するために、クライアントデバイス100は、パートナーデバイス104のドメインもしくはアドレスまたは他の識別子およびクライアントデバイス100の秘密キーまたは識別子の一方向の安全な暗号ハッシュを計算することができる。クライアントデバイス100の識別子は、クライアントデバイス100とパートナーデバイス104との間で、パートナーデバイス104に対してクライアントデバイス100を識別することができるプライベート識別子であり得る。例えば、プライベート識別子は、例えば、クライアントデバイス100がパートナーデバイス104のドメイン上のウェブページにアクセスしたときなどに、パートナーデバイス104によってクライアントデバイス100に以前に提供されたクッキーまたは他の識別子であり得る。任意の適切な暗号ハッシュアルゴリズムが使用され得る。いくつかの実装形態において、クライアントデバイス100は、ROCを監査ログ内に記憶することができる。例えば、クライアントデバイス100は、暗号ハッシュに必要なコンピューティングリソースを低減するために、所定の長さの時間の間、ROCを記憶またはキャッシュすることができる。ROCがクライアントデバイス100においてローカルにキャッシュされる場合、クライアントデバイス100は、ステップ412において新しいROCを生成する前にキャッシュを探索することができる。
【００７７】
ステップ414において、クライアントデバイス100は、ステップ412において生成されたROCからeROCを生成することができる。クライアントデバイス100は、パートナーデバイス104の公開キーを取得することによってeROCを生成することができる。クライアントデバイス100は、所定のアドレス(例えば、「[domain]/key.html」)から、またはキーサーバからキーを取得することができる。いくつかの実装形態において、クライアントデバイス100が公開キーを受信すると、クライアントデバイス100は、パートナーデバイス104のための将来のeROCを生成する際に使用するために、所定の長さの時間の間、キーをキャッシュすることができる。
【００７８】
クライアントデバイス100は、ステップ412において生成されたROCを、パートナーデバイスの公開キーを用いて暗号化することによって、eROCを生成することができる。いくつかの実装形態において、クライアントデバイス100は、eROCを生成するために、ROCを他のデータと連結し、結果として生じる文字列を暗号化することができる。例えば、クライアントデバイス100は、文字列を生成するために、ROC、タイムスタンプ、認証トークン、公開キー、またはそれらの任意の組合せを連結することができる。
【００７９】
クライアントデバイス100は、認証トークンを監査ログ内に記憶することができる。認証トークンは、ドメインに関連付けて監査ログ内に記憶され得る。いくつかの実装形態において、認証トークンは、所定の長さの時間の間のみ有効であってもよく、タイムスタンプまたは有効期限は、コンテンツプロバイダ102またはパートナーデバイス104によって返されたときに認証トークンが有効であるかどうかをクライアントデバイス100が判定することを可能にするために、認証トークンに関連付けて監査ログに保存され得る。
【００８０】
ステップ416において、クライアントデバイスは、リストが追加のプロバイダを含むかどうかを判定することができ、そうである場合、ステップ406〜414を繰り返すことができる。
【００８１】
コンテンツプロバイダ102から受信したリスト内のパートナーデバイス104の各々についてステップ406〜416を繰り返した後、クライアントデバイス100は、クライアントデバイス100が共有されているデータを承認するパートナーデバイス104の各々のためのeROCを生成したステップ406〜416のループを出る。クライアントデバイス100はまた、パートナーデバイス104の各々について生成された認証トークンの指標を含むように監査ログを更新している。
【００８２】
ステップ418において、クライアントデバイス100は、コンテンツプロバイダ102のためのROCを生成できる。クライアントデバイス100は、パートナーデバイス104の各々のためのROCの生成に関連して上記で説明したようにROCを生成できる。いくつかの実装形態において、クライアントデバイス100は、安全な通信チャネルにおいてコンテンツプロバイダのROCをコンテンツプロバイダ102に直接送信するので、コンテンツプロバイダ102のためのROCを暗号化しなくてもよい。一方、図3に示すように、コンテンツプロバイダ102が、クライアントデバイス100からROCを(eROCとして)受信し、ROC(クライアントデバイス100によってeROCとして暗号化され得る)をそれぞれのパートナーデバイス104の各々に転送するとき、パートナーデバイス104は、コンテンツプロバイダ102を介してそれらのROCを受信することができる。コンテンツプロバイダのROCは、コンテンツプロバイダ102に直接送信されるので、クライアントデバイス100は、コンテンツプロバイダのROCを暗号化しないことによって、計算リソースを節約することができる。クライアントデバイス100は、HTTPS要求などを介して、安全なチャネルを介してROCをコンテンツプロバイダ102に(および、eROCをコンテンツプロバイダ102に)送信することができる。いくつかの実装形態において、ステップ418の後、クライアントデバイス100は、コンテンツプロバイダ102に送信されるeROCを生成するために、コンテンツプロバイダのROCを暗号化することができる。
【００８３】
ステップ420において、クライアントデバイス100は、eROCのセットをコンテンツプロバイダ102に送信することができる。ステップ422において、コンテンツプロバイダ102は、eROCをそれぞれのパートナーデバイス104の各々に転送することができる。
【００８４】
ステップ500において、図5に示すように、パートナーデバイス104は、eROCを復号することができる。パートナーデバイス104は、パートナーデバイスの秘密キーを使用してeROCを復号することができる。eROCを復号することは、ステップ414においてeROCを生成するために使用された文字列を生成する。値(例えば、ROC、タイムスタンプ、認証トークン、および公開キー)の各々は、既知の固定長のものであり得、またはデリミタによって区切られ得る。パートナーデバイス104は、値の固定長またはデリミタに基づいて、ROC、タイムスタンプ、認証トークン、および公開キーの各々を抽出することができる。
【００８５】
ステップ502において、パートナーデバイス104は、ROCに基づいてデータを選択することができる。上記で説明したように、ROCは、パートナーデバイス104に対してクライアントデバイス100を識別する、クライアントデバイス100とパートナーデバイス104との間のプライベート識別子であるか、またはそれを含むことができる。パートナーデバイス104は、ROCに基づいて、クライアントデバイス100に送達するためのコンテンツのアイテムを選択することができる。コンテンツアイテムは、任意の適切な手段を介して選択され得、クライアントデバイス100に対して個別化またはカスタマイズされ得る。コンテンツは、パートナーデバイスのローカルデータベース内のROCに関連する情報に基づいて個別化され得る。例えば、ROCに関連する情報は、クライアントデバイス100から以前に受信した情報(例えば、設定)、クライアントデバイス100に関連するウェブ閲覧もしくは検索履歴、以前のコンテンツ要求もしくは対話、または任意の他のタイプおよび形態の情報を含むことができる。いくつかの実装形態において、コンテンツアイテムを選択することに加えて、またはその代わりに、パートナーデバイス104は、クライアントデバイス100から以前に受信した情報(例えば、設定)、クライアントデバイス100に関連するウェブ閲覧もしくは検索履歴、以前のコンテンツ要求もしくは対話、または、パートナーデバイス104の内部データベース内のROCに関連付けて記憶された任意の他のタイプおよび形態の情報を選択することができる。パートナーデバイス104は、データに基づいてコンテンツを選択することができるコンテンツプロバイダ102または別のパートナーデバイス104にデータを送信することができる。
【００８６】
ステップ504において、パートナーデバイス104は、認証トークンを決定することができる。上記で説明したように、認証トークンは、eROC内の暗号化された文字列内に含まれ得る。eROCが文字列を明らかにするために復号されると、パートナーデバイス104は、文字列内の値の固定長および/または文字列内のデリミタに基づいて、文字列から認証トークンを抽出することができる。
【００８７】
ステップ506において、パートナーデバイス104は、認証トークンと、コンテンツアイテムを含むことができるデータとを、コンテンツプロバイダ102に送信することができる。いくつかの実装形態において、データがコンテンツアイテムを含む場合、コンテンツプロバイダ102に送信されるデータは、コンテンツアイテムをクライアントデバイス100に表示または提供するための入札を含むことができる。
【００８８】
図4に戻り、ステップ424において、コンテンツプロバイダ102は、認証トークンと、コンテンツアイテムを選択する際のパートナーデバイス104の各々からの相対的寄与とを収集することができる。例えば、コンテンツプロバイダ102は、コンテンツプロバイダ102がクライアントデバイスのコンテンツ要求に応答するためのコンテンツを選択するコンテンツアイテムの内部データベースを含むことができる。コンテツプロバイダ102は、4つの異なるパートナーデバイス104の各々からクライアントデバイス100の設定を受信している可能性がある。設定情報とともに、コンテンツプロバイダ102は、設定情報を提供するパートナーデバイス104の各々から認証トークンを受信することができる。コンテンツプロバイダ102は、認証トークンの各々を収集し、認証トークンをパートナーデバイス104の各々の相対的寄与に関連付けてテーブル内に記憶することができる。例えば、4つのパートナーデバイス104のためのテーブルは、トークン1に関連付けられたパートナーデバイス104がコンテンツアイテムの選択に5%寄与し、トークン2に関連付けられたパートナーデバイス104がコンテンツアイテムの選択に5%寄与し、トークン3に関連付けられたパートナーデバイス104がコンテンツアイテムの選択に7%寄与し、トークン4に関連付けられたパートナーデバイス104がコンテンツアイテムの選択に2%寄与したことを示す[(トークン1,5),(トークン2,5),(トークン3,7),(トークン4,2)]などのアレイであり得る。この例において、コンテンツプロバイダ102は、コンテンツアイテムの選択に対して81%(100%-5%-5%-7%-2%)関与していた可能性がある。コンテンツプロバイダ102がパートナーデバイス104の1つによって提供されない寄与に関与しているように、総寄与は、100%であり得る。いくつかの実装形態において、コンテンツプロバイダ102は、コンテンツプロバイダ102において記憶された寄与テーブルを検索することによって、各パートナーデバイス104の寄与を決定することができる。いくつかの実装形態において、パートナーデバイス104がデータをコンテンツプロバイダ102に提供する前に、コンテンツプロバイダ102およびパートナーデバイス104は、コンテンツ選択の推進においてコンテンツプロバイダ102にデータ(またはコンテンツ)を提供するときにパートナーデバイス104が受信する寄与スコアに合意することができる。合意された寄与スコアは、寄与テーブル内に記憶され得る。
【００８９】
ステップ428において、コンテンツプロバイダ102は、コンテンツアイテム、認証トークン、および相対的寄与をクライアントデバイス100に送信することができる。
【００９０】
ステップ430において、クライアントデバイス100は、受信したコンテンツをレンダリングすることができる。いくつかの実装形態において、クライアントデバイス100は、コンテンツをレンダリングする前に、返された認証トークンを監査することができる。クライアントデバイス100は、監査ログ内の認証トークンを調べるために、返された認証トークンの各々をキーとして使用することができる。認証トークンが期限切れであるか、異なるコンテンツ要求に関連付けられているか、または監査ログ内にない場合、クライアントデバイス100は、認証トークンが無効であると判定することができる。例えば、ToSの違反において、コンテンツプロバイダ102が、最初にクライアントデバイス100の許可を求めることなくパートナーデバイス104とデータを共有することができるように、コンテンツプロバイダ102は、パートナーデバイス104のeROCまたは認証トークンをキャッシュしている場合がある。この例において、コンテンツプロバイダ102が認証トークンをキャッシュした場合、クライアントデバイス100は、認証トークンが期限切れであり、無効であると判定することができる。いくつかの実装形態において、ステップ428においてクライアントデバイス100に返された認証トークンのうちの1つまたは複数が無効である場合、クライアントデバイス100は、コンテンツをレンダリングしないことを決定することができる。
【００９１】
ステップ432において、クライアントデバイス100は、監査ログを更新することができる。監査ログを更新することは、ちょうど完了したコンテンツ要求に関するエントリを追加することを含むことができる。エントリは、ステップ428においてクライアントデバイス100に送信された寄与スコアに基づいて、パートナーデバイス104の各々に関する全体的なまたは現行の寄与スコアを更新することを含むことができる。いくつかの実装形態において、監査ログを更新することは、それぞれのコンテンツプロバイダまたはパートナーデバイスの認証トークンのいずれかが無効であると判定された場合、コンテンツプロバイダ102またはパートナーデバイス104の識別子をブラックリストに追加することを含むことができる。
【００９２】
本開示の少なくとも1つの態様によれば、データ交換を制御するシステムは、暗号器を含むことができる。暗号器は、パートナードメインのリスト内の各パートナードメインについて、パートナードメイン固有の識別子を生成し、対応するパートナードメインの暗号化キーを使用してパートナードメイン固有の識別子と第1の認証トークンとを暗号化することができる。パートナードメイン固有の識別子は、パートナードメインのドメインの指標(例えば、example.com)、またはそのハッシュであるか、またはそれを含むことができる。パートナードメイン固有の識別子は、ランダムに生成された、順次に生成された、または他のタイプの識別子として、システムによってパートナードメインに割り当てられ得る。システムは、パートナードメインのリスト内の各パートナードメインに関する暗号化されたパートナードメイン固有の識別子をコンテンツプロバイダに送信するためのネットワークインターフェースを含むことができる。ネットワークインターフェースは、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインからのデータに基づいてコンテンツプロバイダによって選択されたコンテンツアイテムを受信することができる。パートナードメインのリスト内の各パートナードメインからのデータは、暗号化されたパートナードメイン固有の識別子を受信することに基づいて選択される。例えば、パートナードメインは、暗号化されたパートナードメイン固有の識別子を復号し、パートナードメイン固有の識別子に関連付けられたデータを識別するためにルックアップテーブルにおいてパートナードメイン固有の識別子をキーとして使用することができる。ネットワークインターフェースは、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンを受信することができる。システムは、パートナードメインのリスト内の各パートナードメインのための第1の認証トークンとパートナードメインのリスト内の各パートナードメインのための第2の認証トークンとの比較に基づいてコンテンツアイテムを表示することを決定するための監査エンジンを含むことができる。例えば、監査エンジンは、第1および第2の認証トークンが一致する場合、コンテンツアイテムを表示することができる。
【００９３】
いくつかの実装形態において、監査エンジンは、パートナードメインのリスト内の各パートナードメインのための第1の認証トークンの各々をパートナードメインのリスト内の各パートナードメインのための第2の認証トークンのうちの1つと照合することをさらに含む比較に基づいてコンテンツアイテムを表示することを決定するように構成される。監査エンジンは、第2のパートナードメインに関する寄与スコアを決定するようにも構成され得る。寄与スコアは、第2のコンテンツアイテムを選択する際の寄与のレベルを示すことができる。監査エンジンは、寄与スコアが所定のしきい値未満であることに基づいて、第2のパートナードメインのためのパートナードメイン固有の識別子を生成しないことを決定することができる。寄与スコアは、1つまたは複数の以前のコンテンツアイテムを選択する際の寄与のレベルを示すことができる。
【００９４】
いくつかの実装形態において、暗号器は、パートナードメインの第2のリスト内の各ドメインパートナーのための第1の認証トークンを生成することができる。ネットワークインターフェースは、コンテンツプロバイダから、パートナードメインの第2のリスト内の各パートナードメインからのデータに基づいてコンテンツプロバイダによって選択された第2のコンテンツアイテムを受信することができる。ネットワークインターフェースは、コンテンツプロバイダから、パートナードメインの第2のリスト内の各ドメインパートナーのための第2の認証トークンを受信することもできる。監査エンジンは、パートナードメインの第2のリスト内の各ドメインパートナーのための第1の認証トークンがパートナードメインの第2のリスト内の各ドメインパートナーのための第2の認証トークンのそれぞれ1つと一致しないことに基づいて、第2のコンテンツアイテムを表示しないことを決定することができる。
【００９５】
暗号器は、クライアントデバイス識別子の暗号ハッシュと対応するパートナードメインのドメイン名とを計算することによって、パートナー固有の識別子を生成するように構成され得る。クライアントデバイス識別子は、パートナードメインのリスト内のパートナードメインの各々について一意であり得る。パートナードメイン固有の識別子を暗号化するために、暗号器は、少なくともパートナードメイン固有の識別子と、第1の認証トークンと、タイムスタンプとを連結することによって文字列を生成するように構成される。暗号器は、次いで、文字列を暗号化することができる。
【００９６】
いくつかの実装形態において、暗号器は、ブラックリスト内にリストされていないパートナードメインに基づいてパートナードメイン固有の識別子を生成するように構成され得る。暗号器は、パートナードメインの寄与スコアが所定のしきい値を上回ることに基づいてパートナードメイン固有の識別子を生成するように構成され得る。
【００９７】
本開示の少なくとも1つの態様によれば、データ交換を制御する方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリストを受信するステップを含むことができる。方法は、パートナードメインのリスト内のパートナードメインごとに、クライアントデバイスによってパートナードメイン固有の識別子を生成するステップと、クライアントデバイスによって、対応するパートナードメインの暗号化キーを使用して、パートナードメイン固有の識別子と第1の認証トークンとを暗号化するステップとを含むことができる。方法は、クライアントデバイスによって、コンテンツプロバイダに、パートナードメインのリスト内の各パートナードメインのための暗号化されたパートナードメイン固有の識別子を送信するステップを含むことができる。方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインからのデータに基づいてコンテンツプロバイダによって選択されたコンテンツアイテムを受信するステップを含むことができる。パートナードメインのリスト内の各パートナードメインからのデータは、暗号化されたパートナードメイン固有の識別子を受信することに基づいて選択される。方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンを受信するステップを含むことができる。方法は、クライアントデバイスによって、パートナードメインのリスト内の各パートナードメインのための第1の認証トークンと、パートナードメインのリスト内の各パートナードメインのための第2の認証トークンとの比較に基づいてコンテンツアイテムを表示するステップを含むことができる。
【００９８】
いくつかの実装形態において、方法は、比較に基づいてコンテンツアイテムを表示するステップを含むことができ、パートナードメインのリスト内の各パートナードメインのための第1の認証トークンの各々をパートナードメインのリスト内の各パートナードメインのための第2の認証トークンのうちの1つと照合するステップをさらに含む。
【００９９】
方法は、クライアントデバイスによって、第2のパートナードメインを受信するステップをさらに含むことができる。方法は、クライアントデバイスによって、第2のパートナードメインに関する寄与スコアを決定するステップを含むことができる。寄与スコアは、第2のコンテンツアイテムを選択する際の寄与のレベルを示す。方法は、クライアントデバイスによって、所定のしきい値未満である寄与スコアに基づいて、第2のパートナードメインのためのパートナードメイン固有の識別子を生成しないことを決定するステップを含むことができる。寄与スコアは、1つまたは複数の以前のコンテンツアイテムを選択する際の寄与のレベルを示すことができる。
【０１００】
いくつかの実装形態において、方法は、クライアントデバイスによって、パートナードメインの第2のリストを受信するステップを含むことができる。方法は、クライアントデバイスによって、パートナードメインの第2のリスト内の各ドメインパートナーのための第1の認証トークンを生成するステップを含むことができる。方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインの第2のリスト内の各パートナードメインからのデータに基づいてコンテンツプロバイダによって選択された第2のコンテンツアイテムを受信するステップを含むことができる。方法は、クライアントデバイスによって、コンテンツプロバイダから、パートナードメインの第2のリスト内の各ドメインパートナーのための第2の認証トークンを受信するステップを含むことができる。方法は、クライアントデバイスによって、パートナードメインの第2のリスト内の各ドメインパートナーのための第1の認証トークンがパートナードメインの第2のリスト内の各ドメインパートナーのための第2の認証トークンのそれぞれ1つと一致しないことに基づいて、第2のコンテンツアイテムを表示しないことを決定するステップを含むことができる。
【０１０１】
いくつかの実装形態において、パートナー固有の識別子を生成するステップは、クライアントデバイス識別子の暗号ハッシュと対応するパートナードメインのドメイン名とを計算するステップを含むことができる。クライアントデバイス識別子は、パートナードメインのリスト内のパートナードメインの各々について一意であり得る。パートナードメイン固有の識別子を暗号化するステップは、少なくともパートナードメイン固有の識別子と、第1の認証トークンと、タイムスタンプとを連結することによって文字列を生成するステップを含むことができる。方法は、文字列を暗号化するステップを含むことができる。方法は、パートナードメインがブラックリスト内にリストされていないことに基づいてパートナードメイン固有の識別子を生成するステップを含むことができる。方法は、所定のしきい値を上回るパートナードメインの寄与スコアに基づいてパートナードメイン固有の識別子を生成するステップを含むことができる。
【０１０２】
本明細書で説明する動作は、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つまたは複数の特徴は、場合によっては、組合せから削除され得、特許請求されている組合せは、部分的組合せまたは部分的組合せの変形形態に向けられる場合がある。
【０１１１】
同様に、動作は、特定の順序において図面中に描かれているが、これは、所望の結果を達成するために、そのような動作が示された特定の順序で、もしくは順番に実行されること、またはすべての図示された動作が実行されることを要求するものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利な可能性がある。さらに、上記で説明した実装形態における様々なシステム構成要素の分離は、すべての実装形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品に一体化され得、または複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【０１１２】
したがって、主題の特定の実装形態について説明してきた。他の実装形態は、以下の特許請求の範囲内にある。場合によっては、特許請求の範囲において列挙されているアクションは、異なる順序で実行され得、依然として所望の結果を達成することができる。加えて、添付図面中に示されたプロセスは、所望の結果を達成するために、示された特定の順序、または順番を必ずしも必要としない。特定の実装形態において、マルチタスクおよび並列処理が使用できる。
【符号の説明】
【０１１３】
50  ネットワークおよびデバイス環境
100  クライアントデバイス
102  コンテンツプロバイダ
104、104(1)〜104(N)  パートナーデバイス
106、106'  ネットワーク
200  プロセッサ
202  ネットワークインターフェース
204  ユーザI/Oインターフェース、I/Oインターフェース、インターフェース
206  メモリ、メモリまたは記憶デバイス、メモリデバイス
208  アプリケーション
210  デバイス識別子
212  監査エンジン
214  暗号器
216  監査ログ
220  応答テーブル
230  コンテンツセレクタ
232  識別子データベース、データベース
234  コンテンツデータベース、コンテンツストレージ
236  復号器
【図１】
2021519022.tif 000003
【図２】
2021519022.tif 000004
【図３】
2021519022.tif 000005
【図４】
2021519022.tif 000006
【図５】
2021519022.tif 000007
【国際調査報告】
2021519022.tif 000008
2021519022.tif 000009