様々な図面における同様の参照番号および名称は、同様の要素を示す。
一般に、本文書は、イベントレベルの集約されたネットワーク測定値を決定する際の不正を防止するための暗号化技法について説明する。例えば、本文書において説明されている技法は、様々なタイプのコンバージョンに関するデジタルコンポーネントに関するイベントレベルの集約されたインプレッション測定値およびコンバージョン測定値を決定する際の不正を防止することができる。本文書において説明されている暗号化技法は、例えば、ユーザのクライアントデバイスから受信されたユーザデータをすべてのエンティティが追跡または集約することができることを防止することによって、ユーザのプライバシーを保護することもできる。
システムの概要
図1は、集約サーバ180が集約されたネットワーク測定値を決定する例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどのデータ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110と、発行者130と、ウェブサイト140と、デジタルコンポーネント配信システム150と、不正検出システム170と、コンバージョンシステム172と、集約サーバ180と、報告システム190と、タイムサーバ192とを接続する。例示的な環境100は、多くの異なるクライアントデバイス110と、発行者130と、ウェブサイト140とを含み得る。いくつかの実装形態において、環境100は、複数のデジタルコンポーネント配信システム150と、不正検出システム170と、コンバージョンシステム172と、報告システム190とを含むこともできる。この例では2つの集約サーバ180-Aおよび180-Bが存在するが、以下で説明するように、3つ以上の集約サーバ180-Aおよび180-Bも使用され得る。
ウェブサイト140は、ドメイン名に関連付けられ、1つまたは複数のサーバによってホストされる1つまたは複数のリソース145である。例示的なウェブサイトは、テキストと、画像と、マルチメディアコンテンツと、スクリプトなどのプログラミング要素とを含むことができる、HTMLにおいてフォーマットされたウェブページの集合体である。各ウェブサイト140は、ウェブサイト140を制御、管理、および/または所有するエンティティである発行者130によって維持される。
リソース145は、ネットワーク105を介して提供され得る任意のデータである。リソース145は、リソース145に関連付けられたリソースアドレス、例えば、ユニバーサルリソースロケータ(URL)によって識別される。リソースは、ほんの数例を挙げると、HTMLページ、ワードプロセッシング文書、ポータブルドキュメントフォーマット(PDF)文書、画像、ビデオ、フィードソースを含む。リソースは、埋め込み情報(ハイパーリンク内のメタ情報など)および/または埋め込み命令(スクリプトなど)を含み得る、単語、フレーズ、画像、および音声などのコンテンツを含むことができる。
クライアントデバイス110は、ネットワーク105を介して通信することができる電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、例えば、スマートフォン、ならびにネットワーク105を介してデータを送信および受信することができる他のデバイスを含む。
クライアントデバイス110は、典型的には、ネットワーク105を介するデータの送信および受信を容易にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイスのために開発されたアプリケーションである。発行者130は、ネイティブアプリケーションを開発することができ、クライアントデバイス110に提供することができ、例えば、ダウンロードに利用可能することができる。いくつかの実装形態において、クライアントデバイス110は、デジタルメディアデバイス、例えば、ビデオをテレビにストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイスである。デジタルメディアデバイスは、ビデオをストリーミングし、および/またはリソースを提示するウェブブラウザおよび/または他のアプリケーションを含むこともできる。
ウェブブラウザは、例えば、クライアントデバイス110のユーザがウェブブラウザのアドレスバー内にリソース145のためのリソースアドレスを入力するか、またはリソースアドレスを参照するリンクを選択することに応答して、発行者130のウェブサイト140をホストするウェブサーバからのリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者130のリモートサーバからのアプリケーションコンテンツを要求することができる。
いくつかのリソース145、アプリケーションページ、または他のアプリケーションコンテンツは、リソース145またはアプリケーションページでデジタルコンポーネントを提示するためのデジタルコンポーネントスロットを含むことができる。本文書全体で使用されているように、「デジタルコンポーネント」というフレーズは、デジタルコンテンツまたはデジタル情報の個別の単位(例えば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体において、物理的なメモリデバイス内に電子的に記憶され得、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとることができ、広告が一種のデジタルコンポーネントであるように、広告情報を含むことができる。例えば、デジタルコンポーネントは、アプリケーション112によって提示されるウェブページまたは他のリソースのコンテンツを補足することを意図したコンテンツであり得る。より具体的には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンポーネントを含み得る(例えば、デジタルコンポーネントは、ウェブページのコンテンツと同じトピック、または関連するトピックに関連し得る。したがって、デジタルコンポーネント配信システム150によるデジタルコンポーネントの提供は、ウェブページまたはアプリケーションコンテンツを補足し、一般的には強化することができる。
アプリケーション112が1つまたは複数のデジタルコンポーネントスロットを含むリソース145(またはアプリケーションコンテンツ)をロードしたとき、アプリケーション112は、デジタルコンポーネント配信システム150からの各スロットのためのデジタルコンポーネントを要求することができる。デジタルコンポーネント配信システム150は、次に、デジタルコンポーネントプロバイダ160からのデジタルコンポーネントを要求することができる。デジタルコンポーネントプロバイダ160は、リソース145で提示するためのデジタルコンポーネントを提供するエンティティである。
場合によっては、デジタルコンポーネント配信システム150は、1つまたは複数のデジタルコンポーネントパートナー157からのデジタルコンポーネントを要求することもできる。デジタルコンポーネントパートナー157は、デジタルコンポーネント要求に応答して、デジタルコンポーネントプロバイダ160に代わってデジタルコンポーネントを選択するエンティティである。
デジタルコンポーネント配信システム150は、様々な基準に基づいて、各デジタルコンポーネントスロットのためのデジタルコンポーネントを選択することができる。例えば、デジタルコンポーネント配信システム150は、デジタルコンポーネントプロバイダ160および/またはデジタルコンポーネントパートナー157から受信されたデジタルコンポーネントから、リソース145(またはアプリケーションコンテンツ)の関連性、デジタルコンポーネントのパフォーマンス(例えば、ユーザがデジタルコンポーネントと対話する割合)などに基づいて、デジタルコンポーネントを選択することができる。デジタルコンポーネント配信システム150は、次いで、リソース145または他のアプリケーションコンテンツでの提示のために、選択されたデジタルコンポーネントをクライアントデバイス110に提供することができる。
アプリケーション112がデジタルコンポーネントを提供したとき、アプリケーション112(ブラウザであり得る)は、デジタルコンポーネントの提示のためのインプレッションデータ114を記憶することができる。デジタルコンポーネントの特定の提示に関するインプレッションデータ114は、デジタルコンポーネントに関するランディングページのURLもしくはドメイン(例えば、デジタルコンポーネントによってリンクされたページであり、ユーザがデジタルコンポーネントをクリックするか、デジタルコンポーネントと対話したとき、アプリケーション/ブラウザがページをユーザに提示する)、デジタルコンポーネントに関する1つもしくは複数の識別子、インプレッションに関連付けられたイベントレベルデータ、インプレッションデータがクライアントデバイス110からいつ削除されるのかを指定する有効期限、および/またはデジタルコンポーネントのコンバージョン報告が送信される報告URLもしくはドメインを含むことができる。このデータは、例えば、デジタルコンポーネントのメタデータまたはデジタルコンポーネントのアンカータグとして、デジタルコンポーネントによって提供され得る。以下で処理詳細に説明するように、デジタルコンポーネントの各インプレッションに関する生のインプレッションデータを記憶するのではなく、またはそれに加えて、アプリケーション112は、不正検出システム170によってブラインド署名されたインプレッションデータを記憶することができる。
アプリケーション112は、コンバージョンが検出されたことに応答して、コンバージョンデータ116を記憶することもできる。デジタルコンポーネントに対するコンバージョンは、デジタルコンポーネントがユーザによって提示された、および/またはユーザと対話した後の、指定されたユーザアクションの完了である。様々なコンバージョン測定値のニーズに対して複数のタイプのコンバージョンが存在するので、コンバージョンに関するコンバージョンデータ116は、コンバージョンのタイプを示すデータを含むことができる。コンバージョンのタイプは、コンバージョンが完了した後の後続のアクションを指定することができる。例えば、コンバージョンは、オンラインショッピングカートへのアイテムの追加であり得る。この例では、第1のタイプのコンバージョンは、チェックアウトなしの(例えば、購入を完了しない)アイテムの追加であり得、第2のタイプのコンバージョンは、チェックアウトありのアイテムの追加であり得る。以下でより詳細に説明するように、コンバージョンに関するコンバージョンデータは、コンバージョンのタイプを示す1つまたは複数のビットのセットであり得、アプリケーションは、デジタルコンポーネント配信システム150(またはコンバージョンが実際に発生するコンバージョンシステム)によってブラインド署名されたコンバージョンデータを記憶することができる。
1つまたは複数のサーバとして実装され得る不正検出システム170は、インプレッションが有効であるかまたは不正であるかを判定するために、クライアントデバイス110および/またはアプリケーション112から受信された不正信号を評価することができる。以下で説明するように、不正検出システム170は、コンバージョンシステム172から受信された不正信号に基づいて、コンバージョンが有効であるかまたは不正であるかどうかを判定することもできる。不正信号は、アプリケーションに依存する可能性があり、異なる実装形態において異なる可能性がある。
インプレッション時に、アプリケーション112(またはクライアントデバイス110上のオペレーティングシステム)は、不正検出信号を収集し、不正検出信号を不正検出システム170に提供することができる。不正検出信号に加えて、アプリケーション112は、インプレッションに関するブラインドインプレッションデータを不正検出システム170に送信することができる。ブラインドインプレッションデータは、暗号化技法を使用してブラインドされた(例えば、偽装された)インプレッションデータである。不正検出システム170がインプレッションが有効であると判定した場合、不正検出システム170は、ブラインドインプレッションデータに署名し、署名されたブラインドインプレッションデータをアプリケーション112に提供することができる。ブラインドインプレッションデータを生成し、ブラインドインプレッションデータに署名するための例示的な技法について以下に説明する。
不正検出システム170は、デジタルコンポーネント配信システム150によって動作され得る。いくつかの実装形態において、不正検出システム170は、1つまたは複数の第三者によって動作され得る。例えば、アプリケーションプロバイダ、例えば、ウェブブラウザもしくはネイティブアプリケーションを開発および提供するエンティティ、および/またはデジタルコンポーネント配信システム150を動作するデジタルコンポーネントディストリビュータは、不正を検出するために不正検出システム170を動作させるために1つまたは複数の第三者を認証し、複数の異なる開発者のアプリケーション(例えば、ウェブブラウザおよび/またはネイティブアプリケーション)から受信されたブラインドデータにブラインド署名することができる。
1つまたは複数のサーバとして実装され得るコンバージョンシステム172は、コンバージョンが発生したかどうかを判定することができる。例えば、各デジタルコンポーネントプロバイダ160は、コンバージョンがそのデジタルコンポーネントに対して発生したかどうかを判定するコンバージョンシステム172を動作させることができる。特定の例において、コンバージョンは、ウェブサイトにおける製品の取得であり得る。この例では、コンバージョンシステム172およびウェブサイトは、製品のディストリビュータによって維持され得る。コンバージョンシステム172は、ウェブサイトをホストするウェブサーバから、製品が取得されたことを指定するデータを受信し、そのデータに基づいて、コンバージョンが発生したと判定することができる。
別の例において、コンバージョンは、アプリケーションのダウンロードであり得る。この例では、アプリケーションがクライアントデバイス110にダウンロードされたとき、アプリケーションストアは、アプリケーションがクライアントデバイス110にダウンロードされたことを指定するデータをアプリケーション開発者のコンバージョンシステム172に提供することができる。いくつかの実装形態において、アプリケーションストアも、コンバージョンシステム172を動作させる。
コンバージョンシステム172は、コンバージョンが有効であるかまたは不正であるかを判定するために、不正検出システム170と対話することもできる。例えば、コンバージョンシステム172は、不正検出システム170に、ブラインドコンバージョンデータと不正検出信号とを提供することができる。ブラインドコンバージョンデータは、暗号化技法を使用してブラインドされた(例えば、偽装された)コンバージョンデータである。不正検出システム170がコンバージョンが有効であるおよび/またはユーザ対話が本物であると判定した場合、不正検出システム170は、ブラインドコンバージョンデータに署名し、署名されたブラインドコンバージョンデータをアプリケーション112に提供することができる。ブラインドコンバージョンデータを生成し、ブラインドコンバージョンデータに署名するための例示的な技法について以下で説明する。
集約サーバ180は、クライアントデバイス110から受信されたデータに基づいて、集約されたネットワーク測定値を生成することができる。集約サーバ180は、クライアントデバイス110から受信されたデータに基づいて、様々なタイプのコンバージョンに関するインプレッションおよび/またはコンバージョンカウントを生成することができる。例えば、集約サーバ180は、デジタルコンポーネントについて、ユーザのプライバシーを保護し、不正を防止しながら、クリックスルーコンバージョンのカウント、ビュースルーコンバージョンのカウント、アプリケーションダウンロードコンバージョンのカウント、クロスデバイスコンバージョンのカウント、ならびにアプリケーションからウェブへのコンバージョンのカウント、およびウェブからアプリケーションへのコンバージョンのカウントを決定することができる。以下で説明するように、集約サーバ180は、MPCプロトコルを実装し、ネットワーク測定値を決定および報告する際に、ユーザのプライバシーを保護し、不正を防止するために、可換暗号化技法を使用する。
クリックスルーコンバージョンは、ユーザがデジタルコンポーネントと対話し、その後、特定のアクションを完了するコンバージョンである。ビュースルーコンバージョンは、デジタルコンポーネントがユーザに提示され、その後、ユーザが特定のアクションを完了するコンバージョンである。アプリケーションダウンロードコンバージョンは、デジタルコンポーネントがユーザに提示され、その後、ユーザが提示されたデジタルコンポーネントによって参照された(例えば、プロモートされた)アプリケーションをダウンロードするコンバージョンである。この例では、アプリケーションのダウンロードは、特定のアクションである。クロスデバイスコンバージョンは、デジタルコンポーネントが提示されたデバイスとは異なるデバイスにおいて特定のアクションが発生するコンバージョンである。アプリケーションからウェブへのコンバージョンは、アプリケーションにおいてインプレッションが発生し、例えば、デジタルコンポーネントが提示され、ブラウザにおいて特定のイベントが発生したコンバージョンである。
集約サーバ180は、インプレッションデータ(例えば、インプレッションカウント)と、コンバージョンデータ(例えば、コンバージョンカウント)とを報告システム190に報告することができる。報告システム190は、インプレッションデータ、コンバージョンデータ、および/または関連するネットワーク測定値を担持する着信要求を受信する報告URLを実装する報告ドメインとして実装され得る。報告システム190は、デジタルコンポーネントディストリビュータ、またはデータをデジタルコンポーネント配信システム150もしくはデジタルコンポーネントディストリビュータに報告する別のエンティティによって維持され得る。
環境100は、タイムサーバ192を含むこともできる。タイムサーバ192は、以下で説明する技法のうちのいくつかにおいて使用され得る。以下で説明するように、タイムサーバ192は、タイムサーバ192の公開鍵を使用して暗号化されたいくつかのデータを復号するために使用され得る。タイムサーバ192は、公開鍵に対応する秘密鍵を秘密に維持し、データを復号するために秘密鍵を使用することができる。
ネットワーク測定値を決定するための例示的なプロセスフロー
図2は、集約されたネットワーク測定値を決定するための例示的なプロセスフロー200のブロック図である。プロセスフロー200は、1つまたは複数のクライアントデバイス110と、不正検出システム170と、コンバージョンシステム172と、集約サーバ180-Aおよび180-Bと、報告システム190とを含む、図1の構成要素のうちのいくつかによって実行されるものとして示されている。
ウェブブラウザまたはネイティブアプリケーションであり得るアプリケーション112の各インスタンスは、コンバージョン測定目的のために使用される一意の識別子を有することができる。言い換えれば、あるクライアントデバイス上の特定のウェブブラウザのインスタンスは、異なるクライアントデバイス上で実行される特定のウェブブラウザの別のインスタンスとは異なり、異なる一意の識別子を有することになる。アプリケーション112のための一意の識別子は、ランダムまたは疑似ランダムに生成され得、アプリケーション112は、一意の識別子をアプリケーション112の外部に決して漏らさないように構成され得る。以下で説明するように、一意の識別子の特性および使用方法は、測定されるコンバージョンのタイプに基づいて変化する可能性がある。クロスデバイス測定をサポートするいくつかの実装形態において、同じユーザによって所有されているすべてのクライアントデバイス110上のすべのアプリケーション112は、コンバージョン測定目的のために使用される同じ一意の識別子を有し得る。
デジタルコンポーネントがクライアントデバイス110におけるアプリケーション112によって提示されたとき、アプリケーション112は、インプレッションデータ(mi)と、宛先(dc_destination)と、コンバージョン測定有効期限と、デジタルコンポーネントについてコンバージョン報告を受信する報告ドメイン(report_domain)とを記録することができる。インプレッションデータは、不明確なバイト配列の形態であり得、例えば、デジタルコンポーネントのための1つもしくは複数の識別子、および/またはアプリケーション112におけるデジタルコンポーネントのインプレッションに関連付けられたイベントレベルデータを含むことができる。
宛先は、デジタルコンポーネントに関するランディングページ(例えば、デジタルコンポーネントによってリンクされたページであり、ユーザがデジタルコンポーネントをクリックするか、またはデジタルコンポーネントと対話したとき、アプリケーション/ブラウザは、このページをユーザに提示する)のユニバーサルリソース識別子(URI)、URL、またはドメインを含むことができる。URLの例は、アプリケーションをダウンロードするためのアプリケーションストアへのリンクと、アプリ内購入のためのアプリケーション内の場所へのディープリンクとを含む。したがって、宛先は、宛先ドメインと呼ばれることもある。コンバージョン測定有効期限は、インプレッションデータがクライアントデバイス110から削除される時間(または時間期間)であり得る。報告ドメインは、例えば、デジタルコンポーネントプロバイダ160がコンバージョン報告が送信されることを望む報告システム190のための、デジタルコンポーネントに関するコンバージョン報告が送信される報告URLまたはドメインであり得る。
いくつかの実装形態において、アプリケーション112は、アプリケーション112がデジタルコンポーネントを提示したとき、ユーザがデジタルコンポーネントと対話した、例えば、選択またはクリックしたかどうかを指定するクリックデータ(clicked)を記録することもできる。クリックデータは、例えば、対話したときに1の値を有し、対話していないときにゼロの値を有するブール変数であり得る。いくつかの他の実装形態において、アプリケーション112は、ユーザがデジタルコンポーネントとどのように対話したか、例えば、ユーザがアンケートに記入した、またはデジタルコンポーネントをミュートしたことを示す他のタイプのメタデータを記録することもできる。例えば、ユーザは、ユーザが将来同じ(または類似の)デジタルコンポーネントを見たくないことを示すために、デジタルコンポーネントをミュートすることができる。
上記で説明したように、アプリケーション112は、デジタルコンポーネントのインプレッションが有効であるかまたは不正であるかを判定するために、不正検出システム170と対話することもできる。アプリケーション112は、インプレッションが有効である場合、不正検出システム170がインプレッションに関連する情報にブラインド署名することを要求することもできる。
いくつかの実装形態において、デジタルコンポーネントは、不正検出信号202を収集し、評価のために不正検出信号202を不正検出システム170に送信するコンピュータ可読コード、例えば、スクリプトを呼び出すことができる。アプリケーション112は、インプレッションが有効である場合、インプレッションに関連する情報にブラインド署名するように不正検出システム170に要求することで、不正検出システム170へのこの呼び出しにピギーバックすることができ、例えば、データを追加することができる。
いくつかの実装形態において、アプリケーション112は、不正検出システム170に、ブラインドインプレッションデータ201を送信することができる。ブラインドインプレッションデータ201は、不正検出システム170によってブラインド署名される2つのブラインドインプレッションデータ要素を含むことができる。これらのデータ要素をバインドおよび/または暗号化することは、不正検出システム170が暗号化されていないユーザデータを受信すること、およびユーザを追跡することを防止することによって、ユーザのプライバシーを保護する。
第1の暗号化データ要素は、アプリケーションのための一意の識別子(ID)、宛先(dc_destination)、および報告ドメイン(report_domain)の組合せ(例えば、連結またはなにか他の組合せ)の暗号化された暗号ハッシュ(crypto-hashed)バージョンである。この第1の暗号化データ要素は、CryptoHash(ID、dc_destination,report_domain)として定義され得る。この例における暗号ハッシュは、タプル(ID,dc_destination,report_domain)をハッシュ値にマッピングする一方向性の暗号ハッシュ関数であり得る。
一例において、暗号ハッシュ関数は、ハッシュベースのメッセージ認識コード(HMAC)、例えば、HMACSHA256メッセージコードである。例えば、第1の暗号化データ要素は、IDを鍵として使用し、HMACをネストするHMACSHA256(HMACSHA256(IDdc_destination),report_domain)であり得る。別の例において、第1の暗号化データ要素は、SHA256(ID||dc_destination||report_domain)であり得る。本文書の目的のために、||という記号は、単純なメッセージから複雑なメッセージを構成する方法を示し、ここで、構成は、可逆であり、すなわち、複雑なメッセージから単純なメッセージを抽出して戻すことが可能である。1つの例示的な方法は、シリアル化/逆シリアル化を用いるプロトコルバッファである。他の例は、JAVA(登録商標)シリアル化、JavaScript Object Notation(JSON)などを含む。
第2の暗号化データ要素は、インプレッションデータ(mi)と、デジタルコンポーネントがクリックされた(clicked)か、または他の方法で対話されたかどうかを指定するデータとの組合せの暗号化バージョンである。例えば、アプリケーション112は、(mi||clicked)の複雑なメッセージを生成し、報告システム190から取得された、例えば、フェッチされた公開鍵を使用してこの複雑なメッセージを暗号化することができる。この複雑なメッセージは、インプレッションデータと、デジタルコンポーネントがクリックされたか、もしくは他の方法で対話されたかどうかとを表す。アプリケーション112は、報告システム190のみが公開鍵に対応する、例えば、数学的にリンクされた秘密鍵を使用してインプレッションデータとクリックされたデータとを復号することができるように、報告システム190の公開鍵を使用して複雑なメッセージを暗号化することができる。報告システム190は、他のエンティティがこの情報にアクセスすることができないように、秘密鍵を秘密に維持することができる。この第2の暗号化データ要素は、PubKeyEncrypt(mi||clicked,report_domain)として定義され得る。この表現において、コンマの後に「report_domain」が含まれているのは、複雑なメッセージを暗号化するために使用される公開鍵が報告システム190の公開鍵であることを示す。
不正検出システム170は、ブラインドインプレッションデータ201と不正検出信号202とを受信し、デジタルコンポーネントのインプレッションが有効であるかまたは不正であるかを判定するために、不正検出信号を評価することができる。不正検出システム170が、インプレッションが有効であると判定した場合、不正検出システム170は、ブラインド署名技法を使用してブラインドインプレッションデータ201にブラインド署名することができる。例えば、不正検出システム170は、ブラインドインプレッションデータ201の第1のデータ要素のための第1のブラインド署名と第2の暗号化データ要素のための第2のブラインド署名とを生成することができる。いくつかの実装形態において、ブラインド署名技法は、Cloudflare(商標)によってサポートされているPrivacy Passプロトコル、またはChromeからのトラストトークンであり得、これらの両方は、Internet Engineering Task Force(IETF) Verifiable, Oblivious Pseudorandom Function(VOPRF)ドラフト標準に基づいている。
このVOPRFブラインド署名プロトコルは、不正検出システム170に公開される情報の量が制限されるべきであり、アプリケーション112が、署名が有効であり、署名以外のいかなる情報も含まないことを保証する必要があり、ユーザを追跡するために追加の情報が使用され得るので、特に有利である。本文書において説明されている技法の目的のために、VOPRFプロトコルは、関数を適用し、関数の引数に追加しないので、決定論的であると考えられる。アプリケーション112は、署名の検証と、インプレッションデータのブラインド解除とを可能にするために、署名方式を知ることができる。
不正検出システム170は、ブラインド署名されたインプレッションデータ203をアプリケーション112に送信することができる。このブラインド署名されたインプレッションデータ203は、第1および第2の暗号化データ要素と、それらのそれぞれのブラインド署名とを含む。
アプリケーション112は、第1の暗号化データ要素と、第1の暗号化データ要素のためのブラインド署名とを使用して鍵を生成することができる。この鍵は、ブラインド署名された結合鍵と呼ばれ得、BlindlySignedKey(ID,dc_destination,report_domain)として定義され得、BlindlySignedKey(ID,dc_destination,report_domain)は、不正検出システム170から受信された第1の暗号化データ要素のブラインド署名と組み合わされたCryptoHash(ID,dc_destination,report_domain)を表す。
アプリケーション112は、不正検出システム170から受信された第2の暗号化データ要素とそのブラインド署名とを使用して、多重暗号化されたインプレッションデータを生成することもできる。例えば、アプリケーション112は、第2の暗号化データ要素(PubKeyEncrypt(mi||clicked,report_domain)と第2の暗号化データ要素のブラインド署名とを含む複雑なメッセージを暗号化することによって、2回暗号化されたインプレッションデータ(ImpressionData2)を生成することができる。ImpressionData1が1回暗号化されたデータ(第2の暗号化データ要素)であるとする。この2回暗号化されたインプレッションデータは、ImpressionData2=(PubKeyEncrypt(ImpressionData1||blind_signature,Si)として定義され得、ここで、blind_signatureは、第2の暗号化データ要素のブラインド署名を表し、Siは、インプレッションデータを収集する集約サーバ180-Aの公開鍵を表す。すなわち、アプリケーション112は、1回暗号化されたデータ(ImpressionData1)および1回暗号化されたデータ(ImpressionData1)のブラインド署名から複雑なメッセージを生成し、集約サーバ180-Aの公開鍵を使用してこの複雑なメッセージを暗号化することによって、2回暗号化されたインプレッションデータ(ImpressionData2)を生成することができる。
アプリケーション112は、次いで、2回暗号化されたインプレッションデータ(ImpressionData2)と、コンバージョンデータを収集する集約サーバ180-Bの公開鍵とを使用して、3回暗号化されたインプレッションデータ(ImpressionData3)を生成することができる。いくつかの実装形態において、3回暗号化されたインプレッションデータ(ImpressionData3)は、確率的公開鍵暗号化を使用して生成される。この例では、2回暗号化されたインプレッションデータは、ImpressionData3p=(PubKeyEncryptProbabilistic(ImpressionData2,Sc)として定義され得る。
この時点で、インプレッションデータは、報告システム190、集約サーバ180-A、および集約サーバ180-Bからの公開鍵を順次使用して3回暗号化される。このようにして、アプリケーション112は、最も内側の1回暗号化されたインプレッションデータ(PubKeyEncrypt(mi||clicked,report_domain)がアプリケーション112から報告システム190への送信中にインプレッションデータmiを保護するので、十分なプライバシーの保護で、3回暗号化されたインプレッションデータ(ImpressionData3p)を集約サーバ180-Aに安全に送信することができる。集約サーバ180-Bの公開鍵を使用する最も外側の確率的公開鍵暗号化は、報告システム190と、集約サーバ180-Aと、デジタルコンポーネント配信システム150との間の共謀を防止し、ここで、共謀者は、発行者ドメインを越えてユーザを追跡するために、安定したブラインド署名されたインプレッション結合鍵(BlindlySignedKey(ID,dc_destination,report_domain))と再構成可能な1回暗号化されたインプレッションデータ(PubKeyEncrypt(mi||clicked,report_domain)とを使用し得る。以下で説明するように、2つの集約サーバ180-Aおよび180-Bが、(PubKeyEncrypt(mi||clicked,report_domain)がすべての適用可能なしきい値を満たすと確信したときにのみ、集約サーバ180-Aおよび180-Bは、各集約サーバ180-Aおよび180-Bによって個別に報告システム190に送信される(PubKeyEncrypt(mi||clicked,report_domain)を明らかにするために、3回暗号化されたインプレッションデータを共同で復号する。
いくつかの実装形態において、不正検出システム170は、ブラインド署名されたインプレッション結合鍵(BlindlySignedKey(ID,dc_destination,report_domain))を生成するために第1の暗号化データ要素にブラインド署名し、第2の暗号化データ要素(ImpressionData1)にブラインド署名するために、2つの異なる鍵を使用する。これは、悪意のあるアプリケーション、例えば、悪意のあるブラウザが、インプレッションデータのためのブラインド署名を要求し、後にそれをブラインド署名されたインプレッション結合鍵のための署名として主張することや、またはその逆を行うことを防止することができる。
アプリケーション112は、インプレッションデータが記録されたインプレッションごとに、インプレッションデータ、例えば、3回暗号化されたインプレッションデータを集約サーバ180-Aにアップロードすることができる。例えば、アプリケーション112は、多重暗号化されたインプレッションデータ(例えば、3回暗号化されたインプレッションデータ)を定期的にバッチアップロードすることができる。いくつかの実装形態において、アプリケーション112は、インプレッションごとに、インプレッションに関するブラインド署名されたインプレッション結合鍵(BlindlySignedKey(ID,dc_destination,report_domain))を鍵として含み、3回暗号化されたインプレッションデータ(ImpressionData3p)を値として含む鍵値ペアMi205をアップロードする。
このバッチアップロードは、インプレッションが発生したときにインプレッションごとに鍵値ペアMiをアップロードすることを上回るいくつかの利点を有する。例えば、バッチアップロードは、タイミングベースの攻撃を回避するために、集約サーバ180-Aからの実際のインプレッション時間を隠すことができる。これは、負荷、例えば、集約サーバ180-Aに対する1秒あたりのクエリ数(QPS)負荷を低減することもできる。これは、例えば、モバイルデバイスがWi-Fiに接続され、充電しているときにバッチアップロードが発生する場合、クライアントデバイス110による帯域幅とバッテリ消費とを低減することもできる。これは、暗号化鍵を管理するためのバッチプロトコルインスタンスごとの鍵の選択も可能にし、例えば、クライアントデバイス110と集約サーバ180-Aとの間の通信がハイパーテキスト転送プロトコルセキュア(HTTPS)を介する場合、バッチ全体に対して同じ暗号化鍵が使用され得る。
コンバージョンシステム172がクライアントデバイス110に対して実際のコンバージョンが発生したと判定したとき、コンバージョンシステム172は、コンバージョンが有効であるかまたは不正であるかを判定するために、不正検出システム170と対話することができる。例えば、コンバージョンシステム172は、クライアントデバイス110から不正検出信号211を取得し、不正検出信号211を不正検出システム170に送信することができる。不正検出システム170は、コンバージョンが有効であるかまたは不正であるか、クライアントデバイス110が信頼できるかどうか(対ルート化されているか、データセンタ内のエミュレータか、または他の方法で危険にさらされているか)、および/またはユーザの対話が本物であるかどうかを判定するために、不正検出信号211を評価することができる。
不正検出信号を用いて、コンバージョンシステム172は、コンバージョンが有効である場合、不正検出システム170によってブラインド署名される第3の暗号化データ要素を送信することもできる。この第3の暗号化データ要素は、アプリケーション112のための一意の識別子(ID)と、コンバージョンが発生したコンバージョンドメイン(conversion_domain)との組合せの暗号化されたバージョンを含むことができる。コンバージョンドメインは、コンバージョンが発生したウェブサイトであり得る。このデータは、インプレッションデータの第1の暗号化データ要素が暗号化される方法と同様に、コンバージョンに関する報告システム190の公開鍵を使用して暗号化され得る。例えば、第3の暗号化データ要素は、CryptoHash(ID,conversion_domain,report_domain)として定義され得、第1の暗号化データ要素を生成するために使用されたものと同じ暗号ハッシュ関数を使用して暗号化され得る。
不正検出システム170は、インプレッションに関する第1の暗号化データ要素に署名したものと同じプロトコルを使用して、第3の暗号化データ要素にブラインド署名することができる。不正検出システム170は、次いで、ブラインド署名されたコンバージョンデータ212をコンバージョンシステム172に送信することができる。このブラインド署名されたコンバージョンデータ212は、ブラインド署名された第3の暗号化データ要素と、第3の暗号化データ要素のブラインド署名とを含むことができる。コンバージョンシステム172は、ブラインド署名されたコンバージョンデータ212を使用して、ブラインド署名されたコンバージョン鍵を生成することができる。ブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))は、不正検出システム170から受信された第3の暗号化データ要素と第3の暗号化データ要素のブラインド署名との組合せである。このようにして、コンバージョンが実際にインプレッションによってトリガされた場合、インプレッション時のdc_destinationおよびコンバージョン時のconversion_domainは、同じになる。したがって、ブラインド署名されたインプレッション鍵は、ブラインド署名されたコンバージョン鍵と一致する。
コンバージョンシステム172は、コンバージョンに関するコンバージョンメタデータmcと、コンバージョンシステム172の秘密鍵とを使用して、署名されたコンバージョンデータを生成することもできる。コンバージョンメタデータmcは、コンバージョンのタイプ、ラベル、および量子化されたコンバージョン値などの、コンバージョンに関連するデータを含むことができる。署名されたコンバージョンデータは、署名されたコンバージョンデータは、PrivateKeySign(mc,conversion_domain)として定義され得る。署名されたコンバージョンデータを生成することは、秘密鍵および公開鍵ベースのデジタル署名アルゴリズムを使用して、コンバージョンメタデータにデジタル署名を付加することを含むことができる。コンバージョンシステム172は、ブラインド署名されたコンバージョン鍵およびブラインド署名されたコンバージョンデータ213をアプリケーション112に提供することができる。
アプリケーション112は、署名されたコンバージョンデータ(PrivateKeySign(mc,conversion_domain))を使用して、多重暗号化されたコンバージョンデータを生成することができる。アプリケーション112は、コンバージョンに関する報告システム190の公開鍵を使用して、署名されたコンバージョンデータ(PrivateKeySign(mc,conversion_domain))を暗号化することによって、1回暗号化されたコンバージョンデータを生成することができる。この1回暗号化されたコンバージョンデータ(ConversionData1)は、PubKeyEncrypt(PrivateKeySign(mc,conversion_domain),report_domain)として定義され得る。いくつかの実装形態において、アプリケーション112ではなく、コンバージョンシステム172が、多重暗号化されたコンバージョンデータ、または少なくとも1回暗号化されたコンバージョンデータを生成することができる。
デジタル署名と組み合わせた暗号化の使用は、複数の仲介者、例えば、集約サーバ180-Aおよび180-Bを介したコンバージョンシステム172から報告システム190への送信中の改ざんおよび傍受からコンバージョンデータmcを保護する。後の段階において、集約を容易にし、k-匿名性を強制するために、ConversionData1における暗号化およびデジタル署名は、時間/バッチ処理時間のウィンドウ内で決定論的であるべきなので、同一のプレーンテキストが同一の暗号テキストにマッピングされる。
場合によっては、コンバージョンメタデータmcは、あまりエントロピーを持たない場合がある。したがって、1回暗号化されたコンバージョンデータ(ConversionData1)は、制限された濃度を有し得、容易に推測され得る。そのような場合、コンバージョンメタデータmcと、コンバージョンドメイン(conversion_domain)および報告ドメイン(report_domain)の暗号ハッシュとから複雑なメッセージを構成し、複雑なメッセージを暗号化することによって、コンバージョンメタデータmcに疑似エントロピー(例えば、暗号化鍵ベースのランダム性など)が追加され得る。この例では、1回暗号化されたコンバージョンデータ(ConversionData1)は、PubKeyEncrypt(PrivateKeySign(mc||HMACSHA256(conversion_domain,report_domain),conversion_domain),report_domain)として定義され得、ここで、HMACSHA256(conversion_domain,report_domain)は、コンバージョンドメインおよび報告ドメインの暗号ハッシュであり、疑似エントロピーを追加する。この場合、コンバージョンドメインの秘密鍵は、複雑なメッセージに署名するために使用され、報告ドメインの公開鍵は、署名された複雑なメッセージを暗号化するために使用される。
アプリケーション112は、コンバージョンデータを収集する集約サーバ180-Bの公開鍵を使用して、1回暗号化されたコンバージョンデータ(ConversionData1)を暗号化することによって、2回暗号化されたコンバージョンデータ(ConversionData2)を生成することができる。2回暗号化されたコンバージョンデータ(ConversionData2)は、PubKeyEncrypt(ConversionData1,Sc)として定義され得、ここで、Scは、集約サーバ180-Bの公開鍵を表す。アプリケーション112は、次いで、インプレッションデータを収集する集約サーバ180-Aの公開鍵を使用して、2回暗号化されたコンバージョンデータ(ConversionData2)を暗号化することによって、3回暗号化されたコンバージョンデータ(ConversionData3)を生成することができる。いくつかの実装形態において、3回暗号化されたコンバージョンデータ(ConversionData3)は、確率的公開鍵暗号化を使用して生成される。この例では、3回暗号化されたコンバージョンデータは、PubKeyEncryptProbabilistic(ConversionData2,Si)として定義され得、ここで、Siは、集約サーバ180-Aの公開鍵を表す。
アプリケーション112は、コンバージョンデータが記録されたコンバージョンごとに、コンバージョンデータを集約サーバ180-Bにアップロードすることができる。例えば、アプリケーション112は、多重暗号化されたコンバージョンデータ(例えば、3回暗号化されたコンバージョンデータ)を定期的にバッチアップロードすることができる。いくつかの実装形態において、アプリケーション112は、コンバージョンごとに、コンバージョンに関するブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))を鍵として含み、3回暗号化されたコンバージョンデータ(ConversionData3またはConversionData3p)を値として含む鍵値ペアMc215をアップロードする。この第3の最も外側の暗号化は、集約サーバ180-Bが、安定したブラインド署名されたコンバージョン鍵と2回暗号化されたコンバージョンデータ(ConversionData2)とを使用して、コンバージョンを報告する複数のドメインにわたってユーザを追跡することを防止することができる。
インプレッションデータとコンバージョンデータとを復号するための例示的なMPCプロセス
集約サーバ180-Aおよび180-Bは、しきい値および/または他のプライバシー保護基準を満たす受信されたデータのサブセットを集約し、次いで復号し、報告システム190に報告を送信するために、マルチステップMPCプロセスを使用することができる。このプロセスは、集約されたコンバージョンデータを決定するための例示的なプロセス300を示すフロー図である図3に示されている。プロセス300は、例えば、複数の集約サーバ、例えば、図1および図2の集約サーバ180-Aおよび180-Bによって実施される。
集約サーバAおよびBは、可換性を有する可換暗号化技法「H」を使用することができる。言い換えれば、任意のメッセージmと2つの異なる暗号化鍵K1およびK2とが与えられた場合、可換暗号化技法は、以下の特性、H(H(m,K1),K2) = H(H(m,K2),K1)を有する。言い換えれば、可換暗号化は、異なる暗号化鍵を使用する2重暗号化を含み、ここで、どちらの方法でも同じ結果が達成されるので、暗号化の順序(どの鍵が最初にデータを暗号化するために使用されるか)は、重要ではない。
各集約サーバ180-Aおよび180-Bは、それぞれ、秘密暗号化鍵のペアKeyi(鍵のペアを表す)およびKeyc(鍵のペアを表す)を選択することができる。以下で説明するように、鍵の1つKeyi1は、結合鍵を暗号化するために使用され得、鍵の1つKeyi2は、インプレッションデータを暗号化/復号するために使用され得る。同様に、鍵の1つKeyc1は、結合鍵を暗号化するために使用され得、鍵の1つKeyc2は、コンバージョンデータを暗号化/復号するために使用され得る。集約サーバ180-Aおよび180-Bは、指定された時間期間に基づいて、インプレッションデータもしくはコンバージョンデータのバッチごとに、または他の適切な基準に基づいて、鍵の新しいペアを選択することができる。
集約サーバ180-Aは、インプレッションデータを受信する(302)。例えば、集約サーバ180-Aは、複数のクライアントデバイスからインプレッションデータのバッチを受信することができる。上記で説明したように、各クライアントデバイスは、インプレッションデータのバッチを集約サーバ180-Aに定期的に送信することができる。
インプレッションデータは、インプレッションごとに鍵値ペアの形態において送信され得る。各鍵値ペアは、インプレッションに関するブラインド署名されたインプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))を鍵として含み、3回暗号化されたインプレッションデータ(ImpressionData3p)を値として含むことができる。
集約サーバ180-Bは、コンバージョンデータを受信する(304)。例えば、集約サーバ180-Bは、複数のクライアントデバイスからコンバージョンデータのバッチを受信することができる。上記で説明したように、各クライアントデバイスは、コンバージョンデータのバッチを集約サーバ180-Bに定期的に送信することができる。
コンバージョンデータは、コンバージョンごとに鍵値ペアの形態において送信され得る。各鍵値ペアは、コンバージョンに関するブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))を鍵として含み、3回暗号化されたコンバージョンデータ(ConversionData3p)を値として含むことができる。
インプレッションごとに、集約サーバ180-Aは、可換暗号化とその選択された暗号化鍵Keyi1とを使用して、結合鍵を暗号化する(306)。この例では、インプレッションに関する結合鍵は、インプレッションに関するブラインド署名された結合インプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))である。集約サーバ180-Aは、次いで、インプレッションごとに、暗号化された結合鍵と、3回暗号化されたインプレッションデータとを集約サーバ180-Bに提供することができる。言い換えれば、集約サーバ180-Aは、インプレッションごとに、{H(BlindlySignedKey,Keyi1),ImpressionData3p}のペアを送信することができる。ペアは、ランダムまたは疑似ランダムな順序で送信され得る。
コンバージョンごとに、集約サーバ180-Bは、可換暗号化とその選択された鍵Keyc1とを使用して、結合鍵を暗号化する(308)。この例では、コンバージョンに関する結合鍵は、コンバージョンに関するブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))である。集約サーバ180-Bは、次いで、コンバージョンごとに、暗号化された結合鍵と、3回暗号化されたコンバージョンデータとを集約サーバ180-Aに提供することができる。言い換えれば、集約サーバ180-Bは、インプレッションごとに、{H(BlindlySignedKey,Keyc),ConversionData3p}のペアを送信することができる。ペアは、ランダムまたは疑似ランダムな順序で送信され得る。
暗号化された結合鍵および3回暗号化されたコンバージョンデータの受信されたペア{H(BlindlySignedKey,Keyc1),ConversionData3p}ごとに、集約サーバ180-Aは、結合鍵とコンバージョンデータとを再暗号化する(310)。いくつかの実装形態において、集約サーバ180-Aは、2回暗号化されたコンバージョンデータ(ConversionData2)を復元するために、その秘密鍵(公開鍵Siに対応する秘密鍵)を使用して、3回暗号化されたコンバージョンデータ(ConversionData3p)を復号することができる。集約サーバ180-Aは、次いで、その選択された暗号化鍵Keyi2を使用して、2回暗号化されたコンバージョンデータ(ConversionData2)を再暗号化することができる。この暗号化のために、決定論的対称暗号化技法が使用され得る。この暗号化されたコンバージョンデータは、コンバージョンデータが、報告システム190、集約サーバ180-B、および集約サーバ180-Aの3つのドメインからの鍵を順次使用することによって3回決定論的に暗号化されているので、ConversionData3'と呼ばれ得る。
集約サーバ180-Aは、その選択された暗号化鍵Keyi2を使用して、すでに可換的に暗号化されたブラインド署名されたインプレッション鍵(H(BlindlySignedKey,Keyc)に対して可換暗号化を適用することもできる。このステップの結果は、
(BlindlySignedKey)およびConversionData3'である。集約サーバ180-Aは、暗号化された結合鍵および暗号化された3回暗号化されたコンバージョンデータの受信されたペアごとに、2つの結果を集約サーバ180-Bに送信する。
暗号化された結合鍵と暗号化された3回暗号化されたインプレッションデータの受信されたペア{H(BlindlySignedKey,Keyi1),ImpressionData3p}ごとに、集約サーバ180-Bは、結合鍵とインプレッションデータとを再暗号化する(312)。いくつかの実装形態において、集約サーバ180-Bは、2回暗号化されたインプレッションデータ(ImpressionData2)を復元するために、その秘密鍵(公開鍵Scに対応する秘密鍵)を使用して、3回暗号化されたインプレッションデータ(ImpressionData3p)を復号することができる。集約サーバ180-Bは、次いで、その選択された暗号化鍵Keyc2を使用して、2回暗号化されたインプレッションデータ(ImpressionData2)を再暗号化することができる。この暗号化のために、決定論的対称暗号化方式が使用され得る。この暗号化されたコンバージョンデータは、インプレッションデータが、報告システム190、集約サーバ180-A、および集約サーバ180-Bの3つのドメインからの鍵を順次使用することによって3回決定論的に暗号化されているので、ImpressionData3'と呼ばれ得る。
集約サーバ180-Bは、その選択された暗号化鍵Keyc2を使用して、すでに可換的に暗号化されたブラインド署名されたインプレッション鍵(H(BlindlySignedKey,Keyi1)に対して可換暗号化を適用することもできる。このステップの結果は、
(BlindlySignedKey)およびImpressionData3'である。集約サーバ180-Bは、暗号化された結合鍵および暗号化された3回暗号化されたインプレッションデータの受信されたペアごとに、2つの結果を集約サーバ180-Aに送信する。
集約サーバ180-Aは、暗号化されたインプレッションデータデータおよびコンバージョンデータを結合およびフィルタリングする(314)。集約サーバ180-Bから結果を受信した後、集約サーバ180-Aは、インプレッションごとに、結果のペア{
(BlindlySignedKey)およびImpressionData3'}を有する。集約サーバ180-Aは、コンバージョンごとに、結果のペア{
(BlindlySignedKey)およびConversionData3'}も有する。
ブラインド署名された鍵は、可換暗号化を使用して各集約サーバ180-Aおよび180-Bによって一度暗号化されているので、暗号化されたブラインド署名された鍵(
(BlindlySignedKey))に一致するインプレッションに関する暗号化されたブラインド署名された鍵(
(BlindlySignedKey))は、これらの鍵がアプリケーション112に関する一意の識別子と、報告システム190のドメインと、デジタルコンポーネントに関するランディングページのドメインとに基づいているので、コンバージョンがデジタルコンポーネントのインプレッションから生じたことを示す。したがって、集約サーバ180-Aは、暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を使用してペアを結合することができる。対応するインプレッションデータを対応するコンバージョンデータと結合することは、インプレッションデータをコンバージョンデータにリンクすることを含むことができる。例えば、集約サーバ180-Aは、暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を行鍵として使用する表または他のデータ構造を生成することができる。各行は、行鍵と、結合されたインプレッションデータおよびコンバージョンデータとを含むことができる。例示的な表を、以下のTable 1(表1)に示す。他の例において、インプレッションデータとコンバージョンデータとを結合することは、結合されたインプレッションデータおよびコンバージョンデータごとに、行鍵と、結合されたインプレッションデータおよびコンバージョンデータとを含むタプルを生成することを含むことができる。
集約サーバ180-Aは、次いで、k-匿名性基準を満たすためにデータをフィルタリングすることができる。集約サーバ180-Aは、各3回暗号化されたインプレッションデータに関連付けられたいくつかの一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を決定することができる。3回暗号化されたインプレッションデータの各部分は、インプレッションデータのオカレンスと呼ばれることもある。インプレッションデータがアプリケーション固有ではなく、提示されたデジタルコンポーネントに基づいているので、複数のインプレッションが、同じ3回暗号化されたインプレッションデータを有するが、異なる暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を有することができる。
集約サーバ180-Aは、各一意のインプレッションデータに関連付けられた異なる暗号化されたブラインド署名された鍵(
(BlindlySignedKey))の数をk-匿名性しきい値と比較することができる。数がしきい値を下回る場合、集約サーバ180-Aは、表または他のデータ構造からのインプレッションデータのオカレンスをフィルタリングすることができる。
集約サーバ180-Aは、各3回暗号化されたコンバージョンデータに関連付けられたいくつかの一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を決定することもできる。3回暗号化されたコンバージョンデータの各部分は、オカレンスデータのオカレンスと呼ばれることもある。コンバージョンデータがアプリケーション固有ではなく、コンバージョンイベントに関連するデータに基づいているので、複数のコンバージョンが、同じ3回暗号化されたコンバージョンデータを有するが、異なる暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を有することができる。
集約サーバ180-Aは、各一意のコンバージョンデータに関連付けられた異なる暗号化されたブラインド署名された鍵(
(BlindlySignedKey))の数をk-匿名性しきい値と比較することができる。数がしきい値を下回る場合、集約サーバ180-Aは、表または他のデータ構造からのコンバージョンデータのオカレンスをフィルタリングすることができる。
集約サーバ180-Aは、3回暗号化されたインプレッションデータおよびコンバージョンデータの各組合せに関連付けられたいくつかの一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を決定することもできる。言い換えれば、これは、同じ3回暗号化されたインプレッションデータと同じ3回暗号化されたコンバージョンデータとを有する一意のブラインド署名された鍵の数のカウントである。3回暗号化されたインプレッションデータおよび同じ3回暗号化されたコンバージョンデータの各組合せは、インプレッションクロスコンバージョンデータのオカレンスと呼ばれることもある。
集約サーバ180-Aは、インプレッションクロスコンバージョンデータの各オカレンスの数をk-匿名性しきい値と比較することができる。数がしきい値を下回る場合、集約サーバ180-Aは、表または他のデータ構造からのインプレッションクロスコンバージョンデータのオカレンスをフィルタリングすることができる。
集約サーバ180-Aは、次いで、以下のTable 2(表2)に示すように、新しい表またはデータ構造を生成するために、フィルタリングの後の残りのデータを使用することができる。Table 2(表2)の各行は、impressionData3'のオカレンスおよびConversionData3'の対応するオカレンスの組合せに対応する。この表は、各組合せのオカレンスの数を記録し、例えば、各組合せに関連付けられた一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))の数を記録する。このカウントは、同じインプレッションデータを有するデジタルコンポーネントのインプレッションから生じるデジタルコンポーネントのコンバージョンの数に等しい。
集約サーバ180-Bは、暗号化されたインプレッションデータおよびコンバージョンデータを結合およびフィルタリングする(316)。集約サーバ180-Aから結果を受信した後、集約サーバ180-Bは、インプレッションごとに、結果のペア{
(BlindlySignedKey)およびImpressionData3'}を有する。集約サーバ180-Aは、コンバージョンごとに、結果のペア{
(BlindlySignedKey)およびConversionData3'}を有する。したがって、集約サーバ180-Bは、集約サーバ180-Aと同じデータを有する。
集約サーバ180-Bは、同じ結果に到達するために、同じデータを使用して集約サーバ180-Aと同じ計算およびフィルタリングを実行することができる。すなわち、集約サーバ180-Bは、集約サーバ180-Aによって生成されたTable 2(表2)と一致する表を生成することができる。
いくつかの実装形態において、両方の集約サーバ180-Aおよび集約サーバ180-Bは、サブサンプリングを使用することなど、差分プライバシーを保証するためのいくつかのオプションの動作を実行することができる。差分プライバシーは、データセット内の個々のデータを提供することなく、データセット内のグループのパターンを記述することによって、データセットに関するデータを共有するための技法である。これを行うために、各集約サーバは、最初にデータ(例えば、Table 1(表1)における行)をある確率ベータでサンプリングする。次いで、集約サーバは、上記で説明したk-匿名性の一般化をサンプリングされたデータのみに適用する。すなわち、集約サーバは、オカレンスのタイプごとに一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))の数を決定し、サンプリングされたデータからk-匿名性のしきい値を満たさないものをフィルタリングすることができる。
サブサンプリングについて、両方の集約サーバが正確に同じサンプリングを複製し、同じ差分プライバシー技法を実行することを保証するために、集約サーバは、疑似ランダムベースのサンプリングを使用することができる。サンプリングのランダム化は、(例えば、Diffie-Hellman鍵交換を使用して)2つのサーバによって共同で決定される共通のシードから決定され得る。交換の結果は、同じ疑似ランダム生成器(例えば、高度暗号化標準(AES)アルゴリズムに基づくもの)のためのシードである。ランダム性が同じであれば、プロセスの残りは、決定論的であるので、これは、同じサブセットが両方の集約サーバにおいてサンプリングされ、同じ結果が計算されることを保証する。
結合およびフィルタリングの後、両方の集約サーバ180-Aおよび180-Bは、同じデータ、例えば、{count,ImpressionData3',ConversionData3'}を各々が含むタプルの表またはリストを有する。カウントは、ImpressionData3'によって表される同じインプレッションデータを有するインプレッションに関するコンバージョンの数である。
タプルごとに、集約サーバ180-Aは、3回暗号化されたコンバージョンデータ(ConversionData3')を復号する(318)。集約サーバ180-Aは、{count,ImpressionData3',ConversionData2'}を取得するために、その選択された暗号化鍵Keyi2を使用して、3回暗号化されたコンバージョンデータ(ConversionData3')を復号することができる。集約サーバ180-Aは、これらの結果のタプルを集約サーバ180-Bに送信することができる。
同様に、タプルごとに、集約サーバ180-Bは、3回暗号化されたインプレッションデータ(ImpressionData3')を復号する(320)。集約サーバ180-Bは、{count,ImpressionData2,ConversionData3'}を取得するために、その選択された暗号化鍵Keyc2を使用して、3回暗号化されたインプレッションデータ(ImpressionData3')を復号することができる。集約サーバ180-Bは、これらの結果のタプルを集約サーバ180-Aに送信することができる。
集約サーバ180-Aは、各受信された結果のタプル{count,ImpressionData2,ConversionData3'}の2回暗号化されたインプレッションデータ(ImpressionData2)と3回暗号化されたコンバージョンデータ(ConversionData3')とを復号する(322)。集約サーバ180-Aは、集約サーバ180-Aの公開鍵Siに対応する秘密鍵を使用して、2回暗号化されたインプレッションデータ(ImpressionData2)と3回暗号化されたコンバージョンデータ(ConversionData3')とを復号することができる。この復号は、受信されたタプルごとに、タプル{count,ImpressionData1,ConversionData2}を結果として生じる。集約サーバ180-Aは、これらのタプル{count,ImpressionData1,ConversionData2}の各々を集約サーバ180-Bに送信することができる。
集約サーバ180-Bは、各受信された結果のタプル{count,ImpressionData3',ConversionData2}の3回暗号化されたインプレッションデータ(ImpressionData3')と2回暗号化されたコンバージョンデータ(ConversionData2)とを復号する(324)。集約サーバ180-Bは、集約サーバ180-Bの公開鍵Scに対応する秘密鍵を使用して、3回暗号化されたインプレッションデータ(ImpressionData3')と2回暗号化されたコンバージョンデータ(ConversionData2)とを復号することができる。この復号は、受信されたタプルごとに、タプル{count,ImpressionData2,ConversionData1}を結果として生じる。集約サーバ180-Bは、これらのタプル{count,ImpressionData2,ConversionData1}の各々を集約サーバ180-Aに送信することができる。
集約サーバ180-Aは、各受信されたタプル{count,ImpressionData2,ConversionData1}のインプレッションデータを復号する(326)。集約サーバ180-Aは、集約サーバ180-Aの公開鍵Siに対応する秘密鍵を使用して、各受信されたタプル{count,ImpressionData2,ConversionData1}のインプレッションデータを復号する。この復号は、受信されたタプルごとに、タプル{count,ImpressionData1,ConversionData1}を結果として生じる。
このタプルにおいて、インプレッションデータ(ImpressionData1)は、PubKeyEncrypt(mi||clicked,report_domain)||blind_signature)であり、したがって、報告システム190の公開鍵を使用して暗号化されたインプレッションデータと、インプレッション時に生成された第2のデータ要素のブラインド署名とを含む。コンバージョンデータ(ConversionData1)は、PubKeyEncrypt(PrivateKeySign(mc,conversion_domain),report_domain)であり、したがって、報告システム190の公開鍵を使用して暗号化されたコンバージョンデータを含む。
集約サーバ180-Bは、各受信されたタプル{count,ImpressionData1,ConversionData2}のコンバージョンデータを復号する(328)。集約サーバ180-Bは、集約サーバ180-Bの公開鍵Scに対応する秘密鍵を使用して、各受信されたタプル{count,ImpressionData1,ConversionData2}のコンバージョンデータを復号する。この復号は、受信されたタプルごとに、タプル{count,ImpressionData1,ConversionData1}を結果として生じる。
集約サーバ180-Aによって復号されたタプルと同様に、このタプルにおいて、インプレッションデータ(ImpressionData1)は、PubKeyEncrypt(mi||clicked,report_domain)||blind_signature)であり、したがって、報告システム190の公開鍵を使用して暗号化されたインプレッションデータと、インプレッション時に生成された第2のデータ要素のブラインド署名とを含む。コンバージョンデータ(ConversionData1)は、PubKeyEncrypt(PrivateKeySign(mc,conversion_domain),report_domain)であり、したがって、報告システム190の公開鍵を使用して暗号化されたコンバージョンデータを含む。
集約サーバ180-Aは、復号されたタプルごとに、コンバージョン報告をタプルに関する報告システム190に送信する(330)。同様に、集約サーバ180-Bは、復号されたタプルごとに、コンバージョン報告をタプルに関する報告システム190に送信する(332)。コンバージョン報告は、復号されたタプル、または復号されたタプル内に含まれるデータを含むことができる。
集約サーバ180-Aおよび180-Bは、様々な方法において、各タプル、したがって、各コンバージョンに関する報告システムのURLを取得することができる。一例において、インプレッションが発生したアプリケーション112は、例えば、インプレッション時に、鍵値ペアMiの一部として、report_domain(例えば、報告システム190のURL)をプレーンテキストにおいて集約サーバ180-Aに送信することができる。同様に、コンバージョンが発生したアプリケーション112は、例えば、コンバージョン時に、鍵値ペアMcの一部として、report_domainをプレーンテキストにおいて集約サーバ180-Bに送信することができる。
別の例において、ブラウザ開発者(またはアプリケーション開発者)は、許可された報告システム190およびそれらのreport_domainのホワイトリストを公開することができる。ブラウザ(またはアプリケーション)は、ホワイトリストを定期的にダウンロードし、コンバージョン報告の送信にホワイトリストを適用することができる。
別の例において、ブラウザまたはアプリケーションは、report-domainを暗号化するために(t,n)-しきい値暗号化技法を使用し、暗号化されたreport_domainを集約サーバ180-Aおよび180-Bに送信することができる。この例において、集約サーバ180-Aおよび180-Bは、少なくともt個のブラウザまたはアプリケーションが同じreport_domainを報告したときにのみ、プレーンテキストのreport_domainを復元することができる。別の例において、例えば、report_domainが十分なエントロピーを持たない場合、report_domainの派生物が(t,n)-しきい値暗号化技法において使用され得る。例えば、派生物は、report_domainと、デジタルコンポーネントに関するランディングページの暗号ハッシュとの組合せであり得る。
図2に戻ると、報告システム190は、1回暗号化されたコンバージョンデータ(ImpressionData1)およびPubKeyEncrypt(PrivateKeySign(mc,conversion_domain),report_domain)のペアごとに、集約サーバ180-Aおよび180-Bから2つのコンバージョン報告127および128を受信する。各コンバージョン報告127および128は、インプレッションおよびコンバージョンの組合せごとに、例えば、上記で説明した表から導出されるような、フィルタリングされたデータ内の組合せの数を含むことができる。集約サーバ180-Aから受信されたコンバージョン報告127内のデータは、インプレッションデータおよびコンバージョンデータの同じバッチに関する集約サーバ180-Bから受信されたコンバージョン報告128内のデータと一致すべきである。報告システム190は、悪意のある行動の潜在的な兆候に関する不一致を識別するために、2つの数を比較することができる。
報告システム190は、インプレッションデータにおけるブラインド署名を検証するために、不正検出システム170を呼び出すこともできる。報告システム190は、次いで、それ自体の秘密鍵を使用して、暗号化されたコンバージョンデータを復号することができる。報告システム190は、次いで、コンバージョンシステムの公開鍵を使用して、コンバージョンデータにおけるデジタル署名を検証することができる。両方の検証が成功した場合、報告システム190は、コンバージョン測定データが有効であると確信することができる。
コンバージョン報告の受信者は、コンバージョン報告内のデータを信頼することができるべきである。2つの集約サーバ180-Aおよび180-Bから受信されたコンバージョン報告を比較し、ブラインド署名を検証する上記の手法は、コンバージョン報告パイプラインにおける大部分の不正を防止することができる。しかしながら、2つの集約サーバは、コンバージョンカウントを変更するために共謀する可能性がある。そのような共謀を防止するために、コンバージョンサーバ172は、コンバージョンデータをクライアントデバイス110に提供する前に、コンバージョンデータを暗号化し、デジタル署名することができる。例えば、コンバージョンシステム172は、署名を維持する非対称加法同型暗号化または別の構造維持署名技法を使用して、コンバージョンデータを暗号化し、デジタル署名することができる。このようにして、デジタル署名は、上記で説明したように3回暗号化(または他の方法で多重暗号化)された後も維持される。この暗号化は、集約サーバ180-Aおよび180-Bがコンバージョンデータにアクセスすることを防止し、コンバージョンデータが変更されていないことを検証するためにユーザがデジタル署名を検証することを可能にする。以下で説明するように、コンバージョン値がコンバージョンデータ内に含まれているとき、各コンバージョン値は、同様の方法で暗号化および署名され得る。
上記で説明したコンバージョン報告技法は、様々なタイプのコンバージョンイベントをサポートすることができる。同じブラウザ(または同じアプリケーション)のクリックスルーコンバージョンおよびビュースルーコンバージョンをサポートするために、ブラウザまたはアプリケーションは、コンバージョン測定の目的専用の、ブラウザ全体(またはアプリケーション全体)のランダムに選択された一意の識別子(ID)を選択することができる。ブラウザ(またはアプリケーション)は、インプレッション時とコンバージョン時の両方でBlindlySignedKey(ID,conversion_domain,report_domain)を計算することができる。クリックスルーコンバージョンとビュースルーコンバージョンとを区別するために、インプレッション時に、ブラウザまたはアプリケーションは、インプレッションデータmiと一緒にクリックされたブール変数を使用して、ユーザがデジタルコンポーネントと対話したかどうかを符号化することができる。他の実装形態において、ブラウザまたはアプリケーションは、例えば、デジタルコンポーネントをミュートする、アンケートに記入するなどの、デジタルコンポーネントとのユーザ対話のタイプを符号化することができる。
アプリケーションとウェブブラウザとの間の同じデバイスコンバージョンをサポートするために、ブラウザとアプリケーションの両方は、デバイスレベルの(例えば、デバイスのオペレーティングシステムによって)ランダムに生成された一意の識別子(ID)を使用して、インプレッションとコンバージョンとを報告することができる。加えて、コンバージョンがウェブブラウザではなくアプリケーションにおいて発生する場合、conversion_domainは、アプリケーションの名前、またはアプリケーションを識別するアプリケーションの開発者の証明書であり得る。
クロスデバイスコンバージョン(例えば、インプレッションがユーザのあるデバイスにおいて発生し、コンバージョンがユーザの異なるデバイスにおいて発生する)をサポートする場合、一意の識別子(ID)は、ユーザに関する情報であるか、またはそのような情報に基づくことができる。例えば、一意の識別子(ID)は、ユーザのサインイン資格情報の暗号ハッシュ、ユーザによって提供される電話番号もしくは電子メールアドレス、またはユーザによって提供される他の個人識別可能な情報であり得る。例えば、ユーザは、モバイルアプリケーションにサインインすることができる。同じユーザは、モバイルアプリケーションのサインイン資格情報を使用して発行者のウェブサイトにサインインすることができる。同じサインイン資格情報は、ウェブサイトとモバイルアプリケーションとの間で発生するクロスデバイスコンバージョンのためのユーザ識別子(ID)として使用され得る。
図4は、集約されたコンバージョンデータを決定するための別の例示的なプロセス400を示すフロー図である。プロセス400は、例えば、複数の集約サーバ、例えば、図1および図2の集約サーバ180-Aおよび180-Bによって実施され得る。
第1の集約サーバ180-Aは、複数のクライアントデバイスからインプレッションデータを受信する(402)。クライアントデバイスによって記録されたデジタルコンポーネントのインプレッションごとに、インプレッションデータは、第1の鍵値ペアを含むことができる。インプレッションに関する第1の鍵値ペアは、インプレッションが発生したクライアントデバイスまたはクライアントデバイス上のアプリケーションの一意の識別子に基づく第1の鍵を含むことができる。例えば、インプレッションに関する第1の鍵は、ブラインド署名されたインプレッション鍵であり得、上記で説明したように、クライアントデバイスから受信されたBlindlySignedKey(ID,dc_destination,report_domain)として定義され得る。
インプレッションに関する第1の鍵値ペアは、第1の集約サーバの第1の公開鍵を使用し、第1の集約サーバとは異なる第2の集約サーバの第2の公開鍵を使用して暗号化された、暗号化されたインプレッションデータを含む第1の値を含むこともできる。例えば、第1の値は、クライアントデバイスから受信された3回暗号化されたインプレッションデータ(ImpressionData3)であり得る。
第2の集約サーバは、複数のクライアントデバイスの少なくとも一部からコンバージョンデータを受信する(404)。コンバージョンデータは、クライアントデバイスによって記録されたコンバージョンごとに、コンバージョンが発生したクライアントデバイスまたはクライアントデバイス上のアプリケーションに関する第2の一意の識別子に基づく第2の鍵を含む第2の鍵値ペアを含むことができる。例えば、コンバージョンに関する第2の鍵は、クライアントデバイスから受信されたブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))であり得る。
コンバージョンに関する第2の鍵値ペアは、第1の暗号化鍵と第2の暗号化鍵とを使用して暗号化された、暗号化されたコンバージョンデータを含む第2の値を含むことができる。例えば、第2の値は、クライアントデバイスから受信された3回暗号化されたコンバージョンデータ(ConversionData3)であり得る。
集約サーバ180-Aおよび180-Bは、暗号化されたインプレッションデータおよびコンバージョンデータを結合し、結合結果をフィルタリングし、次いで、プライバシー保護基準を満たす暗号化されたインプレッションデータおよび暗号化されたコンバージョンデータのサブセットを復号するために、MPCプロセスを実行する(406)。このMPCプロセスは、第1の鍵と第2の鍵とに基づいて、暗号化されたコンバージョンデータおよび対応する暗号化されたインプレッションデータのペアを識別することを含むことができる。暗号化されたインプレッションデータおよびコンバージョンデータのペアごとのインプレッションデータおよびコンバージョンデータは、次いで、第1の公開鍵に対応する第1の秘密鍵と第2の公開鍵に対応する第2の秘密鍵とを使用して、複数の段階において復号され得る。各段階は、第1の集約サーバまたは第2の集約サーバの一方が、暗号化されたコンバージョンデータおよび対応する暗号化されたインプレッションデータの各ペアの暗号化されたインプレッションデータまたは暗号化されたコンバージョンデータの一方を復号し、結果のデータを第1の集約サーバまたは第2の集約サーバの他方に送信することを含むことができる。このMPCプロセスは、図3に示し、上記で説明したプロセス300と同じかまたは同様であり得る。
復号されたインプレッションデータの各部分および復号されたコンバージョンデータの各部分は、それぞれの報告サーバに送信される(408)。例えば、各集約サーバ180-Aおよび180-Bは、上記で説明したように、コンバージョン報告をそれぞれの報告システムに送信することができる。
各集約サーバのデータの完全性の検証
上記で説明したように、プロセス300の開始時に、集約サーバ180-Aは、各インプレッションに関する鍵値ペアの形態においてインプレッションデータ(Mi)を受信する。各鍵値ペアは、インプレッションに関するブラインド署名されたインプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))と、3回暗号化されたインプレッションデータ(ImpressionData3p)を含むことができる。3回暗号化されたインプレッションデータ(ImpressionData3p)の最後の暗号化は、集約サーバ180-Bの公開鍵を使用する確率的なものである。したがって、集約サーバ180-B以外の他のパーティは、集約サーバ180-Bを除くすべてのサーバに対して暗号的にランダムになり得る3回暗号化されたインプレッションデータ(ImpressionData3p)を復号することができない。
加えて、アプリケーション112を除く他のパーティは、ユーザ識別子(ID)のプレーンテキスト値を知らない。共謀するパーティが復元することができる唯一の情報は、ブラインド署名されたインプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))の背後にいる匿名ユーザが、未知の特性を有するいくつかのインプレッションを有するということである。デジタルコンポーネントのレンダリング全体が宛先(dc_destination)と報告ドメイン(report_domain)とによってシャーディングされるので、共謀するパーティは、アプリケーション112/クライアントデバイス110/ユーザが見たインプレッションの総数を推測することができない。
ブラインド署名されたインプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))に関連付けられたユーザに示されたインプレッションの数を知ることが懸念される場合、アプリケーション112は、インプレッションに関するインプレッションデータ(Mi)をランダムまたは疑似ランダムな回数だけ繰り返し送信することができる。3回暗号化されたインプレッションデータ(ImpressionData3p)を生成するときに適用される確率的暗号化を想定すると、集約サーバ180-Aおよび任意の共謀するパーティは、受信されたインプレッションデータを重複排除することができない。しかしながら、集約サーバ180-Bは、2回暗号化されたインプレッションデータ(ImpressionData2)を復元するために3回暗号化されたインプレッションデータ(ImpressionData3p)を復号した後、インプレッションを重複排除することができる。
プロセス300に関して上記で説明したように、プロセス300のステップ310の開始時に、集約サーバ180-Aは、集約サーバ180-Bからペア{H(BlindlySignedKey,Keyc),ConversionData3p}を受信し、このペアは、集約サーバ180-Aがステップ302において有するもの、すなわち、鍵値ペア{(BlindlySignedKey(ID,dc_destination,report_domain)),ImpressionData3p}に結合することができない。加えて、ブラインド署名された鍵H(BlindlySignedKey,Keyc)は、MPCプロセスの各実行に対してのみ有効であり得、集約サーバ180-Bは、各実行後に、選択された鍵Keyc1およびKeyc2を破棄することができる。集約サーバ180-Aは、2回暗号化されたコンバージョンデータ(ConversionData2)を復元するために、公開鍵を使用して、3回暗号化されたコンバージョンデータ(ConversionData3p)を復号することができる。この時点で、集約サーバ180-Aは、H(BlindlySignedKey,Keyc)と2回暗号化されたコンバージョンデータ(ConversionData2)とを有し、これらの両方は、暗号化されており、集約サーバ180-Bのみが復号鍵を有する。集約サーバ180-Bが正直であることにより、集約サーバ180-Bがユーザのプライバシーを危険にさらすことができるものはない。
プロセス300のステップ314の開始時に、集約サーバ180-Aは、インプレッションごとに、2回暗号化されたブラインド署名された結合鍵(
(BlindlySignedKey))と3回暗号化されたインプレッションデータ(ImpressionData3')とを集約サーバ180-Bから受信する。この3回暗号化されたインプレッションデータ(ImpressionData3')は、MPCプロセスの現在の実行に対してのみ有効な、集約サーバ180-Bによって所有されている鍵を使用して最後に暗号化された。集約サーバ180-Bとの共謀なしで、集約サーバ180-Aが行うことができる最悪のことは、データの実際のタプル{count,ImpressionData3',ConversionData2'}ではなく、データの偽のタプル{count',ImpressionData3'',ConversionData2''}を送信することである。
図5は、データの完全性を検証するための例示的なプロセス500を示すフロー図である。特に、プロセス500は、本文書で説明されているMPCプロセス、例えば、図3および図4のMPCプロセスまたは以下で説明するMPCプロセスの間、他方の集約サーバ180-Aまたは180-Bから受信されたデータの完全性を検証するために、集約サーバ180-Aまたは180-Bの一方によって実行され得る。説明を容易にするために、プロセス500について、集約サーバ180-Bが集約サーバ180-Aから受信したデータの完全性を検証するという観点から説明する。しかしながら、同様のプロセスは、集約サーバ180-Bから受信したデータの完全性を検証するために、集約サーバ180-Aによって実行され得る。
このプロセス500は、集約サーバ180-Aまたは180-Bの一方が不正検出システム170、コンバージョンシステム172、および報告システム190と共謀する状況を含む、様々なタイプの不正を防止するために使用され得る。
集約サーバ180-Bは、集約サーバ180-Aから受信したデータを検証する(502)。集約サーバ180-Bは、プロセス300のステップ324の一部としてステップ502を実行することができる図3のステップ318を参照して上記で説明したように、集約サーバ180-Aは、集約サーバ180-Bに{count,ImpressionData3',ConversionData2'}の形態のタプルを送信することができる。集約サーバ180-Bは、タプルごとに3回暗号化されたコンバージョンデータConversionData2'を生成するために、各タプル内の2回暗号化されたコンバージョンデータConversionData2'を暗号化することができる。これは、集約サーバ180-Aの公開鍵を使用した3回暗号化されたコンバージョンデータConversionData3の決定論的公開鍵暗号化結果である3回暗号化されたコンバージョンデータConversionData3の定義により可能である。
集約サーバ180-Bは、各々の受信したタプル{count,ImpressionData3',ConversionData2'}を{count,ImpressionData3',ConversionData3'}に変換し、k-匿名性と差分プライバシーとを達成するために、しきい値処理とサブサンプリングとを適用した後、集約サーバ180-Bが図3のステップ316において生成した結果のデータセットを比較することができる。例えば、集約サーバ180-Bは、タプル{count,ImpressionData3',ConversionData3'}をTable 2(表2)の行と比較することができる。2つのデータセットが一致する場合、集約サーバ180-Bは、集約サーバ180-Aが図3のステップ322まで暗号プロトコルを正直に実行していたと確信することができる。そうでなければ、集約サーバ180-Bは、MPCプロセスを早期に終了することができ、および/または集約サーバ180-Aの可能性のある不具合を報告することができる。
プロセス300に関して上記で説明したように、ステップ322の開始時に、集約サーバ180-Aは、集約サーバ180-Bから{count,ImpressionData2,ConversiodData3'}の形式においてタプルを受信する。集約サーバ180-Aは、しきい値処理およびサブサンプリングを適用した後、プロセス300のステップ314において生成されたそれ自体のデータセットを取得することができる。このデータセットは、(例えば、Table 2(表2)内の)行または{count,ImpressionData3',ConversiodData3'}の形式におけるタプルを含む。集約サーバ180-Aは、2つのデータセットの3回暗号化されたインプレッションデータ(ImpressionData3')と2回暗号化されたインプレッションデータ(ImpressionData2)との間のマッピングを推測するために、これらのデータを使用することができる。
集約サーバ180-Bと同様に、集約サーバ180-Aは、集約サーバ180-Bの公開鍵を使用して、3回暗号化されたインプレッションデータ(ImpressionData3')が本当に2回暗号化されたインプレッションデータ(ImpressionData2)の決定論的公開鍵暗号化結果であることを検証することができる。しかしながら、集約サーバ180-Aは、公開鍵暗号化アルゴリズムの設計のため、3回暗号化されたインプレッションデータ(ImpressionData3')と2回暗号化されたインプレッションデータ(ImpressionData2)との間のマッピングがあるとして、集約サーバ180-Bの秘密鍵を復元することができない。集約サーバ180-Aが行うことができる最悪のことは、データの実際のタプル{count,ImpressionData1,ConversionData2}ではなくデータの偽のタプル{count',ImpressionData1',ConversionData2'}を集約サーバ180-Bに送信することである。
集約サーバ180-Bは、集約サーバ180-Aから受信したデータの完全性を検証する(504)。集約サーバ180-Bは、決定論的公開鍵アルゴリズムと集約サーバ180-Aの公開鍵とを使用し、暗号化されたインプレッションデータ(ImpressionData1)を2回暗号化されたインプレッションデータ(ImpressionData2)に再暗号化することができる。集約サーバ180-Bは、決定論的公開鍵アルゴリズムと集約サーバ180-Aの公開鍵とを使用し、2回暗号化されたコンバージョンデータ(ConversionData2)を3回暗号化されたコンバージョンデータ(ConversionData3)に再暗号化することができる。集約サーバ180-Bは、次いで、暗号化結果を使用し、プロセス300のステップ322において集約サーバ180-Aから受信した各タプル{count,ImpressionData1,ConversionData2}をタプル{count,ImpressionData1,ConversionData2}の形式のタプルに変換することができる。
集約サーバ180-Bは、次いで、この結果としてのタプルのデータセットを、集約サーバ180-Bがプロセス300のステップ320において生成して集約サーバ180-Aに送信したデータセットと比較することができる。2つのデータセットが一致する場合、集約サーバ180-Bは、集約サーバ180-Aがプロセス300のMPCプロセスにおいてここまで暗号プロトコルを正直に実行していたと確信することができる。そうでなければ、集約サーバ180-Bは、MPCプロセスを早期に終了することができ、および/または集約サーバ180-Aの可能性のある不具合を報告することができる。
プロセス300に関して上記で説明したように、プロセス300のステップ326の開始時に、集約サーバ180-Aは、集約サーバ180-Bからタプル{count,ImpressionData2,ConversionData1}を受信する。集約サーバ180-Aがプロセス300のステップ326において2回暗号化されたインプレッションデータ(ImpressionData2)を1回暗号化されたインプレッションデータ(ImpressionData1)に正直に復号せず、正しいタプル{count,ImpressionData1,ConversionData1}を報告システム190に送信していない場合、報告システム190は、集約サーバ180-Aおよび180-Bから受信した2つのコンバージョン報告間の不一致を見つけることになる。報告システム190は、不一致を集約サーバ180-Aおよび180-Bの少なくとも一方に報告することができる。集約サーバ180-Aが報告システム190と共謀していない場合、集約サーバ180-Aが漏らされた情報を理解することができる報告システム190に漏らすことができる最も重要な情報は、各タプルのカウントおよびコンバージョンデータのヒストグラムを含む。しかしながら、このデータのユーザプライバシーは、プロセス300のステップ314および316において適用されるしきい値処理要件および差分プライバシーサブサンプリングによって保護される。
インプレッションおよびコンバージョンのシーケンスの生成
図6は、ユーザのプライバシーを保護しながらイベントの時系列シーケンスを生成するための例示的なプロセス600を示すフロー図である。プロセス600は、ラストクリックアトリビューションまたはルールベースアトリビューションなどの異なるコンバージョンアトリビューションモデルをサポートするために使用され得るインプレッションおよび/またはコンバージョンの時系列シーケンスを生成するために使用され得る。プロセス600は、集約サーバ180-Aおよび180-Bによって実行され得る。
プロセス300と同様に、各集約サーバ180-Aおよび180-Bは、それぞれ、秘密暗号化鍵Keyi(鍵のペアを表す)とKeyc(鍵のペアを表す)とを選択することができる。集約サーバ180-Aは、秘密鍵Keyi,skewを選択することもできる。同様に集約サーバ180-Bは、秘密鍵Keyc,skewを選択することができる。集約サーバ180-Aおよび180-Bは、指定された時間期間に基づいて、インプレッションデータもしくはコンバージョンデータのバッチごとに、または他の適切な基準に基づいて、新しい鍵を定期的に選択することができる。
集約サーバ180-Aは、インプレッションデータを受信する(602)。この例では、各インプレッションに関するインプレッションデータは、ブラインド署名されたインプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))と、3回暗号化されたインプレッションデータ(ImpressionData3p)と、インプレッション時間データ(ImpressionTime2)とを含むことができる。ブラインド署名されたインプレッション鍵および3回暗号化されたインプレッションデータは、プロセス300のブラインド署名されたインプレッション鍵および3回暗号化されたインプレッションデータと同じまたは同様であり得る。インプレッション時間データは、インプレッションが発生した時間を表し、暗号化され得る。
インプレッション時間データ(ImpressionTime2)は、集約サーバ180-Aの公開鍵Siと集約サーバ180-Bの公開鍵とを使用して2回暗号化され得る。例えば、インプレッション時間データ(ImpressionTime2)は、PubKeyEncrypt(T(tm+tdevice),Si),Sc)として定義され得る。この例では、tmは、インプレッション時間またはクリック時間(例えば、デジタルコンポーネントが提示されたまたは対話した時間)であり、tdeviceは、デジタルコンポーネントを提示したアプリケーション112がインストールされているクライアントデバイス110のクロックスキューである。この例では、2つの時間の合計は、暗号化技法Tと集約サーバ180-Aの公開鍵Siとを使用して暗号化される。暗号化技法Tは、準同型加法確率的公開鍵暗号化技法(例えば、Paillier暗号システム)であり得る。この暗号化された値は、次いで、集約サーバ180-Bの公開鍵Scを使用して暗号化される。この第2の暗号化は、決定論的または確率的暗号化技法であり得る。
集約サーバ180-Bは、コンバージョンデータを受信する(604)。この例では、コンバージョンデータは、ブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))と、3回暗号化されたコンバージョンデータ(ConversionData3p)と、コンバージョン時間データ(ConversionTime2)とを含むことができる。ブラインド署名されたコンバージョン鍵および3回暗号化されたコンバージョンデータは、プロセス300のブラインド署名されたコンバージョン鍵および3回暗号化されたコンバージョンデータと同じまたは同様であり得る。コンバージョン時間データは、コンバージョンが発生した時間を表し、暗号化され得る。
コンバージョン時間データ(ConversionTime2)は、集約サーバ180-Aの公開鍵Siと集約サーバ180-Bの公開鍵Scとを使用して2回暗号化され得る。例えば、コンバージョン時間データ(ConversionTime2)は、PubKeyEncrypt(T(zn+tdevice),Sc),Si)によって表され得る。この例では、znは、コンバージョン時間(例えば、コンバージョンが完了した時間)であり、tdeviceは、デジタルコンポーネントを提示したアプリケーション112がインストールされているクライアントデバイス110のクロックスキューである。この例では、2つの時間の合計は、暗号化技法Tと集約サーバ180-Bの公開鍵Scとを使用して暗号化される。暗号化技法Tは、準同型加法確率的公開鍵暗号化技法(例えば、Paillier暗号システム)であり得る。この暗号化された値は、次いで、集約サーバ180-Aの公開鍵Siを使用して暗号化される。この第2の暗号化は、決定論的または確率的暗号化技法であり得る。
インプレッションごとに、集約サーバ180-Aは、可換暗号化とその選択された暗号鍵Keyi1とを使用して結合鍵を暗号化する(606)。プロセス300と同様に、インプレッションに関する結合鍵は、インプレッションに関するブラインド署名された結合インプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))であり得る。集約サーバ180-Aは、次いで、インプレッションごとに、暗号化された結合鍵と、3回暗号化されたインプレッションデータ(ImpressionData3p)と、2回暗号化されたインプレッション時間データ(ImpressionTime2)とを集約サーバ180-Bに提供することができる。言い換えれば、集約サーバ180-Aは、インプレッションごとに、タプル{H(BlindlySignedKey,Keyi1),ImpressionData3p,ImpressionTime2}を送信することができる。タプルは、ランダムまたは疑似ランダムな順序で送信され得る。
コンバージョンごとに、集約サーバ180-Bは、可換暗号化とその選択された暗号鍵Keyc1とを使用して結合鍵を暗号化する(608)。プロセス300と同様に、コンバージョンに関する結合鍵は、コンバージョンに関するブラインド署名されたコンバージョン鍵(BlindlySignedKey(ID,conversion_domain,report_domain))であり得る。集約サーバ180-Bは、次いで、コンバージョンごとに、暗号化された結合鍵と、3回暗号化されたコンバージョンデータ(ConversionData3p)と、2回暗号化されたコンバージョン時間データ(ConversionTime2)とを集約サーバ180-Aに提供することができる。言い換えれば、集約サーバ180-Bは、インプレッションごとに、タプル{H(BlindlySignedKey,Keyc),ConversionData3p,ConversionTime2}を送信することができる。タプルは、ランダムまたは疑似ランダムな順序で送信され得る。
受信したタプルごとに、集約サーバ180-Aは、コンバージョン時間データを暗号化する(610)。集約サーバ180-Aは、集約サーバ180-Aの公開鍵Siに対応する秘密鍵を使用して、コンバージョン時間データ(ConversionTime2)を復号することができる。この復号は、(T(zn+tdevice),Sc)を復元する。
集約サーバ180-Aは、その選択された暗号化鍵Keyi2を使用して、すでに可換的に暗号化されたブラインド署名されたインプレッション鍵(H(BlindlySignedKey,Keyc)の上に可換暗号化を適用することもできる。この結果は、暗号化されたブラインド署名された鍵
(BlindlySignedKey)である。
集約サーバ180-Aは、タイムスキュー値(time_skewi)を計算することができる。例えば、集約サーバ180-Aは、タイムスキュー値(time_skewi)として、秘密鍵KeyiのHMAC、および暗号化されたブラインド署名されたコンバージョン鍵、例えば、HMACSHA256(Keyi,skew,
(BlindlySignedKey))を計算することができる。
集約サーバ180-Aは、次いで、受信したタプルごとに、1回暗号化されたコンバージョン時間データ(ConversionTime1)を生成することができる。いくつかの実装形態において、1回暗号化されたコンバージョン時間データ(ConversionTime1)は、準同型加法確率的公開鍵暗号化技法T、例えば、T(zn+tdevice+time_skewi,Sc)を使用して生成される。この例では、コンバージョン時間(zn)、クライアントデバイスのクロックスキュー(tdevice)、およびタイムスキュー値(time_skewi)の合計は、集約サーバ180-Bの公開鍵Scを使用して暗号化される。
プロセス300のステップ310に関して上記で説明したように、集約サーバ180-Aは、3回暗号化されたコンバージョンデータ(ConversionData3p)を復号し、再暗号化することもできる。すなわち、集約サーバ180-Aは、2回暗号化されたコンバージョンデータ(ConversionData2)を復元するために、その秘密鍵(公開鍵Siに対応する秘密鍵)を使用して、3回暗号化されたコンバージョンデータ(ConversionData3p)を復号することができる。集約サーバ180-Aは、次いで、3回暗号化されたコンバージョンデータ(ConversionData3p)を取得するために、その選択された暗号化鍵Keyi2を使用して、2回暗号化されたコンバージョンデータ(ConversionData2)を再暗号化することができる。
集約サーバ180-Aは、一意の3回暗号化されたコンバージョンデータ(ConversionData3p)ごとに、3回暗号化されたコンバージョンデータ(ConversionData3p)に関連付けられたいくつかの一意に暗号化されたブラインド署名されたコンバージョン鍵
(BlindlySignedKey)を決定することができる。コンバージョンに関する3回暗号化されたコンバージョンデータ(ConversionData3p)に関連付けられた一意の暗号化されたブラインド署名されたコンバージョン鍵
(BlindlySignedKey)の数が(例えば、しきい値処理要件に基づく)しきい値を満たす場合、集約サーバ180-Aは、集約サーバ180-Bにタプル{
(BlindlySignedKey),ConversionData3p,ConversionTime1}を送信する。
受信したタプルごとに、集約サーバ180-Bは、インプレッション時間データを復号する(612)。集約サーバ180-Bは、集約サーバ180-Bの公開鍵Scに対応する秘密鍵を使用して、インプレッション時間データ(ImpressionTime2)を復号することができる。この復号は、(T(tm+tdevice),Si)を復元する。
集約サーバ180-Bは、その選択された暗号化鍵Keyc2を使用して、すでに可換的に暗号化されたブラインド署名されたコンバージョン鍵(H(BlindlySignedKey,Keyi)の上に可換暗号化を適用することもできる。この結果は、暗号化されたブラインド署名された鍵
(BlindlySignedKey)である。
集約サーバ180-Bは、タイムスキュー値(time_skewc)を計算することができる。例えば、集約サーバ180-Bは、タイムスキュー値(time_skewc)として、秘密鍵Keyc,skewのHMAC、および暗号化されたブラインド署名されたコンバージョン鍵、例えば、HMACSHA256(Keyc,skew,
(BlindlySignedKey))を計算することができる。
集約サーバ180-Bは、次いで、受信したタプルごとに、1回暗号化されたインプレッション時間データ(ImpressionTime1)を生成することができる。いくつかの実装形態において、1回暗号化されたコンバージョンデータ(ImpressionTime1)は、準同型加法確率的公開鍵暗号化技法T、例えば、T(tm+tdevice+time_skewc,Si)を使用して生成される。この例では、インプレッション時間(tm)、クライアントデバイスのクロックスキュー(tdevice)、およびタイムスキュー値(time_skewc)の合計は、集約サーバ180-Aの公開鍵Siを使用して暗号化される。
プロセス300のステップ312に関して上記で説明したように、集約サーバ180-Bは、3回暗号化されたインプレッションデータ(ImpressionData3p)を復号し、再暗号化することもできる。すなわち、集約サーバ180-Bは、2回暗号化されたインプレッションデータ(ImpressionData2)を復元するために、その秘密鍵(公開鍵Scに対応する秘密鍵)を使用して、3回暗号化されたコンバージョンデータ(ImpressionData3p)を復号することができる。集約サーバ180-Aは、次いで、3回暗号化されたインプレッションデータ(ImpressionData3p)を取得するために、その選択された暗号化鍵Keyc2を使用して、2回暗号化されたインプレッションデータ(ImpressionData2)を再暗号化することができる。
集約サーバ180-Bは、一意の3回暗号化されたインプレッションデータ(ImpressionData3p)ごとに、3回暗号化されたインプレッションデータ(ImpressionData3p)に関連付けられたいくつかの一意に暗号化されたブラインド署名されたコンバージョン鍵
(BlindlySignedKey)を決定することができる。インプレッションに関する3回暗号化されたインプレッションデータ(ImpressionData3p)に関連付けられた一意の暗号化されたブラインド署名されたコンバージョン鍵
(BlindlySignedKey)の数が(例えば、差分プライバシーしきい値処理要件に基づく)しきい値を満たす場合、集約サーバ180-Bは、集約サーバ180-Aにタプル{
(BlindlySignedKey,Keyi),ImpressionData3,ImpressionTime1}を送信する。
集約サーバ180-Aは、集約サーバ180-Bから受信した暗号化されたインプレッションデータおよびコンバージョンデータを結合およびフィルタリングする(614)。集約サーバ180-Aは、集約サーバ180-Bから受信したタプル{
(BlindlySignedKey,Keyi),ImpressionData3,ImpressionTime1}を、集約サーバ180-Aが暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を使用してステップ610において生成したタプル{
(BlindlySignedKey),ConversionData3p,ConversionTime1}と結合することができる。暗号化されたブラインド署名された鍵(
(BlindlySignedKey))ごとに、集約サーバ180-Aは、{
(BlindlySignedKey),ImpressionData3p,ImpressionTime1,ConversionData3p,ConversionTime1}を含む表内のタプルまたは行を形成する。
アプリケーション112は、同じデジタルコンポーネントに関する複数のインプレッションを報告することができるので、暗号化されたブラインド署名された鍵(
(BlindlySignedKey)ごとにインプレッションデータ(ImpressionData3)の複数のオカレンスが存在し得る。集約サーバ180-Aは、t'm=tm+tdevice+time_skewcを含む暗号化されていない時間データ(ImpressionTime0)を取得するために、同じ暗号化されたブラインド署名された鍵(
(BlindlySignedKey)と同じ3回暗号化されたコンバージョンデータ(ConversionData3p)とを有する3回暗号化されたインプレッションデータ(ImpressionData3p)ごとに、その公開鍵Siを使用して、1回暗号化されたインプレッション時間データ(ImpressionTime1)を復号することができる。集約サーバ180-Aは、time_skewcの値を知らない。同じデバイスアトリビューションが使用されている場合、デバイスのクロックスキュー(tdevice)は、固定されているが、集約サーバ180-Aにとって未知である。クロスデバイスアトリビューションが使用されている場合、データが複数のデバイスから来る可能性があり、集約サーバ180-Aにとって未知であるので、同じ暗号化されたブラインド署名された鍵(
(BlindlySignedKey)に関連付けられた異なるインプレッションに関するデバイスのクロックスキュー(tdevice)は、異なる可能性がある。いずれの場合も、集約サーバ180-Aは、t'mからインプレッション/クリック時間(tm)を推測することができず、したがって、ユーザを追跡するために、時間ベースの攻撃を容易に開始することができない。
集約サーバ180-Aは、インプレッション時間(ImpressionTime0)をtm+tdevice+time_skewc+time_skewiとして決定することができる。結合されたインプレッションデータ(ImpressionData3p)およびコンバージョンデータ(ConversionData3p)の組合せごとに、集約サーバ180-Aは、一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))がしきい値(例えば、k-匿名性プライバシーしきい値)を満たすかまたは超えるかどうかを判定することができる。そうである場合、集約サーバ180-Aは、組合せについて、タプル{(
(BlindlySignedKey)),ImpressionData3p,ImpressionTime0}を集約サーバ180-Bに送信することができる。いくつかの実装形態において、集約サーバ180-Aは、プロセス300に関して上記で説明したように、差分プライバシーのためのサブサンプリング技法を使用することもできる。
集約サーバ180-Bはまた、集約サーバ180-Aから受信した暗号化されたインプレッションデータおよびコンバージョンデータを結合およびフィルタリングする(616)。集約サーバ180-Bは、集約サーバ180-Aから受信したタプル{
(BlindlySignedKey),ConversionData3,ConversionTime1}を、集約サーバ180-Bが暗号化されたブラインド署名された鍵(
(BlindlySignedKey))を使用してステップ612において生成したタプル{
(BlindlySignedKey,Keyi),ImpressionData3,ImpressionTime1}と結合することができる。暗号化されたブラインド署名された鍵(
(BlindlySignedKey))ごとに、集約サーバ180-Aは、{
(BlindlySignedKey),ImpressionData3p,ImpressionTime1,ConversionData3p,ConversionTime1}を含む表内のタプルまたは行を形成する。
集約サーバ180-Bは、t'm=tm+tdevice+time_skewiを含む暗号化されていない時間データ(CompressionTime0)を取得するために、同じ暗号化されたブラインド署名された鍵(
(BlindlySignedKey)と同じ3回暗号化されたコンバージョンデータ(ConversionData3p)とを有する3回暗号化されたインプレッションデータ(ImpressionData3p)ごとに、その公開鍵Scを使用して、1回暗号化されたコンバージョン時間データ(ConversionTime1)を復号することもできる。
集約サーバ180-Bは、コンバージョン時間(ConversionTime0)をzn+tdevice+time_skewi+time_skewcとして決定することができる。結合されたインプレッションデータ(ImpressionData3p)およびコンバージョンデータ(ConversionData3p)の組合せごとに、集約サーバ180-Bは、一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))がしきい値(例えば、k-匿名性プライバシーしきい値)を満たすかまたは超えるかどうかを判定することができる。そうである場合、集約サーバ180-Bは、組合せについて、タプル{(
(BlindlySignedKey)),ConversionData3p,ConversionTime0}を集約サーバ180-Aに送信することができる。いくつかの実装形態において、集約サーバ180-Bは、プロセス300に関して上記で説明したように、差分プライバシーのためのサブサンプリング技法を使用することもできる。
この時点で、両方の集約サーバ180-Aおよび180-Bは、一意の暗号化されたブラインド署名された鍵
(BlindlySignedKey)ごとに、以下の形式、{(
(BlindlySignedKey)),ImpressionData3p,ImpresionTime0,ConversionData3p,ConversionTime0}の記録を形成するために、インプレッションおよびコンバージョンのデータと時間の両方を結合するために、暗号化されたブラインド署名された鍵
(BlindlySignedKey)を使用することができる。
集約サーバ180-Aは、インプレッションおよびコンバージョンの時系列順序を生成する(618)。一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))ごとに、集約サーバ180-Aは、時間を使用して、暗号化されたブラインド署名された鍵(
(BlindlySignedKey))に関するインプレッションおよびコンバージョンの時系列シーケンスを生成するために、インプレッションデータ(ImpressionData3p)ごとのインプレッション時間(ImpressionTime0)と、コンバージョンデータ(ConversionData3p)ごとのコンバージョン時間(ConversionTime0)とを比較することができる。
集約サーバ180-Bは、インプレッションおよびコンバージョンの時系列順序を生成する(620)。一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))ごとに、集約サーバ180-Aは、時間を使用して、暗号化されたブラインド署名された鍵(
(BlindlySignedKey))に関するインプレッションおよびコンバージョンの時系列シーケンスを生成するために、インプレッションデータ(ImpressionData3p)ごとのインプレッション時間(ImpressionTime0)と、コンバージョンデータ(ConversionData3p)ごとのコンバージョン時間(ConversionTime0)とを比較することができる。
各一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))は、特定のデジタルコンポーネントおよび特定の一意の識別子(ID)に対応するので、暗号化されたブラインド署名された鍵(
(BlindlySignedKey))に関する時系列シーケンスは、一意の識別子に関する(例えば、一意の識別子に対応するユーザの1つまたは複数のデバイスにおける)デジタルコンポーネントの1つまたは複数のインプレッションと、特定のデジタルコンポーネントの提示から生じる1つまたは複数のコンバージョンとを含む。例えば、特定のデジタルコンポーネントが同じユーザに複数回提示された場合、シーケンスは、複数のインプレッションを含むことができ、シーケンスは、異なるタイプの複数のコンバージョン(例えば、アイテムを仮想カートに追加するためのものと、アイテムの取得を完了するためのもの)を含むことができる。
時系列順序は、集約サーバ180-Aおよび180-Bが、コンバージョンをインプレッションにアトリビュートするためにアトリビューションプロセスを独立して実行することを可能にする。例えば、ラストクリックアトリビューションモデルにおいて、集約サーバ180-Aおよび180-Bは、シーケンス内のコンバージョンの前のクリックを含む最後のインプレッションを識別し、コンバージョンを最後のインプレッションにアトリビュートすることができる。集約サーバ180-Aおよび180-Bは、例えば、その結果を他の集約サーバの結果と比較することによって、互いの結果を検証することもできる。図6には示されていないが、集約サーバ180-Aおよび180-Bは、図3のステップ318~332に関して上記で説明したように、インプレッションデータとコンバージョンデータとを復号するために一緒に動作することができる。集約サーバ180-Aおよび180-Bは、コンバージョン報告において他のデータとともにアトリビューションを報告することができる。
時間間隔ベースの攻撃を防止または検出するために、いくつかの追加のステップが行われ得る。同じ暗号化されたブラインド署名された鍵(
(BlindlySignedKey))に関連付けられた複数のインプレッション/クリックについて、集約サーバ180-Aは、t'mを有し、ここで、mは、整数である。t'mが古いものから最新のものへと時系列に並べられていると仮定すると、集約サーバ180-Aは、2つの隣接するインプレッション間の時間間隔Λ'を計算することができ、例えば、Λ'm=t'm+1-t'mである。tdeviceが十分に小さいと仮定すると、Λ'm≒Λm=t'm+1-t'mである。デジタルコンポーネント配信システムが一連のインプレッションをユーザに提供する場合、デジタルコンポーネント配信システムは、2つの隣接するインプレッション間の時間間隔、すなわち、Λmを記録することができる。上記に基づいて、デジタルコンポーネント配信システムが集約サーバ180-Aと共謀する場合、デジタルコンポーネント配信システムは、時間間隔に基づいて、個々のユーザを認識することができ得る。デジタルコンポーネント配信システムが集約サーバ180-Bと共謀する場合、デジタルコンポーネント配信システムは、同様の時間間隔ベースの攻撃を開始することもできる。
これらの時間間隔ベースの攻撃を阻止するための1つのオプションは、以下の特性を有する単調増加関数,を使用することである。2つの任意の数が与えられると、2つの値a-bおよび,(a)-,(b)は、相関しない。すなわち、a-bを知ることは、,(a)-,(b)を予測することには役立たず、逆もまた同様である。
関数,を用いて、インプレッション時間データ(ImpressionTime2)は、PubKeyEncrypt(T(,(tm+tdevice),Si),Sc)として定義され得る。この例では、Λ'm=,(tm+1+tdevice+skew)-,(tm+tdevice+skew)である。したがって、Λ'm≠Λmであり、時間間隔ベースのアタックは、中断される。
時間間隔ベースの攻撃を阻止するための別のオプションは、専用のタイムサーバ192を含むようにプロセス600を変更することである。プロセス600の開始時に、集約サーバ180-Aは、{BlindlySignedKey(ID,dc_destination,report_domain),ImpressionData3p,T(tm+tdevice,Stime)}の形式においてインプレッションデータを受信する。この例では、インプレッション/クリック時間tmおよびデバイスのクロックスキューtdeviceの合計は、タイムサーバ192の公開鍵Stimeを使用して暗号化される。例えば、アプリケーション112またはクライアントデバイス110は、公開鍵Stimeを使用して時間データを暗号化することができる。同様に、集約サーバ180-Bは、{BlindlySignedKey(ID,conversion_domain,report_domain),ConversionData3p,T(zn+tdevice,Stime)}の形式においてコンバージョンデータを受信する。この例では、コンバージョン時間Znおよびデバイスのクロックスキューtdeviceの合計は、タイムサーバ192の公開鍵Stimeを使用して暗号化される。例えば、アプリケーション112またはクライアントデバイス110は、公開鍵Stimeを使用して時間データを暗号化することができる。
修正されたステップ606において、集約サーバ180-Aは、代わりに、集約サーバ180-Bに、{H(BlindlySignedKey,Si),ImpressionData3p,T(tm+tdevice,Stime)}の形式のタプルを送信することができる。すなわち、集約サーバ180-Aは、秘密鍵Siを用いて、ブラインド署名された鍵を暗号化し、インプレッションデータおよび時間データをそのままパススルーすることができる。
同様に、修正されたステップ608において、集約サーバ180-Bは、代わりに、集約サーバ180-Aに、{H(BlindlySignedKey,Sc),ImpressionData3p,T(zn+tdevice,Stime)}の形式のタプルを送信することができる。すなわち、集約サーバ180-Bは、秘密鍵Scを用いて、ブラインド署名された鍵を暗号化し、インプレッションデータおよび時間データをそのままパススルーすることができる。
修正されたステップ610において、集約サーバ180-Aは、{H(BlindlySignedKey),ConversionData3,T(zn+tdevice+time_skewi,Stime)}の形式のタプルを生成し、集約サーバ180-Bに送信することができる。この例では、コンバージョンデータ(ConversionData3p)に適用された確率的暗号化は、(ConversionData3)を作成するために決定論的暗号化に置き換えられる。加えて、集約サーバ180-Aは、暗号化されたインプレッション時間にランダムノイズを追加することができ、ここで、ノイズは、H(BlindlySignedKey)および秘密鍵Siから暗号的に導出される。同様に、ステップ612において、集約サーバ180-Bは、{H(BlindlySignedKey),ImpressionData3,T(tm+tdevice+time_skewc,Stime)}の形式のタプルを生成し、集約サーバ180-Aに送信することができる。
修正されたステップ614において、集約サーバ180-Aは、プロセス600の元のステップ614に関して上記で説明したように、データセットを結合およびフィルタリングすることができる。インプレッション時間(ImpressionTime0)をtm+tdevice+time_skewc+time_skewiとして決定するのではなく、集約サーバ180-Aは、暗号化されたインプレッション時間値(ImpressionTime3_skew)を決定することができる。例えば、暗号化されたインプレッション時間値(ImpressionTime3_skew)は、T(tm+tdevice+time_skewc+time_skewi,Stime)として定義され得る。すなわち、暗号化されたインプレッション時間値(ImpressionTime3_skew)は、準同型加法確率的公開鍵暗号化技法Tとタイムサーバ192の公開鍵Stimeとを使用して暗号化された時間値の合計である。
結合されたインプレッションデータ(ImpressionData3)およびコンバージョンデータ(ConversionData3)の組合せごとに、集約サーバ180-Aは、一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))の数がしきい値(例えば、差分プライバシーしきい値)を満たすかまたは超えるかどうかを判定することができる。そうである場合、集約サーバ180-Aは、組合せについて、タプル{(
(BlindlySignedKey)),ImpressionData3,ImpressionTime3_skew}を集約サーバ180-Bに送信することができる。
修正されたステップ616において、集約サーバ180-Bは、プロセス600の元のステップ616に関して上記で説明したように、データセットを結合およびフィルタリングすることができる。インプレッション時間(ConversionTime0)をzn+tdevice+time_skewc+time_skewiとして決定するのではなく、集約サーバ180-Bは、暗号化されたコンバージョン時間値(ConversionTime3_skew)を決定することができる。例えば、暗号化されたコンバージョン時間値(ConversionTime3_skew)は、T(zn+tdevice+time_skewc+time_skewi,Stime)として定義され得る。すなわち、暗号化されたコンバージョン時間値(ConversionTime3_skew)は、準同型加法確率的公開鍵暗号化技法Tとタイムサーバ192の公開鍵Stimeとを使用して暗号化された時間値の合計である。
結合されたインプレッションデータ(ImpressionData3p)およびコンバージョンデータ(ConversionData3)の組合せごとに、集約サーバ180-Bは、一意の暗号化されたブラインド署名された鍵(
(BlindlySignedKey))の数がしきい値(例えば、差分プライバシーしきい値)を満たすかまたは超えるかどうかを判定することができる。そうである場合、集約サーバ180-Bは、組合せについて、タプル{(
(BlindlySignedKey)),ConversionData3,ConversionTime3_skew}を集約サーバ180-Aに送信することができる。
この時点で、両方の集約サーバ180-Aおよび180-Bは、一意の暗号化されたブラインド署名された鍵
(BlindlySignedKey)ごとに、以下の形式、{
(BlindlySignedKey),ImpressionData3,ImpresionTime3_skew,ConversionData3,ConversionTime3_skew}の記録を形成するために、インプレッションおよびコンバージョンのデータと時間の両方を結合するために、暗号化されたブラインド署名された鍵
(BlindlySignedKey)を使用することができる。
同じまたは複数の暗号化されたブラインド署名された鍵
(BlindlySignedKey)に関連付けられた複数のインプレッションデータ(ImpressionData3)および複数のコンバージョンデータ(ConversionData3)からなる各記録内で、集約サーバ180-Aは、暗号化された時間値(ImpresionTime3_skewおよびConversionTime3_skew)にランダムまたは疑似ランダムなインデックスを割り当てることができる。集約サーバ180-Aは、これらのインデックスを、暗号化された時間値(しかし、ブラインド署名された鍵またはインプレッションデータもしくはコンバージョンデータではない)とともにタイムサーバ192に送信することができる。タイムサーバ192は、公開鍵Stimeに対応する秘密鍵を使用して、暗号化された時間値を復号し、これらの復号されたが、トリプルスキューされた時間値を順序付け、インデックスを時系列順序で集約サーバ180-Aに送り返すことができる。
このようにして、タイムサーバ192は、いかなるユーザデータにもアクセスできない。タイムサーバ192は、トリプルスキューされた時間値の目的、または3重にスキューされた時間値の集合体が同じ暗号化されたブラインド署名された鍵
(BlindlySignedKey)に関連付けられているかどうかにさえアクセスできない。集約サーバ180-Aと共謀することなく、タイムサーバ192は、時間または時間間隔ベースの攻撃を開始することができる。
集約サーバ180-Aは、データに対応する暗号化された時間値のインデックスを使用して、各記録に関するインプレッションデータ(ImpressionData3)およびコンバージョンデータ(ConversionData3)を順序付けることができる。この順序を用いて、集約サーバ180-Aは、上記で説明したように、コンバージョンをインプレッションにアトリビュートするために、アトリビューションプロセスを実行することができる。集約サーバ180-Bは、アトリビューションのためのデータを順序付けるために、インデックスを暗号化された時間値に割り当て、タイムサーバ192と対話する同じプロセスを実行することができる。両方の集約サーバ180-Aおよび180-Bがこのプロセスを完了したとき、集約サーバ180-Aおよび180-Bは、結果を比較することができる。
データドリブンアトリビューション
本文書で説明されているMPCプロセス、例えば、図3のプロセス300は、データドリブンアトリビューション(DDA)をサポートするように適合され得る。データドリブンアトリビューションは、ユーザのアクションに基づいて、コンバージョンについてデジタルコンポーネント、キャンペーン、および/または検索キーワードにクレジットを与える。例えば、DDAは、コンバージョンにつながるコンバージョンパス全体における各キーワードの実際の寄与を計算するためにコンバージョンデータを使用することができる。これは、クレジットを適用するための後の処理のために、集約しきい値を満たすフルパスを報告システム190に報告することによって機能する。
図7は、データドリブンアトリビューションを使用してコンバージョンをインプレッションにアトリビュートするための例示的なプロセス700を示すフロー図である。プロセス700は、図1および図2の集約サーバ180-Aおよび180-Bによって実行され得る。
DDAを追跡するために、デジタルコンポーネントおよび/またはコンバージョンシステム172は、DDAを有効にするようにクライアントデバイス110のアプリケーション112に通知することができる(702)。DDAが有効にされたとき、アプリケーション112は、デジタルコンポーネントがクリックされたか、または他の方法で対話されたかどうかを考慮に入れるために、ブラインド署名された結合鍵の定義を変更することができる。デジタルコンポーネントのクリックされたインプレッションについて、アプリケーション112は、各インプレッションに関するブラインド署名されたインプレッション鍵(BlindlySignedKey(ID,dc_destination,report_domain))の定義を、BlindlySignedKey(ID||clicked,dc_destination,report_domain)として変更することができる。この定義において、ブラインド署名されたインプレッション鍵は、複雑なメッセージ(ID||clicked,dc_destination,report_domain)をハッシュ値にマッピングする一方向性暗号ハッシュ関数と、ブラインド署名されたインプレッション鍵のためのブラインド署名(blind_singature)とを含む複雑なメッセージである。DDAがクリックされた(または対話した)インプレッションのみを考慮する場合、パラメータclickedは、常に真であるか、または1の値を有する。
インプレッションデータおよびコンバージョンデータが受信される(704)。例えば、上記で説明したように、例えば、バッチにおいて、集約サーバ180-Aは、インプレッションデータを受信することができ、集約サーバ180-Bは、コンバージョンデータを受信することができる。アプリケーション112が上記で説明したようにインプレッションを報告したとき、アプリケーション112は、集約サーバ180-Aに、ブラインド署名された結合鍵(BlindlySignedKey)と3回暗号化されたインプレッションデータ(ImpressionData3p)とを含むインプレッションデータMiを送信することができる。同様に、アプリケーション112が上記で説明したようにコンバージョンを報告したとき、アプリケーション112は、集約サーバ180-Bに、ブラインド署名された結合鍵(BlindlySignedKey)と3回暗号化されたコンバージョンデータ(ConversionData3p)とを含むコンバージョンデータMcを送信することができる。この例では、ブラインド署名された鍵は、パラメータclickedを考慮に入れた修正されたバージョンである。
インプレッションおよびコンバージョンのシーケンスが生成される(706)。シーケンスを生成する前に、各集約サーバ180-Aおよび180-Bは、プロセス300のステップ306~316に関して上記で説明したように、データを結合およびフィルタリングすることができる。結合およびフィルタリングが完了した後、集約サーバの各々は、以下の形式、{ImpressionData3,1,ImpressionData3,2,ImpressionData3,i…,ConversionData3}の、所与のユーザに関連付けられた一意のブラインド署名された結合鍵(BlindlySignedKey)ごとの記録を有する。この形式において、インプレッションおよびコンバージョンは、時系列に順序付けられ得る。ブラインド署名された結合鍵(BlindlySignedKey)のこの時系列に順序付けられたシーケンスは、Sequenceと呼ばれる場合がある。
一意のSequenceごとに、両方の集約サーバ180-Aおよび180-Bは、一意のsequenceを有するいくつかのブラインド署名された結合鍵(BlindlySignedKey)を決定する(708)。例えば、複数のユーザが、コンバージョンイベントの前に同じデジタルコンポーネントを同じ順序でクリックした可能性がある。そのような場合、インプレッションおよびコンバージョンのsequenceは、ユーザごとに一意のブラインド署名された結合鍵(BlindlySignedKey)を有する。
Sequenceは、フィルタリングされる(710)。例えば、各集約サーバ180-Aおよび180-Bは、プライバシーまたは他のしきい値処理要件に基づいてSequenceをフィルタリングすることができる。特定の例において、集約サーバ180-Aおよび180-Bは、Sequenceから、少なくともしきい値数の一意のブラインド署名された結合鍵(BlindlySignedKey)を持たない各Sequenceをフィルタリングすることができる。この結果は、{Occurrencem,Sequencem}ペアのリストであり、ここで、m=1,2,…Mである。
インプレッションデータおよびコンバージョンデータは、復号される(712)。インプレッションデータおよびコンバージョンデータは、プロセス300のステップ318~328のMPCプロセスを使用して復号され得る。復号は、{Occurrence1,ImpressionData1,1,…ImpressionData1,?,ConversionData1,1},{Occurrence2,ImpressionData1,2,…ImpressionData1,?,ConversionData1,2}の形式のタプルを結果として生じる。各タプルは、報告ドメイン190の公開鍵を使用して1回暗号化された、インプレッションデータおよびコンバージョンのそのシーケンスを含む。
インプレッションデータおよびコンバージョンデータは、それらのそれぞれの報告システムに送信される(714)。報告システム190は、次いで、クレジットを割り当てるために、それらのDDA技法(例えば、シャープレイ値)をシーケンスの最終セットに適用することができる。
DDAは、複数のドメイン間のクロスサイト報告であるので、特に、多くの情報がインプレッションデータおよび/またはコンバージョンデータ内に符号化されており、結果として、各インプレッションデータ(ImpressionData3p)の多くの異なるオカレンスおよびコンバージョンデータ(ConversionData3p)の多くの異なるオカレンスが生じる場合、しきい値要件を満たすことができる別個のシーケンスの数は、少なくなる可能性がある。そのような場合、ユーザのプライバシーを保護するために、最終的な測定報告内の各Sequenceのオカレンスの数に差分プライバシーノイズが追加され得、これは、デジタルコンポーネントプロバイダにとって有用性が低い可能性がある。
この有用性は、インプレッションデータ(ImpressionData3p)および/もしくはコンバージョンデータ(ConversionData3p)のエントロピーを低減することによって、または報告ウィンドウを拡大することによって、ユーザのプライバシーを保護しながら改善され得る。インプレッションデータの順序が重要ではない場合、または重複するインプレッションデータが無視され得る場合、デジタルコンポーネントプロバイダは、コンバージョンサイトにおける集約サーバ180-Aおよび180-Bに通知することができる。この場合、集約サーバ180-Aおよび180-Bは、各Set(Sequence)に関連付けられた一意のブラインド署名された結合鍵(BlindlySignedKey)の数をカウントし、それに応じてしきい値処理とサブサンプリングとを適用する。
集約コンバージョン値の決定
本文書で説明されているMPCプロセス、例えば、図3のプロセス300は、コンバージョンおよびインプレッションの数に加えて、コンバージョン値を報告することをサポートするように適合され得る。コンバージョンごとに、広告主は、数値的なコンバージョン値、例えば、デジタルコンポーネントプロバイダのウェブサイトにおいて消費された金額を添付することができる。特定のインプレッションおよびコンバージョンのペアについて、対応する数値的コンバージョン値が添付されたnのコンバージョン{V1,V2,…Vn}が存在すると仮定する。コンバージョンの数は、
である。合計コンバージョン値は、
である。コンバージョン値の2乗の合計は、
である。コンバージョン値の平均は、
であり、分散は、
である。2つのキャンペーンの有効性を比較するために、コンバージョン値の分布(コンバージョンが発生する場合)が正規分布に従うと仮定し、次いで、2つの正規分布間に有意差が存在するかどうかを比較することができる。そうするために、2次モーメント分散(Ai,2)が必要とされる。
集約サーバ180-Aおよび180-Bがコンバージョン値(A1)を安全に計算することを可能にするために、数値加法演算をサポートする可換暗号化技法Hが使用され得る。すなわち、2つの任意の整数値xおよびyに対して、H(x+y)=HomomorphicAddition(H(x),H(y))である。報告システム190がコンバージョンの数A0を計算することを考えると、これは、合計コンバージョン値A1を取得し、平文で平均を計算するための安全な方法である。
図8は、集約コンバージョン値を決定するための例示的なプロセス800を示すフロー図である。プロセス800は、図1および図2の集約サーバ180-Aおよび180-Bによって実行され得る。
インプレッションデータおよびコンバージョンデータが受信される(802)。例えば、上記で説明したように、クライアントデバイスから、例えば、バッチにおいて、集約サーバ180-Aは、インプレッションデータを受信することができ、集約サーバ180-Bは、コンバージョンデータを受信することができる。アプリケーション112が上記で説明したようにインプレッションを報告したとき、アプリケーション112は、集約サーバ180-Aに、ブラインド署名された結合鍵(BlindlySignedKey)と3回暗号化されたインプレッションデータ(ImpressionData3p)とを含むインプレッションデータMiを送信することができる。
同様に、アプリケーション112が上記で説明したようにコンバージョンを報告したとき、アプリケーション112は、集約サーバ180-Bに、ブラインド署名された結合鍵(BlindlySignedKey)と3回暗号化されたコンバージョンデータ(ConversionData3p)とを含むコンバージョンデータMcを送信することができる。この例では、ブラインド署名された鍵は、パラメータclickedを考慮に入れた修正されたバージョンである。しかしながら、コンバージョンデータMcは、コンバージョンについて、コンバージョン値(V)および/またはコンバージョン値の2乗(V2)を含むことができる。一般化すると、コンバージョンデータMcは、Viによって指定されるように、任意の数のコンバージョン値V1,V2,…Vnを含むことができる。それらのViのうちの1つは、別のVjの2乗であり得る。
実際の値Viを送信するのではなく、アプリケーション112は、値Viの暗号化されたバージョンを送信することができる。いくつかの実装形態において、コンバージョンシステム172は、確率的準同型加法公開鍵暗号化H(例えば、Paillier暗号システム)を用いて値Viを暗号化し、H(Vi,report_domain)をアプリケーション112に送信することができる。この例では、値は、デジタルコンポーネントについてコンバージョン報告を受信する報告ドメイン(report_domain)と組み合わされ、暗号化技法Hを使用して暗号化される。
アプリケーション112は、H(Vi,report_domain)を受信し、1つまたは複数の3回暗号化されたコンバージョン値と2回暗号化された2乗コンバージョン値とを生成する。例えば、アプリケーション112は、3回暗号化されたコンバージョン値として、PublicKeyEncrypt(H(Vi,report_domain),Sc,Si)を生成することができる。この例では、コンバージョンシステム172から受信された暗号化されたコンバージョン値は、集約サーバ180-Bの公開鍵Scを使用して暗号化され、この結果は、集約サーバ180-Aの公開鍵Siを使用して暗号化される。この3回暗号化されたコンバージョン値は、第3の暗号化が確率的である可能性があるので、ConversionValue3pと呼ばれることもある。
ブラインド署名された結合鍵が暗号化される(804)。例えば、集約サーバ180-Aは、プロセス300のステップ306に関して上記で説明したように、可換暗号化と、その選択された暗号化鍵Keyi1とを使用して、受信したインプレッションデータ内のブラインド署名された結合鍵(BlindlySignedKey)を暗号化することができる。集約サーバ180Aは、次いで、インプレッションごとに、ペア{H(BlindlySignedKey,Keyi1),ImpressionData3p}を集約サーバ180-Bに送信することができる。
同様に、集約サーバ180-Bは、プロセス300のステップ308に関して上記で説明したように、可換暗号化と、その選択された暗号化鍵Keyc1とを使用して、受信したコンバージョンデータ内のブラインド署名された結合鍵(BlindlySignedKey)を暗号化することができる。集約サーバ180-Aは、次いで、コンバージョンごとに、タプル{H(BlindlySignedKey,Keyc1),ConversionData3p,ConversionValue3p}を集約サーバ180-Aに送信することができる。
コンバージョン値(ConversionValue3p)が復号される(806)。例えば、集約サーバ180-Aは、公開鍵Siに対応する秘密鍵を使用して、コンバージョン値(ConversionValue3p)を復号することができる。これは、PubKeyEncrypt(H(Vi,report_domain),Sc)によって定義された2回暗号化されたコンバージョン値(ConversionData2)の復元をもたらす。集約サーバ180-Bは、この2回暗号化されたコンバージョン値(ConversionData2)をローカルに保持することができる。
暗号化されたインプレッションデータおよびコンバージョンデータが結合およびフィルタリングされる(808)。例えば、各集約サーバ180-Bは、データを結合およびフィルタリングすることができる。この例では、集約サーバ180-Aは、プロセス300のステップ314と同様に、しかし、追加のコンバージョン値(ConversionValue2)を用いて、ブラインド署名された鍵(
(BlindlySignedKey)を使用して、コンバージョン値(ConversionValue2)と、コンバージョンデータ(ConversionData3)と、インプレッションデータ(ImpressionData3)とを結合することができる。集約サーバ180-Aは、次いで、プロセス300のステップ314と同様に、しきい値に基づいて、結合された記録をフィルタリングすることができる。例えば、集約サーバ180-Aは、データセットから、しきい値を満たさないかまたは超えていないいくつかの一意のブラインド署名された鍵(
(BlindlySignedKey)を有する{ConversionValue2,ConversionData3,ImpressionData3}の結合された記録をフィルタリングすることができる。
残りの結合された記録ごとに、集約サーバ180-Aは、鍵/値ペアを生成することができる。この例では、鍵は、ブラインド署名された鍵(
(BlindlySignedKey))、3回暗号化されたインプレッションデータ(ImpressionData3)、および3回暗号化されたコンバージョンデータ(ConversionData3)の暗号ハッシュであり得る。値は、2回暗号化されたコンバージョン値(ConversionValue2)であり得る。この鍵/値ペアは、{CrytpoHash(H(Key),ImpressionData3,ConversionData3),ConversionValue2}として定義され得る。集約サーバ180-Aは、鍵/値ペアを集約サーバ180-Bに送信することができる。
集約サーバ180-Bは、フィルタリング後に残るタプル{H(Key),ImpressionData3,ConversionData3}の同じセットを含むデータセットを生成するために、そのデータに対して同じフィルタリングを実行することができる。集約サーバ180-Bは、各タプルに関する鍵を取得するために、タプルに対して同じ暗号ハッシュ、例えば、CrytpoHash(H(Key),ImpressionData3,ConversionData3)を実行することができる。集約サーバ180-Bは、生成された鍵を鍵/値ペアの鍵と照合することによって、このデータと集約サーバ180-Aから受信した鍵/値ペアと結合することができる。
2回暗号化されたコンバージョン値(ConversionValue2)が復号される(810)。集約サーバ180-Bは、上記で説明したように、報告システム190の公開鍵を使用して1回暗号化された、1回暗号化されたコンバージョン値(ConversionValue1)を復元するために、公開鍵に対応するその秘密鍵を使用して、2回暗号化されたコンバージョン値(ConversionValue2)を復号することができる。集約サーバ180-Bは、各1回暗号化されたコンバージョン値(ConversionValue1)とその鍵(CrytpoHash(H(Key),ImpressionData3,ConversionData3))とを集約サーバ180-Aに送信することができる。
合計コンバージョン値が決定される(812)。各集約サーバ180-Aおよび180-Bは、同じインプレッションデータ(ImpressionData3)およびコンバージョンデータ(ConversionData3)を有する各記録に対して合計コンバージョン値を決定することができる。すなわち、ImpressionData3およびConversionData3の結合された組合せごとに、集約サーバ180-Aおよび180-Bは、コンバージョン値(ConversionValue1)を個別に決定することができる。コンバージョン値は、暗号化されているので、合計は、H(ΣV,report_domain)として決定され得る。
合計コンバージョン値を含むインプレッションデータおよびコンバージョンデータが報告システムに送信される(814)。例えば、集約サーバ180-Aおよび180-Bは、インプレッションデータとコンバージョンデータとを復号するために、ステップ318~328において説明したMPCプロセスを使用することができる。各集約サーバ180-Aは、次いで、インプレッションおよびコンバージョンペアごとに、インプレッションデータ(ImpressionData1)と、コンバージョンデータ(ConversionData1)と、コンバージョン数のカウント(count)と、コンバージョン値(H(ΣV,report_domain))…H(ΣVn,report_domain))とを含む報告を生成し、報告システム190に送信することができる。例えば、複数の合計値、コンバージョン値の合計について1つ、およびコンバージョン値の2乗の合計について1つ、例えば、合計(V1)および合計(V2)が存在する可能性があり、ここで、
である。
報告システム190は、2つの集約サーバ180-Aおよび180-Bからの2つの報告が一致することを確実にするために、それらを比較することができる。それらが一致する場合、報告システム190は、不正検出システム170からのブラインド署名と、コンバージョンデータmcにおけるコンバージョンサーバの署名とを検証することができる。両方の署名が検証された場合、報告システム190は、データを暗号化するために使用された公開鍵に対応するその秘密鍵を使用して、インプレッションおよびコンバージョンペアごとに、{mi||clicked,mc,count,ΣV…ΣVn}を復元するために、コンバージョン報告内のデータを復号することができる。すなわち、報告システム190は、インプレッションおよびコンバージョンペアごとに、インプレッションデータ(mi)と、デジタルコンポーネントがクリックされたかどうかと、コンバージョンデータ(mc)と、コンバージョン数のカウント(count)と、合計コンバージョン値とを復元することができる。
差分プライバシー
プロセス300と同様に、差分プライバシーのためにプロセス800においてサブサンプリングが使用され得る。プロセス800のステップ808において、集約サーバ180-Aおよび180-Bは、合計コンバージョン値ΣViにノイズを導入するために、プロセス300のステップ314および316におけるのと同様のサブサンプリング技法を使用することができる。加えて、集約サーバ180-Aおよび180-Bは、コンバージョン報告を送信する前に、各コンバージョン値(H(ΣV,report_domain)にランダムノイズを追加することができる。コンバージョン値(H(ΣV,report_domain)ごとに、各集約サーバ180-Aおよび180-Bは、代わりに(H(noisek+(ΣV,report_domain)を生成することができる。両方の集約サーバ180-Aおよび180-Bは、例えば、Diffie-Hellmanプロトコルを使用して、集約サーバ180-Aおよび180-Bが共同で導出する共通シードを使用して乱数発生器を初期化することによって、一貫したノイズ(noisek)を生成することができる。
クロスデバイス測定のための追加のユーザプライバシー保護
上記で説明したように、複数のデバイスにわたるインプレッションカウントおよびコンバージョンカウントとコンバージョン値とを決定するとき、一意の識別子(ID)は、ユーザに関する情報であるか、またはそのような情報、例えば、ユーザの電子メールアドレスの暗号ハッシュに基づくことができる。インプレッションデータ(ImpressionData3p)およびコンバージョンデータ(ConversionData3p)に対して上記で説明した確率的暗号化を使用して、集約サーバ180-Aおよび180-Bは、ユーザに関するなんらかのコンバージョン数を決定することができるが、インプレッションまたはコンバージョン自体についてはなにも決定することができない。しかし、集約サーバ180-Aおよび180-Bは、ユーザがなんらかのオンラインアクティビティを有することを検出することができる。
図9は、集約されたコンバージョンデータを決定するための例示的なプロセス900を示すフロー図である。プロセス900は、集約サーバ180-Aおよび180-Bによって実行され得る。
インプレッションデータおよびコンバージョンデータが受信される(902)。例えば、上記で説明したように、クライアントデバイスから、例えば、バッチにおいて、集約サーバ180-Aは、インプレッションデータを受信することができ、集約サーバ180-Bは、コンバージョンデータを受信することができる。
この例では、インプレッションデータは、デジタルコンポーネントのインプレッションごとに、{H(CryptoHash(ID,dc_destination,report_domain),Stime),ImpressionData3p}の形式であり得る。この例では、一意の識別子(ID)、宛先(dc_destination)、および報告ドメインの暗号ハッシュが、加法準同型公開鍵暗号化技法Hと、タイムサーバ192の公開鍵Stimeとを使用して暗号化される。この暗号化された暗号ハッシュは、インプレッション結合鍵として機能する。インプレッションデータは、図2に関して上記で説明したように暗号化され得る3回暗号化されたインプレッションデータ(ImpressionData3p)も含む。
コンバージョンデータは、デジタルコンポーネントのコンバージョンごとに、{H(CryptoHash(ID,dc_destination,report_domain),Stime),ConversionData3p}の形式であり得る。この例では、一意の識別子(ID)、宛先(dc_destination)、および報告ドメインの暗号ハッシュが、加法準同型公開鍵暗号化技法Hと、タイムサーバ192の公開鍵Stimeとを使用して暗号化される。この暗号化された暗号ハッシュは、コンバージョン結合鍵として機能する。コンバージョンデータは、図2に関して上記で説明したように暗号化され得る3回暗号化されたコンバージョンデータ(ConversionData3p)も含む。タイムサーバ192と共謀することなく、暗号化技法Hの確率的特性により、集約サーバ180-Aまたは集約サーバ180-Bのいずれも、CryptoHash(ID,dc_destination,report_domain)を復元することも、またはH(CryptoHash(…))を理解することもできない。
ノンスが選択される(904)。インプレッションデータとコンバージョンデータとを復号するためにMPCプロセスを実行する前に、集約サーバ180-Aおよび180-Bは、各々、ノンスを選択することができる。集約サーバ180-Aは、ノンスnonceiを選択することができ、集約サーバ180-Bは、ノンスnoncecを選択することができる。両方の集約サーバ180-Aおよび180-Bは、そのそれぞれのノンスを機密に保つことができる。
結合鍵が暗号化される(906)。例えば、集約サーバ180-Aは、プロセス300のステップ306に関して上記で説明したように、可換暗号化と、その選択された暗号化鍵Keyi1とを使用して、受信したインプレッションデータ内の結合鍵H(CryptoHash(…))を暗号化することができる。集約サーバ180-Aは、次いで、インプレッションごとに、{H(CryptoHash(ID,dc_destination,report_domain)+noncei,Stime),ImpressionData3p}のペアを集約サーバ180-Bに送信することができる。
同様に、集約サーバ180-Bは、プロセス300のステップ308に関して上記で説明したように、可換暗号化と、その選択された暗号化鍵Keyc1とを使用して、受信したインプレッションデータ内の結合鍵H(CryptoHash(…))を暗号化することができる。集約サーバ180-Bは、次いで、インプレッションごとに、{H(CryptoHash(ID,dc_destination,report_domain)+noncec,Stime),ConversionData3p}のペアを集約サーバ180-Aに送信することができる。
更新された結合鍵が生成される(908)。受信した暗号化された結合鍵と3回暗号化されたコンバージョンデータのペア{H(CryptoHash(ID,dc_destination,report_domain)+noncei,Stime),ImpressionData3p}ごとに、集約サーバ180-Aは、結合鍵とコンバージョンデータとを再暗号化する。プロセス300のステップ310に関して上記で説明したように、集約サーバ180-Aは、2回暗号化されたコンバージョンデータ(ConversionData2)を復元するために、その秘密鍵(公開鍵Siに対応する秘密鍵)を使用して、3回暗号化されたコンバージョンデータ(ConversionData3p)を復号することができる。集約サーバ180-Aは、次いで、その選択された暗号化鍵Keyi2を使用して、2回暗号化されたコンバージョンデータ(ConversionData2)を再暗号化することができる。
集約サーバ180-Aは、受信した暗号化された結合鍵および3回暗号化されたコンバージョンデータのペアH(CryptoHash(ID,dc_destination,report_domain)+noncec,Stime)ごとに、更新された結合鍵を生成することもできる。例えば、集約サーバ180-Aは、更新された結合鍵H(CryptoHash(ID,dc_destination,report_domain)+noncec+noncei,Stime)を生成することができる。集約サーバ180-Aは、次いで、集約サーバ180-Bに、ペア{H(CryptoHash(ID,dc_destination,report_domain)+noncec+noncei,Stime),ConversionData3p}を送信することができる。
同様に、プロセス300のステップ312に関して上記で説明したように、集約サーバ180-Bは、2回暗号化されたインプレッションデータ(ImpressionData2)を復元するために、その秘密鍵(公開鍵Scに対応する秘密鍵)を使用して、3回暗号化されたインプレッションデータ(ImpressionData3p)を復号することができる。集約サーバ180-Bは、次いで、その選択された暗号化鍵Keyc2を使用して、2回暗号化されたインプレッションデータ(ImpressionData2)を再暗号化することができる。
集約サーバ180-Bは、受信した暗号化された結合鍵および3回暗号化されたインプレッションデータのペアH(CryptoHash(ID,dc_destination,report_domain)+noncei,Stime)ごとに、更新された結合鍵を生成することもできる。例えば、集約サーバ180-Bは、更新された結合鍵H(CryptoHash(ID,dc_destination,report_domain)+noncei+noncec,Stime)を生成することができる。集約サーバ180-Bは、次いで、集約サーバ180-Aに、ペア{H(CryptoHash(ID,dc_destination,report_domain)+noncei+noncec,Stime),ImpressionData3p}を送信することができる。
結合鍵が取得される(910)。例えば、各集約サーバ180-Aおよび180-Bは、各インプレッションデータおよび各コンバージョンデータに関する結合鍵を取得するために、タイムサーバ192と対話することができる。集約サーバ180-Aは、タイムサーバ192に、各インプレッションデータおよび各コンバージョンデータに関するH(CryptoHash(ID,dc_destination,report_domain)+noncei+noncec,Stime)を送信することができる。タイムサーバ192は、決定論的対称鍵暗号化技法と、現在のバッチプロセスのために選択された暗号化鍵とを使用して、H(CryptoHash(ID,dc_destination,report_domain)+noncei+noncec,Stime)を復号および再暗号化することができる。再暗号化の結果は、インプレッションデータ(ImpressionData3p)と対応するコンバージョンデータ(ConversionData3p)とを結合するための結合鍵である。集約サーバ180-Bは、同じ結合鍵を取得するために、同様の方法でタイムサーバ192と対話することができる。
インプレッションデータおよびコンバージョンデータが復号される(912)。取得された結合鍵を用いて、集約サーバ180-Aおよび180-Bは、プロセス300のステップ314~328において上記で説明したように、インプレッションデータとコンバージョンデータとを復号するために、MPCプロセスの残りを実行することができる。
復号されたインプレッションデータおよびコンバージョンデータが報告システムに送信される(914)。例えば、各集約サーバ180-Aおよび180-Bは、プロセス300のステップ330および332に関して上記で説明したように、コンバージョン報告をそれぞれの報告システムに送信することができる。
さらに多くのプライバシー保護を提供するために、いくつかの実装形態において、一意の識別子(ID)において乱数または疑似乱数が使用され得る。この乱数または疑似乱数は、一意の識別子(ID)に基づくことができる。例えば、乱数は、HMACSHA256(e-mailアドレス、email_provider_private_key)に基づくことができる。この例では、上記で説明した鍵における一意の識別子(ID)のために使用される乱数は、電子メールプロバイダ(または他のユーザ認証エンティティ)の秘密鍵を使用するユーザの電子メールアドレス(または他の情報)のHMACであり得る。電子メールプロバイダ(またはユーザ認証エンティティ)は、次いで、一意の識別子(ID)のための乱数を、ユーザのすべてのデバイスおよびアプリケーションに同期させることができる。この乱数は、次いで、インプレッションデータとコンバージョンデータとを集約サーバ180-Aおよび180-Bに報告するとき、一意の識別子(ID)の代わりに使用され得る。
図10は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム1000のブロック図である。システム1000は、プロセッサ1010と、メモリ1020と、記憶デバイス1030と、入力/出力デバイス1040とを含む。構成要素1010、1020、1030、および1040の各々は、例えば、システムバス1050を使用して相互接続され得る。プロセッサ1010は、システム1000内で実行するための命令を処理することができる。いくつかの実装形態において、プロセッサ1010は、シングルスレッドプロセッサである。別の実装形態において、プロセッサ1010は、マルチスレッドプロセッサである。プロセッサ1010は、メモリ1020内または記憶デバイス1030上に記憶された命令を処理することができる。
メモリ1020は、システム1000内の情報を記憶する。一実装形態において、メモリ1020は、コンピュータ可読媒体である。いくつかの実装形態において、メモリ1020は、揮発性メモリユニットである。別の実装形態において、メモリ1020は、不揮発性メモリユニットである。
記憶デバイス1030は、システム1000のための大容量ストレージを提供することができる。いくつかの実装形態において、記憶デバイス1030は、コンピュータ可読媒体である。様々な異なる実装形態において、記憶デバイス1030は、例えば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワークを介して共有される記憶デバイス(例えば、クラウド記憶デバイス)、またはなにか他の大容量記憶デバイスを含むことができる。
入力/出力デバイス1040は、システム1000のための入力/出力動作を提供する。いくつかの実装形態において、入力/出力デバイス1040は、1つまたは複数のネットワークインターフェースデバイス、例えば、イーサネットカード、シリアル通信デバイス、例えば、およびRS-232ポート、ならびに/またはワイヤレスインターフェースデバイス、例えば、および802.11カードを含むことができる。別の実装形態において、入力/出力デバイスは、入力データを受信し、外部デバイス1060、例えば、キーボード、プリンタ、およびディスプレイデバイスにデータを出力するように構成されたドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなど、他の実装形態も使用され得る。
例示的な処理システムが図10において記載されているが、本明細書で説明されている主題および機能的動作の実装形態は、他のタイプのデジタル電子回路において、または本明細書において開示されている構造とそれらの構造的同等物とを含むコンピュータソフトウェア、ファームウェア、もしくはハードウェア、もしくはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。
本明細書で説明されている主題および動作の実施形態は、デジタル電子回路において、または本明細書において開示されている構造とそれらの構造的同等物とを含むコンピュータソフトウェア、ファームウェア、もしくはハードウェア、もしくはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明されている主題の実施形態は、1つまたは複数のコンピュータプログラムとして実装され得、すなわち、データ処理装置によって実行するため、またはデータ処理装置の動作を制御するためのコンピュータ記憶媒体(または媒体)上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的に、または加えて、プログラム命令は、データ処理装置によって実行するために適切な受信機装置に送信するための情報を符号化するために生成された人工的に生成された伝搬信号、例えば、機械生成の電気信号、光信号、または電磁信号上に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得、またはそれらの中に含まれ得る。さらに、コンピュータ記憶媒体は、伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号内に符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体は、1つまたは複数の別個の物理的構成要素または媒体(例えば、複数のCD、ディスク、または他の記憶デバイス)でもあり得、またはその中に含まれ得る。
本明細書で説明されている動作は、1つもしくは複数のコンピュータ可読記憶デバイス上に記憶されたデータ、または他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実施され得る。
「データ処理装置」という用語は、例として、プログラム可能なプロセッサ、コンピュータ、システムオンチップ、または上記の複数のものもしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、問題のコンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードを含むこともできる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイル型またはインタプリタ型言語、宣言型言語または手続き型言語の任意の形式において記述され得、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む、任意の形式において展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータを保持するファイルの一部(例えば、マークアップ言語内に記憶された1つまたは複数のスクリプト)内、問題のプログラム専用の単一のファイル内、または複数の協調ファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)内に記憶され得る。コンピュータプログラムは、1つのコンピュータ上、または1つのサイトに配置されるか、もしくは複数のサイトに分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明されているプロセスおよび論理フローは、入力データに対して動作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行され得、装置は、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)としても実装され得る。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリまたはその両方から命令とデータとを受信する。コンピュータの本質的な要素は、命令に従ってアクションを実行するためのプロセッサ、および命令とデータとを記憶する1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、または光ディスクを含むか、またはそれらからデータを受信するため、もしくはそれらにデータを送信するため、もしくはその両方を行うために動作可能に結合される。しかしながら、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス内、例えば、少し例を挙げると、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)内に組み込まれ得る。コンピュータプログラム命令とデータとを記憶するのに適したデバイスは、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、例えば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクを含む、すべての形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはそれらに組み込まれ得る。
ユーザとの対話を提供するために、本明細書で説明されている主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス、例えば、マウスまたはトラックボールとを有するコンピュータ上に実装され得る。同様にユーザとの対話を提供するために、他の種類のデバイスが使用され得、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態において受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そこから文書を受信することによって、例えば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
本明細書で説明されている主題の実施形態は、バックエンド構成要素を、例えば、データサーバとして含むか、またはミドルウェア構成要素を、例えば、アプリケーションサーバとして含むか、またはフロントエンド構成要素を、例えば、ユーザが本明細書で説明されている主題の実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータとして含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、ならびにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントおよびサーバは、一般に、互いに離れており、典型的には、通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって発生する。いくつかの実装形態において、サーバは、データ(例えば、HTMLページ)をクライアントデバイスに(例えば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受信する目的のために)送信する。クライアントデバイスにおいて生成されたデータ(例えば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は、多くの特定の実装形態の詳細を含むが、これらは、任意の発明の範囲または特許請求され得るものに対する制限として解釈されるべきではなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別々の実施形態の文脈において本明細書で説明されている特定の特徴は、単一の実装形態において組み合わせても実装され得る。逆に、単一の実施形態の文脈において説明されている様々な特徴は、別々に複数の実施形態において、または適切な部分的組合せにおいても実装され得る。さらに、特徴は、特定の組合せにおいて作用するものとして上記で説明されている場合があり、当初はそのように特許請求されている場合さえあるが、特許請求されている組合せからの1つまたは複数の特徴は、場合によっては、組合せから削除され得、特許請求されている組合せは、部分的組合せまたは部分的組合せの変形形態に向けられている場合がある。
同様に、動作は、特定の順序において図面中に描かれているが、これは、所望の結果を達成するために、そのような動作が示されている特定の順序で、もしくは順番に実行されること、またはすべての図示された動作が実行されることを要求するものとして理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利な可能性がある。さらに、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されているプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品に一体化され得、または複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
したがって、主題の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲内にある。場合によっては、特許請求の範囲において列挙されているアクションは、異なる順序で実行され得、所望の結果を依然として達成することができる。加えて、添付図面中に示されたプロセスは、所望の結果を達成するために、示された特定の順序、または順番を必ずしも必要としない。特定の実装形態において、マルチタスクおよび並列処理が有利である可能性がある。