JP7322283B2 - 安全な識別情報検索のためのシステムおよび方法 - Google Patents

安全な識別情報検索のためのシステムおよび方法 Download PDF

Info

Publication number
JP7322283B2
JP7322283B2 JP2022514227A JP2022514227A JP7322283B2 JP 7322283 B2 JP7322283 B2 JP 7322283B2 JP 2022514227 A JP2022514227 A JP 2022514227A JP 2022514227 A JP2022514227 A JP 2022514227A JP 7322283 B2 JP7322283 B2 JP 7322283B2
Authority
JP
Japan
Prior art keywords
client device
query
database
identifier
query token
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
JP2022514227A
Other languages
English (en)
Other versions
JP2022545847A (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 JP2022545847A publication Critical patent/JP2022545847A/ja
Priority to JP2023120733A priority Critical patent/JP2023162169A/ja
Application granted granted Critical
Publication of JP7322283B2 publication Critical patent/JP7322283B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/30Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information
    • H04L63/308Network architectures or network communication protocols for network security for supporting lawful interception, monitoring or retaining of communications or communication related information retaining data, e.g. retaining successful, unsuccessful communication attempts, internet access, or e-mail, internet telephony, intercept related information or call content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0421Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • 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
    • 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/3247Cryptographic 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 digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Description

人々は実店舗に行く代わりにオンラインで商品を買う場合がある。人々が買い物をするために様々なウェブページおよびドメインにアクセスしている間、多くの場合、ウェブページおよびドメインに関連付けられるサードパーティは、ウェブページにアクセスするために使用されるコンピューティングデバイスを識別し、コンピューティングデバイスに関する情報を識別するために様々な技法(たとえば、サードパーティクッキー)を使用し得る。サードパーティは、多くの場合、人々がコンピューティングデバイスを使用してウェブページおよびドメインにアクセスしたときに人々にコンテンツを提供するコンテンツプロバイダである。コンテンツサーバを介して、サードパーティは、コンテンツサーバのデータベースに記憶された情報に関連付けられるコンピューティングデバイスを識別するデバイス識別子とともに情報を記憶し得る。
人々がオンラインで買い物を続けるにつれて、多くの場合、人々が知らないうちに、ますます多くのサードパーティが彼らのコンピューティングデバイスに関する情報を取得する可能性がある。サードパーティは、コンピューティングデバイスがさらにウェブページにアクセスするときに、コンピューティングデバイスにコンテンツを提供するために、コンテンツサーバに記憶されている情報を使用することができる。サードパーティが要求に応じてコンピューティングデバイスに関する情報を持っているかどうかを識別することを要求する法律があるが、コンピューティングデバイスは、サードパーティがデバイスに関する情報をまだ持っていない場合、要求を行うときにデバイス情報(たとえば、コンピューティングデバイスに関連付けられるデバイス識別子)をサードパーティに提供し得る。さらに、サードパーティが有している情報の量を決定するために、悪意のあるパーティが要求を盗聴する可能性があるため、サードパーティはコンピューティングデバイスからの要求に信頼性をもって応答することを躊躇する可能性がある。
本明細書で論じられるシステムおよび方法は、安全な識別情報検索の方法を提供するので、コンピューティングデバイスは、コンテンツサーバまたはコンテンツプロバイダがコンピューティングデバイスに関するデータをすでに収集しているかどうかを決定するための要求を行うときに、コンテンツサーバまたはコンテンツプロバイダがまだ有していない情報をコンテンツサーバまたはコンテンツプロバイダに提供する必要がない。コンピューティングデバイスは、各コンピューティングデバイスに固有のクエリトークンを計算し得、いくつかの実装形態では、時間とともに継続的に変化する値を有する周期変数に基づいて計算し得る。コンピューティングデバイスは、様々なコンテンツサーバと同期し得るため、コンテンツサーバは、コンピューティングデバイスと同じ周期変数および暗号化技法を使用して、コンテンツサーバのデータベースに記憶されているデバイス識別子のクエリトークンを計算することができる。コンテンツサーバとコンピューティングデバイスとの間の同期エラーを回避するために、いくつかの実装形態では、コンテンツサーバは、コンテンツサーバのデータベース内のデバイス識別子ごとに複数のクエリトークンを計算する場合がある。コンテンツサーバがクエリトークンを含む要求を受信すると、コンテンツサーバは、一致するものを識別するために、クエリトークンをデータベースに記憶されているクエリトークンと比較し得る。コンテンツサーバが一致を識別した場合、コンテンツサーバは、一致が見つかったことを示す応答信号(たとえば、回答)を送信し得る。コンテンツサーバはまた、応答信号内の一致する記憶されたクエリトークンに関連付けられるコンピューティングデバイスに関する特性の識別を含み得る。コンテンツサーバが、クエリのクエリトークンに一致する記憶されたクエリトークンを識別できない場合、コンテンツサーバは、一致が見つからなかったことを示す応答信号をクエリに関連付けられるコンピューティングデバイスに送信し得る。
コンテンツサーバにクエリを実行するコンピューティングデバイスのプライバシ、およびコンテンツサーバ自体のデータの機密性を保護する(たとえば、コンテンツサーバのデータ量とデータ収集機能をプライベートに保つ)ために、コンテンツサーバは、コンピューティングデバイスが、コンテンツサーバが受信するクエリに関連付けられていることを確認し、コンテンツサーバがクエリを実行するコンピューティングデバイスに送信する回答を暗号化し得る。コンテンツサーバは、クエリに署名するために、コンピューティングデバイスによって生成されたデジタル署名上のコンピューティングデバイスのデバイス識別子に関連付けられる公開鍵を使用することによってコンピューティングデバイスのIDを検証し得る。コンテンツサーバは、コンピューティングデバイスに関連付けられる公開鍵を使用して、コンピューティングデバイスへの回答を暗号化し得る。その結果、デバイス識別子に関連付けられるコンピューティングデバイスのみが、コンテンツサーバがそれらに関するデータを収集したかどうかに関する情報をコンテンツサーバから取得し得る。いくつかの実装形態では、一致しないことを示す応答信号は、あらかじめ定められた長さまで埋めることができ、デフォルトまたはヌル情報を含んでもよく、および/あるいは否定応答信号が、盗聴デバイスまたは情報を探ろうとする悪意のあるコンピューティングデバイスに対する肯定応答信号と同様に表示されるように、ハッシュまたは暗号化されてもよい。
本明細書に記載のシステムおよび方法はまた、どのドメインがブラウザに関するデータを収集したかを決定するためにブラウザによって使用され得る。ブラウザは、上記と同様の暗号化技法を使用することができるが、クッキークエリトークンを計算するためにドメインおよびクッキーの値を使用する。ドメインは、ブラウザがクッキークエリトークンを計算するために使用するのと同じ技法および値を使用して、ドメインがデータを記憶しているブラウザの記憶されたクッキークエリトークンを計算することができる。ドメインは、ドメインにブラウザのデータが記憶されているかどうかを決定するために、ブラウザから受信したクッキークエリトークンを、記憶されているクッキークエリトークンと比較することができる。ドメインは、ドメインをホストしているサーバにブラウザに関するデータを記憶し得る。ドメインは、ブラウザに関する情報が記憶されているかどうか、および情報のカテゴリを示す応答信号をブラウザに送信することができる。ドメインは応答信号を暗号化できるため、悪意のあるサードパーティは、ドメインが収集したデータの量または種類を決定できない場合がある。
有利なことに、本明細書で論じられるシステムおよび方法を実装することによって、コンピューティングデバイスは、コンテンツサーバがまだ記憶していないデバイス識別情報をコンテンツプロバイダに提供せずに、コンテンツサーバがコンピューティングデバイスに関する情報を有しているかどうかの識別についてコンテンツサーバに安全にクエリを実行し得る。クエリトークンは継続的に変更される可能性があるため、クエリを実行するデバイスのデバイス識別子を有していないコンテンツサーバは、デバイスに関する永続的な情報を取得できない可能性がある。同様に、システムは、ハッシュまたは暗号化された応答の使用および否定的な確認応答のパディングを通じて、情報を探る試みに対して安全である可能性がある。さらに、デバイスとコンテンツサーバとの間の通信は、コンテンツサーバが収集した情報の量を示すデータを悪意のあるサードパーティに提供することからコンテンツサーバを保護するために安全である可能性がある。その結果、説明したシステムと方法は、コンピューティングデバイスとコンテンツサーバとの間の安全な通信方法を提供するため、コンピューティングデバイスは、新しいデバイス識別情報を提供せずにコンテンツサーバに情報を要求し、コンテンツサーバは悪意のあるサードパーティにデータを提供せずに応答し得る。
本明細書で説明する態様では、安全な識別情報検索のための方法が説明される。本方法は、サーバデバイスによって、周期変数の値を検索するステップと、サーバデバイスによって、対応する複数のクライアントデバイス識別子および周期変数の値から複数のクエリトークンを計算するステップとを含み得る。各クエリトークンは、第1のデータベースにおける対応するクライアントデバイス識別子に関連付けられ得る。本方法は、第1のクライアントデバイスからサーバデバイスによって、第1のクライアントデバイスのクライアントデバイス識別子および周期変数の値から計算された第1のクエリトークンを受信するステップと、サーバデバイスによって、第1のデータベースにおいて計算された複数のクエリトークンのうち、第1のクエリトークンと一致する第2のクエリトークンを識別するステップと、識別に応答して、サーバデバイスによって、関連付けられるクライアントデバイス識別子を検索するステップとをさらに備え得る。本方法は、サーバデバイスによって、第2のデータベースから、関連付けられるクライアントデバイス識別子に従って第1のクライアントデバイスの1つまたは複数の特性を検索するステップと、サーバデバイスによってクライアントデバイスに、検索された1つまたは複数の特性を送信するステップとをさらに備え得る。
いくつかの実装形態では、本方法は、サーバデバイスによって、計算された複数のクエリトークンに基づいて確率的データ構造を生成するステップと、サーバデバイスによって、第1のクエリトークンを確率的データ構造と比較するステップとをさらに備え得る。第2のクエリトークンを識別するステップは、確率的データ構造に一致する第1のクエリトークンに応答して実行され得る。
いくつかの実装形態では、確率的データ構造はブルームフィルタを備え得る。いくつかの実装形態では、周期変数は、現在の日付の証券取引所の終値、または相互に検証可能な値を備え得る。いくつかの実装形態では、複数のクエリトークンを計算するステップは、対応する複数のクライアントデバイス識別子および周期変数の以前の値から第2の複数のクエリトークンを計算するステップを備え得、第2の複数のクエリトークンは、対応するクライアントデバイス識別子に関連して第1のデータベースに記憶される。
いくつかの実装形態では、本方法は、サーバデバイスによって、第1のデータベースから第3の複数のクエリトークン、複数のクライアントデバイス識別子から計算された第3の複数のクエリトークン、および周期変数の2回前の値を除去するステップをさらに備え得る。いくつかの実装形態では、複数のクエリトークンを計算するステップは、複数のクエリトークンのそれぞれについて、周期変数の値と対応するクライアントデバイス識別子との組合せの一方向ハッシュ(たとえば、セキュアハッシュアルゴリズム-256などのアメリカ国立標準技術研究所によって公開されたハッシュ関数のいずれか)を計算するステップをさらに備える。いくつかの実装形態では、第1のクライアントデバイスの1つまたは複数の特性を検索するステップは、第2のデータベースから第1のクライアントデバイスの公開暗号化鍵を検索するステップをさらに備える。検索された1つまたは複数の特性を送信するステップは、第1のクライアントデバイスの検索された公開暗号化鍵を用いて1つまたは複数の特性を暗号化するステップをさらに備え得る。
いくつかの実装形態では、本方法は、第2のクライアントデバイスからサーバデバイスによって、第2のクライアントデバイスのクライアントデバイス識別子および周期変数の値から計算された第3のクエリトークンを受信するステップと、サーバデバイスによって、第3のクエリトークンに対応する第1のデータベースにエントリが存在しないことを決定するステップとをさらに備え得る。
いくつかの実装形態では、本方法は、第3のクエリトークンに対応する第1のデータベースにエントリが存在しないという決定に応答して、サーバデバイスによって第2のクライアントデバイスに、ランダムデータ文字列またはヌルデータ文字列のうちの1つを送信するステップをさらに備え得る。いくつかの実装形態では、複数のクライアントデバイス識別子は、クッキー値を含み得る。いくつかの実装形態では、複数のクエリトークンは、周期的値、クッキー値、および複数のドメイン識別子から計算され得、各クッキー値は、複数のドメイン識別子のドメイン識別子に対応する。いくつかの実装形態では、第1のクッキー値は、第1のドメインに関連付けられ、第2のドメインと共有され得る。いくつかの実装形態では、サーバデバイスは、第1のドメインまたは第2のドメインの一方に関連付けられ得、第2のサーバデバイスは、第1のドメインまたは第2のドメインの他方に関連付けられる。
いくつかの実装形態では、関連付けられるクライアントデバイス識別子を検索するステップは、第1のクッキー値および第1のドメイン識別子を検索するステップをさらに備え得る。検索された1つまたは複数の特性を送信するステップは、第2のドメインに関連付けられるサーバデバイスによって、第1のクッキー値および第1のドメイン識別子を用いて検索された1つまたは複数の特性を暗号化するステップをさらに備え得る。
本明細書で説明される別の態様では、安全な識別情報検索のためのサーバデバイスが説明される。サーバデバイスは、複数のクライアントデバイスの第1のクライアントデバイスと通信するネットワークインターフェースと、複数のクエリトークンおよび対応する複数の関連付けられるクライアントデバイス識別子を備える第1のデータベースを記憶するメモリデバイス、ならびに複数のクライアントデバイス識別子および関連付けられるデバイス特性を備える第2のデータベースと、プロセッサとを備え得る。プロセッサは、周期変数の値を検索することと、対応する複数のクライアントデバイス識別子および周期変数の値から複数のクエリトークンを計算することと、第1のクライアントデバイスからネットワークインターフェースを介して、第1のクライアントデバイスのクライアントデバイス識別子および周期変数の値から計算された第1のクエリトークンを受信することとを行うように構成され得る。プロセッサは、第1のデータベースにおいて計算された複数のクエリトークンのうち、第1のクエリトークンと一致する第2のクエリトークンを識別することと、識別に応答して、第1のデータベースから、関連付けられるクライアントデバイス識別子を検索することとを行うようにさらに構成され得る。プロセッサは、第2のデータベースから、関連付けられるクライアントデバイス識別子に従って第1のクライアントデバイスの1つまたは複数の特性を検索することと、ネットワークインターフェースを介してクライアントデバイスに、検索された1つまたは複数の特性を送信することとを行うようにさらに構成され得る。
いくつかの実装形態では、プロセッサは、サーバデバイスによって、計算された複数のクエリトークンに基づいて確率的データ構造を生成することと、第1のクエリトークンを確率的データ構造と比較することとを行うようにさらに構成される。第2のクエリトークンを識別することは、確率的データ構造に一致する第1のクエリトークンに応答して実行され得る。
いくつかの実装形態では、プロセッサは、対応する複数のクライアントデバイス識別子および周期変数の以前の値から第2の複数のクエリトークンを計算するようにさらに構成され得、第2の複数のクエリトークンは、対応するクライアントデバイス識別子に関連して第1のデータベースに記憶される。いくつかの実装形態では、プロセッサは、第1のデータベースから第3の複数のクエリトークン、複数のクライアントデバイス識別子から計算された第3の複数のクエリトークン、および周期変数の2回前の値を除去するようにさらに構成され得る。いくつかの実装形態では、プロセッサは、複数のクエリトークンのそれぞれについて、周期変数の値と対応するクライアントデバイス識別子との組合せの一方向ハッシュを計算するようにさらに構成され得る。
ある態様のオプション機能は、任意の他の態様と組み合わせることができる。
1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載されている。本開示の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
2つのシーケンスのブロック図であって、いくつかの実装形態に従って、各シーケンスが、コンテンツサーバがクライアントデバイスに関するデータを収集したかどうかを決定するためにコンテンツサーバにクエリを実行するクライアントデバイスを含む、ブロック図である。 いくつかの実装形態による、コンテンツサーバに安全にクエリを実行するためのシステムの実装形態のブロック図である。 いくつかの実装形態による、安全な識別情報検索のための方法を示すフローチャートである。
様々な図面での同様の参照番号および名称は、同様の要素を示している。
ユーザがインターネットを閲覧すると、コンテンツサーバは、ユーザが閲覧に使用するコンピューティングデバイスに関するデバイス識別子および他の様々なデータを取得し得、多くの場合、ユーザはコンテンツサーバがそのようなデータを収集したことを知らない。デバイス識別子および他の様々なデータを取得することによって、コンテンツサーバは、ターゲットコンテンツ(たとえば、コンピューティングデバイスに関するデータに基づくコンテンツ)を提供するために、コンピューティングデバイスを個別に識別し得る。コンピューティングデバイスが様々なウェブページにアクセスするときに、コンピューティングデバイスのデバイス識別子をコンテンツサーバによって検索および記憶できるため、コンピューティングデバイスを使用している人々は、コンピューティングデバイスがコンテンツサーバによって識別されるのを防ぐことができない場合がある。コンピューティングデバイスは、コンテンツサーバがコンピューティングデバイスに関するデータを収集したかどうかを決定するためにコンテンツサーバにクエリを実行する場合があるが、コンテンツサーバは通常、コンピューティングデバイスのデバイス識別子に基づいてデータを記憶する。その結果、そのような実装形態では、デバイス識別のためにコンテンツサーバにクエリを送信するクライアントデバイスは、コンテンツサーバが識別するためのクライアントデバイスのデバイス識別子を提供せずにクエリを送信できない場合がある。コンテンツサーバがデバイス識別子を識別すると、コンテンツサーバは、将来的にコンピューティングデバイスにターゲットコンテンツを提供するためにデバイス識別子を記憶し得る。
たとえば、第1に図1を参照すると、2つのシーケンス102および110のブロック図が示されており、いくつかの実装形態では、各シーケンス102および110は、コンテンツサーバがデバイスに関するデータを記憶したかどうかを尋ね、コンテンツサーバがデバイスに関するデータを記憶した場合、データのタイプまたはカテゴリを尋ねるクエリをコンテンツサーバに送信するデバイスを含む。シーケンス102は、コンテンツサーバ106がクライアントデバイス104に関するデータを収集したかどうかを識別するために、コンテンツサーバ106にクエリを送信するクライアントデバイス104のシーケンスであり得る。コンテンツサーバ106は、クライアントデバイス104がインターネットを閲覧し、様々なウェブページおよび/またはドメインを閲覧している間に、クライアントデバイス104に関するデータを収集した可能性がある。クライアントデバイス104は、クエリにクライアントデバイス104のデバイス識別子を含み得るので、コンテンツサーバ106は、コンテンツサーバ106が記憶し、クライアントデバイス104に関連付けられるデータを識別し得る。
シーケンス102において、クライアントデバイス104は、コンテンツサーバ106がクライアントデバイス104に関するデータを有しているかどうかを尋ねるクエリをコンテンツサーバ106に送信し得る。クライアントデバイス104は、クライアントデバイス104を個別に識別できるクエリに、クライアントデバイス104のデバイス識別子(たとえば、デバイス8)を含み得る。コンテンツサーバ106は、コンテンツサーバ106がデータを収集した様々なデバイスのデバイス識別子(たとえば、デバイス1、デバイス2、デバイス3など)のリストを含むデータベース108を含み得る。コンテンツサーバ106は、データベース108を処理し、クエリのデバイス識別子をデータベース108内のデバイス識別子と比較し得る。コンテンツサーバ106がデバイスデータベース108内の一致する識別子を識別する場合、コンテンツサーバ106は、コンテンツサーバ106がクライアントデバイス104に関するデータを収集したことを示す信号をクライアントデバイス104に送信し得る。しかしながら、コンテンツサーバ106がデータベース108内の一致する識別子を識別しない場合、コンテンツサーバ106は、コンテンツサーバ106がクライアントデバイス104に関するデータを収集していないことを示す信号をクライアントデバイス104に送信し得る。
いくつかの実装形態では、コンテンツサーバ106がデータベース108内に一致するデバイス識別子がないと決定した場合、コンテンツサーバ106は、クライアントデバイス104のデバイス識別子をデータベース108に追加し得る。コンテンツサーバ106は、データベース108にデバイス識別子を追加したことをクライアントデバイス104に通知し得、または場合によっては、コンテンツサーバ106がクライアントデバイス104に関するデータを有していないが、それにもかかわらずクライアントデバイス104のデバイス識別子を記憶することを示し得る。その結果、コンテンツサーバがクライアントデバイス104に関するデータを有するかどうかを決定するためにコンテンツサーバ106にクエリを実行することによって、クライアントデバイス104は、次に、意図せずまたは望ましくないことに、クライアントデバイス104に関するデータ(たとえば、クライアントデバイス104のIPアドレス)をコンテンツサーバ106に提供し得る。いくつかの実装形態では、コンテンツサーバ106は、デバイスタイプ、ブラウザタイプ、オペレーティングシステムタイプ、または他のそのような情報(たとえば、ユーザエージェントフィールドなどのHTTP要求におけるメタデータ、デバイスにタッチスクリーンがあるかどうかの識別(デバイスがモバイルデバイスである可能性があることを示す)など)などのクエリとともに、クライアントデバイス104に関する追加情報を取得することが可能であり得る。
逆に、シーケンス110は、同様のクエリをコンテンツサーバ114に送信するクライアントデバイス112の例示的なシーケンスを示す。しかしながら、シーケンス110において、クライアントデバイス112は、暗号化された(または、たとえばSHA256を介して暗号ハッシュされた)デバイス識別子をクエリ内のコンテンツサーバ114に送信し得る。具体的には、シーケンス110のいくつかの実装形態では、クライアントデバイス112は、コンテンツサーバ114が、クエリの一部として明示的または暗号化されていないデバイス識別子または他のデータを含まずに、クライアントデバイス104に関するデータを有するかどうかを尋ねるクエリをコンテンツサーバ114に送信し得る。クエリを送信するために、クライアントデバイス112は、第1に、クライアントデバイス112のデバイス識別子に基づいてクエリトークンを計算し得る。クエリトークンはまた、周期変数(たとえば、毎時、毎日、毎週、または他のそのような間隔で更新される変数)の値と、コンテンツサーバ114とクライアントデバイス112の両方に知られている暗号化技法(たとえば、SHA256のような一方向ハッシュ技法)に基づいて計算され得る。周期変数は、クライアントデバイス112およびコンテンツサーバ114によって検証され得る相互に検証可能な変数であり得る。以下でより詳細に説明するように、いくつかの実装形態では、クライアントデバイス112は、クライアントデバイス112のデバイス識別子を周期変数の値と連結し、クライアントデバイス112とコンテンツサーバ114の両方に知られている暗号化技法を実行することによってクエリトークンを計算し得る。クライアントデバイス112は、クエリトークン(たとえば、図示される例では27D2C8BC4)を計算し、クエリとともにクエリトークンをコンテンツサーバ114に送信し得る。
コンテンツサーバ114は、クライアントデバイス112などのクライアントデバイスに関するデータを収集し、そのデータをコンテンツサーバ114のデータベース116に記憶するサーバであり得る。コンテンツサーバ114は、コンテンツサーバ114がデータを記憶した各クライアントデバイスに関連付けられるデバイス識別子を収集および記憶し得る。コンテンツサーバ114は、デバイス識別子ごとに複数の記憶されたクエリトークンを計算し得る。コンテンツサーバ114は、クライアントデバイス112と同じ周期変数および同じ暗号化技法の値を使用して、記憶されたクエリトークンを計算し得る。いくつかの実装形態では、コンテンツサーバ114は、コンテンツサーバ114とクライアントデバイス112が完全に同期されていない場合(たとえば、異なる時間を提供するクロックなど、一致しない異なるソースからのデータに依存している場合)、デバイス識別子ごとに複数の記憶されたクエリトークンを記憶し得、これは、コンテンツサーバ114がデータベース116を検索して、クライアントデバイス112がクエリトークンを計算するために使用した値とは異なる周期変数の値に基づいて計算された記憶されたクエリトークンを探す場合に偽陰性を引き起こす可能性がある。
コンテンツサーバ114は、クライアントデバイス112がコンテンツサーバ114に送信したクエリトークンを、データベース116に記憶されたクエリトークンと比較し得る。コンテンツサーバ114が一致するクエリトークンを識別する場合、コンテンツサーバ114は、一致が見つかったことを示す信号をクライアントデバイス112に送信し得る。いくつかの実装形態では、コンテンツサーバ114はまた、クライアントデバイス112に関して以前に記憶された情報を(たとえば、別個のデータベースから、または同じデータベース内のトークン識別子に関連付けられて)検索し得、また、コンテンツサーバ114がクライアントデバイス112のために収集したデータのカテゴリを示す信号を送信し得る。しかしながら、コンテンツサーバ114が一致する値がないと決定した場合、コンテンツサーバ114は、一致が見つからなかったことを示す信号をクライアントデバイス112に送信し得、その結果、コンテンツサーバ114は、クライアントデバイス112に関するデータを収集しなかった。クライアントデバイス112は、クライアントデバイス112に関するデータを収集したコンテンツサーバの数を決定するために、任意の数のコンテンツサーバに同様のクエリを送信し得る。
有利なことに、シーケンス110に示されるように、クライアントデバイス112は、クライアントデバイス112のデバイス識別子に暗号化技法を使用するので、クライアントデバイスは、それ自体を個別に識別し、クライアントデバイス112に関連付けられるデバイス識別子をコンテンツサーバに提供することなく、様々なコンテンツサーバにクエリを送信し得る。クライアントデバイス112に関するデータを収集したコンテンツサーバは、クライアントデバイス112が送信するクエリトークンに基づいてクライアントデバイス112に関連付けられるデバイス識別子を識別できる場合があるが、これらのコンテンツサーバは、データベースに記憶されたクライアントデバイス112のデバイス識別子をすでに有している。コンテンツサーバのデータベースに一致するクエリトークンがないと決定したコンテンツサーバは、デバイス識別子で実行される暗号化技法のために、クエリトークンからクライアントデバイス112を識別できない場合がある。たとえば、シーケンス110において、コンテンツサーバは、識別子「27D2C8BC4」をそのデータベースに追加することができる場合があるが、この識別子は、コンテンツサーバに知られていない周期変数およびデバイス識別子に基づいて計算されるので、後続の識別子を計算できない場合がある(たとえば、周期識別子の次の値の場合)。したがって、以前にコンテンツサーバに知られていなかったクライアントデバイスに関する情報を取得しようとする試みは、せいぜい短時間しか有効ではない可能性がある。その結果、これらのコンテンツサーバは、クエリを送信したデバイスの情報(たとえば、デバイス識別子)を識別せずに、データベースに一致するクエリがないことを示す信号をクライアントデバイス112に送り返すことができるだけである可能性がある。
たとえば、次に図2を参照すると、いくつかの実装形態による、安全な識別情報検索のためのシステム200の実装形態が示されている。システム200は、クライアントデバイス202、ネットワーク216、およびコンテンツサーバ218を含むように示されている。クライアントデバイス202は、異なるサードパーティに関連付けられるウェブページおよびドメインにアクセスすることによってインターネットを閲覧することができる。クライアントデバイス202は、ネットワーク216を介してインターネットを閲覧することができる。ネットワーク216は、同期または非同期ネットワークを含むことができる。クライアントデバイス202がインターネットを閲覧するとき、コンテンツサーバ(たとえば、コンテンツサーバ218)は、クライアントデバイス202に関するデータを収集および記憶することができる。データは、クライアントデバイス202の1つまたは複数の特性(地理的位置、訪問されたウェブページ、訪問されたウェブページのコンテンツ、IPアドレスなど)を含み得る。コンテンツサーバは、クライアントデバイス202に関連付けられるデバイス識別子を識別し、デバイス識別子をコンテンツサーバのデータベースに記憶し得る。クライアントデバイス202は、コンテンツサーバ218がクライアントデバイス202に関する特性(たとえば、データ)を記憶しているかどうかの識別のために、コンテンツサーバ218に(たとえば、クエリ)要求を送信し得る。
クライアントデバイス202は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルコンピュータ、タブレットコンピュータ、ウェアラブルコンピュータ、埋込み型コンピュータ、スマートテレビ、セットトップボックス、コンソール、モノのインターネット(IoT)デバイスまたはスマートアプライアンスを含む任意のタイプおよび形態のメディアデバイスまたはコンピューティングデバイス、あるいは他のタイプおよび形式のコンピューティングデバイスを備え得る。クライアントデバイスは、クライアント、デバイス、クライアントデバイス、ユーザデバイス、コンピューティングデバイス、匿名化されたコンピューティングデバイス、または他のそのような用語と、様々に呼ばれ得る。クライアントデバイスは、ローカルエリアネットワーク(LAN)、インターネットなどのワイドエリアネットワーク(WAN)、衛星ネットワーク、ケーブルネットワーク、ブロードバンドネットワーク、光ファイバネットワーク、マイクロ波ネットワーク、セルラーネットワーク、ワイヤレスネットワークなどを含む、任意の適切なネットワーク、あるいはこれらまたは他のそのようなネットワークの任意の組合せを介してデータを受信し得る。多くの実装形態では、ネットワークは、同じまたは異なるタイプの複数のサブネットワークを含み得、ゲートウェイ、モデム、ファイアウォール、ルータ、スイッチなどを含む複数の追加のデバイス(図示せず)を含み得る。
クライアントデバイス202は、コンテンツサーバ(たとえば、コンテンツサーバ218)から、コンテンツサーバがクライアントデバイス202に関するデータを収集したかどうかを示す識別情報を安全に取得するように構成された1つまたは複数のクライアントデバイスを備え得る。クライアントデバイス202は、いくつかの実装形態では、プロセッサ204およびメモリ206を含むように示されている。クライアントデバイス202内の1つまたは複数のコンポーネントは、クライアントデバイス202内の各コンポーネントと、コンテンツサーバ218および他のコンテンツサーバ(図示せず)などの外部コンポーネントとの間の通信を容易にすることができる。
プロセッサ204は、いくつかの実装形態では、クライアントデバイス202内のメモリ206内のモジュールおよび/またはコンポーネントに対して命令を実行するように構成された1つまたは複数のプロセッサを備え得る。いくつかの実装形態では、メモリ206は、変数レトリバ208、クエリトークン計算機210、ブラウザ212、および復号化器214を含むように示されている。メモリ206は、任意の数のコンポーネントを含み得る。各コンポーネント208、210、212、および214の動作を実行するために、メモリ206内のモジュールに対して命令を実行することによって、プロセッサ204は、コンテンツサーバ218(または、他の任意のコンテンツサーバ)が、コンテンツサーバ218がクライアントデバイス202に関するデータを収集したかどうかを決定するために、クライアントデバイス202によって行われた要求からクライアントデバイス202を識別することを防ぐことができる。
簡単に概説すると、プロセッサ204は、コンテンツサーバ218がまだそれを有していない場合、クライアントデバイス202のデバイス識別子をコンテンツサーバ218に提供する(または、限られた期間のみ有効であり得、そこから他の後続の識別子またはトークンを計算することができない、ハッシュ化された識別子またはトークンを提供する)ことなく、クライアントデバイス202を一意に識別するクエリトークンを計算することができる。プロセッサ204は、時間とともに変化する周期変数の値を検索することができる。プロセッサ204は、連結識別子を計算するために周期変数の値をクライアントデバイス202のデバイス識別子と連結することができ、または、それ以外の場合は、周期値とデバイス識別子を組み合わせることができる(たとえば、乗算、ビット単位のXORなど、一般に連結識別子と呼ばれる)。プロセッサ204は、コンテンツサーバ218がクライアントデバイス202に関して1つまたは複数の特性を有するかどうかを決定するために、連結識別子をクエリにおいてコンテンツサーバ218に送信することができる。プロセッサ204は、コンテンツサーバ218から暗号化された回答を受信することと、クライアントデバイス202の公開鍵で暗号化することと、クライアントデバイス202に固有の秘密鍵を使用して回答を復号化することとを行うことができる。いくつかの実施形態では、回答または応答が暗号化されない場合がある(たとえば、追加データなしの否定応答または肯定応答が使用される実装形態、またはトランスポート層セキュリティなどの傍受を防ぐために他のセキュリティ対策が利用される実装形態)。
メモリ206は、変数レトリバ208を含むように示されている。変数レトリバ208は、いくつかの実装形態では、周期変数の値を検索するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。変数レトリバ208は、場合によっては、クライアントデバイス202の管理者またはユーザから、どのコンテンツサーバがクライアントデバイス202に関するデータを収集したかを決定するために、様々なコンテンツサーバ218にクエリを実行する要求を受信し得る。要求を受信すると、変数レトリバ208は、周期変数の値を検索し得る。
周期変数は、時間の経過とともに継続的に変化する値を持つ変数であり、場合によっては管理者によって決定され得、したがって、2つの独立したパーティが同じ情報を与えられたときに周期変数の同じ値を独立して検索し得る。値は、英数字および/または記号を含む文字列であり得る。たとえば、周期変数は、シカゴの現在の時刻(たとえば、9:00PMまたは21:00)であり得る。2つの異なる場所にいる2つのパーティが同時にシカゴの現在時刻を検索する可能性がある場合、両方のパーティが同じ値を検索する可能性がある。そのパーティが最初の検索から5分後にシカゴの現在時刻を検索した場合、2つのパーティは最初の検索時とは異なる時刻を検索するが、パーティは互いに同じ時刻を検索する。この例では、時刻が値である可能性がある。周期変数の他の例には、これらに限定されないが、指定されたタイムゾーンにおける現在の日付(たとえば、6/21/19)、ニューヨーク証券取引所の株式の終値(たとえば、200ドル)、設定された頻度で継続的に増加するナンス値などがある。したがって、周期変数は、周期的に更新され、クライアントデバイスとコンテンツサーバの両方によって独立して決定可能または検索可能である任意の情報または情報の組合せを備え得る。
説明したように、周期変数の値は、任意の形式で表されてよく、任意のタイプの文字または記号を含み得る。たとえば、ニューヨーク証券取引所の株式の現在価値は、200ドルまたは200の文字列で表されてよく、現在の日付は、6/21/19または6-21-19の文字列で表されてよく、現在の時刻は文字列9:00PMまたは21:00で表されてよい。値は任意の形式で表され得る。管理者は、周期変数の値のタイプおよび形式を決定し得る。
変数レトリバ208は、周期変数に応じて、クライアントデバイス202の様々なデータベースから、またはネットワーク216を介して様々なサーバからそれらを検索することによって、周期変数の値を検索し得る。たとえば、周期変数がシカゴの現在の日付である場合、クライアントデバイス202は、シカゴの現在の日付に基づいて内部カレンダを維持し、内部カレンダから現在の日付を識別し得る。場合によっては、変数レトリバ208は、ネットワーク216全体のサーバからの周期変数の値を識別し得る。一例では、変数レトリバ208は、ニューヨーク証券取引所の株式の現在の値を識別し、ネットワーク216を介してそのようなデータを記憶するサーバから検索し得る。変数レトリバ208は、任意のソースから値を識別して検索し得る。
メモリ206は、クエリトークン計算機210を含むように示されている。クエリトークン計算機210は、いくつかの実装形態では、クエリトークンを計算し、それらをコンテンツサーバ218に送信するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。クエリトークンは、周期変数の値と連結されたデバイス識別子の一方向ハッシュである場合がある。クエリトークン計算機210は、変数レトリバ208によって検索された周期変数の値と、クライアントデバイス202に関連付けられるデバイス識別子とを識別し得る。クエリトークン計算機210は、連結されたデバイス識別子を取得するために、周期変数の値をデバイス識別子の終わりまたは始まりに連結することができ、または周期変数とデバイス識別子を組み合わせるために他の動作(たとえば、乗算、加算、減算など)を実行し得る。場合によっては、クエリトークン計算機210は、周期変数の値の複数のインスタンスをデバイス識別子に連結することができる。
クエリトークン計算機210は、クエリトークンを取得するために、連結されたデバイス識別子に対して暗号化技法を実行することができる。暗号化技法は、一方向ハッシュ(たとえば、SHA-1、SHA-256、SHA-512、MD5など)などの一方向暗号化技法である可能性がある。有利なことに、連結されたデバイス識別子に一方向暗号化技法を使用することによって、クエリトークン計算機210は、デバイス識別子を平文に回復するために、第2のパーティまたはデバイス(たとえば、コンテンツサーバ218)によって解読できないクエリトークンを計算することができ(ただし、第2のパーティまたはデバイスが、デバイス識別子が何であるか、周期変数の値が何であるか、クエリトークンを計算するためにどの暗号化技法が使用されたかを知っている場合、第2のパーティまたはデバイスは一致する値を有するトークンを生成し得る)、基になるデータ(たとえば、デバイス識別子やおよび周期変数の値)が一致することを識別するために、生成されたトークンとクエリトークンを比較し得る。その結果、クライアントデバイス202は、コンテンツサーバがまだそれを有していない場合、クライアントデバイス202のデバイス識別子をコンテンツサーバに提供することなく、任意のコンテンツサーバにクエリトークンを送信し得る。
クエリトークンをコンテンツサーバ218に送信するとき、クエリトークン計算機210またはクライアントデバイス202の他の任意のコンポーネントは、クエリトークンが含まれるメッセージに、クライアントデバイス202に関連付けられる秘密鍵を用いてデジタル署名し得る。以下に説明するように、コンテンツサーバ218がクライアントデバイス202に関するデータを収集した場合、コンテンツサーバ218は、クライアントデバイス202のデバイス識別子に関連付けられる公開鍵を検索し、デジタル署名に基づいて、クエリトークンを含むメッセージが、デバイス識別子に関連付けられるクライアントデバイスから受信されたことを検証する。コンテンツサーバ218が、メッセージがクライアントデバイス202によって送信されなかったと決定した場合(たとえば、デジタル署名検証が失敗した場合)、コンテンツサーバ218は、メッセージに応答しない、および/またはコンテンツサーバ218がメッセージを送信したコンピューティングデバイスと接続しているTCP/IPソケット接続をすべて切断する。
クエリトークン計算機210は、クエリトークンを計算する際に、計算されたクエリトークンをコンテンツサーバ218に送信することができる。いくつかの実装形態では、クエリトークン計算機210は、クエリトークン計算機210に関するデータを潜在的に収集する可能性があるコンテンツサーバのリストからコンテンツサーバ218を識別した後、計算されたクエリトークンをコンテンツサーバ218に送信し得る。クエリトークン計算機210は、ネットワーク216を介してリストを記憶するサーバからコンテンツサーバのリストをダウンロードすることができる。クエリトークン計算機210は、コンテンツサーバのリスト上の各コンテンツサーバを識別し、識別されたコンテンツサーバの各々または一部にクエリトークンを送信することができる。クライアントデバイス202は、リスト上の各コンテンツサーバから回答を受信し、クライアントデバイス202に関するデータを収集したコンテンツサーバの数を決定し得る。
コンテンツサーバ218は、いくつかの実装形態では、コンテンツサーバ218が様々なコンピューティングデバイス(たとえば、クライアントデバイス202)に関するデータを収集したかどうかを決定する際に安全な識別情報検索のために構成された1つまたは複数のサーバまたはプロセッサを備え得る。いくつかの実装形態では、コンテンツサーバ218は、プロセッサ220およびメモリ222を含むように示されている。簡単に概説すると、プロセッサ220を通じて、コンテンツサーバ218は、周期変数の値を検索することと、コンテンツサーバ218がデータを収集したクライアントデバイスに関連付けられる記憶されたクエリトークンを計算することと、クライアントデバイスからクエリトークンを受信することと、クエリトークンをデータベースに記憶されたクエリトークンと比較することと、データベース内の一致する記憶されたクエリトークンを識別することと、第2のデータベースから一致する記憶されたクエリトークンに関連付けられるデバイス識別子を検索することと、デバイス識別子に基づいてクライアントデバイス202の1つまたは複数の特性を検索することと、1つまたは複数の特性をクライアントデバイス202に送信することとを行うように構成することができる。コンテンツサーバ218内の1つまたは複数のコンポーネントは、コンテンツサーバ218内の各コンポーネントとクライアントデバイス202などの外部コンポーネントとの間の通信を容易にすることができる。コンテンツサーバ218は、複数の接続されたデバイス(たとえば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)を含むことができ、各デバイスは、必要な動作の一部を提供することができる。
プロセッサ220は、いくつかの実装形態では、コンテンツサーバ218内のメモリ222内のモジュールまたはコンポーネントに対して命令を実行するように構成された1つまたは複数のプロセッサを備え得る。いくつかの実装形態では、プロセッサ220は、メモリ222内でモジュールを実行し得る。いくつかの実装形態では、メモリ222は、変数レトリバ224、クエリトークン計算機226、構造ジェネレータ228、クエリトークンマッチャ230、暗号化器232、サーバアプリケーション234、識別子データベース236、および特性データベース238を含むように示されている。
メモリ222は、変数レトリバ224を含むように示されている。変数レトリバ224は、いくつかの実装形態では、周期的値の値を検索するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。変数レトリバ224は、クライアントデバイス202の変数レトリバ208が周期変数の値を検索する方法と同様の方法で、周期変数の値を検索し得る。変数レトリバ224は、クライアントデバイス202と通信してもよく、管理者から入力を受信してもよく、したがって、変数レトリバ224は、クライアントデバイス202の変数レトリバ208と同じタイプの、および/または同じソースから周期変数の値を検索する。たとえば、クライアントデバイス202の変数レトリバ208は、シカゴの現在の日付に対応する周期変数の値を検索するように構成され得る。コンテンツサーバ218の変数レトリバ224はまた、クライアントデバイス202との通信の結果として、または管理者入力から、シカゴの現在の日付に対応する周期変数の値を検索するように構成され得る。その結果、変数レトリバ208および変数レトリバ224は、本明細書に記載のプロセスを実行する際に、周期変数の同じ値を検索し得る(たとえば、変数レトリバ208および変数レトリバ224は同期され得る)。
変数レトリバ224は、周期変数の複数の値を検索し得る。たとえば、周期変数がシカゴの現在の日付である場合、変数レトリバ224は、シカゴの現在の日付、前日の日付から現在の日付までの日付、および/または現在の日付の翌日の日付の値を検索し得、したがって、クエリトークンが比較され得る周期変数の値のスライディングウィンドウを提供する。別の例では、周期変数がニューヨーク証券取引所の終値である場合、変数レトリバ224は、現在の日付および/または現在の日付の1日以上前の終値の株式に関連付けられる値を検索し得る。変数レトリバ224は、任意の数の値を検索し得る。
いくつかの実装形態では、変数レトリバ224は、クライアントデバイス202からのクエリトークンの受信に応答して周期変数の値を検索し得る。変数レトリバ224は、クエリトークンを受信することと、周期変数(たとえば、ニューヨークの時刻、ニューヨークの日付など)を識別することと、周期変数の対応する値を検索することとを行うことができる。有利なことに、クエリトークンを受信した後に周期変数を検索することによって、コンテンツサーバ218は、暗号化されたデバイス識別子の値をデータベースに継続的に記憶する必要がなく、メモリおよびストレージ空間を節約し得る。しかしながら、このような実装形態では、コンテンツサーバは、クエリトークンを処理する前に、データベース内のデバイス識別子ごとにトークンのセットを生成する必要がある場合があり、これには、大量の処理リソースが必要になる場合がある。同様の実装形態では、コンテンツサーバは、クエリトークンの受信後に検索された周期変数の値を使用して、データベース内の各識別子のトークンを繰り返し生成し、次の識別子に進む前に生成された各トークンを受信したクエリトークンと比較し、これにより、平均して処理時間が短縮される可能性がある(たとえば、識別子のサブセットのみを処理した後に一致が識別された場合)。他の実装形態では、以下で説明するように、一致しないトークンの処理時間を大幅に短縮するために、確率的データ構造が使用され得る。
メモリ222は、クエリトークン計算機226を含むように示されている。クエリトークン計算機226は、コンテンツサーバ218がデータを記憶した様々なデバイス識別子のクエリトークンを計算するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。クエリトークン計算機226は、クライアントデバイス202がクエリトークンを計算する方法と同様の方法で、デバイス識別子のクエリトークンを計算し得る。以下に説明する識別子データベース236のデータ構造に記憶される各デバイス識別子について、クエリトークン計算機226は、連結された記憶されたデバイス識別子を取得するために、周期変数の検索された値をデバイス識別子の終わりまたは始まりに連結し得る。クエリトークン計算機226は、記憶されたクエリトークンを計算するために、クライアントデバイス202がクライアントデバイス202の連結されたデバイス識別子に対して実行する暗号化技法に対応する(たとえば、同じである)連結された記憶されたデバイス識別子に対して暗号化技法を実行することができる。クエリトークン計算機226は、識別子データベース236内のデバイス識別子の各々または一部に関連付けられる記憶されたクエリトークンを計算し得る。
いくつかの実装形態では、クエリトークン計算機226は、識別子データベース236内のデバイス識別子ごとに複数の記憶されたクエリトークンを計算し得る。たとえば、以下の表に示されるように、クエリトークン計算機226は、昨日の日付、今日の日付、および明日の日付の値に対応するデバイス識別子について、記憶されたクエリトークンを計算し得る。
Figure 0007322283000001
表において、||は文字列(たとえば、デバイス識別子および周期変数の値)を連結する方法を示し、SHA256はSHA-256ハッシュ関数を示す。記憶されたクエリトークンを計算するために、任意のタイプの値または暗号化技法が使用され得る。表のデータは、以下に説明するように、識別子データベース236に記憶され得る。
いくつかの実装形態では、メモリ222は、識別子データベース236を含むことも示されている。識別子データベース236は、コンテンツサーバ218がデータを収集したコンピューティングデバイスに関連付けられるデバイス識別子を含む動的データベースであり得る。識別子データベース236は、グラフデータベース、MySQL、Oracle、Microsoft SQL、PostgreSql、DB2、ドキュメントストア、検索エンジン、Key-Valueストアなどであり得る。識別子データベース236は、任意の量のデータを保持するように構成することができ、任意の数のコンポーネントで構成することができる。デバイス識別子は、クエリトークン計算機226によって計算される記憶されたクエリトークンに関連付けることができる。デバイス識別子は、デバイス識別子をクエリトークン計算機226によって計算された記憶されたクエリトークンに一致させるルックアップテーブル(たとえば、ハッシュテーブル)に記憶されたクエリトークンに関連付けることができる。各デバイス識別子は、周期変数の異なる値に基づいて計算された複数の記憶されたクエリトークンと一致する場合がある。いくつかの実装形態では、デバイス識別子および対応する記憶されたクエリトークンは、識別子データベース236の確率的データ構造に関連付けられ得る。
いくつかの実装形態では、識別子データベース236の記憶されたクエリトークンは、コンテンツサーバ218によって固定または可変レートで識別子データベース236に定期的に追加および/または削除され得る。たとえば、ある日、クエリトークン計算機226は、今日の日付、昨日の日付、および明日の日付の値に基づいて、識別子データベース236内の各デバイス識別子のクエリトークンを計算し得る。2日目に、クエリトークン計算機226は、識別子データベース236から2日目の日付の2日前の日付に対応する記憶されたクエリトークンを削除し得る。クエリトークン計算機226はまた、2日後の日付の日付に対応するクエリトークンを識別子データベース236に追加し得る。その結果、識別子データベース236に記憶されたクエリトークンの数は、識別子データベース236の固定量のメモリを必要とするように、および/または記憶されたクエリトークンを記憶するために必要なメモリの量を減らすように制御され得る。
メモリ222は、構造ジェネレータ228を含むように示されている。構造ジェネレータ228は、クエリトークン計算機226によって計算された記憶されたクエリトークンに関連付けられる識別子データベース236のデータ構造を生成するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。データ構造は、確率的なデータ構造(たとえば、ブルームフィルタ、HyperLogLog、Count-Minスケッチなど)であり得る。ブルームフィルタの場合、構造ジェネレータ228は確率的データ構造を生成し得るので、データ構造は、記憶されたクエリトークンが確率的データ構造に関連付けられ得ることか、または記憶されたクエリトークンが確率的データ構造に確実に関連付けられないことを示すことができる。
構造ジェネレータ228は、記憶されたクエリトークンに関連付けられる配列として確率的データ構造を生成し得る。クエリトークン計算機226は、記憶されたクエリトークンごとにバイナリ配列(たとえば、バイナリ値の配列)を計算し、確率的データ構造の配列にバイナリ配列を追加し得る。たとえば、構造ジェネレータ228は、56の値を有する記憶されたクエリトークンのバイナリ配列を[1、1、1、0、0、0]と計算し得る。構造ジェネレータ228は、確率的データ構造と記憶されたクエリトークンのバイナリ配列との間でOR演算を実行することによって、確率的データ構造にバイナリ配列を追加し得る。構造ジェネレータ228は、識別子データベース236に記憶された各クエリトークンのバイナリ配列を確率的データ構造に追加し得る。いくつかの実装形態では、クエリトークン計算機226は、記憶されたクエリトークンをバイナリ配列としてすでに計算および/または記憶している可能性がある。
いくつかの実装形態では、構造ジェネレータ228は、記憶されたクエリトークンに対して様々なハッシュ関数を実行し、ハッシュ関数の出力に対応するインデックスを1つに設定することによって、確率的データ構造を生成し得る。出力に対応しないインデックスはゼロのままである可能性がある。
一致する記憶されたクエリトークンが識別子データベース236にあるかどうかを決定するためにクエリが行われるとき、以下に説明するクエリトークンマッチャ230は、クエリトークンマッチャ230がクライアントデバイス202から受信したクエリトークンのバイナリ配列を計算し得る。クエリトークンマッチャ230は、構造ジェネレータ228が確率的データ構造を生成するためにどのように構成されているかに応じて、クエリトークンの文字列をバイナリに変換するか(文字列がまだバイナリになっていない場合)、クエリトークンに対して様々なハッシュ関数を実行し、構造ジェネレータに応じて、ハッシュ関数の出力に対応する配列のインデックスを1に設定し、残りのインデックスはゼロのままにすることによって、バイナリ配列を計算することができる。クエリトークンマッチャ230がハッシュ関数を使用してバイナリ配列を計算する場合、クエリトークンマッチャ230は、クエリトークンのバイナリ配列を生成するために確率的データ構造を生成するために構造ジェネレータ228が使用したのと同じハッシュ関数を使用し得る。クエリトークンマッチャ230は、バイナリ配列のインデックス値を確率的データ構造の配列と比較し得る。クエリトークンマッチャ230は、クエリトークンのバイナリ配列のインデックスの「1」値を確率的データ構造の対応するインデックスと比較することができる(たとえば、クエリトークンと確率的データ構造との間でビット単位のAND演算を実行する)。比較の各インデックス値が1である場合、一致するクエリトークンが識別子データベース236にある可能性がある(偽陽性を許容する)。しかしながら、比較の1つのインデックス値がゼロである場合、一致するクエリトークンは識別子データベース236にない。そのような確率的なデータ構造またはフィルタは、偽陰性をもたらさない可能性があり、より集中的なトークンごとの比較を行う前に、一致が存在するかどうかをすばやく検証できる。
いくつかの実装形態では、構造ジェネレータ228は、データが識別子データベース236から削除される各インスタンスにおいて新しいデータ構造を生成することによって、確率的データ構造を更新し得る。構造ジェネレータ228は、新しいデータ構造を生成するために上記の技法を実行し得る。たとえば、クエリトークン計算機226が、今日の日付、昨日の日付、および明日の日付に対応する周期変数の値について、記憶されたクエリトークンを毎日計算する場合、識別子データベース236は、それが内部カレンダおよび時計に基づいて新しい日であると決定すると、昨日の日付の前日の日付に対応する記憶されたクエリトークンを削除し、明日の日付に基づいて新しい記憶されたクエリトークンを識別子データベース236に追加するように構成され得る。構造ジェネレータ228は、識別子データベース236内の更新されたデータに対応する新しいデータ構造を毎日生成し得る。
いくつかの実装形態では、毎日新しいデータ構造を生成する代わりに、構造ジェネレータ228は、カウントフィルタを生成し得る。カウントフィルタはブルームフィルタと同様であり得るが、各インデックスが1または0の値を有する代わりに、カウントフィルタは、インデックスに1つの値を有する記憶されたクエリトークンの数に対応する各インデックス値のカウンタを増分し得る。たとえば、3つの記憶されたクエリトークンが同じインデックスに1つの値を有する場合、確率的データ構造のインデックスは3の値を有し得る。データ構造ジェネレータ228は、記憶されたクエリトークンを削除および/またはカウントフィルタに追加するので、インデックスの値は、それぞれ、減少または増加し得る。クエリトークンマッチャ230がクエリトークンをカウントフィルタと比較するとき、クエリトークンマッチャ230は、クエリトークンが識別子データベース236に一致するクエリトークンを有するかどうかを決定するために、各インデックス値が1またはゼロではなく、非ゼロまたはゼロであるかどうかを決定することができる。
メモリ222は、クエリトークンマッチャ230を含むように示されている。クエリトークンマッチャ230は、識別子データベース236に一致する記憶されたクエリトークンがあるかどうかを決定するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。クエリトークンマッチャ230は、コンテンツサーバ218がクライアントデバイス202から受信するクエリトークンを、識別子データベース236のデータ構造および/または識別子データベース236の記憶されたクエリトークンと比較し得る。クエリトークンマッチャ230が、識別子データベース236に一致する記憶されたクエリトークンがあると決定した場合、クエリトークンマッチャ230は、一致する記憶されたクエリトークンを識別し得る。クエリトークンマッチャ230は、記憶されたクエリトークンおよび対応するデバイス識別子を記憶する識別子データベース236のルックアップテーブルから、一致する記憶されたクエリトークンを識別し得る。
クエリトークンマッチャ230は、コンテンツサーバ218がクライアントデバイス202から受信したクエリトークンを確率的データ構造と比較することによって、一致するクエリトークンがあると決定し得る。クエリトークンマッチャ230は、コンテンツサーバ218がクライアントデバイス202から受信したクエリトークンを識別し、それを、上記のように、識別子データベース236のデータ構造に関連付けられるブルームフィルタと比較することができる。クエリトークンマッチャ230は、クエリトークンが識別子データベース236に一致する記憶されたクエリトークンを有するかどうかを示すバイナリ値(たとえば、はい、またはいいえ)を決定し得る。クエリトークンマッチャ230は、一致する記憶されたクエリトークンがある場合は真の回答を受信し、一致する記憶されたクエリトークンがない場合は偽の回答を受信することができる。クエリトークンマッチャ230が偽の回答を受信した場合、暗号化器232は、一致がなかったことを示す信号をクライアントデバイス202に送信し得る。クエリトークンマッチャ230が真の回答を受信した場合、暗号化器232は、一致があったことを示す信号をクライアントデバイス202に送信し得る。
いくつかの実装形態では、クエリトークンマッチャ230が確率的データ構造との比較に基づいて一致があったと決定した場合、クエリトークンマッチャ230は、クエリトークンを識別子データベース236内のルックアップテーブルの記憶されたクエリトークンと比較し得る。有利なことに、クエリトークンを識別子データベース236内のルックアップテーブルと比較することによって、クエリトークンマッチャ230は、確率的データ構造との比較に基づいて生成される可能性がある偽陽性の可能性を排除または削減することができる。いくつかの実装形態では、クエリトークンマッチャ230は、クエリトークンを確率的データ構造と比較することなく、最初にクエリトークンをルックアップテーブルと比較し得る。クエリトークンマッチャ230は、コンテンツサーバ218がクライアントデバイス202から受信したクエリトークンと同じハッシュ値(たとえば、文字列)を有する記憶されたクエリトークンをクエリトークンマッチャ230が識別する場合、識別子データベース236に一致するクエリトークンがあると決定し得る。クエリトークンマッチャ230は、クエリトークンマッチャ230が、一致するハッシュ値を有する記憶されたクエリトークンを識別しない場合、一致するクエリトークンがないと決定し得る。
メモリ222は、暗号化器232を含むように示されている。暗号化器232は、クライアントデバイス202からのクエリに応答してコンテンツサーバ218がクライアントデバイス202に送信する回答を暗号化するためのアプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。クエリトークンマッチャ230が識別子データベース236に一致する記憶されたクエリトークンを識別しない場合、暗号化器232は、クライアントデバイス202に、ランダム文字列またはヌルデータ文字列を送信し得る。一例では、ランダム文字列は、タイムスタンプの複数のインスタンスを含み得る。その結果、クライアントデバイス202がランダム文字列またはヌルデータ文字列を受信すると、クライアントデバイス202はそれを復号化して、それがランダムであると決定しようとし得る。文字列がランダムであるという決定に基づいて、クライアントデバイスは、コンテンツサーバ218がクライアントデバイス202に関する情報を記憶していない可能性があると決定し得る。有利なことに、タイムスタンプの複数のインスタンスを含めることによって、暗号化のエントロピを増加させることができ、サードパーティがコンテンツサーバ218からクライアントデバイス202への信号を復号化することをより困難にする。コンテンツサーバ218からの回答を傍受するコンテンツサーバまたは他のサードパーティは、ランダム文字列またはヌルデータ文字列の意味を復号化または知ることができない可能性がある。
しかしながら、クエリトークンマッチャ230が、識別子データベース236に一致するクエリトークンがあると決定した場合、暗号化器232は、一致するクエリトークンに関連付けられるデバイス識別子を識別し、デバイス識別子を特性データベース238内のルックアップテーブルと比較し得る。識別子データベース236内のデバイス識別子の各々または一部は、公開鍵に関連付けられ得る。公開鍵は、特性データベース238に記憶され、デバイス識別子に関連付けられ得る。暗号化器232は、デバイス識別子を特性データベース238の表と比較し、デバイス識別子に関連付けられる公開鍵を検索し得る。暗号化器232は、暗号化器232が公開鍵を用いてクライアントデバイス202に送り返す回答を暗号化し得る。暗号化された回答は、コンテンツサーバ218がクライアントデバイス202に関するデータおよび/またはコンテンツサーバ218がクライアントデバイス202に関して記憶した情報および情報のカテゴリを含む1つまたは複数の特性を収集したことを示す識別を含み得る。暗号化器232は、暗号化された回答をクライアントデバイス202に送信し得る。クライアントデバイス202の復号化器214は、以下に説明するように、暗号化された回答を復号化することができる。
いくつかの実装形態では、暗号化器232は、ナンス値およびタイムスタンプを使用して、クライアントデバイス202に送信される回答をさらに暗号化し得る。暗号化器232は、回答を暗号化するために次の式を使用することができる。
Answerencrypted=PiblicKeyEncryption(KeypublicAnswerplaintext||nonce||timestamp)
上記のように、||は、別の文字列の値を1つの文字列に連結することを示している。Answerplaintextは、暗号化器232が暗号化する回答であり得、クライアントデバイス202に関して記憶された情報の識別子を含み得る。暗号化器232は、絶えず増分しているカウンタ(たとえば、時間に対応する増分、サーバ218とクライアントデバイス202との間で送信されるメッセージなど)の使用を通じて、ナンスの値を検索し得る。ナンスは、コンテンツサーバ218とクライアントデバイス202との間で同期され得るので、クライアントデバイス202は、暗号化器232が回答を暗号化するために使用したナンスを知るであろう。いくつかの実装形態では、ナンスの全部または一部が回答とともにクライアントデバイス202に送信され得、クライアントデバイス202がナンスを識別して回答を復号化できるようにするか、またはクエリの一部としてクライアントデバイス202から受信され得る。暗号化器232は、サーバ218の内部時計から時間を検索することによってタイムスタンプを生成し得る。ナンスおよびタイムスタンプの各々は、任意の順序および任意の回数で回答と連結され得る。
いくつかの実装形態では、メモリ222はまた、特性データベース238を含むように示されている。特性データベース238は、デバイス識別子、デバイス識別子に関連付けられる公開鍵、およびデバイス識別子に関連付けられるコンピューティングデバイスの1つまたは複数の特性を含む動的データベースであり得る。公開鍵に対応する秘密鍵は、デバイス識別子または同じユーザの他のデバイスに関連付けられるデバイスに機密情報として記憶され得る。特性データベース238は、グラフデータベース、MySQL、Oracle、Microsoft SQL、PostgreSql、DB2、ドキュメントストア、検索エンジン、Key-Valueストアなどであってよい。特性データベース238は、任意の量のデータを保持するように構成することができ、任意の数のコンポーネントで構成することができる。デバイス識別子は、クエリトークン計算機226によって計算される記憶されたクエリトークンに関連付けられ得る。デバイス識別子は、識別子データベース236の対応するデバイス識別子に関連付けられ得る。特性データベース238のデバイス識別子の各々または一部は、公開鍵および/あるいは1つまたは複数の特性に関連付けられ得る。公開鍵および/あるいは1つまたは複数の特性は、対応するデバイス識別子と一致するルックアップテーブルに記憶され得る。1つまたは複数の特性は、デバイス識別子に関連付けられるクライアントデバイスの地理的位置、訪問されたウェブページ、訪問されたウェブページのコンテンツなどのうちの1つまたは複数を含み得る。1つまたは複数の特性は、クライアントデバイスまたはクライアントデバイスと対話するユーザの任意の特性、あるいはクライアントデバイスまたはユーザの推論された特性を含み得る。
暗号化器232は、クライアントデバイス202の識別されたデバイス識別子に関連付けられる公開鍵と、クライアントデバイス202の1つまたは複数の特性のデータとの両方を識別および検索するために、識別されたクライアントデバイス識別子を特性データベース238と比較し得る。公開鍵を使用して、暗号化器232は、回答に1つまたは複数の特性を含む信号を暗号化し、暗号化された信号をクライアントデバイス202に送信し得る。
さらに図2を参照すると、クライアントデバイス202のメモリ206は、復号化器214を含むように示されている。復号化器214は、コンテンツサーバ218から暗号化された信号を受信および復号化するために、アプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。復号化器214は、クライアントデバイス202のデータベース(図示せず)からクライアントデバイス202に固有の秘密鍵にアクセスし得る。復号化器214は、暗号化された信号の回答を処理して、コンテンツサーバ218がクライアントデバイス202に関するデータを収集したかどうかを決定するために、秘密鍵を使用して暗号化された信号を復号化し得る。さらに、復号化器214は、コンテンツサーバ218がクライアントデバイス202に関するデータを収集したことを示す信号を送信する場合、コンテンツサーバ218が収集したデータのカテゴリを決定することができる。
いくつかの実装形態では、クライアントデバイス202に関するデータを収集したコンテンツサーバの数および各コンテンツサーバが収集したデータのカテゴリを決定するために、クライアントデバイス202は、クエリトークンを複数のコンテンツサーバに送信し得る。復号化器214は、クライアントデバイス202の識別子がコンテンツサーバのデータベースにあることを示す信号をクライアントデバイス202に送信する各コンテンツサーバのカウンタを増分および維持し得る。いくつかの実装形態では、復号化器214はまた、各カテゴリに関連付けられるクライアントデバイス202のデータを有するコンテンツサーバの数について、データの各カテゴリに関連付けられるカウンタを増分および維持し得る。カテゴリカウンタを通じて、クライアントデバイス202は、各カテゴリに関連付けられるデータを有するコンテンツサーバの数のカウントを決定し得る。
別の実装形態では、システム200を実装して、クライアントデバイスのブラウザが、どのコンテンツサーバがブラウザに関連付けられるデータを有するかを決定できるようにすることができる。ブラウザがコンテンツサーバに関連付けられるドメインにアクセスしたときに、コンテンツサーバがブラウザに関連付けられるデータを収集した可能性がある。場合によっては、複数のコンテンツサーバが単一のドメインに関連付けられ得る。場合によっては、単一のコンテンツサーバが複数のドメインに関連付けられ得る。コンテンツサーバは、クッキー(たとえば、サードパーティのクッキー)を使用してブラウザからデータを収集し得る。クッキーの値はコンピューティングデバイスに固有である可能性があるため、クッキーはコンピューティングデバイスのデバイス識別子である可能性がある。クッキーはまた、様々なドメインに関連付けられ得る。場合によっては、複数のコンテンツサーバが、ブラウザのクッキーによって提供される同じ情報にアクセスし得る。そのような場合、各コンテンツサーバはクッキーから同じ情報または同じ情報の一部を取得し得る。たとえば、コンピューティングデバイスのブラウザに記憶されたクッキー(および、クッキーの値)は、第1のドメインおよび第2のドメインに関連付けられ得る。1つのコンテンツサーバが第1のドメインに関連付けられてよく、別のコンテンツサーバが第2のドメインに関連付けられてよい。その結果、2つのコンテンツサーバが異なるドメインに関連付けられている場合でも、各コンテンツサーバはクッキーからコンピューティングデバイスのブラウザのデータを受信する可能性がある。
システム200は、クッキーを使用してブラウザに関するデータを収集したコンテンツサーバを決定する方法を提供する。たとえば、クライアントデバイス202は、ブラウザ212を含むように示されている。ブラウザ212は、コンテンツサーバがブラウザ212に関するデータを収集したかどうかを決定するためにコンテンツサーバ218に送信するクッキークエリトークンを生成するために、アプリケーション、サーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。ブラウザ212は、コンテンツサーバにクエリを実行し、どのコンテンツサーバ(たとえば、コンテンツサーバ218)がブラウザ212およびデータが分類され得る任意のカテゴリに関するデータを収集したかを決定するために、変数レトリバ208および/またはクエリトークン計算機210によって実行される動作と同様の動作を実行することができる。ブラウザと呼ばれるが、ブラウザ212は、生産性アプリケーション、メディアアプリケーション、ゲームアプリケーション、ウェブブラウザアプリケーション、または他のそのようなアプリケーションの一部として含む、コンテンツサーバと通信するための任意のタイプおよび形式のアプリケーションを備え得る。
ブラウザ212は、コンテンツサーバの様々なアプリケーション(たとえば、コンテンツサーバ218)に送信して、どのコンテンツサーバがブラウザ212に関するデータを収集したかを決定するために、ブラウザクエリトークンを生成することができる。ブラウザ212は、ネットワーク216全体の様々なサーバから、またはクライアントデバイス202の内部データベースから、周期変数の値(たとえば、シカゴにおける時刻、シカゴにおける日付、ニューヨーク証券取引所の終値における株式の価値など)を検索することができる。ブラウザ212はまた、クライアントデバイス202に記憶されたファイルから、ブラウザ212がクエリを実行しているコンテンツサーバに関連付けられるドメインに関連付けられる、およびブラウザ212に固有であり得るクッキーの値(たとえば、クッキー値)を取得および/または識別し得る。ブラウザ212は、ドメインのドメイン識別子(たとえば、www.example.com)をさらに検索し得る。ブラウザ212は、連結されたクッキー識別子を取得するために検索された値を連結し得、連結されたクッキー識別子をクッキークエリトークンに暗号化するためにSHA-256などの暗号化技法を実行し得る。このプロセスの例示的な式を以下に示す。
Browser query token=SHA256(Cookie Value||domain||today's date)
この例では、今日の日付は、現在の日付に対応する周期変数の値である。ブラウザ212は、コンテンツサーバ218および同じドメインおよび/またはクッキーに関連付けられる他のサーバがブラウザ212に関するデータを収集したかどうかを決定するために、ブラウザクエリトークンを計算し、ドメインに関連付けられるコンテンツサーバに送信し得る。
コンテンツサーバ218は、サーバアプリケーション234を含むように示されている。サーバアプリケーション234は、クライアントデバイス(たとえば、クライアントデバイス202)からクッキークエリトークンを受信し、サーバアプリケーション234がクライアントデバイスのブラウザ(たとえば、ブラウザ212)に関連付けられるデータを収集したかどうかを決定するためのアプリケーション、サーバ、FTPサーバ、HTTPサーバ、サービス、デーモン、ルーチン、または他の実行可能ロジックを備え得る。サーバアプリケーション234は、サーバアプリケーション234がデータを収集したブラウザの各々または一部について、記憶されたクッキークエリトークンを計算し得る。サーバアプリケーション234は、クライアントデバイス202のブラウザ212が周期変数の値を検索するのと同様の方法で周期変数の値を検索することによって、記憶されたクッキークエリトークンを計算し得る。サーバアプリケーション234は、ブラウザ212と同じ情報(たとえば、同じ変数)および/またはデータソースに基づいて周期変数の値を検索し得るので、サーバアプリケーション234が検索する値は、ブラウザ212が検索する値と一致し得る。サーバアプリケーション234は、記憶されたクッキークエリトークンを計算するために周期的な間隔で値を検索し得る。たとえば、サーバアプリケーション234およびブラウザ212の両方は、今日の日付(たとえば、02-3-2019)に関連付けられる値を検索するように構成され得る。サーバアプリケーション234は、コンテンツサーバ218の内部カレンダから今日の日付の値を検索し得、一方、ブラウザ212は、クライアントデバイス202の内部カレンダから今日の日付の値を検索し得る。クライアントデバイス202およびコンテンツサーバ218のカレンダは同期され得るので、サーバアプリケーション234およびクライアントデバイス202の両方が同じ値を検索し得る。さらに、クライアントデバイス202およびコンテンツサーバ218は、同じ形式で同じ値を検索し得る。
いくつかの実装形態では、サーバアプリケーション234は、複数の記憶されたクッキークエリトークンを計算するために、周期変数の複数の値を検索し得る。たとえば、周期変数が今日の日付に関連付けられている場合、サーバアプリケーション234は、現在の日付の今日の日付、明日の日付、および昨日の日付の値を検索し得る。サーバアプリケーション234は、任意の周期変数に関連付けられる任意の数の値を検索し得る。
サーバアプリケーション234は、サーバアプリケーション234に関連付けられるドメインに関連付けられる各クッキーについて、記憶されたクッキークエリトークンを計算し得る。サーバアプリケーション234は、クッキー値をドメイン(たとえば、ドメイン識別子)および周期変数の検索された値と連結することによって、記憶されたクッキークエリトークンを計算し得る。上記の例を続けると、サーバアプリケーション234は、ブラウザ212のクッキー値を、ドメインの値(たとえば、クッキーに関連付けられるドメインの名前)および今日の日付と連結し得る。サーバアプリケーション234は、記憶されたクッキークエリトークンを計算するためにブラウザ212によって実行される暗号化技法と一致する暗号化技法を実行し得る。場合によっては、ドメインのクッキー値は、複数のコンテンツサーバ間(たとえば、クッキーコンソーシアム内)で共有され得、それぞれが独自のドメインを有する。そのような場合、記憶されたクッキーエリトークンは、以前にクッキーをドロップまたは作成した(たとえば、クッキーを所有している)ドメインの値に関連付けられている(たとえば、タグ付けされている)場合がある。ドメインのクッキー値がどのコンテンツサーバとも共有されていないが、ドメインのコンテンツサーバ218と共有されている場合、記憶されているクッキークエリトークンはドメインの値に関連付けられない可能性がある。
いくつかの実装形態では、サーバアプリケーション234は、様々なブラウザに関連付けられるクッキーごとに、複数の記憶されたクッキークエリトークンを計算し得る。たとえば、以下のルックアップテーブルに示されるように、サーバアプリケーション234は、昨日の日付、今日の日付、および明日の日付の周期変数の値に関連付けられる各クッキーの記憶されたクッキークエリトークンを計算し得る。
Figure 0007322283000002
ルックアップテーブルは、サーバアプリケーション234が様々なブラウザに関連付けられるクッキーのために記憶した可能性のあるルックアップテーブルを例示している。サーバアプリケーション234は、計算された記憶されたクッキークエリトークンを識別子データベース236に記憶し得る。サーバアプリケーション234は、データベース内の任意の数のクッキーに対して任意の数の記憶されたクッキークエリトークンを記憶し得る。いくつかの実装形態では、経過する日ごとに、サーバアプリケーション234は、昨日の日付の値に関連付けられる記憶されたクッキークエリトークンを削除し、明日の日付の値に関連付けられる新しい記憶されたクッキークエリトークンを計算し得る。
いくつかの実装形態では、記憶されたクッキークエリトークンは、上記の確率的データ構造と同様の確率的データ構造(たとえば、ブルームフィルタ)に関連付けられ得る。サーバアプリケーション234は、識別子データベース236に一致する記憶されたクッキークエリトークンがあるかどうかを決定するために、サーバアプリケーション234がブラウザ212から受信したクッキークエリトークンを確率的データ構造と比較し得る。サーバアプリケーション234は、クッキークエリトークンを確率的データ構造と比較し、データベースに一致するクッキークエリトークンがあるかどうかに関して、バイナリのはい、またはいいえの回答を決定し得る。はいの回答は、識別子データベース236に一致する記憶されたクッキークエリトークンが存在する可能性が高いことに対応し得、一方、いいえの回答は、識別子データベース236に一致するクッキークエリトークンが存在しないことに対応し得る。
サーバアプリケーション234は、ブラウザ212を介してクライアントデバイス202からクッキークエリトークンを受信し、クッキークエリトークンがデータベースに記憶された任意の記憶されたクッキークエリトークンと一致するかどうかを決定し得る。サーバアプリケーション234は、識別子データベース236内に一致する記憶されたクッキークエリトークンがあるかどうかを決定するために、クッキークエリトークンを識別子データベース236内のルックアップテーブルの記憶されたクッキークエリトークンと比較し得る。一致する記憶されたクッキークエリトークンがある場合、それは、サーバアプリケーション234が、ブラウザ212に関連付けられるクッキーを通じてブラウザ212に関するデータを収集したことを示し得る。そのような場合、サーバアプリケーション234は、一致するクッキークエリトークンが存在することを確認し、識別子データベース236のルックアップテーブルの記憶されたクッキークエリトークンとクッキークエリトークンを比較することによって、一致するクッキークエリトークンに関連付けられるクッキーの値および/またはドメインを識別し得る。
サーバアプリケーション234が一致するクッキークエリトークンがあることを確認した場合、サーバアプリケーション234は、ルックアップテーブルから一致するクッキークエリトークンに関連付けられるクッキーの値を識別することができる。サーバアプリケーション234は、サーバアプリケーション234がブラウザ212に関連するデータを収集および記憶した1つまたは複数の特性を識別するために、クッキーの値を第2のデータベース(たとえば、特性データベース238)と比較することができる。1つまたは複数の特性は、特性データベース238内のルックアップテーブルに記憶され、サーバアプリケーション234がブラウザ212に関して収集したデータの異なるカテゴリに編成され得る。たとえば、サーバアプリケーション234は、ニュースのウェブサイト上、エンターテインメントのウェブサイト上、広告主のウェブサイト上などにおいてブラウザ212の動作を示すブラウザ212に関連付けられるデータを収集し得る。サーバアプリケーション234は、サーバアプリケーション234がクライアントデバイス202に関するデータおよび/またはサーバアプリケーション234が収集したデータのカテゴリのリスト(たとえば、1つまたは複数の特性)を収集したかどうかを示すブール応答を含む信号をブラウザ212に送り返すことができる。
悪意のあるパーティが、サーバアプリケーション234がブラウザ212に送信する信号においてサーバアプリケーション234からの情報を傍受および/または確認しないことを確実にするために、サーバアプリケーション234は、様々な技法を使用して信号を暗号化し得る。サーバアプリケーション234は、応答を固定長に埋めることができるので、悪意のあるパーティは、サーバアプリケーション234が収集した可能性のあるデータの量を決定できない可能性がある。さらに、サーバアプリケーション234は、HTTPSプロトコルを使用して信号を保護し得る。サーバアプリケーション234は、暗号化鍵として上記のルックアップテーブルからのクッキー値およびドメインを使用して、対称鍵アルゴリズム(たとえば、AES)で信号を暗号化し得る。サーバアプリケーション234はまた、対称鍵暗号化技法を適用する前に、応答にタイムスタンプを含めることができる。
次に図3を参照すると、いくつかの実装形態による、安全な識別情報検索のための方法300のフローチャートが示されている。方法300は、任意の数の動作を含むことができる。動作は任意の順序で実行することができる。方法300は、サーバデバイス(たとえば、コンテンツサーバ218)によって実行することができる。動作302において、サーバデバイスは、周期変数の値を検索することができる。周期変数は、設定された周波数または変化する周波数において継続的に変化する値を有する変数にすることができる。たとえば、周期変数は、現在の日付、現在の時刻、ニューヨーク証券取引所の終値での様々な株式の株価、増分カウンタに基づいて決定されたナンス値などであり得る。周期変数に応じて、サーバデバイスは、サーバデバイス内のデータベースに値を記憶してもよく、別のソース(たとえば、ニューヨーク証券取引所の株価の値を記憶するデータベース)から値を取得してもよい。
動作304において、サーバデバイスは、複数のクエリトークンを計算することができる。サーバデバイスは、クライアントデバイスごとの連結識別子を取得するために、周期変数の値を識別し、サーバデバイスに情報が記憶されている任意のクライアントデバイス識別番号の末尾に値を連結することによって、複数のクエリトークンを計算することができる。サーバデバイスは、複数のクエリトークンを取得するために、各クライアントデバイスに関連付けられる連結識別子に対して一方向ハッシュなどの暗号化技法を実行することができる。いくつかの実装形態では、サーバデバイスは、第2の複数のクエリトークンを計算することができる。第2の複数のクエリトークンは、複数のクエリトークンと同じクライアントデバイスに関連付けられているが、異なる周期変数値に基づくクエリトークンを含むことができる。
動作306において、サーバデバイスは、複数のクエリトークンの各々に関連付けられ得る確率的データ構造を生成することができる。複数のクエリトークンは、サーバデバイスのデータベースに記憶され得る。サーバデバイスは、設定された間隔を含め、いつでもデータベースにクエリトークンを追加および/またはデータベースから削除し得る。確率的データ構造は、いくつかの実装形態では、クエリトークンがある程度確実にデータベースに存在するか、データベースに確実に存在しないかを示すブルームフィルタであり得る。
動作308において、サーバデバイスは、クライアントデバイスから第1のクエリトークンを受信することができる。クライアントデバイスは、サーバデバイスが複数のクエリトークンの各々を計算するために使用するのと同じまたは同様の技法を使用して、第1のクエリトークンを生成し得る。第1のクエリトークンは、クライアントデバイスのデバイス識別子に関連付けられ得る。クライアントデバイスは、周期変数の値を検索することによって第1のクエリトークンを計算し、その値を連結されたデバイス識別子を取得するためにデバイス識別子と連結し得る。クライアントデバイスは、第1のクエリトークンを取得するために、連結されたデバイス識別子に対して暗号化技法を使用することによって、連結されたデバイス識別子から第1のクエリトークンを計算し得る。暗号化技法は、サーバデバイスが複数のクエリトークンの各々を取得するために実行するのと同じ暗号化技法であり得る。クライアントデバイスは、サーバデバイスがクライアントデバイスに関する情報を有しているかどうかを決定するために、クエリにおいて第1のクエリトークンをサーバデバイスに送信し得る。いくつかの実装形態では、クエリを送信する前に、クライアントデバイスが秘密鍵を使用してクエリに署名する場合がある。
動作310において、サーバデバイスは、サーバデバイスが、サーバデバイスのデータベース内の第1のクエリトークンと一致するクエリトークンを有するかどうかを決定することができる。サーバデバイスは、第1のクエリトークンをデータベースのデータ構造と比較することができる。サーバデバイスが、第1のクエリトークンと一致する(たとえば、同じ文字列を有する)データ構造内のクエリトークンを識別しない場合、サーバデバイスは、データベース内のクエリを実行しているクライアントデバイスの一致するクエリトークンがないと決定し得る。その結果、動作312において、サーバデバイスは、一致が見つからなかったことを示す信号をクライアントデバイスに送信し得る。
しかしながら、サーバデバイスが第1のクエリトークンと一致するデータ構造内のクエリトークンを識別した場合、サーバデバイスはデータベース内のクエリを実行しているクライアントデバイスのクエリトークンに一致するクエリトークンがあると決定し得る。その結果、動作314において、サーバデバイスは、第2のクエリトークンを識別し得る。第2のクエリトークンから、サーバデバイスは要求を行っているクライアントデバイスのデバイス識別子を識別し得る。
動作316において、サーバデバイスは、クライアントデバイスの特性を記憶する第2のデータベースから、クライアントデバイスの1つまたは複数の特性を検索し得る。1つまたは複数の特性は、サーバデバイスが収集したデバイスに関するデータ(たとえば、地理的位置、訪問されたウェブページ、訪問されたウェブページのコンテンツなど)であり得る。サーバデバイスは、クライアントデバイスの公開暗号化鍵を取得するために、クライアントデバイスのデバイス識別子を第2のデータベースのデータ構造と比較し得る。サーバデバイスは、デジタル署名に基づいてデバイス識別子に関連付けられるクライアントデバイスからクエリが受信されたことを確認するために、公開鍵を使用し得る。
動作318において、サーバデバイスは、クライアントデバイスからのクエリに対する回答における1つまたは複数の特性を暗号化するために、公開鍵を使用し得る。暗号化された回答は、サーバデバイスが回答、ナンス、およびタイムスタンプを連結することによって計算する連結された値を含み得る。回答は、バイナリ値(たとえば、サーバデバイスがクライアントデバイスのデータを収集したかどうか)、および/またはサーバデバイスがクライアントデバイスに関して収集した様々なカテゴリのユーザデータ(たとえば、1つまたは複数の特性)の識別を含み得る。動作320において、サーバデバイスは、1つまたは複数の特性をクライアントデバイスに送信し得る。クライアントデバイスは、デジタル署名に基づくクライアントデバイスの秘密鍵を使用して、暗号化された回答を復号化し得る。
有利なことに、コンテンツサーバからの識別を要求するコンピューティングデバイスのデバイス識別子に関連付けられるクエリトークンを計算することによって、コンピューティングデバイスは、デバイスがコンテンツサーバにクエリを実行するときに、それらに関するデータをまだ有していないコンテンツサーバから匿名のままである可能性がある。本明細書で提供されるシステムおよび方法は、デバイスのデバイス識別子を送信せずにコンテンツサーバにクエリを送信することによって、コンテンツサーバがクエリを実行するデバイスに関する情報を有するかどうかを決定するために、デバイスがコンテンツサーバにクエリを実行することを可能にする。代わりに、デバイスは、暗号化技法(たとえば、一方向暗号化技法)を使用してクエリトークンを計算し、クエリトークンをコンテンツサーバに送信し得る。クエリトークンには一時的な暗号化された値(たとえば、タイムスタンプまたは現在の日付)を含み得るため、コンテンツサーバはクエリトークンに基づいてクエリデバイスについて何も識別することができない。コンテンツサーバは、クエリトークンを生成するために使用される暗号化技法を知っている場合があり、同様に、コンテンツサーバが記憶したデバイス識別子に対応する記憶されたクエリトークンを計算し得る。したがって、クエリトークンは一方向暗号化技法を使用して計算される可能性があるため、コンテンツサーバは、デバイス識別子がまだわかっていない場合、クエリを実行するデバイスのデバイス識別子を識別できずに、クエリを実行するデバイスに関するデータを有するかどうかのみを識別することができる。さらに、デバイスとコンテンツサーバ間の通信が暗号化される可能性があるため、悪意のあるパーティがコンテンツサーバに関するデータを識別できない可能性がある。
本明細書に記載のシステムがユーザまたはユーザデバイスにインストールされたアプリケーションに関する個人情報を収集する、または個人情報を利用する状況では、ユーザには、プログラムまたは機能がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクション、またはアクティビティ、職業、ユーザの嗜好、あるいはユーザの現在地に関する情報)を収集するかどうかを制御する機会が提供される場合がある。さらに、特定のデータは、記憶または使用される前に1つまたは複数の方法で処理されるため、個人情報が削除される場合がある。たとえば、ユーザの個人を識別できる情報を特定できないようにユーザのIDが処理されてもよく、ユーザの特定の位置を決定できないように、位置情報が取得されるユーザの地理的位置(都市、郵便番号、州レベルなど)が一般化されてもよい。したがって、ユーザは、ユーザに関する情報がどのように収集され、コンテンツサーバによって使用されるかを制御し得る。
本明細書に記載されている主題および動作の実装形態は、デジタル電子回路、あるいは本明細書に開示されている構造およびそれらの構造的同等物を含むコンピュータソフトウェア、ファームウェア、またはハードウェアにおいて、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本明細書に記載されている主題の実装形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために1つまたは複数のコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。あるいは、またはさらに、プログラム命令は、データ処理装置による実行のために適切な受信機装置に送信するための情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成の電気、光、または電磁信号に符号化することができる。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらの1つまたは複数の組合せであるか、またはそれらに含まれ得る。さらに、コンピュータストレージ媒体は伝搬信号ではないが、コンピュータストレージ媒体は、人工的に生成された伝搬信号に符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータストレージ媒体はまた、1つまたは複数の別個のコンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であるか、またはそれらに含まれ得る。したがって、コンピュータストレージ媒体は有形である可能性がある。
本明細書に記載されている動作は、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されているか、または他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装することができる。
「クライアント」または「サーバ」という用語は、プログラム可能なプロセッサ、コンピュータ、チップ上のシステム、または複数のもの、あるいは前述の組合せなど、データを処理するためのあらゆる種類の装置、デバイス、およびマシンを含む。装置は、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことができる。装置はまた、ハードウェアに加えて、問題のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、あるいはそれらの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングおよびグリッドコンピューティングインフラストラクチャなど、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイラ型またはインタプリタ型言語、宣言型または手続き型言語を含む、あらゆる形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境における使用に適した他のユニットとして、を含む、あらゆる形式で展開することができる。コンピュータプログラムは、ファイルシステム内のファイルに対応する場合があるが、対応する必要はない。プログラムは、他のプログラムまたはデータを保持するファイルの一部(たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプト)、問題のプログラム専用の単一のファイル、あるいは複数の調整されたファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶することができる。コンピュータプログラムは、1台のコンピュータ、または1つのサイトに配置されているか、複数のサイトに分散され、通信ネットワークによって相互接続されている複数のコンピュータで実行されるように展開することができる。
本明細書に記載のプロセスおよび論理フローは、入力データを動作して出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実行することができる。プロセスおよび論理フローはまた、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によって実行することができ、装置はそれらとして実装することができる。
コンピュータプログラムの実行に適したプロセッサは、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは読取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令およびデータを受信する。コンピュータの本質的な要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気、光磁気ディスク、または光ディスクを含むか、そこからデータを受信するか、またはそこにデータを転送するか、あるいはその両方を行うために動作可能に結合される。しかしながら、コンピュータにそのようなデバイスが必要なわけではない。さらに、コンピュータは、別のデバイス、たとえば、ほんの数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込むことができる。コンピュータプログラム命令およびデータを記憶するために適したデバイスには、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスを含む、すべての形態の不揮発性メモリ、メディアおよびメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクが含まれる。プロセッサおよびメモリは、専用論理回路によって補完されてもよく、それに組み込まれてもよい。
ユーザとの対話を提供するために、本明細書に記載されている主題の実装形態は、たとえば、CRT(陰極線管)、LCD(液晶ディスプレイ)、OLED(有機発光ダイオード)、TFT(薄膜トランジスタ)、プラズマなどのディスプレイデバイス、他の柔軟な構成、あるいは、ユーザに情報を表示するためのその他のモニタ、およびユーザがコンピュータに入力を提供できるキーボード、ポインティングデバイス、たとえばマウス、トラックボールなど、またはタッチスクリーン、タッチパッドなどを備えたコンピュータに実装することができる。ユーザとの対話を提供するために、他の種類のデバイスも使用することができる。ユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなど、あらゆる形態の感覚的フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、ウェブブラウザから受信した要求に応答して、ユーザのコンピューティングデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
本明細書に記載されている主題の実装形態は、データサーバなどのバックエンドコンポーネントを含む、あるいはアプリケーションサーバなどのミドルウェアコンポーネントを含む、あるいは、たとえばユーザが本明細書に記載されている主題の実装形態と対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを備えたクライアントコンピュータなどのフロントエンドコンポーネントを含む、あるいは1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムのコンポーネントは、たとえば、通信ネットワークなどのデジタルデータ通信の任意の形式または媒体によって相互接続することができる。通信ネットワークは、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、ネットワーク間(たとえば、インターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含み得る。
本明細書には多くの特定の実装形態の詳細が含まれているが、これらは発明の範囲または主張される可能性のあるものの制限として解釈されるべきではなく、特定の発明の特定の実装形態に固有の機能の説明として解釈されるべきである。本明細書において個別の実装形態の文脈において説明されている特定の機能は、単一の実装形態において組み合わせて実装することもできる。逆に、単一の実装形態の文脈において説明されている様々な機能は、複数の実装形態において個別に、または任意の適切なサブコンビネーションにおいて実装することもできる。さらに、特徴は、特定の組合せで作用するものとして上記で説明され、最初にそのように主張されても、主張された組合せからの1つまたは複数の特徴は、場合によっては組合せから切り出されてよく、主張された組合せは、サブコンビネーションまたはサブコンビネーションの変形に向けられ得る。
同様に、動作は特定の順序で図面に示されているが、これは、望ましい結果を達成するために、そのような動作が示される特定の順序または連続した順序で実行されること、または図示されるすべての動作が実行されることを必要とするものとして理解されるべきではない。特定の状況では、マルチタスクと並列処理が有利な場合がある。さらに、上記の実装形態における様々なシステムコンポーネントの分離は、すべての実装形態においてそのような分離を必要とするものとして理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージ化することができることが理解されるべきである。
したがって、主題の特定の実装形態が説明されてきた。他の実装形態は、以下の特許請求の範囲内にある。場合によっては、特許請求の範囲に記載されているアクションは、異なる順序で実行することができ、それでも所望の結果を達成することができる。さらに、添付の図面に示されているプロセスは、所望の結果を達成するために、必ずしも示されている特定の順序または連続した順序を必要としない。特定の実装形態では、マルチタスクまたは並列処理が利用され得る。
102 シーケンス
104 クライアントデバイス
106 コンテンツサーバ
108 データベース
110 シーケンス
112 クライアントデバイス
114 コンテンツサーバ
116 データベース
200 システム
202 クライアントデバイス
204 プロセッサ
206 メモリ
208 変数レトリバ
210 クエリトークン計算機
212 ブラウザ
214 復号化器
216 ネットワーク
218 コンテンツサーバ
220 プロセッサ
222 メモリ
224 変数レトリバ
226 クエリトークン計算機
228 構造ジェネレータ
230 クエリトークンマッチャ
232 暗号化器
234 サーバアプリケーション
236 識別子データベース
238 特性データベース
300 方法

Claims (20)

  1. 安全な識別情報検索のための方法であって、
    サーバデバイスによって、周期変数の値を検索するステップと、
    前記サーバデバイスによって、対応する複数のクライアントデバイス識別子および前記周期変数の前記値から複数のクエリトークンを計算するステップであって、各クエリトークンが第1のデータベースにおける対応するクライアントデバイス識別子に関連付けられる、ステップと、
    第1のクライアントデバイスから前記サーバデバイスによって、前記第1のクライアントデバイスのクライアントデバイス識別子および前記周期変数の前記値から計算された第1のクエリトークンを受信するステップと、
    前記サーバデバイスによって、前記第1のデータベースにおいて前記計算された複数のクエリトークンのうち、前記第1のクエリトークンと一致する第2のクエリトークンを識別するステップと、
    前記識別に応答して、前記サーバデバイスによって、前記関連付けられるクライアントデバイス識別子を検索するステップと、
    前記サーバデバイスによって、第2のデータベースから、前記関連付けられるクライアントデバイス識別子に従って前記第1のクライアントデバイスの1つまたは複数の特性を検索するステップと、
    前記サーバデバイスによって前記クライアントデバイスに、前記検索された1つまたは複数の特性を送信するステップと
    を備える、方法。
  2. 前記サーバデバイスによって、前記計算された複数のクエリトークンに基づいて確率的データ構造を生成するステップと、
    前記サーバデバイスによって、前記第1のクエリトークンを前記確率的データ構造と比較するステップと
    をさらに備え、
    前記第2のクエリトークンを識別するステップが、前記確率的データ構造に一致する前記第1のクエリトークンに応答して実行される、請求項1に記載の方法。
  3. 前記確率的データ構造がブルームフィルタを備える、請求項2に記載の方法。
  4. 前記周期変数が、現在の日付の証券取引所の終値、または相互に検証可能な値を備える、請求項1に記載の方法。
  5. 前記複数のクエリトークンを計算するステップが、前記対応する複数のクライアントデバイス識別子および前記周期変数の以前の値から第2の複数のクエリトークンを計算するステップをさらに備え、前記第2の複数のクエリトークンが、前記対応するクライアントデバイス識別子に関連して前記第1のデータベースに記憶される、請求項1に記載の方法。
  6. 前記サーバデバイスによって、前記第1のデータベースから第3の複数のクエリトークン、前記複数のクライアントデバイス識別子から計算された前記第3の複数のクエリトークン、および前記周期変数の2回前の値を除去するステップをさらに備える、請求項5に記載の方法。
  7. 前記複数のクエリトークンを計算するステップが、前記複数のクエリトークンのそれぞれについて、前記周期変数の前記値と前記対応するクライアントデバイス識別子との組合せの一方向ハッシュを計算するステップをさらに備える、請求項1に記載の方法。
  8. 前記第1のクライアントデバイスの前記1つまたは複数の特性を検索するステップが、前記第2のデータベースから前記第1のクライアントデバイスの公開暗号化鍵を検索するステップをさらに備え、
    前記検索された1つまたは複数の特性を送信するステップが、前記第1のクライアントデバイスの前記検索された公開暗号化鍵を用いて前記1つまたは複数の特性を暗号化するステップをさらに備える、請求項1に記載の方法。
  9. 第2のクライアントデバイスから前記サーバデバイスによって、前記第2のクライアントデバイスのクライアントデバイス識別子および前記周期変数の前記値から計算された第3のクエリトークンを受信するステップと、
    前記サーバデバイスによって、前記第3のクエリトークンに対応する前記第1のデータベースにエントリが存在しないことを決定するステップと
    をさらに備える、請求項1に記載の方法。
  10. 前記第3のクエリトークンに対応する前記第1のデータベースにエントリが存在しないという前記決定に応答して、前記サーバデバイスによって前記第2のクライアントデバイスに、ランダムデータ文字列またはヌルデータ文字列のうちの1つを送信するステップをさらに備える、請求項9に記載の方法。
  11. 前記複数のクライアントデバイス識別子がクッキー値を備える、請求項1に記載の方法。
  12. 前記複数のクエリトークンが、周期的値、前記クッキー値、および複数のドメイン識別子から計算され、各クッキー値が、前記複数のドメイン識別子のドメイン識別子に対応する、請求項11に記載の方法。
  13. 第1のクッキー値が、第1のドメインの各々に関連付けられ、第2のドメインと共有される、請求項12に記載の方法。
  14. 前記サーバデバイスが、前記第1のドメインまたは前記第2のドメインの一方に関連付けられ、第2のサーバデバイスが、前記第1のドメインまたは前記第2のドメインの他方に関連付けられる、請求項13に記載の方法。
  15. 前記関連付けられるクライアントデバイス識別子を検索するステップが、第1のクッキー値および第1のドメイン識別子を検索するステップをさらに備え、
    前記検索された1つまたは複数の特性を送信するステップが、前記第2のドメインに関連付けられる前記サーバデバイスによって、前記第1のクッキー値および前記第1のドメイン識別子を用いて前記検索された1つまたは複数の特性を暗号化するステップをさらに備える、請求項13に記載の方法。
  16. 安全な識別情報検索のためのサーバデバイスであって、
    複数のクライアントデバイスの第1のクライアントデバイスと通信するネットワークインターフェースと、
    複数のクエリトークンおよび対応する複数の関連付けられるクライアントデバイス識別子を備える第1のデータベースを記憶するメモリデバイス、ならびに前記複数のクライアントデバイス識別子および関連付けられるデバイス特性を備える第2のデータベースと、
    周期変数の値を検索することと、
    前記対応する複数のクライアントデバイス識別子および前記周期変数の前記値から前記複数のクエリトークンを計算することと、
    前記第1のクライアントデバイスから前記ネットワークインターフェースを介して、前記第1のクライアントデバイスのクライアントデバイス識別子および前記周期変数の前記値から計算された第1のクエリトークンを受信することと、
    前記第1のデータベースにおいて前記計算された複数のクエリトークンのうち、前記第1のクエリトークンと一致する第2のクエリトークンを識別することと、
    前記識別に応答して、前記第1のデータベースから、前記関連付けられるクライアントデバイス識別子を検索することと、
    前記第2のデータベースから、前記関連付けられるクライアントデバイス識別子に従って前記第1のクライアントデバイスの1つまたは複数の特性を検索することと、
    前記ネットワークインターフェースを介して前記クライアントデバイスに、前記検索された1つまたは複数の特性を送信することと
    を行うように構成されたプロセッサと
    を備える、サーバデバイス。
  17. 前記プロセッサが、
    前記計算された複数のクエリトークンに基づいて確率的データ構造を生成することと、
    前記第1のクエリトークンを前記確率的データ構造と比較することと
    を行うようにさらに構成され、
    前記第2のクエリトークンを識別することが、前記確率的データ構造に一致する前記第1のクエリトークンに応答して実行される、請求項16に記載のサーバデバイス
  18. 前記プロセッサが、
    前記対応する複数のクライアントデバイス識別子および前記周期変数の以前の値から第2の複数のクエリトークンを計算するようにさらに構成され、前記第2の複数のクエリトークンが、前記対応するクライアントデバイス識別子に関連して前記第1のデータベースに記憶される、請求項16に記載のサーバデバイス
  19. 前記プロセッサが、
    前記第1のデータベースから第3の複数のクエリトークン、前記複数のクライアントデバイス識別子から計算された前記第3の複数のクエリトークン、および前記周期変数の2回前の値を除去するようにさらに構成される、請求項18に記載のサーバデバイス
  20. 前記プロセッサが、
    前記複数のクエリトークンのそれぞれについて、前記周期変数の前記値と前記対応するクライアントデバイス識別子との組合せの一方向ハッシュを計算するようにさらに構成される、請求項16に記載のサーバデバイス
JP2022514227A 2019-09-03 2019-09-03 安全な識別情報検索のためのシステムおよび方法 Active JP7322283B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023120733A JP2023162169A (ja) 2019-09-03 2023-07-25 安全な識別情報検索のためのシステムおよび方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/049333 WO2021045727A1 (en) 2019-09-03 2019-09-03 Systems and methods for secure identification retrieval

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023120733A Division JP2023162169A (ja) 2019-09-03 2023-07-25 安全な識別情報検索のためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2022545847A JP2022545847A (ja) 2022-10-31
JP7322283B2 true JP7322283B2 (ja) 2023-08-07

Family

ID=67989082

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022514227A Active JP7322283B2 (ja) 2019-09-03 2019-09-03 安全な識別情報検索のためのシステムおよび方法
JP2023120733A Pending JP2023162169A (ja) 2019-09-03 2023-07-25 安全な識別情報検索のためのシステムおよび方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023120733A Pending JP2023162169A (ja) 2019-09-03 2023-07-25 安全な識別情報検索のためのシステムおよび方法

Country Status (6)

Country Link
US (3) US11310046B2 (ja)
EP (1) EP4026289A1 (ja)
JP (2) JP7322283B2 (ja)
KR (1) KR20220059506A (ja)
CN (1) CN114600421A (ja)
WO (1) WO2021045727A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4026289A1 (en) * 2019-09-03 2022-07-13 Google LLC Systems and methods for secure identification retrieval
CN117112549B (zh) * 2023-10-20 2024-03-26 中科星图测控技术股份有限公司 一种基于布隆过滤器的大数据归并方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084850A1 (en) 2010-09-30 2012-04-05 Microsoft Corporation Trustworthy device claims for enterprise applications
JP2018530090A (ja) 2015-05-19 2018-10-11 パラブル インコーポレイテッド 可変ブラウザ識別子のセッションベースのマッチング
JP2019046060A (ja) 2017-08-31 2019-03-22 キヤノン株式会社 権限委譲システム、制御方法、およびプログラム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10326798B2 (en) * 1998-07-16 2019-06-18 Grid7, LLC System and method for secure data transmission and storage
CN101563880A (zh) * 2006-10-25 2009-10-21 约维申有限公司 全球唯一设备专用标识符的创建和验证
EP2020797B1 (en) * 2007-08-02 2016-06-15 Apple Inc. Client-server Opaque token passing apparatus and method
US9256686B2 (en) 2008-09-15 2016-02-09 International Business Machines Corporation Using a bloom filter in a web analytics application
US20130080690A1 (en) * 2011-09-23 2013-03-28 William Brooks Barrett Method to emulate eeprom using flash memory
CN104662864B (zh) * 2012-08-03 2018-03-09 威斯科数据安全国际有限公司 使用了移动认证应用的用户方便的认证方法和装置
US9172687B2 (en) 2012-12-28 2015-10-27 Nok Nok Labs, Inc. Query system and method to determine authentication capabilities
US10445769B2 (en) * 2013-12-24 2019-10-15 Google Llc Systems and methods for audience measurement
US10600076B2 (en) * 2014-08-14 2020-03-24 Google Llc Systems and methods for obfuscated audience measurement
CN105471826B (zh) * 2014-09-04 2019-08-20 中电长城网际系统应用有限公司 密文数据查询方法、装置和密文查询服务器
US9679024B2 (en) * 2014-12-01 2017-06-13 Facebook, Inc. Social-based spelling correction for online social networks
US10846373B2 (en) * 2015-12-03 2020-11-24 Orca Interactive Ltd Method and system for securing a client's access to a DRM agent's services for a video player
CN106230603B (zh) * 2016-09-19 2019-08-16 中国传媒大学 一种认证授权方法
US20180082284A1 (en) * 2016-09-20 2018-03-22 Paypal, Inc. Processing a transaction using a multiple-use token
CN108881132B (zh) * 2017-07-25 2021-03-23 北京旷视科技有限公司 应用授权方法、客户端、服务器和计算机可读介质
US11558193B2 (en) * 2018-08-13 2023-01-17 Google Llc Location-based access to controlled access resources
WO2020163580A1 (en) * 2019-02-06 2020-08-13 Mastercard International Incorporated Method and system for generation of a high assurance payment token
EP4026289A1 (en) * 2019-09-03 2022-07-13 Google LLC Systems and methods for secure identification retrieval

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120084850A1 (en) 2010-09-30 2012-04-05 Microsoft Corporation Trustworthy device claims for enterprise applications
JP2018530090A (ja) 2015-05-19 2018-10-11 パラブル インコーポレイテッド 可変ブラウザ識別子のセッションベースのマッチング
JP2019046060A (ja) 2017-08-31 2019-03-22 キヤノン株式会社 権限委譲システム、制御方法、およびプログラム

Also Published As

Publication number Publication date
WO2021045727A1 (en) 2021-03-11
US11784817B2 (en) 2023-10-10
JP2023162169A (ja) 2023-11-08
US20230336351A1 (en) 2023-10-19
US20210075614A1 (en) 2021-03-11
US20220209953A1 (en) 2022-06-30
JP2022545847A (ja) 2022-10-31
US11310046B2 (en) 2022-04-19
CN114600421A (zh) 2022-06-07
KR20220059506A (ko) 2022-05-10
EP4026289A1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
JP7165653B2 (ja) 特定の識別情報を開示することのない識別子間のリンクの確立
US10268834B2 (en) Privacy-preserving querying mechanism on privately encrypted data on semi-trusted cloud
US20220329430A1 (en) Systems and methods for authenticated control of content delivery
US20230188507A1 (en) Domain specific browser identifiers as replacement of browser cookies
US20230336351A1 (en) Systems and methods for secure identification retrieval
US20230254126A1 (en) Encrypted search with a public key
JP2021519022A (ja) 自己認証ドメイン固有のブラウザ識別子

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220428

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220428

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: 20230626

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230726

R150 Certificate of patent or registration of utility model

Ref document number: 7322283

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150