JP7184927B2 - コンテンツプラットフォーム上でのユーザ対話の検証 - Google Patents

コンテンツプラットフォーム上でのユーザ対話の検証 Download PDF

Info

Publication number
JP7184927B2
JP7184927B2 JP2020566231A JP2020566231A JP7184927B2 JP 7184927 B2 JP7184927 B2 JP 7184927B2 JP 2020566231 A JP2020566231 A JP 2020566231A JP 2020566231 A JP2020566231 A JP 2020566231A JP 7184927 B2 JP7184927 B2 JP 7184927B2
Authority
JP
Japan
Prior art keywords
mac
data
operating system
application
interaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020566231A
Other languages
English (en)
Other versions
JP2022522316A (ja
Inventor
ガン・ワン
スディ・ハーレ
ジャイルズ・ホグベン
アレックス・ダニエル・ジェイコブソン
マイケル・ライト
ニコラス・エヌ・クラーレヴィッチ・ザ・フォース
ブラム・ボンネ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2022522316A publication Critical patent/JP2022522316A/ja
Application granted granted Critical
Publication of JP7184927B2 publication Critical patent/JP7184927B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • G06F21/445Program or device authentication by mutual authentication, e.g. between devices or programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/33User authentication using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2133Verifying human interaction, e.g., Captcha

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Power Engineering (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Storage Device Security (AREA)

Description

本明細書は全般に、コンテンツ提示の際に発生し得るエラーを検出し、コンテンツプラットフォーム上に表示される特定のコンテンツ項目との対話が実際の人のユーザによる対話であるかどうかを検証することに関する。
クライアントデバイスは、アプリケーション(たとえば、ウェブブラウザ、ネイティブアプリケーション)を使用して、コンテンツプラットフォーム(たとえば、検索プラットフォーム、ソーシャルメディアプラットフォーム、またはコンテンツをホストする別のプラットフォーム)にアクセスすることができる。コンテンツプラットフォームは、クライアントデバイス上で起動されているアプリケーション内で、1つまたは複数のコンテンツプロバイダにより提供され得るコンテンツを表示することができる。いくつかの事例では、アプリケーションは、コンテンツプラットフォーム上で提供されアプリケーション内で表示されるコンテンツとの対話を誤って記録することがある。これは、コンテンツプラットフォームがその中で表示されるアプリケーション(アプリケーションのためのソフトウェア開発キット(SDK)を含む)におけるエラー、および/またはコンテンツプラットフォームにおけるエラーなどの、任意の数の理由によるものであり得る。
全般に、本明細書において説明される主題の1つの革新的な態様は、クライアントデバイス上で実行されている第1のアプリケーションから、第1のアプリケーションにおける表示のために提供される特定のコンテンツ項目との第1の対話がクライアントデバイスのユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するようにとの要求を受信するステップであって、要求が、オペレーティングシステムから取得されるものとして第1のアプリケーションにより特定される初期証明データを含み、初期証明データが、第1の対話を記述するものとして第1のアプリケーションにより特定されるパラメータの第1のセットに対するデータと、パラメータの第1のセットに対するデータを使用して生成されるものとして第1のアプリケーションにより特定される第1のメッセージ認証コード(MAC)セットとを含む、ステップと、オペレーティングシステムから、第1のMACセットが第2のMACセットと同一であるかどうかを明示する指示を取得するステップであって、第2のMACセットが、要求に含まれるパラメータの第1のセットに対するデータを使用してオペレーティングシステムによって生成される、ステップと、第1のMACセットが第2のMACセットと同一であることを明示する指示を取得したことに応答して、第1の対話がクライアントデバイスのユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するステップであって、クリック検証トークンのペイロードが、(1)第1の対話を記述するパラメータの第1のセットに対するデータおよび(2)特定のコンテンツ項目データを特定するデータを含む、ステップと、第1のアプリケーションに、生成されたクリック検証トークンを提供するステップという動作を含む、方法において具現化され得る。本態様の他の実施形態は、方法の活動を実行するように構成される対応するシステム、デバイス、装置、およびコンピュータプログラムを含む。コンピュータプログラム(たとえば、命令)は、コンピュータ記憶デバイス上に符号化され得る。これらのおよび他の実施形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。
いくつかの実装形態では、方法は、オペレーティングシステムによって、クライアントデバイス上での第1のアプリケーションの実行の間に、クライアントデバイスのディスプレイとのユーザによる第1の対話を検出するステップと、オペレーティングシステムによって、ユーザによる第1の対話のために、第1の対話を記述するパラメータの第1のセットに対するデータを取得するステップと、オペレーティングシステムによって、パラメータの第1のセットに対するデータを使用して第1のMACセットを生成するステップと、オペレーティングシステムによって、第1のアプリケーションに、(1)オペレーティングシステムによって取得されるパラメータの第1のセットに対するデータおよび(2)オペレーティングシステムによって生成される第1のMACセットを含むデータを提供するステップとを含んでもよく、初期証明データに含まれるデータは、第1のアプリケーションにオペレーティングシステムによって提供されるデータを表す。
いくつかの実装形態では、パラメータの第1のセットに対するデータを使用して第1のMACセットを生成するステップは、パラメータの第1のセットに対するデータを使用して、クライアントデバイスのディスプレイとの物理的なユーザの接触に対応する第1のユーザ活動のための第1のMAC、および、ディスプレイからの物理的なユーザの接触の解放に対応する第2のユーザ活動のための第2のMACを生成するステップであって、要求に含まれる第1のMACセットが第1のMACおよび第2のMACを備え、パラメータの第1のセットに対するデータを使用してオペレーティングシステムによって生成される第2のMACセットが、(1)第1のユーザ活動に対応するものとして特定される要求に含まれるパラメータの第1のセットに対するデータを使用して生成される第3のMACおよび(2)第2のユーザ活動に対応するものとして特定される要求に含まれるパラメータの第1のセットに対するデータを使用して生成される第4のMACを含む、ステップと、オペレーティングシステムから、(1)第1のMACが第3のMACと同一であることおよび(2)第2のMACが第4のMACと同一であることを決定することを含めて、第1のMACセットが第2のMACセットと同一であることをオペレーティングシステムが決定する場合にのみ第1のMACセットが第2のMACと同一であると明示する指示を取得するステップとを含み得る。
いくつかの実装形態では、パラメータの第1のセットは、次のパラメータ、すなわち、ユーザ活動、ユーザ活動に対応するディスプレイの位置、ユーザ活動を実行するために使用されるツール、ユーザ活動が実行された時間を特定するタイムスタンプ、およびユーザ活動がそこから受け取られたソースのうちの1つまたは複数を含み得る。
いくつかの実装形態では、第1のMACセットと第2のMACセットの各々は、ハッシュメッセージ認証コードアルゴリズム(Hashed Message Authentication Code Algorithm)と、オペレーティングシステムにより記憶されている秘密暗号鍵とを使用して生成され得る。
いくつかの実装形態では、クリック検証トークンを生成するステップは、第1のアプリケーションとは別個の第2のアプリケーションおよびオペレーティングシステムによってクリック検証トークンを生成するステップを含み得る。
いくつかの実装形態では、第1のアプリケーションは、ユーザアプリケーションまたはネイティブアプリケーションであってもよく、第2のアプリケーションは、クライアントデバイス上の安全な環境内で動作する信用されるアプリケーションであってもよい。
いくつかの実装形態では、方法は、第1のアプリケーションによって、コンテンツ検証システムに、生成されたクリック検証トークンを送信するステップと、コンテンツ検証システムから、第1の対話がユーザ対話であることを示すメッセージを受信するステップを含んでもよく、コンテンツ検証システムから受信されるメッセージは、クリック検証トークンに基づいて、第1の対話がユーザ対話であることをコンテンツ検証システムが確証する場合にのみ生成される。
本明細書において説明される主題の特定の実施形態は、次の利点のうちの1つまたは複数を実現するために実装され得る。本明細書において説明される技法は、コンテンツプラットフォームによって提供されるコンテンツページを提示するクライアントデバイス上で実行されているアプリケーション(アプリケーションのSDKを含み得る)におけるエラー(たとえば、ソフトウェアエラー、バグなど)および/またはコンテンツプラットフォームにおけるエラーを特定することができる。たとえば、そのようなエラーは、実際の人のユーザによる対話としてアプリケーションにおいて表示されるコンテンツとの対話を不正確に記録することがある。いくつかの事例では、そのようなエラーは、ソフトウェアエラーであることがあるが、アプリケーション、そのSDK、コンテンツプロバイダとコンテンツプラットフォームとの間の通信チャネル、またはアプリケーションを用いて表示されるコンテンツプラットフォームを危険にさらした可能性のある、悪意のあるエンティティにより注入されたエラーであることもある。そのようなエラーまたは悪意のある活動を特定するために、本明細書において説明される技法は、第1のアプリケーションにおける表示のために提供される特定のコンテンツ項目(たとえば、サードパーティのコンテンツプロバイダにより提供されるサードパーティのコンテンツ項目またはコンテンツプラットフォームにより提供されるオーガニックコンテンツ項目)との対話がクライアントデバイスの実際の人のユーザによる対話であるかどうかを検証することができる。
本明細書において説明される技法はまた、クライアントデバイス上で実行されているアプリケーションにおける表示のために提供される特定のコンテンツ項目(たとえば、サードパーティのコンテンツプロバイダにより提供されるサードパーティのコンテンツ項目またはコンテンツプラットフォームにより提供されるオーガニックコンテンツ項目)との対話がクライアントデバイスの実際の人のユーザによる対話であるかどうかの、独立した検証を提供する。言い換えると、本明細書において説明されるコンテンツ対話検証技法は、(従来の解決法においてそうであったように)アプリケーション内で表示されるコンテンツとの対話に関してアプリケーションおよび/またはそのSDK(またはアプリケーション内で実行されるコンテンツプラットフォーム)により行われる表現(たとえば、それにより提出されるデータ)に単に依存するのではない。むしろ、本明細書において説明される技法は、そのような検証を実行するために、クライアントデバイスによる独立した処理、たとえばオペレーティングシステム(および/またはウェブブラウザ)の処理だけに依存し、または、その処理とともにクライアントデバイス上で実行される別個のアプリケーションに依存する。本明細書において説明される技法は、コンテンツプラットフォーム上で提供されクライアントデバイスに表示されるコンテンツとの対話を分析し、アプリケーションにおける表示のために提供された特定のコンテンツ項目との特定の対話がクライアントデバイスの実際の人のユーザによる対話であるかどうかを検証するために使用され得るコンテンツ検証トークンを生成する。
それに関連して、本明細書において説明される技法は、特定のコンテンツ項目との第1の対話が実際の人のユーザによる対話であるかどうかを検証するためにコンテンツプロバイダ(または別のコンテンツ検証エンティティ)により使用され得る情報の、クライアントデバイスからコンテンツプロバイダ(または別のコンテンツ検証エンティティ)への安全な送信を可能にする。悪意のあるアプリケーション、SDK、または他のソフトウェアコンポーネントが、(1)オペレーティングシステム(またはウェブブラウザ)によって記録されて処理され、アプリケーションに提供される対話についてのデータ、および/または(2)特定の対話が実際の人のユーザ対話であるかどうかを検証するためにクライアントデバイスによりコンテンツプロバイダ(または別のコンテンツ検証エンティティ)に送信されるデータを、改竄または偽造することを試みることがある。悪意のあるエンティティによるそのような介入により、特定の対話が実際の人のユーザ対話として不正確に検証されることがある。そのような悪意のある介入を克服するために、本明細書において説明される技法は、いくつかの暗号技法を利用して、オペレーティングシステムからアプリケーションへの、およびアプリケーション/クライアントデバイスからコンテンツプロバイダへの情報の送信を安全にする。結果として、本明細書において説明されるコンテンツ検証プロセスは、コンテンツ検証プロセスの間にコンテンツプロバイダ(または別の適切な検証システム)を欺くように設計された悪意のあるまたは詐欺的な活動に屈する可能性が低い。
本明細書において説明される主題の1つまたは複数の実施形態の詳細が、添付の図面および以下の説明に記載される。本主題の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかになるであろう。
クライアントデバイス上のアプリケーション内でアクセスされるコンテンツプラットフォーム内での表示のためにコンテンツが提供される例示的な環境のブロック図である。 エラーを検出して、アプリケーションにおける表示のために提供される特定のコンテンツ項目との対話が実際の人のユーザによる対話であるかどうかを検証するための、例示的なプロセスを示すスイムレーン図である。 例示的なコンピュータシステムのブロック図である。
様々な図面における同様の参照番号および名称は同様の要素を示す。
本開示は、コンテンツ提示の際に発生し得るエラーを検出し、コンテンツプラットフォーム上に表示される特定のコンテンツ項目との対話がクライアントデバイスの人のユーザによる実際の対話であるかどうか、または、対話の指示がコンピュータ処理により生成されたのか、もしくは別様に人のユーザによる対話として誤って特定されたのかどうかを検証する、コンピュータで実施される方法およびシステムに関する。
コンテンツプロバイダ(または別の適切なコンテンツ検証システム)は、それがクライアントデバイス上で実行されているアプリケーション(第1のアプリケーションとも呼ばれる)内での表示のためにコンテンツプラットフォームに提供する(または表示のために別様に提供される)特定のコンテンツ項目との対話(第1の対話とも本明細書では呼ばれる)が、クライアントデバイスの人のユーザによる対話であり、人の対話を示す何らかの偽造されたものではないことを検証したいことがある。以下で要約され、本明細書全体でさらに詳しく説明されるような、本明細書において説明される技法は、オペレーティングシステムのセキュア/特権付きコード、ウェブブラウザ、および/またはコンテンツプロバイダ(または別の適切なコンテンツ検証システム)と協調する信用されるシステムアプリケーション(本明細書においてさらに説明されるような)などの、クライアントデバイスの信用されるソフトウェアプロセスに依存することによって、そのような対話の検証(本明細書ではクリック検証とも呼ばれる)を可能にする。
本明細書全体でさらに説明されるように、信用されるアプリケーション(これは、クライアントデバイスのオペレーティングシステムもしくはウェブブラウザの一部であることもあり、またはそれらとは別個であることもある)は、クリック検証トークンを生成するようにとの第1のアプリケーションからの要求を受信する。このクリック検証トークンは、たとえば、コンテンツ検証システムによって、アプリケーション内のコンテンツページ上での特定のコンテンツ項目(たとえば、コンテンツプロバイダによって提供されるサードパーティのコンテンツ項目またはコンテンツプラットフォームにより提供/公開されるオーガニックコンテンツ項目)との対話が実際の人のユーザによる対話であることを検証するために使用され得る。
このクリック検証トークンを生成する前に、信用されるアプリケーションは、オペレーティングシステム(またはウェブブラウザ)から取得されたものとして第1のアプリケーションによって特定される要求とともに含まれる何らかのデータが、本当にオペレーティングシステム(またはウェブブラウザ)から生成および/または取得されたかどうかを決定する。このデータは、第1の対話を記述するものとして第1のアプリケーションによって特定されるパラメータの第1のセットに対するデータと、パラメータの第1のセットに対するデータを使用して生成されるものとして第1のアプリケーションによって特定される第1のメッセージ認証コード(MAC)セットとを含み得る。信用されるアプリケーションは、このデータをオペレーティングシステム(またはウェブブラウザ)に提供し、オペレーティングシステムは、要求とともに含まれるパラメータの第1のセットに対するデータを使用して第2のMACセットを生成する。
第2のMACセットが第1のMACセットと同一ではない場合、オペレーティングシステム(またはウェブブラウザ)は、第1の対話が実際の人のユーザによる対話ではなく、アプリケーション(および/もしくはそのSDK)ならびに/またはコンテンツプラットフォームにエラーがあり得ると決定する。
一方、第2のMACセットが第1のMACセットと同一である場合、オペレーティングシステム(またはウェブブラウザ)は、第1の対話が実際の人のユーザによる対話であると結論付ける。この場合、オペレーティングシステム(またはウェブブラウザ)はまた、第1のMACセットが第2のMACセットと同一であり、したがって要求に含まれるデータが真正である(および偽造されていない/危険にさらされていない)ことを信用されるアプリケーションに示す。
第1のMACセットが第2のMACセットと同一であるという決定に応答して、信用されるアプリケーションは、要求に含まれるパラメータの第1のセットに対するデータを使用してクリック検証トークンを生成する。このトークンを生成する際、信用されるアプリケーションは、クリック検証トークンのペイロードに、(1)第1の対話を記述するパラメータの第1のセットに対するデータおよび/または(2)特定のコンテンツ項目を特定するデータを含める。
クリック検証トークンは続いて、第1の対話が実際の人のユーザによる対話であるかどうか、または、第1の対話が誤って生成されたおよび/もしくは偽造されたかどうかを検証するために、コンテンツプロバイダ(または別のコンテンツ検証システム)によって使用される。このクリック検証の一部として、コンテンツプロバイダは、クリック検証トークンが真正であるかどうかを確認する。真正ではない場合、コンテンツプロバイダは、第1の対話が実際の人のユーザによる対話ではなく、アプリケーション(および/もしくはそのSDK)ならびに/またはコンテンツプラットフォームにエラーがあり得ると結論付ける。クリック検証トークンが真正であるとコンテンツプロバイダが決定する場合、コンテンツプロバイダは、ルールエンジンまたは別の統計モデル(たとえば、教師ありまたは教師なし機械学習モデル)を使用して、第1の対話が実際の人のユーザによる対話であることをパラメータの第1のセットに対するデータが示すかどうかを決定する。この処理に基づいて、コンテンツプロバイダは、第1の対話が実際の人のユーザによる対話であるか、またはないかのいずれかの結論を出すことができる。第1の対話が実際の人のユーザによる対話ではないとコンテンツプロバイダが結論付けるとき、コンテンツプロバイダは、アプリケーション(および/もしくはそのSDK)ならびに/またはコンテンツプラットフォームにエラーがあり得ることを示すメッセージを、アプリケーションおよび/またはコンテンツプラットフォームに提供し得る。
上で説明された特徴および追加の特徴は、以下でより詳しく説明される。
図1は、クライアントデバイス上のアプリケーション内でアクセスされるコンテンツプラットフォーム内での表示のためにコンテンツが提供される、例示的な環境100である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどの、ネットワーク150を含む。ネットワーク150は、クライアントデバイス102、コンテンツプラットフォーム140、およびコンテンツプロバイダ130を接続する。例示的な環境100は、多くの異なるコンテンツプロバイダ130、コンテンツプラットフォーム140、およびクライアントデバイス102を含み得る。
クライアントデバイス102は、ネットワーク150を介してコンテンツを要求して受信することが可能な電子デバイスである。例示的なクライアントデバイス102には、パーソナルコンピュータ、モバイル通信デバイス、携帯情報端末、およびネットワーク150を介してデータを送信し受信することができる他のデバイスがある。クライアントデバイス102は通常、ネットワーク150を介したデータの送信および受信を容易にするための、ウェブブラウザなどのユーザアプリケーションを含むが、クライアントデバイス102により実行されるネイティブアプリケーションも、ネットワーク150を介したコンテンツの送信および受信を容易にすることができる。クライアントデバイス102において提示されるコンテンツの例には、ウェブページ、ワードプロセシング文書、portable document format (PDF)文書、画像、ビデオ、および検索結果ページがある。
コンテンツプラットフォーム140は、コンテンツの分配を可能にするコンピューティングプラットフォーム(たとえば、図3を参照して説明されるようなデータ処理装置など)である。例示的なコンテンツプラットフォーム140には、検索エンジン、ソーシャルメディアプラットフォーム、ニュースプラットフォーム、データアグリゲータプラットフォーム、または他のコンテンツ共有プラットフォームがある。各コンテンツプラットフォーム140は、コンテンツプラットフォームサービスプロバイダによって運営され得る。
コンテンツプラットフォーム140は、固有のコンテンツを公開して、それを利用可能にできる。たとえば、コンテンツプラットフォーム140は、固有のニュース記事を公開するニュースプラットフォームであり得る。コンテンツプラットフォーム140は、コンテンツプラットフォーム140の一部ではない1つまたは複数のコンテンツプロバイダ130により提供されるコンテンツも提示し得る。上の例では、ニュースプラットフォームは、1つまたは複数のコンテンツプロバイダ130により提供されるサードパーティのコンテンツも提示し得る。別の例として、コンテンツプラットフォーム140は、固有のコンテンツを何ら公開せず、様々なコンテンツプロバイダ130により提供されるサードパーティのコンテンツを集約して提示する、データアグリゲータプラットフォームであり得る。
本明細書において使用されるとき、コンテンツプロバイダ130は、データ処理装置(図3を参照して説明されるような)であってもよく、1つまたは複数のエンティティによって生成および/もしくは公開されたコンテンツを記憶し、コンテンツプラットフォーム140および/もしくはクライアントデバイス102からのコンテンツに対する要求に応答してこれらのエンティティにコンテンツを提供する、サーバ、リポジトリ、または他の記憶デバイスを含んでもよい。
クライアントデバイス102がアプリケーション、アプリケーションA104(ブラウザまたはネイティブアプリケーションなど)内のコンテンツプラットフォーム140によって提供されるコンテンツページにアクセスするとき、コンテンツページ上のスクリプトが、コンテンツプラットフォーム140の一部ではない1つまたは複数のコンテンツプロバイダ130からのコンテンツを要求する。コンテンツに対するこの要求に応答して、コンテンツプロバイダ130は、アプリケーション内でコンテンツ項目(たとえば、コンテンツ項目CI1 106またはコンテンツ項目CI2 108)として提示され得るサードパーティのコンテンツを提供する。
クライアントデバイス102は、コンテンツプロバイダ130によって提供される特定のコンテンツ項目との対話がユーザ対話であるかどうかを検証するために、コンテンツプロバイダ130と協調することができる。クライアントデバイス102およびコンテンツプロバイダ130がこの検証を協調して実行する技法が、以下で要約され、図2を参照してさらに詳しく説明される。
いくつかの実装形態では(図2を参照して説明されるように)、アプリケーション104は、アプリケーション104内のコンテンツページ上で提供されクライアントデバイスのディスプレイの特定の部分に表示されるコンテンツ項目CI1 106との対話がユーザ対話であるかどうかを確認するために使用される、クリック検証トークンを生成するように信用されるアプリケーションに要求する。本明細書において使用されるとき、信用されるアプリケーションは、デバイス上の安全な環境内で動作して何らかのコアデバイスサービス(オペレーティングシステム内の特権付き/カーネルコードによって実行されるデバイスサービスと同様の)を実行するアプリケーションである。いくつかの実装形態では、信用されるアプリケーション自体が、オペレーティングシステムもしくはウェブブラウザの一部であってもよく、または、オペレーティングシステムベンダー(またはウェブブラウザベンダー)によって実装および/もしくは公開される。
オペレーティングシステムと協調するこの信用されるアプリケーション(たとえば、デバイスドライバ110およびMAC生成器112などのソフトウェアコンポーネントを含む、オペレーティングシステム118内の特権付きコードまたは信用されるコード)(またはウェブブラウザ)は、クリック検証トークンを生成してこのトークンをアプリケーション104に提供する際に使用される。アプリケーション104は、このクリック検証トークンをコンテンツプロバイダ130に提供し、コンテンツプロバイダ130は次いで、対話がクライアントデバイス102の実際の人のユーザによる対話であることの検証を実行する際にこのクリック検証トークンを使用する。本明細書において使用されるとき、オペレーティングシステム内の特権付きコードまたは信用されるコードは、カーネルモードにおいてのみ実行されるオペレーティングシステムコード(すなわち、オペレーティングシステムによってのみ実行されることが可能であり、どのような他のユーザ、アプリケーション、またはエンティティによっても実行されることが可能ではないコード/命令)である。結果として、特権付きコードまたは信用されるコードは、他のアプリケーション/エンティティによる侵入を受けやすい可能性が低い。
いくつかの実装形態(図2を参照しても説明される)では、オペレーティングシステム118は(オペレーティングシステム118の一部であり得る、またはそれとは別個であり得る、信用されるアプリケーションの代わりに)、クリック検証トークンを生成して、このクリック検証トークンをアプリケーション104に提供する。
図1の上で参照された構成要素の各々の構造および/または動作が、図2を参照してさらに詳しく説明される。
図2は、エラーを検出し、第1のアプリケーションにおける表示のために提供された特定のコンテンツ項目との対話が実際の人のユーザによる対話であるかどうかを検証するための、例示的なプロセス200を示すスイムレーン図である。プロセス200の動作は、図1において説明され図示されるシステムの構成要素によって実行されるものとして以下で説明される。しかしながら、そのような説明は例示を目的とするものにすぎない。プロセス200の動作は、任意の適切なデバイスまたはシステム、たとえば、図3を参照して説明されるような任意の適切なデータ処理装置によって実行され得る。プロセス200の動作は、非一時的コンピュータ可読媒体に記憶されている命令としても実装され得る。
アプリケーションA104(以下の説明では第1のアプリケーションまたはアプリケーション104とも呼ばれる)が、コンテンツページをレンダリングする(202において)。いくつかの実装形態では、アプリケーション104がコンテンツページをレンダリングするとき、アプリケーション104は、アプリケーション104内での表示のために、コンテンツ項目CI1 106およびCI2 108を提供する。図1を参照して説明されるように、これらのコンテンツ項目のうちの1つまたは複数は、1つまたは複数のコンテンツプロバイダ130から取得されるサードパーティのコンテンツ項目であり得る。
クライアントデバイス102上でのアプリケーション104の実行の間に、クライアントデバイス102のオペレーティングシステム118は、CI1 106などの、表示されるコンテンツ項目とのクライアントデバイス102のユーザによる第1の対話を検出する(204において)。いくつかの実装形態では、ユーザによる第1の対話は、クライアントデバイスのディスプレイとの物理的なユーザの接触に対応する第1のユーザ活動およびディスプレイからの物理的なユーザの接触の解放に対応する第2のユーザ活動という、2つのユーザ活動事象からなる。しかしながら、第1の対話は、単一のユーザ活動(たとえば、ジェスチャなど)または2つより多くのユーザ活動であり得る。
いくつかの実装形態では、オペレーティングシステム118のデバイスドライバ110(たとえば、タッチスクリーン付きのデバイスではデバイスディスプレイドライバ、キーボード、マウス、またはトラックボール付きのデバイスではこれらのデバイスに対する対応するデバイスドライバ)は、たとえば、ディスプレイの一部のマウスクリック、タッチ感知ディスプレイの一部のタッチ(指またはスタイラスのような別の物体による)などの、クライアントデバイス102のディスプレイとのあらゆるユーザ対話を能動的に聴取して記録し得る。代替的に、デバイスドライバ110は、アプリケーションが、そのアプリケーションの実行の間にそのような対話を記録するための許可をデバイスドライバ110に与えたことに応答して、ディスプレイ上でのユーザ対話を聴取して記録することができる。
デバイスドライバ110は、ユーザによる第1の対話のためのパラメータの第1のセットに対するデータを取得する(206において)。いくつかの実装形態では、ユーザによる第1の対話を検出すると、デバイスドライバ110は、ユーザによる第1の対話を記述するパラメータのうちの1つまたは複数についての情報を記録する。そのようなパラメータの非限定的な例には、(1)ユーザ活動(たとえば、ディスプレイとの物理的なユーザの接触に対応する活動、ディスプレイからの物理的なユーザの接触の解放に対応する別の活動)の特定、(2)ユーザ活動に対応するクライアントデバイス102のディスプレイの位置(たとえば、ユーザ活動に対応するディスプレイ上のX-Y座標)、(3)活動を実行するために使用されるツール(たとえば、マウス、スタイラス、指)、(4)ユーザ活動がそこから受け取られたソース(たとえば、ディスプレイ/タッチスクリーン、マウス、ジェスチャ認識のためのカメラ)、および(5)ユーザ活動が実行された時間を特定するタイムスタンプ(たとえば、マイクロ秒またはミリ秒の精度の時間、タイムスタンプはユーザ活動の日付であってもよい)がある。
たとえば、第1の対話は、デバイス102のディスプレイとの物理的なユーザの接触(たとえば、画面のタッチ、ポインタがディスプレイの特定の点にあるときのマウスボタンの押下)に対応する第1のユーザ活動、およびディスプレイからの物理的なユーザの接触の解放(たとえば、画面のタッチの解放、ポインタがディスプレイの特定の点にあるときのマウスボタンの解放)という、2つのユーザ活動を含む。この例では、デバイスドライバ110は、第1のユーザ活動を記述するパラメータ(上で説明されたパラメータなど)の第1のセット(たとえば、1つまたは複数)に対するデータの第1のセットと、第2のユーザ活動を記述するパラメータの同じ第1のセットに対するデータの第2のセットとを記録する。
MAC生成器112は、パラメータの第1のセットに対するデータを使用して、第1のメッセージ認証コード(MAC)トークンセットを生成する(208において)。いくつかの実装形態では、第1のMCセットは、各ユーザ活動に対応する別個のMACを含む。2つの活動が第1の対話を構成する上の例を使用すると、MAC生成器112は、(1)第1のユーザ活動(たとえば、クライアントデバイスのディスプレイとの物理的なユーザの接触)に対応するパラメータの第1のセットに対するデータを使用して第1のMACを生成し、(2)第2のユーザ活動(たとえば、ディスプレイからの物理的なユーザの接触の解放に対応する第2のユーザ活動)に対応するパラメータの第1のセットに対するデータを使用して第2のMACを生成する。代替的に、第1のMACセットは、ユーザによる第1の対話を構成するすべての活動に対応する単一のMACを含み得る。
いくつかの実装形態では、MAC生成器112は、ハッシュベースメッセージ認証コード(HMAC: Hash-based Message Authentication Code)アルゴリズム(たとえば、HMAC-SHA256アルゴリズム)を使用して、第1のMACセットの中の各MACを生成する。いくつかの実装形態では、MAC生成器112は、オペレーティングシステム118の秘密暗号鍵(クライアントデバイス102内の安全な位置に記憶されている)を使用して、デバイスドライバ110によって取得されるパラメータの第1のセットに対するデータのHMACを生成する。代替的に、MAC生成器112は、HMACを生成するときに別の安全な暗号鍵を使用することができる。
たとえば、2つのユーザ活動が第1の対話を構成する場合、MAC生成器112は、(1)第1のユーザ活動に対応するパラメータの第1のセットに対するデータを使用して第1のHMAC(すなわち、第1のMAC)を生成し、(2)第2のユーザ活動に対応するパラメータの第1のセットに対するデータを使用して第2のHMAC(すなわち、第2のMAC)を生成する。代替的に、各ユーザ活動のために別個のトークンを生成する代わりに、MAC生成器112は、ユーザによる第1の対話を構成するユーザ活動の各々に対応するパラメータの第1のセットに対するデータを使用して、単一のHMAC(すなわち、MAC)を生成する。
代替的に、HMACを生成する代わりに、MAC生成器112は、他の対称的なまたは非対称的な暗号化アルゴリズムもしくは認証アルゴリズムを使用して、第1のユーザ対話を構成するユーザ活動のためのパラメータの第1のセットに対するデータを暗号化するかまたは別様に安全にする、1つまたは複数のトークンを生成することができる。
便宜的に、および簡潔にするために、以下の説明は、第1の対話が2つのユーザ活動から構成されることと、MAC生成器112が各ユーザ活動のためのパラメータの第1のセットに対するデータのために別個のHMAC(または別の暗号化もしくは認証技法を使用して生成される別個のトークン)を生成すると仮定する。しかしながら、上で説明されたように、第1の対話は1つまたは複数のユーザ活動から構成されてもよく、MAC生成器112は、ユーザ活動の各々のためのパラメータの第1のセットに対するデータを使用して別個のHMAC(または別の暗号化もしくは認証技法を使用して生成されるトークン)、または、すべてのユーザ活動のためのパラメータの第1のセットに対するデータのための単一のHMAC(または別の暗号化もしくは認証技法を使用して生成されるトークン)を生成することができる。
オペレーティングシステム118は、初期証明データをアプリケーション104に送信する(210において)。いくつかの実装形態では、オペレーティングシステム118は、動作204~208において取得および/または処理された1つまたは複数のデータ項目を初期証明データへとパッケージ化する。したがって、初期証明データは、(1)デバイスドライバ110により取得されるパラメータの第1のセットに対するデータおよび/または(2)MAC生成器112により生成される第1のMACセットを含み得る。初期証明データの中の各データ項目は、別個のデータ構造に記憶されるか、または、単一のデータ構造において初期証明データの他のデータ項目と一緒に記憶されるかのいずれかであり得る。いずれの場合でも、別個のデータ構造または単一のデータ構造の集合体は、やはり初期証明データと呼ばれる。
アプリケーション104は、オペレーティングシステム118により送信される初期証明データを受信する(212において)。いくつかの実装形態では、アプリケーション104は、初期証明データを、この場合はCI1 106である特定のコンテンツ項目との第1の対話と関連付ける。たとえば、アプリケーション104は、(1)特定のコンテンツ項目を特定するデータおよび(2)特定のコンテンツ項目とのユーザによる第1の対話のための初期証明データを含む、データ構造を記憶することができる。
クリック検証トークンを生成するようにとの要求を、アプリケーションA104はアプリケーションB160(第2のアプリケーションまたはアプリケーション160とも呼ばれる)に送信し、アプリケーションB160はアプリケーションA104から受信する(214において)。本明細書において使用されるとき、クリック検証トークンは、アプリケーションにおける表示のために提供される特定のコンテンツ項目との対話(たとえば、それがクライアントデバイス102のディスプレイのマウスクリックに基づくか、指またはスタイラスのタッチに基づくかにかかわらず)がクライアントデバイスの実際の人のユーザによる対話であるかどうかを確認するために使用される、デジタル署名されたトークンである。クリック検証トークンの生成に関する詳細は、動作224を参照して説明される。いくつかの実装形態では、アプリケーションB160は、アプリケーションA104およびオペレーティングシステム118とは別個の、信用されるアプリケーション(本明細書において説明されるような)である。他の実装形態では、アプリケーションB160は、オペレーティングシステム118の一部であってもよく、または、オペレーティングシステムベンダーによって実装および/もしくは公開される。
いくつかの実装形態では、ネイティブアプリケーションであり得るアプリケーション104は、アプリケーション104に要求を生成させるソフトウェア開発キット(SDK)またはアプリケーションプログラミングインターフェース(API)を含み得る。アプリケーション104がウェブブラウザである実装形態では、ページ上で実行されるスクリプトが要求を生成することができる。
いくつかの実装形態では、クリック検証トークンを生成するようにとの要求は、オペレーティングシステム118から取得されるものとしてアプリケーション104によって特定される初期証明データを含む。要求はまた、特定のコンテンツ項目CI1 106を特定するデータも含み得る。
アプリケーション104が要求とともに提供するこの初期証明データは、(1)第1の対話を記述するものとしてアプリケーション104により特定されるパラメータの第1のセットに対するデータおよび(2)パラメータの第1のセットに対するデータを使用して生成されるものとしてアプリケーション104により特定される第1のMACセットを含み得る。要求に含まれるパラメータの第1のセットに対するデータは、第1のユーザ活動に対応するものとして特定されるパラメータの第1のセットに対するデータと、第2のユーザ活動に対応するものとして特定されるパラメータの第1のセットに対するデータとを含み得る。いくつかの実装形態では、初期証明データは、アレイ(または別の適切なデータ構造)として提供され得る。
アプリケーション104によって要求に含められる初期証明データは、動作210においてオペレーティングシステム118がアプリケーション104に送信する第1のユーザ対話に対応する初期証明データであり得る。いくつかの実装形態では、データの2つのセットは同一である。代替的な実装形態では、データの2つのセットは実質的に同一であり得るが、変換されたデータはそれでも元のデータを表す。たとえば、何らかの変換が適用されることがあり、たとえば、要求に含まれる初期証明データにおけるX-Y座標は、画面の絶対座標にあり得るが、オペレーティングシステム118によって収集されるX-Y座標は、アプリケーションにとってより意味のある何らかの他の座標系にあり得る。
しかしながら、アプリケーション104はまた、ユーザによる第1の対話のために(動作210において)生成された初期証明データとは異なる初期証明データの異なるセットを提供し得る。これは、アプリケーション104および/またはコンテンツプラットフォーム140におけるエラーによるものであり得る。いくつかの事例では、これは、悪意のあるエンティティ/アプリケーションがクリック検証を危険にさらそうとしていることも示し得る。
いくつかの実装形態では、アプリケーション104から要求を受信すると、アプリケーションB160は、アプリケーション104から受信された要求に含まれる初期証明データが実際にオペレーティングシステム118によって生成/取得されたことを確証した後で、クリック検証トークンを生成する。この検証により、アプリケーション104またはコンテンツプラットフォーム140においてエラーがないことが確実になり、クリック検証を不適切に取得するように設計された偽造データまたは無効なデータを含めようとするあらゆる悪意のあるエンティティ/アプリケーションの試みが特定される。いくつかの実装形態では、アプリケーションB160による検証要求は、要求において受信される初期証明データがオペレーティングシステム118によって生成されることを確認するようにオペレーティングシステム118に要求する。初期証明データを検証するようにとの要求とともに、アプリケーションB160は、(動作214において)アプリケーション104から受信された要求に含まれる初期証明データをオペレーティングシステム118に送信する。
動作214に応答して、オペレーティングシステム118は、(動作214において)アプリケーション104から受信された要求に含まれる初期証明データがオペレーティングシステム118によって生成および/または取得されるかどうかを検証する(218、220において)。いくつかの実装形態では、オペレーティングシステム118は、以下の段落において説明されるように、この検証を2段階で実行する。
まず、オペレーティングシステム118は、動作214において提供された初期証明データに含まれるパラメータの第1のセットに対するデータを使用して、第2のMACセットを生成する。いくつかの実装形態では、MAC生成器112は、動作214において提供される初期証明データに含まれるパラメータの第1のセットに対するデータを使用して(動作208を参照して説明されたのと同じ方式で)、HMACのセット(または適切な暗号化もしくは認証アルゴリズムを使用して生成される別のセキュアトークン)を生成する。したがって、MAC生成器112は、(1)第1のユーザ活動に対応するものとしてアプリケーション104によって特定される要求に含まれるパラメータの第1のセットに対するデータを使用して適切な暗号化または認証アルゴリズム(すなわち、第3のMAC)を使用して生成される第3のHMACまたは別のセキュアトークン、および(2)第2のユーザ活動に対応するものとしてアプリケーション104によって特定される要求に含まれるパラメータの第1のセットに対する適切な暗号化または認証アルゴリズム(すなわち、第4のMAC)を使用して生成される第4のHMACまたは別のセキュアトークンを生成することができる。MAC生成器112は、(動作208において生成される)第1のMACセットを生成する際に使用されるのと同じアルゴリズムおよび暗号鍵を使用して、HMAC(または他の適切なセキュアトークン)を生成する。
第2に、オペレーティングシステム118は、第1のMACセットが第2のMACセットと同一であるかどうかを決定する。この比較は、第1のMACセットと第2のMACセットの各々が、別個のユーザ活動に各々対応する2つのMACを含む、上で説明された例を使用して示される。したがって、上の例では、アプリケーション104によって提供される初期証明データに含まれる第1のMACセットは、(1)第1のユーザ活動に対応するものとしてアプリケーション104によって特定される第1のMAC、および(2)第2のユーザ活動に対応するものとしてアプリケーション104によって特定される第2のMACを含む。この例を続けると、第2のMACセットは、(1)第1のユーザ活動に対応するものとして特定される要求に含まれるパラメータの第1のセットに対するデータを使用して生成される第3のMAC、および(2)第2のユーザ活動に対応するものとして特定される要求に含まれるパラメータの第1のセットに対するデータを使用して生成される第4のMACを含む。オペレーティングシステム118は、(1)第1のMACが第3のMACと同一であるかどうか、および(2)第2のMACが第4のMACと同一であるかどうかを決定することによって、第1のMACセットが第2のMACセットと同一であるかどうかを決定する。
第1のMACセットが第2のMACセットと同一である(たとえば、第1のMACが第3のMACと同一であり第2のMACが第4のMACと同一である)とオペレーティングシステムが決定する場合、オペレーティングシステム118は、初期証明データが有効である(すなわち、初期証明データがオペレーティングシステム118によって生成された)と結論付け、第1のMACセットが第2のMACセットと同一であることを明示する指示をアプリケーションB160に提供する。一方、第1のMACセットが第2のMACセットと同一ではない(たとえば、第1のMACが第3のMACと同一ではない、および/または第2のMACが第4のMACと同一ではない)とオペレーティングシステムが決定する場合、オペレーティングシステム118は、初期証明データが無効である(すなわち、初期証明データがオペレーティングシステム118によって生成されなかった)と結論付け、第1のMACセットが第2のMACセットと同一ではないことを明示する指示をアプリケーションB160に提供する。
いくつかの実装形態では、(動作208、218、および220において)MACセットを生成する代わりに、オペレーティングシステム118は、初期証明データ(または暗号学的ハッシュ関数を使用して生成されるそれらのcryptohash)の一部として含まれるすべてのデータを記憶することができる。オペレーティングシステム118は、このデータ(またはそのcryptohash)をアプリケーション104に送信する。次いで、アプリケーションB160が初期証明データの検証を要求するとき(動作216において)、オペレーティングシステム118は、この受信されたデータ(またはそのcryptohash)を保存されている初期証明データ(またはそのcryptohash)と比較することによって、受信された初期証明データが本当にオペレーティングシステムによって生成されたことを検証することができる。
第1のMACセットが第2のMACセットと同一であるかどうかを明示する指示をオペレーティングシステム118から受信したことに応答して、アプリケーションB160のトークン生成器114は、クリック検証トークンを生成する(224において)。いくつかの実装形態では、トークン生成器114によって生成されるクリック検証トークンは、データのセットを含み得る証明トークンであり、これは、少なくともユーザ識別子およびペイロード、ならびにいくつかの事例では、デバイス完全性トークンも含む(言い換えると、デバイス完全性トークンは、ペイロードに含まれていてもよいが、含まれる必要はない)。証明トークンはまた、データのこのセットのデジタル署名を含む。以下の段落は、データのセットの中の各データ項目およびデータのこのセットのデジタル署名を説明する。
証明トークンに含まれ得るユーザ識別子は、クライアントデバイス102の公開鍵を含む。たとえば、クライアントデバイス102は、デバイス秘密鍵およびデバイス公開鍵を含む、暗号鍵の1つまたは複数のペアを生成および/または維持することができる。デバイス公開鍵は、デバイス秘密鍵に対応し、数学的にそれと結びついている。秘密鍵を使用してデジタル署名されるデータは、対応する公開鍵を使用することによってのみ検証され得る。同様に、公開鍵を使用して暗号化されるデータは、対応する秘密鍵を使用することによってのみ復号され得る。
証明トークンに含まれ得るペイロードは、動作214の要求に含まれる次のデータ、すなわち、(1)第1の対話を記述するパラメータの第1のセットに対するデータ、および(2)特定のコンテンツ項目を特定するデータを含む。特定のコンテンツ項目を特定するデータおよび属性のうちの1つまたは複数に対するデータを含む、データ項目の各々は、アレイ(または別のデータ構造)としてペイロードに含められてもよく、アレイの各場所は別個の属性に対するデータを含む。第1のMACセットが第2のMACセットと同一ではないことをオペレーティングシステム118が決定する事例では、アプリケーションB160は、第1のMACセットが第2のMACセットと同一ではないことを明示するオペレーティングシステム118による指示を含むメッセージをペイロードに含めるだけでもよい。いくつかの事例では、証明のペイロードは、たとえば公開-秘密暗号鍵技法を使用して暗号化され得る。たとえば、ペイロードは、コンテンツ検証システムの秘密鍵を使用してのみ復号され得る、コンテンツ検証システムの公開鍵を用いて署名され得る。
証明トークンに含まれ得る完全性トークンは、要求120が信用されるクライアントデバイス102によって送信されたかどうかをエンティティが決定することを可能にする、デバイス完全性トークンを含む。デバイス完全性トークンは、クライアントデバイスの不正な信号を評価してその評価に基づいて信用性のレベルをクライアントデバイスに割り当てる、サードパーティのデバイス完全性システムによって発行され得る。クライアントデバイス102のためのデバイス完全性トークンは、(1)デバイス完全性トークンが生成された時間におけるクライアントデバイス102の信用性(または完全性)のレベルを示す評決、(2)デバイス完全性トークンが生成された時間を示すデバイス完全性トークン作成時間、および(3)クライアントデバイス102の固有の識別子(これは、たとえば、クライアントデバイスのデバイス公開鍵またはその派生物であり得る)を含み得る。デバイス完全性トークンは、デバイス完全性トークンにデータのデジタル署名を含めることもできる。デジタル署名は、デバイス完全性システムの秘密鍵を使用して生成され得る。
たとえば、デバイス完全性システムは、システムが秘密に維持している秘密鍵を使用して、データに署名することができる。デバイス完全性トークンを受信するエンティティは、デバイス完全性トークンの署名を検証するために、デバイス完全性システムの公開鍵を使用することができる。デバイス完全性トークンと証明トークンの両方に、クライアントデバイス102のためのデバイス公開鍵を含めることで、これらの2つのトークンが一緒に結びつく。言い換えると、デバイス完全性トークンにクライアントデバイス102のデバイス公開鍵を含めることによって、証明トークンの受信者は、デバイス完全性トークンがそのクライアントデバイス102のために生成されたと決定することができる。これにより、他の関係者が、エミュレータまたは危険にさらされたクライアントデバイスからの要求に、信用されるデバイスのためのデバイス完全性トークンを含めることが可能になることが防がれる。
証明トークンとともに含まれ得るデジタル署名は、データの上で説明されたセット(またはその何らかの変形)のデジタル署名であり得る。このデジタル署名は、クライアントデバイス102のオペレーティングシステム118によって安全にかつ秘密に維持され得るデバイス秘密鍵を使用して生成される。たとえば、デジタル署名は、ペイロードのデジタル署名(暗号化されているか、または暗号化されていないかのいずれか)、ユーザ識別子(たとえば、デバイス公開鍵)、および完全性トークンであり得る。いくつかの実装形態では、オペレーティングシステム118は、楕円曲線デジタル署名アルゴリズム(ECDSA)を使用してデジタル署名を生成するが、RSAなどの他の署名技法も使用され得る。
いくつかの実装形態では、証明トークンの代わりに、別のタイプのセキュアトークンもトークン生成器114によって生成されてもよく、これも、初期証明のすべて/サブセットの通信を安全にするために使用されてもよい。たとえば、このデータは、サードパーティの完全性システムの秘密鍵を使用してデジタル署名され得る。コンテンツプロバイダ130などの、クリック検証トークンを続いて受信するエンティティは、サードパーティの完全性システムからの対応する公開鍵を要求し、次いで、この鍵を使用して署名および属性データを検証することができる。
プロセス200に戻ると、アプリケーションB160は、生成されたクリック検証トークンをアプリケーションA104に提供する。
アプリケーションA104は、クリック検証トークンをコンテンツプロバイダ130(または別の適切なコンテンツ検証システム)に送信する。このクリック検証トークンは、動作222においてオペレーティングシステム118によって生成されるトークンであってもよく、またはこれは、アプリケーション104がクリック検証トークンとして特定する別のデータ項目であってもよい。
クリック検証トークンを受信すると、コンテンツプロバイダ130(または別の適切なコンテンツ検証システム)が、クリック検証トークンを確認する(224において)。いくつかの実装形態では、この確認の一部として、コンテンツプロバイダ130は、(ペイロードが暗号化されているシナリオを想定して)クリック検証トークンのペイロードを復号して、パラメータの第1のセットに対するデータを取得する。
証明トークンがクリック検証トークンとして使用される実装形態では、コンテンツプロバイダ130は、証明トークンに含まれるデバイス公開鍵を使用して、トークンに含まれるデジタル署名を確認する。そのような実装形態では、コンテンツプロバイダ130は、デバイスの公開鍵を使用して、復号されたペイロード、デバイス公開鍵、およびデバイス完全性トークンに含まれるデータ項目を使用してデジタル署名を生成し、この生成されたデジタル署名を証明トークンに含まれるデジタル署名と比較する。比較によりデジタル署名が同一であることが明らかにならない場合、コンテンツプロバイダ130は、第1の対話がクライアントデバイス102のユーザによる対話ではないと結論付ける。そのような事例では、コンテンツプロバイダ130は、アプリケーション104(および/もしくはそのSDK)ならびに/またはコンテンツプラットフォーム140においてエラーがあり得ることを示すメッセージをアプリケーション104に送信することができる。一方、比較によりデジタル署名が同一であることが明らかになる場合、コンテンツプロバイダ130は、証明トークンのペイロードに含まれる第1の対話を記述するパラメータの第1のセットに対するデータを取得し、クリック検証を続ける。
いくつかの実装形態では、証明トークンが署名されたデバイス完全性トークンを含む場合、コンテンツプロバイダ130は、適切なデバイス完全性システムと対話して、システムの公開鍵(上で説明されたような)を取得することができる。コンテンツプロバイダ130は、デバイス完全性トークンにおけるデジタル署名を検証することによって、デバイス完全性トークンが本当にデバイス完全性システムによって作成され作成後に改変されなかったことを検証するために、この公開鍵を使用する。デバイス完全性トークンにおけるデジタル署名が、取得された公開鍵を使用して検証に成功した場合、および、デバイスが信用できることを、検証されたデバイス完全性トークンに存在するデバイス完全性データが示す場合、コンテンツプロバイダ130は、そのコンテンツ確認を続ける。しかしながら、取得された公開鍵を使用してデバイス完全性トークンを検証できない場合、および/または、トークンを検証して取得されたデバイス完全性データが、デバイスが信用できないことを示す場合、コンテンツプロバイダ130は、あらゆるさらなるコンテンツ確認を止めることができる。そのような事例では、コンテンツプロバイダ130はまた、コンテンツ確認のために使用されるべきデジタル署名されたトークンを送信したクライアントデバイス102にエラーがあり得ることを示すメッセージをアプリケーション104に送信することができる。
クリック検証の一部として、コンテンツプロバイダ130は、第1の対話を記述し証明トークンに含まれるパラメータの第1のセットに対するデータに基づいて、第1の対話がユーザによる対話であるかどうかを検証する。いくつかの実装形態では、コンテンツプロバイダ130は、第1の対話がユーザによる対話であることをパラメータの第1のセットに対するデータが示すかどうかを評価するための、ルールのセットを記憶するルールエンジンを含み得る。そのようなルールの非限定的な例が、以下の段落において与えられる。
クリック検証ルールの1つの例には、ユーザ活動に対応するデバイスのディスプレイの位置(たとえば、デバイスのディスプレイのX-Y座標、アプリケーション104上で示されるコンテンツページ内の具体的なコンテンツスロット)が、アプリケーション104内で表示されるようなサードパーティのコンテンツ項目CI1 106の位置(たとえば、デバイスのディスプレイの一部分を明示する座標範囲、特定のコンテンツ項目CI1 106にコンテンツプラットフォーム140によって割り振られるアプリケーション104の一部分)に対応する/それと一致するかどうかを決定することを含む。そうである場合、第1の対話は実際の人のユーザによるものであった可能性が高く、そうではない場合、第1の対話はコンテンツ項目106との実際の人のユーザによるものではなかった可能性が高い。別の例は、2つの事象(たとえば、指が触れることと指が離れること)のX-Y座標が互いに大きく異なることであり、これは、コンテンツ項目とのユーザ対話がクリックではなくドラッグである可能性がより高いことを示し得る。別の例は、2つの事象(たとえば、指が触れることと指が離れること)のタイムスタンプの間に長い時間、たとえば1分以上が経過し得ることであり、これは、記録された対話が、ユーザがコンテンツ項目をクリックしたことによるものではなく、タッチスクリーン上に何らかの物体(たとえば、鉛筆)があったことによるものであり得ることを示し得る。別の例は、2つの事象(たとえば、指が触れることと指が離れること)が時間順になっていないこと、たとえば、指が離れる事象のタイムスタンプが指が触れる事象のタイムスタンプより古いことである。そうである場合、第1の対話は実際の人のユーザによるものではなかった可能性が高く、そうではない場合、第1の対話はコンテンツ項目106との実際の人のユーザによるものであった可能性が高い。
クリック検証ルールの別の例は、ユーザ活動を実行するために使用されるツールが、ユーザ活動がそこから受け取られたソースと矛盾しない(たとえば、一致する)かどうかを決定することを含む。したがって、たとえば、ユーザ活動を実行するためにマウスが使用されるのに、ユーザ活動のソースがタッチスクリーンである場合、これは矛盾を示す(予想されるツールはスタイラスまたは指のいずれかであるので)。そして、そのような矛盾は、第1の対話が実際の人のユーザによるものではない可能性が高いことを示す。
クリック検証ルールの別の例は、ユーザ活動が古いかどうかを決定することを含む。ユーザ活動は、タイムスタンプと、クリック検証トークンを検証するようにとの要求が(動作224において)受信される時間との間の差が、古さの閾値(これは、受信されたタイムスタンプがそれを超えると古いと見なされ得る時間長を明示する、所定の閾値であり得る)を満足する(たとえば、満たす、または超える)かどうかに基づいて、古いと見なされ得る。したがって、古さの閾値が2分である場合、2:14:15という受信されたタイムスタンプは、クリック検証トークンを検証するようにとの要求が受信される時間がそのタイムスタンプの時間より2分以上後(たとえば、2:17:10)である場合、古いと見なされる。古いユーザ活動は、第1の対話が実際の人のユーザにより生成された可能性が低いことを示し得る。逆に、古くないユーザ活動は、第1の対話が実際の人のユーザによるものであった可能性が高いことを示し得る。
上のルールのうちの1つまたは複数(ならびに、第1の対話のためのパラメータの第1のセットに対するデータ、および/またはコンテンツ項目を特定するデータに基づく、他の適切なルール)が、第1の対話が実際の人のユーザによる対話であった可能性を明示するスコアを取得するために組み合わせられ得る。いくつかの実装形態では、ルールの各々は重みを割り当てられてもよく、ルールエンジンはスコアを各ルールに割り当てる。ルールエンジンは、各ルールの加重スコアを組み合わせる(たとえば、加算する)ことによって(たとえば、各ルールに対する重みをそのルールのために生成された対応するスコアと乗じることによって)、集計スコアを生成する。この集計スコアが特定の閾値(たとえば、所定の閾値)を満足する(たとえば、満たす、または超える)場合、ルールエンジンは、第1の対話が実際の人のユーザによる対話であると決定し、そうではない場合、ルールエンジンは、第1の対話が実際の人のユーザによる対話ではないと決定する。
いくつかの実装形態では、第1の対話が実際の人のユーザによる対話であることを、第1の対話のためのパラメータの第1のセットに対するデータが示すかどうかを決定するために、ルールエンジンの代わりに、たとえば(教師ありまたは教師なし)機械学習モデルなどの統計モデルが使用され得る。たとえば、教師あり機械学習モデルは、複数のユーザ対話のための訓練データを使用して訓練されるとこれを行うように訓練されてもよく、その訓練データは、各対話のためのパラメータのセットに対するデータ、および訓練データにおける特定の対話のためのパラメータデータが実際の人のユーザによる対話であるか、またはないかを示すラベルの対応するセットを含む。
第1の対話が実際の人のユーザによる対話であることをコンテンツプロバイダ130(または別のコンテンツ検証システム)が決定する場合、コンテンツプロバイダ130(または別のコンテンツ検証システム)は、第1の対話が実際の人のユーザによる対話であることを示すメッセージを生成する。一方、第1の対話が実際の人のユーザによる対話ではないことをコンテンツプロバイダ130(または別のコンテンツ検証システム)が決定する場合、コンテンツプロバイダ130(または別のコンテンツ検証システム)は、第1の対話が実際の人のユーザによる対話ではないことを示すメッセージを生成する。この事例では、コンテンツプロバイダ130は、アプリケーション(および/もしくはそのSDK)ならびに/またはコンテンツプラットフォームにエラーがあり得ることも示し得る。
上で説明されたプロセスフローおよびシステムの実装形態では、アプリケーションB160がクリック検証トークンを生成する。代替的な実装形態では、(アプリケーションB160ではなく)オペレーティングシステム118がクリック検証トークンを生成することができる。そのような実装形態では、オペレーティングシステム118が動作204および206を実行する間、オペレーティングシステム118は、第1のユーザ対話のために取得されたパラメータの第1のセットに対するデータを(HMACまたは他の暗号化アルゴリズムを使用して)アプリケーションA104に安全に送信するために、動作208および210を実行する必要がない。同様に、初期証明データがオペレーティングシステム118によって生成されるかどうかを検証する動作(すなわち、動作216~220)も実行される必要がない。代わりに、オペレーティングシステム118が、(動作222を参照して説明されたのと同じ方式で)クリック検証トークンを直接生成し、クリック検証トークンのペイロードに、第1の対話のためのパラメータの第1のセットに対する取得/生成されたデータを含めることができる。そのような実装形態では、トークン生成器114は、オペレーティングシステム118内に含まれ、クリック検証トークンを生成する際にオペレーティングシステム118によって使用される。図2を参照して説明される他の動作はそれでも、同じエンティティによってこの実装形態において実行され得る。
別の代替的な実装形態では、アプリケーションB160はオペレーティングシステム118の一部である。そのような実装形態では、先行する段落において説明された実装形態と同様に、オペレーティングシステム118が動作204および206を実行する間、オペレーティングシステム118は、第1のユーザ対話のために取得されたパラメータの第1のセットに対するデータを(HMACまたは他の暗号化アルゴリズムを使用して)アプリケーションA104に安全に送信するために、動作208および210を実行する必要がない。同様に、初期証明データがオペレーティングシステム118によって生成されるかどうかを検証する動作(すなわち、動作216~220)も実行される必要がない。代わりに、アプリケーションB160(これはこの実装形態ではオペレーティングシステム118の一部である)が、(動作222を参照して説明されたのと同じ方式で)クリック検証トークンを直接生成し、クリック検証トークンのペイロードに、第1の対話のためのパラメータの第1のセットに対する取得/生成されたデータを含めることができる。図2を参照して説明される他の動作はそれでも、同じエンティティによってこの実装形態において実行され得る。
別の代替的な実装形態では、オペレーティングシステム118(それが、オペレーティングシステム118に含まれ得るアプリケーションB160であっても、またはオペレーティングシステム118の別の構成要素であっても)が、クリック検証トークンを生成することができる。この実装形態では、動作204~212は、図2を参照して上で説明されたように実行される。その上、動作214に対して、アプリケーションA104は、オペレーティングシステム118からクリック検証トークンを要求し、そしてオペレーティングシステム118が、初期証明データの確認(動作218および220を参照して説明されるような)を実行する。言い換えると、アプリケーションB160に初期証明データをオペレーティングシステム118へ送信させる動作216は、この実装形態では実行されてもよいが、実行される必要はない。その上、この実装形態では、オペレーティングシステム118は、(動作222を参照して説明されたのと同じ方式で)クリック検証トークンを生成し、クリック検証トークンのペイロードに、第1の対話のためのパラメータの第1のセットに対するデータを含める。言い換えると、トークン生成器114は、この実装形態ではオペレーティングシステム118内に含まれ、クリック検証トークンを生成する際にオペレーティングシステム118によって使用される。図2を参照して説明される他の動作はそれでも、同じエンティティによってこの実装形態において実行され得る。
いくつかの実装形態では、オペレーティングシステムの代わりに、ウェブブラウザが、図2を参照して説明されるプロセスにおいてオペレーティングシステム118によって実行される動作を実行する。プロセス200の動作の簡単な概要は次のように説明され、そこではオペレーティングシステム118の動作はウェブブラウザによって実行される。
プロセスは、コンテンツページをレンダリングするためにウェブブラウザが使用されることで開始する。この場合、コンテンツページをレンダリングすると/レンダリングする間、スクリプト(たとえば、Javascript)が実行し、ブラウザのネイティブコードに初期証明データを収集するように要求する。代替的に、ウェブブラウザのネイティブコードが、アプリケーション104によるプロンプトなしで、デバイスディスプレイとのユーザ対話(たとえば、タッチスクリーンのタッチ、ディスプレイのある部分のマウスクリック)を検出すると、そのような対話の処理を自動的に開始する。ブラウザのネイティブコードは、ブラウザによってレンダリングされるウェブページ上で実行するスクリプトが有しない特権を有し、一般に、どのようなスクリプトでもブラウザのネイティブコードに侵入するのは非常に難しい。
ブラウザのネイティブコードは次いで(単独で、またはオペレーティングシステム118と協調して)、第1の対話を検出すること、および第1の対話を記述するパラメータの第1のセットを取得することという動作を実行する。
ブラウザのネイティブコードは、オペレーティングシステム118のデバイスドライバ110と対話して、第1の対話を検出し、第1の対話を記述するパラメータの第1のセットを取得する(動作204および206のように)。MAC生成器112を含み得るブラウザのネイティブコードは、第1のMACセットを生成することができる(動作208を参照して説明されたように)。ブラウザは、第1のMACセットを生成するためにMAC生成器112によって使用される暗号鍵を、安全な位置に記憶する。第1のMACセットを含む初期証明データを、ブラウザのネイティブコードはアプリケーション104に送信し、アプリケーション104は受信する(動作210および212のように)。
ブラウザにおいて実行されるスクリプトはクリック検証トークンを生成するようにアプリケーションB160に要求し、この要求は初期証明データを含み得る(動作214を参照して説明されたように)。アプリケーションB160は、ウェブブラウザとは別個の信用されるアプリケーションであってもよく、または代替的に、アプリケーションB160は、ウェブブラウザの一部であってもよい。いずれの場合でも、アプリケーションB160は、ウェブブラウザが初期証明データを生成したかどうかを検証するようにウェブブラウザに要求する(動作218および220において同様の動作をオペレーティングシステム118が実行したのと実質的に同じ方法で)。この検証に基づいて、ウェブブラウザの一部であり得る、またはそれとは別個であり得る、アプリケーションB160は、クリック検証トークンを生成することができる(動作222を参照して説明されたのと実質的に同じ方法で)。アプリケーションBは次いで、生成されたクリック検証トークンをアプリケーションA104に返す。いくつかの実装形態では、生成されたクリック検証トークンをアプリケーションA104に返す代わりに、アプリケーションB160は、生成されたクリック検証トークンをHTTPヘッダに直接挿入することができる。これにより、生成されたクリック検証トークンを呼び出し側のスクリプトが見ることが防がれ、そしてこれにより、あらゆるさらなるセキュリティ問題(たとえば、トークンを危険にさらそうとするスクリプトまたは任意の他のエンティティによるさらなる試み)が防がれ、プライバシー上の利点が生まれる(たとえば、クリック検証トークンに含まれるデータが容易にアクセス可能になることが防がれる)。アプリケーションA104は、生成されたクリック検証トークンをコンテンツプロバイダ130(または別のコンテンツ検証システム)に提供し、コンテンツプロバイダ130が次いで、クリック検証トークンを確認する(動作224を参照して説明されたように)。
図3は、上で説明された動作を実行するために使用され得る例示的なコンピュータシステム300のブロック図である。システム300は、プロセッサ310、メモリ320、記憶デバイス330、および入力/出力デバイス340を含む。構成要素310、320、330、および340の各々は、たとえばシステムバス350を使用して相互接続され得る。プロセッサ310は、システム300内での実行のための命令を処理することが可能である。一実装形態では、プロセッサ310はシングルスレッドプロセッサである。別の実装形態では、プロセッサ310はマルチスレッドプロセッサである。プロセッサ310は、メモリ320に、または記憶デバイス330に記憶されている命令を処理することが可能である。
メモリ320は、システム300内の情報を記憶する。一実装形態では、メモリ320はコンピュータ可読媒体である。一実装形態では、メモリ320は揮発性メモリユニットである。別の実装形態では、メモリ320は不揮発性メモリユニットである。
記憶デバイス330は、システム300に大容量記憶を提供することが可能である。一実装形態では、記憶デバイス330はコンピュータ可読媒体である。様々な異なる実装形態において、記憶デバイス330は、たとえば、ハードディスクデバイス、光学ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウドストレージデバイス)によりネットワークを介して共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
入力/出力デバイス340は、システム300のための入力/出力動作を提供する。一実装形態では、入力/出力デバイス340は、ネットワークインターフェースデバイス、たとえばイーサネットカード、シリアル通信デバイス、たとえばRS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入力/出力デバイスは、入力データを受信して出力データを他の入力/出力デバイス、たとえばキーボード、プリンタ、および表示デバイス360に送信するように構成される、ドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどの、他の実装形態も使用され得る。
例示的な処理システムが図3において説明されているが、本主題の実装形態および本明細書において説明される機能的な動作は、他のタイプのデジタル電子回路において、または、本明細書において開示される構造およびそれらの構造的な均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、または、それらの1つまたは複数の組合せにおいて実装され得る。
媒体は必ずしもファイルに相当しない。媒体は、他の文書を保持するファイルの一部分に、対象の文書に専用の単一のファイルに、または複数の協調したファイルに記憶され得る。
本明細書において説明される主題および動作の実施形態は、デジタル電子回路で、または、本明細書において開示される構造およびそれらの構造的な均等物を含む、コンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらの1つまたは複数の組合せにおいて実装され得る。本明細書において説明される主題の実施形態は、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、コンピュータ記憶媒体(または複数の媒体)上に符号化される1つまたは複数のコンピュータプログラム、すなわち、コンピュータプログラム命令の1つまたは複数のモジュールとして、実装され得る。代替的に、または追加で、プログラム命令は、データ処理装置による実行のための適切な受信機装置への送信のために情報を符号化するために生成される、人工的に生成される伝搬信号、たとえば、機械で生成される電気的な、光学的な、または電磁的な信号に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらの1つまたは複数の組合せであってもよく、またはそれらに含まれてもよい。その上、コンピュータ記憶媒体は伝播信号ではないが、コンピュータ記憶媒体は、人工的に生成される伝播信号に符号化されるコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であってもよく、またはそれらに含まれてもよい。
本明細書において説明される動作は、1つまたは複数のコンピュータ可読記憶デバイスに記憶され、または他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実施され得る。
「データ処理装置」という用語は、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または、前述のものの複数もしくは組合せを例として含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置はまた、ハードウェアに加えて、対象のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらの1つまたは複数の組合せを構成するコードを含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続型言語を含む、任意の形式のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含めて、任意の形式で展開されてもよい。コンピュータプログラムは、ファイルシステムの中のファイルに相当し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータを保持するファイルの一部分(たとえば、マークアップ言語文書に記憶されている1つまたは複数のスクリプト)に、対象のプログラムに専用の単一のファイルに、または、複数の協調したファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つの箇所に位置する、もしくは複数の箇所に分散しており通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。
本明細書において説明されるプロセスおよび論理フローは、入力データに対して作用して出力を生成することによって活動を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。専用論理回路、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって、プロセスおよび論理フローが実行されることもあり、それらとして、装置が実装されることもある。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から、命令およびデータを受信する。コンピュータの不可欠な要素は、命令に従って活動を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、磁気光学ディスク、もしくは光学ディスクを含み、または、それらからデータを受信し、もしくはそれらにデータを転送し、もしくは両方を行うために、それらに動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。その上、コンピュータは、別のデバイス、いくつか例を挙げると、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば内部ハードディスクまたはリムーバブルディスク、磁気光学ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形式の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補われ、またはそれに組み込まれ得る。
ユーザとの対話を可能にするために、本明細書において説明される主題の実施形態は、ユーザに情報を表示するための表示デバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがそれによって入力をコンピュータに与えることができるキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を可能にするために使用され得る。たとえば、ユーザに与えられるフィードバックは、任意の形式の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、音響入力、発話入力、または触覚入力を含む任意の形式で、ユーザからの入力が受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信してそれから文書を受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
本明細書において説明される主題の実施形態は、たとえばデータサーバとしてバックエンド構成要素を含む、または、ミドルウェア構成要素、たとえばアプリケーションサーバを含む、または、フロントエンド構成要素、たとえば本明細書において説明される主題の実装形態とユーザがそれを通じて対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ、または、1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、デジタルデータ通信の任意の形式または媒体、たとえば通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは、一般に互いに離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され互いにクライアントとサーバの関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、データ(たとえば、HTMLページ)をクライアントデバイスに送信する(たとえば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受け取る目的で)。クライアントデバイスにおいて生成されるデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの具体的な実装形態の詳細を含むが、これらは、任意の発明の、または特許請求され得るものの範囲に対する制限として見なされるべきではなく、むしろ、特定の発明の特定の実施形態に固有の特徴の説明として見なされるべきである。別個の実施形態の文脈で本明細書において説明されるいくつかの特徴は、単一の実施形態において組合せで実装されてもよい。逆に、単一の実施形態の文脈で説明される様々な特徴が、複数の実施形態において別々に、または任意の適切な部分組合せで実装されてもよい。その上、特徴は、何らかの組合せで作用するものとして上で説明されることがあり、そのように最初に特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、いくつかの場合、組合せから削除されてもよく、特許請求される組合せは、部分組合せまたは部分組合せの変形を対象としてもよい。
同様に、動作は図面において特定の順序で図示されているが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序もしくは逐次的な順序で実行されること、または、すべての図示される動作が実行されることを要求するものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上で説明された実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは一般に、単一のソフトウェア製品に一緒に統合されてもよく、または複数のソフトウェア製品へとパッケージ化されてもよいことが理解されるべきである。
したがって、本主題の特定の実施形態が説明された。他の実施形態が以下の特許請求の範囲内にある。いくつかの場合、特許請求の範囲に記載される活動は、異なる順序で実行されてもよく、それでも望ましい結果を達成することができる。加えて、添付の図面に図示されるプロセスは、望ましい結果を達成するために、示される特定の順序、または逐次的な順序を必ずしも必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
100 環境
102 クライアントデバイス
104 アプリケーションA
106 コンテンツ項目CI1
108 コンテンツ項目CI2
110 デバイスドライバ
112 MAC生成器
114 トークン生成器
118 オペレーティングシステム
120 要求
130 コンテンツプロバイダ
140 コンテンツプラットフォーム
150 ネットワーク
160 アプリケーションB
200 プロセス
300 コンピュータシステム
310 プロセッサ
320 メモリ
330 記憶デバイス
340 入力/出力デバイス
350 システムバス
360 表示デバイス

Claims (20)

  1. コンピュータ実装方法であって、
    クライアントデバイス上で実行されている第1のアプリケーションから、前記第1のアプリケーションにおける表示のために提供される特定のコンテンツ項目との第1の対話が前記クライアントデバイスのユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するようにとの要求を受信するステップであって、前記要求が、オペレーティングシステムから取得されるものとして前記第1のアプリケーションにより特定される初期証明データを含み、前記初期証明データが、
    前記第1の対話を記述するものとして前記第1のアプリケーションにより特定されるパラメータの第1のセットに対するデータと、
    パラメータの前記第1のセットに対する前記データを使用して生成されるものとして前記第1のアプリケーションにより特定される第1のメッセージ認証コード(MAC)セットとを含む、ステップと、
    前記オペレーティングシステムから、前記第1のMACセットが第2のMACセットと同一であるかどうかを明示する指示を取得するステップであって、前記第2のMACセットが、前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して前記オペレーティングシステムによって生成される、ステップと、
    前記第1のMACセットが前記第2のMACセットと同一であることを明示する前記指示を取得したことに応答して、前記第1の対話が前記クライアントデバイスの前記ユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するステップであって、前記クリック検証トークンのペイロードが、(1)前記第1の対話を記述するパラメータの第1のセットに対する前記データおよび(2)前記特定のコンテンツ項目データを特定するデータを含む、ステップと、
    前記第1のアプリケーションに、前記生成されたクリック検証トークンを提供するステップと
    を備える、コンピュータ実装方法。
  2. 前記オペレーティングシステムによって、前記クライアントデバイス上での前記第1のアプリケーションの実行の間に、前記クライアントデバイスのディスプレイとの前記ユーザによる前記第1の対話を検出するステップと、
    前記オペレーティングシステムによって、前記ユーザによる前記第1の対話のために、前記第1の対話を記述するパラメータの前記第1のセットに対する前記データを取得するステップと、
    前記オペレーティングシステムによって、パラメータの前記第1のセットに対する前記データを使用して前記第1のMACセットを生成するステップと、
    前記オペレーティングシステムによって、前記第1のアプリケーションに、(1)前記オペレーティングシステムによって取得されるパラメータの前記第1のセットに対する前記データおよび(2)前記オペレーティングシステムによって生成される前記第1のMACセットを含むデータを提供するステップとをさらに備え、
    前記初期証明データに含まれるデータが、前記第1のアプリケーションに前記オペレーティングシステムによって提供される前記データを表す、請求項1に記載のコンピュータ実装方法。
  3. パラメータの前記第1のセットに対する前記データを使用して前記第1のMACセットを生成するステップが、
    パラメータの前記第1のセットに対する前記データを使用して、前記クライアントデバイスの前記ディスプレイとの物理的なユーザの接触に対応する第1のユーザ活動のための第1のMAC、および、前記ディスプレイからの前記物理的なユーザの接触の解放に対応する第2のユーザ活動のための第2のMACを生成するステップであって、
    前記要求に含まれる前記第1のMACセットが前記第1のMACおよび前記第2のMACを備え、
    パラメータの前記第1のセットに対する前記データを使用して前記オペレーティングシステムによって生成される前記第2のMACセットが、(1)前記第1のユーザ活動に対応するものとして特定される前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して生成される第3のMACおよび(2)前記第2のユーザ活動に対応するものとして特定される前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して生成される第4のMACを含む、ステップを備え、
    前記オペレーティングシステムから、前記第1のMACセットが前記第2のMACセットと同一であるかどうかを明示する指示を取得するステップが、
    (1)前記第1のMACが前記第3のMACと同一であることおよび(2)前記第2のMACが前記第4のMACと同一であることに基づき、前記第1のMACセットが前記第2のMACセットと同一であることを前記オペレーティングシステムが決定する場合に、前記オペレーティングシステムから前記第1のMACセットが第2のMACセットと同一であると明示する指示を取得するステップを備える、請求項2に記載のコンピュータ実装方法。
  4. パラメータの前記第1のセットが、次のパラメータ、すなわち、
    ユーザ活動、
    前記ユーザ活動に対応する前記ディスプレイの位置、
    前記ユーザ活動を実行するために使用されるツール、
    前記ユーザ活動が実行された時間を特定するタイムスタンプ、および
    前記ユーザ活動がそこから受け取られたソースの
    うちの1つまたは複数を含む、請求項2または3に記載のコンピュータ実装方法。
  5. 前記第1のMACセットと前記第2のMACセットの各々が、ハッシュメッセージ認証コードアルゴリズムと、前記オペレーティングシステムにより記憶されている秘密暗号鍵とを使用して生成される、請求項2から4のいずれか一項に記載のコンピュータ実装方法。
  6. 前記クリック検証トークンを生成するステップが、前記第1のアプリケーションとは別個の第2のアプリケーションおよび前記オペレーティングシステムによって前記クリック検証トークンを生成するステップを含む、請求項2から5のいずれか一項に記載のコンピュータ実装方法。
  7. 前記第1のアプリケーションが、ユーザアプリケーションまたはネイティブアプリケーションであり、
    前記第2のアプリケーションが、前記クライアントデバイス上の安全な環境内で動作する信用されるアプリケーションである、請求項6に記載のコンピュータ実装方法。
  8. 前記第1のアプリケーションによって、コンテンツ検証システムに、前記生成されたクリック検証トークンを送信するステップと、
    前記コンテンツ検証システムから、前記第1の対話がユーザ対話であることを示すメッセージを受信するステップとをさらに備え、前記クリック検証トークンに基づいて、前記第1の対話がユーザ対話であることを前記コンテンツ検証システムが確証する場合にのみ、前記コンテンツ検証システムから受信される前記メッセージが生成される、請求項2から7のいずれか一項に記載のコンピュータ実装方法。
  9. 命令を記憶する1つまたは複数のメモリデバイスと、
    前記1つまたは複数のメモリデバイスと対話し、前記命令の実行により動作を実行するように構成される、1つまたは複数のデータ処理装置とを備え、前記動作が、
    クライアントデバイス上で実行されている第1のアプリケーションから、前記第1のアプリケーションにおける表示のために提供される特定のコンテンツ項目との第1の対話が前記クライアントデバイスのユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するようにとの要求を受信するステップであって、前記要求が、オペレーティングシステムから取得されるものとして前記第1のアプリケーションにより特定される初期証明データを含み、前記初期証明データが、
    前記第1の対話を記述するものとして前記第1のアプリケーションにより特定されるパラメータの第1のセットに対するデータと、
    パラメータの前記第1のセットに対する前記データを使用して生成されるものとして前記第1のアプリケーションにより特定される第1のメッセージ認証コード(MAC)セットとを含む、ステップと、
    前記オペレーティングシステムから、前記第1のMACセットが第2のMACセットと同一であるかどうかを明示する指示を取得するステップであって、前記第2のMACセットが、前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して前記オペレーティングシステムによって生成される、ステップと、
    前記第1のMACセットが前記第2のMACセットと同一であることを明示する前記指示を取得したことに応答して、前記第1の対話が前記クライアントデバイスの前記ユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するステップであって、前記クリック検証トークンのペイロードが、(1)前記第1の対話を記述するパラメータの第1のセットに対する前記データおよび(2)前記特定のコンテンツ項目データを特定するデータを含む、ステップと、
    前記第1のアプリケーションに、前記生成されたクリック検証トークンを提供するステップとを含む、システム。
  10. 前記1つまたは複数のデータ処理装置が動作を実行するように構成され、前記動作がさらに、
    前記オペレーティングシステムによって、前記クライアントデバイス上での前記第1のアプリケーションの実行の間に、前記クライアントデバイスのディスプレイとの前記ユーザによる前記第1の対話を検出するステップと、
    前記オペレーティングシステムによって、前記ユーザによる前記第1の対話のために、前記第1の対話を記述するパラメータの前記第1のセットに対する前記データを取得するステップと、
    前記オペレーティングシステムによって、パラメータの前記第1のセットに対する前記データを使用して前記第1のMACセットを生成するステップと、
    前記オペレーティングシステムによって、前記第1のアプリケーションに、(1)前記オペレーティングシステムによって取得されるパラメータの前記第1のセットに対する前記データおよび(2)前記オペレーティングシステムによって生成される前記第1のMACセットを含むデータを提供するステップとを備え、
    前記初期証明データに含まれるデータが、前記第1のアプリケーションに前記オペレーティングシステムによって提供される前記データを表す、請求項9に記載のシステム。
  11. パラメータの前記第1のセットに対する前記データを使用して前記第1のMACセットを生成するステップが、パラメータの前記第1のセットに対する前記データを使用して、前記クライアントデバイスの前記ディスプレイとの物理的なユーザの接触に対応する第1のユーザ活動のための第1のMAC、および、前記ディスプレイからの前記物理的なユーザの接触の解放に対応する第2のユーザ活動のための第2のMACを生成するステップであって、
    前記要求に含まれる前記第1のMACセットが前記第1のMACおよび前記第2のMACを備え、
    パラメータの前記第1のセットに対する前記データを使用して前記オペレーティングシステムによって生成される前記第2のMACセットが、(1)前記第1のユーザ活動に対応するものとして特定される前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して生成される第3のMACおよび(2)前記第2のユーザ活動に対応するものとして特定される前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して生成される第4のMACを含む、ステップを備え
    前記オペレーティングシステムから、前記第1のMACセットが前記第2のMACセットと同一であるかどうかを明示する指示を取得するステップが、
    (1)前記第1のMACが前記第3のMACと同一であることおよび(2)前記第2のMACが前記第4のMACと同一であることに基づき、前記第1のMACセットが前記第2のMACセットと同一であることを前記オペレーティングシステムが決定する場合に、前記オペレーティングシステムから前記第1のMACセットが第2のMACセットと同一であると明示する指示を取得するステップを備える、請求項10に記載のシステム。
  12. パラメータの前記第1のセットが、次のパラメータ、すなわち、
    ユーザ活動、
    前記ユーザ活動に対応するディスプレイの位置、
    前記ユーザ活動を実行するために使用されるツール、
    前記ユーザ活動が実行された時間を特定するタイムスタンプ、および
    前記ユーザ活動がそこから受け取られたソースの
    うちの1つまたは複数を含む、請求項9または10に記載のシステム。
  13. 前記第1のMACセットと前記第2のMACセットの各々が、ハッシュメッセージ認証コードアルゴリズムと、前記オペレーティングシステムにより記憶されている秘密暗号鍵とを使用して生成される、請求項9から12のいずれか一項に記載のシステム。
  14. 前記クリック検証トークンを生成するステップが、前記第1のアプリケーションとは別個の第2のアプリケーションおよび前記オペレーティングシステムによって前記クリック検証トークンを生成するステップを含む、請求項9から13のいずれか一項に記載のシステム。
  15. 前記1つまたは複数のデータ処理装置が動作を実行するように構成され、前記動作がさらに、
    前記第1のアプリケーションによって、コンテンツ検証システムに、前記生成されたクリック検証トークンを送信するステップと、
    前記コンテンツ検証システムから、前記第1の対話がユーザ対話であることを示すメッセージを受信するステップとを備え、前記クリック検証トークンに基づいて、前記第1の対話がユーザ対話であることを前記コンテンツ検証システムが確証する場合にのみ、前記コンテンツ検証システムから受信される前記メッセージが生成される、請求項9から14のいずれか一項に記載のシステム。
  16. 1つまたは複数のデータ処理装置によって実行されると、前記1つまたは複数のデータ処理装置に動作を実行させる命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記動作が、
    クライアントデバイス上で実行されている第1のアプリケーションから、前記第1のアプリケーションにおける表示のために提供される特定のコンテンツ項目との第1の対話が前記クライアントデバイスのユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するようにとの要求を受信するステップであって、前記要求が、オペレーティングシステムから取得されるものとして前記第1のアプリケーションにより特定される初期証明データを含み、前記初期証明データが、
    前記第1の対話を記述するものとして前記第1のアプリケーションにより特定されるパラメータの第1のセットに対するデータと、
    パラメータの前記第1のセットに対する前記データを使用して生成されるものとして前記第1のアプリケーションにより特定される第1のメッセージ認証コード(MAC)セットとを含む、ステップと、
    前記オペレーティングシステムから、前記第1のMACセットが第2のMACセットと同一であるかどうかを明示する指示を取得するステップであって、前記第2のMACセットが、前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して前記オペレーティングシステムによって生成される、ステップと、
    前記第1のMACセットが前記第2のMACセットと同一であることを明示する前記指示を取得したことに応答して、前記第1の対話が前記クライアントデバイスの前記ユーザによる対話であるかどうかを検証するために使用されるクリック検証トークンを生成するステップであって、前記クリック検証トークンのペイロードが、(1)前記第1の対話を記述するパラメータの第1のセットに対する前記データおよび(2)前記特定のコンテンツ項目データを特定するデータを含む、ステップと、
    前記第1のアプリケーションに、前記生成されたクリック検証トークンを提供するステップとを備える、非一時的コンピュータ可読記憶媒体。
  17. 前記命令が、前記1つまたは複数のデータ処理装置に動作を実行させ、前記動作がさらに、
    前記オペレーティングシステムによって、前記クライアントデバイス上での前記第1のアプリケーションの実行の間に、前記クライアントデバイスのディスプレイとの前記ユーザによる前記第1の対話を検出するステップと、
    前記オペレーティングシステムによって、前記ユーザによる前記第1の対話のために、前記第1の対話を記述するパラメータの前記第1のセットに対する前記データを取得するステップと、
    前記オペレーティングシステムによって、パラメータの前記第1のセットに対する前記データを使用して前記第1のMACセットを生成するステップと、
    前記オペレーティングシステムによって、前記第1のアプリケーションに、(1)前記オペレーティングシステムによって取得されるパラメータの前記第1のセットに対する前記データおよび(2)前記オペレーティングシステムによって生成される前記第1のMACセットを含むデータを提供するステップとを備え、
    前記初期証明データに含まれるデータが、前記第1のアプリケーションに前記オペレーティングシステムによって提供される前記データを表す、請求項16に記載の非一時的コンピュータ可読記憶媒体。
  18. パラメータの前記第1のセットに対する前記データを使用して前記第1のMACセットを生成するステップが、パラメータの前記第1のセットに対する前記データを使用して、前記クライアントデバイスの前記ディスプレイとの物理的なユーザの接触に対応する第1のユーザ活動のための第1のMAC、および、前記ディスプレイからの前記物理的なユーザの接触の解放に対応する第2のユーザ活動のための第2のMACを生成するステップであって、
    前記要求に含まれる前記第1のMACセットが前記第1のMACおよび前記第2のMACを備え、
    パラメータの前記第1のセットに対する前記データを使用して前記オペレーティングシステムによって生成される前記第2のMACセットが、(1)前記第1のユーザ活動に対応するものとして特定される前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して生成される第3のMACおよび(2)前記第2のユーザ活動に対応するものとして特定される前記要求に含まれるパラメータの前記第1のセットに対する前記データを使用して生成される第4のMACを含む、ステップを備え
    前記オペレーティングシステムから、前記第1のMACセットが前記第2のMACセットと同一であるかどうかを明示する指示を取得するステップが、
    (1)前記第1のMACが前記第3のMACと同一であることおよび(2)前記第2のMACが前記第4のMACと同一であることに基づき、前記第1のMACセットが前記第2のMACセットと同一であることを前記オペレーティングシステムが決定する場合に、前記オペレーティングシステムから前記第1のMACセットが第2のMACセットと同一であると明示する指示を取得するステップを備える、請求項17に記載の非一時的コンピュータ可読記憶媒体。
  19. 前記第1のMACセットと前記第2のMACセットの各々が、ハッシュメッセージ認証コードアルゴリズムと、前記オペレーティングシステムにより記憶されている秘密暗号鍵とを使用して生成される、請求項16から18のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
  20. 前記命令が前記1つまたは複数のデータ処理装置に動作を実行させ、前記動作が、
    前記第1のアプリケーションによって、コンテンツ検証システムに、前記生成されたクリック検証トークンを送信するステップと、
    前記コンテンツ検証システムから、前記第1の対話がユーザ対話であることを示すメッセージを受信するステップとを備え、前記クリック検証トークンに基づいて、前記第1の対話がユーザ対話であることを前記コンテンツ検証システムが確証する場合にのみ、前記コンテンツ検証システムから受信される前記メッセージが生成される、請求項17から19のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
JP2020566231A 2020-02-06 2020-02-06 コンテンツプラットフォーム上でのユーザ対話の検証 Active JP7184927B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/016998 WO2021158227A1 (en) 2020-02-06 2020-02-06 Verifying user interactions on a content platform

Publications (2)

Publication Number Publication Date
JP2022522316A JP2022522316A (ja) 2022-04-18
JP7184927B2 true JP7184927B2 (ja) 2022-12-06

Family

ID=69771149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020566231A Active JP7184927B2 (ja) 2020-02-06 2020-02-06 コンテンツプラットフォーム上でのユーザ対話の検証

Country Status (9)

Country Link
US (1) US20220123944A1 (ja)
EP (1) EP3887981B1 (ja)
JP (1) JP7184927B2 (ja)
KR (1) KR102429406B1 (ja)
CN (1) CN113498515B (ja)
AU (1) AU2020260457B2 (ja)
BR (1) BR112020022548A2 (ja)
CA (1) CA3100322C (ja)
WO (1) WO2021158227A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11706241B1 (en) 2020-04-08 2023-07-18 Wells Fargo Bank, N.A. Security model utilizing multi-channel data
US11720686B1 (en) * 2020-04-08 2023-08-08 Wells Fargo Bank, N.A. Security model utilizing multi-channel data with risk-entity facing cybersecurity alert engine and portal
US11777992B1 (en) 2020-04-08 2023-10-03 Wells Fargo Bank, N.A. Security model utilizing multi-channel data
IL285887B1 (en) * 2021-08-26 2024-03-01 Google Llc Secure attribution using anonymous signals
US11722900B2 (en) * 2021-08-31 2023-08-08 Visa International Service Association Mobile device data security using shared security values
CN116522312A (zh) * 2022-01-21 2023-08-01 华为技术有限公司 人机识别的方法和装置
US11695772B1 (en) * 2022-05-03 2023-07-04 Capital One Services, Llc System and method for enabling multiple auxiliary use of an access token of a user by another entity to facilitate an action of the user

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050278235A1 (en) 2004-06-10 2005-12-15 International Business Machines Corporation Method and system for a contract option
US20090292924A1 (en) 2008-05-23 2009-11-26 Johnson Erik J Mechanism for detecting human presence using authenticated input activity

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4185363B2 (ja) * 2001-02-22 2008-11-26 ビーイーエイ システムズ, インコーポレイテッド トランザクション処理システムにおけるメッセージ暗号化及び署名のためのシステム及び方法
US20050278253A1 (en) * 2004-06-15 2005-12-15 Microsoft Corporation Verifying human interaction to a computer entity by way of a trusted component on a computing device or the like
CN101106455B (zh) * 2007-08-20 2010-10-13 北京飞天诚信科技有限公司 身份认证的方法和智能密钥装置
EP2448170A4 (en) * 2009-06-23 2015-06-24 Panasonic Ip Man Co Ltd CLEF-CRYPTOGRAM DISTRIBUTION SYSTEM
WO2014138430A2 (en) * 2013-03-06 2014-09-12 Marvell World Trade Ltd. Secure simple enrollment
US20140282696A1 (en) * 2013-03-15 2014-09-18 Qualcomm Incorporated Advertising download verification
US20150150109A1 (en) * 2013-11-27 2015-05-28 Adobe Systems Incorporated Authenticated access to a protected resource using an encoded and signed token
US9860241B2 (en) * 2014-04-15 2018-01-02 Level 3 Communications, Llc Device registration, authentication, and authorization system and method
US11128478B2 (en) * 2017-03-01 2021-09-21 Apple Inc. System access using a mobile device
CN107342998A (zh) * 2017-07-04 2017-11-10 四川云物益邦科技有限公司 通过移动存储设备实现的个人信息提取方法
US10932129B2 (en) * 2017-07-24 2021-02-23 Cisco Technology, Inc. Network access control
CN108769041A (zh) * 2018-06-06 2018-11-06 深圳壹账通智能科技有限公司 登录方法、系统、计算机设备和存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050278235A1 (en) 2004-06-10 2005-12-15 International Business Machines Corporation Method and system for a contract option
US20090292924A1 (en) 2008-05-23 2009-11-26 Johnson Erik J Mechanism for detecting human presence using authenticated input activity

Also Published As

Publication number Publication date
JP2022522316A (ja) 2022-04-18
BR112020022548A2 (pt) 2022-10-11
CA3100322A1 (en) 2021-08-06
KR102429406B1 (ko) 2022-08-05
US20220123944A1 (en) 2022-04-21
CN113498515A (zh) 2021-10-12
CA3100322C (en) 2023-07-18
AU2020260457A1 (en) 2021-08-26
KR20210102057A (ko) 2021-08-19
AU2020260457B2 (en) 2021-10-21
EP3887981B1 (en) 2022-04-06
EP3887981A1 (en) 2021-10-06
CN113498515B (zh) 2022-10-14
WO2021158227A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
JP7184927B2 (ja) コンテンツプラットフォーム上でのユーザ対話の検証
JP7319380B2 (ja) ブラウザクッキーを保護する
JP7189372B2 (ja) デバイスおよびアプリケーションの完全性の検証
JP7041282B2 (ja) 信頼できるコード証明トークンによるデータの完全性の向上
JP7286004B2 (ja) クライアントデバイスからの通信の完全性の保護
JP7250112B2 (ja) クラウドソーシングを用いて偽情報に対処すること
JP7279209B2 (ja) 不正行為の検出のためのクロスドメイン頻度フィルタ
CN113015974B (zh) 针对隐私保护的可验证同意
JP7135210B2 (ja) プライバシー保持アプリケーションおよびデバイスエラー検出
JP2023120183A (ja) ウェブビュー内のコンテンツおよび対話の検証
CN113015974A (zh) 针对隐私保护的可验证同意

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220719

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221124

R150 Certificate of patent or registration of utility model

Ref document number: 7184927

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150