KR102536358B1 - 디바이스 및 애플리케이션 무결성 검증 - Google Patents

디바이스 및 애플리케이션 무결성 검증 Download PDF

Info

Publication number
KR102536358B1
KR102536358B1 KR1020217029299A KR20217029299A KR102536358B1 KR 102536358 B1 KR102536358 B1 KR 102536358B1 KR 1020217029299 A KR1020217029299 A KR 1020217029299A KR 20217029299 A KR20217029299 A KR 20217029299A KR 102536358 B1 KR102536358 B1 KR 102536358B1
Authority
KR
South Korea
Prior art keywords
application
client device
trust
determining
tokens
Prior art date
Application number
KR1020217029299A
Other languages
English (en)
Other versions
KR20210144687A (ko
Inventor
강 왕
마셀 엠. 모티 융
데이비드 브루스 터너
Original Assignee
구글 엘엘씨
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 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20210144687A publication Critical patent/KR20210144687A/ko
Application granted granted Critical
Publication of KR102536358B1 publication Critical patent/KR102536358B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • 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/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/31User authentication
    • G06F21/33User authentication using certificates
    • G06F21/335User authentication using certificates for accessing specific resources, e.g. using Kerberos tickets
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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
    • 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
    • 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/3226Cryptographic 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 a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3228One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
    • 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/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • 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
    • 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/2129Authenticate client device independently of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Virology (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

본 발명은 데이터가 수신되는 디바이스들 및 애플리케이션의 무결성을 확인하기 위해 신뢰 토큰을 사용하는 것과 관련이 있다. 일 양태들에서, 방법은 클라이언트 디바이스로부터 하나 이상의 신뢰 토큰에 대한 요청을 수신하는 단계를 포함한다. 상기 요청은, 상기 클라이언트 디바이스로부터 획득된 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 상기 요청을 개시한 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나를 포함한다. 상기 요청은 또한 상기 하나 이상의 신뢰 토큰 각각에 대한 각각의 논스(nonce)를 포함한다. 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정이 이루어진다. 각 신뢰 토큰은 상기 신뢰 토큰에 대한 논스를 사용하여 생성된다. 상기 하나 이상의 신뢰 토큰은 상기 클라이언트 디바이스에 제공된다.

Description

디바이스 및 애플리케이션 무결성 검증
본 발명은 디바이스 및 애플리케이션의 무결성을 검증하는 방법 및 시스템에 관한 것이다.
클라이언트 디바이스들은 인터넷과 같은 공용 네트워크들 통해 데이터를 전송한다. 이러한 통신은 의도된 수신자가 아닌 엔티티들에 의해 가로채거나 변경될 수 있다. 또한, 엔티티들은 네트워크 ID들을 위조하고 이러한 위조된 네트워크 ID들에서 비롯된 것으로 보이는 데이터를 보낼 수 있다. 엔티티들은 사기성 데이터를 보내는 악성 코드를 삽입하기 위해 애플리케이션 코드를 변경할 수도 있다.
본 명세서는 데이터가 수신되는 디바이스들 및 애플리케이션들의 무결성을 검증하기 위해 신뢰 토큰들을 사용하는 것과 관련된 기술을 서술한다.
일반적으로, 본 명세서에서 서술된 주제의 하나의 혁신적인 양태는, 클라이언트 디바이스로부터 하나 이상의 신뢰 토큰에 대한 요청을 수신하는 단계를 포함하는 방법들로 구현될 수 있다. 상기 요청은: (i) 상기 클라이언트 디바이스로부터 획득된 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 요청을 개시한 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나; 및 상기 하나 이상의 신뢰 토큰 각각에 대한 각각의 논스(nonce)를 포함한다. (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정이 이루어진다. 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 것에 응답하여, 상기 신뢰 토큰에 대한 논스를 사용하여 상기 하나 이상의 신뢰 토큰 각각이 생성되고, 상기 하나 이상의 신뢰 토큰이 상기 클라이언트 디바이스에 제공된다. 이 양태의 다른 구현들은 컴퓨터 저장 디바이스들에 인코딩된 방법들의 양태들을 수행하도록 구성된 대응하는 장치, 시스템들 및 컴퓨터 프로그램들을 포함한다.
이들 및 다른 구현은 각각 다음의 특징들 중 하나 이상을 선택적으로 포함할 수 있다. 일부 양태들에서, (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는, 상기 하나 이상의 디바이스-레벨 사기 탐지 신호에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스임을 결정하는 단계와; 상기 애플리케이션의 코드를 나타내는 데이터에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와; 그리고 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스이고 그리고 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함한다.
일부 양태들에서, 상기 애플리케이션의 코드를 나타내는 데이터는 상기 애플리케이션의 코드의 암호화 해시를 포함한다. 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는, 상기 애플리케이션의 코드에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와; 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함할 수 있다.
일부 양태들에서, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는, 상기 애플리케이션 코드의 암호화 해시를 상기 애플리케이션의 공식 빌드들의 코드의 암호화 해시들과 비교하는 단계와; 그리고 상기 애플리케이션의 코드의 암호화 해시가 상기 애플리케이션의 공식 빌드의 코드의 암호화 해시와 매칭하는 것에 응답하여 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계를 포함한다.
일부 양태들에서, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는, 상기 애플리케이션이 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서가 상기 애플리케이션에 대해 발행되었음을 결정하는 단계를 포함한다.
일부 양태들에서, 각각의 신뢰 토큰에 대한 논스는 블라인드 서명 방식을 사용하여 블라인드된 블라인드 논스이다. 상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계는, 블라인드 서명 방식을 사용하여, 상기 신뢰 토큰에 대한 블라인드 논스의 블라인드 서명을 생성하는 단계를 포함할 수 있다. 상기 신뢰 토큰은 상기 블라인드 논스 및 상기 블라인드 논스의 블라인드 서명을 포함할 수 있다.
일부 양태들은, 상환을 위해 주어진 신뢰 토큰을 포함하는 상환 요청을 상기 클라이언트 디바이스로부터 수신하는 단계를 포함할 수 있다. 상기 주어진 신뢰 토큰은 블라인드되지 않은 논스 및 상기 논스의 블라인드 버전에 기초하여 생성된 블라인드 서명을 포함할 수 있다. 상기 블라인드되지 않은 논스 및 상기 블라인드 서명 방식을 사용하여 상기 주어진 신뢰 토큰의 블라인드 서명이 검증될 수 있다. 상기 블라인드된 서명을 검증하는 것에 응답하여, 상기 주어진 신뢰 토큰에 대한 서명된 상환 기록이 상기 클라이언트 디바이스에 전송된다.
일부 양태들에서, 상기 요청은 상기 클라이언트 디바이스에 대한 공개 키를 포함한다. 하나 이상의 신뢰 토큰 각각은 상기 클라이언트 디바이스에 대한 공개 키를 사용하여 암호화될 수 있다. 상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계는 상기 하나 이상의 암호화된 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함할 수 있다.
일부 양태들에서, 상기 요청은 상기 클라이언트 디바이스에 대한 디바이스 식별자를 포함한다. 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록은 상기 디바이스 식별자를 사용하여 유지될 수 있다. 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는, 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함할 수 있다.
일부 양태들에서, 상기 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계는, 상기 디바이스-레벨 사기 탐지 신호들, 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록 및 주어진 기간 동안 클라이언트 디바이스에 의해 요청된 다수의 신뢰 토큰들의 조합에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함한다.
본 명세서에 기술된 주제는 다음 이점들 중 하나 이상을 실현하기 위해 특정 실시예에서 구현될 수 있다. 디바이스로부터 요청들(또는 기타 통신들 또는 데이터)을 수신하는 수신자들은, 요청을 보낸 디바이스 및 디바이스에서 실행 중인 애플리케이션이 디바이스에 발행된 신뢰 토큰을 기반으로, 예를 들어, 신뢰 토큰이 상환될 때 디바이스에 제공된 서명된 상환 기록을 기반으로 신뢰할 수 있는 장치인지를 검증할 수 있다. 이 토큰 및/또는 서명된 상환 기록은 신뢰 토큰 시스템의 평가를 기반으로 디바이스와 해당 애플리케이션이 신뢰할 수 있음을 인증한다.
신뢰 토큰 시스템은 클라이언트 디바이스가 신뢰되는지를 결정하기 위해 디바이스-레벨 사기 탐지 신호들을 평가할 수 있다. 신뢰 토큰 시스템은 또한 예를 들어 신뢰 토큰을 발행하기 전에 디바이스의 애플리케이션 빌드가 공식 빌드인지에 기초하여 요청을 시작한 애플리케이션, 예를 들어, 웹 브라우저가 신뢰할 수 있는 애플리케이션인지를 결정할 수 있다. 이렇게 하면 디바이스가 (예를 들어, 데이터 센터의 가상 머신 또는 악성 코드가 감염된/손상된 장치가 아닌) 정품 디바이스인지, 애플리케이션이 잠재적으로 악성 코드가 삽입된 사용자 지정 빌드가 아님을 확증한다. 이러한 평가들의 조합을 기반으로 발행된 신뢰 토큰을 사용하면 남용(예: 가짜 계정을 만들거나 사용자의 실제 계정을 탈취하려는 악의적인 봇) 및 사기(예: 위조된 요청들/통신들에서 이익을 얻으려는 악의적인 당사자들)로부터 수신자를 보호할 수 있고, 디바이스들 및 애플리케이션들에서 수신한 신뢰할 수 있는 통신들에 의존하는 시스템들 및 프로토콜들에 대한 신뢰를 보장한다. 따라서 개시된 시스템들 및 방법들은 디바이스들 간의 통신을 위한 보안 수단을 제공하는 기술적 이점을 제공한다. 더욱이, 개시된 시스템들 및 방법들은 사용자 프라이버시를 유지하면서 이러한 안전한 통신 수단을 제공할 수 있고, 개시된 시스템들 및 방법들은 디바이스-레벨 및 애플리케이션-레벨 정보를 기반으로 신뢰 토큰들을 발행할 수 있으므로, 그 결과 클라이언트 디바이스가 신뢰할 수 있는지를 결정하기 위해 사용자-레벨 데이터(예: 검색 기록 또는 기타 사용자 프로필 정보)를 평가할 필요가 없다. 따라서, 개시된 시스템들 및 방법들은 또한 사용자 정보를 보호하고 사용자 프라이버시를 유지하는 기술적 이점을 제공한다.
신뢰 토큰은 클라이언트 디바이스에서 블라인드되고 신뢰 토큰 시스템으로 전송되는 블라인드 논스를 기반으로 생성될 수 있다. 클라이언트 디바이스는 신뢰 토큰 시스템을 사용하여 신뢰 토큰을 상환하기 전에 신뢰 토큰의 논스를 해제할 수 있다. 이러한 방식으로, 신뢰 토큰 시스템은 발행된 신뢰 토큰들의 블라인드 논스와 상환된 신뢰 토큰의 블라인드되지 않은 논스를 연관시킬 수 없으므로 사용자 개인 정보가 보호된다. 따라서, 이는 디바이스-레벨 신호 및 애플리케이션-레벨 신호와 관련하여 사용자 개인 정보를 유지하는 기술적 이점을 제공한다. 클라이언트 디바이스의 사용자와 관련된 신호들과 관계없이 디바이스 신호 및 애플리케이션 신호만을 기반으로 신뢰 토큰들을 발행하여 사용자 개인 정보를 더욱 개선할 수 있다. 따라서, 검색 이력 또는 클라이언트 디바이스 사용자의 개인 데이터와 같은 클라이언트 디바이스 사용자와 관련된 이러한 정보는, 신뢰 토큰들을 발행하는 데 필요하지 않으므로 이 정보는 평가를 위해 신뢰 토큰 발행자에게 전송할 필요가 없다. 이러한 방식으로, 개인 사용자 정보가 보호되므로 사용자 개인 정보를 유지하는 기술적 이점을 제공한다.
신뢰 토큰들은 일괄적으로 요청 및 발행될 수 있다. 이는 신뢰 토큰 시스템이 클라이언트 디바이스 및 애플리케이션에 대한 단일 평가를 기반으로 여러 토큰들을 발행하므로 신뢰 토큰 시스템에 가해지는 부담(예: 사용된 CPU 사이클들의 수)을 줄이고, 따라서 여러 신뢰 토큰들을 발행하는데 필요한 리소스들을 줄이는 기술적 이점을 제공한다. 이는 또한 각 요청에 대한 클라이언트 디바이스의 평가를 기다리는 대신 신뢰 토큰 확인이 필요한 모든 요청들에 앞서 토큰들을 클라이언트 디바이스에 발행할 수 있으므로 클라이언트 디바이스의 대기 시간을 줄이고, 따라서, 트러스트 토큰들의 발행을 위한 대기 시간이 감소된 보다 반응성이 뛰어난 시스템의 기술적 이점도 제공한다.
전술한 주제의 다양한 특징들 및 이점들이 도면들과 관련하여 아래에서 서술된다. 추가 특징들 및 이점들은 본 명세서에 서술된 주제 및 청구범위로부터 명백하다.
도 1은 신뢰 토큰 시스템이 신뢰 토큰을 발행하고 상환하는 예시적인 환경의 블록도이다.
도 2는 신뢰 토큰들을 발행하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 3은 신뢰 토큰들을 상환하기 위한 예시적인 프로세스를 도시하는 흐름도이다.
도 4는 상환된 신뢰 토큰에 기초하여 서명된 상환 기록을 포함하는 요청들을 처리하기 위한 예시적인 프로세스를 예시하는 흐름도이다.
도 5는 위에서 서술된 동작들을 수행하는 데 사용될 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
다양한 도면들에서 동일한 참조 번호들 및 명칭들은 동일한 요소들을 나타낸다.
일반적으로, 이 문서는 요청, 통신 또는 기타 데이터가 수신되는 디바이스들 및 애플리케이션들의 무결성을 확인하기 위해 신뢰 토큰들을 사용하는 시스템들 및 기술들을 서술한다. 클라이언트 디바이스에서 수신된 일부 유형들의 요청들을 받는 사람들은 요청들이 유효하고 손상되거나 사기성 디바이스 또는 애플리케이션에서 수신되지 않았는지 확인하기를 원한다. 예를 들어, 사용자 개인 정보 보호 시스템은 사용자에 대한 개인 정보 설정 변경 요청이 데이터 센터에서 실행되는 사기성 가상 머신이나 악성 코드가 포함된 애플리케이션의 맞춤형 빌드가 아닌 실제 클라이언트 장치와 애플리케이션의 공식 빌드에서 수신되도록 할 수 있어, 애플리케이션들을 사용할 때 사용자 개인 정보를 향상시킨다. 다음 서술은 주로 클라이언트 디바이스에서 보낸 요청들에 관한 것이지만, 기술들을 사용하여 클라이언트 디바이스들에서 수신한 다른 유형들의 데이터 또는 통신의 무결성을 확인할 수 있다.
예를 들어, 요청들의 수신자에 의해 신뢰성이 중요하다고 간주되는 요청들을 보낼 애플리케이션은 신뢰 토큰 시스템에서 신뢰 토큰들을 요청할 수 있다. 신뢰 토큰 시스템은 클라이언트 디바이스와 애플리케이션의 신뢰성을 평가할 수 있으며, 둘 다 신뢰할 수 있는 것으로 간주되는 경우 신뢰 토큰 시스템은 클라이언트 디바이스에 신뢰 토큰들을 발행할 수 있다. 애플리케이션이 나중에 수신자에게 요청을 제출하면 애플리케이션이 요청에 포함할 수 있는 서명된 상환 기록(SRR)에 대한 신뢰 토큰을 상환할 수 있다. 아래에서 더 자세히 설명하는 것처럼, SRR은 요청 데이터가 조작되지 않았는지 확인하고 클라이언트 디바이스 및 애플리케이션이 신뢰 토큰 시스템에 의해 평가 및/또는 신뢰할 수 있는 것으로 간주되었음을 증명하기 위해 신뢰 토큰 시스템에 의해 생성된 디지털 서명을 포함할 수 있다. 이것은, 신뢰 토큰 시스템에서 생성된 디지털 서명이 클라이언트 디바이스가 신뢰할 수 있음을 확인하고 디지털 서명이 이 확인이 조작되지 않았음을 보장하기 때문에 클라이언트 장치가 신뢰할 수 있는지 결정하기 위한 안전한 수단을 제공한다.
도 1은 신뢰 토큰 시스템(130)이 신뢰 토큰들을 발행하고 상환하는 예시적인 환경(100)의 블록도이다. 예시적인 환경(100)은 LAN(Local Area Network), WAN(Wide Area Network), 인터넷, 모바일 네트워크, 또는 이들의 조합과 같은 데이터 통신 네트워크(105)를 포함한다. 네트워크(105)는 클라이언트 디바이스들(110), 수신자들의 수신자 디바이스들(120) 및 신뢰 토큰 시스템(130)을 연결한다. 예시적인 환경(100)은 많은 상이한 클라이언트 디바이스들(110), 신뢰 토큰 시스템들(130), 및 수신자 디바이스들(120)을 포함할 수 있다.
클라이언트 디바이스(110)는 네트워크(105)를 통해 통신할 수 있는 전자 디바이스이다. 예시적인 클라이언트 디바이스(110)는 개인용 컴퓨터, 이동 통신 장치, 예를 들어, 스마트 폰 및 네트워크(105)를 통해 데이터를 송수신할 수 있는 기타 장치를 포함한다.
클라이언트 디바이스(110)는 일반적으로 네트워크(105)를 통한 데이터의 송수신을 용이하게 하기 위해 웹 브라우저들 및/또는 네이티브 애플리케이션들과 같은 애플리케이션들(112)을 포함한다. 네이티브 애플리케이션은 특정 플랫폼 또는 특정 디바이스용으로 개발된 애플리케이션이다. 일부 구현들에서, 클라이언트 디바이스(110)는 디지털 미디어 디바이스, 예를 들어, 텔레비전에 비디오들을 스트리밍하기 위해 텔레비전 또는 다른 디스플레이에 연결하는 스트리밍 디바이스이다. 디지털 미디어 디바이스는 또한 웹 브라우저 및/또는 비디오를 스트리밍하고/하거나 리소스들을 제공하는 기타 애플리케이션들을 포함할 수 있다.
클라이언트 디바이스(110)는 또한 신뢰할 수 있는 프로그램(114)을 포함한다. 신뢰할 수 있는 프로그램(114)은 위조하기 어려운 신뢰할 수 있는 소스로부터의 신뢰할 수 있는 코드를 포함할 수 있다. 예를 들어, 신뢰할 수 있는 프로그램(114)은 운영 체제, 운영 체제의 일부, 웹 브라우저 등이 될 수 있다. 일반적으로 신뢰할 수 있는 프로그램(114)은 침투하기 어렵고 가해자가 신뢰할 수 있는 프로그램(114)을 변조하기 위해 소비해야 하는 시간 및 노력의 양이 엄청나게 높다. 또한, 신뢰할 수 있는 프로그램(114)은 신뢰할 수 있는 소스에 의해 제공 및 유지 관리되기 때문에 발생하는 모든 취약성은 소스에 의해 해결될 수 있다. 이러한 방식으로 신뢰할 수 있는 프로그램을 사용하면, 신뢰할 수 있는 프로그램이 침투하기 어렵기 때문에 클라이언트 디바이스에서 보안이 강화된다는 기술적 이점이 있다. 또한 신뢰할 수 있는 프로그램은 신뢰할 수 있는 소스에서 프로그램을 유지 관리하기 때문에 신뢰할 수 있는 프로그램의 취약성을 완화하는 이점을 제공한다.
신뢰할 수 있는 프로그램(114)은 사용자 디바이스(110)에 대해 로컬일 수 있다. 예를 들어, 신뢰할 수 있는 프로그램(114)은 사용자 디바이스(110)의 운영 체제의 디바이스 드라이버일 수 있다. 일부 구현들에서, 신뢰할 수 있는 프로그램(114)은 전적으로 사용자 디바이스(110)에 대해 국부적으로 동작하여, 사용자 정보를 전송할 필요성을 감소시킨다. 일부 구현들에서, 신뢰할 수 있는 프로그램(114)은 사용자 디바이스(110)에 대해 국부적으로 그리고 네트워크(105)와 같은 네트워크를 통해 동작할 수 있다. 예를 들어, 신뢰할 수 있는 프로그램(114)은 사용자 디바이스(110)에 설치되고 네트워크(105)를 통해 정보를 전송 및 수신하는 웹 브라우저일 수 있다.
애플리케이션(112)은 수신자들의 수신자 디바이스들(120)에 요청을 전송할 수 있다. 수신자 디바이스들(120)은 컴퓨터들(예를 들어, 서버들), 모바일 통신 디바이스들, 및 네트워크(105)를 통해 데이터를 송수신할 수 있는 다른 디바이스들일 수 있다. 요청들에는 설정 업데이트 요청들, 예를 들어, 사용자 개인 정보 설정들, 콘텐츠 요청들, 데이터 보고 요청들, 애플리케이션 설치 요청들 및/또는 기타 적절한 유형들의 요청들이 포함될 수 있다. 수신자의 예로는 요청들에 대한 응답으로 콘텐츠를 제공하는 콘텐츠 공급자가 있다.
일부 요청들의 경우, 애플리케이션들(112)은 신뢰된 애플리케이션 및 신뢰된 디바이스에 의해 요청이 전송되고 있음을 검증하기 위해 상환된 신뢰 토큰에 기초한 신뢰 토큰 또는 SSR을 포함할 수 있다. 애플리케이션(112)은 예를 들어 신뢰할 수 있는 프로그램(114)을 통해 신뢰 토큰 시스템(130)으로부터 하나 이상의 신뢰 토큰을 요청할 수 있다. 예를 들어, 애플리케이션(112)은 신뢰 토큰(들)을 요청하기 위해 신뢰할 수 있는 프로그램(114)의 API(Application Programming Interface)를 호출할 수 있다. 신뢰할 수 있는 프로그램(114)은 신뢰 토큰 시스템(130)으로부터 신뢰 토큰(들)을 요청할 수 있다.
신뢰할 수 있는 프로그램(114)은 애플리케이션에 대한 신뢰 토큰들에 대한 요청에서 데이터 세트를 수집하고 포함할 수 있다. 이 데이터 세트에는 요청된 각 신뢰 토큰에 대한 논스(nonce)가 포함될 수 있다. 논스는 임의(예: 난수 또는 의사 난수) 숫자이다. 일부 구현들에서는, 각 신뢰 토큰에 대한 일반 텍스트 논스를 포함하는 대신 요청에 각각의 요청된 신뢰 토큰에 대한 블라인드 논스가 포함된다. 신뢰할 수 있는 프로그램(114)(또는 애플리케이션(112) 자체)은 블라인드 서명 방식을 사용하여 논스를 생성하고 논스를 블라인드할 수 있다. 논스를 블라인드하는 것은 논스를 블라인드 요소와 결합하여 논스의 값을 숨기거나 모호하게 하는 것을 포함할 수 있다. 블라인드 서명 방식은 IETF(Internet Engineering Task Force) VOPRF(Verifiable Oblivious Pseudorandom Function) 프로토콜, RSA(Rivest-Shamir-Adleman) 또는 다른 적절한 블라인드 서명 방식을 포함할 수 있다. 아래에서 더 자세히 설명하는 것처럼, 논스들은 신뢰 토큰들을 생성하는 데 사용되며 블라인드 논스들을 사용하면 사용자 개인 정보를 개선하는 기술적 이점이 있다.
신뢰 토큰들에 대한 요청의 데이터 세트는 디바이스-레벨 사기 탐지 신호를 포함할 수 있다. 디바이스-레벨 사기 탐지 신호는 클라이언트 디바이스가 손상되었는지 여부 또는 클라이언트 디바이스가 일반 클라이언트 디바이스 또는 에뮬레이트된 클라이언트 디바이스로 작동하는지 여부를 결정하는 데 사용할 수 있는 클라이언트 디바이스의 작동 특성들 또는 메트릭들을 나타내는 데이터를 포함할 수 있다.특정 작동 특성들 및 메트릭들은 에뮬레이터들과 관련하여 정품 클라이언트 디바이스들에서 종종 다르다. 일부 구현들에서, 디바이스-레벨 사기 탐지 신호들은 신뢰 토큰들을 요청하는 애플리케이션(112)의 동작 특성들 및 메트릭들을 포함하는 애플리케이션-레벨 사기 탐지 신호들을 포함한다. 신뢰할 수 있는 프로그램(114)은 이러한 디바이스-레벨 사기 탐지 신호들을 수집하고 신뢰 토큰들에 대한 요청에 신호들을 포함할 수 있다.
신뢰 토큰들에 대한 요청의 데이터 세트는 또한 신뢰 토큰들에 대한 요청을 개시하고 궁극적으로 신뢰 토큰들을 사용할 애플리케이션(112)과 관련된 데이터를 포함할 수 있다. 이 데이터는 애플리케이션의 아이덴티티, 예를 들어, 애플리케이션의 패키지 파일에 대한 패키지 이름 및 클라이언트 디바이스(110) 상의 애플리케이션(112)의 인스턴스가 애플리케이션의 공식 빌드인지 여부를 결정하는 데 사용될 수 있는 데이터를 포함할 수 있다. 이 데이터는 애플리케이션(112)의 코드를 나타내는 데이터를 포함할 수 있다. 예를 들어, 신뢰할 수 있는 애플리케이션(114)은 암호화 해시 함수를 사용하여 애플리케이션(112)의 코드의 암호화 해시를 생성하고 요청에 코드의 해시를 포함할 수 있다. 해시는 애플리케이션(112)에 대한 애플리케이션 바이너리 파일(들)의 해시, 애플리케이션(112)에 대한 실행 파일의 해시, 및/또는 클라이언트 디바이스(110)에서 애플리케이션(112)의 현재 실행 중인 빌드의 모든 파일의 해시일 수 있다. 일부 구현들에서, 데이터는 또한 개발자의 개인 키를 사용하여 애플리케이션(112)의 개발자에 의해 서명된 인증서의 해시를 포함할 수 있다. 신뢰할 수 있는 프로그램(114)은 해시가 클라이언트 디바이스(110)에서 실행 중인 애플리케이션(112)의 현재 빌드를 나타내는 것을 보장하기 위해 요청 시간에 해시를 생성할 수 있다.
일부 구현들에서, 신뢰 토큰들에 대한 요청의 데이터 세트는 요청을 제출하는 클라이언트 디바이스(110)에 대한 고유한 디바이스 식별자를 포함할 수 있다. 이 디바이스 식별자는 클라이언트 디바이스의 공개 키일 수 있다. 예를 들어, 클라이언트 디바이스(110)는, 예를 들어, 수학적으로 공개 키에 대응하는 공개 키 및 개인 키를 포함하는 비대칭 암호화 키 쌍을 포함할 수 있다. 아래에서 더 자세히 설명되는 바와 같이, 디바이스 식별자는 주어진 클라이언트 디바이스에 발행된 신뢰 토큰들의 수를 제한하고 그리고/또는 클라이언트 디바이스들(110)에 대한 신뢰성의 이력 기록을 유지하는 데 사용될 수 있다.
신뢰 토큰 시스템(130)은 클라이언트 장치들(110)로부터 신뢰 토큰 요청들을 수신하고, 요청들 중 적어도 일부에 응답하여 신뢰 토큰들을 발행하고, 그리고 클라이언트 디바이스들(110)에 대한 신뢰 토큰들을 상환할 수 있다. 신뢰 토큰 시스템(130)은 신뢰 토큰 발행자(132), 디바이스 평가자(134), 및 애플리케이션 평가자(136)를 포함하며, 이들 각각은 하나 이상의 데이터 처리 장치, 예를 들어, 하나 이상의 서버 컴퓨터를 사용하여 구현될 수 있다. 일부 구현들에서, 신뢰 토큰 발행자(132), 디바이스 평가자(134), 및 애플리케이션 평가자(136) 중 둘 이상이 동일한 컴퓨터에서 구현된다.
일부 구현들에서, 신뢰 토큰 시스템(130)은 신뢰할 수 있는 프로그램(114)을 개발하는 엔티티에 의해 유지 및 운영된다. 예를 들어, 신뢰할 수 있는 프로그램(114)이 운영 체제인 경우, 신뢰 토큰 시스템(130)은 운영 체제 개발자에 의해 운영될 수 있다. 일부 구현들에서, 신뢰 토큰 시스템(130)은, 예를 들어, 제3자 디바이스 및 애플리케이션 사기 탐지 시스템에 의해 신뢰할 수 있는 프로그램(114)을 개발하는 엔티티와 상이한 엔티티에 의해 운영된다.
디바이스 평가자(134)는, 신뢰 토큰 요청이 수신된 클라이언트 장치(110)가 신뢰된 디바이스인지를 결정하기 위해 신뢰 토큰 요청의 디바이스-레벨 사기 탐지 신호들을 평가한다. 디바이스 평가자(134)는 사기 검출 신호들에 기초하여 클라이언트 디바이스(110)의 신뢰성 레벨을 결정할 수 있다. 예를 들어, 신뢰성의 레벨은 숫자 척도, 예를 들어 1-3, 0-10, 0-100 또는 다른 적절한 척도일 수 있다. 디바이스 평가자(134)는 신뢰성의 레벨이 신뢰성 임계값을 충족하는 경우, 예를 들어 임계값을 충족하거나 초과하는 경우 클라이언트 디바이스(110)를 신뢰할 수 있는 디바이스로 분류할 수 있다.
일부 구현들에서, 디바이스 평가자(134)는 디바이스 레벨 사기 검출 신호들에 기초하여 진짜 클라이언트 디바이스들, 에뮬레이터들, 루팅된 디바이스들, 및/또는 디바이스들의 다른 적절한 카테고리들을 구별한다. 이 예에서, 디바이스 평가자(134)는 클라이언트 디바이스가 특정 카테고리, 예를 들어, 진짜 클라이언트 디바이스 카테고리로 분류될 때 클라이언트 디바이스를 신뢰된 디바이스로서 분류할 수 있다.
디바이스 평가자(134)는 디바이스 신뢰 데이터베이스(146) 또는 다른 적절한 데이터 구조에 클라이언트 디바이스들(110)에 대한 분류(들)를 저장할 수 있다. 각각의 클라이언트 디바이스(110)에 대해, 디바이스 신뢰 데이터베이스(146)는 클라이언트 디바이스(110)에 대한 디바이스 식별자 및 클라이언트 디바이스(110)에 대한 신뢰성의 이력 기록을 포함할 수 있다. 이력 기록은 클라이언트 디바이스(110)의 하나 이상의 이력 분류들을 포함할 수 있다. 예를 들어, 클라이언트 디바이스(110)에 대한 신뢰성의 이력 기록은 주어진 기간 동안 클라이언트 디바이스(110)에 대한 신뢰성의 레벨 및/또는 클라이언트 디바이스(110)의 분류(예를 들어, 신뢰할 수 있는지 여부 및/또는 카테고리)를 포함할 수 있다. 주어진 기간은 동일한 디바이스 식별자(디바이스 식별자가 일부 구현들에서 변경될 수 있음)를 갖거나 또는 제한된 기간(예를 들어, 지난 주, 월, 연도 등) 동안 클라이언트 장치(110)로부터 수신된 모든 요청들을 포함할 수 있다.
클라이언트 디바이스(110)에 대한 신뢰성의 이력 기록은 신뢰 토큰 요청에 응답하여 클라이언트 디바이스(110)에 신뢰 토큰들을 발행할지 여부를 결정하는데 사용될 수 있다. 일부 구현들에서, 신뢰 토큰 발행자(132)는 클라이언트 디바이스(110)에 신뢰 토큰을 발행할지 여부를 결정하기 위해 클라이언트 디바이스(110)에 대한 신뢰성 패턴을 고려할 수 있다. 예를 들어, 악의적인 당사자는 일부 시간에는 정상적인 방법으로 일부 시간에는 사기적인 방법으로 클라이언트 디바이스(110)를 작동할 수 있다. 이 클라이언트 디바이스(110)에 대한 이력 기록은 클라이언트 디바이스(110)가 특정 시점에서는 신뢰되고 다른 시점에서는 신뢰되지 않는다는 것을 나타낼 수 있다. 즉, 클라이언트 디바이스(110)가 신뢰할 수 있는 것으로 결정된 하나 이상의 이전 인스턴스 및 클라이언트 디바이스(110)가 신뢰할 수 없는 것으로 결정된 하나 이상의 이전 인스턴스가 있을 수 있다. 이 예에서, 신뢰 토큰 시스템(130)은, 평가 결과가 클라이언트 디바이스(110)가 시스템 게임 방법을 배우는 악의적인 당사자를 피하기 위해 신뢰되지 않는 경우에도 클라이언트 디바이스(110)에 신뢰 토큰을 발행할 수 있다. 이는 악의적인 당사자들이 신뢰 토큰 발행자의 작동 방식을 결정하는 것을 방지하여 신뢰 토큰 발행자에 대한 보안을 제공하는 기술적 이점을 제공한다. 특히, 악의적인 당사자가 신뢰 토큰 시스템의 작동 방식을 알게 된 경우, 해당 당사자는 신뢰할 수 없음에도 불구하고 신뢰 토큰들을 얻기 위해 시스템을 조작할 수 있다. 따라서, 악의적인 당사자가 이러한 방식으로 시스템이 작동하는 방식을 배우지 못하도록 하여 보안을 강화한다. 다른 예에서, 이력 기록이 클라이언트 디바이스(110)가 대부분 또는 항상 신뢰되지 않는다는 것을 나타내면, 신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)가 적어도 연속 평가들의 임계값 이상 동안 또는 임계 기간(예를 들어, 일주일, 한 달 등) 동안 신뢰되는 것으로 간주되지 않는 한 클라이언트 디바이스(110)에 신뢰 토큰을 발행하지 않을 수 있다. 그러므로, 이력 기록은 클라이언트 디바이스가 신뢰할 수 있는지 여부를 결정하는 데 사용될 수 있으며 따라서 디바이스가 신뢰할 수 있는지 여부를 감지하는 수단을 제공하는 기술적 이점을 제공한다.
애플리케이션 평가자(136)는 클라이언트 디바이스(110) 상의 애플리케이션(112)의 인스턴스가 애플리케이션의 공식 빌드인지 여부를 결정하기 위해 신뢰 토큰 요청의 데이터를 평가한다. 애플리케이션 평가자(136)는 애플리케이션들(112)의 공식 빌드 코드의 해시들을 포함하는 애플리케이션 빌드 데이터베이스(148)(또는 다른 적절한 데이터 구조)에 액세스할 수 있다. 예를 들어, 애플리케이션 개발자가 애플리케이션의 새로운 빌드를 릴리스할 때, 애플리케이션 개발자는 애플리케이션의 코드를 신뢰 토큰 시스템(130)에 제공할 수 있다. 신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)의 신뢰 프로그램(114)이 애플리케이션(112)의 코드의 해시를 생성하기 위해 사용하는 것과 동일한 암호화 기능을 사용하여 코드의 해시를 생성할 수 있다. 애플리케이션 빌드 데이터베이스(148)는 각각의 애플리케이션에 대해 애플리케이션에 대한 식별자 및 애플리케이션의 각각의 공식 빌드에 대해 애플리케이션 코드의 해시를 포함할 수 있다. 일부 구현들에서, 신뢰 토큰 시스템(130)은 애플리케이션들을 클라이언트 디바이스들(110)에 다운로드하기 위해 이용가능하게 하는 애플리케이션 스토어로부터 각각의 애플리케이션에 대한 코드를 수신할 수 있다.
애플리케이션 평가자(136)는 신뢰 토큰 요청에 포함된 애플리케이션의 해시를 애플리케이션 빌드 데이터베이스(148)에 저장된 애플리케이션의 각 공식 빌드에 대한 애플리케이션의 해시와 비교할 수 있다. 애플리케이션 평가자는 애플리케이션 빌드 데이터베이스에서 애플리케이션(112)의 공식 빌드에 대한 해시들을 식별하기 위해 신뢰 토큰 요청에 포함된 애플리케이션(112)에 대한 식별자를 사용할 수 있다. 신뢰 토큰 요청에 있는 애플리케이션(112)의 코드 해시와 애플리케이션(112)의 공식 빌드 코드의 해시 사이에 일치가 있는 경우, 애플리케이션 평가자(136)는 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션의 인스턴스가 애플리케이션의 공식 빌드이고 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정할 수 있다. 일치하지 않는 경우, 애플리케이션 평가자(136)는 클라이언트 디바이스(110)에서 실행 중인 애플리케이션의 인스턴스가 애플리케이션의 공식 빌드가 아니라고 결정할 수 있다.
일부 구현들에서, 신뢰 토큰 요청은 애플리케이션(112)에 대한 식별자를 포함할 필요가 없다. 이 예에서, 애플리케이션 평가자(136)는 일치가 있는지 여부를 결정하기 위해 애플리케이션의 코드의 해시를 다수의 애플리케이션들의 코드의 해시들과 비교할 수 있다.
일부 구현들에서, 애플리케이션 평가자(136)는 공식 빌드가 아닌 인스턴스에 응답하여 클라이언트 디바이스(110) 상에서 실행되는 애플리케이션의 인스턴스가 신뢰할 수 있는 애플리케이션이 아니라고 결정할 수 있다. 일부 구현들에서, 애플리케이션 평가자(136)는 인스턴스가 공식 빌드가 아니라는 결정에 응답하여 추가 정보를 고려할 수 있다. 예를 들어, 애플리케이션 평가자(136)는 악성 또는 무효로 분류된 애플리케이션의 비공식 빌드로부터의 네트워크 트래픽의 백분율을 나타내는 네트워크 트래픽 분석 데이터를 고려할 수 있다. 애플리케이션의 비공식 빌드로부터의 네트워크 트래픽의 적어도 임계값 백분율(예를 들어, 80%, 50%, 100% 또는 다른 적절한 임계값)이 악의적이거나 유효하지 않은 것으로 간주되는 경우, 애플리케이션 평가자(136)는 애플리케이션의 임의의 인스턴스가 공식 빌드가 아닌 것은 신뢰할 수 없다.
신뢰 토큰 발행자(132)는 신뢰 토큰 요청에 포함된 데이터 및/또는 디바이스 평가자(134) 및/또는 애플리케이션 평가자(136)에 의해 이루어진 결정들에 기초하여 신뢰 토큰 요청에 응답하여 신뢰 토큰을 발행할지 여부를 결정할 수 있다. 예를 들어, 신뢰 토큰 발행자(132)는 디바이스-레벨 사기 탐지 신호 및/또는 애플리케이션의 코드를 나타내는 데이터에 기초하여 신뢰 토큰 요청에 응답하여 신뢰 토큰들을 발행할지 여부를 결정할 수 있다.
일부 구현들에서, 신뢰 토큰 발행자(132)는, 클라이언트 디바이스(110)가 신뢰된 디바이스라고 디바이스 평가자(134)가 결정할 때 그리고/또는 애플리케이션(112)이 신뢰된 애플리케이션이라고 애플리케이션 평가자(136)라고 결정할 때, 신뢰 토큰 요청에 응답하여 클라이언트 디바이스(110)에 신뢰 토큰들을 발행할 수 있다. 일부 구현들에서, 클라이언트 디바이스(110)가 신뢰 디바이스로 간주되고 애플리케이션(112)이 신뢰 애플리케이션으로 간주되는 경우에만 신뢰 토큰 발행자(132)는 클라이언트 디바이스(110)에 신뢰 토큰들을 발행하기로 결정한다. 일부 구현들에서, 신뢰 토큰 발행자(132)는 디바이스 평가자(134) 또는 애플리케이션 평가자(136) 중 적어도 하나가 신뢰할 수 있는 평결을 출력할 때 신뢰 토큰을 발행하기로 결정한다. 다른 구현들은 디바이스 평가자(134) 또는 애플리케이션 평가자(132) 중 하나만을 포함할 수 있어, 하나의 평가자가 클라이언트 디바이스(110) 또는 애플리케이션(112)이 신뢰되는 것으로 간주할 때 신뢰 토큰 발행자(132)가 클라이언트 장치(110)에 토큰을 발행한다. 신뢰 토큰들을 발행하기 위한 예시적인 프로세스가 도 2에 도시되고, 아래에서 서술된다.
신뢰 토큰 발행자(132)는 토큰 발행 데이터베이스(142)(또는 다른 적절한 데이터 구조)에서 클라이언트 디바이스들(110)에 발행된 신뢰 토큰들의 수의 카운트를 유지할 수 있다. 토큰 발행 데이터베이스(142)는 각각의 디바이스 식별자에 대해, 하나 이상의 기간, 예를 들어, 매일, 매주, 매월, 및/또는 디바이스 식별자를 포함하는 제1 신뢰 토큰 요청 이후 전반적으로 디바이스 식별자에 대응하는 클라이언트 디바이스(110)에 발행된 신뢰 토큰들의 수의 카운트를 포함할 수 있다. 신뢰 토큰 발행자(132)는 이 데이터를 사용하여 클라이언트 디바이스(110)에 발행되는 신뢰 토큰의 수를 제한하거나 신뢰 토큰들이 그 디바이스에 모두 발행되는 것을 방지할 수 있다. 예를 들어, 요청된 신뢰 토큰들의 수가 예를 들어 클라이언트 디바이스(110)에 대한 이력 추세에 기초하여 클라이언트 디바이스에 대해 비정상적으로 높은 경우, 신뢰 토큰 발행자(132)는 클라이언트 디바이스(110)가 최근에 손상될 수 있으므로 클라이언트 디바이스(110)에 대한 신뢰 토큰 발행을 중단할 수 있다. 이는 디바이스-레벨 및 애플리케이션-레벨 신호가 디바이스를 신뢰할 수 있음을 나타내는 경우에도, 잠재적으로 신뢰할 수 없는 디바이스들에 신뢰 토큰이 발급되는 것을 방지하여 신뢰할 수 없는 디바이스들을 감지하는 개선된 방법을 제공하는 기술적 이점을 제공한다. 이것은 또한 신뢰할 수 없는 디바이스들이 신뢰할 수 있는 것으로 간주되는 것을 방지하여 보안을 유지하는 기술적 이점을 제공한다.
신뢰 토큰 발행자(132)는 또한 클라이언트 디바이스들(110)에 대한 신뢰 토큰을 상환할 수 있다. 클라이언트 디바이스(110)의 애플리케이션(112)이 SRR이 적절한 요청을 보내려고 할 때, 애플리케이션(112)은 신뢰 토큰을 교환하라는 요청을 신뢰 토큰 시스템(130)에 보낼 수 있다. 요청은 클라이언트 디바이스(110)에 발행된 신뢰 토큰을 포함할 수 있다. 신뢰 토큰 발행자(132)는 신뢰 토큰을 평가할 수 있고, 유효한 경우, 신뢰 토큰 발행자는 SRR을 생성하고 SRR을 클라이언트 디바이스(110)에 보낼 수 있다.
신뢰 토큰 발행자(132)가 신뢰 토큰을 상환할 때, 신뢰 토큰 발행자(132)는 토큰 상환 데이터베이스(144)(또는 다른 적절한 데이터 구조)를 업데이트할 수 있다. 신뢰 토큰 발행자(132)는 토큰 상환 데이터베이스(144)를 사용하여 각각의 신뢰 토큰이 한 번만 상환되는 것을 보장할 수 있다. 토큰 상환 데이터베이스(144)는 각각의 상환된 신뢰 토큰에 대해 신뢰 토큰의 논스의 평문 값을 포함할 수 있다. 신뢰 토큰 발행자(132)가 신뢰 토큰을 상환하라는 요청을 수신할 때, 신뢰 토큰 발행자(132)는 논스의 평문 값을 토큰 상환 데이터베이스(144)에 있는 논스들의 평문 값과 비교할 수 있다. 일치하는 경우, 신뢰 토큰이 이미 상환되었으며 신뢰 토큰 발행자가 SRR을 발행하지 않을 수 있다. 일치하지 않는 경우, 신뢰 토큰 발행자(132)는 신뢰 토큰이 또한 유효하다고 가정할 때, SRR을 발행하고 토큰 상환 데이터베이스(144)를 업데이트하여 상환된 신뢰 토큰의 논스의 평문 값을 포함할 수 있다. 신뢰 토큰을 상환하기 위한 예시적인 프로세스가 도 3에 도시되고, 아래에 서술되어 있다.
신뢰 토큰을 상환한 후, 애플리케이션(112)은 수신자의 수신자 디바이스(120)에 요청을 전송할 수 있다. 요청은 신뢰 토큰을 상환하는 것에 응답하여 클라이언트 디바이스(110)(또는 애플리케이션(112))에 발행된 SRR을 포함할 수 있다. 수신자 디바이스(120)는 요청에 응답할지 및/또는 어떻게 응답할지를 결정하기 위해 SRR을 평가할 수 있다. SRR을 포함하는 요청들을 처리하기 위한 예시적인 프로세스가 도 4에 도시되고 아래에 서술된다.
도 2는 신뢰 토큰들을 발행하기 위한 예시적인 프로세스를 도시하는 흐름도이다. 프로세스(200)는, 예를 들어, 도 1의 신뢰 토큰 시스템(130)과 같은 신뢰 토큰 시스템에 의해 구현될 수 있다. 프로세스(200)의 동작들은 또한 비일시적 컴퓨터 판독 가능 매체에 저장된 명령어들로서 구현될 수 있으며, 하나 이상의 데이터 처리 장치에 의한 명령어들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(200)의 동작들을 수행하게 할 수 있다. 간결함을 위해, 프로세스(200)는 도 1의 신뢰 토큰 시스템(130)과 관련하여 서술된다.
신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)로부터 하나 이상의 신뢰 토큰에 대한 요청을 수신한다(202). 클라이언트 디바이스(110)에 설치된 애플리케이션(112)은 애플리케이션(112)이 수신자와의 통신에서 클라이언트 디바이스(110)의 무결성을 검증하기 위해 신뢰 토큰들을 사용할 수 있도록 요청을 개시할 수 있다. 예를 들어, 애플리케이션(112)은 주기적으로(예를 들어, 하루에 한 번, 일주일에 한 번 등) 또는 애플리케이션(112)에 대해 저장되었지만 상환되지 않은 신뢰 토큰들의 수가 임계값 이하로 떨어질 때 신뢰 토큰들을 요청할 수 있다. 신뢰 토큰들을 요청하기 위해, 애플리케이션(112)은 클라이언트 디바이스(110)의 신뢰 프로그램(114), 예를 들어, 클라이언트 디바이스(110)의 운영 체제의 API를 호출할 수 있다.
신뢰 토큰 시스템(130)에 의해 수신된 요청은 각각의 요청된 신뢰 토큰에 대한 논스, 디바이스-레벨 사기 탐지 신호들, 및 신뢰 토큰들에 대한 요청을 개시한 애플리케이션(112)과 관련된 데이터를 포함할 수 있다. 일부 구현들에서, 요청은 또한 클라이언트 디바이스(110)에 대한 고유한 디바이스 식별자를 포함할 수 있다. 애플리케이션과 관련된 데이터는 애플리케이션에 대한 식별자 및 애플리케이션 코드의 해시를 포함할 수 있다.
신뢰 토큰 시스템(130)은 디바이스-레벨 사기 탐지 신호를 평가한다(204). 예를 들어, 신뢰 토큰 시스템(130)의 디바이스 평가자(134)는 사기 탐지 신호들에 포함된 동작 특성들 및 메트릭들을 정품 클라이언트 디바이스들, 에뮬레이터들, 루팅된 디바이스들 등에 대한 해당 특성들 및 메트릭들과 비교할 수 있다. 클라이언트 디바이스(110)의 특성들 및 메트릭들이 디바이스들의 카테고리들 중 하나와 유사한 경우, 디바이스 평가자(134)는 클라이언트 디바이스(110)를 카테고리로 분류할 수 있다. 예를 들어, 장치 평가자(134)는, 각각의 동작 특성 또는 메트릭에 대해, 정품 클라이언트 디바이스의 특성인 제1 값 또는 값들의 제1 범위, 에뮬레이터의 특성인 제2 값 또는 값들의 제2 범위, 및/또는 루팅된 디바이스의 특성인 제3 값 또는 값들의 제3 범위에 액세스한다. 디바이스 평가자(134)는 클라이언트 디바이스(110)의 각각의 동작 특성 또는 메트릭을 디바이스의 각 카테고리에 대한 대응하는 값 또는 값들의 범위와 비교할 수 있다. 디바이스 평가자(134)는 다수의 동작 특성들 및 메트릭들에 대해 이러한 비교를 수행하고 더 많은 동작 특성들 및 메트릭들이 정품 디바이스들, 에뮬레이터들 또는 루팅된 디바이스들에 대한 해당 범위들(또는 범위들에 더 가까운) 내에 있는지를 결정할 수 있다. 그 다음, 디바이스 평가자(134)는, 더 많은 메트릭들이 디바이스의 카테고리의 범위 내에 있는 디바이스의 카테고리와 클라이언트 디바이스(110)가 더 유사하다고 결정할 수 있다. 다른 구현들에서, 디바이스들의 다른 카테고리들이 사용될 수 있고, 디바이스들의 다른 유형들의 파라미터들이 사용될 수 있다. 다른 구현들에서, 지도(supervised) 또는 반-지도(semi-supervised) 기계 학습(ML) 모델은, ML 모델에 대한 입력 신호들로 수집된 동작 특성들 및 메트릭들을 사용하고, 알려진 디바이스들의 알려진 카테고리들을 학습 레이블들로 사용하여 디바이스들을 여러 카테고리들의 디바이스들로 분류하도록 훈련될 수 있다.
다른 예에서, 디바이스 평가자(134)는 동작 특성들 및 메트릭들에 기초하여 클라이언트 디바이스(110)에 신뢰성의 레벨을 할당할 수 있다. 예를 들어, 디바이스 평가자(134)는 각각의 동작 특성 또는 메트릭을 신뢰할 수 있는 디바이스들을 나타내는 대응하는 값 또는 값들의 범위와 비교할 수 있다. 디바이스 평가자(134)는 신뢰할 수 있는 범위들 및/또는 신뢰할 수 있는 범위의 대응하는 임계값 내에 있는 동작 특성들 및 메트릭들의 수에 기초하여 신뢰성의 레벨을 할당할 수 있다.
디바이스 평가자(134)는, 평가에 기초하여, 클라이언트 디바이스(110)가 신뢰할 수 있는 장치인지를 결정한다(206). 디바이스 평가자(134)는 클라이언트 디바이스(110)에 할당된 신뢰도의 레벨에 기초하여 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스인지를 결정할 수 있다. 예를 들어, 디바이스 평가자(134)는, 예를 들어, 데이터베이스로부터 신뢰성 임계값에 액세스하고, 신뢰성의 레벨을 신뢰성 임계값과 비교할 수 있다. 신뢰성의 레벨이 임계값을 만족하는 경우(예를 들어, 충족하거나 초과하는 경우), 디바이스 평가자(134)는 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스임을 결정할 수 있다. 신뢰성의 레벨이 임계값을 만족하지 않으면, 디바이스 평가자(134)는 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스가 아니라고 결정할 수 있다. 일부 구현들에서, 임계값은 사기를 검출하기 위해 신뢰 토큰들을 사용하는 발행된 신뢰 토큰들의 사용자, 예를 들어, 발행된 신뢰 토큰들의 수신자에 의해 설정될 수 있다. 임계값은 또한 예를 들어, 신뢰 토큰 발행자(132)에 의해 신뢰 토큰 시스템(130)에 의해 설정될 수 있다.
다른 예에서, 디바이스 평가자(134)는, 클라이언트 디바이스(110)에 할당된 카테고리에 기초하여 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스인지를 결정할 수 있다. 디바이스 평가자(134)는 클라이언트 디바이스(110)에 할당된 카테고리를 신뢰되는 것으로 간주되는 하나 이상의 카테고리 및 신뢰되지 않는 것으로 간주되는 하나 이상의 카테고리와 비교할 수 있다. 예를 들어, 디바이스 평가자(134)가 클라이언트 디바이스(110)를 정품 클라이언트 디바이스로 분류하면, 디바이스 평가자(134)는 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스라고 결정할 수 있다. 디바이스 평가자(134)가 클라이언트 디바이스(110)를 에뮬레이터 또는 루팅된 디바이스로 분류하면, 디바이스 평가자(134)는 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스가 아니라고 결정할 수 있다. 신뢰할 수 있는 디바이스 및 신뢰할 수 없는 디바이스에 대한 카테고리들은 데이터베이스로부터 액세스할 수 있다.
다른 예에서, 디바이스 평가자(134)는, 예를 들어, 가장 최근의 시간, 일, 주, 월 등의 주어진 기간 동안 클라이언트 디바이스(110)에 의해 요청된 신뢰 토큰들의 수에 기초하여 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스인지를 결정할 수 있다. 예를 들어, 디바이스 평가자(134)는 예를 들어 데이터베이스로부터 토큰 임계값에 액세스할 수 있고, 주어진 기간 동안 클라이언트 디바이스(110)에 의해 요청된 토큰들의 수를 임계값과 비교할 수 있다. 주어진 기간 동안 클라이언트 디바이스(110)에 의해 요청된 토큰들의 수가 임계값 미만인 경우, 디바이스 평가자(134)는 클라이언트 디바이스(110)가 신뢰되는 것으로 결정할 수 있다. 주어진 기간 동안 클라이언트 디바이스(110)에 의해 요청된 토큰들의 수가 임계값을 충족하거나 초과하는 경우, 디바이스 평가자(134)는 클라이언트 디바이스(110)가 신뢰되지 않는다고 결정할 수 있다. 이는, 디바이스-레벨 및 애플리케이션-레벨 신호들이 디바이스를 신뢰할 수 있음을 나타내는 경우에도 잠재적으로 신뢰할 수 없는 디바이스들에 신뢰 토큰들이 발행되는 것을 방지하여 신뢰할 수 없는 디바이스들을 검출하는 개선된 방법을 제공하는 기술적 이점을 제공한다.
일부 구현들에서, 디바이스 평가자(134)는 디바이스-레벨 사기 검출 신호들의 평가 및 주어진 시간 기간 동안 요청된 신뢰 토큰들의 수의 조합에 기초하여 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스인지를 결정할 수 있다. 예를 들어, 디바이스 평가자(134)는, 신뢰성의 레벨이 임계값(또는 클라이언트 디바이스(110)에 할당된 카테고리가 신뢰할 수 있는 카테고리)을 충족하고 클라이언트 디바이스(110)에 의해 요청된 신뢰 토큰들의 수가 임계값 미만인 경우에만 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스인지를 결정할 수 있다.
디바이스 평가자(134)가 클라이언트 디바이스(110)가 신뢰할 수 있는 디바이스가 아니라고 결정하면, 신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)에 신뢰 토큰을 발행하지 않을 수 있다(208). 일부 구현들에서, 위에서 설명된 바와 같이, 신뢰 토큰이 신뢰할 수 있는 디바이스가 아닌 것으로 결정되더라도 신뢰 토큰 시스템(130)은 신뢰 토큰을 클라이언트 디바이스에 발행할 수 있다. 이러한 특정 구현들에서, 이는 신뢰할 수 없는 디바이스가 신뢰 토큰 시스템이 동작하는 방식에 대한 정보를 추론하지 못하도록 방지하여 신뢰할 수 없는 디바이스가 시스템을 조작할 수 없도록 하는 기술적 이점을 제공한다. 따라서, 신뢰 토큰 시스템의 보안과 무결성이 향상된다.
디바이스 평가자(134)가 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하면, 애플리케이션(112)의 신뢰성이 평가된다(210). 신뢰 토큰 시스템(130)의 애플리케이션 평가자(136)는 애플리케이션(112)의 신뢰성을 평가할 수 있다. 애플리케이션 평가자(136)는, 클라이언트 디바이스(110)에 설치된 애플리케이션(112)의 인스턴스가 애플리케이션(112)의 공식 빌드인지를 결정하기 위해, 요청에서 수신된 애플리케이션(112) 코드의 해시를 애플리케이션의 알려진 공식 빌드 코드의 해시와 비교할 수 있다. 요청에서 수신된 애플리케이션(112)의 코드 해시가 애플리케이션(112)의 알려진 공식 빌드 코드의 해시와 일치하는 경우, 애플리케이션 평가자(136)는 클라이언트 디바이스(110)에 설치된 애플리케이션(112)의 인스턴스가 애플리케이션(112)의 공식 빌드임을 결정할 수 있다. 일치하지 않는 경우, 애플리케이션 평가자(136)는, 클라이언트 디바이스(110)에 설치된 애플리케이션(112)의 인스턴스가 애플리케이션(112)의 공식 빌드가 아니라고 결정할 수 있다.
일부 구현들에서, 디바이스 평가자(134)는, 애플리케이션(112)의 코드가 악성이 아닌 것으로 인증되었는지 여부에 기초하여 애플리케이션(112)이 신뢰할 수 있는 애플리케이션인지를 결정한다. 예를 들어, 운영 체제 개발자 및/또는 애플리케이션(112)이 다운로드될 수 있는 애플리케이션 스토어를 운영하는 엔티티와 같은 신뢰할 수 있는 당사자는, 애플리케이션(112)의 공식 빌드들이 바이러스, 맬웨어, 또는 다른 악성 애플리케이션 로직을 포함하는지를 결정하기 위해 애플리케이션(112)의 공식 버전들의 코드를 평가할 수 있다. 그러한 악성 애플리케이션 로직이 발견되지 않으면, 신뢰할 수 있는 당사자는 애플리케이션(112)에 대해 애플리케이션(112)이 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서를 발행할 수 있다. 악성 애플리케이션 로직이 신뢰할 수 있는 당사자에 의해 발견되면, 신뢰할 수 있는 당사자는 인증서 발행을 거부하거나 애플리케이션(112)이 악성 애플리케이션 로직을 포함한다는 것을 나타내는 인증서 발행을 거부할 수 있다. 신뢰할 수 있는 당사자는 애플리케이션들의 각 공식 빌드를 평가하고 평가를 기반으로 각 공식 빌드에 대해 해당 인증서를 발급할지를 결정할 수 있다. 신뢰할 수 있는 당사자가 애플리케이션 스토어인 예들에서, 애플리케이션(112)이 공식 빌드이고 악성 애플리케이션 로직을 포함하지 않는다는 인증서를 발급하는 대신, 애플리케이션 스토어는 애플리케이션 스토어에 애플리케이션을 게시하여 애플리케이션이 널리 분포되어 있다. 일부 예들에서, 애플리케이션(112)이 공식 빌드이고 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서를 발행하는 대신, 신뢰할 수 있는 당사자는 애플리케이션(112)에 대해 알려진 모든 신뢰할 수 있는 애플리케이션을 나열하는 레코드를 데이터베이스에 삽입할 수 있다.
애플리케이션 평가자(136)는 클라이언트 디바이스(110)에 설치된 애플리케이션(112)이 신뢰되는지를 결정한다(212). 일부 구현들에서, 애플리케이션 평가자(136)는 애플리케이션(112)이 공식 빌드라는 결정에 응답하여 애플리케이션(112)이 신뢰되는 것으로 결정한다. 애플리케이션(112)이 공식 빌드가 아닌 경우, 애플리케이션 평가자는 악성 또는 무효로 분류된 애플리케이션의 비공식 빌드로부터의 네트워크 트래픽의 백분율을 나타내는 네트워크 트래픽 분석 데이터를 고려할 수 있다. 애플리케이션의 비공식 빌드로부터의 네트워크 트래픽의 적어도 임계 백분율이 악의적이거나 유효하지 않은 것으로 간주되는 경우, 애플리케이션 평가자(136)는 공식 빌드가 아닌 애플리케이션(112)의 임의의 인스턴스가 신뢰되지 않는 것으로 결정할 수 있다. 네트워크 트래픽의 임계 백분율 미만이 악의적이거나 무효인 것으로 간주되는 경우, 애플리케이션 평가자(136)는 애플리케이션(112)이 공식 빌드가 아니지만 애플리케이션(112)이 신뢰되는 것으로 결정할 수 있다.
일부 구현들에서, 애플리케이션(112)이 공식 빌드라고 결정하는 것에 응답하여, 그리고 애플리케이션(112)이 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서가 클라이언트 디바이스(112) 상의 애플리케이션(112)의 빌드에 대해 발행되었다는 결정에 응답하여, 애플리케이션 평가자(136)는 애플리케이션(112)이 신뢰할 수 있는 애플리케이션이라고 결정한다. 즉, 이 구현에서, 애플리케이션(112)은 두 기준을 모두 충족해야 한다.
애플리케이션 평가자(136)가 애플리케이션(112)이 신뢰되지 않는다고 결정하면, 신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)에 신뢰 토큰을 발행하지 않을 수 있다(208). 애플리케이션 평가자(136)가 애플리케이션(112)이 신뢰되는 것으로 결정하면, 신뢰 토큰 시스템은 애플리케이션(112)에 대한 신뢰 토큰을 생성한다.
이 예시적인 프로세스에서, 신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)와 애플리케이션(112) 모두가 신뢰되는 것으로 간주될 때만 신뢰 토큰을 발행한다. 다른 예들에서, 신뢰 토큰 시스템(130)은, 예를 들어, 클라이언트 디바이스(110) 또는 애플리케이션(112) 중 어느 하나를 평가함으로써 클라이언트 디바이스(110) 또는 애플리케이션(112) 중 어느 하나가 신뢰되는 것으로 간주될 때 신뢰 토큰들을 발행할 수 있다.
신뢰 토큰 시스템(130)의 신뢰 토큰 발행자(132)는 요청에서 수신된 각각의 논스에 대한 신뢰 토큰을 생성할 수 있다(214). 신뢰 토큰 발행자(132)는 논스 값에 기초하여 디지털 서명을 생성함으로써 신뢰 토큰을 생성할 수 있다. 신뢰 토큰은 논스와 디지털 서명의 조합일 수 있다.
일부 구현들에서, 신뢰 토큰 발행자(132)는 논스를 블라인드하기 위해 클라이언트 디바이스(110)에서 사용되는 동일한 블라인드 서명 방식을 사용하여 블라인드 논스를 블라인드 서명함으로써 신뢰 토큰을 생성한다. 이러한 방식으로, 신뢰 토큰 발행자(132)는 논스의 실제 평문 값에 접근할 수 없지만, 논스의 평문 값에 기초하여 나중에 검증될 수 있는 디지털 서명을 생성할 수 있다. 이 예에서, 신뢰 토큰은 블라인드 논스와 블라인드 논스의 블라인드 서명의 조합일 수 있다. 아래에서 논의된 바와 같이, 신뢰 토큰 발행자가 논스의 일반 텍스트 값에 액세스할 수 없도록 논스를 블라인드하는 것은, 사용자 데이터에 대한 개인 정보를 유지하는 기술적 이점을 제공한다. 이는 신뢰 토큰 시스템이 블라인드 논스(신뢰 토큰 발행시 신뢰 토큰 발행자가 본)와 해당 언블라인드 논스(발행된 토큰을 상환할 때 본)를 연관시킬 수 없기 때문에 신뢰 토큰 시스템은 발행된 신뢰 토큰을 상환된 신뢰 토큰들과 상호 연관시키려고 시도함으로써 클라이언트 디바이스로부터 모든 사용자 정보를 유추할 수 없다.
일부 구현들에서, 신뢰 토큰은 또한 예를 들어 블라인드 서명으로 인코딩된 메타데이터의 형태로 추가 데이터를 포함할 수 있다. 인코딩된 메타데이터는 신뢰 토큰 발행자(132)가 다양한 토큰 발행 로직을 비교하고 어느 것이 사기 탐지에서 가장 효율적인지 결정하는 데 도움이 될 수 있다. 또한, 인코딩된 메타데이터는 디바이스(110) 및 애플리케이션(112)에 할당된 신뢰성의 레벨을 나타낼 수 있다. 신뢰 토큰 발행자(132)는 숨겨진 비트(들) 및 서명 확인 키들의 형태로 소량의 정보를 블라인드 서명에 인코딩할 수 있다. 예를 들어, 블라인드 서명이 4개의 검증 키 중 하나에 의해 검증될 수 있는 경우, 신뢰 토큰 발행자(132)는 2비트의 정보를 서명으로 인코딩할 수 있다.
일부 구현들에서, 신뢰 토큰 발행자(132)는 클라이언트 디바이스(110)의 공개 키를 사용하여 각각의 신뢰 토큰을 암호화할 수 있다. 예를 들어, 신뢰 토큰들에 대한 요청은 클라이언트 디바이스(110)에 대한 고유 식별자로서 클라이언트 디바이스(110)의 공개 키를 포함할 수 있다. 클라이언트 디바이스(110)의 공개 키를 사용하여 각각의 신뢰 토큰을 암호화함으로써, 개인 키를 가진 클라이언트 디바이스(110) 만이 신뢰 토큰들을 복호화할 수 있다. 이것은 신뢰 토큰들에 대한 요청을 제출한 클라이언트 디바이스(110)가 실제로 개인 키를 갖고 다른 클라이언트 디바이스가 발행된 신뢰 토큰들을 얻을 수 없도록 보장한다. 따라서, 이는 요청을 제출하고 공개 키에 해당하는 개인 키를 실제로 소유한 클라이언트 장치만 발행된 신뢰 토큰들을 사용할 수 있도록 하여 발행된 신뢰 토큰들에 대한 추가 보안을 제공한다. 따라서, 요청하는 클라이언트 디바이스의 공개 키를 사용하여 각 신뢰 토큰을 암호화함으로써 발행된 신뢰 토큰들에 대한 추가 보안의 기술적 이점이 제공된다.
신뢰 토큰 발행자(132)는 신뢰 토큰들을 클라이언트 디바이스(110)에 전송한다(216). 신뢰 토큰들이 클라이언트 디바이스(110)의 공개 키를 사용하여 암호화되면, 신뢰할 수 있는 프로그램(114)은 공개 키에 대응하는 개인 키를 사용하여 신뢰 토큰을 복호화할 수 있다. 블라인드된 논스가 사용되는 경우, 블라인드된 논스들을 생성한 애플리케이션(112)(또는 신뢰할 수 있는 프로그램(114))은 각 신뢰 토큰의 블라인드 서명을 검증할 수 있다. 애플리케이션(112) 또는 신뢰할 수 있는 프로그램(114)은 신뢰 토큰들에 대한 요청을 위해 생성한 논스의 블라인드 값에 기초하여 블라인드 서명을 검증할 수 있다. 서명이 유효하지 않은 경우, 애플리케이션(112) 또는 신뢰할 수 있는 프로그램(114)은 신뢰 토큰들을 거부할 수 있다.
서명이 유효하면, 애플리케이션(112) 또는 신뢰할 수 있는 프로그램(114)은 논스를 블라인드하고 블라인드된 논스를 블라인드 서명하는데 사용되었던 블라인드 서명 방식을 사용하여 블라인드된 논스를 해제할 수 있다. 논스의 블라인드 해제는 논스가 더 이상 모호하지 않도록 논스로부터 블라인드 요소를 제거하는 것을 포함할 수 있다. 블라인드 서명 방식에 따라, 애플리케이션(112) 또는 신뢰할 수 있는 프로그램(114)은 블라인드 서명 방식을 사용하여, 예를 들어, 블라인드 서명에서 블라인드 요소를 제거함으로써 블라인드 서명을 해제할 수도 있다.
그 다음, 애플리케이션(112)은, 각각의 신뢰 토큰에 대해, 블라인드 또는 비블라인드 형태의 블라인드 서명 및 블라인드되지 않은 논스(예를 들어, 평문 논스)를 포함하는 신뢰 토큰의 블라인드되지 않은 버전을 저장할 수 있다. 즉, 애플리케이션(112)은 블라인드되지 않은 논스와 블라인드 서명을 포함하는 신뢰 토큰의 새로운 버전을 업데이트하거나 생성할 수 있다. 애플리케이션(112)은 클라이언트 장치(110)의 보안 저장 위치에 신뢰 토큰을 저장할 수 있다.
도 3은 신뢰 토큰들을 상환하기 위한 예시적인 프로세스(300)를 도시하는 흐름도이다. 프로세스(300)는 예를 들어 신뢰 토큰 시스템, 예를 들어, 도 1의 신뢰 토큰 시스템(130)에 의해 구현될 수 있다. 프로세스(300)의 동작들은 또한 비일시적 컴퓨터 판독 가능 매체에 저장된 명령어들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령어들의 실행은 하나 이상의 데이터 처리 장치가 프로세스의 동작을 수행하게 할 수 있다(300). 간결함을 위해, 프로세스(300)는 도 1의 신뢰 토큰 시스템(130)과 관련하여 서술된다.
신뢰 토큰 시스템(130)은 클라이언트 디바이스(110)로부터 신뢰 토큰을 상환하라는 요청을 수신한다(302). 클라이언트 디바이스(110)에서 실행되는 애플리케이션(112)은 SRR을 포함하도록 요청들을 요구하는 수신자에 대한 요청을 개시하는 것에 응답하여 신뢰 토큰을 상환하라는 요청을 발행할 수 있다. 예를 들어, 웹 브라우저가 게시자의 특정 웹사이트로 이동할 때, 웹사이트 또는 웹사이트에 내장된 다른 도메인의 모듈은 클라이언트 디바이스(110) 및 웹 브라우저가 신뢰할 수 있는지 확인하기 위해 웹 브라우저에 신뢰 토큰을 상환하도록 요청할 수 있다.
애플리케이션(112)은 애플리케이션(112)에 발행된 신뢰 토큰들로부터 신뢰 토큰을 획득하고, 신뢰 토큰을 포함하는 상환 요청을 신뢰 토큰 시스템(130)에 보낼 수 있다. 요청은 또한 애플리케이션(112)에 의해 생성된 공개 키(또는 공개 키의 암호화 해시)를 포함할 수 있다. 웹 브라우저의 예를 계속하면, 요청에는 웹 브라우저가 제공하는 웹 사이트의 도메인에 대해 브라우저가 생성한 공개 키 및 도메인을 식별하는 데이터가 포함될 수 있다. 웹 브라우저는 웹 브라우저가 방문한 각 도메인에 대해 키 쌍을 생성할 수 있다. 각 키 쌍에는 공개 키와 해당 개인 키가 포함될 수 있다.
블라인드 논스들이 신뢰 토큰들을 생성하기 위해 사용된다면, 상환을 위해 전송된 신뢰 토큰들은 블라인드 논스보다는 블라인드되지 않은 논스 및 블라인드 서명을 포함할 수 있다. 이러한 방식으로, 신뢰 토큰 시스템(130)은 상환을 위해 제출된 신뢰 토큰을 애플리케이션(112)에 발행된 신뢰 토큰과 상관시킬 수 없으며, 이는 신뢰 토큰 시스템이 발행되고 이후에 상환된 신뢰 토큰에서 클라이언트 디바이스 또는 클라이언트 디바이스의 사용자에 관한 정보를 추론할 수 없음을 의미한다. 따라서, 이는 신뢰 토큰들을 상환할 때 사용자 개인 정보를 유지하는 기술적 이점을 제공한다. 신뢰 토큰 시스템(130)은 발행된 신뢰 토큰(따라서 블라인드된 논스)과 신뢰 토큰을 발행할 때 평가된 신뢰성의 레벨을 클라이언트 장치(110)에 대한 장치 식별자와 연결하는 데이터를 저장할 수 있으므로, 그렇지 않으면 신뢰 토큰 시스템(130)은 클라이언트 장치(110)로부터의 SRR의 수신자들을 신뢰성의 레벨과 상관시킬 수 있을 것이다. 그러나, 상환 시 블라인드되지 않은 논스들이 있는 신뢰 토큰들을 사용하는 것은, 신뢰 토큰들을 도 2의 동작들 204 및 210에서 애플리케이션(112)과 관련된 디바이스-레벨 사기 탐지 신호 및 데이터에 상관시키는 것을 방지하는바, 이는 신뢰 토큰 시스템(130)은 블라인드되지 않은 논스와 블라인드된 논스를 상관시킬 수 없기 때문이다. 따라서, 이 기술은 사용자의 개인 정보를 보호한다.
신뢰 토큰 시스템(130)은 수신된 신뢰 토큰의 블라인드 서명을 검증하려고 시도한다(304). 예를 들어, 신뢰 토큰 시스템(130)의 신뢰 토큰 발행자(132)는 발행된 신뢰 토큰의 블라인드된 논스를 블라인드 서명하는데 사용되는 블라인드 서명 방식을 사용하여 블라인드 서명 검증을 시도할 수 있다. 신뢰 토큰 발행자(132)는 블라인드 서명 방식과 블라인드 논스의 평문 값을 이용하여 블라인드 서명을 검증할 수 있다.
블라인드 서명이 성공적으로 검증되지 않은 경우(306), 신뢰 토큰 시스템(130)은 신뢰 토큰을 상환하지 않을 수 있다(308). 블라인드 서명이 성공적으로 검증되면, 신뢰 토큰 발행자(132)는 신뢰 토큰이 이미 상환되었는지를 결정한다(310). 이 결정은 블라인드 서명을 검증하기 전, 후에, 병렬로 또는 비동기식으로 수행될 수 있다.
신뢰 토큰 발행자(132)는, 상기 블라인드되지 않은 논스를, 예를 들어, 토큰 상환 데이터베이스(144)에 저장된, 이전에 상환된 신뢰 토큰의 블라인드되지 않은 논스를 비교할 수 있다. 이전에 상환된 신뢰 토큰들은 클라이언트 디바이스(110) 또는 다수의 클라이언트 디바이스들(110)로부터의 상환된 토큰들을 포함할 수 있다. 상환될 신뢰 토큰의 블라인드되지 않은 논스와 이전에 상환된 신뢰 토큰들의 블라인드되지 않은 논스 사이에 일치가 있는 경우, 신뢰 토큰 발행자(132)는 신뢰 토큰이 이전에 상환되었다고 결정할 수 있다. 상환될 신뢰 토큰의 블라인드 처리되지 않은 논스와 이전에 상환된 신뢰 토큰의 블라인드되지 않은 논스 사이에 일치가 없는 경우, 신뢰 토큰 발행자(132)는 신뢰 토큰이 이전에 상환되지 않았다고 결정할 수 있다.
신뢰 토큰이 이전에 상환된 경우, 신뢰 토큰 발행자(132)는 신뢰 토큰을 다시 상환하지 않을 수 있다(308). 신뢰 토큰이 아직 상환되지 않은 경우, 신뢰 토큰 발행자(132)는 신뢰 토큰을 상환하고 애플리케이션(112)에 SRR을 발행할 수 있다(312).
SRR은, SRR이 생성된 시간과 날짜를 나타내는 상환 타임스탬프, 상환 요청에서 식별된 웹사이트의 도메인을 식별하는 데이터, 브라우저가 도메인에 대해 생성한 공개 키 및/또는 다수의 신뢰 토큰 시스템이 있을 수 있으므로 신뢰 토큰을 발행하고 상환한 신뢰 토큰 시스템(130)을 식별하는 데이터를 포함하는 데이터의 세트를 포함할 수 있다. SRR은 또한 신뢰 토큰 시스템(130)의 개인 키를 사용하여 생성된 데이터 세트의 디지털 서명을 포함할 수 있다. 이러한 방식으로, 수신자 및 기타 엔티티들은 신뢰 토큰 시스템(130)의 개인 키에 대응하는 공개 키를 사용하여 디지털 서명을 검증함으로써 데이터 세트가 조작되지 않았음을 검증할 수 있다. 신뢰 토큰 시스템(130)의 개인 키를 사용하여 서명되는 데이터와 함께 브라우저가 도메인에 대해 생성한 공개 키를 포함하는 것은 SRR을 해당 특정 도메인 및 브라우저에 바인딩하는 것이다. 신뢰 토큰 발행자(132)는 SRR을 생성하고 신뢰 토큰의 상환을 요청한 애플리케이션(112)에 SRR을 보낼 수 있다.
신뢰 토큰 발행자(132)는 또한 신뢰 토큰이 상환되었음을 나타내기 위해 토큰 상환 데이터베이스(144)를 업데이트할 수 있다(314). 예를 들어, 신뢰 토큰 발행자(132)는 신뢰 토큰이 여러 번 상환되는 것을 방지하기 위해 블라인드되지 않은 논스의 평문 값을 토큰 상환 데이터베이스(144)에 추가할 수 있다.
도 4는 상환된 신뢰 토큰에 기초하여 서명된 상환 기록을 포함하는 요청들을 처리하기 위한 예시적인 프로세스(400)를 도시하는 흐름도이다. 프로세스(400)는 예를 들어, 수신 디바이스, 예를 들어, 도 1의 수신 디바이스(120)에 의해 구현될 수 있다. 프로세스(400)의 동작들은 또한 비일시적 컴퓨터 판독가능 매체에 저장된 명령어들로서 구현될 수 있고, 하나 이상의 데이터 처리 장치에 의한 명령어들의 실행은 하나 이상의 데이터 처리 장치가 프로세스(400)의 동작을 수행하게 할 수 있다. 간결함을 위해, 프로세스(400)는 도 1의 신뢰 토큰 시스템(130)과 관련하여 서술된다.
수신 디바이스(120)는 클라이언트 디바이스(110)로부터 하나 이상의 SRR을 포함하는 요청을 수신한다(402). 요청에는 위에서 서술한 디바이스 및 애플리케이션 평가들을 기반으로 생성된 상환된 신뢰 토큰에 대해 생성된 SRR이 포함될 수 있다. 일부 구현들에서, 요청은, 클라이언트 디바이스 상의 애플리케이션 또는 다수의 애플리케이션들과의 사용자 상호작용의 평가에 기초하여, 예를 들어, 사용자 상호작용들이 에뮬레이트된 사용자 상호작용들이 아니라 실제 사용자 상호작용들이라는 평가 및 결정에 기초하여 발행된 신뢰 토큰에 기초하여 생성된 추가 SRR을 포함할 수 있다. 요청의 SRR(들)은 상환된 신뢰 토큰에 기초하여 애플리케이션(112)(또는 도 1의 신뢰할 수 있는 프로그램(114))에 대한 신뢰 토큰 시스템(130)에 의해 생성된 SRR(들)을 포함할 수 있다.
요청은 또한 예를 들어 SRR을 포함하는 요청의 다른 콘텐츠의 디지털 서명을 포함할 수 있다. 애플리케이션(112) 또는 신뢰할 수 있는 프로그램(114)은 애플리케이션(112)이 도메인에 대해 생성한 개인 키를 사용하여 디지털 서명을 생성할 수 있다. 이 개인 키는 애플리케이션(112)이 도메인에 대해 생성한 공개 키에 해당한다. 공개 키 또는 암호화 해시 결과가 SRR에 포함된다. 이러한 방식으로 요청과 SRR이 도메인에 바인딩된다.
수신자 디바이스(120)는 각각의 SRR을 검증하려고 시도한다(404). 이 검증은 SRR을 생성한 신뢰 토큰 시스템(130)의 공개 키를 사용하여 SRR의 디지털 서명을 검증하려는 시도를 포함할 수 있다. 수신자 디바이스(120)는 또한 SRR이 부실하지 않은 것을 보장하기 위해 상환 타임스탬프가 현재 시간의 임계치 시간 내에 있는지를 결정할 수 있다.
수신자 디바이스(120)는 각각의 SRR이 검증되었는지를 결정한다(406). 수신자 디바이스(120)는 SRR의 디지털 서명이 검증되었는지 및/또는 상환 타임스탬프가 임계 시간 양 내에 있는지에 기초하여 SRR이 검증되었는지를 결정할 수 있다. 디지털 서명이 성공적으로 검증되고 상환 타임스탬프가 현재 시간의 임계값 내에 있는 경우, 수신자 디바이스(120)는 SRR이 검증된 것으로 결정할 수 있다. 디지털 서명이 성공적으로 검증되지 않았거나 상환 타임스탬프가 현재 시간의 임계 시간 내에 있지 않은 경우, 수신자 디바이스(120)는 SRR이 검증되지 않은 것으로 결정할 수 있다.
일부 구현들에서, 수신자 디바이스(120)는 또한 애플리케이션이 도메인에 대해 생성한 공개 키를 사용하여 요청의 디지털 서명을 확인할 수 있고, 예를 들어, 디지털 서명(또는 이의 암호화 해시 결과)은 SRR 및/또는 요청 자체에 포함될 수 있는다. 디지털 서명이 검증될 수 없는 경우, 수신자 디바이스(120)는 요청이 유효하지 않고 요청에 응답하지 않을 수 있다고 결정할 수 있다.
각각의 SRR이 검증되지 않은 경우, 수신자 디바이스(120)는 요청에 응답하지 않을 수 있다(408). 예를 들어, 수신자 디바이스(120)는 요청을 무시할 수 있다.
각각의 SRR이 검증되면, 수신자 디바이스(120)는 요청에 응답한다(410). 예를 들어, 수신자 디바이스(120)는 요청에 응답하여 컨텐츠를 제공하거나, 요청에 응답하여 요청에 기초한 데이터 또는 설정들을 업데이트할 수 있다.
도 5는 위에서 서술된 동작들을 수행하는 데 사용될 수 있는 예시적인 컴퓨터 시스템(500)의 블록도이다. 시스템(500)은 프로세서(510), 메모리(520), 저장 디바이스(530), 및 입력/출력 디바이스(540)를 포함한다. 컴포넌트들(510, 520, 530, 540) 각각은 예를 들어 시스템 버스(550)를 사용하여 상호연결될 수 있다. 프로세서(510)는 시스템(500) 내에서 실행하기 위한 명령어들을 처리할 수 있다. 일부 구현들에서, 프로세서(510)는 단일 스레드 프로세서이다. 다른 구현에서, 프로세서(510)는 다중 스레드 프로세서이다. 프로세서(510)는 메모리(520) 또는 저장 디바이스(530)에 저장된 명령어들을 처리할 수 있다.
메모리(520)는 시스템(500) 내의 정보를 저장한다. 일 구현에서, 메모리(520)는 컴퓨터 판독가능 매체이다. 일부 구현에서, 메모리(520)는 휘발성 메모리 유닛이다. 다른 구현에서, 메모리(520)는 비휘발성 메모리 유닛이다.
저장 디바이스(530)는 시스템(500)을 위한 대용량 저장 장치를 제공할 수 있다. 일부 구현들에서, 저장 디바이스(530)는 컴퓨터 판독 가능 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(530)는 예를 들어, 하드 디스크 디바이스, 광 디스크 디바이스, 여러 컴퓨팅 디바이스들(예: 클라우드 저장 디바이스)가 네트워크를 통해 공유하는 저장 디바이스, 또는 다른 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(540)는 시스템(600)에 대한 입력/출력 동작들을 제공한다. 일부 구현들에서, 입력/출력 디바이스(540)는 네트워크 인터페이스 디바이스들, 예를 들어, 이더넷 카드, 직렬 통신 디바이스, 예를 들어, RS-232 포트, 및/또는 무선 인터페이스 디바이스, 예를 들어, 802.11 카드 중 하나 이상을 포함할 수 있다. 다른 구현에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 외부 디바이스들(560), 예를 들어, 키보드, 프린터 및 디스플레이 디바이스로 전송하도록 구성된 드라이버 디바이스들을 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스들, 모바일 통신 디바이스들, 셋톱 박스 텔레비전 클라이언트 디바이스들 등과 같은 다른 구현도 사용될 수 있다.
예시적인 처리 시스템이 도 5에 서술되었지만, 본 명세서에 서술된 주제 및 기능적 동작들의 구현은 다른 유형들의 디지털 전자 회로, 또는 본 명세서에 개시된 구조들 및 그 구조적 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서, 또는 그들 중 하나 이상의 조합들로 구현될 수 있다.
본 명세서에 기술된 주제 및 동작들의 실시예들은 디지털 전자 회로, 또는 본 명세서에 개시된 구조들 및 그 구조적 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 서술된 주제의 실시예들은 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 작동을 제어하기 위해 하나 이상의 컴퓨터 프로그램, 즉, 컴퓨터 저장 매체(또는 매체)에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 처리 장치에 의한 실행을 위해 적절한 수신기 장치로의 전송을 위한 정보를 인코딩하도록 생성되는 인공적으로 생성된 전파 신호, 예를 들어 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 디바이스, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 이에 포함될 수 있다. 더욱이, 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파 신호로 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지가 될 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 물리적 컴포넌트들 또는 매체(예: 다수의 CD들, 디스크들 또는 기타 저장 디바이스들)일 수 있거나 이에 포함될 수 있다.
본 명세서에 서술된 동작들은 하나 이상의 컴퓨터 판독 가능 저장 디바이스들에 저장되거나 다른 소스들로부터 수신된 데이터에 대해 데이터 처리 장치에 의해 수행되는 동작으로 구현될 수 있다.
"데이터 처리 장치"라는 용어는, 예를 들어, 프로그램가능한 프로세서, 컴퓨터, 시스템 온 칩(system on chip), 또는 다수의 것들, 또는 이들의 조합을 포함하여 데이터를 처리하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 장치는 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 특수 목적 논리 회로를 포함할 수 있다. 이 장치는 하드웨어 외에도 해당 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드(예: 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 플랫폼 간 런타임 환경, 가상 머신 또는 이들의 조합을 구성하는 코드)를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램 (프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일되거나 해석된 언어를 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립 실행형 프로그램이나 모듈, 구성 요소, 서브루틴, 객체 또는 컴퓨팅 환경에서 사용하기에 적합한 다른 유닛을 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수 있지만, 반드시 그렇지는 않다. 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일의 일부(예를 들어 마크 업 언어 문서에 저장된 하나 이상의 스크립트), 해당 프로그램 전용 단일 파일 또는 여러 조정 파일(예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드 부분을 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크로 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스 및 로직 흐름은 입력 데이터에 대해 작동하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 컴퓨터에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 FPGA (필드 프로그래밍 가능 게이트 어레이), ASIC (애플리케이션 특정 집적 회로)와 같은 특수 목적 논리 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서들은 예를 들어 범용 및 특수 목적 마이크로프로세서 모두를 포함한다. 일반적으로, 프로세서는 읽기 전용 메모리나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 요소는 명령어들에 따라 동작을 수행하기 위한 프로세서와 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어 자기, 광자기 디스크, 또는 광 디스크로부터 데이터를 수신하거나 이들로 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 연결된다. 그러나, 컴퓨터에는 그러한 장치가 필요하지 않다. 더욱이, 컴퓨터는 다른 장치, 예를 들어, 이동 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 장치(예: USB(범용 직렬 버스) 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하는데 적합한 디바이스들에는 모든 형태의 비휘발성 메모리, 미디어 및 메모리 디바이스가 포함되고, 예를 들어 반도체 메모리 장치, 예를 들어 EPROM, EEPROM 및 플래시 메모리 장치를 포함하고; 자기 디스크, 예를 들어 내부 하드 디스크 또는 이동식 디스크; 자기 광 디스크; 및 CD ROM 및 DVD-ROM 디스크들을 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호작용을 제공하기 위해, 본 명세서에 기술된 주제의 실시예는 사용자에게 정보를 표시하고 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 장치(예: 마우스 또는 트랙볼)를 위한 것인 디스플레이 장치, 예를 들어, CRT(음극선관) 또는 LCD(액정 디스플레이) 모니터를 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 장치를 사용하여 사용자와의 상호 작용도 제공할 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 모든 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자가 사용하는 장치로 문서를 보내고 문서를 수신하여 사용자와 상호 작용할 수 있다. 예를 들어, 웹 브라우저에서 수신된 요청에 대한 응답으로 사용자 클라이언트 장치의 웹 브라우저에 웹 페이지를 전송한다.
본 명세서에 설명된 주제의 실시 예는 백 엔드 컴포넌트를 포함하는 컴퓨팅 시스템, 예컨대 데이터 서버 또는 미들웨어 컴포넌트, 예컨대 애플리케이션 서버를 포함하거나 프론트 엔드 구성 요소, 예컨대 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터를 포함하는 컴퓨팅 시스템에서 구현될 수 있고, 이를 통해 사용자가 본 명세서에 설명된 주제의 구현 또는 이러한 백 엔드, 미들웨어 또는 프런트 엔드 컴포넌트의 하나 이상의 조합과 상호 작용할 수 있다. 시스템의 컴포넌트는 디지털 데이터 통신의 모든 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호 연결될 수 있다. 통신 네트워크의 예로는 근거리 네트워크("LAN") 및 광역 네트워크("WAN"), 인터 네트워크(예: 인터넷), 피어 투 피어 네트워크(예: 애드 혹 피어- 투피어 네트워크)를 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램 덕분에 발생한다. 일부 실시예에서, 서버는 데이터(예를 들어, HTML 페이지)를 클라이언트 장치로 전송한다(예를 들어, 클라이언트 장치에 데이터를 표시하고 클라이언트 장치와 상호작용하는 사용자로부터 사용자 입력을 수신하기 위해). 클라이언트 장치에서 생성된 데이터(예: 사용자 상호 작용의 결과)는 서버에서 클라이언트 장치로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부사항을 포함하지만, 이는 임의의 발명 또는 청구될 수 있는 것의 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 발명의 특정 실시예에 특정한 특징의 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에 설명된 특정 특징은 단일 실시예에서 조합하여 구현될 수도 있다. 역으로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 개별적으로 또는 임의의 적절한 하위 조합으로 다중 실시예에서 구현될 수 있다. 더욱이, 특징이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에 그렇게 청구될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징이 어떤 경우에는 그 조합으로부터 실행될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형을 지향할 수 있다.
유사하게, 동작이 특정 순서로 도면에 도시되어 있지만, 이는 그러한 동작이 도시된 특정 순서 또는 순차적인 순서로 수행되거나, 바람직한 결과의 달성을 위해 모든 예시된 동작이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서는 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시 예에서 다양한 시스템 모듈 및 구성 요소의 분리는 모든 실시 예에서 그러한 분리를 필요로 하는 것으로 이해되어서는 안되며, 설명된 프로그램 구성 요소 및 시스템은 일반적으로 단일 소프트웨어 제품으로 통합될 수 있거나 또는 여러 소프트웨어 제품으로 패키징 될 수 있다고 이해되어야 한다.
따라서, 주제의 특정 실시예가 서술되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 어떤 경우에는 청구범위에 인용된 조치가 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 또한, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하는 것은 아니다. 특정 구현에서 멀티태스킹 및 병렬 처리가 유리할 수 있다.

Claims (38)

  1. 컴퓨터로 구현되는 방법으로서,
    클라이언트 디바이스로부터 하나 이상의 신뢰 토큰에 대한 요청을 수신하는 단계 - 상기 요청은:
    (i) 상기 클라이언트 디바이스로부터 획득된 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 요청을 개시한 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나; 및
    상기 하나 이상의 신뢰 토큰 각각에 대한 각각의 논스(nonce)를 포함함 - 와;
    (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계와;
    상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 것에 응답하여:
    상기 신뢰 토큰에 대한 논스를 사용하여 상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계와; 그리고
    상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함하며,
    각각의 신뢰 토큰에 대한 논스는 블라인드 서명 방식을 사용하여 블라인드된 블라인드 논스이고,
    상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계는, 블라인드 서명 방식을 사용하여, 상기 신뢰 토큰에 대한 블라인드 논스의 블라인드 서명을 생성하는 단계를 포함하고, 상기 신뢰 토큰은 상기 블라인드 논스 및 상기 블라인드 논스의 블라인드 서명을 포함하는 것을 특징으로 하는 컴퓨터로 구현되는 방법.
  2. 제1항에 있어서,
    (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는:
    상기 하나 이상의 디바이스-레벨 사기 탐지 신호에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스임을 결정하는 단계와;
    상기 애플리케이션의 코드를 나타내는 데이터에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와; 그리고
    상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스이고 그리고 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  3. 제1항에 있어서,
    상기 애플리케이션의 코드를 나타내는 데이터는 상기 애플리케이션의 코드의 암호화 해시를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  4. 제1항에 있어서,
    상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는:
    상기 애플리케이션의 코드에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와;
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  5. 제2항에 있어서,
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는,
    상기 애플리케이션 코드의 암호화 해시를 상기 애플리케이션의 공식 빌드들의 코드의 암호화 해시들과 비교하는 단계와; 그리고
    상기 애플리케이션의 코드의 암호화 해시가 상기 애플리케이션의 공식 빌드의 코드의 암호화 해시와 매칭하는 것에 응답하여 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  6. 제2항에 있어서,
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는, 상기 애플리케이션이 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서가 상기 애플리케이션에 대해 발행되었음을 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서,
    상환을 위해 주어진 신뢰 토큰을 포함하는 상환 요청을 상기 클라이언트 디바이스로부터 수신하는 단계 - 상기 주어진 신뢰 토큰은 블라인드되지 않은 논스 및 상기 논스의 블라인드 버전에 기초하여 생성된 블라인드 서명을 포함함 - 와;
    상기 블라인드되지 않은 논스 및 상기 블라인드 서명 방식을 사용하여 상기 주어진 신뢰 토큰의 블라인드 서명을 검증하는 단계와; 그리고
    상기 블라인드된 서명을 검증하는 것에 응답하여, 상기 주어진 신뢰 토큰에 대한 서명된 상환 기록을 상기 클라이언트 디바이스에 전송하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  10. 제1항에 있어서,
    상기 요청은 상기 클라이언트 디바이스에 대한 공개 키를 더 포함하고, 상기 방법은 상기 클라이언트 디바이스에 대한 공개 키를 사용하여 하나 이상의 신뢰 토큰 각각을 암호화하는 단계를 더 포함하고, 그리고 상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계는 상기 하나 이상의 암호화된 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  11. 제1항에 있어서,
    상기 요청은 상기 클라이언트 디바이스에 대한 디바이스 식별자를 포함하고, 상기 방법은 상기 디바이스 식별자를 사용하여 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록을 유지하는 단계를 더 포함하고, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는, 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  12. 제11항에 있어서,
    상기 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계는, 상기 디바이스-레벨 사기 탐지 신호들, 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록 및 주어진 기간 동안 클라이언트 디바이스에 의해 요청된 다수의 신뢰 토큰들의 조합에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함하는 것을 특징으로 하는
    컴퓨터로 구현되는 방법.
  13. 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금 제1-6 및 9-12항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 저장하는 저장 디바이스들을 포함하는 것을 특징으로 하는
    시스템.
  14. 하나 이상의 프로세서에 의해 실행될 때, 하나 이상의 프로세서로 하여금 제1-6 및 9-12항 중 어느 한 항의 방법을 수행하게 하는 명령어들을 저장하는 컴퓨터 판독가능한 매체.
  15. 디바이스들 및 애플리케이션들의 무결성을 검증하는 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 하나 이상의 컴퓨터 판독가능한 매체를 포함하고,
    상기 동작들은:
    클라이언트 디바이스로부터 하나 이상의 신뢰 토큰에 대한 요청을 수신하는 단계 - 상기 요청은:
    (i) 상기 클라이언트 디바이스로부터 획득된 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 요청을 개시한 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나; 및
    상기 하나 이상의 신뢰 토큰 각각에 대한 각각의 논스(nonce)를 포함함 - 와;
    (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계와;
    상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 것에 응답하여:
    상기 신뢰 토큰에 대한 논스를 사용하여 상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계와; 그리고
    상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함하며,
    각각의 신뢰 토큰에 대한 논스는 블라인드 서명 방식을 사용하여 블라인드된 블라인드 논스이고,
    상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계는, 블라인드 서명 방식을 사용하여, 상기 신뢰 토큰에 대한 블라인드 논스의 블라인드 서명을 생성하는 단계를 포함하고, 상기 신뢰 토큰은 상기 블라인드 논스 및 상기 블라인드 논스의 블라인드 서명을 포함하는 것을 특징으로 하는 시스템.
  16. 제15항에 있어서,
    (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는:
    상기 하나 이상의 디바이스-레벨 사기 탐지 신호에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스임을 결정하는 단계와;
    상기 애플리케이션의 코드를 나타내는 데이터에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와; 그리고
    상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스이고 그리고 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  17. 제15항에 있어서,
    상기 애플리케이션의 코드를 나타내는 데이터는 상기 애플리케이션의 코드의 암호화 해시를 포함하는 것을 특징으로 하는
    시스템.
  18. 제15항에 있어서,
    상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는:
    상기 애플리케이션의 코드에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와;
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  19. 제18항에 있어서,
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는,
    상기 애플리케이션 코드의 암호화 해시를 상기 애플리케이션의 공식 빌드들의 코드의 암호화 해시들과 비교하는 단계와; 그리고
    상기 애플리케이션의 코드의 암호화 해시가 상기 애플리케이션의 공식 빌드의 코드의 암호화 해시와 매칭하는 것에 응답하여 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  20. 제18항에 있어서,
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는, 상기 애플리케이션이 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서가 상기 애플리케이션에 대해 발행되었음을 결정하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  21. 삭제
  22. 삭제
  23. 제15항에 있어서,
    상기 동작들은:
    상환을 위해 주어진 신뢰 토큰을 포함하는 상환 요청을 상기 클라이언트 디바이스로부터 수신하는 단계 - 상기 주어진 신뢰 토큰은 블라인드되지 않은 논스 및 상기 논스의 블라인드 버전에 기초하여 생성된 블라인드 서명을 포함함 - 와;
    상기 블라인드되지 않은 논스 및 상기 블라인드 서명 방식을 사용하여 상기 주어진 신뢰 토큰의 블라인드 서명을 검증하는 단계와; 그리고
    상기 블라인드된 서명을 검증하는 것에 응답하여, 상기 주어진 신뢰 토큰에 대한 서명된 상환 기록을 상기 클라이언트 디바이스에 전송하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  24. 제15항에 있어서,
    상기 요청은 상기 클라이언트 디바이스에 대한 공개 키를 더 포함하고, 상기 동작들은 상기 클라이언트 디바이스에 대한 공개 키를 사용하여 하나 이상의 신뢰 토큰 각각을 암호화하는 단계를 더 포함하고, 그리고 상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계는 상기 하나 이상의 암호화된 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  25. 제15항에 있어서,
    상기 요청은 상기 클라이언트 디바이스에 대한 디바이스 식별자를 포함하고, 상기 동작들은 상기 디바이스 식별자를 사용하여 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록을 유지하는 단계를 더 포함하고, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는, 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  26. 제15항에 있어서,
    상기 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계는, 상기 디바이스-레벨 사기 탐지 신호들, 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록 및 주어진 기간 동안 클라이언트 디바이스에 의해 요청된 다수의 신뢰 토큰들의 조합에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함하는 것을 특징으로 하는
    시스템.
  27. 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 동작들을 수행하게 하는 명령어들을 저장하는 하나 이상의 비일시적인 컴퓨터 판독가능한 매체를 포함하고,
    상기 동작들은:
    클라이언트 디바이스로부터 하나 이상의 신뢰 토큰에 대한 요청을 수신하는 단계 - 상기 요청은:
    (i) 상기 클라이언트 디바이스로부터 획득된 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 요청을 개시한 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나; 및
    상기 하나 이상의 신뢰 토큰 각각에 대한 각각의 논스(nonce)를 포함함 - 와;
    (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계와;
    상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 것에 응답하여:
    상기 신뢰 토큰에 대한 논스를 사용하여 상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계와; 그리고
    상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함하며,
    각각의 신뢰 토큰에 대한 논스는 블라인드 서명 방식을 사용하여 블라인드된 블라인드 논스이고,
    상기 하나 이상의 신뢰 토큰 각각을 생성하는 단계는, 블라인드 서명 방식을 사용하여, 상기 신뢰 토큰에 대한 블라인드 논스의 블라인드 서명을 생성하는 단계를 포함하고, 상기 신뢰 토큰은 상기 블라인드 논스 및 상기 블라인드 논스의 블라인드 서명을 포함하는 것을 특징으로 하는 하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  28. 제27항에 있어서,
    (i) 상기 하나 이상의 디바이스-레벨 사기 탐지 신호 또는 (ii) 상기 애플리케이션의 코드를 나타내는 데이터 중 적어도 하나에 기초하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는:
    상기 하나 이상의 디바이스-레벨 사기 탐지 신호에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스임을 결정하는 단계와;
    상기 애플리케이션의 코드를 나타내는 데이터에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와; 그리고
    상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스이고 그리고 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  29. 제27항에 있어서,
    상기 애플리케이션의 코드를 나타내는 데이터는 상기 애플리케이션의 코드의 암호화 해시를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  30. 제27항에 있어서,
    상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는:
    상기 애플리케이션의 코드에 기초하여, 상기 애플리케이션이 신뢰할 수 있는 애플리케이션임을 결정하는 단계와;
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 것에 응답하여, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  31. 제30항에 있어서,
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는,
    상기 애플리케이션 코드의 암호화 해시를 상기 애플리케이션의 공식 빌드들의 코드의 암호화 해시들과 비교하는 단계와; 그리고
    상기 애플리케이션의 코드의 암호화 해시가 상기 애플리케이션의 공식 빌드의 코드의 암호화 해시와 매칭하는 것에 응답하여 상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  32. 제30항에 있어서,
    상기 애플리케이션이 신뢰할 수 있는 애플리케이션이라고 결정하는 단계는, 상기 애플리케이션이 악성 애플리케이션 로직을 포함하지 않는다는 것을 나타내는 인증서가 상기 애플리케이션에 대해 발행되었음을 결정하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  33. 삭제
  34. 삭제
  35. 제27항에 있어서,
    상기 동작들은:
    상환을 위해 주어진 신뢰 토큰을 포함하는 상환 요청을 상기 클라이언트 디바이스로부터 수신하는 단계 - 상기 주어진 신뢰 토큰은 블라인드되지 않은 논스 및 상기 논스의 블라인드 버전에 기초하여 생성된 블라인드 서명을 포함함 - 와;
    상기 블라인드되지 않은 논스 및 상기 블라인드 서명 방식을 사용하여 상기 주어진 신뢰 토큰의 블라인드 서명을 검증하는 단계와; 그리고
    상기 블라인드된 서명을 검증하는 것에 응답하여, 상기 주어진 신뢰 토큰에 대한 서명된 상환 기록을 상기 클라이언트 디바이스에 전송하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  36. 제27항에 있어서,
    상기 요청은 상기 클라이언트 디바이스에 대한 공개 키를 더 포함하고, 상기 동작들은 상기 클라이언트 디바이스에 대한 공개 키를 사용하여 하나 이상의 신뢰 토큰 각각을 암호화하는 단계를 더 포함하고, 그리고 상기 하나 이상의 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계는 상기 하나 이상의 암호화된 신뢰 토큰을 상기 클라이언트 디바이스에 제공하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  37. 제27항에 있어서,
    상기 요청은 상기 클라이언트 디바이스에 대한 디바이스 식별자를 포함하고, 상기 동작들은 상기 디바이스 식별자를 사용하여 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록을 유지하는 단계를 더 포함하고, 상기 클라이언트 디바이스에 상기 하나 이상의 신뢰 토큰을 발행하도록 결정하는 단계는, 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
  38. 제27항에 있어서,
    상기 디바이스-레벨 사기 탐지 신호들과 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록의 조합에 기초하여 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계는, 상기 디바이스-레벨 사기 탐지 신호들, 상기 클라이언트 디바이스에 대한 신뢰성의 이력 기록 및 주어진 기간 동안 클라이언트 디바이스에 의해 요청된 다수의 신뢰 토큰들의 조합에 기초하여, 상기 클라이언트 디바이스가 신뢰할 수 있는 디바이스라고 결정하는 단계를 포함하는 것을 특징으로 하는
    하나 이상의 비일시적인 컴퓨터 판독가능한 매체.
KR1020217029299A 2020-05-21 2020-12-11 디바이스 및 애플리케이션 무결성 검증 KR102536358B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL274840A IL274840B1 (en) 2020-05-21 2020-05-21 Device and application integrity verification
IL274840 2020-05-21
PCT/US2020/064602 WO2021236159A1 (en) 2020-05-21 2020-12-11 Verifying device and application integrity

Publications (2)

Publication Number Publication Date
KR20210144687A KR20210144687A (ko) 2021-11-30
KR102536358B1 true KR102536358B1 (ko) 2023-05-26

Family

ID=78707447

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217029299A KR102536358B1 (ko) 2020-05-21 2020-12-11 디바이스 및 애플리케이션 무결성 검증

Country Status (7)

Country Link
US (1) US11886569B2 (ko)
EP (1) EP3938939B1 (ko)
JP (1) JP7189372B2 (ko)
KR (1) KR102536358B1 (ko)
CN (1) CN113973503A (ko)
IL (1) IL274840B1 (ko)
WO (1) WO2021236159A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102626841B1 (ko) 2021-12-28 2024-01-19 (주)드림시큐리티 동적 라이브러리의 자가 무결성 검증 방법 및 이를 위한 장치
US11695772B1 (en) * 2022-05-03 2023-07-04 Capital One Services, Llc System and method for enabling multiple auxiliary use of an access token of a user by another entity to facilitate an action of the user

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020026576A1 (en) * 2000-08-18 2002-02-28 Hewlett-Packard Company Apparatus and method for establishing trust
WO2008027653A1 (en) * 2006-08-28 2008-03-06 Motorola, Inc. Method and apparatus for conforming integrity of a client device
JP2020513183A (ja) * 2017-04-14 2020-04-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データのトークン化

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4168679B2 (ja) 2002-06-26 2008-10-22 ソニー株式会社 コンテンツ利用管理システム、コンテンツを利用し又は提供する情報処理装置又は情報処理方法、並びにコンピュータ・プログラム
US9208318B2 (en) 2010-08-20 2015-12-08 Fujitsu Limited Method and system for device integrity authentication
US9479571B2 (en) * 2012-09-18 2016-10-25 Google Inc. Systems, methods, and computer program products for interfacing multiple service provider trusted service managers and secure elements
EP3895402A4 (en) 2018-12-11 2022-03-02 Visa International Service Association TRUST TOKENS FOR RESOURCE ACCESS
US11165579B2 (en) * 2019-08-29 2021-11-02 American Express Travel Related Services Company, Inc. Decentralized data authentication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020026576A1 (en) * 2000-08-18 2002-02-28 Hewlett-Packard Company Apparatus and method for establishing trust
WO2008027653A1 (en) * 2006-08-28 2008-03-06 Motorola, Inc. Method and apparatus for conforming integrity of a client device
JP2020513183A (ja) * 2017-04-14 2020-04-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データのトークン化

Also Published As

Publication number Publication date
JP2022536820A (ja) 2022-08-19
US11886569B2 (en) 2024-01-30
JP7189372B2 (ja) 2022-12-13
US20230060782A1 (en) 2023-03-02
CN113973503A (zh) 2022-01-25
IL274840A (en) 2021-12-01
EP3938939A1 (en) 2022-01-19
EP3938939B1 (en) 2023-04-26
WO2021236159A1 (en) 2021-11-25
KR20210144687A (ko) 2021-11-30
IL274840B1 (en) 2024-03-01

Similar Documents

Publication Publication Date Title
EP3887981B1 (en) Verifying user interactions on a content platform
KR102536358B1 (ko) 디바이스 및 애플리케이션 무결성 검증
US11949688B2 (en) Securing browser cookies
JP2023096089A (ja) グループ署名による匿名イベント証明
KR102608325B1 (ko) 클라이언트 장치에서 통신의 무결성 보호
KR102639228B1 (ko) 익명 이벤트 증명
KR102652364B1 (ko) 다중 수신자 보안 통신
CN116348874B (zh) 使用鉴证令牌的安全归因的方法、系统以及介质
CN113015974B (zh) 针对隐私保护的可验证同意
US20230308277A1 (en) Anonymous authentication with token redemption
CN113015974A (zh) 针对隐私保护的可验证同意

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right