(57)【要約】  少なくとも1つの態様は、不正なコンテンツアイテム動作を識別することによって、コンテンツアイテム動作を処理するデータ処理システムのパフォーマンスを改善することを対象とする。データ処理システムは、クライアントデバイスから、コンテンツアイテムデバイス識別子および認証トークンを含むコンテンツアイテム動作を受信することができる。認証トークンは、コンピューティングデバイスに関連付けられた公開鍵と、認証トークンのタイムスタンプと、メッセージペイロードと、埋め込まれたデジタル署名とを含むことができる。データ処理システムは、公開鍵を署名検証鍵として使用して、公開鍵と、認証トークンのタイムスタンプと、メッセージペイロードとの組合せのデジタル署名を検証することができる。本システムは、デジタル署名検証プロセスが成功した場合にのみ、コンテンツアイテム動作を処理し得る。
2022501668.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツアイテム動作を処理するための方法であって、
データ処理システムによって、コンピューティングデバイスから、コンテンツアイテム通信を受信するステップであって、前記コンテンツアイテム通信が、第1のコンテンツアイテムデバイス識別子と、前記コンピューティングデバイスに関連付けられた公開鍵、認証トークンのタイムスタンプ、メッセージペイロード、およびデジタル署名を含む認証トークンとを含む、ステップと、
前記データ処理システムによって、前記公開鍵、前記タイムスタンプ、および前記メッセージペイロードを使用して前記デジタル署名を検証するステップと、
前記データ処理システムによって、前記公開鍵の暗号化ハッシュに基づいて第2のコンテンツアイテムデバイス識別子を生成するステップと、
前記データ処理システムによって、前記第2のコンテンツアイテムデバイス識別子が前記第1のコンテンツアイテムデバイス識別子と一致することを決定するステップと、
前記データ処理システムによって、前記デジタル署名の検証に応答して、および前記第2のコンテンツアイテムデバイス識別子が前記第1のコンテンツアイテムデバイス識別子と一致するという決定に応答して、前記メッセージペイロードに基づいて前記コンテンツアイテム通信を処理するステップと、
を備える、方法。
【請求項２】
前記デジタル署名を検証するステップが、前記認証トークンのタイムスタンプがあらかじめ定められた時間値の範囲内の値を有することを決定するステップをさらに備える、請求項1に記載の方法。
【請求項３】
前記公開鍵の前記暗号化ハッシュを切り捨てるステップをさらに備える、請求項1に記載の方法。
【請求項４】
前記コンテンツアイテム通信を処理するステップが、前記コンテンツアイテム通信の前記メッセージペイロードが消去要求を含むことを決定するステップを含む、請求項1に記載の方法。
【請求項５】
前記メッセージペイロードが前記消去要求を含むという決定に応答して、前記第1のコンテンツアイテムデバイス識別子に関連付けられたデータを除去するステップをさらに備える、請求項4に記載の方法。
【請求項６】
前記コンテンツアイテム通信を処理するステップが、前記コンテンツアイテム通信の前記メッセージペイロードが、コンテンツアイテム要求と、コンテンツアイテムの要求に関連付けられたパラメータのセットとを含むことを決定するステップを含む、請求項1に記載の方法。
【請求項７】
前記データ処理システムによって、前記メッセージペイロードが前記コンテンツアイテム要求を含むという決定に応答して、コンテンツアイテムを選択し、前記受信したコンテンツアイテム通信に関連付けられた当事者に前記コンテンツアイテムを送信するステップをさらに備える、請求項6に記載の方法。
【請求項８】
前記コンテンツアイテム通信を処理するステップが、前記コンテンツアイテム通信の前記メッセージペイロードが、アプリケーションがクライアントデバイスにインストールされたことを示すアプリケーションインストール通知を含むことを決定するステップを含む、請求項1に記載の方法。
【請求項９】
前記データ処理システムによって、前記メッセージペイロードが前記アプリケーションインストール通知を含むという決定に応答して、前記コンテンツアイテム通信に関連付けられたクレジット値を更新するステップをさらに備える、請求項8に記載の方法。
【請求項１０】
コンテンツアイテム通信を受信するステップが、16バイトの長さを有する前記第1のコンテンツアイテムデバイス識別子を受信するステップを含む、請求項1に記載の方法。
【請求項１１】
コンテンツアイテム動作を処理するシステムであって、
コンピューティングデバイスから、コンテンツアイテム通信を受信することであって、前記コンテンツアイテム通信が、第1のコンテンツアイテムデバイス識別子と、前記コンピューティングデバイスに関連付けられた公開鍵、認証トークンのタイムスタンプ、メッセージペイロード、およびデジタル署名を含む認証トークンとを含む、ことと、
前記公開鍵、前記タイムスタンプ、および前記メッセージペイロードを使用して前記デジタル署名を検証することと、
前記公開鍵の暗号化ハッシュに基づいて第2のコンテンツアイテムデバイス識別子を生成することと、
前記第2のコンテンツアイテムデバイス識別子が前記第1のコンテンツアイテムデバイス識別子と一致することを決定することと、
前記デジタル署名の検証に応答して、および前記第2のコンテンツアイテムデバイス識別子が前記第1のコンテンツアイテムデバイス識別子と一致するという決定に応答して、前記メッセージペイロードに基づいて前記コンテンツアイテム通信を処理することと、
を行うように構成された1つまたは複数のプロセッサを備える、システム。
【請求項１２】
前記1つまたは複数のプロセッサが、
前記デジタル署名を検証し、前記認証トークンのタイムスタンプがあらかじめ定められた時間値の範囲内の値を有することを決定するように構成される、請求項11に記載のシステム。
【請求項１３】
前記1つまたは複数のプロセッサが、
前記公開鍵の前記暗号化ハッシュの切捨てに基づいて、前記第2のコンテンツアイテムデバイス識別子を生成するように構成される、請求項11に記載のシステム。
【請求項１４】
前記1つまたは複数のプロセッサが、
前記コンテンツアイテム通信の前記メッセージペイロードが消去要求を含むと決定することによって、前記コンテンツアイテム通信を処理するように構成される、請求項11に記載のシステム。
【請求項１５】
前記1つまたは複数のプロセッサが、
前記メッセージペイロードが前記消去要求を含むという決定に応答して、前記第1のコンテンツアイテムデバイス識別子に関連付けられたデータを除去するようにさらに構成される、請求項14に記載のシステム。
【請求項１６】
前記1つまたは複数のプロセッサが、
前記コンテンツアイテム通信の前記メッセージペイロードが、コンテンツアイテム要求と、コンテンツアイテムの要求に関連付けられたパラメータのセットとを含むことを決定することによって、前記コンテンツアイテム通信を処理するように構成される、請求項11に記載のシステム。
【請求項１７】
前記1つまたは複数のプロセッサが、
パラメータの前記セットに基づいて、前記メッセージペイロードが前記コンテンツアイテム要求を含むという決定に応答して、コンテンツアイテムを選択し、前記受信したコンテンツアイテム通信に関連付けられた当事者にコンテンツアイテムを送信するようにさらに構成される、請求項16に記載のシステム。
【請求項１８】
前記1つまたは複数のプロセッサが、
前記コンテンツアイテム通信の前記メッセージペイロードが、アプリケーションがクライアントデバイスにインストールされたことを示すアプリケーションインストール通知を含むことを決定することによって、前記コンテンツアイテム通信を処理するように構成される、請求項11に記載のシステム。
【請求項１９】
前記1つまたは複数のプロセッサが、
前記コンテンツアイテム通信が前記アプリケーションインストール通知を含むという決定に応答して、前記コンテンツアイテム通信に関連付けられたクレジット値を更新するように構成される、請求項18に記載のシステム。
【請求項２０】
前記1つまたは複数のプロセッサが、
16バイトの長さを有する前記第1のコンテンツアイテムデバイス識別子を含むコンテンツアイテム通信を受信するように構成される、請求項11に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2019年5月13日に出願された米国仮特許出願第62/847,016号の優先権を主張する、2019年8月8日に出願された米国特許出願第16/536,174号の優先権を主張し、それぞれの内容は、その全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
インターネットなどのコンピュータネットワーク環境では、サードパーティコンテンツプロバイダが、エンドユーザコンピューティングデバイス上に表示するためのサードパーティコンテンツアイテムを提供する。これらのサードパーティコンテンツアイテム、たとえば広告は、それぞれのパブリッシャに関連付けられたウェブページに表示することができる。これらのサードパーティコンテンツアイテムは、コンテンツアイテムを提供したサードパーティコンテンツプロバイダを識別するコンテンツを含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００３】
少なくとも1つの態様は、コンテンツアイテム動作を処理することを対象とする。本方法は、1つまたは複数のプロセッサを含むデータ処理システムによって、コンピューティングデバイスから、第1のコンテンツアイテム通信を受信するステップであって、コンテンツアイテム通信が、第1のコンテンツアイテムデバイス識別子と、コンピューティングデバイスに関連付けられた公開鍵、認証トークンのタイムスタンプ、メッセージペイロード、およびデジタル署名を含む認証トークンとを含む、ステップを含む。本方法は、データ処理システムによって、公開鍵、タイムスタンプ、およびメッセージペイロードを使用してデジタル署名を検証するステップをさらに含む。本方法はまた、データ処理システムによって、公開鍵の暗号化ハッシュに基づいて第2のコンテンツアイテムデバイス識別子を生成するステップを含む。本方法は、データ処理システムによって、第2のコンテンツアイテムデバイス識別子が第1のコンテンツアイテムデバイス識別子と一致することを決定するステップをさらに含む。本方法はまた、データ処理システムによって、デジタル署名の検証に応答して、および第2のコンテンツアイテムデバイス識別子が第1のコンテンツアイテムデバイス識別子と一致するという決定に応答して、メッセージペイロードに基づいて第1のコンテンツアイテム通信を処理するステップを含む。
【０００４】
いくつかの実装形態では、メッセージペイロードは、データ処理システムにおいてデータベースに記憶されているユーザデータを消去するための要求を含む。本方法は、データ処理システムによって、タイムスタンプがあらかじめ定められた時間値の範囲内の値を有することを決定するステップをさらに含む。本方法はまた、データ処理システムによって、デジタル署名を検証するステップに基づいて、およびタイムスタンプがあらかじめ定められた時間値の範囲内の値を有するという決定に基づいて、コンテンツアイテム通信が有効であることを決定するステップを含む。本方法は、データ処理システムによって、コンテンツアイテム通信が有効であるという決定に応答して、コンテンツアイテムデバイス識別子に関連付けられたデータを消去するために、データベースにアクセスするステップをさらに含む。
【０００５】
いくつかの実装形態では、メッセージペイロードは、コンテンツアイテム要求と、コンテンツアイテムの要求に関連付けられたパラメータのセットとを含む。本方法は、データ処理システムによって、タイムスタンプがあらかじめ定められた時間値の範囲内の値を有することを決定するステップをさらに含む。本方法は、データ処理システムによって、パラメータのセットの値が記憶されたパラメータと一致することを決定するステップをさらに含む。本方法は、データ処理システムによって、タイムスタンプがあらかじめ定められた時間値の範囲内の値を有するという決定、およびパラメータのセットの値が記憶されたパラメータと一致するという決定に応答して、コンテンツアイテムを選択するステップと、コンテンツアイテムを受信したコンテンツアイテム動作に関連付けられたクライアントデバイスに送信するステップとをさらに含む。
【０００６】
いくつかの実装形態では、メッセージペイロードは、アプリケーションがクライアントデバイスにインストールされたことを示すアプリケーションインストール通知を含む。本方法は、データ処理システムによって、タイムスタンプがあらかじめ定められた時間値の範囲内の値を有することを決定するステップをさらに含む。本方法はまた、データ処理システムによって、タイムスタンプがあらかじめ定められた時間値の範囲内の値を有するという決定に基づいて、コンテンツアイテムに関連付けられたクレジット値を更新するためにデータベースを更新するステップを含む。
【０００７】
いくつかの実装形態では、コンテンツアイテムデバイス識別子は、コンテンツアイテム通信が受信されるクライアントデバイスを一意に識別する。いくつかの実装形態では、コンテンツアイテムデバイス識別子は、16バイトの長さを有する。
【０００８】
これらおよび他の態様および実装形態については、以下で詳細に説明する。前述の情報および以下の詳細な説明は、様々な態様および実装形態の例示的な例を含み、請求される態様および実装形態の性質および特性を理解するための概要または枠組みを提供する。図面は、様々な態様および実装形態の例示およびさらなる理解を提供し、本明細書に組み込まれ、その一部を構成する。
【０００９】
添付の図面は、一定の縮尺で描かれることを意図していない。様々な図面における同様の参照番号および名称は、同様の要素を示す。明確にするために、すべてのコンポーネントがすべての図面において符号が付されるとは限らない。
【図面の簡単な説明】
【００１０】
【図１】不正防止コンテンツアイテム動作を管理するための環境の実装形態を示すブロック図である。
【図２】例示的な実装形態による、クライアントデバイス125の例示的な実装形態を示すブロック図である。
【図３】例示的な実施形態による、コンテンツアイテムデバイス識別子を生成するための例示的なプロセスの流れ図である。
【図４】図2に示される認証トークンジェネレータによって生成される認証トークンの表現を示す図である。
【図５】例示的な実装形態による、不正なデータの消去要求を軽減するために実装することができる例示的なプロセスの流れ図である。
【図６】例示的な実装形態による、図1に示されるデータ処理システムによって受信された不正なコンテンツアイテム要求を軽減するために実装することができる例示的なプロセスの流れ図である。
【図７】例示的な実装形態による、図1に示されるデータ処理システム110によって受信される不正なアプリケーションインストール通知を軽減するために実装することができる例示的なプロセスの流れ図である。
【図８】本明細書で論じられるコンピュータシステムのいずれかを実装するために採用され得る例示的なコンピュータシステムの一般的なアーキテクチャを示す図である。
【発明を実施するための形態】
【００１１】
以下は、不正防止コンテンツアイテム動作を管理する方法、装置、およびシステムに関連する様々な概念、およびそれらの実装形態のより詳細な説明である。説明された概念は任意の特定の実装方法に限定されないため、上記で紹介され、以下でより詳細に議論される様々な概念は、多くの方法のいずれかにおいて実装され得る。
【００１２】
図1は、不正防止コンテンツアイテム動作を管理するための環境100の一実装形態を示すブロック図である。環境100は、少なくとも1つのデータ処理システム110を含む。データ処理システム110は、少なくとも1つのプロセッサ(または、処理回路)およびメモリを含むことができる。メモリは、プロセッサ上で実行されると、プロセッサに本明細書に記載の動作のうちの1つまたは複数を実行させるプロセッサ実行可能命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはそれらの組合せを含むことができる。メモリは、電子的、光学的、磁気的なストレージもしくは送信デバイス、またはプロセッサにプログラム命令を提供することができる任意の他のストレージもしくは送信デバイスを含むことができるが、これらに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、光メディア、またはプロセッサが命令を読み取ることができる任意の他の適切なメモリをさらに含むことができる。命令は、任意の適切なコンピュータプログラミング言語からのコードを含むことができる。データ処理システム110は、様々な機能を実行することができる1つまたは複数のコンピューティングデバイスまたはサーバを含むことができる。いくつかの実装形態では、データ処理システム110は、オークションをホストするように構成された広告オークションシステムを含むことができる。いくつかの実装形態では、データ処理システム110は、広告オークションシステムを含まないが、ネットワーク105を介して広告オークションシステムと通信するように構成される。
【００１３】
ネットワーク105は、インターネット、ローカル、ワイド、メトロまたは他のエリアネットワーク、イントラネット、衛星ネットワーク、音声またはデータモバイル電話通信ネットワークなどの他のコンピュータネットワーク、およびそれらの組合せなどのコンピュータネットワークを含むことができる。環境100のデータ処理システム110は、ネットワーク105を介して、たとえば、少なくとも1つのコンテンツプロバイダコンピューティングデバイス115、少なくとも1つのコンテンツパブリッシャコンピューティングデバイス120、または少なくとも1つのクライアントデバイス125と通信することができる。ネットワーク105は、クライアントデバイス125、データ処理システム110、および1つまたは複数のコンテンツソース、たとえば、とりわけウェブサーバ、広告サーバとの間で情報を中継する任意の形態のコンピュータネットワークであり得る。たとえば、ネットワーク105は、インターネットおよび/あるいは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、または他のタイプのデータネットワークなどの他のタイプのデータネットワークを含み得る。ネットワーク105はまた、ネットワーク105内でデータを受信および/または送信するように構成された任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)を含むことができる。ネットワーク105は、任意の数のハードワイヤードおよび/またはワイヤレス接続をさらに含むことができる。たとえば、クライアントデバイス125は、(たとえば、光ファイバケーブル、CAT5ケーブルなどを介して)ネットワーク105内の他のコンピューティングデバイスにハードワイヤードされたトランシーバとワイヤレスで(たとえば、WiFi、セルラー、無線などを介して)通信することができる。
【００１４】
コンテンツプロバイダコンピューティングデバイス115は、クライアントデバイス125において情報リソース上に表示するための広告などのコンテンツアイテムを提供するために、コンテンツプロバイダエンティティによって運用されるサーバまたは他のコンピューティングデバイスを含むことができる。コンテンツプロバイダコンピューティングデバイス115によって提供されるコンテンツは、プライマリコンテンツ、たとえば、コンテンツパブリッシャコンピューティングデバイス120によって提供されるコンテンツ、を含むウェブサイトまたはウェブページなどの情報リソース上に表示するためのサードパーティコンテンツアイテムまたはクリエイティブ(たとえば、広告)を含むことができる。コンテンツアイテムはまた、検索結果のウェブページに表示することができる。たとえば、コンテンツプロバイダコンピューティングデバイス115は、ウェブページのプライマリコンテンツが会社によって提供される当該会社のウェブページなどのコンテンツウェブページのコンテンツスロットにおいて表示するための、あるいは検索エンジンによって提供される検索結果のランディングページに表示するための広告または他のコンテンツアイテムのソースを提供するか、またはそのソースであり得る。コンテンツプロバイダコンピューティングデバイス115に関連付けられたコンテンツアイテムは、スマートフォンまたは他のクライアントデバイス125上のアプリケーション(ゲームアプリケーション、全地球測位システム(GPS)もしくは地図アプリケーション、または他のタイプのアプリケーションなど)の実行の一部として表示されるコンテンツなどの、ウェブページ以外の情報リソース上に表示することができる。
【００１５】
コンテンツパブリッシャコンピューティングデバイス120は、ネットワーク105を介して表示するためのプライマリコンテンツを提供するために、コンテンツパブリッシングエンティティによって運用されるサーバまたは他のコンピューティングデバイスを含むことができる。たとえば、コンテンツパブリッシャコンピューティングデバイス120は、ウェブページ上に表示するためのプライマリコンテンツを提供するウェブページオペレータを含むことができる。プライマリコンテンツは、コンテンツパブリッシャコンピューティングデバイス120によって提供されるもの以外のコンテンツを含むことができ、ウェブページは、コンテンツプロバイダコンピューティングデバイス115からのサードパーティコンテンツアイテム(たとえば、広告)の表示のために構成されたコンテンツスロットを含むことができる。たとえば、コンテンツパブリッシャコンピューティングデバイス120は、会社のウェブサイトを運用することができ、ウェブサイトのウェブページ上に表示するためにその会社に関するコンテンツを提供することができる。ウェブページは、コンテンツプロバイダコンピューティングデバイス115の広告などのサードパーティコンテンツアイテムの表示のために構成されたコンテンツスロットを含むことができる。いくつかの実装形態では、コンテンツパブリッシャコンピューティングデバイス120は、検索エンジンウェブサイトを運用する検索エンジンオペレータの検索エンジンコンピューティングデバイス(たとえば、サーバ)を含む。検索エンジンウェブページ(たとえば、結果またはランディングウェブページ)のプライマリコンテンツは、検索結果、ならびにコンテンツプロバイダコンピューティングデバイス115からのコンテンツアイテムなどのコンテンツスロットにおいて表示されるサードパーティコンテンツアイテムを含むことができる。いくつかの実装形態では、コンテンツパブリッシャコンピューティングデバイス120は、ビデオコンテンツを提供するためのサーバを含むことができる。
【００１６】
クライアントデバイス125は、コンテンツパブリッシャコンピューティングデバイス120によって提供されるコンテンツ(たとえば、プライマリウェブページコンテンツ、または他の情報リソース)およびコンテンツプロバイダコンピューティングデバイス115によって提供されるコンテンツ(たとえば、ウェブページのコンテンツスロットにおいて表示するように構成された広告などのサードパーティコンテンツアイテム)などのデータを表示するために、ネットワーク105を介して通信するように構成されたコンピューティングデバイスを含むことができる。クライアントデバイス125、コンテンツプロバイダコンピューティングデバイス115、およびコンテンツパブリッシャコンピューティングデバイス120は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、携帯情報端末、モバイルデバイス、消費者コンピューティングデバイス、サーバ、クライアント、デジタルビデオレコーダ、テレビ用のセットトップボックス、ビデオゲーム機、またはネットワーク105を介して通信するように構成された任意の他のコンピューティングデバイスを含むことができる。クライアントデバイス125は、エンドユーザがコンテンツを受信するための要求を提出することができる通信デバイスであり得る。要求は検索エンジンへの要求であり得、要求は検索クエリを含むことができる。いくつかの実装形態では、要求は、ウェブページにアクセスするための要求を含むことができる。
【００１７】
コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125は、プロセッサおよびメモリ、すなわち処理回路を含むことができる。メモリは、プロセッサ上で実行されると、プロセッサに本明細書に記載の動作のうちの1つまたは複数を実行させる機械命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはそれらの組合せを含むことができる。メモリは、電子的、光学的、磁気的なストレージもしくは送信デバイス、またはプロセッサにプログラム命令を提供することができる任意の他のストレージもしくは送信デバイスを含むことができるが、これらに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、光メディア、またはプロセッサが命令を読み取ることができる任意の他の適切なメモリをさらに含み得る。命令は、任意の適切なコンピュータプログラミング言語からのコードを含むことができる。
【００１８】
コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125はまた、1つまたは複数のユーザインターフェースデバイスを含むことができる。一般に、ユーザインターフェースデバイスは、感覚情報(たとえば、ディスプレイ上の視覚化、1つまたは複数の音など)を生成することによってユーザにデータを伝達し、および/またはユーザから受信した感覚情報を電子信号に変換する任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクなど)を指す。1つまたは複数のユーザインターフェースデバイスは、様々な実装形態に応じて、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125の筐体の内部にある(たとえば、内蔵ディスプレイ、マイクなど)か、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125の筐体の外部にある(たとえば、ユーザコンピューティングデバイス115に接続されたモニタ、ユーザコンピューティングデバイス115に接続されたスピーカなど)ことができる。たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125は、ネットワーク105を介して、1つまたは複数のコンテンツソースから、および/またはデータ処理システム110から受信したウェブページデータを使用してウェブページを視覚的に表示する電子ディスプレイを含むことができる。いくつかの実装形態では、コンテンツ配置キャンペーンマネージャまたは広告主などのサードパーティコンテンツプロバイダは、コンテンツプロバイダコンピューティングデバイス115を介してデータ処理システム110と通信することができる。いくつかの実装形態では、広告主は、コンテンツプロバイダコンピューティングデバイス115のユーザインターフェースデバイス上に表示されるユーザインターフェースを介してデータ処理システム110と通信することができる。
【００１９】
データ処理システム110は、少なくとも1つのサーバを含むことができる。たとえば、データ処理システム110は、少なくとも1つのデータセンタまたはサーバファームに配置された複数のサーバを含むことができる。いくつかの実装形態では、データ処理システム110は、サードパーティコンテンツ配置システム、たとえば、広告サーバまたは広告配置システムを含むことができる。データ処理システム110は、少なくとも1つのコンテンツ要求コンポーネント130、少なくとも1つのコンテンツ選択コンポーネント135、少なくとも1つの属性コンポーネント150、および少なくとも1つのデータベース145を含むことができる。コンテンツ要求コンポーネント130、コンテンツ選択コンポーネント135、および属性コンポーネント150はそれぞれ、少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、アプライアンス、または、データベース145、およびネットワーク105を介して他のコンピューティングデバイス(たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、またはクライアントデバイス125)と通信するように構成されたプログラマブル論理アレイなどの他の論理デバイスを含むことができる。
【００２０】
コンテンツ要求コンポーネント130、コンテンツ選択コンポーネント135、および属性コンポーネント150は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むか、または実行することができる。コンテンツ要求コンポーネント130、コンテンツ選択コンポーネント135、および属性コンポーネント150は、別個のコンポーネント、単一のコンポーネント、またはデータ処理システム110の一部であり得る。コンテンツ要求コンポーネント130、コンテンツ選択コンポーネント135、および属性コンポーネント150は、1つまたは複数のスクリプトを実行するように構成された1つまたは複数のプロセッサなどのソフトウェアおよびハードウェアの組合せを含むことができる。
【００２１】
データ処理システム110はまた、1つまたは複数のコンテンツリポジトリまたはデータベース145を含むことができる。データベース145は、データ処理システム110に対してローカルであり得る。いくつかの実装形態では、データベース145は、データ処理システム110から遠隔であることができるが、ネットワーク105を介してデータ処理システム110と通信することができる。データベース145は、とりわけ、クライアントデバイス125にサービスを提供するために、とりわけ、ウェブページ、ウェブページの一部、サードパーティコンテンツアイテム(たとえば、広告)、およびコンテンツスロット挿入スクリプトを含むことができる。いくつかの実装形態では、データベース145はまた、コンテンツアイテムデバイス識別子に関連して記憶されたユーザ情報(以下で説明される)、およびクライアントデバイスのコンテンツアイテムデバイス識別子に関連付けられたコンテンツアイテム要求を記憶する要求ログを含むことができる。
【００２２】
コンテンツ要求コンポーネント130は、クライアントデバイス125からコンテンツの要求を受信することができる。コンテンツの要求は、情報リソースの要求、1つまたは複数のサードパーティコンテンツアイテムの要求、コンテンツスロット挿入スクリプトの要求、またはそれらの組合せを含むことができる。いくつかの実装形態では、コンテンツの要求は、サードパーティコンテンツの要求を含むことができる。いくつかの実装形態では、サードパーティコンテンツの要求は、サードパーティコンテンツが表示される情報リソースのアドレスまたは識別子を含むことができる。サードパーティコンテンツの要求はまた、コンテンツの要求に応答して提供するコンテンツを決定するためにデータ処理システム110によって使用され得る1つまたは複数のパラメータを含むか、または識別することができる。パラメータは、要求されたコンテンツを挿入するコンテンツスロットのサイズを識別することができる。パラメータは、情報リソースに関連付けられたコンテンツのタイプ、要求されたサードパーティコンテンツのタイプ(たとえば、テキスト、画像、ビデオなど)、クライアントデバイス情報、要求されたサードパーティコンテンツアイテムのサイズ情報、またはそれらの組合せを識別することができる。いくつかの実装形態では、要求は、コンテンツスロット挿入スクリプトを識別することができる。いくつかの実装形態では、コンテンツの要求は、リソース情報のコンテンツパブリッシャがコンテンツスロット挿入サービスにサブスクライブしているか、またはオプトインしていることを示す識別子を含むことができる。
【００２３】
いくつかの実装形態では、コンテンツの要求は、情報リソースの要求を含むことができる。情報リソースの要求は、情報リソースのアドレスまたは識別子を含むことができる。たとえば、情報リソースの要求は、ウェブページなどの特定のリソースのユニフォームリソースロケータ(URL)(たとえば、「http://www.example.com」)を含むことができる。情報リソースの要求はまた、クライアントデバイス情報(デバイスタイプ、デバイス識別子、またはそれらの組合せなど)を含むことができる。
【００２４】
いくつかの実装形態では、コンテンツの要求は、コンテンツスロット挿入スクリプトの要求を含むことができる。いくつかの実装形態では、コンテンツスロット挿入スクリプトの要求は、要求されたスクリプトの表示、リソース情報のアドレスもしくは識別子、またはそれらの組合せを含むことができる。いくつかの実装形態では、コンテンツスロット挿入スクリプトの要求により、コンテンツスロット挿入スクリプトを識別することができる。いくつかの実装形態では、コンテンツスロット挿入スクリプトの要求は、リソース情報のコンテンツパブリッシャがコンテンツスロット挿入サービスにサブスクライブしているか、またはオプトインしていることを示す識別子を含むことができる。いくつかの実装形態では、コンテンツ要求コンポーネント130は、コンテンツの要求を解析し、コンテンツの要求をコンテンツ選択コンポーネント135またはスクリプトプロバイダコンポーネントに転送することを決定するように構成することができる。たとえば、コンテンツスロット挿入スクリプトが、受信されたコンテンツの要求に応答してクライアントデバイス125に送信されると決定された場合、コンテンツ要求コンポーネント130は、コンテンツの要求をスクリプトプロバイダコンポーネントに転送することができる。そうでなければ、コンテンツ要求コンポーネント130は、コンテンツの要求をコンテンツ選択コンポーネント135に転送することができる。いくつかの実装形態では、コンテンツ要求コンポーネント130は、コンテンツの要求をコンテンツ選択コンポーネント135とスクリプトプロバイダコンポーネントの両方に転送することを決定することができる。コンテンツ要求コンポーネント130は、コンテンツの要求のタイプ(たとえば、情報リソースの要求、サードパーティコンテンツの要求、もしくはスロット挿入スロットスクリプトの要求)、コンテンツ要求内のインジケータ(たとえば、コンテンツスロット挿入スクリプトを示すインジケータもしくは情報リソースがコンテンツスロット挿入に適格であることを示すインジケータ)、コンテンツの要求における情報リソース識別子、またはその組合せに基づいて、スクリプトがクライアントデバイス125に送信されるべきかどうかを決定することができる。いくつかの実装形態では、コンテンツ要求コンポーネント130は、情報リソースの識別を情報リソース識別子(たとえば、コンテンツスロット挿入スクリプトを受信するために適格な情報リソース識別子)のリストと比較することによって、スクリプトがクライアントデバイス125に送信されるかどうかを決定することができる。いくつかの実装形態では、情報リソース識別子はURLにすることができる。いくつかの実装形態では、情報リソース識別子は、情報リソースが属するドメインにすることができる。いくつかの実装形態では、情報リソース識別子は、情報リソースをホストしているサーバに対応するIPアドレスにすることができる。いくつかの実装形態では、コンテンツ要求コンポーネント130は、スクリプトがクライアントデバイス125に送信されるべきかどうかをチェックすることなく、コンテンツの要求をコンテンツ選択コンポーネント135に自動的に転送することができる。
【００２５】
コンテンツ選択コンポーネント135は、受信したコンテンツの要求に応答してクライアントデバイス125に送信されるべきコンテンツを決定するように構成することができる。コンテンツ選択コンポーネント135は、コンテンツの要求に含まれる情報に基づいて、クライアントデバイス125に送信されるべきコンテンツを決定することができる。たとえば、情報リソースの要求を受信すると、コンテンツ選択コンポーネント135は、クライアントデバイスに送信するコンテンツを決定するために、コンテンツの要求における情報リソースのアドレスまたは識別子を使用することができる。
【００２６】
1つまたは複数のサードパーティコンテンツアイテムの要求を受信する場合、コンテンツ選択コンポーネント135は、サードパーティコンテンツが提示されるべき情報リソースのアドレスまたは識別子、情報リソースのコンテンツタイプ情報(たとえば、スポーツ、ニュース、音楽、映画、旅行など)、サードパーティのコンテンツアイテムが表示されるべきスロットのサイズ情報、クライアントデバイス情報(たとえば、デバイスタイプ、デバイス識別子、デバイスの場所など)に基づいてサードパーティコンテンツアイテムを選択することができる。いくつかの実装形態では、コンテンツアイテムの要求はまた、コンテンツアイテムトランザクションの目的のためにクライアントデバイス125のために一意に生成されるコンテンツアイテムデバイス識別子を含み得る。たとえば、コンテンツアイテムデバイス識別子は、Androidがサポートするデバイスにおいて利用される広告識別子(ADID)、Appleがサポートするデバイスにおいて利用される広告主の識別子(IDFA)、または広告主がユーザを識別するために利用することができる任意の他の識別子を含むことができる。コンテンツアイテムデバイス識別子は、クライアントデバイス125に関連付けられた一意のデバイス識別子(UDID)とは異なる場合がある。たとえば、コンテンツアイテムデバイス識別子は、コンテンツアイテムプロバイダが、UDIDに関連するアクティビティの追跡と同様に、コンテンツアイテムデバイス識別子に関連するアクティビティを追跡することを可能にする。しかしながら、ユーザが追跡をオフにできないUDIDとは異なり、ユーザはコンテンツアイテムデバイス識別子に基づいてアクティビティの追跡を容易にオフにすることができる。さらに、クライアントデバイス125に一意であり、その露出は通常、クライアントデバイス125を使用するユーザによって制御できないUDIDとは異なり、コンテンツアイテムデバイス識別子は、ユーザリセット可能であるとともに一意であり得る。これにより、ユーザが、所望の追跡設定を設定することによって、コンテンツアイテムデバイス識別子に基づいてターゲットコンテンツアイテムの配信をオプトアウトすることが可能になる。コンテンツアイテムデバイス識別子は、ユーザによって変更可能であり、ユーザに関連付けられた複数のデバ
イス間で共通であり得る。コンテンツ選択コンポーネント135によって受信されたコンテンツアイテムの要求は、コンテンツアイテムデバイス識別子を含むことができ、コンテンツ選択コンポーネント135は、たとえば、コンテンツアイテムデバイス識別子に関連する過去のアクティビティに基づいて、クライアントデバイス125において提示されるべきコンテンツアイテムを選択するために利用することができる。
【００２７】
いくつかの実装形態では、サードパーティコンテンツの要求はまた、情報リソース上にサードパーティコンテンツアイテムを表示するための最小収益額(または、最小入札額)を含むことができる。いくつかの実装形態では、コンテンツ選択コンポーネント135は、広告オークションシステムと通信し、クライアントデバイスから受信したサードパーティコンテンツの要求に含まれる広告オークションシステム情報を提供することができる。コンテンツ選択コンポーネント135はまた、サードパーティコンテンツの要求に含まれる情報を提供することに応答して、広告オークションシステムから1つまたは複数のサードパーティコンテンツアイテムを受信することができる。いくつかの実装形態では、コンテンツ選択コンポーネント135は、データベース145にアクセスし、クライアントデバイス125に送信するためのコンテンツを検索することができる。
【００２８】
いくつかの実装形態では、コンテンツ選択コンポーネント135は、コンテンツの要求に応答して、スクリプトがクライアントデバイス125に送信されるべきかどうかを決定するように構成することができる。コンテンツ選択コンポーネント135は、コンテンツ要求のタイプ(たとえば、情報リソースの要求、サードパーティコンテンツの要求、もしくはスロット挿入スロットスクリプトの要求)、コンテンツの要求内のインジケータ(たとえば、コンテンツスロット挿入スクリプトを示すインジケータもしくは情報リソースがコンテンツスロット挿入に適格であることを示すインジケータ)、コンテンツの要求における情報リソース識別子、またはその組合せに基づいて、スクリプトがクライアントデバイス125に送信されるべきかどうかを決定することができる。いくつかの実装形態では、コンテンツ選択コンポーネント135は、情報リソースの識別を情報リソース識別子(たとえば、コンテンツスロット挿入スクリプトを受信するために適格な情報リソース識別子)のリストと比較することによって、スクリプトがクライアントデバイス125に送信されるかどうかを決定することができる。スクリプトがクライアントデバイス125に送信されるべきであることを決定すると、コンテンツ選択コンポーネント135は、コンテンツの要求またはその表示をスクリプトプロバイダコンポーネントに転送することができる。いくつかの実装形態では、コンテンツ選択コンポーネント135は、コンテンツスロット挿入スクリプトなどの、スクリプトとともにクライアントデバイス125に送信するべきサードパーティコンテンツアイテムを依然として選択することができる。
【００２９】
属性コンポーネント150は、たとえば、アプリケーションインストールクレーム要求およびアプリケーションインストールクレジットクレーム要求などの属性の要求を処理することができる。いくつかの実装形態では、コンテンツアイテムは、クライアントデバイス125上で実行されるアプリケーションによって提供することができる。クライアントデバイス上でコンテンツアイテムをレンダリングするアプリケーションは、コンテンツアイテムとの対話を監視することができるソフトウェア開発キット(SDK)を含むことができる。たとえば、クライアントデバイス125上でレンダリングされたコンテンツアイテムがユーザによってクリックされた場合、SDKは、ユーザがクライアントデバイス125においてコンテンツアイテムをクリックしたコンテンツアイテムを作成したコンテンツアイテムネットワークに通知を送信することができる。コンテンツアイテムは、たとえば、メッセージを含むか、またはクライアントデバイス125にアプリケーションをインストールするためのリンクをユーザに提供することができる。ユーザがクライアントデバイス125にアプリケーションをインストールすると、アプリケーションは、アプリケーションがクライアントデバイス125にインストールされたことを示す通知を属性コンポーネント150に送信することができる属性SDKを含むことができる。属性コンポーネント150は、クライアントデバイス125にインストールされたアプリケーションが、それぞれのコンテンツアイテムネットワークによって作成されたコンテンツアイテムによって促進されたかどうかを決定するために、コンテンツアイテムキャンペーンの一部として、複数のコンテンツアイテムネットワークにクエリを実行することができる。適切なコンテンツアイテムネットワークは、クレジットの要求で応答することができる。属性SDKからのアプリケーションインストール通知とコンテンツアイテムネットワークからのクレジット要求との両方が、属性コンポーネント150が不正なインストール通知と不正なクレジット要求を軽減するために利用することができる認証トークン(以下で説明)を含むことができる。
【００３０】
データ処理システム110は、コンテンツアイテムデバイス識別子を含む様々な不正な取引を軽減することができる。たとえば、不正な取引は、コンテンツアイテムのターゲティング、属性、ならびにユーザデータの透明性および制御を広く含むことができる。不正なコンテンツアイテムのターゲティングは、ハイジャックされたコンテンツアイテムデバイス識別子を使用した要求、およびコンテンツアイテムデバイス識別子以外の不正な要求パラメータを使用した要求を含むことができる。場合によっては、いくつかのエンティティが、不正なコンテンツアイテムデバイス識別子を生成し、コンテンツ要求コンポーネント130に要求を送信し得る。これは、データ処理システム110の負荷を増大させ、パフォーマンスに影響を与える可能性がある。いくつかの実装形態では、いくつかのエンティティが、コンテンツ要求コンポーネント130に送信される要求において、たとえば、アプリ内要求のアプリケーション名、ウェブ要求のURLなどの、コンテンツアイテムデバイス識別子以外のパラメータを修正し得る。そのようなシナリオでは、データ処理システム110は、たとえ要求が不正であっても要求を処理し得、データ処理システム110のパフォーマンスに影響を与える。
【００３１】
不正な属性は、不正なアプリケーションインストールのクレジット請求および不正なアプリケーションインストール通知を含む場合がある。いくつかの実装形態では、アプリケーションがクライアントデバイス125にインストールされた後、アプリケーションがクライアントデバイス125において最初に起動されると、アプリケーションに埋め込まれた属性SDKが、属性要求を属性コンポーネント150に送信する。属性要求の受信に応答して、属性コンポーネント150は、アプリケーションのインストールに対してクレジットされるべきコンテンツアイテムネットワークを決定するために、コンテンツプロバイダ115などの複数のコンテンツアイテムネットワークにクエリを実行することができる。いくつかの実装形態では、属性は、ラストクリックモデルに基づくことができる。いくつかの不正なコンテンツアイテムネットワークは、不正なクレジット要求を属性コンポーネント150に送信し得る。いくつかのそのような例では、データ処理システム110は、たとえ要求が不正であってもクレジット要求を処理し、不正なコンテンツアイテムネットワークをクレジットし、それによってデータ処理システム110のパフォーマンスに悪影響を与える可能性がある。
【００３２】
いくつかの他の実装形態では、不正なエンティティが、不正なアプリケーションのインストール通知を属性コンポーネント150に送信し得る。すなわち、エンティティは、たとえクライアントデバイス125にアプリケーションがインストールされていなくても、アプリケーションインストールの通知を送信し得る。インストールの数に関連付けられた金銭的インセンティブがある場合、不正なエンティティは大量の通知を送信するよう駆り立てられる可能性がある。データ処理システム110は、これらの通知を処理し、たとえば、たとえ通知が不正であっても通知ごとにコンテンツアイテムネットワークへのクエリを生成し、それによってデータ処理システム110のパフォーマンスに悪影響を与える可能性がある。
【００３３】
いくつかの実装形態では、不正なエンティティが、不正な消去要求を送信することによって、データ処理システム110に記憶されたユーザデータ165の完全性を危うくする可能性がある。不正なエンティティは、クライアントデバイス125のコンテンツアイテムデバイス識別子をハイジャックし、クライアントデバイス125に知られることなくデータ処理システム110にデータ消去要求を送信し得る。これにより、データ処理システム110は、クライアントデバイス125に関連付けられたユーザデータを不法に消去し、それによって、データ処理システム110に記憶されたデータの完全性に影響を及ぼし得る。さらに、データ処理システム110が不正な要求を処理しているとき、データ処理システム110のパフォーマンスは悪影響を受ける可能性がある。いくつかの他の例では、不正なエンティティは、コンテンツアイテムデバイス識別子に関連付けられたデータ処理システム110を所有するユーザ情報を提供するために、いくつかのクライアントデバイス125のコンテンツアイテムデバイス識別子(公開されている)を収集し、データ処理システムに不正な要求を送信し得る。この場合も、要求は、クライアントデバイス125などのクライアントデバイスの許可なしに行われ、データ処理システム110に記憶されているデータの完全性に悪影響を及ぼし、データ処理システム110のパフォーマンスに悪影響を与える可能性がある。
【００３４】
いくつかの実装形態では、不正なエンティティが、コンテンツアイテムデバイス識別子以外の不正に修正されたパラメータを用いてデータ処理システム110に要求を送信し得、パラメータは、アプリケーション内要求のアプリケーション名、ウェブ要求のURLなどを含むことができる。これを行う不正なエンティティの動機は不法な金銭的利益のためである可能性があるが、データ処理システム110に記憶されたデータの完全性ならびにデータ処理システム110のパフォーマンスに悪影響が及ぶ可能性がある。
【００３５】
本明細書で説明するように、上述の不正なシナリオによるデータの完全性およびパフォーマンスへの悪影響は、自己認証機能を有するコンテンツアイテムデバイス識別子を使用することによって軽減することができ、データ処理システム110は、要求または通知において受信されたコンテンツアイテムデバイス識別子が、意図されたクライアントデバイス125に合法的に関連付けられていることを確認することができる。さらに、完全性機能を要求および通知に組み込むことができるので、要求または通知の不正な修正または変更をデータ処理システム110によって検出することができる。
【００３６】
図2は、クライアントデバイス125の例示的な実装形態を示すブロック図である。クライアントデバイス125は、コンテンツアイテムデバイス識別子ジェネレータ202、認証トークンジェネレータ204、およびストレージ206を含むことができる。さらに、クライアントデバイス125は、サードパーティアプリケーション208を実行することができ、その少なくとも1つは、たとえば、データ処理システム110にインストール通知を送信することができる属性SDKなどのSDK210を含むことができる。いくつかの実装形態では、コンテンツアイテムデバイス識別子ジェネレータ202は、クライアントデバイス125のオペレーティングシステムによって実行することができ、オペレーティングシステムの例は、これらに限定されないが、Androidオペレーティングシステム、およびiOSオペレーティングシステムを含むことができる。いくつかの実装形態では、コンテンツアイテムデバイス識別子ジェネレータ202は、アプリケーション208がコンテンツアイテムデバイス識別子の生成を要求するためにインターフェースすることができるオペレーティングシステムによって提供されるアプリケーションプログラミングインターフェースであり得る。いくつかの実装形態では、アプリケーション208がデータ処理システム110に要求または通知を送信するたびに、アプリケーション208は、要求または通知にクライアントデバイス125のコンテンツアイテムデバイス識別子を含まなければならない場合がある。アプリケーション208は、コンテンツアイテムデバイス識別子を生成するためにコンテンツアイテムデバイス識別子ジェネレータ202を要求し得、これは、データ処理システム110に送信される要求または通知に含めることができる。
【００３７】
図3は、コンテンツアイテムデバイス識別子を生成するための例示的なプロセス300の流れ図である。具体的には、プロセス300は、図2に示されるコンテンツアイテムデバイス識別子ジェネレータ202によって実行することができる。プロセス300は、コンテンツアイテムデバイス識別子の要求を受信すること(302)と、まだ生成されていない場合は公開鍵と秘密鍵のペアを生成すること(304)と、公開鍵を暗号化ハッシュすること(306)と、必要に応じて暗号化ハッシュをあらかじめ定められたビット長に切り捨てること(308)とを含む。
【００３８】
コンテンツアイテムデバイス識別子ジェネレータ202は、アプリケーション208のうちの1つなどのアプリケーションからコンテンツアイテムデバイス識別子を生成するための要求を受信することができる(302)。コンテンツアイテムデバイス識別子を生成するための要求は、アプリケーション208またはSDK210がデータ処理システム110に送信することを意図している通知または要求に起因する可能性がある。場合によっては、アプリケーション208またはSDK210は、コンテンツアイテムデバイス識別子を要求するために、クライアントデバイス125のオペレーティングシステムによって提供されるAPI(たとえば、AndroidオペレーティングシステムにおけるgetId())を呼び出すことができる。本明細書で論じられる不正な軽減技法を組み込まないシステムでは、コンテンツアイテムデバイス識別子は、クライアントデバイス125のストレージ206に記憶される。アプリケーション208またはSDK210から要求を受信すると、オペレーティングシステムは、単にストレージ206からコンテンツアイテムデバイス識別子にアクセスし、コンテンツアイテムデバイス識別子をアプリケーション208またはSDK210に提供する。記憶されたコンテンツアイテムデバイス識別子は、ランダムに生成することができ、またユーザまたはクライアントデバイス125に一意であり得る。コンテンツアイテムデバイス識別子はまた、固定ビット長、たとえば16バイトを有することができる。コンテンツアイテムデバイス識別子は、英数字記号を含む文字列形式を有することができる。上記のように、コンテンツアイテムデバイス識別子は、ユーザによってリセット可能であり得る。コンテンツアイテムデバイス識別子はランダムに生成された値である可能性があるため、これにより、コンテンツアイテムデバイス識別子に依存するトランザクションが不正な使用に対して脆弱になる。たとえば、アプリケーション208またはSDK210は、ストレージ206に記憶されたコンテンツアイテムデバイス識別子とは異なる不法なコンテンツアイテムデバイス識別子を含み得る。対照的に、コンテンツアイテムデバイス識別子ジェネレータ202は、クライアントデバイス125の秘密鍵に関連付けられた公開鍵の関数であるコンテンツアイテムデバイス識別子を
生成するなど、特定の情報をコンテンツアイテムデバイス識別子に含めることに依存している。
【００３９】
コンテンツアイテムデバイス識別子ジェネレータ202は、公開鍵と秘密鍵のペアを生成することができる(304)。公開鍵と秘密鍵のペアは、RSA暗号化アルゴリズム、楕円曲線アルゴリズム、または任意の他のそのような非対称鍵生成技法などの非対称鍵技法に基づいて生成された公開鍵KeypublicおよびKeyprivateを含むことができる。公開鍵と秘密鍵のペアの生成の一態様は、コンテンツアイテムデバイス識別子ジェネレータ202が、鍵のペアを生成するために外部認証局に依存しないことである。認証局は、証明書の指定されたサブジェクトによって公開鍵の所有権を証明するデジタル証明書を発行するエンティティである。代わりに、信頼できる当事者は必要ない。コンテンツアイテムデバイス識別子ジェネレータ202によって生成されるKeypublicおよびKeyprivateは、たとえば1028または2048ビット(たとえば、RSAキー長)などのサイズであり得るが、任意の他のキーサイズを利用することができる。コンテンツアイテムデバイス識別子ジェネレータ202は、ストレージ206またはいくつかの他の安全なストレージ内のクライアントデバイス125上の秘密鍵を安全に記憶することができる。いくつかの実施形態では、秘密鍵へのアクセスは、認証トークンジェネレータ204に制限することができる。このようにして、クライアントデバイス125上で実行されるアプリケーションは、秘密鍵を不正にアクセスまたは修正することができない。
【００４０】
コンテンツアイテムデバイス識別子ジェネレータ202は、公開鍵を暗号化ハッシュする(306)。いくつかの例では、コンテンツアイテムデバイス識別子ジェネレータ202は、公開鍵の暗号化ハッシュ値を生成するために、様々な暗号化ハッシュ関数を利用することができる。暗号化ハッシュ関数は、データまたは任意のサイズを固定サイズのビット文字列にマッピングする数学的アルゴリズムである。非限定的な例として、コンテンツアイテムデバイス識別子ジェネレータ202は、公開鍵の暗号化ハッシュ値を生成するために、SHA512/256アルゴリズムを利用することができる。したがって、暗号化ハッシュ値はFcrypto-hash(Keypublic)と等しくなる可能性がある。
【００４１】
コンテンツアイテムデバイス識別子ジェネレータ202は、暗号化ハッシュ値を切り捨てることができる(308)。切捨て関数Ftruncateは、暗号化ハッシュ値の長さを、不正防止機能を持たないコンテンツアイテムデバイス識別子の長さに等しいビット長に短縮する関数を含むことができる。コンテンツアイテムデバイス識別子の長さを維持することにより、コンテンツアイテムデバイス識別子の、不正防止コンテンツアイテムデバイス識別子を処理しないシステムとの下位互換性を維持することができる。この長さは、たとえば16バイトの長さに等しくなる可能性がある。しかしながら、16バイトの長さは一例に過ぎず、任意のサイズの切捨て機能を利用することができる。いくつかの実装形態では、Ftruncate関数は、ターゲットの長さを超える暗号化ハッシュ値からバイト数を単純に削除することができる。たとえば、SHA256を使用して生成された暗号化ハッシュ値は32バイトの長さになる可能性がある。Ftruncate関数は、16バイトのターゲット長に到達するために、暗号化ハッシュ値から16バイトを削除することができる。暗号化ハッシュ値の切捨ては、クライアントデバイス125のコンテンツアイテムデバイス識別子として使用することができる。したがって、コンテンツアイテムデバイス識別子ジェネレータ202は、関数Ftruncate(Fcrypto-hash(Keypublic))を使用することによって、クライアントデバイス125のコンテンツアイテムデバイス識別子を生成することができる。コンテンツアイテムデバイス識別子ジェネレータ202は、生成されたコンテンツアイテムデバイス識別子をストレージ206に記憶することができ、計算コストを最小限に抑えながら、将来の要求のために記憶されたコンテンツアイテムデバイス識別子を迅速に提供することができる。場合によっては、コンテンツアイテムデバイス識別子ジェネレータ202は、ユーザがクライアントデバイス125にコンテンツアイテムデバイス識別子を変更するように指示するたびにプロセスを実行することができる。
【００４２】
いくつかの実施形態では、コンテンツアイテムデバイス識別子は、コンテンツアイテムデバイス識別子ジェネレータ202によって生成される公開鍵と秘密鍵のペアに関連付けられた公開鍵と同じであり得る。そのような識別子は、公開鍵の長さの関数である長さを有することができる。いくつかのそのような実施形態では、公開鍵の長さは、使用されている非対称鍵アルゴリズムおよび選択された鍵の長さに基づくことができる。たとえば、RSAアルゴリズムのいくつかの実装形態の公開鍵は、2048ビットまたは256バイトの長さにすることができる。コンテンツアイテムデバイス識別子の長さが制限されていない実装形態では、公開鍵をコンテンツアイテムデバイス識別子として直接使用することができる。いくつかの実施形態では、コンテンツアイテムデバイス識別子は、暗号化関数に基づいて生成することができ、その一例には、上述のハッシュ関数が含まれる。ここでも、結果として得られるコンテンツアイテムデバイス識別子の長さは、暗号化関数の出力の長さの関数にすることができる。いくつかの実施形態では、コンテンツアイテムデバイス識別子ジェネレータ202は、所望の長さ(たとえば、16バイト)を取得するために、暗号化関数を適用せずに公開鍵自体を切り捨てることによってコンテンツアイテムデバイス識別子を生成することができる。
【００４３】
クライアントデバイス125は、上で論じたようにコンテンツアイテムデバイス識別子を生成することに加えて、認証トークンを生成することもできる。図4は、図2に示される認証トークンジェネレータ204によって生成される認証トークン400の表現を示す図である。認証トークン400は、複数の連結された部分を含むことができる。たとえば、認証トークン400は、公開鍵フィールド402(Keypublic)、認証トークン作成タイムスタンプ(「time stamp」)フィールド404、メッセージペイロードフィールド406、およびデジタル署名フィールド408を含むことができる。公開鍵フィールド402は、コンテンツアイテムデバイス識別子ジェネレータ202によって生成され、図2および図3に関連して上で論じられた公開鍵Keypublicを含むことができる。いくつかの例では、公開鍵フィールド402は、使用される特定の鍵生成アルゴリズムの公開鍵のサイズに基づくビット長を有することができる。たとえば、いくつかの実装形態では、RSAアルゴリズムが使用される場合、公開鍵フィールド402は1024〜2048ビット以上にすることができる。いくつかの他の実装形態では、鍵のペアを生成するために楕円曲線アルゴリズムが使用される場合、公開鍵フィールド402の長さは33バイトにすることができる。
【００４４】
タイムスタンプフィールド404は、認証トークンジェネレータ204によって認証トークン400が生成された時間のタイムスタンプ「T」を含むことができる。いくつかの実装形態では、認証トークンジェネレータ204は、高解像度のタイムスタンプを利用することができる。いくつかの実装形態では、認証トークンジェネレータ204は約8バイトの長さであり得、認証トークンが生成される日、日付、または時刻(たとえば、GMTまたは何らかの他の標準時間)などの情報を含むことができる。メッセージペイロードフィールド406は、アプリケーション208またはSDK210によってデータ処理システム110に送信されるべき要求または通知のタイプに基づくメッセージ「M」を含むことができる。たとえば、メッセージペイロードは、アプリケーション208またはSDK210がデータ処理システム110に消去要求を送信するときに、メッセージ{動作:消去}を含むことができる。他の要求または通知のための他のペイロードの例については、以下でさらに説明する。メッセージペイロードフィールド406のサイズは、メッセージのタイプ、メッセージのパラメータ、および選択された符号化方式に基づいて変化することができる。
【００４５】
デジタル署名フィールド408は、認証トークンの他のフィールドのデジタル署名であるデジタル署名「S」を含むことができる。具体的には、S=デジタル署名(Keypublic||T||M)である。認証トークンジェネレータ204は、クライアントデバイス125(図3、304)によって生成された公開鍵Keypublicを使用する任意のデジタル署名生成アルゴリズムを使用して、デジタル署名Sを生成することができる。たとえば、認証トークンジェネレータ204は、RSAベースの署名方式(たとえば、RSA-PSS)、デジタル署名アルゴリズム(DSA)またはその楕円曲線変形ECDSA、エドワーズ曲線デジタル署名アルゴリズム、EIGamal署名方式などのアルゴリズムを使用してデジタル署名Sを生成することができる。認証トークンジェネレータ204は、任意の順序で配置された、公開鍵のデジタル署名、タイムスタンプ、およびメッセージペイロードを生成することができる。すなわち、公開鍵、タイムスタンプ、およびメッセージペイロードの相対位置を変更することができる。認証トークンジェネレータ204は、認証トークン400がクライアントデバイス125によって作成され、転送中に変更されていないことを受信者が確認できるように、デジタル署名を生成する。さらに、受信者がデジタル署名を首尾よく検証すると、受信者は、認証トークンに含まれる公開鍵もクライアントデバイス125によって作成され、転送中に変更されていないことを保証することができる。
【００４６】
上記のように、コンテンツアイテムデバイス識別子ジェネレータ202は、クライアントデバイス125によって生成されたものと同じ公開鍵を使用してコンテンツアイテムデバイス識別子を生成する。したがって、認証トークン400に含まれるデジタル署名Sの検証はまた、同じ公開鍵を使用して生成されたコンテンツアイテムデバイス識別子もクライアントデバイス125によって作成され、転送中に変更されていないことを検証する。受信者は、検証された認証トークン400に含まれる公開鍵を暗号化ハッシュおよび切り捨てることによっても、受信したコンテンツアイテムデバイス識別子を検証することができ、一致する場合、受信者は、認証トークン(メッセージM、およびタイムスタンプを含む)およびコンテンツアイテムデバイス識別子の両方が、同じクライアントデバイス125から受信され、転送中に変更されていないことを保証することができる。いくつかの実装形態では、認証トークンジェネレータ204は、各フィールドの開始および終了を示す追加のビットを認証トークンに含めることができる。これは、データ処理システム110がフィールドの場所および内容を識別するのを助けることができる。いくつかの実装形態では、各フィールドのサイズをあらかじめ設定して固定することができる。いくつかの実施形態では、認証トークン400はまた、バージョンフィールドを含むことができ、各バージョンは、公開鍵/秘密鍵アルゴリズムおよび鍵の長さ、タイムスタンプ解像度、デジタル署名アルゴリズム、符号化方式、フィールドサイズなどのあらかじめ定義された組合せを示すことができる。
【００４７】
データ処理システム110が不正防止または検出を実装しない場合、クライアントデバイス125は、図4に示される他のフィールドを含めずにメッセージフィールドを生成することができる。しかしながら、データ処理システム110が不正防止または検出を実装する場合、クライアントデバイス125は、図4に示されるフィールドを含むメッセージを生成し、図3に関連して上で論じた暗号化ハッシュプロセスに基づいて、コンテンツアイテムデバイス識別子を生成することができる。不正防止または不正検出を実装しないシステムの場合、そのようなシステムは、コンテンツアイテムデバイス識別子を、システムがクライアントデバイスのコンテンツアイテムデバイス識別子として常に使用するランダムに生成された16バイト値として表示できる点に留意されたい。
【００４８】
上述の方法でコンテンツアイテムデバイス識別子と認証トークンを生成することには、いくつかの有利な機能がある。たとえば、サードパーティが、公開鍵の切り捨てられた暗号化ハッシュ値が、エンティティがインターネット上で不正に収集した可能性のあるコンテンツアイテムデバイス識別子と同じである代替の公開鍵と秘密鍵のペアを識別することは不可能な場合がある。さらに、サードパーティエンティティが、インターネット上で収集された認証トークン400に埋め込まれた公開鍵に対応する秘密鍵を識別することは不可能な場合がある。したがって、コンテンツアイテムデバイス識別子と認証トークンの完全性と信頼性を高めることができる。
【００４９】
データ処理システム110は、不正防止システムを実装するために、上記で生成されたコンテンツアイテムデバイス識別子および認証トークン400に依存することができる。図5は、不正なデータの消去要求を軽減するために実装することができる例示的なプロセス500の流れ図である。一例として、プロセス500は、図1に示されるコンテンツ要求コンポーネント130によって実行することができる。プロセス500は、クライアントデバイス125から消去要求を受信することを含む。上記のように、データ処理システム110は、データベース145にユーザ情報を記憶することができる。ユーザは、データ処理システム110とともに記憶されたユーザのデバイスに関連付けられたデータを消去するようにデータ処理システム110に要求することができる。クライアントデバイス125は、データ処理システム110に消去要求を送信するためにユーザからの入力を受信することができる、ブラウザまたはインストールされたアプリケーションなどのアプリケーションを含むことができる。アプリケーションは、クライアントデバイス125のオペレーティングシステムに、消去要求に対応するコンテンツアイテムデバイス識別子および認証トークンを提供するように要求することができる。コンテンツアイテムデバイス識別子ジェネレータ202は、公開鍵の暗号化ハッシュの切捨てに基づいて生成されたコンテンツアイテムデバイス識別子を提供することができる。さらに、認証トークンジェネレータ204は、認証トークン400をアプリケーションに提供することができる。認証トークンジェネレータ204は、認証トークンが消去要求に基づいて生成されたことを示すために、認証トークン400のメッセージペイロードフィールド406にデータを入力することができる。たとえば、認証トークンジェネレータ204は、メッセージペイロードフィールド406に{動作:消去  ターゲットドメイン:some-company.com}を含めることができ、ターゲットドメインは、消去が要求されるエンティティのドメイン名を示すことができる。認証トークンジェネレータ204はまた、生成されたトークンをあらかじめ定められた時間にわたってストレージ206に記憶し得る。アプリケーション208またはSDK210は、要求、コンテンツアイテムデバイス識別子、および
認証トークンをデータ処理システム110に送信することができる。
【００５０】
プロセス500はさらに、公開鍵、タイムスタンプ、メッセージ、およびデジタル署名を決定するために、認証トークンを解析すること(504)を含む。たとえば、コンテンツ要求コンポーネント130は、認証トークン400のフィールドの各々の値を決定するために、認証トークン400を解析することができる。コンテンツ要求コンポーネント130は、認証トークン400の各フィールドの開始および終了を示す開始ビットおよび終了ビットを探すことができるか、要求のタイプに基づいてフィールド長がわかっている場合、コンテンツ要求コンポーネント130は、フィールドの各々の値を決定するために、適切な長さのビット文字列を取り出すことができる。
【００５１】
プロセス500は、認証トークン400からの公開鍵、タイムスタンプ、およびメッセージペイロードを使用して、認証トークン400に含まれるデジタル署名を検証すること(506)を含む。コンテンツ要求コンポーネント130は、デジタル署名を検証するためにクライアントデバイス125によって使用されるのと同じデジタル署名アルゴリズムを利用することができる。コンテンツ要求コンポーネント130は、公開鍵、タイムスタンプ、およびメッセージを、クライアントデバイス125によって使用されるのと同じ順序で連結することができる。フィールド値の特定の順序は、あらかじめ決定され、認証トークンジェネレータ204およびデータ処理システム110によって事前に合意され得る。コンテンツ要求コンポーネント130は、認証トークン400の公開鍵フィールド402に含まれる公開鍵を使用してデジタル署名を検証することができる。
【００５２】
デジタル署名が検証されると、コンテンツ要求コンポーネント130は、公開鍵、タイムスタンプ、およびメッセージペイロードの値が不正なエンティティによって改ざんされていないと決定することができる。潜在的な不正エンティティは、インターネットを介して多数のコンテンツアイテムデバイス識別子を収集できる可能性がある。しかしながら、これらのエンティティは、クライアントデバイス125に安全に記憶されている秘密鍵にはアクセスできない可能性がある。したがって、これらのエンティティは、正当なクライアントデバイス125から受信した認証トークン400に含まれるものと同じデジタル署名を有する消去要求およびメッセージを作成することができない。したがって、デジタル署名を検証することによって、受信したメッセージが実際にコンテンツアイテムデバイス識別子を所有するデバイスによって生成され、送信中に変更されていないことを確認することができる。
【００５３】
プロセス500は、認証トークンのタイムスタンプを検証すること(510)を含む。タイムスタンプは、データ処理システム110において現在の時刻と比較することができる。タイムスタンプ値が現在の時刻値から妥当な時間範囲内にある場合、コンテンツ要求コンポーネント130は、タイムスタンプが検証されたと決定することができる。妥当な時間範囲は、たとえば、認証トークンの作成後、トークンがデータ処理システム110によって受信される推定時間に依存することができる。現在受信している要求が前の要求の単なる再生である場合、要求のタイムスタンプは妥当な時間範囲外になる。結果として、コンテンツ要求コンポーネント130は、タイムスタンプが検証されていないと決定することができる。さらに、コンテンツ要求コンポーネント130は、受信したコンテンツアイテムデバイス識別子とタイムスタンプの組合せが、以前のコンテンツ要求の要求ログ170に記憶された組合せと一致する場合、要求が単に前の要求の再生であると決定することができる。
【００５４】
プロセス500は、コンテンツアイテムデバイス識別子を生成するために、認証トークンに含まれる公開鍵を暗号化ハッシュすること(512)を含む。コンテンツ要求コンポーネント130がデジタル署名とタイムスタンプの両方を首尾よく検証すると、コンテンツ要求コンポーネント130は、認証トークン400の公開鍵フィールド402に含まれる公開鍵からコンテンツアイテムデバイス識別子を生成することができる。上記のように、コンテンツアイテムデバイス識別子は、クライアントデバイス125の公開鍵の暗号化ハッシュの切捨てによって生成することができる。コンテンツ要求コンポーネント130は、クライアントデバイス125によって使用されたのと同じ切捨ておよび暗号化ハッシュ関数を使用して、コンテンツアイテムデバイス識別子を生成することができる。いくつかの実装形態では、コンテンツ要求コンポーネント130はまた、生成されたコンテンツアイテムデバイス識別子が、要求で受信されたコンテンツアイテムデバイス識別子と一致するかどうかを検証することができる。生成されたコンテンツアイテムデバイス識別子が受信されたコンテンツアイテムデバイス識別子と一致しない場合、コンテンツ要求コンポーネント130は、要求が不正であると決定することができる。生成されたコンテンツアイテムデバイス識別子が、要求において受信されたコンテンツアイテムデバイス識別子と一致する場合、コンテンツ要求コンポーネント130は、要求が正当な要求であると決定することができる。
【００５５】
プロセス500は、生成されたコンテンツアイテムデバイス識別子に関連付けられたデータを消去するために、データベースにアクセスすること(514)を含む。コンテンツ要求コンポーネント130は、消去要求を処理するために、データベース145にアクセスすることができる。具体的には、コンテンツ要求コンポーネント130は、データベース145に記憶された生成されたコンテンツアイテムデバイス識別子に関連付けられた任意のユーザ情報165を除去し得る。データ消去要求は、クライアントデバイス125のコンテンツアイテムデバイス識別子を用いてデータベース145にコマンドまたは要求を送信することを含むことができる。次に、データベース145は、データベース145内のコンテンツアイテムデータ識別子に関連付けられたデータを除去するために、データ削除または消去プロセスを開始する。
【００５６】
プロセス500は、デジタル署名が一致しない、および/またはタイムスタンプが検証されない、および/または計算されたコンテンツアイテムデバイス識別子が消去要求に含まれるコンテンツアイテムデバイス識別子と一致しない場合、要求を無視することを含む(516)。コンテンツ要求コンポーネント130は、デジタル署名が一致しない場合(ステップ508において)、またはタイムスタンプが検証されない場合(ステップ510において)、または計算されたコンテンツアイテムデバイス識別子が消去要求に含まれるコンテンツアイテムのデバイス識別子と一致しない場合、受信した要求が不正な要求であると決定することができる。結果として、コンテンツ要求コンポーネント130は、受信された要求を無視することができる。このようにして、不正な要求はデータ処理システム110によって処理されず、それによってデータ処理システム110のパフォーマンスへの影響を低減する。具体的には、検出された不正な要求ごとに、コンテンツ要求コンポーネント130は、コンテンツアイテムデバイス識別子に関連付けられたデータを削除または消去するための要求をデータベース145に送信することを回避する。データ処理システム110によって受信される、数百または数千になり得る不正な要求を用いて、不正な消去要求の処理を回避することによって、データ処理システム110は、代わりに正当な要求に対するパフォーマンス改善するために、そうでなければ不正な要求を処理するために使用する処理または記憶リソースを利用することができる。
【００５７】
図6は、図1に示されるデータ処理システム110によって受信された不正なコンテンツアイテム要求を軽減するために実装することができる例示的なプロセス600の流れ図である。一例として、プロセス600は、データ処理システム110のコンテンツ要求コンポーネント130によって実行することができる。プロセス600は、コンテンツアイテム要求を受信すること(602)を含む。コンテンツ要求コンポーネント130は、クライアントデバイス125上で実行されているアプリケーションからコンテンツアイテム要求を受信することができる。たとえば、ウェブブラウザは、クライアントデバイス125上にコンテンツを表示し得、またデータ処理システム110に、表示されたコンテンツとともにレンダリングされるコンテンツアイテムを提供するように要求し得る。データ処理システム110に要求を送信する前に、アプリケーション208は、コンテンツアイテムデバイス識別子をコンテンツアイテムデバイス識別子ジェネレータ202に要求することができ、これは受信されると、データ処理システム110への要求に含めることができる。コンテンツアイテムデバイス識別子ジェネレータ202は、クライアントデバイス125のストレージ206に記憶されたコンテンツアイテムデバイス識別子を検索し、コンテンツアイテムデバイス識別子をアプリケーション208に提供することができる。場合によっては、コンテンツアイテムのデバイス識別子がまだ生成されていないか、ストレージ206に記憶されていない場合、コンテンツアイテムデバイス識別子ジェネレータ202は、公開鍵と秘密鍵のペアを生成し、図3に関連して上で論じたように、公開鍵の切り捨てられた暗号化ハッシュに基づいてコンテンツアイテムデバイス識別子を生成することができる。
【００５８】
クライアントデバイス125はまた、要求に基づいて認証トークンを生成することができる。一例として、認証トークン400は、図4および図5に関連して上述したのと同様の方法で生成することができる。しかしながら、認証トークンジェネレータ204は、コンテンツアイテム要求に基づいてメッセージペイロードフィールド406にデータを入力し得る。たとえば、認証トークンジェネレータ204は、認証トークンがコンテンツアイテム要求に応答して生成されたことを示す特定のパラメータを含むことができ、要求を行うアプリケーションのアイデンティティを含むことができる。例として、認証トークン400は、以下のペイロードメッセージ:{動作:「コンテンツアイテム要求」、「apk名」:<apk名>、「コンテンツアイテム要求パラメータ」:<パラメータ識別および値>、「IPアドレス」:<クライアントデバイスのIPアドレス>}を生成することができ、「動作」変数は、動作がコンテンツアイテム要求動作であることを示し、「apk名」は、要求を行ったアプリケーション208の名前を示し、「コンテンツアイテム要求パラメータ」は、コンテンツアイテム要求に関連するパラメータを含むことができ、「IPアドレス」は、クライアントデバイス125のIPアドレスを示す。場合によっては、オペレーティングシステムは、認証トークンを作成するためにアプリケーション208によって呼び出され得るAPIを提供することができる。たとえば、クライアントデバイス125のオペレーティングシステムは、以下の署名を備えたAPIを提供することができる:トークンSignContentItemRequest(content_item_request_parameters)。アプリケーション208は、上記のAPIを呼び出すことができ、それに応答して、認証トークンジェネレータ204は、適切なメッセージペイロードを用いて認証トークンを生成することができる。アプリケーション208は、コンテンツアイテム要求、コンテンツアイテムデバイス識別子、および認証トークンをデータ処理システム110に送信することができる。
【００５９】
プロセス600は、公開鍵、タイムスタンプ、および埋め込まれたメッセージ、ならびにデジタル署名を決定するために認証トークンを解析すること(604)を含む。プロセスステージ604〜608は、図5に関連して上述したステージ504〜508と同様であるが、プロセスステージ604では、メッセージペイロードはコンテンツアイテム要求に対応するメッセージを含む。コンテンツ要求コンポーネント130は、認証トークン400に含まれるデジタル署名およびタイムスタンプを検証することができる。プロセス600は、メッセージペイロードに含まれるパラメータがコンテンツアイテム要求の実際のパラメータと一致するかどうかを決定すること(616)を含む。たとえば、コンテンツ要求コンポーネント130は、たとえば、認証トークン400のメッセージペイロード406内の「アプリ名」および「IPアドレス」などのパラメータの値が、データ処理システム110によって受信された要求内のアプリケーション名およびIPアドレスとそれぞれ一致するかどうかを決定することができる。いくつかの実施形態では、メッセージペイロードには、パラメータ自体ではなく、パラメータの暗号化ハッシュを含み得、これは、暗号化ハッシュのサイズが実際のパラメータ値よりも小さい場合があるためである。そのような実施形態では、プロセス600は、メッセージペイロードに含まれるパラメータを決定するために、パラメータ値の暗号化ハッシュを復号化することができる。パラメータの一致、ならびに検証された署名およびタイムスタンプに応答して、コンテンツ要求コンポーネント130は、要求に含まれる公開鍵の暗号化ハッシュおよび切捨てを生成することによって、要求において受信されたコンテンツアイテムデバイス識別子を検証することができる(図5のステップ510と同様)。
【００６０】
生成されたコンテンツアイテムデバイス識別子がコンテンツアイテム要求において受信されたコンテンツアイテムデバイス識別子と一致する場合、コンテンツ要求コンポーネント130は、コンテンツアイテム要求が不正ではないと決定し、コンテンツアイテムを選択して選択されたコンテンツアイテムをクライアントデバイス125に送信するプロセス(612)を開始することができる。コンテンツアイテムの選択は、コンテンツ要求コンポーネント130が、コンテンツアイテムデバイス識別子、入札額、キーワードなどの、クライアントデバイス125からの要求において受信された情報の少なくとも一部を含む、要求をコンテンツ選択コンポーネント135に送信することを含むことができる。コンテンツ選択コンポーネント135は、少なくともコンテンツアイテムデバイス識別子、入札額、およびキーワードに基づいて、複数のコンテンツアイテムからコンテンツアイテムを選択することを可能にするコンテンツアイテム選択プロセスを実行することができる。一例として、コンテンツ選択コンポーネント135はまた、コンテンツアイテムデバイス識別子に関連して記憶された任意のユーザ情報を決定するためにユーザ情報165にアクセスし得、コンテンツアイテムを選択するためにユーザ情報を使用し得る。データ処理システム110はまた、生成されたコンテンツアイテムデバイス識別子に関連してコンテンツアイテムのアイデンティティを生成し、要求ログ170に記憶することができる。場合によっては、コンテンツ要求コンポーネント130が、デジタル署名が一致しない、またはタイムスタンプが検証されない、またはパラメータが一致しないと決定した場合、コンテンツ要求コンポーネント130は、受信したコンテンツアイテム要求が不正であり、無視されるべきであると決定することができる(614)。このようにして、データ処理システム110は、不正なコンテンツアイテム要求を処理することを差し控えることができ、それによって、システムのパフォーマンスを改善する。
【００６１】
図7は、図1に示されるデータ処理システム110によって受信される不正なアプリケーションインストール通知を軽減するために実装することができる例示的なプロセス700の流れ図である。一例として、プロセス700は、データ処理システム110の属性コンポーネント150によって実行することができる。プロセス700は、クライアントデバイス125からアプリケーションインストール通知を受信することを含む。具体的には、アプリケーション208またはSDK210は、アプリケーションインストール通知を属性コンポーネント150に送信することができる。たとえば、クライアントデバイス125のユーザは、クライアントデバイス125上にレンダリングされたコンテンツアイテムに応答して、クライアントデバイスにアプリケーションをダウンロードし得る。アプリケーションをダウンロードした後、ユーザは、クライアントデバイス125にアプリケーションをインストールすることができる。アプリケーションは、インストールされているアプリケーションに応答して、データ処理システム110の属性コンポーネント150にインストール通知を送信することができる属性SDK210を含むことができる。属性SDK210は、コンテンツアイテムデバイス識別子ジェネレータ202に、コンテンツアイテムデバイス識別子を提供するように要求することができる。コンテンツアイテムデバイス識別子ジェネレータ202は、コンテンツアイテムデバイス識別子を生成するか、クライアントデバイス125の公開鍵を使用して生成され、記憶されたコンテンツアイテムデバイス識別子を属性SDK210に提供することができる。認証トークンジェネレータ204は、アプリケーションインストール通知を示すペイロードメッセージとともに認証トークンを生成する。例として、認証トークンジェネレータ204は、{動作:「app_install」、「apk名」:<apk名>}を含むメッセージペイロードを用いて認証トークンを生成することができ、動作「app install」はトークンがアプリケーションインストール通知のコンテンツアイテムデバイス識別子の要求に応答して生成されたことを示し、「apk名」はクライアントデバイス125にインストールされたアプリケーションの名前を示すことができる。
【００６２】
インストール通知により、データ処理システムは、クライアントデバイス125へのアプリケーションのインストールを、ユーザがアプリケーションをインストールする結果となったコンテンツアイテムに帰することができる。そのために、データ処理システム110はまた、コンテンツアイテム要求が受信されたクライアントデバイスのコンテンツアイテムデバイス識別子のリストをデータベース145に記憶することができる。たとえば、クライアントデバイス125上で実行されているブラウザアプリケーションが、有効で不正ではないコンテンツアイテム要求をデータ処理システム110に送信する場合(図6に関して上で論じたように)、コンテンツ要求コンポーネント130は、クライアントデバイス125上でレンダリングするためにコンテンツアイテムをブラウザアプリケーションに送信することができる。さらに、コンテンツ要求コンポーネント130は、コンテンツアイテムがクライアントデバイス125に提供されたことを示すことにより、クライアントデバイス125のコンテンツアイテムデバイス識別子をデータベース145に記憶することができる。
【００６３】
プロセス700は、クライアントデバイスからアプリケーションインストール通知を受信すること(702)を含む。上記のように、クライアントデバイス125にインストールされたアプリケーションに埋め込まれた属性SDKは、アプリケーションインストール通知を属性コンポーネント150に送信することができる。受信したアプリケーションインストール通知は、クライアントデバイス125のコンテンツアイテムデバイス識別子と、認証トークンジェネレータ204によって生成された認証トークンとを含むことができる。認証トークンは、上で論じたように、アプリケーションのインストール通知に対応するメッセージペイロードを含むことができる。ステップ704〜706は、図5に関連して上で論じたステップ504〜506と同様である。すなわち、属性コンポーネント150は、デジタル署名が有効であることを検証することができる。
【００６４】
プロセス700は、認証トークンに含まれる公開鍵の暗号化ハッシュに基づいてコンテンツアイテムデバイス識別子を生成すること(708)を含む。コンテンツアイテムデバイス識別子を生成するプロセスは、図5に示されるステップ510に関して上で論じられたものと同様であり得る。このプロセスは、生成されたコンテンツアイテムデバイス識別子がデータベース145に記憶されたコンテンツアイテムデバイス識別子と一致するかどうかを決定すること(710)をさらに含む。データベース145に記憶されたコンテンツアイテムデバイス識別子は、アプリケーションのインストールに関連付けられたコンテンツアイテムが以前にクライアントデバイス125に送信されたことを示すことができる。生成されたコンテンツアイテムデバイス識別子が記憶されたコンテンツアイテムデバイス識別子と一致する場合、属性コンポーネント150は、アプリケーションインストール通知が有効であると決定することができる。一方、属性コンポーネント150が、デジタル署名が無効であると決定した場合、または生成されたコンテンツアイテムデバイス識別子が記憶されたコンテンツアイテムデバイス識別子と一致しないと決定した場合、または生成されたコンテンツアイテムデバイス識別子と一致するコンテンツアイテムデバイス識別子がデータベースに記憶されていない場合、属性コンポーネント150は、受信したアプリケーションインストール通知が無効であると決定することができる。いくつかの実装形態では、属性コンポーネント150は、インストール通知に含まれるタイムスタンプを検証し、生成されたコンテンツアイテムデバイス識別子がインストール通知において受信されたコンテンツアイテムデバイス識別子と一致することを検証することにさらに基づいて、受信されたインストール通知が有効であると決定することができる。すべての検証が成功しない限り、属性コンポーネント150は、受信したインストール通知が無効であると決定することができる。このようにして、データ処理システム110は、無効または不正なアプリケーションインストール通知の処理を回避することができ、それによってパフォーマンスを改善することができる。
【００６５】
属性コンポーネント150はまた、不正なアプリケーションインストールクレジット請求を検証することができる。いくつかの実装形態では、属性コンポーネント150がクライアントデバイス125からインストール通知を受信すると、属性コンポーネント150は、コンテンツアイテムネットワークのうちのどれがコンテンツアイテムを提供し、その結果、クライアントデバイス125にアプリケーションがインストールされたかを決定するために、複数のコンテンツアイテムネットワークにクエリを実行することができる。コンテンツアイテムネットワークは、アプリケーション内で提供されるコンテンツアイテムにメタデータを含めることができる。たとえば、メタデータは、(1)コンテンツアイテムがアプリケーションインストールコンテンツアイテムであるかどうか、(2)そうである場合、コンテンツアイテムが宣伝するアプリケーションはどれか、および(3)コンテンツアイテムに関連付けられ、クライアントデバイス125へのアプリケーションのインストールを用いてクレジットできるコンテンツアイテムネットワークのアイデンティティに関する情報、を含むことができる。コンテンツアイテムがクライアントデバイス125上でレンダリングされた場合、および/またはユーザがコンテンツアイテムをクリックした場合、コンテンツアイテム(コンテンツアイテムをレンダリングしたアプリケーション208内のSDKを介して)は、認証トークンジェネレータ204に、(1)コンテンツアイテムがレンダリングされたかどうか、またはコンテンツアイテムがクリックされたかどうかを示すイベントタイプ、(2)コンテンツアイテムに含まれるメタデータ、および(3)たとえばコンテンツアイテムが表示されるディスプレイ画面上のスロットの場所を含む、インプレッション自体のメタデータを含む、メッセージペイロードフィールド406を有する認証トークンを生成するように要求することができる。生成された認証トークンは、コンテンツアイテムがレンダリングまたはクリックされたことを示すために、コンテンツアイテムSDKによって、コンテンツアイテムに関連付けられたコンテンツアイテムネットワークに送信することができる。一例として、認証トークンは、レンダリング通知またはクリック通知のURLパラメータとしてコンテンツアイテムネットワークに送信
することができる。
【００６６】
属性コンポーネント150は、アプリケーションインストール通知の受信に応答して、クライアントデバイス125へのアプリケーションのインストールのクレームについて、複数のコンテンツアイテムネットワークにクエリを送信することができる。それに応答して、属性コンポーネント150は、コンテンツアイテムネットワークが、上記のレンダリングイベントまたはクリックイベントを経験したそれぞれのコンテンツアイテムから受信した認証トークンを受信することができる。1つまたは複数の照会されたコンテンツアイテムネットワークから認証トークンを受け取った後、属性コンポーネント150は、署名、コンテンツアイテムデバイス識別子、タイムスタンプを検証し、メッセージペイロード内の情報をアプリケーションインストール通知のメッセージペイロード内で受信した情報と比較することによって、認証トークンを検証することができる。属性コンポーネント150は、属性トークンが有効であったコンテンツアイテムネットワークをクレジットすることができる。不正なコンテンツアイテムネットワークはまた、属性トークンを送信し得る。しかしながら、それらの属性トークンは、属性コンポーネント150によって実行される検証決定に失敗する。
【００６７】
いくつかの実装形態では、オペレーティングシステム、具体的には認証トークンジェネレータ204は、認証トークンがコンテンツアイテムSDKに提供される頻度を制限することができる。いくつかの不正なシナリオでは、不正なコンテンツアイテムネットワークのコンテンツアイテムが、認証トークンジェネレータ204に、過剰な数の認証トークンを生成するように要求することができる。認証トークンジェネレータ204は、コンテンツアイテムSDKに提供されるトークンの数を制限することによって(たとえば、毎秒最大1つのトークン)、そのようなシナリオを防ぐように構成することができる。さらに、認証トークンジェネレータ204は、トークンを要求するコンテンツアイテムがクライアントデバイスのディスプレイ画面上に実際に表示されているか、またはユーザによって実際にクリックされた場合にのみ、トークンを生成することができる。このようにして、トークンに対する不正な要求を減らすことができる。場合によっては、コンテンツアイテムは、最大1つのアプリケーションを宣伝することを許可することができる。この制限により、トークンに対する不正な要求をさらに減らすことができる。いくつかの実装形態では、クライアントデバイス125のオペレーティングシステムは、メタデータを検証するためにデバイスの機械学習モデルを採用することができる。機械学習モデルが、コンテンツアイテムが実際にアプリケーションインストールプロモーションコンテンツアイテムであること(たとえば、コンテンツアイテムがレンダリングされるスロットのスクリーンショットを分析することによって)、ならびにコンテンツアイテムによって宣伝されたアプリケーションのアイデンティティを検証できる場合、不正なコンテンツアイテムネットワークがアプリケーションインストールクレジットを要求する可能性をさらに減らすことができる。
【００６８】
いくつかの実装形態では、認証トークンジェネレータ204は、JSONフォーマットで認証トークン400を生成することができる。JSONフォーマットを使用して認証トークン400を生成すると、認証トークン400に柔軟性および拡張性を与えることができる。たとえば、データ処理システム110が、ドメインレベルごとのオプトイン機能をユーザにサポートできる場合、認証トークンジェネレータ204は、{動作:「オプトイン」、ドメイン:「name_of_content_item_network」、オプトイン開始:<start_date_time>、オプトインエンド:<end_date_time>}のデータを有するメッセージペイロードフィールド406を有する認証トークンを生成することができる。同様に、データ処理システムがユーザに対するドメイン固有のオプトアウト機能をサポートしている場合、メッセージペイロードは{動作:「オプトアウト」、ドメイン:「name_of_content_item_network」}のデータを含むことができる。いくつかの実装形態では、認証トークンジェネレータ204は、認証トークン400をバイナリフォーマットで生成することができ、これは、JSONフォーマットよりもかなり小さくすることができる。認証トークンが小さいほど、一般に、作成、送信、および消費するために必要な計算能力、ネットワーク帯域幅、および/またはバッテリー寿命がより少なくて済む。
【００６９】
図8は、いくつかの実装形態による、本明細書で論じられるコンピュータシステム(システム110と、コンテンツ要求コンポーネント130、コンテンツ選択コンポーネント135、および属性コンポーネント150などのそのコンポーネントを含む)のいずれかを実装するために採用され得る例示的なコンピュータシステム800の一般的なアーキテクチャを示す図である。表示のためにネットワーク105を介して情報を提供するために、コンピュータシステム800を使用することができる。図8のコンピュータシステム800は、メモリ825に通信可能に結合された1つまたは複数のプロセッサ820、1つまたは複数の通信インターフェース805、ならびに1つまたは複数の出力デバイス810(たとえば、1つまたは複数のディスプレイユニット)および1つまたは複数の入力デバイス815を備える。プロセッサ820は、データ処理システム110、またはコンテンツ要求コンポーネント130およびコンテンツ選択コンポーネント135などのシステム110の他のコンポーネントに含まれ得る。
【００７０】
図8のコンピュータシステム800では、メモリ825は、任意のコンピュータ可読ストレージ媒体を備え得、それぞれのシステムについて本明細書に記載の様々な機能を実装するためのプロセッサ実行可能命令などのコンピュータ命令、ならびにそれに関連する、それによって生成される、または通信インターフェースもしくは入力デバイス(存在する場合)を介して受信される任意のデータを記憶し得る。再び図1のシステム110を参照すると、データ処理システム110は、とりわけ、ユーザ情報165および要求ログ170に関連する情報を記憶するためのメモリ825を含むことができる。メモリ825は、データベース145を含むことができる。図8に示されるプロセッサ820は、メモリ825に記憶された命令を実行するために使用され得、そうすることで、命令の実行に従って処理および/または生成された様々な情報をメモリから読み出す、またはそこに書き込むこともできる。
【００７１】
図8に示されるコンピュータシステム800のプロセッサ820はまた、命令の実行に従って様々な情報を送信または受信するために、通信インターフェース805に通信可能に結合されるか、またはそれを制御し得る。たとえば、通信インターフェース805は、ワイヤードまたはワイヤレスネットワーク、バス、または他の通信手段に結合され得、したがって、コンピュータシステム800が他のデバイス(たとえば、他のコンピュータシステム)との間で情報を送信または受信することを可能にし得る。図8のシステムには明示的に示されていないが、1つまたは複数の通信インターフェースは、システム800のコンポーネント間の情報の流れを容易にする。いくつかの実装形態では、通信インターフェースは、コンピュータシステム800の少なくともいくつかの態様へのアクセスポータルとしてウェブサイトを提供するように(たとえば、様々なハードウェアコンポーネントまたはソフトウェアコンポーネントを介して)構成され得る。通信インターフェース805の例は、ユーザがデータ処理システム800と通信することができるユーザインターフェース(たとえば、ウェブページ)を含む。
【００７２】
図8に示されるコンピュータシステム800の出力デバイス810は、たとえば、命令の実行に関連して様々な情報を閲覧または他の方法で知覚できるようにするために提供され得る。入力デバイス815は、たとえば、ユーザが、命令の実行中に手動調整を行い、選択を行い、データを入力し、または様々な方法のいずれかでプロセッサと対話することを可能にするために提供され得る。本明細書で論じられる様々なシステムに採用され得る一般的なコンピュータシステムアーキテクチャに関する追加の情報は、本明細書でさらに提供される。
【００７３】
本明細書に記載されている主題および動作の実装形態は、デジタル電子回路、または本明細書に開示されている構造およびそれらの構造的同等物を含む、有形媒体、ファームウェア、またはハードウェア上に具体化されたコンピュータソフトウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本明細書に記載の主題の実装形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のコンポーネントとして実装することができる。プログラム命令は、人工的に生成された伝搬信号、たとえば、データ処理装置による実行のために適切な受信機装置に送信するための情報を符号化するために生成される機械生成の電気信号、光学信号、または電磁信号に符号化することができる。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらの1つまたは複数の組合せであるか、またはそれらに含まれ得る。さらに、コンピュータストレージ媒体は伝搬信号ではないが、コンピュータストレージ媒体は、人工的に生成された伝搬信号に符号化されたコンピュータプログラム命令のソースまたは宛先を含むことができる。コンピュータストレージ媒体はまた、1つまたは複数の別個の物理的コンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であるか、またはそれらに含まれ得る。
【００７４】
本明細書に開示される機能は、スマートテレビモジュール(または、接続されたテレビモジュール、ハイブリッドテレビモジュールなど)に実装され得、これは、インターネット接続を、(たとえば、ケーブル、衛星、無線、または他の信号を介して受信された)より伝統的なテレビ番組ソースと統合するように構成された処理モジュールを含み得る。スマートテレビモジュールは、テレビセットに物理的に組み込まれていてもよく、セットトップボックス、ブルーレイまたは他のデジタルメディアプレーヤ、ゲーム機、ホテルテレビシステム、および他のコンパニオンデバイスなどの別個のデバイスを含んでもよい。スマートテレビモジュールは、視聴者がウェブ上、ローカルケーブルテレビチャンネル上、衛星テレビチャンネル上の、またはローカルハードドライブに記憶されているビデオ、映画、写真、および他のコンテンツを検索および発見できるように構成され得る。セットトップボックス(STB)またはセットトップユニット(STU)は、チューナを含み、テレビセットおよび外部信号源に接続し得る情報機器デバイスを含み得、信号をコンテンツに変換し、次いでそのコンテンツがテレビ画面または他のディスプレイデバイス上で表示される。スマートテレビモジュールは、ウェブブラウザおよび複数のストリーミングメディアサービス、接続されたケーブルまたは衛星メディアソース、他のウェブ「チャンネル」などの複数の異なるアプリケーションのためのアイコンを含むホーム画面またはトップレベル画面を提供するように構成され得る。スマートテレビモジュールはさらに、電子番組ガイドをユーザに提供するように構成され得る。スマートテレビモジュールのコンパニオンアプリケーションは、利用可能なプログラムに関する追加情報をユーザに提供し、ユーザがスマートテレビモジュールなどを制御できるようにするために、モバイルコンピューティングデバイス上で動作可能であり得る。別の実装形態では、機能は、ラップトップコンピュータまたは他のパーソナルコンピュータ、スマートフォン、他のモバイル電話、ハンドヘルドコンピュータ、タブレットPC、または他のコンピューティングデバイスに実装され得る。
【００７５】
本明細書に記載されている動作は、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されているか、他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装することができる。
【００７６】
「データ処理装置」、「データ処理システム」、「ユーザデバイス」または「コンピューティングデバイス」という用語は、たとえば、プログラマブルプロセッサ、コンピュータ、チップ上のシステム、もしくは前述の複数のもの、またはそれらの組合せコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことができる。装置はまた、ハードウェアに加えて、対象のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。コンテンツ要求コンポーネント130、コンテンツ選択コンポーネント135、および属性コンポーネント150は、1つまたは複数のデータ処理装置、コンピューティングデバイス、またはプロセッサを含むか、共有することができる。
【００７７】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境における使用に適した他のユニットとしてなど、任意の形式で展開することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、対応する必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプト)、対象のプログラム専用の単一のファイル、または複数の調整されたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶することができる。コンピュータプログラムは、1台のコンピュータ、または1つのサイトに配置されているか、複数のサイトに分散され、通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開することができる。
【００７８】
本明細書に記載のプロセスおよび論理フローは、入力データを操作して出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローはまた、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によって実行することもでき、装置を実装することもできる。
【００７９】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用および専用の両方のマイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令とデータを受信する。コンピュータの本質的な要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、またはそこからデータを受信するか、そこにデータを転送するか、またはその両方を行うために動作可能に結合される。しかしながら、コンピュータにそのようなデバイスが必要なわけではない。さらに、コンピュータは、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、グローバルポジショニングシステム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込むことができる。コンピュータプログラム命令およびデータを記憶するために適したデバイスは、例として半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、メディア、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されてもよく、専用論理回路に組み込まれてもよい。
【００８０】
ユーザとの対話を提供するために、本明細書に記載の主題の実装形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)、プラズマ、またはLDC(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を提供できるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールを有するコンピュータ上に実装することができる。ユーザとの対話を提供するために、他の種類のデバイスを使用することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形式の感覚的フィードバックを含むことができ、また、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信したリクエストに応じて、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【００８１】
本明細書に記載されている主題の実装は、たとえばデータサーバとしてのバックエンドコンポーネントを含むか、またはアプリケーションサーバなどのミドルウェアコンポーネントを含むか、またはユーザが本明細書に記載の主題の実装形態と対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを備えたクライアントコンピュータなどのフロントエンドコンポーネント、あるいは1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムに実装することができる。システムのコンポーネントは、デジタルデータ通信の任意の形式または媒体、たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、ネットワーク間(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【００８２】
データ処理システム110などのコンピューティングシステムは、クライアントおよびサーバを含むことができる。たとえば、データ処理システム110は、1つまたは複数のデータセンタあるいはサーバファーム内の1つまたは複数のサーバを含むことができる。クライアントとサーバは通常互いにリモートであり、通常は通信ネットワークを介して対話する。クライアントとサーバの関係は、それぞれのコンピュータで実行され、クライアントとサーバの関係を有するコンピュータプログラムによって発生する。いくつかの実装形態では、サーバは、データ(たとえば、HTMLページ)をクライアントデバイスに送信する(たとえば、クライアントデバイスと対話するユーザにデータを表示するため、およびそこからユーザ入力を受信するため)。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信することができる。
【００８３】
本明細書は多くの特定の実装形態の詳細を含むが、これらは、任意の発明の範囲または特許請求され得るものの制限として解釈されるべきではなく、本明細書に記載のシステムおよび方法の特定の実装形態に固有の特徴の説明として解釈されるべきである。本明細書において個別の実装形態の文脈において説明されている特定の機能はまた、単一の実装形態において組み合わせて実装することができる。逆に、単一の実装形態の文脈で説明されている様々な機能はまた、複数の実装形態において個別に、または任意の適切なサブコンビネーションにおいて実装することができる。さらに、特徴は、特定の組合せにおいて作用するものとして上記に記載され、最初はそのように特許請求されても、特許請求された組合せからの1つまたは複数の特徴は、場合によっては組合せから切り出され得、特許請求された組合せは、サブコンビネーションまたはサブコンビネーションの変形に向けられ得る。
【００８４】
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序または連続した順序で実行されること、または図示されるすべての動作が実行されることを要求することとして理解されるべきではない。場合によっては、特許請求の範囲に記載されたアクションは異なる順序で実行され、依然として望ましい結果を達成することができる。さらに、添付の図面に示されているプロセスは、望ましい結果を達成するために、示されている特定の順序または連続した順序を必ずしも必要としない。
【００８５】
特定の状況では、マルチタスクおよび並列処理が有利な場合がある。さらに、上述の実装形態における様々なシステムコンポーネントの分離は、すべての実装形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージ化することができることを理解されるべきである。たとえば、コンテンツ要求コンポーネント130およびコンテンツ選択コンポーネント135は、データ処理システム110の一部、単一のモジュール、1つまたは複数の処理モジュールを有する論理デバイス、1つまたは複数のサーバ、または検索エンジンの一部であり得る。
【００８６】
ここで、いくつかの例示的な実装形態および実装形態について説明したが、前述のものは例示であり、限定ではなく、例として提示されていることは明らかである。具体的には、本明細書に提示される例の多くは、方法行為またはシステム要素の特定の組合せを含むが、それらの行為およびそれらの要素は、同じ目的を達成するために他の方法で組み合わせられ得る。1つの実装形態に関連してのみ説明されている行為、要素、および機能は、他の実装形態または実装形態における同様の役割から除外されることを意図していない。
【００８７】
本明細書において使用されている表現および用語は、説明を目的としたものであり、限定的なものと見なされるべきではない。本明細書における「含む(including)」「備える(comprising)」「有する(having)」「含む(containing)」「関与する(involving)」「〜を特徴とする(characterized by)」「〜ことを特徴とする(characterized in that)」およびその変形の使用は、その後に記載される項目、それらの同等物、および追加の項目、ならびにその後に排他的にリストされた項目からなる代替実装形態を包含することを意味する。一実施形態では、本明細書で説明されるシステムおよび方法は、説明された要素、行為、またはコンポーネントの1つ、複数の各組合せ、またはすべてからなる。
【００８８】
本明細書において単数形で言及されるシステムおよび方法の実装形態または要素または行為への言及はまた、これらの要素の複数を含む実装形態を包含し得、本明細書における任意の実装形態または要素または行為への複数形の参照はまた、単一の要素のみを含む実装形態を包含し得る。単数形または複数形の言及は、現在開示されているシステムまたは方法、それらの構成要素、行為、または要素を単一または複数の構成に限定することを意図するものではない。情報、行為、または要素に基づく行為または要素への言及は、行為または要素が少なくとも部分的に情報、行為、または要素に基づく実装形態を含み得る。
【００８９】
本明細書に開示される任意の実装形態は、任意の他の実装形態と組み合わせることができ、「実装形態(an implementation)」、「いくつかの実装形態(some implementations)」、「代替実装形態(an alternate implementation)」、「様々な実装形態(various implementation)」、「一実装形態(one implementation)」などへの言及は、必ずしも相互に排他的ではなく、実装形態に関連して説明された特定の機能、構造、または特性が少なくとも1つの実装形態に含まれ得ることを示すことを意図している。本明細書で使用されるそのような用語は、必ずしもすべてが同じ実装形態を指すわけではない。任意の実装形態は、本明細書に開示される態様および実装形態と一致する任意の方法で、包括的または排他的に、任意の他の実装形態と組み合わせられ得る。
【００９０】
「または(or)」への言及は、「または(or)」を使用して説明される任意の用語が、説明される用語の単一、複数、およびすべてのいずれをも示し得るように、包括的であると解釈され得る。
【００９１】
図面、詳細な説明、または任意の特許請求の範囲の技術的特徴の後に参照記号が続く場合、参照記号は、図面、詳細な説明、および特許請求の範囲の理解性を高めることのみを目的として含まれている。したがって、参照記号もその欠如も、任意の特許請求の範囲の要素の範囲に制限的な影響を及ぼすことはない。
【００９２】
本明細書に記載のシステムおよび方法は、その特性から逸脱することなしに、他の特定の形態において具体化され得る。本明細書で提供される例は、情報リソースのコンテンツの表示を制御することに関連しているが、本明細書で説明されるシステムおよび方法は、他の環境に適用されることを含むことができる。前述の実装形態は、説明されたシステムおよび方法を限定するものではなく、例示的なものである。したがって、本明細書に記載のシステムおよび方法の範囲は、前述の説明ではなく、添付の特許請求の範囲によって示され、特許請求の範囲の意味および同等の範囲内に入る変更は、そこに含まれる。
【符号の説明】
【００９３】
100  環境
105  ネットワーク
110  データ処理システム
115  コンテンツプロバイダコンピューティングデバイス
120  コンテンツパブリッシャコンピューティングデバイス
125  クライアントデバイス
130  コンテンツ要求コンポーネント
135  コンテンツ選択コンポーネント
145  データベース
150  属性コンポーネント
165  ユーザデータ
165  ユーザ情報
170  要求ログ
202  コンテンツアイテムデバイス識別子ジェネレータ
204  認証トークンジェネレータ
206  ストレージ
208  サードパーティアプリケーション
210  SDK
300  プロセス
400  認証トークン
402  公開鍵フィールド
404  認証トークン作成タイムスタンプフィールド
406  メッセージペイロードフィールド
408  デジタル署名フィールド
500  プロセス
600  プロセス
700  プロセス
800  コンピュータシステム
800  データ処理システム
805  通信インターフェース
810  出力デバイス
815  入力デバイス
820  プロセッサ
825  メモリ
【図１】
2022501668.tif 000003
【図２】
2022501668.tif 000004
【図３】
2022501668.tif 000005
【図４】
2022501668.tif 000006
【図５】
2022501668.tif 000007
【図６】
2022501668.tif 000008
【図７】
2022501668.tif 000009
【図８】
2022501668.tif 000010
【国際調査報告】
2022501668.tif 000011
2022501668.tif 000012