JP7135210B2 - プライバシー保持アプリケーションおよびデバイスエラー検出 - Google Patents

プライバシー保持アプリケーションおよびデバイスエラー検出 Download PDF

Info

Publication number
JP7135210B2
JP7135210B2 JP2021521052A JP2021521052A JP7135210B2 JP 7135210 B2 JP7135210 B2 JP 7135210B2 JP 2021521052 A JP2021521052 A JP 2021521052A JP 2021521052 A JP2021521052 A JP 2021521052A JP 7135210 B2 JP7135210 B2 JP 7135210B2
Authority
JP
Japan
Prior art keywords
application
data
trust
client device
digital signature
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
JP2021521052A
Other languages
English (en)
Other versions
JP2022533871A (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 JP2022533871A publication Critical patent/JP2022533871A/ja
Priority to JP2022136800A priority Critical patent/JP7464663B2/ja
Application granted granted Critical
Publication of JP7135210B2 publication Critical patent/JP7135210B2/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • 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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • 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
    • 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
    • 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
    • H04L9/3257Cryptographic 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 using blind signatures
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • 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/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Examining Or Testing Airtightness (AREA)
  • Investigating Or Analysing Biological Materials (AREA)
  • Bidet-Like Cleaning Device And Other Flush Toilet Accessories (AREA)

Description

関連出願の相互参照
本出願は国際出願であり、2020年4月23日に出願されたIL出願第274165号の利益を主張する。上記の出願の開示は、参照によりその全体が本明細書に組み込まれている。
本明細書は概して、クライアントデバイスおよびそれに関連付けられたアプリケーションにおけるエラーを検出すると同時に、クライアントデバイスのユーザのプライバシーを保持することに関する。
クライアントデバイスは、コンテンツプラットフォーム(たとえば、検索プラットフォーム、ソーシャルメディアプラットフォーム、またはコンテンツを提供する別のプラットフォーム)にアクセスするのに、アプリケーション(たとえば、ウェブブラウザ、ネイティブアプリケーション)を使うことができる。コンテンツプラットフォームは、クライアントデバイス上で起動されるアプリケーション内での表示用に、デジタルコンテンツを提供し得る。
いくつかの事例では、クライアントデバイス上で実行するアプリケーションが、たとえば、コンテンツプラットフォームとの、正常な、もしくは期待される対話から逸脱する、またはコンテンツプラットフォームの動作および/もしくはセキュリティを中断する/損なう、のいずれかのように、コンテンツプラットフォームと対話する場合がある。そのような対話は、アプリケーションおよび/またはクライアントデバイスにおけるエラーの結果であり得る。いくつかの事例では、そのようなエラーは、悪意のあるエンティティによって引き起こされ、または注入される場合があり、このようなエンティティは、アプリケーション(そのソフトウェア開発キット(「SDK」)を含む)、基底クライアントデバイス、および/もしくはアプリケーションからコンテンツプラットフォームに提供されるデータを損なう、または不適切に修正している場合がある。
概して、本明細書に記載する本主題の1つの発明的態様は、クライアントデバイス上で実行するアプリケーションによって、アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得する動作と、アプリケーションによって、コンテキストアプリケーションデータをブラインドして、ブラインドされたコンテキストアプリケーションデータを生成する動作と、アプリケーションのデジタル証明書に関するデータ、およびクライアントデバイスの信頼性を評価する際に使われ得るデータを含むデバイス信頼性データを取得する動作と、信頼評価サーバに、ブラインドされたコンテキストアプリケーションデータ、デジタル証明書に関するデータ、およびデバイス信頼性データを提供する動作と、信頼評価サーバから、(1)クライアントデバイスが信頼できる(trustworthy)ことを明記する第1の指示、(2)アプリケーションが真正である(authentic)ことを明記する第2の指示、および(3)第1のデータ項目に対する、信頼評価サーバのデジタル署名を含むデータのセットを受信する動作と、第1のデータ項目に対するデジタル署名を検証する動作と、第1のデータ項目に対するデジタル署名を検証したことに応答して、アプリケーションによって、第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得する動作と、ブラインド解除された第1のデータ項目がコンテキストアプリケーションデータと一致することを確認する動作と、ブラインド解除された第1のデータ項目がコンテキストアプリケーションデータと一致することを確認したことに応答して、アプリケーションエラー検出サーバに、第1のデータ項目に対するデジタル署名、第1の指示、第2の指示、およびブラインド解除された第1のデータ項目を提供する動作と、アプリケーションエラー検出サーバから、アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信する動作とを含む方法で具現化され得る。この態様の他の実施形態は、対応する方法、装置、およびコンピュータ記憶デバイス上で符号化された、方法のアクションを実施するように構成されたコンピュータプログラムを含む。これらおよび他の実施形態は各々、任意選択で、以下の特徴のうちの1つまたは複数を含み得る。
いくつかの実装形態では、方法は、信頼評価サーバによって、(1)デバイス信頼性データに基づいて、クライアントデバイスが信頼でき、(2)アプリケーションのデジタル証明書に関するデータを、既知の真正アプリケーションのデジタル証明書に関するデータと比較することによって、アプリケーションが真正であると判断するステップと、信頼評価サーバによって、およびクライアントデバイスに、クライアントデバイスが信頼できることを明記する第1の指示、およびアプリケーションが既知のアプリケーションであることを明記する第2の指示を提供するステップとをさらに含み得る。
いくつかの実装形態では、アプリケーションのデジタル証明書に関するデータは、アプリケーションのアプリケーションパッケージ(APK)のデジタルダイジェスト、またはアプリケーションのAPKの暗号ハッシュを含み得る。
いくつかの実装形態では、アプリケーションのデジタル証明書に関するデータ、およびクライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得するステップは、クライアントデバイス上で実行する、信頼されるアプリケーションまたはオペレーティングシステムによって、アプリケーションのデジタル証明書に関するデータを取得するステップと、クライアントデバイス上で実行するデバイス信頼性クライアントアプリケーションによって、デバイス信頼性データを取得するステップとを含み得る。
いくつかの実装形態では、クライアントデバイスが信頼できることを明記する第1の指示は2ビット値であってよく、ここで2ビット値の第1のビットは、クライアントデバイスが不適切に修正も改変もされていないことを示し、2ビット値の第2のビットは、クライアントデバイスのプロファイルが、以前検証されたデバイスのプロファイルと一致することを示す。
いくつかの実装形態では、方法は、アプリケーションエラー検出サーバに、第1のデータ項目に対するデジタル署名、第1の指示、第2の指示、およびコンテキストアプリケーションデータを提供したことに応答して、信頼評価サーバと通信して、デジタル署名を検証する動作をさらに含んでよく、デジタル署名は、IETF VOPRFデジタル署名であり、デジタル署名を最初に生成した信頼評価サーバによって検証可能である。
いくつかの実装形態では、方法は、アプリケーションエラー検出サーバによって、および信頼評価サーバから、デジタル署名が有効であることを明記する第4の指示を受信する動作をさらに含み得る。
概して、本明細書に記載する本主題の別の発明的態様は、クライアントデバイス上で実行するアプリケーションによって、データのランダムセットを生成する動作と、アプリケーションによって、データのランダムセットをブラインドして、データのブラインドされたランダムセットを生成する動作と、アプリケーションのデジタル証明書に関するデータ、およびクライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得する動作と、信頼評価サーバに、データのブラインドされたランダムセット、デジタル証明書に関するデータ、およびデバイス信頼性データを提供する動作と、信頼評価サーバから、(1)クライアントデバイスが信頼できることを明記する第1の指示、(2)アプリケーションが真正であることを明記する第2の指示、および(3)第1のデータ項目に対する、信頼評価サーバのデジタル署名を含むデータの第1のセットを受信する動作と、第1のデータ項目に対するデジタル署名を検証する動作と、第1のデータ項目に対するデジタル署名を検証したことに応答して、アプリケーションによって、第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得する動作と、ブラインド解除された第1のデータ項目が、データのランダムセットと一致することを確認する動作と、ブラインド解除された第1のデータ項目が、データのランダムセットと一致することを確認したことに応答して、アプリケーションによって、アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得する動作と、アプリケーションエラー検出サーバに、第1のデータ項目に対するデジタル署名、第1の指示、第2の指示、およびコンテキストアプリケーションデータを提供する動作と、アプリケーションエラー検出サーバから、アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信する動作とを含む方法で具現化することができる。この態様の他の実施形態は、対応する方法、装置、およびコンピュータ記憶デバイス上で符号化された、方法のアクションを実施するように構成されたコンピュータプログラムを含む。
本明細書に記載する本主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装され得る。本明細書に記載する技法は、クライアントデバイスおよび/またはクライアントデバイス上で実行するアプリケーションにおけるエラー(たとえば、ソフトウェアエラー、バグ、欠陥など)/それらの上での悪意のある活動を識別するのに使われ得る。そのようなエラー/悪意のある活動を識別するために、いくつかの従来技術は、クライアントデバイス上で実行するアプリケーションから収集されたコンテキストアプリケーションデータ(たとえば、訪問されたウェブサイト、訪問の時間、ウェブサイトを訪問するのに使われたブラウザまたはアプリケーション)を評価している。
ただし、そのような従来のソリューションは、本明細書に記載する技法ほどには堅牢でない。これは、本明細書に記載する技法が、デバイス信頼性およびアプリケーション真正性判断を用いて、コンテキストアプリケーションデータに基づいて、エラー/悪意のある活動検出を強化するからである。たとえば、本明細書に記載するデバイス信頼性およびアプリケーション真正性分析は、ルート化した(rooted)モバイルデバイス上で稼動する、修正されたブラウザ(またはブラウザをエミュレートする他のアプリケーション)上で特定の活動が実施されている最中であると判断することができる。別の例として、本明細書に記載するデバイス信頼性およびアプリケーション真正性分析は、エミュレータにおいて実行中の修正されたブラウザ上で、特定の活動が実施されている最中であると判断することができる。これらの例では、本明細書に記載する技法は、識別されたクライアントデバイスを信頼できないものとして、およびアプリケーション(この場合、ブラウザ)を真正でないものとして見なし、このことは、アプリケーションがエラーを有する(また、おそらくは損なわれてさえいる)ことを強く示し得る。したがって、これらの技法は、デバイス信頼性もアプリケーション真正性も考慮していなかった従来のシステムに勝る改良を提供する。
その上、本明細書に記載する革新は、クライアントデバイスおよび/またはアプリケーションの信頼性/真正性を検証し、アプリケーションとの対話がアプリケーションにおけるエラーを示すかどうかを判断する際に、プライバシー保持技法も使用する。いくつかの従来のシステムでは、スクリプトが、コンテキストアプリケーションデータ(たとえば、訪問されたウェブサイト、訪問の時間、ウェブサイトを訪問するのに使われたブラウザまたはアプリケーション)を収集し、これらが、アプリケーションエラーを識別するのに使われ得る。他の従来のシステムでは、複数の異なるコンテンツページ、コンテンツプラットフォーム、およびアプリケーションにわたるユーザの対話履歴が、アプリケーションエラーを識別するために集約され得る。ただし、従来のシステムにおけるそのようなデータ収集は、ユーザフィンガープリンティングのために、すなわち、アプリケーション/デバイスのユーザには非公開のデータを蓄積するのに、およびユーザの活動を監視するのに使われる場合もある。
対照的に、本明細書に記載する技法は、クライアントデバイスおよび/またはアプリケーションの信頼性/真正性を検証し、アプリケーションとの対話が、アプリケーションにおけるエラーを示すかどうかを判断すると同時に、ユーザフィンガープリンティングを防止することを可能にし、そうすることによって、プライバシーを向上させる。いくつかの実装形態では、本明細書に記載する技法は、信頼評価サーバ(またはサーバインスタンス)がデバイスおよびアプリケーションの真正性/信頼性を検証すると同時に、別のアプリケーションエラー検出サーバ(またはサーバインスタンス)がコンテキストアプリケーションデータに基づいてエラーを識別する分岐アーキテクチャを使用することによって、そのような向上したプライバシーを可能にする。そのような分岐アーキテクチャは、クライアントデバイスの外側の、またはそれとは別個のエンティティと共有されるユーザ/デバイス情報の量を制限する。たとえば、デバイス信頼性およびアプリケーション真正性評価を実施するのに要求されるデータは、信頼評価サーバに提供されるだけであり、アプリケーションエラー検出サーバには提供されない。同様に、アプリケーションエラー検出を実施するのに要求されるデータは、アプリケーションエラー検出サーバに提供されるだけであり、信頼評価サーバには提供されない。本明細書においてさらに記載するように、エンティティの間の、このタイプの情報遮蔽は、ブラインド署名の使用によって可能にされる。
開示する技法はしたがって、機密ユーザ情報(たとえば、コンテキストアプリケーションデータ)を保護し、ユーザプライバシーを保証する際に有利であり、というのは、この情報は、クライアントデバイスの外側のどのエンティティによっても、アプリケーションのデジタル証明書に関する、対応するデータ、およびデバイス信頼性データにリンクすることができないからである。これは、信頼評価サーバがコンテキストアプリケーションデータへのアクセスを持たず、アプリケーションエラー検出サーバが、アプリケーションのデジタル証明書に関するデータおよびデバイス信頼性データへのアクセスを持たないからである。このことはまた、ユーザについての情報を(たとえば、コンテキストアプリケーションデータをアプリケーションのデジタル証明書に関するデータおよびデバイス信頼性データと突き合わせることによって)学習しようとする、サーバの間のいかなる共謀も防止し、したがって、ユーザ情報は、クライアントデバイスおよび/またはデバイスの関連付けられたアプリケーションにおけるエラーを識別するプロセスの間、保護される。
本明細書において説明される本主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。本主題の他の特徴、態様および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
デジタルコンテンツが、クライアントデバイスへ配布され、クライアントデバイス上で提示される一例示的環境のブロック図である。 クライアントデバイス上で実行するアプリケーションにおけるエラーを検出する際に、図1において参照される様々なエンティティの例示的動作およびそれらのエンティティの間の例示的対話を示すスイムレーン図である。 クライアントデバイス上で実行するアプリケーションにおけるエラーを検出するための一例示的プロセスの流れ図である。 記載する動作を実施するのに使われ得る一例示的コンピュータシステムのブロック図である。
本明細書は概して、クライアントデバイスのユーザのプライバシーを損なうことのない、クライアントデバイスおよび/またはそれに関連付けられたアプリケーションにおける、(従来のシステムと比較して)より堅牢なエラー検出のための技法に関する。
本明細書全体を通して記載するように、向上したエラー検出技法は、あるシステム/サーバ/サーバインスタンスがデバイスおよびアプリケーション信頼性/真正性評価を実施する(たとえば、図1に示す信頼評価サーバ)と同時に、第2のシステム/サーバ/サーバインスタンスが、(本明細書においてさらに記載するように)コンテキストアプリケーションデータに基づいて、アプリケーションおよび/またはデバイスにおけるエラーを検出する(たとえば、図1に示すアプリケーションエラー検出サーバ)、分岐アーキテクチャを使う。そのようなアーキテクチャを使い、これらのシステム/サーバ/サーバインスタンスに提供される特定のデータに対してブラインド署名を適用することによって、最小限のユーザ/デバイス情報が、いずれか1つのサーバ/システム/インスタンスと共有される(たとえば、そのシステム/サーバ/サーバインスタンスの動作を実施するのに必要なだけの情報)。このことは、デバイスおよびアプリケーション信頼性/真正性評価のために要求されるデータが、外部エンティティ(クライアントデバイスの外側)によって、コンテキストアプリケーションデータと突き合わされるのを防止するという利点を提供する。このことは、したがって、突き合わせの結果として、どの外部エンティティが、ユーザについての情報を学習するのも防止し、そうすることによって、ユーザプライバシーの向上を提供する。
アプリケーションおよび/またはクライアントデバイスにおけるエラーを検出する際の、アプリケーションエラー検出サーバ、信頼評価サーバ、およびクライアントデバイスの動作/対話が、以下で要約され、本明細書全体を通して詳しく記載される。
クライアントデバイスは最初に、(1)アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータ(たとえば、ユーザのブラウズ履歴、訪問された現在のウェブページ/ウェブサイト、マウスの動き、現在のドメインとのユーザ対話、またはスクリプトがアプリケーションから収集することができる任意の信号、アプリケーション中で表示されるコンテンツとのユーザ対話、など)、(2)アプリケーションのデジタル証明書に関するデータ(たとえば、アプリケーションのアプリケーションパッケージ(APK)のデジタルダイジェストまたは暗号ハッシュ)、および(3)クライアントデバイスの信頼性を評価する際に使われ得るデータを含むデバイス信頼性データ(たとえば、使われるデバイスのタイプ、デバイスのオペレーティングシステムなど)を含むデータのセットを取得する。アプリケーション(またはオペレーティングシステム/信頼されるアプリケーション)は、コンテキストアプリケーションデータをブラインドし、このブラインドされたデータを、デバイス信頼性データおよびデジタル証明書に関するデータとともに、信頼評価サーバへ送る。
受信されたデバイス信頼性データおよびデジタル証明書に関するデータに基づいて、信頼評価サーバは、デバイスが信頼できるかどうか、およびアプリケーションが真正である(すなわち、アプリケーションが、オフィシャルビルドであり、かつ/または、たとえば、セキュリティ問題がないかスキャン済みであり、いかなるマルウェアもウィルス(もしくは別のセキュリティ問題)もないと見なされている、既知の、信頼されるアプリケーションである)かどうかを判断する。
コンテキストアプリケーションデータはブラインドされているので、信頼評価サーバは、このデータにアクセスすることも解読することもできない(アプリケーションから受信したとしても)。信頼評価サーバは、ブラインドされたコンテキストアプリケーションデータにデジタル署名し、アプリケーション(またはオペレーティングシステム/信頼されるアプリケーション)に、このデジタル署名を、デバイスが信頼できるかどうか、およびアプリケーションが真正であるかどうかを明記する指示とともに提供する。
信頼評価サーバからデータを受信すると、アプリケーション(またはオペレーティングシステム/信頼されるアプリケーション)は、信頼評価サーバによって提供されたデータ(すなわち、ブラインド署名)が、修正されていない、またはそうでなければ損なわれても偽造されてもいないことを保証するために、デジタル署名を検証する。検証されると、アプリケーション(またはオペレーティングシステム/信頼されるアプリケーション)は、コンテキストアプリケーションデータをブラインド解除し、ブラインド解除されたコンテキストアプリケーションデータを、アプリケーションが以前、信頼評価サーバへ送ったコンテキストアプリケーションデータと比較する。この比較に基づいて一致が見つかった場合、アプリケーション(またはオペレーティングシステム/信頼されるアプリケーション)は、(信頼評価サーバからの)デジタル署名と、ブラインド解除されたコンテキストアプリケーションデータと、デバイスおよびアプリケーションの信頼性/真正性に関する指示とを、アプリケーションエラー検出サーバに提供する。デバイスおよびアプリケーションの信頼性/真正性に関する指示のみ(ならびにデバイス信頼性データおよびアプリケーションのデジタル証明書に関するデータではなく)がアプリケーションエラー検出サーバに提供されるので、このサーバには、デバイス信頼性データも、アプリケーションのデジタル証明書に関するデータも決して明かされない(このことが、ユーザ/デバイスのプライバシーをさらに保護する)。採用されるブラインド署名方式のおかげで、信頼評価サーバには、コンテキストアプリケーションデータも知らされず、このことが、ユーザ/デバイスのプライバシーをさらに保護する。
アプリケーション(またはオペレーティングシステム/信頼されるアプリケーション)からデータを受信すると、アプリケーションエラー検出サーバは、受信されたデジタル署名を検証する。検証されると、アプリケーションエラー検出システムは、デバイスおよびアプリケーションの信頼性/真正性に関する指示とともにコンテキストアプリケーションデータを使って、アプリケーションおよび/またはクライアントデバイスにおけるエラーがあるかどうかを判断する。アプリケーションエラー検出システムは、エラーの存在(または不在)に関するその判断をコンテンツプラットフォームおよび/またはクライアントデバイスに提供し、コンテンツプラットフォームおよび/またはクライアントデバイスは、アプリケーションと、クライアントデバイスおよび/またはコンテンツプラットフォームとの間の継続される対話を制限し、制約し、または許可するかどうかを判断すればよい。
これらの特徴および追加特徴について、図1~図4を参照して以下で説明する。
図1は、デジタルコンテンツが、クライアントデバイスへ配布され、クライアントデバイス上で提示される一例示的環境のブロック図である。例示的環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどのネットワーク120を含む。ネットワーク120は、クライアントデバイス102、コンテンツプラットフォーム150、アプリケーションエラー検出サーバ140、および信頼評価サーバ130を接続する。例示的環境100は、多くの異なるクライアントデバイス102、コンテンツプラットフォーム150、アプリケーションエラー検出サーバ140、および信頼評価サーバ130を含み得る。
コンテンツプラットフォーム150は、コンテンツの配布を可能にするコンピューティングプラットフォームである。例示的コンテンツプラットフォーム150は、検索エンジン、ソーシャルメディアプラットフォーム、新規プラットフォーム、データアグリゲータプラットフォーム、または他のコンテンツ共有プラットフォームを含む。各コンテンツプラットフォーム150は、コンテンツプラットフォームサービスプロバイダによって運営され得る。コンテンツプラットフォーム150は、それ自体のコンテンツをプラットフォーム上で公開し、利用可能にし得る。たとえば、コンテンツプラットフォーム150は、独自のニュース記事を公開するニュースプラットフォームであってよい。コンテンツプラットフォーム150はまた、1つまたは複数のコンテンツソース/プロバイダによって提供されるコンテンツを提示し得る。上記の例では、ニュースプラットフォームはまた、異なる作者によって作成されるとともに1つまたは複数のコンテンツソースによって提供されるコンテンツを提示し得る。別の例として、コンテンツプラットフォーム150は、独自のコンテンツはどれも公開しないが、異なるニュースウェブサイト(すなわち、コンテンツソース/プロバイダ)によって提供されたニュース記事を集約し、提示するデータアグリゲータプラットフォームであってよい。
クライアントデバイス102は、ネットワーク120を介してコンテンツを要求し、受信することが可能な電子デバイスである。例示的クライアントデバイス102は、パーソナルコンピュータ、モバイル通信デバイス、デジタルアシスタントデバイス、装着可能デバイス、スマートホームデバイス、およびネットワーク120を介してデータを送ること、および受信することができる他のデバイスを含む。
クライアントデバイス102は通常、ネットワーク120を介したコンテンツの送付および受信を容易にするために、ウェブブラウザまたはネイティブアプリケーションなど、1つまたは複数のユーザアプリケーション(たとえば、アプリケーション104)を含む。クライアントデバイス102において提示されるコンテンツの例は、ウェブページ、文書処理ドキュメント、ポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、ならびに検索結果ページおよびデジタル広告を含む。
クライアントデバイス102が、アプリケーション(たとえば、ブラウザまたはネイティブアプリケーションであってよいアプリケーション104)内でコンテンツプラットフォーム150によって提供されるコンテンツページにアクセスすると、コンテンツページ上のスクリプト、またはクライアントアプリケーション104中のネイティブコードが、1つまたは複数のコンテンツソースに対してコンテンツを要求する。コンテンツについての要求に応答して、1つまたは複数のコンテンツソースが、アプリケーション104内での表示用に提供され得るコンテンツを提供し得る。
以下で要約し、図2および図3を参照してより詳細に記載するように、オペレーティングシステム106、信頼されるアプリケーション108、およびデバイス信頼性クライアント110など、クライアントデバイス102の1つまたは複数の構成要素が、アプリケーション104におけるエラーを識別するために、信頼評価サーバ130およびアプリケーションエラー検出サーバ140と連携し得る。これらの構成要素の構造および動作については、以下で要約し、図2を参照してより詳細に記載する。
クライアントデバイス102は、デバイスハードウェアおよびソフトウェアリソースの管理を主に担当するオペレーティングシステム106を含む。クライアントデバイス102は、特定の実装形態、アプリケーション、および/または使用ケースに基づいて、データを一時的または永続的に記憶するための1つまたは複数の非一時的記憶デバイスも含む。
クライアントデバイス102は、信頼されるアプリケーション108を含む。本明細書において使われる限り、信頼されるアプリケーション108は、クライアントデバイス102上のセキュアな環境内で動作し、いくつかのコアデバイスサービス(オペレーティングシステム内の特権的/カーネルコードによって実施されるデバイスサービスと同様)を実施するアプリケーションである。いくつかの実装形態では、信頼されるアプリケーション108は、オペレーティングシステム106の一部もしくはウェブブラウザであってよく、またはオペレーティングシステムベンダ(もしくはウェブブラウザベンダ)によって実装および/もしくは公開されてよい。いくつかの実装形態では、オペレーティングシステム106はオープンソースオペレーティングシステムであってよく、一方では、信頼されるアプリケーション108は、専用/クローズドソースオペレーティングシステムとして動作する。いくつかの実装形態では、信頼されるアプリケーション108はクライアント102から除外されてまたは取り除かれてよく、その場合、信頼されるアプリケーション108の動作は、オペレーティングシステム106によって実施され得る。
信頼されるアプリケーション108(またはオペレーティングシステム106)は、アプリケーション(たとえば、ウェブブラウザ)のアプリケーションパッケージ(APK)証明書を収集し、そのデジタルダイジェスト(これは証明書の1つまたは複数のフィールドにハッシュ関数を適用することによって概して生成される証明書の一意の識別子である)を算出し得る。このデジタルダイジェストは、アプリケーションが真正である/信頼できるかどうかを評価する際に使われ得る。同様に、信頼されるアプリケーション108は、アプリケーションパッケージ(APK)の暗号ハッシュを算出し得る。APK暗号ハッシュ結果は、アプリケーションが真正である/信頼できるかどうかを評価する際に使われ得る。
クライアントデバイス102は、デバイス信頼性クライアント110を含む。オペレーティングシステム106および/または信頼されるアプリケーション108によって呼び出されると、デバイス信頼性クライアント110は、単独で、またはオペレーティングシステム106と協力して、クライアントデバイス102の環境から信号を収集する。デバイス信頼性クライアント110によって収集される信号の例は、デバイスのタイプ、デバイスのモデル番号、デバイスがルート化および/または脱獄されている(jailbroken)かどうかの根拠、デバイス上で稼動するオペレーティングシステム、デバイスが最後にアップデートされたとき、などを含むが、それらに限定されない。これらの信号は、まとめてデバイス信頼性データと呼ばれ、クライアントデバイス102の信頼性を判断するのに使われ得る(図2および図3を参照してさらに記載するように)。
環境100は信頼評価サーバ130をさらに含み、これは、クライアントデバイス102の信頼性および/またはアプリケーション104の真正性を判断する際に、クライアントデバイス102によって提供されたデータを使う(図2および図3を参照してさらに記載するように)。
環境100はアプリケーションエラー検出サーバ140も含み、これは、アプリケーション104におけるエラーを検出する。いくつかの実装形態では、アプリケーションエラー検出サーバ140および信頼評価サーバ130は、別個の、無関係のサーバであってよい。他の実装形態では、これらのサーバは、単一のエンティティに関連付けられた単一のサーバまたはシステム上で稼動する別個のインスタンスであってよい。図2および図3を参照して記載するように、アプリケーションエラー検出サーバ140は、クライアントデバイス102から受信されたコンテキストアプリケーションデータおよび信頼評価サーバ130によって提供された/から受信された信頼性判断/指示に基づいて、アプリケーションにおけるエラーを検出する。本明細書において使われる限り、コンテキストアプリケーションデータは、アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すデータを含む。例示的コンテキストアプリケーションデータ項目は、アプリケーションにおいてアクセスされるウェブサイトの名称、ウェブサイトがアクセスされた時間、アプリケーションの実行中の、クライアントデバイスとのユーザ対話のタイプ(たとえば、デバイススクリーン上でのタッチ、マウスクリック、スワイプ、スクロール、キーボード入力など)、ブラウズ履歴、ブラウザプラグインまたはインストールされているフォント、およびアプリケーション内で提供されるコンテンツページの部分を閲覧するのに費やされる時間を含むが、それらに限定されない。そのようなコンテキストアプリケーションデータは、アプリケーション104(またはアプリケーションにおいて実行するネイティブコード)が、コンテンツプラットフォーム150にアクセスするのに使われるときにスクリプトによって収集され得る。いくつかの実装形態では、スクリプトは、このデータを、不透明バイト配列として(または、アプリケーション104による、このデータ構造の修正を防止する別のデータ構造として)アプリケーション104に提供する。
アプリケーション104から受信されたデータに基づいて、アプリケーションエラー検出サーバ140は、アプリケーション104および/またはクライアントデバイス102におけるエラーを検出した場合、エラーが検出されたことをコンテンツプラットフォーム150へ通信すればよく、コンテンツプラットフォーム150は、コンテンツプラットフォーム150との、アプリケーションからの対話およびいかなるさらなるアクションも制限または防止し得る。追加または代替として、アプリケーションエラー検出サーバ140は、エラーが検出されたことをオペレーティングシステム106および/または信頼されるアプリケーション108へ通信すればよく、これらは、コンテンツプラットフォーム150との、アプリケーションからの対話を制限または防止し得る。
アプリケーション104および/またはクライアントデバイス102におけるエラーを検出する際の、上で記載した構成要素の動作について、図2を参照して以下でさらに説明する。
図2は、アプリケーション104および/またはクライアントデバイス102におけるエラーを検出する際の、図1において参照された様々なエンティティ/構成要素の例示的動作、およびそれらの間の対話を示すスイムレーン図である。プロセス200の動作が、以下において、例示目的のためにのみ説明される。プロセス200の動作は、どの適切なデバイスまたはシステム、たとえば、どの適切なデータ処理装置によって実施されてもよい。プロセス200の動作は、非一時的コンピュータ可読媒体/記憶デバイス上に記憶された命令として実装されてもよい。命令の実行により、1つまたは複数のデータ処理装置が、プロセス200の動作を実施する。
アプリケーション104内で提供されるコンテンツページ上のスクリプトが、コンテキストアプリケーションデータを(202において)収集する。いくつかの実装形態では、アプリケーション104(たとえば、ウェブブラウザ)が、(クライアントデバイス102上で実行する)アプリケーション104を介してコンテンツプラットフォーム150によって提供されるコンテンツページにアクセスするのに使われるとき、コンテンツページ上のスクリプトが、(たとえば、アプリケーション104のアプリケーションプログラミングインターフェース(API)をコールすることによって)コンテキストアプリケーションデータを実行し、収集する。コンテキストアプリケーションデータは、アプリケーション内でコンテンツがその中で提示される現在のコンテキストに限定される必要はなく、アプリケーション内でコンテンツがその中で提示される先行コンテキスト(たとえば、アプリケーション使用履歴)も含み得る。スクリプトは、収集されたコンテキストアプリケーションデータを、不透明バイト配列(またはこのデータを受信するエンティティによる、配列中のデータの修正を防止する別の適切なデータ構造)の中へパッケージ化し得る。
アプリケーション104は、コンテキストアプリケーションデータを(204において)取得する。いくつかの実装形態では、スクリプトは、(いかなるプロンプト表示もなしで、またはアプリケーション104からの、コンテキストアプリケーションデータについての要求に応答して)アプリケーション104に提供する。このように、アプリケーション104は、スクリプトから、コンテキストアプリケーションデータを取得する。
アプリケーション104は、コンテキストアプリケーションデータをブラインドして、ブラインドされたコンテキストアプリケーションデータを(206において)生成する。いくつかの実装形態では、アプリケーション104は、パッケージ化コンテキストアプリケーションデータ(たとえば、不透明バイト配列)をブラインドして、ブラインドされたコンテキストアプリケーションデータを生成するのに、IETF VOPRF規格を使えばよい。他の実装形態では、データ構造をブラインドするための、他の知られている規格/技法が、ブラインドされたコンテキストアプリケーションデータを生成するのに使われてよい。いくつかの実装形態では、アプリケーション104は、ブラインドされたコンテキストアプリケーションデータを、信頼されるアプリケーション108またはオペレーティングシステム106に(いかなるプロンプトもなしで、または信頼されるアプリケーション108もしくはオペレーティングシステム106からの、そのようなデータについての要求に応答して、のいずれかで)提供し得る。他の実装形態では、アプリケーション104は、ブラインドされたコンテキストアプリケーションデータをデバイス信頼性クライアント110に(いかなるプロンプトもなしで、またはデバイス信頼性クライアント110からの、そのようなデータについての要求に応答して、のいずれかで)提供し得る。いくつかの実装形態では、オペレーティングシステム106または信頼されるアプリケーション108は、アプリケーションからコンテキストアプリケーションデータを受信し、次いで、このデータをブラインドし得る。
信頼されるアプリケーション108は、アプリケーションのデジタル証明書に関するデータを(208において)取得する。いくつかの実装形態では、信頼されるアプリケーション108は、アプリケーション104のデジタル証明書(たとえば、アプリケーションパッケージ(APK)証明書)を収集し、証明書のデジタルダイジェストを計算し、またはAPK暗号ハッシュ(もしくは証明書の別の適切な一意の識別子)を生成し得る。証明書の、計算されたデジタルダイジェスト、APK暗号ハッシュ、または別の適切な一意の識別子が、アプリケーション104のデジタル証明書に関するデータを構成する。信頼されるアプリケーション108は、デジタル証明書用にインストーラパッケージの名称を取得することもでき、デジタル証明書は、アプリケーション104がデバイス上でどのようにインストールされたか(たとえば、サイドロードされたかどうか)を知らせる。いくつかの実装形態では、信頼されるアプリケーション108ではなく、オペレーティングシステム106が、アプリケーションのデジタル証明書に関するデータを取得し得る。いくつかの実装形態では、信頼されるアプリケーション108(またはオペレーティングシステム106)は、ブラインドされたコンテキストデータおよびデジタル証明書に関するデータをデバイス信頼性クライアントに(いかなるプロンプトもなしで、またはアプリケーション104からの、そのようなデータについての要求に応答して、のいずれかで)提供する。
デバイス信頼性クライアント110は、図1を参照して記載したように、デバイス信頼性データを(210において)取得する。代替として、デバイス信頼性クライアント110ではなく、オペレーティングシステム106がデバイス信頼性データを取得し得る。いくつかの実装形態では、デバイス信頼性クライアント110は、デバイス信頼性データを、信頼されるアプリケーション108またはオペレーティングシステム106に(いかなるプロンプトもなしで、または信頼されるアプリケーション108もしくはオペレーティングシステム106からの、そのようなデータについての要求に応答して、のいずれかで)提供する。
動作206~210は、順番通りに実施されるものとして図2に示されている。これらの動作は、いくつかの実装形態ではそのような順で実施され得るが、他の実装形態では異なる順で実施されてもよい。代替として、これらの動作は、並行して実施されてもよい。
いくつかの実装形態では、オペレーティングシステム106、信頼されるアプリケーション108、またはデバイス信頼性クライアント110は、ブラインドされたコンテキストアプリケーションデータ、デジタル証明書に関するデータ、およびデバイス信頼性データをパッケージ化し、このパッケージ化されたデータを信頼評価サーバ130に提供する。代替として、アプリケーション104、信頼されるアプリケーション108/オペレーティングシステム106、およびデバイス信頼性クライアント110の各々が、それぞれ、ブラインドされたコンテキストアプリケーションデータ、デジタル証明書に関するデータ、およびデバイス信頼性データを、信頼評価サーバ130に別々に提供し得る。
受信されたデータ(すなわち、ブラインドされたコンテキストアプリケーションデータ、デジタル証明書に関するデータ、およびデバイス信頼性データ)に基づいて、信頼評価サーバ130は、以下でさらに説明するように、動作212~218を実施する。信頼評価サーバ130は、これらの動作を連続して実施してよく(ただし、これらの動作は以下で説明する順序で実施される必要はない)、またはこれらの動作は並行して実施されてよい。特に、コンテキストアプリケーションデータはブラインドされているので、信頼評価サーバ130は、データを解読することも、アプリケーション104内のどの特定のユーザおよびその活動にもリンクし戻すこともできない。したがって、そのようなブラインド化は、信頼評価サーバ130との対話に関してユーザプライバシーを保持する。
信頼評価サーバ130は、アプリケーション104のデジタル証明書に関するデータ(たとえば、APKハッシュまたはデジタルダイジェスト)を(212において)検証する。信頼評価サーバ130は、真正性または正式にリリースされたアプリケーションについてのデータを記憶する、信頼される証明書データベース(または、ルックアップテーブルなど、別の適切なデータ構造)を含む。いくつかの実装形態では、信頼される証明書データベースは、アプリケーションデジタル証明書(たとえば、APK証明書)と、対応するAPKデジタルダイジェストまたはAPK暗号ハッシュ(もしくは、デジタル証明書についての適切な一意の識別子)との間のマッピングを含む。
信頼評価サーバ130は、アプリケーションのデジタル証明書に関するデータ(たとえば、APKハッシュまたはデジタルダイジェスト)を、記憶されている既知の、真正アプリケーションのデジタル証明書に関するデータと比較することによって、アプリケーション104が真正であるかどうかを判断する。いくつかの実装形態では、信頼評価サーバ130は、(アプリケーション104から受信した)アプリケーション104のデジタル証明書のデジタルダイジェストまたはAPK暗号ハッシュ(もしくはデジタル証明書についての別の適切な一意の識別子)を、信頼される証明書データベース中に記憶されたデジタルダイジェスト/APK暗号ハッシュ(またはデジタル証明書についての別の適切な一意の識別子)と比較/ルックアップする。この比較に基づいて一致が見つかった場合、信頼評価サーバ130は、アプリケーション104が真正である(すなわち、アプリケーションのオフィシャルビルドである、かつ/または既知の、信頼されるアプリケーションである)と判断する。ただし、比較に基づいて一致が見つからない場合、信頼評価サーバ130は、アプリケーション104が真正でない(すなわち、アプリケーションのオフィシャルビルドでない、かつ/または既知の、信頼されるアプリケーションでない)と判断する。いくつかの実装形態では、信頼評価サーバ130は、アプリケーション104が真正であるかどうかを示すのに、1ビット値を使い得る(たとえば、アプリケーション104が真正である場合は1、アプリケーション104が真正でない場合は0)。
信頼評価サーバ130は、デバイス信頼性データに基づいて、デバイス信頼性裁定を(214および216において)判断する。いくつかの実装形態では、信頼評価サーバ130は、クライアントデバイス102が信頼できるかどうかを判断するために規則のセットを使ってデバイス信頼性データを分析する、規則ベースのエンジンを含み得る。代替として、信頼評価サーバ130は、クライアントデバイス102についてのデバイス信頼性データを受理するとともにクライアントデバイス102の信頼性を出力する機械学習モデル(教師ありもしくは教師なし機械学習モデル、または別の適切な統計モデル)を含み得る。いくつかの実装形態では、機械学習モデルは、複数のデバイスについてのデバイス信頼性データと、複数のデバイスの各々についての既知の、対応するデバイス信頼性とを含むトレーニングデータを使ってトレーニングされる教師ありモデルであってよい。
いくつかの実装形態では、デバイス信頼性裁定(規則ベースのエンジン、モデル、または他の適切な装置によって出力される)は、2ビット値であってよい。2ビット値の第1のビットは、クライアントデバイスが不適切に修正または改変されているかどうかを示す(たとえば、1は、クライアントデバイスが修正/改変されていないことを意味し、一方では、0は、クライアントデバイスが修正/改変されていることを意味する)。2ビット値の第2のビットは、クライアントデバイスのプロファイルが、以前検証されたデバイスのプロファイルと一致することを示す(たとえば、1は、クライアントデバイスが既知であることを意味し、一方では、2は、クライアントデバイスが未知であることを意味する)。代替として、デバイス信頼性裁定は、単に、クライアントデバイスが信頼できるかどうかについての指示を提供する1ビット値であってよい。デバイスの判断された信頼性についての追加情報が、追加ビットを使って符号化されてよいことが、当業者には理解されよう。
信頼評価サーバ130は、アプリケーション104によって提供されるコンテキストアプリケーションデータに(218において)ブラインド署名する。いくつかの実装形態では、信頼評価サーバ130は、IETF VOPRF規格(または別の適切なブラインド署名規格もしくは技法)を使って、アプリケーション104によって提供されるコンテキストアプリケーションデータにブラインド署名する。
いくつかの実装形態では、信頼評価サーバ130は、ブラインドされたコンテキストアプリケーションデータに署名することによって、クライアントデバイスが信頼できる、かつ/またはアプリケーションが真正であることを示すことができる。逆に、信頼評価サーバは、ブラインドされたコンテキストアプリケーションデータに単に署名しないことによって、デバイスが信頼できない、またはアプリケーションが真正でないことを示すことができる。そのような実装形態により、信頼評価サーバ130によって判断されるような、デバイスの信頼性および/またはアプリケーション104の真正性の情報を符号化する追加データビットを提供する必要がなくなる。これは、ブラインドされたコンテキストデータに対するデジタル署名の存在が単独で、デバイスの信頼性およびアプリケーション104の真正性を示すからである。代替として、追加ビットは、依然として、デバイスの信頼性およびアプリケーション104の真正性についての追加の詳細を提供するのに使われてよい。
例示目的のために、図2の以下の説明では、信頼評価サーバ130が、デバイス信頼性裁定にかかわらず、コンテキストアプリケーションデータにブラインド署名し、クライアントデバイス102の信頼性および/またはアプリケーション104の真正性を示す1つまたは複数のビットを別々に提供すると仮定する。
ブラインド署名されたコンテキストアプリケーションデータを、クライアントデバイスが信頼できるかどうかを明記する指示(第1の指示)、およびアプリケーションが既知の、信頼されるアプリケーションであること(または言い換えると、アプリケーションが真正であるかどうか)を明記する別の指示(第2の指示)とともに、信頼評価サーバ130はアプリケーション104に提供し、アプリケーション104は信頼評価サーバ130から受信する。いくつかの実装形態では、信頼評価サーバ130は、このデータを、配列(または別の適切なデータ構造)中で、ブラインド署名されたコンテキストアプリケーションデータを記憶する、配列の、ある位置、クライアントデバイスが信頼できるかどうかを明記する指示を記憶する、配列の別の位置、およびアプリケーションが既知の、信頼されるアプリケーションであるかどうかを明記する指示を記憶する、配列の別の位置と一緒に提供する。いくつかの実装形態では、信頼評価サーバ130は、デバイスの異なるレベルの信頼性および/またはアプリケーションの真正性に基づいて、異なる署名鍵を使って、コンテキストアプリケーションデータにブラインド署名する。そのような実装形態では、信頼評価サーバ130は、いくつかの可能な鍵のうちの1つによって署名が検証されるようにデジタル署名を作成することによって、第1および第2の指示を配る。たとえば、第1および第2の指示の両方が、各々2つの可能性を有する場合、第1および第2の指示についての4つの可能な組合せがある。そのようなケースでは、信頼評価サーバ130は、4つの可能な鍵のうちの1つを使って検証されるべき署名を生成することができる。
信頼評価サーバ130からデータを受信すると、アプリケーション104はブラインド署名を(220において)検証する。ブラインド署名が、信頼評価サーバ130によって署名された有効な署名ではないとアプリケーション104が判断した場合、アプリケーション104は、信頼評価サーバから受信されたデータは損なわれており、したがって信用できないと判断する。この場合、エラー検出処理は終わる。この場合、アプリケーションエラー検出サーバ140は、アプリケーション104および/またはクライアントデバイス102がエラーを有すると判断する。一方、ブラインド署名が、信頼評価サーバ130によって署名された有効な署名であるとアプリケーション104が判断した場合、アプリケーション104はデータを(222において)ブラインド解除する。
ブラインド解除されたコンテキストアプリケーションデータ(これは第1のデータ項目とも呼ばれる)が、信頼評価サーバ130に以前提供されたコンテキストアプリケーションデータと一致しないとアプリケーション104が判断した場合、アプリケーション104は、信頼評価サーバ130から受信されたデータはエラーを有する、またはそうでなければ損なわれていると判断する。この場合、プロセス200のエラー検出処理は終わる。一方、ブラインド解除されたコンテキストアプリケーションデータが、信頼評価サーバ130に以前提供されたコンテキストアプリケーションデータと一致するとアプリケーション104が判断した場合、処理は動作224に進む(これについては、以下で説明する)。
アプリケーション104は、アプリケーションエラー検出サーバ140に、第1のデータ項目に対するデジタル署名、第1の指示、第2の指示、および動作222においてブラインド解除された第1のデータ項目を(224において)提供する。このデータを提供する際、アプリケーション104は、アプリケーションエラー検出サーバ140がアプリケーション104および/またはクライアントデバイス102内におけるエラーを検出することを要求する。特に、第1および第2の指示を提供することだけでは、アプリケーションエラー検出サーバ140は、信頼評価サーバ130に以前提供された、いかなるデバイス信頼性データも受信せず、したがって、アプリケーションエラー検出サーバ130との対話において、デバイス信頼性データに対するプライバシーを保持する。そうではなく、アプリケーションエラー検出サーバ130は、最小限のデバイスおよびアプリケーション信頼性/真正性情報を、第1および第2の指示の形で提供されるだけである。第1および第2の指示は、デバイスまたはアプリケーションにとって一意のいかなる情報も提供しないので、アプリケーションエラー検出サーバは、これらの指示を超えて、アプリケーションまたはクライアントデバイスに関する、いかなる具体的詳細も学習することができない。このことは、アプリケーションエラー検出サーバおよび信頼評価サーバが、ユーザについて情報を学習しようとして共謀したとしても、可能ではないことを意味し、というのは、サーバは、コンテキストアプリケーションデータ(エラー検出サーバに知られている)を、どの所与のユーザについても、アプリケーションのデジタル証明書に関するデータおよびデバイス信頼性データ(信頼評価サーバに知られている)と突き合わせることができないからである。
信頼されるアプリケーション108またはオペレーティングシステム106がコンテキストアプリケーションデータをブラインドする実装形態では、信頼評価サーバ130は、信頼されるアプリケーション108/オペレーティングシステム106に、ブラインド署名されたコンテキストアプリケーションデータを、クライアントデバイスが信頼できるかどうかを明記する指示(第1の指示)、およびアプリケーションが既知の、信頼されるアプリケーションであること(または言い換えると、アプリケーションが真正であるかどうか)を明記する別の指示(第2の指示)とともに提供する。そのような実装形態では、信頼されるアプリケーション108/オペレーティングシステム106は、ブラインド署名を検証し、ブラインドされたデータをブラインド解除し、ブラインド解除されたデータをコンテキストアプリケーションデータと比較する。そのような実装形態では、信頼されるアプリケーション108/オペレーティングシステム106は、アプリケーションエラー検出サーバ140に、第1のデータ項目に対するデジタル署名、第1の指示、第2の指示、およびブラインド解除された第1のデータ項目を、動作222において提供する。
アプリケーション104(または信頼されるアプリケーション108/オペレーティングシステム106)からデータを受信すると、アプリケーションエラー検出サーバ140は、ブラインド署名を(226において)検証する。IETF VOPRFブラインド署名規格が使われる実装形態では、アプリケーションエラー検出サーバ140は、署名を検証するために、信頼評価サーバ130と対話する。これは、VOPRFブラインド署名は公に検証可能でないからである。そのような実装形態では、アプリケーションエラー検出サーバ140は、ブラインド署名を検証するために、信頼評価サーバ130と通信する。信頼評価サーバ130は、署名が有効であると判断した場合、デジタル署名が有効であることを明記する指示を提供する。一方、信頼評価サーバ130は、署名が有効でないと判断した場合、デジタル署名が無効であると明記する指示を提供する。いくつかの実装形態では、VOPRF規格ではなく、公に検証可能なデジタル署名アルゴリズムが使われてよく、その場合、アプリケーションエラー検出サーバ140自体が、(信頼評価サーバ130、すなわち、デジタル署名を生成したエンティティと接触する必要なく)デジタル署名が有効であるかどうかを検証することができる。
アプリケーションエラー検出サーバ140が、ブラインド署名は、信頼評価サーバ130によって署名された有効な署名でないと判断した場合、アプリケーションエラー検出サーバ140は、アプリケーション104から受信されたデータは損なわれており、したがって信用できないと判断する。この場合、アプリケーションエラー検出サーバ140は、アプリケーション104および/またはクライアントデバイス102がエラーを有すると判断する。一方、アプリケーションエラー検出サーバ140が、ブラインド署名は、信頼評価サーバ130によって署名された有効な署名であると判断した場合、処理は動作228に続く(以下で説明するように)。
アプリケーションエラー検出サーバ140は、第1の指示、第2の指示、およびコンテキストアプリケーションデータに基づいて、アプリケーション104が何らかのエラーを有するかどうかを(228において)判断する。いくつかの実装形態では、アプリケーションエラー検出サーバ140は、アプリケーション104に何らかのエラーが存在するかどうかを判断するために規則のセットを使って、アプリケーション104から受信されたデータを処理する、規則ベースのエンジンを含み得る。代替として、アプリケーションエラー検出サーバ140は、動作224においてアプリケーション104から受信されたデータを受理するとともに、アプリケーションが何らかのエラーを有するかどうかを明記する指示(すなわち、第3の指示)を出力する機械学習モデル(たとえば、教師ありもしくは教師なし機械学習モデル、または別の適切な統計モデル)を含み得る。いくつかの実装形態では、機械学習モデルは、第1の指示と、第2の指示と、複数のデバイスの各々、およびアプリケーションにエラーが存在するかどうかを明記する既知の、対応する指示についてのコンテキストアプリケーションデータとを含むトレーニングデータを使ってトレーニングされる教師ありモデルであってよい。
先行する段落において記載した実装形態のうちのいずれかにおいて、クライアントデバイス102の信頼性およびアプリケーション104の真正性に関するデータは、アプリケーション104および/またはクライアントデバイス102におけるエラーの存在の最終判断の考慮に入れられ得る。たとえば、第1および第2の指示が、それぞれ、クライアントデバイス102が信頼でき、アプリケーション104が真正であると明記する場合、アプリケーションエラー検出サーバ140は、アプリケーション104にエラーが存在する見込みを低減してよい。別の例として、第1および第2の指示が、それぞれ、クライアントデバイス102が信頼できず、アプリケーション104が真正でないと明記する場合、アプリケーションエラー検出サーバ140は、アプリケーション104にエラーが存在する見込みを増大してよい。その結果、アプリケーションエラー検出サーバ140のエラー検出は、アプリケーションエラー判断においてデバイス信頼性およびアプリケーション真正性を考慮に入れない従来技術よりも堅牢である。
要するに、従来のシステムと比較して、図1の様々な構成要素の上述した動作およびそれらの間の対話は、アプリケーションにおけるエラーの存在の、より堅牢な指示を提供するとともに、ユーザのプライバシーを(アプリケーションエラー検出サーバ140および信頼評価サーバ130に最小限の情報を露出し、したがって、いかなるユーザフィンガープリンティングも最小限にし、または可能性としてはさらになくすことによって)保持する。
図3は、クライアントデバイス102上で実行するアプリケーション104中のエラーを検出するための一例示的プロセス300の流れ図である。プロセス300の動作は、図1において記載し、示したシステムの構成要素によって実施されるものとして、以下で説明される。プロセス300の動作が、以下において、例示目的のためにのみ説明される。プロセス300の動作は、どの適切なデバイスまたはシステム、たとえば、どの適切なデータ処理装置によって実施されてもよい。プロセス300の動作は、非一時的コンピュータ可読媒体上に記憶された命令として実装されてもよい。命令の実行により、1つまたは複数のデータ処理装置が、プロセス300の動作を実施する。
アプリケーション104(クライアントデバイス102上で実行する)は、コンテキストアプリケーションデータを(302において)取得する。図1および図2を参照して記載したように、アプリケーション104が、コンテンツプラットフォーム150によって提供されるコンテンツページにアクセスするのに使われるとき、スクリプトがコンテキストアプリケーションデータを実行および収集し、このデータは、アプリケーション内でコンテンツが提供され、対話されるコンテキストを表す。
アプリケーション104は、コンテキストアプリケーションデータをブラインドして、ブラインドされたコンテキストアプリケーションデータを(304において)生成する。図1および図2を参照して記載したように、アプリケーション104は、ブラインドされたコンテキストアプリケーションデータを生成するために、IETF VOPRF規格(または別の適切な規格もしくはブラインド署名技法)に従って、コンテキストアプリケーションデータ(これは不透明バイト配列としてパッケージ化されてよい)をブラインドする。
クライアントデバイス102上のオペレーティングシステム106または信頼されるアプリケーション108は、アプリケーションのデジタル証明書に関するデータおよびデバイス信頼性データを(306において)取得する。図1および図2を参照して記載したように、クライアントデバイス102の信頼されるアプリケーション108(またはオペレーティングシステム106)は、アプリケーション104のデジタル証明書に関するデータを取得し、データは、アプリケーションのAPK証明書、デジタルダイジェスト、APK証明書またはAPKバイナリ自体に対応するAPK暗号ハッシュ(または別の適切な一意の識別子)、および証明書のインストーラパッケージ名を含み得る。やはり図1および図2を参照して記載したように、クライアントデバイス102のデバイス信頼性クライアント110(またはオペレーティングシステム106)は、デバイス信頼性データを取得し、このデータは、クライアントデバイスの信頼性を評価する際に使われ得るデータ(たとえば、デバイスのタイプ、デバイス上にインストールされているオペレーティングシステムなど)を含む。
信頼評価サーバ130は、ブラインドされたコンテキストアプリケーションデータ、デジタル証明書に関するデータ(たとえば、APKハッシュ)、およびデバイス信頼性データを(308において)提供される。図1および図2を参照して記載したように、信頼されるアプリケーション108、デバイス信頼性クライアント110、またはオペレーティングシステム106は、デジタル証明書に関するデータ(またはAPKハッシュ)を、デバイス信頼性データおよびブラインドされたコンテキストアプリケーションデータ(それは動作304において生成される)とともにパッケージ化し、このデータを信頼評価サーバ130に提供する。
アプリケーション104は、信頼評価サーバ130から、データのセットを(310において)受信する。図1および図2を参照して記載したように、信頼評価サーバ130は、デジタル証明書に関するデータ(たとえば、APKダイジェストまたはAPKハッシュ)、およびデバイス信頼性データ(これを動作308において受信した)を、クライアントデバイス102が信頼できるかどうか、およびアプリケーションが既知の、信頼されるアプリケーションであるかどうかを判断するのに使う。さらに、信頼評価サーバ130はまた、第1のデータ項目にデジタル署名し、この項目は、ブラインドされたコンテキストアプリケーションデータであってよい(やはり図1および図2を参照して記載したように)。(1)クライアントデバイスが信頼できることを明記する第1の指示、(2)アプリケーションが既知の、信頼されるアプリケーションであることを明記する第2の指示、および(3)第1のデータ項目に対する、信頼評価サーバのデジタル署名を含むデータのセットを、信頼評価サーバ130はアプリケーション104に提供し、アプリケーション104は信頼評価サーバ130から受信する(図1および図2を参照してさらに記載したように)。
アプリケーション104は、データのセット中の第1のデータ項目に対するデジタル署名を(312において)検証する。図1および図2を参照して記載したように、アプリケーション104は、第1のデータ項目に対するデジタル署名が信頼評価サーバ130の有効な署名であることを検証する。
第1のデータ項目に対するデジタル署名を検証したことに応答して、アプリケーションは、第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を(314において)取得する。いくつかの実装形態では、アプリケーション104は、(動作310において信頼評価サーバ130から受信された)データのセットに含まれる第1のデータ項目をブラインド解除する。
アプリケーション104は、ブラインド解除された第1のデータ項目が、動作302においてアプリケーションによって取得されたコンテキストアプリケーションデータと一致することを(316において)確認する。図2を参照して上述したように、アプリケーション104は、ブラインド解除された第1のデータ項目を、動作302において取得されたコンテキストアプリケーションデータと比較する。一致を見つけると、アプリケーション104は、ブラインド解除された第1のデータ項目が、実際には、信頼評価サーバ130へ以前送ったコンテキストアプリケーションデータであることを確認する。
ブラインド解除された第1のデータ項目がコンテキストアプリケーションデータと一致することを確認したことに応答して、アプリケーションは、アプリケーションエラー検出サーバ140に、第1のデータ項目に対するデジタル署名、第1の指示、第2の指示、およびブラインド解除された第1のデータ項目を(318において)提供する。
アプリケーション104は、アプリケーションエラー検出サーバ140から、アプリケーションがいかなるエラーも持たないことを明記する第3の指示を(320において)受信する。図1および図2を参照して記載したように、アプリケーションエラー検出サーバ140は、動作318においてアプリケーション104から受信したデータを、アプリケーション104および/またはクライアントデバイス102が何らかのエラーを有するかどうかを判断するのに使う。アプリケーションエラー検出サーバ140は、アプリケーション104および/またはクライアントデバイス102がエラーを有すると判断した場合、アプリケーション(および/またはクライアントデバイス)がエラーを有することを明記する指示を、アプリケーション104に提供する(ならびにアプリケーション104は受信する)。一方、アプリケーションエラー検出サーバ140は、アプリケーションがエラーを持たないと判断した場合、アプリケーション(および/またはクライアントデバイス102)がエラーを持たないことを明記する指示をアプリケーション104に提供する(ならびにアプリケーション104は受信する)。
いくつかの代替実装形態では、図3の動作は、ブラインドされたコンテキストアプリケーションデータを信頼評価サーバへ送らないことによって、ある程度の起こり得る待ち時間を削減するように修正されてよい。そのような実装形態は、以下で説明する、いくつかの動作上の違いは例外として、図3を参照して記載したのと同じ動作を有する。簡潔のために、動作上の違いのみを、これらの代替実装形態の記述において以下で説明するが、図3の残りの動作およびそれらのそれぞれの記述が、これらの実装形態において使われることに留意されたい(また、いかなる疑義の回避のためにも、それらの動作は、参照によって本明細書に組み込まれている)。
そのような代替実装形態では、アプリケーション104は依然として、コンテキストアプリケーションデータを取得するが、このデータをブラインドしない。そうではなく、アプリケーション104は、データのランダムセット(たとえば、ノンス)を生成し、データのこのランダムセットをブラインドして、データのブラインドされたランダムセットを生成する(これは上の図3の記述における動作304と置き換わる)。データのこのブラインドされたランダムセットは、(動作306において記載したように、ブラインドされたコンテキストアプリケーションデータを提供するのではなく)信頼評価サーバ130に提供される。その上、信頼評価サーバ130は、(上の図3の記述における動作310を参照して記載したように、ブラインドされたコンテキストアプリケーションデータに対するデジタル署名を生成するのではなく)データのブラインドされたランダムセットに対するデジタル署名を生成する。アプリケーション104は、このブラインドされたデータをブラインド解除して、以前生成したデータのランダムセットと同じであることを確認する。このことを確認すると、アプリケーションは、(図3の動作318でのように)コンテキストアプリケーションデータを、デジタル署名、第1の指示、および第2の指示とともに提供し、これらはすべて、(図3の動作320でのように)アプリケーションエラー検出サーバ140によって、アプリケーション104(および/またはクライアントデバイス102)が何らかのエラーを有するかどうかを判断するのに使われる。
図4は、上述した動作を実施するのに使われ得る一例示的コンピュータシステム400のブロック図である。システム400は、プロセッサ410、メモリ420、記憶デバイス430、および入力/出力デバイス440を含む。構成要素410、420、430、および440の各々は、たとえば、システムバス450を使って相互接続され得る。プロセッサ410は、システム400内での実行のための命令を処理することが可能である。いくつかの実装形態では、プロセッサ410は、シングルスレッドのプロセッサである。別の実装形態では、プロセッサ410は、マルチスレッドのプロセッサである。プロセッサ410は、メモリ420中または記憶デバイス430上に記憶された命令を処理することが可能である。
メモリ420は、システム400内に情報を記憶する。一実装形態では、メモリ420は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ420は、揮発性メモリユニットである。別の実装形態では、メモリ420は、不揮発性メモリユニットである。
記憶デバイス430は、システム400に大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス430は、コンピュータ可読媒体である。異なる様々な実装形態では、記憶デバイス430は、たとえば、ハードディスクデバイス、光ディスクデバイス、ネットワークを介して複数のコンピューティングデバイスによって共有される記憶デバイス(たとえば、クラウド記憶デバイス)、または何らかの他の大容量記憶デバイスを含み得る。
入力/出力デバイス440は、システム400のための入力/出力動作を提供する。いくつかの実装形態では、入力/出力デバイス440は、ネットワークインターフェースデバイス、たとえば、イーサネットカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入力/出力デバイス440は、入力データを受信し、周辺デバイス460へ出力データを送るように構成されたドライバデバイス、たとえば、キーボード、プリンタ、およびディスプレイデバイスを含み得る。ただし、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどのような、他の実装形態が使われてもよい。
図4では、一例示的処理システムが記述されているが、本明細書に記載する本主題および機能的動作の実装形態は、他のタイプのデジタル電子回路構成で、またはコンピュータソフトウェア、ファームウェア、もしくは本明細書において開示した構造およびそれらの構造的等価物を含むハードウェアで、またはそれらのうちの1つもしくは複数からなる組合せで実装することができる。
本明細書に記載する本主題および動作の実施形態は、デジタル電子回路構成で、またはコンピュータソフトウェア、ファームウェア、もしくは本明細書において開示した構造およびそれらの構造的等価物を含むハードウェアで、またはそれらのうちの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つまたは複数の特徴は、場合によってはその組合せから削除することができ、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象とすることができる。
同様に、動作は、特定の順序において図面に示されているが、これは、そのような動作が図示された特定の順序において、もしくは順次に実施されることを必要とする、または、所望の結果を達成するためにすべての示された動作が実施されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上述した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載したプログラム構成要素およびシステムは概して、単一のソフトウェア製品に一緒に統合される、または複数のソフトウェア製品にパッケージ化されることが可能であることを理解されたい。
このように、本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲内である。いくつかのケースでは、請求項において具陳されるアクションは、異なる順序で実施され、望ましい結果を依然として達成することができる。さらに、添付の図面に示されるプロセスは、望ましい結果を達成するのに、図示される特定の順序、または順番を必ずしも要求しない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
102 クライアントデバイス
104 アプリケーション
106 オペレーティングシステム
108 信頼されるアプリケーション
110 デバイス信頼性クライアント
120 ネットワーク
130 信頼評価サーバ
140 アプリケーションエラー検出サーバ
150 コンテンツプラットフォーム
400 コンピュータシステム、システム
410 プロセッサ、構成要素
420 メモリ、構成要素
430 記憶デバイス、構成要素
440 入力/出力デバイス、構成要素
450 システムバス
460 周辺デバイス

Claims (20)

  1. コンピュータ実装方法であって、
    クライアントデバイス上で実行するアプリケーションによって、前記アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得するステップと、
    前記アプリケーションによって、前記コンテキストアプリケーションデータをブラインドして、ブラインドされたコンテキストアプリケーションデータを生成するステップと、
    前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデータを含むデバイス信頼性データを取得するステップと、
    信頼評価サーバに、前記ブラインドされたコンテキストアプリケーションデータ、前記デジタル証明書に関する前記データ、および前記デバイス信頼性データを提供するステップと、
    前記信頼評価サーバから、(1)前記クライアントデバイスが信頼できることを明記する第1の指示と、(2)前記アプリケーションが真正であることを明記する第2の指示と、(3)第1のデータ項目に対する、前記信頼評価サーバのデジタル署名とを含むデータのセットを受信するステップと、
    前記第1のデータ項目に対する前記デジタル署名を検証するステップと、
    前記第1のデータ項目に対する前記デジタル署名を検証したことに応答して、前記アプリケーションによって、前記第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得するステップと、
    前記ブラインド解除された第1のデータ項目が前記コンテキストアプリケーションデータと一致することを確認するステップと、
    前記ブラインド解除された第1のデータ項目が前記コンテキストアプリケーションデータと一致することを確認したことに応答して、アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記ブラインド解除された第1のデータ項目を提供するステップと、
    前記アプリケーションエラー検出サーバから、前記アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信するステップと
    を含む、
    コンピュータ実装方法。
  2. 前記信頼評価サーバによって、(1)前記デバイス信頼性データに基づいて、前記クライアントデバイスが信頼でき、(2)前記アプリケーションの前記デジタル証明書に関する前記データを、既知の真正アプリケーションのデジタル証明書に関するデータと比較することによって、前記アプリケーションが真正であると判断するステップと、
    前記信頼評価サーバによって、および前記クライアントデバイスに、前記クライアントデバイスが信頼できることを明記する前記第1の指示、および前記アプリケーションが既知のアプリケーションであることを明記する前記第2の指示を提供するステップと
    をさらに含む、
    請求項1に記載のコンピュータ実装方法。
  3. 前記アプリケーションのデジタル証明書に関する前記データは、
    前記アプリケーションのアプリケーションパッケージ(APK)のデジタルダイジェスト、または
    前記アプリケーションの前記APKの暗号ハッシュ
    を含む、
    請求項1に記載のコンピュータ実装方法。
  4. 前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得する前記ステップは、
    前記クライアントデバイス上で実行する信頼されるアプリケーションまたはオペレーティングシステムによって、前記アプリケーションのデジタル証明書に関するデータを取得するステップと、
    前記クライアントデバイス上で実行するデバイス信頼性クライアントアプリケーションによって、デバイス信頼性データを取得するステップと
    を含む、
    請求項1に記載のコンピュータ実装方法。
  5. 前記クライアントデバイスが信頼できることを明記する前記第1の指示は2ビット値であり、
    前記2ビット値の第1のビットは、前記クライアントデバイスが不適切に修正も改変もされていないことを示し、
    前記2ビット値の第2のビットは、前記クライアントデバイスのプロファイルが、以前検証されたデバイスのプロファイルと一致することを示す、
    請求項1に記載のコンピュータ実装方法。
  6. 前記アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記コンテキストアプリケーションデータを提供したことに応答して、前記信頼評価サーバと通信して、前記デジタル署名を検証するステップであって、前記デジタル署名は、IETF VOPRFデジタル署名であり、前記デジタル署名を最初に生成した前記信頼評価サーバによって検証可能である、ステップと、
    前記アプリケーションエラー検出サーバによって、および前記信頼評価サーバから、前記デジタル署名が有効であることを明記する第4の指示を受信するステップと
    をさらに含む、
    請求項1に記載のコンピュータ実装方法。
  7. コンピュータ実装方法であって、
    クライアントデバイス上で実行するアプリケーションによって、データのランダムセットを生成するステップと、
    前記アプリケーションによって、前記データのランダムセットをブラインドして、ブラインドされたデータのランダムセットを生成するステップと、
    前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得するステップと、
    信頼評価サーバに、前記ブラインドされたデータのランダムセット、前記デジタル証明書に関する前記データ、および前記デバイス信頼性データを提供するステップと、
    前記信頼評価サーバから、(1)前記クライアントデバイスが信頼できることを明記する第1の指示と、(2)前記アプリケーションが真正であることを明記する第2の指示と、(3)第1のデータ項目に対する、前記信頼評価サーバのデジタル署名とを含むデータの第1のセットを受信するステップと、
    前記第1のデータ項目に対する前記デジタル署名を検証するステップと、
    前記第1のデータ項目に対する前記デジタル署名を検証したことに応答して、前記アプリケーションによって、前記第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得するステップと、
    前記ブラインド解除された第1のデータ項目が、前記データのランダムセットと一致することを確認するステップと、
    前記ブラインド解除された第1のデータ項目が、前記データのランダムセットと一致することを確認したことに応答して、前記アプリケーションによって、前記アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得するステップと、
    アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記コンテキストアプリケーションデータを提供するステップと、
    前記アプリケーションエラー検出サーバから、前記アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信するステップと
    を含む、
    コンピュータ実装方法。
  8. 命令を記憶した1つまたは複数のメモリデバイスと、
    前記1つまたは複数のメモリデバイスと対話し、前記命令が実行されると、動作を実施するように構成されている1つまたは複数のデータ処理装置と
    を備えるシステムであって、前記動作は、
    クライアントデバイス上で実行するアプリケーションによって、前記アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得することと、
    前記アプリケーションによって、前記コンテキストアプリケーションデータをブラインドして、ブラインドされたコンテキストアプリケーションデータを生成することと、
    前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデータを含むデバイス信頼性データを取得することと、
    信頼評価サーバに、前記ブラインドされたコンテキストアプリケーションデータ、前記デジタル証明書に関する前記データ、および前記デバイス信頼性データを提供することと、
    前記信頼評価サーバから、(1)前記クライアントデバイスが信頼できることを明記する第1の指示と、(2)前記アプリケーションが真正であることを明記する第2の指示と、(3)第1のデータ項目に対する、前記信頼評価サーバのデジタル署名とを含むデータのセットを受信することと、
    前記第1のデータ項目に対する前記デジタル署名を検証することと、
    前記第1のデータ項目に対する前記デジタル署名を検証したことに応答して、前記アプリケーションによって、前記第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得することと、
    前記ブラインド解除された第1のデータ項目が前記コンテキストアプリケーションデータと一致することを確認することと、
    前記ブラインド解除された第1のデータ項目が前記コンテキストアプリケーションデータと一致することを確認したことに応答して、アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記ブラインド解除された第1のデータ項目を提供することと、
    前記アプリケーションエラー検出サーバから、前記アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信することと
    を含む、
    システム。
  9. 前記1つまたは複数のデータ処理装置は、
    前記信頼評価サーバによって、(1)前記デバイス信頼性データに基づいて、前記クライアントデバイスが信頼でき、(2)前記アプリケーションの前記デジタル証明書に関する前記データを、既知の真正アプリケーションのデジタル証明書に関するデータと比較することによって、前記アプリケーションが真正であると判断することと、
    前記信頼評価サーバによって、および前記クライアントデバイスに、前記クライアントデバイスが信頼できることを明記する前記第1の指示、および前記アプリケーションが既知のアプリケーションであることを明記する前記第2の指示を提供することと
    をさらに含む動作を実施するように構成される、
    請求項8に記載のシステム。
  10. 前記アプリケーションのデジタル証明書に関する前記データは、
    前記アプリケーションのアプリケーションパッケージ(APK)のデジタルダイジェスト、または
    前記アプリケーションの前記APKの暗号ハッシュ
    を含む、
    請求項8に記載のシステム。
  11. 前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得することは、
    前記クライアントデバイス上で実行する信頼されるアプリケーションまたはオペレーティングシステムによって、前記アプリケーションのデジタル証明書に関するデータを取得することと、
    前記クライアントデバイス上で実行するデバイス信頼性クライアントアプリケーションによって、デバイス信頼性データを取得することと
    を含む、
    請求項8に記載のシステム。
  12. 前記クライアントデバイスが信頼できることを明記する前記第1の指示は2ビット値であり、
    前記2ビット値の第1のビットは、前記クライアントデバイスが不適切に修正も改変もされていないことを示し、
    前記2ビット値の第2のビットは、前記クライアントデバイスのプロファイルが、以前検証されたデバイスのプロファイルと一致することを示す、
    請求項8に記載のシステム。
  13. 前記1つまたは複数のデータ処理装置は、
    前記アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記コンテキストアプリケーションデータを提供したことに応答して、前記信頼評価サーバと通信して、前記デジタル署名を検証することであって、前記デジタル署名は、IETF VOPRFデジタル署名であり、前記デジタル署名を最初に生成した前記信頼評価サーバによって検証可能である、検証することと、
    前記アプリケーションエラー検出サーバによって、および前記信頼評価サーバから、前記デジタル署名が有効であることを明記する第4の指示を受信することと
    をさらに含む動作を実施するように構成される、
    請求項8に記載のシステム。
  14. 1つまたは複数のデータ処理装置によって実行されると、前記1つまたは複数のデータ処理装置に動作を実施させる命令を記憶した非一時的コンピュータ可読記録媒体であって、前記動作は、
    クライアントデバイス上で実行するアプリケーションによって、前記アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得することと、
    前記アプリケーションによって、前記コンテキストアプリケーションデータをブラインドして、ブラインドされたコンテキストアプリケーションデータを生成することと、
    前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデータを含むデバイス信頼性データを取得することと、
    信頼評価サーバに、前記ブラインドされたコンテキストアプリケーションデータ、前記デジタル証明書に関する前記データ、および前記デバイス信頼性データを提供することと、
    前記信頼評価サーバから、(1)前記クライアントデバイスが信頼できることを明記する第1の指示と、(2)前記アプリケーションが真正であることを明記する第2の指示と、(3)第1のデータ項目に対する、前記信頼評価サーバのデジタル署名とを含むデータのセットを受信することと、
    前記第1のデータ項目に対する前記デジタル署名を検証することと、
    前記第1のデータ項目に対する前記デジタル署名を検証したことに応答して、前記アプリケーションによって、前記第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得することと、
    前記ブラインド解除された第1のデータ項目が前記コンテキストアプリケーションデータと一致することを確認することと、
    前記ブラインド解除された第1のデータ項目が前記コンテキストアプリケーションデータと一致することを確認したことに応答して、アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記ブラインド解除された第1のデータ項目を提供することと、
    前記アプリケーションエラー検出サーバから、前記アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信することと
    を含む、
    非一時的コンピュータ可読記録媒体。
  15. 前記命令は、前記1つまたは複数のデータ処理装置に、
    前記信頼評価サーバによって、(1)前記デバイス信頼性データに基づいて、前記クライアントデバイスが信頼でき、(2)前記アプリケーションの前記デジタル証明書に関する前記データを、既知の真正アプリケーションのデジタル証明書に関するデータと比較することによって、前記アプリケーションが真正であると判断することと、
    前記信頼評価サーバによって、および前記クライアントデバイスに、前記クライアントデバイスが信頼できることを明記する前記第1の指示、および前記アプリケーションが既知のアプリケーションであることを明記する前記第2の指示を提供することと
    をさらに含む動作を実施させる、
    請求項14に記載の非一時的コンピュータ可読記録媒体。
  16. 前記アプリケーションのデジタル証明書に関する前記データは、
    前記アプリケーションのアプリケーションパッケージ(APK)のデジタルダイジェスト、または
    前記アプリケーションの前記APKの暗号ハッシュ
    を含む、
    請求項14に記載の非一時的コンピュータ可読記録媒体。
  17. 前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得することは、
    前記クライアントデバイス上で実行する信頼されるアプリケーションまたはオペレーティングシステムによって、前記アプリケーションのデジタル証明書に関するデータを取得することと、
    前記クライアントデバイス上で実行するデバイス信頼性クライアントアプリケーションによって、デバイス信頼性データを取得することと
    を含む、
    請求項14に記載の非一時的コンピュータ可読記録媒体。
  18. 前記クライアントデバイスが信頼できることを明記する前記第1の指示は2ビット値であり、
    前記2ビット値の第1のビットは、前記クライアントデバイスが不適切に修正も改変もされていないことを示し、
    前記2ビット値の第2のビットは、前記クライアントデバイスのプロファイルが、以前検証されたデバイスのプロファイルと一致することを示す、
    請求項14に記載の非一時的コンピュータ可読記録媒体。
  19. 前記命令は、前記1つまたは複数のデータ処理装置に、
    前記アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記コンテキストアプリケーションデータを提供したことに応答して、前記信頼評価サーバと通信して、前記デジタル署名を検証することであって、前記デジタル署名は、IETF VOPRFデジタル署名であり、前記デジタル署名を最初に生成した前記信頼評価サーバによって検証可能である、検証することと、
    前記アプリケーションエラー検出サーバによって、および前記信頼評価サーバから、前記デジタル署名が有効であることを明記する第4の指示を受信することと
    をさらに含む動作を実施させる、
    請求項14に記載の非一時的コンピュータ可読記録媒体。
  20. 1つまたは複数のデータ処理装置によって実行されると、前記1つまたは複数のデータ処理装置に動作を実施させる命令を記憶した非一時的コンピュータ可読記録媒体であって、前記動作は、
    クライアントデバイス上で実行するアプリケーションによって、データのランダムセットを生成することと、
    前記アプリケーションによって、前記データのランダムセットをブラインドして、ブラインドされたデータのランダムセットを生成することと、
    前記アプリケーションのデジタル証明書に関するデータ、および前記クライアントデバイスの信頼性を評価する際に使われ得るデバイスデータを含むデバイス信頼性データを取得することと、
    信頼評価サーバに、前記ブラインドされたデータのランダムセット、前記デジタル証明書に関する前記データ、および前記デバイス信頼性データを提供することと、
    前記信頼評価サーバから、(1)前記クライアントデバイスが信頼できることを明記する第1の指示と、(2)前記アプリケーションが真正であることを明記する第2の指示と、(3)第1のデータ項目に対する、前記信頼評価サーバのデジタル署名とを含むデータの第1のセットを受信することと、
    前記第1のデータ項目に対する前記デジタル署名を検証することと、
    前記第1のデータ項目に対する前記デジタル署名を検証したことに応答して、前記アプリケーションによって、前記第1のデータ項目をブラインド解除して、ブラインド解除された第1のデータ項目を取得することと、
    前記ブラインド解除された第1のデータ項目が、前記データのランダムセットと一致することを確認することと、
    前記ブラインド解除された第1のデータ項目が、前記データのランダムセットと一致することを確認したことに応答して、前記アプリケーションによって、前記アプリケーション内でコンテンツが提供され、対話されるコンテキストを表すコンテキストアプリケーションデータを取得することと、
    アプリケーションエラー検出サーバに、前記第1のデータ項目に対する前記デジタル署名、前記第1の指示、前記第2の指示、および前記コンテキストアプリケーションデータを提供することと、
    前記アプリケーションエラー検出サーバから、前記アプリケーションがいかなるエラーも持たないことを明記する第3の指示を受信することと
    を含む、
    非一時的コンピュータ可読記録媒体。
JP2021521052A 2020-04-23 2020-05-12 プライバシー保持アプリケーションおよびデバイスエラー検出 Active JP7135210B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2022136800A JP7464663B2 (ja) 2020-04-23 2022-08-30 プライバシー保持アプリケーションおよびデバイスエラー検出

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL274165 2020-04-23
IL274165A IL274165B2 (en) 2020-04-23 2020-04-23 An application for maintaining privacy and detecting device errors
PCT/US2020/032502 WO2021216098A1 (en) 2020-04-23 2020-05-12 Privacy preserving application and device error detection

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022136800A Division JP7464663B2 (ja) 2020-04-23 2022-08-30 プライバシー保持アプリケーションおよびデバイスエラー検出

Publications (2)

Publication Number Publication Date
JP2022533871A JP2022533871A (ja) 2022-07-27
JP7135210B2 true JP7135210B2 (ja) 2022-09-12

Family

ID=78269877

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021521052A Active JP7135210B2 (ja) 2020-04-23 2020-05-12 プライバシー保持アプリケーションおよびデバイスエラー検出
JP2022136800A Active JP7464663B2 (ja) 2020-04-23 2022-08-30 プライバシー保持アプリケーションおよびデバイスエラー検出

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2022136800A Active JP7464663B2 (ja) 2020-04-23 2022-08-30 プライバシー保持アプリケーションおよびデバイスエラー検出

Country Status (7)

Country Link
US (2) US11928237B2 (ja)
EP (2) EP3924856B1 (ja)
JP (2) JP7135210B2 (ja)
KR (1) KR102498265B1 (ja)
CN (1) CN113853603A (ja)
IL (1) IL274165B2 (ja)
WO (1) WO2021216098A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008310760A (ja) 2007-06-18 2008-12-25 Toshiba Corp 情報処理システム、情報処理装置、およびプログラム
JP2012037959A (ja) 2010-08-04 2012-02-23 Hitachi Ltd 利用者端末管理システム、利用者端末管理方法、及びプログラム
US20190356649A1 (en) 2018-05-21 2019-11-21 Wickr Inc. Local Encryption for Single Sign-On
WO2019233204A1 (zh) 2018-06-06 2019-12-12 腾讯科技(深圳)有限公司 密钥管理方法、装置、系统、存储介质和计算机设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1205889A1 (en) * 2000-11-10 2002-05-15 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Returning of change in an electronic payment system
EP2586169A1 (en) * 2010-06-22 2013-05-01 Telefonaktiebolaget LM Ericsson (publ) Privacy preserving authorisation in pervasive environments
JP6019484B2 (ja) 2010-08-25 2016-11-02 ルックアウト、アイエヌシー. サーバで結合されたマルウェア防止のためのシステムと方法
KR20140043068A (ko) 2011-02-17 2014-04-08 타세라, 아이엔씨. 애플리케이션 증명을 위한 시스템 및 방법
US8990948B2 (en) 2012-05-01 2015-03-24 Taasera, Inc. Systems and methods for orchestrating runtime operational integrity
WO2014036021A1 (en) * 2012-08-28 2014-03-06 Visa International Service Association Secure device service enrollment
GB2524578A (en) * 2014-03-28 2015-09-30 Ibm Production of cryptographic signatures
KR20160017551A (ko) 2014-08-06 2016-02-16 주식회사 안랩 어플리케이션 연동 장치 및 방법
EP3026557A1 (en) 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity
EP3735648A1 (en) * 2017-12-06 2020-11-11 Zamna Technologies Limited Method and system for data security, validation, verification and provenance within independent computer systems and digital networks
US11025429B2 (en) * 2018-05-14 2021-06-01 Skydio, Inc. Trusted contextual content

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008310760A (ja) 2007-06-18 2008-12-25 Toshiba Corp 情報処理システム、情報処理装置、およびプログラム
JP2012037959A (ja) 2010-08-04 2012-02-23 Hitachi Ltd 利用者端末管理システム、利用者端末管理方法、及びプログラム
US20190356649A1 (en) 2018-05-21 2019-11-21 Wickr Inc. Local Encryption for Single Sign-On
WO2019233204A1 (zh) 2018-06-06 2019-12-12 腾讯科技(深圳)有限公司 密钥管理方法、装置、系统、存储介质和计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Alex Davidson,Supporting the latest version of the Privacy Pass Protocol,2019年10月28日,https://blog.cloudflare.com/supporting-the-latest-version-of-the-privacy-pass-protocol/

Also Published As

Publication number Publication date
IL274165B1 (en) 2023-04-01
IL274165A (en) 2021-10-31
CN113853603A (zh) 2021-12-28
WO2021216098A1 (en) 2021-10-28
KR20210131989A (ko) 2021-11-03
JP2022533871A (ja) 2022-07-27
KR102498265B1 (ko) 2023-02-09
EP3924856B1 (en) 2022-08-10
JP7464663B2 (ja) 2024-04-09
EP3924856A1 (en) 2021-12-22
KR20230023826A (ko) 2023-02-17
EP4109317B1 (en) 2023-09-27
IL274165B2 (en) 2023-08-01
EP4109317A1 (en) 2022-12-28
US20210334404A1 (en) 2021-10-28
JP2022172237A (ja) 2022-11-15
US11928237B2 (en) 2024-03-12
US20240160779A1 (en) 2024-05-16

Similar Documents

Publication Publication Date Title
US10936727B2 (en) Detection of second order vulnerabilities in web services
KR102429406B1 (ko) 콘텐츠 플랫폼에서 사용자 상호작용 확인
US11288376B2 (en) Identifying hard-coded secret vulnerability inside application source code
KR20090043530A (ko) 소프트웨어 레퓨테이션을 이용한 소프트웨어 인가 방법 및 시스템, 및 그를 위한 컴퓨터-판독가능 매체
US11882327B2 (en) Verifying display of third party content at a client device
JP7189372B2 (ja) デバイスおよびアプリケーションの完全性の検証
JP7135210B2 (ja) プライバシー保持アプリケーションおよびデバイスエラー検出
KR102672181B1 (ko) 프라이버시 보호 애플리케이션 및 장치 오류 검출
JP7277593B2 (ja) ウェブビュー内のコンテンツおよび対話の検証
Zhang et al. The Dark Forest: Understanding Security Risks of Cross-Party Delegated Resources in Mobile App-in-App Ecosystems
JP2019168805A (ja) 不正検知装置、不正検知ネットワークシステム、及び不正検知方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210531

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220831

R150 Certificate of patent or registration of utility model

Ref document number: 7135210

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150