KR102639228B1 - 익명 이벤트 증명 - Google Patents

익명 이벤트 증명 Download PDF

Info

Publication number
KR102639228B1
KR102639228B1 KR1020227006853A KR20227006853A KR102639228B1 KR 102639228 B1 KR102639228 B1 KR 102639228B1 KR 1020227006853 A KR1020227006853 A KR 1020227006853A KR 20227006853 A KR20227006853 A KR 20227006853A KR 102639228 B1 KR102639228 B1 KR 102639228B1
Authority
KR
South Korea
Prior art keywords
device integrity
client device
public key
token
integrity
Prior art date
Application number
KR1020227006853A
Other languages
English (en)
Other versions
KR20220042192A (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 KR20220042192A publication Critical patent/KR20220042192A/ko
Application granted granted Critical
Publication of KR102639228B1 publication Critical patent/KR102639228B1/ko

Links

Classifications

    • 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/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/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/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/3249Cryptographic 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 RSA or related signature schemes, e.g. Rabin scheme
    • 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/3255Cryptographic 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 group based signatures, e.g. ring or threshold 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
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)

Abstract

방법, 시스템 및 컴퓨터 매체는 클라이언트 디바이스로부터 전송된 통신의 무결성을 보호하는 동시에 클라이언트 디바이스 또는 해당 사용자를 추적하는데 사용될 수 있는 안정적인 디바이스 식별자의 사용을 방지하는 증명 토큰을 제공한다. 하나의 접근법에서, 클라이언트 디바이스는 디바이스 무결성 컴퓨팅 시스템으로부터 N개의 디바이스 무결성 엘리먼트들의 배치를 수신할 수 있으며, 각각은 상이한 공개 키에 대응한다. N개의 디바이스 엘리먼트들은 디바이스 무결성 컴퓨팅 시스템에 의해 서명될 수 있다. 디바이스 무결성 컴퓨팅 시스템에 의한 서명은 블라인드 서명 방식으로 서명될 수 있다. 클라이언트 디바이스는 클라이언트 디바이스에 의해 생성된 증명 토큰들의 양에 제한을 부과하는 조절기(throttler)를 포함할 수 있다.

Description

익명 이벤트 증명
클라이언트 디바이스는 인터넷과 같은 공용 네트워크를 통해 요청 및 기타 데이터를 전송한다. 이러한 통신은 통신을 가로채는 당사자 및/또는 통신을 수신하여 다른 당사자에게 전달하는 중개자와 같은 다른 당사자에 의해 변경될 수 있다.
클라이언트 디바이스는 또한 사용자 모르게 또는 승인 없이 사기성 요청을 보낼 수 있는 바이러스 및 맬웨어와 같은 악의적인 공격의 대상이 된다. 또한 다른 당사자는 클라이언트 디바이스를 에뮬레이트하여 클라이언트 디바이스로부터 시작된 것처럼 보이지만 실제로는 다른 당사자의 디바이스에서 오는 요청을 보낼 수 있다.
다양한 인증 기법을 사용하여 사기 및 남용을 방지하고 공용 네트워크를 통한 트랜잭션의 무결성을 보호할 수 있다. 동시에 이러한 인증 기법은 개인 정보 보호 문제를 내포할 수 있다. 예를 들어, 클라이언트 디바이스의 사용자는 클라이언트 디바이스 또는 이러한 클라이언트 디바이스의 사용자를 추적하는데 사용될 수 있는 정보(예: 안정적인 디바이스 식별자)를 공유하기를 원하지 않을 수 있으며, 데이터 제공자는 그러한 정보의 수신 또는 취급을 막는 프라이버시 보호 표준 하에서 동작할 수 있다.
본 명세서는 클라이언트 디바이스 또는 그 사용자를 추적하는데 사용될 수 있는 안정적인 디바이스 식별자의 사용을 피하는 동시에 클라이언트 디바이스로부터 전송된 통신의 무결성을 보호하기 위한 인증 기법과 관련된 기술을 설명한다.
일반적으로, 본 명세서에 기술된 주제의 제1 혁신적 양태는 컴퓨터로 구현되는 방법으로 구현될 수 있고, 상기 방법은: 디바이스 무결성 컴퓨팅 시스템에 의해, 클라이언트 디바이스로부터, N개의 디바이스 무결성 엘리먼트들에 대한 요청을 수신하는 단계, 상기 요청은 상기 클라이언트 디바이스에 대한 디바이스 레벨 사기 탐지 신호를 포함하고, N개의 디바이스 무결성 엘리먼트들 각각에 대해, 공개 키 데이터는 (i) 상기 디바이스 무결성 엘리먼트에 대한 개별 공개 키 또는 (ii) 상기 디바이스 무결성 엘리먼트에 대한 개별 공개 키의 파생물 중 적어도 하나를 포함하며; 상기 디바이스 무결성 컴퓨팅 시스템에 의해, 상기 디바이스 레벨 사기 탐지 신호에 적어도 기초하여, 상기 클라이언트 디바이스의 신뢰도에 대한 판정을 결정하는 단계; 상기 N개의 디바이스 무결성 엘리먼트들 각각에 대해, 상기 디바이스 무결성 컴퓨팅 시스템에 의해, 상기 디바이스 무결성 엘리먼트에 대한 상기 공개 키 데이터를 적어도 사용하여 상기 디바이스 무결성 엘리먼트를 생성하는 단계, 상기 디바이스 무결성 엘리먼트는 상기 디바이스 무결성 엘리먼트에 대한 상기 공개 키 데이터를 포함하는 콘텐츠의 세트에 기초하여 생성된 디지털 서명을 포함하며; 및 상기 디바이스 무결성 컴퓨팅 시스템에 의해, 상기 N개의 디바이스 무결성 엘리먼트를 상기 클라이언트 디바이스에 전송하는 단계를 포함한다. N은 예를 들어 2보다 크거나 같은 정수일 수 있다. 이 양태의 다른 구현예는 상기 방법의 양태를 수행하도록 구성된 대응 장치, 시스템 및 컴퓨터 저장 디바이스에 인코딩된 컴퓨터 프로그램을 포함한다.
일부 양태에서, 각 디바이스 무결성 엘리먼트는 상기 디바이스 무결성 엘리먼트에 대한 상기 콘텐츠의 세트를 포함하는 개별 디바이스 무결성 토큰을 포함하고, 상기 디바이스 무결성 엘리먼트에 대한 상기 콘텐츠의 세트는 신뢰도 판정이 결정된 시간을 표시하는 타임스탬프 및 상기 디바이스 무결성 엘리먼트에 대한 공개 키 데이터를 포함하며; 그리고 각각의 디바이스 무결성 엘리먼트를 생성하는 단계는 상기 디바이스 무결성 컴퓨팅 시스템의 개인 키를 사용하여 상기 디바이스 무결성 엘리먼트에 대한 콘텐츠의 세트를 디지털 서명하는 단계를 포함한다. 디바이스 무결성 엘리먼트에 대한 콘텐츠 세트는 신뢰도 판정을 추가로 포함할 수 있다.
일부 양태에서, 각각의 디바이스 무결성 엘리먼트를 생성하는 단계는 블라인드 서명 방식을 사용하여, 상기 디바이스 무결성 엘리먼트에 대한 공개 키 데이터의 블라인드 서명을 생성하는 단계를 포함하고, 상기 디바이스 무결성 엘리먼트는 블라인드 서명이다. 상기 방법은 클라이언트 디바이스들에 대한 M개의 신뢰도 레벨들에 대응하는 M개의 블라인드 서명 검증 키들을 퍼블리시하는 단계 및 M개의 검증 키들에 대응하는 M개의 개별 서명 키들을 보유하는 단계를 더 포함한다.
일부 양태에서, 상기 신뢰도 판정을 결정하는 단계는 상기 M개의 신뢰도 레벨들로부터 선택된 신뢰도 레벨을 상기 클라이언트 디바이스에 할당하는 단계를 포함한다. 예를 들면, 각각의 디바이스 무결성 엘리먼트에 대한 공개 키 데이터는 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 파생물을 포함하고, 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 파생물은 상기 블라인드 서명 방식을 사용하여 블라인드화된 블라인드 공개 키를 포함한다. 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 파생물은 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 블라인드 절단 암호화 해시를 포함할 수 있다.
일부 양태에서, 블라인드 서명 방식은 비공개적으로 검증가능한 블라인드 서명 방식을 포함한다. 예를 들어, 개인적으로 검증가능한 블라인드 서명 방식은 IETF VOPRF 블라인드 서명 방식일 수 있다.
다른 양태에서, 블라인드 서명 방식은 공개적으로 검증가능한 블라인드 서명 방식을 포함한다. 예를 들어, 공개적으로 검증가능한 블라인드 서명 방식은 블라인드 RSA 서명 방식일 수 있다.
본 명세서에 기술된 발명의 다른 혁신적 양태는 클라이언트 디바이스에 의해 수행되는 방법에 수록될 수 있고, 상기 방법은: 익명 인증서에 대한 제1 요청을 디바이스 무결성 컴퓨팅 시스템에 전송하는 단계, 상기 요청은 상기 클라이언트 디바이스에 대한 디바이스-레벨 사기 탐지 신호를 포함하며; 상기 디바이스 무결성 컴퓨팅 시스템으로부터, 상기 익명 인증서를 수신하는 단계, 상기 익명 인증서는 상기 디바이스-레벨 사기 탐지 신호에 적어도 기초하여 디바이스 신뢰도 그룹들의 세트로부터 선택된 주어진 서명 그룹에 대응하며, 각 디바이스 신뢰도 그룹은 신뢰도의 각각의 카테고리에 대응하며; (i) 제2 요청 및 익명 증명 토큰의 생성 시간을 표시하는 증명 토큰 생성 타임스탬프를 포함하는 데이터의 세트 (ii) 익명 인증서 포함하는 그룹 서명 방식을 사용하여 생성된 데이터의 세트의 디지털 서명을 포함하는 익명 증명 토큰을 생성하는 단계; 및 상기 증명 토큰을 수신자에게 전송하는 단계를 포함한다. 이 양태의 다른 구현예는 상기 방법의 양태를 수행하도록 구성된 대응 장치, 시스템 및 컴퓨터 저장 디바이스에 인코딩된 컴퓨터 프로그램을 포함한다.
일부 양태에서, 그룹 서명 방식은 직접 익명 증명(DAA) 서명 방식이다. DAA 서명 방식은 ECC(타원 곡선 암호화) DAA 서명 방식일 수 있다. ECC DAA 서명 방식은 Barreto-Naehrig 곡선이 있는 ECC DAA 서명 방식일 수 있다.
일부 양태에서, 익명 인증서는 클라이언트 디바이스가 주어진 서명 그룹에 취소 불가능하게 할당되었음을 표시하는 취소 불가능한 익명 인증서이다.
일부 양태에서, 디바이스 신뢰도 그룹들의 세트는 구성원으로서 제1 정도의 신뢰도를 갖는 디바이스들을 포함하는 제1 신뢰도 그룹 및 구성원으로서 제2 정도의 신뢰도를 갖는 디바이스들을 포함하는 제2 신뢰도 그룹을 적어도 포함하며, 제2 정도의 신뢰도은 제1 정도의 신뢰도보다 작으며, 주어진 그룹은 제1 그룹 또는 제2 서명 그룹 중 하나이다. 제1 및 제2 신뢰도 그룹은 디바이스 무결성 컴퓨팅 시스템에 의해 퍼블리시된 대응하는 제1 및 제2 그룹 공개 키를 가질 수 있다.
일부 양태에서, 방법은 클라이언트 디바이스 상의 보안 개인 키스토어에 익명 인증서를 저장하는 단계를 더 포함한다.
일부 양태에서, 토큰 생성 타임스탬프는 약 1밀리초 미만 또는 약 1마이크로초 미만인 시간 분해능을 갖는다.
일부 양태에서, 방법은 증명 토큰 수량 제한을 표시하는 정보를 수신하는 단계; 생성하기 전에, 생성이 증명 토큰 수량 제한을 초과하지 않는지 검증하는 단계를 더 포함한다. 증명 토큰 수량 제한은 선택된 시간 프레임 내에 클라이언트 디바이스로부터 선택된 목적지 도메인으로 보내질 수 있는 익명 토큰의 수에 대한 제한일 수 있다; 또는 증명 토큰 수량 제한은 선택된 시간 프레임 내에 클라이언트 디바이스의 하나 이상의 선택된 애플리케이션으로부터 선택된 목적지 도메인으로 보내질 수 있는 익명 토큰의 수에 대한 제한일 수 있다; 또는 증명 토큰 수량 제한은 선택된 시간 프레임 내에 클라이언트 디바이스로부터 선택된 목적지 도메인 내에서 선택된 엔드포인트로 보내질 수 있는 익명 토큰의 수에 대한 제한일 수 있다; 또는 증명 토큰 수량 제한은 선택된 시간 프레임 내에 클라이언트 디바이스의 하나 이상의 선택된 애플리케이션으로부터 선택된 목적지 도메인 내의 선택된 엔드포인트로 보내질 수 있는 익명 토큰의 수에 대한 제한일 수 있다; 또는 이들의 임의의 조합일 수 있다.
본 명세서에 기술된 본 발명은 다음의 이점들을 실현하도록 특정한 실시예들에서 구현될 수 있다.
증명 토큰을 사용하여 클라이언트 디바이스로부터 데이터를 전송하면 클라이언트 디바이스와 컴퓨터 또는 다른 엔터티의 다른 디바이스 간에 보안 통신 채널이 제공된다. 증명 토큰을 포함하면, 증명 토큰에 포함된 데이터의 디지털 서명은 엔터티로 하여금 증명 토큰이 생성된 후 증명 토큰의 데이터가 변경되지 않았는지 검증하게 할 수 있다. 또한 증명 토큰에 토큰 생성 시간을 포함하면 수신자로 하여금 요청이 새로운 것인지 아니면 재생 공격의 잠재적 일부인지 여부를 결정하게 할 수 있다.
증명 토큰은 또한 증명 토큰을 전송한 클라이언트 디바이스의 무결성을 표시하는 디바이스 무결성 토큰을 포함할 수 있으며, 이를 통해 증명 토큰의 수신자(들)로 하여금 데이터가 예를 들어 에뮬레이터나 손상된 디바이스가 아닌 신뢰할 수 있는 클라이언트 디바이스로부터 왔는지 검증하게 한다. 디바이스 무결성 토큰은 신뢰 디바이스 분석기(예: 서드파티 디바이스 분석기)에 의해 생성되고 디지털 서명될 수 있으므로, 증명 토큰의 수신자는 클라이언트 디바이스가 신뢰 디바이스 분석기에 의해 평가되었고 데이터가 신뢰 디바이스 분석기에 의해 생성 후 디바이스 무결성 토큰이 수정되지 않았다는 것을 검증하도록 할 수 있다.
증명 토큰은 클라이언트 디바이스로부터 전송된 통신의 무결성을 보호하지만 증명 토큰 사용과 연관된 잠재적인 프라이버시 문제가 있다. 제1 프라이버시 문제는 다수의 증명 토큰 내에서 동일한 디바이스 무결성 토큰을 재사용하면 잠재적으로 증명 토큰 수신자가 동일한 클라이언트 디바이스에 의해 전송된 다수의 요청을 상관시키고, 그 상관관계에 기초하여 사용자 데이터를 집계하게 할 수 있다는 것이다. 이 문서에 설명된 기법은 클라이언트 디바이스의 고유한 공개 키를 포함하는 다수의 디바이스 무결성 토큰을 사용함으로써 이러한 상관 관계에 대한 프라이버시를 향상시킬 수 있다. 예를 들어, 클라이언트 디바이스는 N개의 공개/개인 키 쌍의 배치를 생성한 다음 N개의 공개 키를 서드파티 디바이스 분석기에 송신하여 N개의 대응하는 디바이스 무결성 토큰의 배치를 수신할 수 있다. 그러면, 클라이언트 디바이스는 예를 들어 각 요청에 대해 새 디바이스 무결성 토큰을 사용할 수 있다; 또는 클라이언트 디바이스가 특정 시간 간격 내에서 모든 요청에 대해 동일한 디바이스 무결성 토큰을 사용할 수 있다; 또는 클라이언트 디바이스가 클라이언트 디바이스의 동일한 애플리케이션으로부터 발생한 모든 요청에 대해 동일한 디바이스 무결성 토큰을 사용할 수 있다; 또는 이들의 일부 조합일 수 있다. 각 공개 키의 사용을 제한하면 수신자가 공개 키에 기초하여 상관시킬 수 있는 요청의 양이 제한된다. 이 배치(batch) 접근법을 사용하면 프로세싱할 요청이 줄어들어 디바이스 분석기에 대한 부담을 감소시키고, 네트워크 대역폭 소비를 감소시키고, 클라이언트 디바이스가 디바이스 무결성 토큰이 필요할 때마다 디바이스 무결성 토큰에 대한 요청을 보내는 경우 도입될 디바이스 무결성 토큰을 포함할 요청을 전송하는 경우 클라이언트 디바이스에서의 지연을 감소시킨다.
제2 프라이버시 문제는 클라이언트 디바이스의 안정적인 공개 키를 디바이스 분석기와 공유하면 잠재적으로 디바이스 분석기가 클라이언트 디바이스를 추적할 수 있다는 것이다. 예를 들어, 디바이스 분석기와 공모하여 다수의 개별 증명 토큰의 수신자는 디바이스 분석기가 동일한 디바이스로부터의 동일한 배치 요청에서 해당 증명 토큰을 수신했음을 알 수 있으므로, 이러한 증명 토큰의 수신자는 동일한 클라이언트 디바이스에 의해 전송된 다수의 요청을 상관시키고, 상기 상관관계에 기초하여 사용자 데이터를 집계할 수 있다. 이 문서에 설명된 기법은 디바이스 분석기에 공개 키의 원시 값이 아닌 공개 키의 블라인드 버전을 전송함으로써 이러한 추적에 대한 프라이버시를 향상시킬 수 있다. 예를 들어, 클라이언트 디바이스는 N개의 공개-개인 키 쌍의 배치를 생성하고, N개의 공개 키(또는 공개 키의 암호화 해시)를 블라인드화한 다음 N개의 블라인드된 키를 디바이스 분석기에 보낼 수 있다; 서드파티 디바이스 분석기는 클라이언트 디바이스 공개 키의 원시 값을 수신하지 않고 N개의 대응하는 블라인드 서명의 배치를 반환한다.
본 개시의 추가 양태는 공개 키 서명 방식이 아닌 그룹 서명 방식을 사용함으로써, 신뢰 디바이스 분석기 및 증명 토큰 수신자 모두에 의한 추적에 대해 프라이버시를 향상시키는 이점을 제공할 수 있다. 예를 들어, 서드파티 디바이스 분석기는 클라이언트 디바이스를 클라이언트 디바이스의 신뢰도 레벨에 대응하는 서명 그룹에 할당하고, 클라이언트 디바이스에 서명 그룹에 대한 익명 인증서를 제공할 수 있다. 그런 다음 클라이언트는 익명 인증서가 있는 그룹 서명 방식을 사용하여 각 증명 토큰에 서명할 수 있으며, 증명 토큰 수신자는 서드파티 디바이스 분석기가 퍼블리시한 공개 그룹 키를 사용하여 익명 서명을 승인할 수 있다. 이 접근법을 사용하면, 클라이언트 디바이스의 리소스에서 많은 공개/개인 키 쌍을 생성해야 하는 부담을 덜고, 디바이스 분석기 리소스에서 각 공개 키에 대한 디바이스 무결성 토큰을 생성해야 하는 부담을 덜어준다. 이렇게 하면 각 리소스를 자유롭게 하여 다른 기능을 수행하게 할 수 있고, 디바이스 분석기가 확보된 리소스를 사용하여 더 짧은 시간에 더 많은 클라이언트 디바이스를 평가하게 할 수 있다. 따라서 그룹 서명 방식을 사용하면 공개/개인 키 쌍의 생성이 줄어들어 보다 효율적인 프로세스를 제공한다.
전술한 주제의 다양한 구성 및 이점이 도면과 관련하여 아래에 설명된다. 추가 구성 및 이점은 본 명세서 및 청구 범위에 기술된 주제로부터 명백하다.
도 1은 디지털 컴포넌트 시스템이 디지털 컴포넌트를 배포하는 환경의 블록도이다.
도 2는 N개의 디바이스 무결성 토큰의 배치를 요청하고 수신하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 3는 증명 토큰을 송수신하고 검증하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 4는 N개의 블라인드 서명된 디바이스 무결성 토큰의 배치를 요청하고 수신하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 5는 블라인드 서명된 증명 토큰을 송수신하고 검증하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 6은 서명 그룹에 대한 익명의 개인 키를 요청하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 7은 익명으로 서명된 증명 토큰을 송수신하고 검증하기 위한 예시적 프로세스를 도시하는 흐름도이다.
도 8은 공개된 토큰 수량 제한을 준수하기 위해 증명 토큰을 조절하는 예시적 프로세스를 나타내는 흐름도이다.
도 9는 예시적 컴퓨터 시스템의 블록도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 컴포넌트를 표시한다.
일반적으로, 본 명세서에 기술된 시스템 및 기법은 클라이언트 디바이스와 콘텐츠 퍼블리셔, 디지털 컴포넌트 배포 시스템, 상기 디지털 컴포넌트 배포 시스템에 의한 배포를 위한 디지털 컴포넌트를 생성하고 제공하는 디지털 컴포넌트 제공자와 같은 다른 엔터티 간 보안 통신 채널을 제공한다. 클라이언트 디바이스는 네트워크를 통한 요청 및 기타 데이터 전송과 함께 요청의 무결성과 클라이언트 디바이스의 무결성을 승인하기 위해 다른 엔터티에 의해 사용되는 증명 토큰을 제공할 수 있다. 요청은 예를 들어, 사용자의 데이터를 관리하기 위한 요청(예를 들어, 사용자 관련 데이터를 삭제하기 위한), 콘텐츠에 대한 요청 및/또는 다른 콘텐츠와 함께 제공할 디지털 컴포넌트에 대한 요청을 포함할 수 있다. 증명 토큰을 사용하여 통신 채널을 보호하면, 사기성 사용자가 사용자 데이터를 변경, 삭제 또는 액세스하거나 요청 콘텐츠를 변경하거나, 예를 들어 디지털 컴포넌트 배포 시스템 및/또는 제공자를 속이기 위한 새로운 요청을 생성할 수 없게 보장한다.
일부 접근법에서, 증명 토큰은 클라이언트 디바이스의 개인 키를 사용하여 디지털 서명될 수 있다. 클라이언트 디바이스는 개인 키를 기밀로 유지할 수 있다. 증명 토큰은 무엇보다도 개인 키, 페이로드 및 디바이스 무결성 토큰에 대응하는 공개 키를 포함할 수 있다. 디바이스 무결성 토큰은 신뢰 디바이스 무결성 시스템, 예를 들어 클라이언트 디바이스의 사용자 및 증명 토큰의 수신자와 상이한 엔터티에 의해 유지 관리되는 서드파티 디바이스 무결성 시스템에 의해 결정되는 클라이언트 디바이스의 무결성 레벨을 표시하는 판정을 포함할 수 있다. 디바이스 무결성 토큰은 또한 디바이스 무결성 토큰을 클라이언트 디바이스에 바인딩하기 위해 클라이언트 디바이스의 공개 키(또는 공개 키의 암호해시)를 포함할 수 있다.
디바이스 무결성 시스템이 기밀로 유지하는 개인 키를 사용하여 디바이스 무결성 시스템에 의해 디바이스 무결성 토큰이 디지털 서명될 수 있다. 이 개인 키에 대응하는 공개 키는 수신자에게 제공될 수 있으므로 예를 들어 공개 키를 사용하여 디바이스 무결성 토큰의 디지털 서명을 검증함으로써 클라이언트 디바이스가 디바이스 무결성 시스템에 의해 평가되었음을 신뢰하도록 할 수 있다. 두 쌍의 키를 사용하는 이 조합은 수신자가 클라이언트 디바이스의 무결성과 클라이언트 디바이스로부터 수신된 통신의 무결성을 승인할 수 있도록 하는 보안 통신 채널을 제공하고, 다른 디바이스가 그 무결성을 위조하기 위해 디바이스 무결성 토큰을 사용할 수 없도록 디바이스 무결성 토큰을 클라이언트 디바이스에 바인딩한다.
일부 접근법에서 디바이스 무결성 시스템은 디바이스 무결성 토큰에 포함시키기 위해 공개 키의 원시 데이터를 수신하지 않는다. 대신에, 클라이언트 디바이스는 블라인드 서명 방식을 사용하여 공개 키 또는 그 파생물을 블라인드화함으로써 블라인드 공개 키 또는 공개 키의 블라인드 파생물(예를 들어, 공개 키의 블라인드 절단 암호화 해시)을 보낼 수 있다. 블라인드 서명 방식을 사용하면, 디바이스 무결성 시스템은 클라이언트 디바이스의 공개 키의 원시 값을 수신하지 않고 클라이언트 디바이스의 무결성을 인증할 수 있으므로, 공개 키를 통한 잠재적인 추적 위험을 줄임으로써 클라이언트 디바이스 또는 사용자의 프라이버시를 강화할 수 있다. 디바이스 무결성 시스템은 수신자가 블라인드 서명을 검증하는데 사용할 수 있는 블라인드 서명 확인 키를 퍼블리시할 수 있다.
다른 접근법에서, 디바이스 무결성 시스템을 그룹 관리자로 사용하는 그룹 서명 방식이 사용될 수 있다. 예를 들어, 디바이스 무결성 시스템은 M개의 신뢰도 그룹에 대한 M개의 그룹 검증 키를 퍼블리시하고, M개의 신뢰도 그룹 중 하나에 클라이언트 디바이스를 할당하고, 클라이언트 디바이스에 익명 인증서를 전달할 수 있다. 클라이언트 디바이스는 익명 인증서를 사용하여 증명 토큰에 익명으로 서명할 수 있으며, 이러한 익명 서명은 퍼블리시된 그룹 검증 키를 사용하여 수신자에 의해 검증될 수 있다. 그룹 서명 방식을 사용하면, 디바이스 무결성 시스템이나 증명 토큰 수신자가 클라이언트 디바이스의 공개 키 원시 값을 받을 필요가 없으므로, 공개 키를 통한 잠재적 추적 위험을 감소시킴으로써 클라이언트 디바이스 또는 사용자의 프라이버시를 더욱 강화한다.
도 1은 디지털 컴포넌트 시스템(150)이 디지털 컴포넌트(129)를 배포하는 환경(100)의 블록도이다. 예시적 환경(100)은 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷, 모바일 네트워크 또는 이들의 조합과 같은 데이터 통신 네트워크(105)를 포함한다. 네트워크(105)는 클라이언트 디바이스(110), 퍼블리셔(130), 웹사이트(140), 디지털 컴포넌트 배포 시스템(150) 및 디바이스 무결성 시스템(170)(디바이스 무결성 컴퓨팅 시스템으로도 지칭될 수 있음)을 연결한다. 예시적 환경(100)은 많은 상이한 사용자 디바이스(110), 퍼블리셔(140), 디지털 컴포넌트 배포 시스템(150) 및 디바이스 무결성 시스템(170)을 포함할 수 있다.
웹사이트(140)는 도메인 이름과 연관된 하나 이상의 리소스(145)이며 하나 이상의 서버들에 의해 호스팅된다. 예시적 웹사이트는 텍스트, 이미지, 멀티미디어 콘텐츠 및 스크립트들과 같은 프로그래밍 엘리먼트를 포함할 수 있는 HTML 형식의 웹페이지들의 집합이다. 각 웹사이트(140)는 웹사이트(140)를 제어, 관리 및/또는 소유하는 엔터티인 퍼블리셔(130)에 의해 유지관리될 수 있다.
리소스(145)는 네트워크(105)를 통해 제공될 수 있는 임의의 데이터이다. 리소스(145)는 리소스(145)와 연관된 리소스 주소, 예를 들어 URL(Universal Resource Locator)에 의해 식별된다. 리소스는 HTML 페이지, 워드 프로세싱 문서, PDF(portable document format) 문서, 이미지, 비디오 및 피드 소스 등을 포함한다. 리소스는 단어, 문구, 이미지 및 소리와 같은 콘텐츠를 포함할 수 있으며, 내장된 정보(예: 하이퍼링크의 메타 정보) 및/또는 내장된 명령어(예: 스크립트)를 포함할 수 있다.
클라이언트 디바이스(110)는 네트워크(105)를 통해 통신할 수 있는 전자 디바이스이다. 예시적 클라이언트 디바이스(110)는 퍼스널 컴퓨터, 모바일 통신 디바이스, 예를 들어, 스마트폰, 디지털 미디어 플레이어, 스마트 스피커, 웨어러블 디바이스(예: 스마트 시계) 및 네트워크(105)를 통해 데이터를 송수신할 수 있는 기타 디바이스를 포함한다. 클라이언트 디바이스(110)는 네트워크(105)를 통한 데이터의 송수신을 용이하게 하기 위한 웹브라우저 또는 네이티브 애플리케이션과 같은 애플리케이션(111)을 일반적으로 포함한다. 네이티브 애플리케이션은 특정한 플랫폼 또는 특정한 디바이스용으로 개발된 애플리케이션이다. 퍼블리셔(130)는 네이티브 애플리케이션을 개발하고 클라이언트 디바이스(110)에 제공할 수 있다.
일부 리소스(145), 애플리케이션 페이지 또는 다른 애플리케이션 콘텐츠는 리소스(145) 또는 애플리케이션 페이지와 함께 디지털 컴포넌트를 제시하기 위한 디지털 컴포넌트 슬롯을 포함할 수 있다. 이 문서 전체에서 사용된 문구 "디지털 컴포넌트"는 디지털 콘텐츠 또는 디지털 정보(예: 비디오 클립, 오디오 클립, 멀티미디어 클립, 이미지, 텍스트 또는 다른 콘텐츠 유닛)의 개별 유닛을 지칭한다. 디지털 컴포넌트(129)는 물리적 메모리 디바이스에 단일 파일 또는 파일들의 집합으로 전자적으로 저장될 수 있으며, 디지털 컴포넌트는 비디오 파일, 오디오 파일, 멀티미디어 파일, 이미지 파일 또는 텍스트 파일의 형태를 취할 수 있으며, 광고 정보를 포함할 수 있어 광고가 디지털 컴포넌트의 한 유형이도록 한다. 예를 들어, 디지털 컴포넌트(129)는 애플리케이션(111)에 의해 제시되는 웹 페이지, 리소스 또는 애플리케이션 페이지의 콘텐츠를 보완하기 위한 콘텐츠일 수 있다. 더 구체적으로, 디지털 컴포넌트(129)는 리소스 콘텐츠와 관련된 디지털 콘텐츠를 포함할 수 있다(예를 들어, 디지털 컴포넌트는 웹페이지 콘텐츠와 동일한 토픽 또는 관련 토픽에 관련될 수 있다). 따라서, 디지털 컴포넌트 배포 시스템(150)에 의한 디지털 컴포넌트의 제공은 웹페이지 콘텐츠를 보충하고 일반적으로 향상시킬 수 있다.
애플리케이션(111)이 리소스(145) 또는 하나 이상의 디지털 컴포넌트 슬롯을 포함하는 애플리케이션 콘텐츠를 로드할 때, 웹 브라우저일 수 있는 애플리케이션(111)은 디지털 컴포넌트 배포 시스템(150)으로부터 각 슬롯에 대한 디지털 컴포넌트(129)를 요청할 수 있다. 차례로 디지털 컴포넌트 배포 시스템(150)은 디지털 컴포넌트 제공자(160)로부터 디지털 컴포넌트를 요청할 수 있다. 디지털 컴포넌트 제공자(160)는 리소스(145) 및/또는 다른 콘텐츠와 함께 제시하기 위한 디지털 컴포넌트를 제공하는 엔터티이다. 예시적 디지털 컴포넌트 제공자는 광고를 제공하는 광고주이다.
일부 경우에, 디지털 컴포넌트 배포 시스템(150)은 또한 하나 이상의 디지털 컴포넌트 파트너(152)로부터 디지털 컴포넌트를 요청할 수 있다. 디지털 컴포넌트 파트너(152)는 디지털 컴포넌트 요청에 응답하여 디지털 컴포넌트 제공자(160)를 대신하여 디지털 컴포넌트를 선택하는 엔터티이다.
디지털 컴포넌트 배포 시스템(150)은 다양한 기준에 기초하여 각각의 디지털 컴포넌트 슬롯에 대한 디지털 컴포넌트를 선택할 수 있다. 예를 들어, 디지털 컴포넌트 배포 시스템(150)은 디지털 컴포넌트 제공자(160) 및/또는 디지털 컴포넌트 파트너(152)로부터 수신된 디지털 컴포넌트로부터 리소스(145) 또는 다른 애플리케이션 콘텐츠, 디지털 컴포넌트(예를 들어, 사용자가 디지털 컴포넌트와 인터렉션하는 속도)의 성능 등에 대한 관련성에 기초하여 디지털 컴포넌트를 선택할 수 있다. 그런 다음 디지털 컴포넌트 배포 시스템(150)은 리소스(145) 또는 다른 애플리케이션 콘텐츠를 제시하기 위해 선택된 디지털 컴포넌트(들)를 클라이언트 디바이스(110)에 제공할 수 있다. 디지털 컴포넌트 배포 시스템(150)은 클라이언트 디바이스(110)에서 동작하는 애플리케이션(111)에 의한 제시를 위해 선택된 디지털 컴포넌트(129)를 하나 이상의 클라이언트 디바이스(110)에 전송할 수 있다.
애플리케이션(111)이 네트워크(105)를 통해 요청(120)을 송신할 때, 애플리케이션(111)은 요청과 함께 증명 토큰(122)을 송신할 수 있다. 예를 들어, 애플리케이션(111)이 디지털 컴포넌트 배포 시스템(150)에 디지털 컴포넌트 요청을 보내는 경우, 이 요청은 증명 토큰(122)을 포함할 수 있다. 유사하게, 애플리케이션(111)이 다른 엔터티(예를 들어, 퍼블리셔(130), 디지털 컴포넌트 배포 시스템(150), 디지털 컴포넌트 파트너(152), 또는 디지털 컴포넌트 제공자(160))에게 해당 엔터티에 의해 저장된 데이터를 관리, 예를 들어 삭제하라는 요청을 보내는 경우, 이 요청은 증명 토큰(122)을 포함할 수 있다.
일부 구현예에서, 애플리케이션(111)은 특정 유형의 요청에 대한 증명 토큰(122)을 송신하도록 구성된다. 예를 들어, 증명 토큰(122)을 송신하는 각 애플리케이션(111)은 애플리케이션(111)이 증명 토큰(122)을 생성 및/또는 송신하게 하는 소프트웨어 개발 키트(SDK) 또는 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있다. SDK는 증명 토큰(122)이 포함될 요청들의 세트, 예를 들어 사용자 데이터 관리에 대한 요청, 디지털 컴포넌트 요청 등을 특정할 수 있다. 뉴스 웹 페이지를 요청하는 것과 같은 다른 유형의 요청은 증명 토큰(122)이 필요하지 않을 수 있다.
클라이언트 디바이스(110)는 또한 애플리케이션(111)에 대한 증명 토큰을 생성하는 신뢰 프로그램(114)을 포함할 수 있다. 신뢰 프로그램(114)은 위조하기 어려운 신뢰할 수 있는 소스로부터의 신뢰 코드를 포함할 수 있다. 예를 들어, 신뢰 프로그램(114)은 운영 체제, 운영 체제의 일부, 웹 브라우저 등일 수 있다. 일반적으로 신뢰 프로그램(114)은 침투하기 어렵고, 가해자가 신뢰 프로그램(114)을 변조하는데 드는 시간과 노력이 엄청나게 높다. 또한, 신뢰 프로그램(114)은 신뢰할 수 있는 소스에 의해 제공되고 유지되기 때문에 발생하는 모든 취약성은 소스에 의해 해결될 수 있다. 이러한 방식으로 신뢰 프로그램을 사용하면 신뢰 프로그램이 침투하기 어렵기 때문에 클라이언트 디바이스에서 보안이 강화된다는 기술적 이점이 있다. 또한 신뢰 프로그램은 신뢰할 수 있는 소스에서 프로그램을 유지 관리되기 때문에 신뢰 프로그램의 취약성을 완화하는 이점을 제공한다.
신뢰 프로그램(114)은 클라이언트 디바이스(110)에 로컬적일 수 있다. 예를 들어, 신뢰 프로그램(114)은 클라이언트 디바이스(110)의 운영 체제의 디바이스 드라이버일 수 있다. 일부 구현예에서, 신뢰 프로그램(114)은 클라이언트 디바이스(110)에 대해 전체적으로 로컬적으로 동작하여, 사용자 정보를 전송할 필요성을 감소시킨다. 일부 구현예에서, 신뢰 프로그램(114)은 클라이언트 디바이스(110)에 대해 로컬적으로 그리고 네트워크(105)와 같은 네트워크를 통해 동작할 수 있다. 예를 들어, 신뢰 프로그램(114)은 사용자 디바이스(110)에 설치되고 네트워크(105)를 통해 정보를 전송 및 수신하는 웹 브라우저일 수 있다.
신뢰 프로그램(114)은 아래에 더 자세히 설명되는 바와 같이, 암호화 키(예를 들어, 공개/개인 키 쌍)를 생성하고, 보안 저장소(115)(예를 들어, 보안 캐시)에 암호화 키를 저장하고, 보안 저장소(115)에 디바이스 무결성 토큰을 저장하고, 증명 토큰을 생성하고, 암호화 키 및/또는 그 파생물의 블라인드 서명을 생성하고 및/또는 인증서를 가져오고 저장한다. 일부 구현예에서, 신뢰 프로그램(114)은 디바이스 무결성 시스템(170)으로 데이터를 송수신하기 위해 디바이스 무결성 클라이언트와 인터렉션한다. 일부 구현예에서, 신뢰 프로그램(114)은 특정 유형의 요청, 예를 들어 사용자 프라이버시 설정을 변경하기 위한 요청의 세트 각각에 대한 증명 토큰(122)을 생성하도록 구성된다.
증명 토큰(122)은 요청의 무결성 및 클라이언트 디바이스(110)의 무결성을 승인하기 위해 엔터티에 의해 사용된다. 예를 들어, 사용자가 다른 엔터티에 의해 저장된 데이터를 관리할 수 있게 하면 악의적인 사용자가 다른 사용자의 데이터를 관리 및/또는 훔치려고 할 가능성이 열린다. 디지털 컴포넌트의 경우, 일부 악의적인 엔터티는 예를 들어, 디지털 컴포넌트가 제공될 다른 리소스를 특정하거나 요청이 실제보다 더 가치 있는 것처럼 보이게 디지털 컴포넌트를 제시할 다른 사용자를 특정하기 위해 디지털 컴포넌트 요청의 파라미터를 위조하려고 시도할 수 있다. 또한 일부 악의적 당사자는 악의적 목적으로 다른 사람의 클라이언트 디바이스를 에뮬레이트하려고 시도할 수 있다.
증명 토큰(122)은 다른 사람이 요청(120)을 변경하는 것을 방지하고 요청(120)이 승인된 클라이언트 디바이스(110)로부터 온 것임을 보장하는 중개자를 통해 클라이언트 디바이스(110)와 컴퓨터 또는 다른 엔터티의 다른 디바이스 사이에 보안 통신 채널을 제공한다.
신뢰 프로그램(114)은 다른 형식을 갖거나 다른 콘텐츠를 포함하는 다른 유형의 증명 토큰(122)을 생성할 수 있다. 일부 구현예에서, 증명 토큰(122)은 클라이언트 디바이스(110)의 공개 키(113), 증명 토큰(122)이 생성된 시간을 표시하는 토큰 생성 시간, 페이로드 데이터, 및 클라이언트 디바이스(110)로부터 수신된 데이터를 사용하여 디바이스 무결성 시스템(170) 또는 신뢰 프로그램(114)에 의해 생성된 디바이스 무결성 토큰을 포함하는 세트 콘텐츠를 포함한다. 증명 토큰(122)은 또한 증명 토큰(122) 및 콘텐츠 세트에 포함된 공개 키(113)에 대응하는 개인 키(112)를 사용하여 신뢰 프로그램(114)에 의해 생성된 디지털 서명을 포함할 수 있다. 즉, 신뢰 프로그램(114)은 개인 키(112)를 사용하여 콘텐츠 세트를 디지털 서명할 수 있고, 결과 디지털 서명을 콘텐츠 세트와 함께 증명 토큰(122)에 포함시킬 수 있다.
일부 구현예에서, 증명 토큰(122)은 페이로드 데이터를 포함하는 콘텐츠 세트, 증명 토큰(122)이 생성되는 시간을 표시하는 증명 토큰 생성 시간 및 콘텐츠 세트의 디지털 서명을 포함한다. 이 예에서, 신뢰 프로그램(114)은 그룹 서명 방식 및 디바이스 무결성 시스템(170)에 의해 클라이언트 디바이스(110)에 발급된 인증서를 사용하여 디지털 서명을 생성할 수 있다.
어느 하나의 예에서, 클라이언트 디바이스(110)는 디지털 컴포넌트 배포 시스템(150) 또는 다른 수신자에게 송신된 요청(120)에 증명 토큰(122)을 포함할 수 있다. 증명 토큰(122)의 수신자는 증명 토큰(122) 및/또는 (적절한 경우) 증명 토큰(122)에 포함된 디바이스 무결성 토큰을 승인하려고 시도할 수 있다. 증명 토큰(122)이 성공적으로 승인되면, 수신자는 클라이언트 디바이스(110)가 신뢰 디바이스인지 여부를 결정하고, 그에 따라 요청을 프로세싱할 수 있다. 증명 토큰(122)이 성공적으로 승인되지 않은 경우, 수신자는 예를 들어 요청(120)에 응답하지 않거나 또는 요청(120)에 응답하여 데이터를 변경하지 않고 요청(120)을 무시하거나 삭제할 수 있다. 증명 토큰(122)을 포함하는 요청을 생성하고 증명 토큰을 검증하기 위한 예시적 프로세스가 도 2 내지 8에 도시되어 있다.
증명 토큰 생성 시간은 증명 토큰(122)이 생성된 시간을 표시한다. 신뢰 프로그램(114)은 신뢰 프로그램(114)이 증명 토큰을 생성할 때 생성 시간을 기록할 수 있다. 이 증명 토큰 생성 시간은 고해상도 타임스탬프일 수 있다(예: 초, 밀리초 또는 마이크로초까지 정확함). 증명 토큰 생성 시간은 증명 토큰(122)을 포함하는 요청(120)이 새로운 요청인지 또는 최근 요청인지를 결정하는데 사용될 수 있다. 예를 들어, 증명 토큰(122)을 수신하는 엔터티는 토큰 생성 시간을 현재 시간 또는 증명 토큰(122)이 수신된 시간과 비교할 수 있다. 두 시간 간의 차이가 임계값을 초과하는 경우, 엔터티는 아래에 자세히 설명된 대로 요청이 새롭지 않거나 유효하지 않다고 결정할 수 있다.
증명 토큰 생성 시간은 재생 공격을 탐지하는데 사용될 수 있다. 예를 들어, 동일한 증명 토큰 생성 시간을 포함하여 동일한 데이터 세트를 가진 다수의 요청이 수신되는 경우, 요청을 수신하는 엔터티는 요청이 중복인지 및/또는 요청이 재생 공격의 일부인지 결정할 수 있다.
증명 토큰 생성 시간은 다른 데이터와 함께 요청(120)에 대한 트랜잭션 식별자 역할을 할 수 있다. 예를 들어, 트랜잭션 식별자는 증명 토큰(122)이 공개 키(113)를 포함하는 구현예에서 증명 토큰(122)의 증명 토큰 생성 시간과 증명 토큰(122)의 공개 키(113) 중 둘 이상의 조합일 수 있다. 트랜잭션 식별자를 사용하여 다수의 채널로부터 수신된 동일한 요청의 여러 버전을 중복 제거할 수 있다. 예를 들어, 디지털 컴포넌트 제공자(160-3)는 디지털 컴포넌트 배포 시스템(150) 및 디지털 컴포넌트 파트너(152) 둘 모두로부터 동일한 요청을 수신할 수 있다. 이 예에서, 트랜잭션 식별자는 증명 토큰(122)의 토큰 생성 시간과 증명 토큰(122)의 공개 키(113)에 기초할 수 있다. 디지털 컴포넌트 제공자(160-3)는 요청이 중복되는지 여부를 결정하기 위해 둘 이상의 요청에서 두 데이터 조각을 비교할 수 있다.
페이로드는 개별 요청(120)에 대한 데이터를 포함할 수 있다. 예를 들어, 요청(120)이 디지털 컴포넌트에 대한 것이라면, 페이로드는 디지털 컴포넌트를 선택하기 위해 사용될 수 있는 데이터를 포함할 수 있다. 이 페이로드는 디지털 컴포넌트 슬롯을 갖는 리소스(145)(또는 리소스(145)에 대한 URL), 리소스(145)에 대한 정보(예를 들어, 리소스의 주제), 디지털 컴포넌트 슬롯에 대한 정보(예를 들어, 슬롯의 수, 슬롯의 유형, 슬롯의 크기 등), 사용자가 이 기능을 활성화한 경우 클라이언트 디바이스(110)에 관한 정보(예: 디바이스의 유형, 디바이스의 IP 주소, 클라이언트 디바이스(110)의 지리적 위치) 및/또는 기타 적절한 정보를 포함할 수 있다.
요청(120)이 퍼블리셔(130), 디지털 컴포넌트 배포 시스템(150), 디지털 컴포넌트 파트너(152), 디지털 컴포넌트 제공자(160) 또는 다른 엔터티에서 사용자 데이터를 관리하는 것이라면, 요청(120)은 요청된 변경을 특정하는 데이터를 포함할 수 있다. 예를 들어, 사용자가 디지털 컴포넌트 제공자(160-2)로부터의 사용자의 모든 데이터를 제거하기로 선택한 경우, 페이로드는 이러한 데이터의 제거 및 디지털 컴포넌트 제공자(160-2)를 특정하는 데이터(예를 들어, 디지털 컴포넌트 제공자(160-2)에 대한 식별자 또는 네트워크 주소)를 포함할 수 있다.
디바이스 무결성 시스템(170)은 클라이언트 디바이스(110), 예를 들어 신뢰 프로그램(114)으로부터 수신된 디바이스 레벨 사기 탐지 신호를 평가하고, 디바이스 레벨 사기 탐지 신호에 기초하여 클라이언트 디바이스(110)의 신뢰도(또는 무결성) 레벨을 결정한다. 디바이스 레벨 사기 탐지 신호는 클라이언트 디바이스가 손상되었는지 여부 또는 클라이언트 디바이스가 일반 클라이언트 디바이스 또는 에뮬레이트된 클라이언트 디바이스로서 작동하는지 여부를 결정하는데 사용될 수 있는 클라이언트 디바이스의 동작 특성 또는 메트릭을 나타내는 데이터를 포함할 수 있다. 특정 동작 특성 및 메트릭은 에뮬레이터에 비해 진짜 클라이언트 디바이스에 대대 종종 상이하다. 일부 구현예에서, 디바이스 레벨 사기 탐지 신호는 신뢰 토큰을 요청하는 애플리케이션(111)의 동작 특성 및 메트릭을 포함하는 애플리케이션 레벨 사기 탐지 신호들을 포함한다. 신뢰 프로그램(114)은 이러한 디바이스 레벨 사기 탐지 신호를 수집하고 신뢰 토큰에 대한 요청에 신호를 포함할 수 있다.
디바이스 무결성 시스템(170)은 클라이언트 디바이스(110)의 신뢰도(또는 무결성)의 레벨을 표시하는 판정을 발급할 수 있다. 수신자는 판정을 사용하여, 판정을 포함하는 요청(120)을 신뢰할지 여부를 결정한다. 예를 들어, 판정이 클라이언트 디바이스(110)가 신뢰할 수 없다는 것을 표시하면, 수신자는 요청을 무시할 수 있고, 예를 들어 요청에 응답하지 않을 수 있다.
위에서 논의한 바와 같이, 일부 접근법에서, 디바이스 개인/공개 키 쌍(및 디바이스 공개 키와 연관된 디바이스 무결성 토큰)은 여러 증명 토큰에 걸쳐 변경될 수 있어서, 증명 토큰 수신자에 의한 추적에 대해 클라이언트 디바이스 또는 사용자의 프라이버시를 향상시킬 수 있다. 예를 들어, 클라이언트 디바이스는 개인/공개 키 쌍의 배치를 생성하고 디바이스 무결성 서버로부터 디바이스 무결성 토큰의 대응하는 배치를 검색하여, 디바이스 무결성 토큰의 재사용을 줄이거나 제거할 수 있다. 이러한 배치 프로세스의 예시가 도 2에 도시되어 있다.
이 예에서, 클라이언트 디바이스(200)는 N개의 공개/개인 키 쌍(201)을 생성한다. 예를 들어, 클라이언트 디바이스(200)의 신뢰 프로그램은 공개/개인 키 쌍을 생성할 수 있다. 공개/개인 키 쌍은 비대칭 키 쌍일 수 있다. 각 공개/개인 키 쌍은 개인 키 및 상기 개인 키에 대응하고 수학적으로 연결된 공개 키를 포함한다. 개인 키를 사용하여 디지털 서명된 데이터는 대응 공개 키를 사용해야만 검증될 수 있다. 마찬가지로 공개 키를 사용하여 암호화된 데이터는 대응 개인 키를 사용해야만 복호화될 수 있다.
클라이언트 디바이스(200)는 N개의 디바이스 무결성 엘리먼트에 대한 요청을 디바이스 무결성 컴퓨팅 시스템(220)에 송신한다(202). 숫자 N은 2보다 크거나 같은 정수일 수 있다. 이 예에서, 디바이스 무결성 엘리먼트는 디바이스 무결성 토큰이고, N개의 공개/개인 키 쌍에 대응하는 N개의 디바이스 무결성 토큰에 대한 요청이다. 신뢰 프로그램은 신뢰 프로그램이 요청에서 고유한 디바이스 무결성 토큰을 사용하는 빈도에 기초하여 요청할 디바이스 무결성 토큰의 수 N을 결정할 수 있다. 클라이언트 디바이스는 요청된 각 디바이스 무결성 토큰에 대해 공개/개인 키 쌍을 생성하고, 요청에 공개 키 데이터를 포함할 수 있다. 이 예에서, 공개 키 데이터는 공개 키 자체일 수 있다. 따라서, 요청은 클라이언트 디바이스(200)의 N개의 공개 키(211)를 디바이스 무결성 서버(220)에 전달하는 것을 포함한다. 이 예에서, N개의 공개 키(211)는 실제 공개 키, 예를 들어 N개의 공개 키(211)의 원시 데이터를 포함한다. 요청은 디바이스 레벨 사기 탐지 신호를 포함할 수 있다. 예를 들어, 신뢰 프로그램은 디바이스 레벨 사기 탐지 신호를 수집하고 요청에 신호를 포함할 수 있다.
디바이스 무결성 컴퓨팅 시스템(220)은 요청을 수신한다(221). 클라이언트 디바이스로부터 수신된 디바이스 레벨 사기 탐지 신호에 기초하여, 디바이스 무결성 컴퓨팅 시스템(220)은 클라이언트 디바이스의 신뢰도 레벨을 결정한다(222). 예를 들어, 디바이스 무결성 컴퓨팅 시스템은 각각의 판정에 대응하는 M개의 가능한 신뢰도 레벨을 가질 수 있다. 이 예에서, 디바이스 무결성 컴퓨팅 시스템(220)은 위에서 설명된 바와 같이 디바이스 레벨 사기 탐지 신호에 기초하여 이러한 M개의 가능한 신뢰도 레벨 중 하나를 선택할 수 있다.
디바이스 무결성 컴퓨팅 시스템(220)은 N개의 디바이스 무결성 엘리먼트를 생성한다(223). 이 예에서, 각 디바이스 무결성 엘리먼트는 디바이스 무결성 토큰 형식이다. 즉, 디바이스 무결성 컴퓨팅 시스템(220)은 수신된 각각의 공개 키에 대한 각각의 디바이스 무결성 토큰을 생성한다.
각각의 디바이스 무결성 토큰은 신뢰도 판정, 신뢰도 판정을 위한 타임스탬프 및 클라이언트 디바이스(200)의 N개의 공개 키(211) 중 하나를 포함할 수 있다. 타임스탬프는 디바이스 무결성 토큰이 생성된 시간을 표시한다. 디바이스 무결성 시스템은 N개의 공개 키(211) 중 하나에 기초하여 각 디바이스 무결성 토큰을 생성할 수 있다. 예를 들어, 디바이스 무결성 시스템(220)은 클라이언트 디바이스(200)의 공개 키, 신뢰도 판정, 및 타임스탬프를 포함하는 데이터 세트를 조합할 수 있다. 신뢰도의 판정이 단 두 가지 가능한 판정(신뢰 및 비신뢰)만을 포함하는 일부 접근법에서, 신뢰도 판정은 디바이스 무결성 토큰에서 생략될 수 있다. 다시 말해서, 이러한 접근법에서, 디바이스 무결성 시스템은 신뢰할 수 있는 디바이스에 대한 디바이스 무결성 토큰을 생성할 수 있으며(이 토큰은 신뢰도에 대한 묵시적 판정을 생략함), 단순히 신뢰할 수 없는 디바이스에 대한 디바이스 무결성 토큰 생성을 거부할 수 있다.
디바이스 무결성 컴퓨팅 시스템(220)은 N개의 디바이스 무결성 토큰(224) 각각에 디지털 서명을 한다. 예를 들어, 디바이스 무결성 컴퓨팅 시스템(220)은 디바이스 무결성 시스템의 개인 키를 사용하고, 디바이스 무결성 토큰의 다른 데이터(예를 들어, 신뢰도 판정, 클라이언트 디바이스(200)의 공개 키 및 타임스탬프)에 기초하여 디지털 서명을 생성할 수 있다.
디바이스 무결성 컴퓨팅 시스템(220)은 N개의 디바이스 무결성 토큰을 클라이언트 디바이스에 전송한다(225). 클라이언트 디바이스(200)는 나중에 사용하기 위해 디바이스 무결성 토큰의 배치를 수신하고 저장한다(203). 클라이언트 디바이스(200)는 디바이스 무결성 토큰을 로컬적으로, 예를 들어, 신뢰 프로그램에 의해 유지되는 캐시 또는 보안 저장소에 저장할 수 있다. 각각의 캐시된 디바이스 무결성 토큰은 예를 들어: (1) 디바이스 무결성 컴퓨팅 시스템(220)에 의해 결정된 신뢰도의 판정; (2) 디바이스 무결성 토큰 생성에 대한 타임스탬프; (3) 클라이언트 디바이스의 공개 키; 및 (4) 디바이스 무결성 컴퓨팅 시스템(220)의 개인 키를 사용하여 서명된 토큰 컴포넌트의 디지털 서명을 포함할 수 있다.
도 2의 예에 도시된 바와 같이, 디바이스 무결성 토큰의 배치를 획득하면, 클라이언트 디바이스는 디바이스 무결성 토큰을 사용하여 위에서 논의된 바와 같이 디지털 컴포넌트 제공자 또는 다른 증명 토큰 수신자를 향하는 다양한 요청의 일부로서 증명 토큰을 조합하고 보낼 수 있다. 그러한 요청의 예시가 도 3의 프로세스 흐름도로서 도시된다.
요청을 준비하기 위해, 클라이언트 디바이스(300)는 클라이언트 디바이스(301)의 로컬 저장소로부터 디바이스 무결성 토큰을 검색할 수 있다. 다양한 접근법에서, 클라이언트 디바이스(300)는 예를 들어, (1) 각 요청에 대해 새로운 디바이스 무결성 토큰을 사용; 또는 (2) 선택된 시간 간격(예: 연속 H 시간) 동안 동일한 디바이스 무결성 토큰을 사용하고 해당 간격이 경과하면 다른 디바이스 무결성 토큰을 사용; 또는 (3) 동일한 애플리케이션 또는 웹사이트에서 발생한 모든 요청에 대해 동일한 디바이스 무결성 토큰을 사용(예: 각 애플리케이션 또는 웹사이트에 대해 상이한 디바이스 무결성 토큰이 사용되는 경우); 또는 (4) 이러한 토큰 재사용 접근법 중 둘 이상의 조합(예: 선택된 시간 간격 내에 동일한 애플리케이션 또는 웹사이트에서 발생한 모든 요청에 대해 동일한 디바이스 무결성 토큰 사용)을 사용할 수 있다. 따라서, 클라이언트 디바이스(300)는 요청이 생성된 애플리케이션 또는 웹사이트 또는 요청이 생성된 현재 시간에 기초하여 디바이스 무결성 토큰을 검색할 수 있다.
클라이언트 디바이스(300)는 요청을 생성할 수 있다(302). 요청(311)은 예를 들어 페이로드 데이터(위에서 논의됨), 요청 생성 타임스탬프, 검색된 디바이스 무결성 토큰, 디바이스 무결성 토큰에 대응하는 디바이스 공개 키 및 요청 컴포넌트의 디지털 서명을 포함할 수 있다. 클라이언트 디바이스의 신뢰 프로그램 또는 클라이언트 디바이스의 운영 체제의 신뢰 컴포넌트는 페이로드 데이터 및 디바이스 무결성 토큰에 액세스하여 증명 토큰을 포함하거나 그 형태일 수 있는 요청(311)을 생성할 수 있다. 또한 신뢰 프로그램은 요청 생성 타임스탬프로서 현재 시간을 결정할 수 있다. 신뢰 프로그램은 클라이언트 디바이스의 개인 키(예: 요청에 포함된 디바이스의 공개 키에 대응하는 개인 키)를 사용하여 페이로드 데이터, 공개 키 및 타임스탬프의 디지털 서명을 생성할 수 있다. 일부 접근법에서, 증명 토큰 크기를 줄이기 위한 간단한 최적화로, 디바이스 공개 키가 이미 증명 토큰의 컴포넌트로서 포함된 디바이스 무결성 토큰에 존재하기 때문에, 증명 토큰에서 디바이스 공개 키를 생략한다.
클라이언트 디바이스(300)는 요청(311)을 수신자의 컴퓨팅 시스템(320)으로 송신한다(303). 이 예에서 수신자는 디지털 컴포넌트 제공자이다. 예를 들어, 클라이언트 디바이스(300)는 요청(311)을 디지털 컴포넌트 배포 시스템에 송신할 수 있고, 디지털 컴포넌트 배포 시스템은 하나 이상의 디지털 컴포넌트 제공자에게 요청을 송신할 수 있다.
수신자 컴퓨팅 시스템(320)은 요청을 수신한다(321). 수신자 컴퓨팅 시스템(320)은 요청을 승인한다(322). 예를 들어, 수신자 컴퓨팅 시스템(320)은 요청에 포함된 디바이스 공개 키를 사용하여 요청의 디지털 서명을 검증함으로써 요청을 승인할 수 있다. 수신자 컴퓨팅 시스템(320)은 공개 키와 클라이언트 디바이스(300)에 의해 서명된 요청의 콘텐츠, 예를 들어 페이로드 데이터, 타임스탬프, 공개 키 및 디바이스 무결성 토큰을 사용하여 디지털 서명을 검증하려고 시도할 수 있다. 디지털 서명이 생성된 후 이 내용 중 어느 것이라도 변경되면 검증에 실패한다. 예를 들어, 악의적인 당사자가 다른 요청에 디바이스 무결성 토큰을 삽입하거나 요청에 더 높은 신뢰도 판정을 받은 다른 디바이스 무결성 토큰을 삽입한 경우 서명 검증은 실패한다. 이는 예를 들어 중개자에 의해 요청 전송 중에 요청의 내용이 변경되지 않았음을 보장한다.
수신자 컴퓨팅 시스템(320)은 디바이스 무결성 토큰을 승인한다(323). 예를 들어, 수신자 컴퓨팅 시스템(320)은 디바이스 무결성 컴퓨팅 시스템의 공개 키를 사용하여 디바이스 무결성 토큰의 서명을 검증함으로써 디바이스 무결성 토큰을 승인할 수 있다. 이것은 유사하게 디바이스 무결성 토큰이 디바이스 무결성 토큰 컴퓨팅 시스템에 의해 발행된 이후 디바이스 무결성 토큰의 내용이 변경되지 않았음을 보장한다. 증명 토큰이 디바이스 공개 키를 포함하는 경우, 디바이스 무결성 토큰의 검증은 증명 토큰에 포함된 디바이스 공개 키가 디바이스 무결성 토큰 내에 포함된 디바이스 공개 키와 일치한다는 확인을 포함할 수 있다.
수신자 컴퓨팅 시스템(320)은 예를 들어, 디바이스 무결성 토큰이 최근에 생성되었는지(즉, 요청이 이루어진 시간의 H 시간 또는 D일 전(H, D = 1, 2, 3, …)과 같이, 선택된 시간 간격을 초과하여 생성되지 않음) 확인하고 디바이스 무결성 토큰의 신뢰도 판정이 요청을 따르는 충분한 판정인지 확인하기 위해 디바이스 무결성 토큰의 적시성 및 클라이언트 디바이스의 신뢰도를 승인한다(324).
이들 유효성 검사를 모두 통과하면, 수신자 컴퓨팅 시스템(320)은 예를 들어 위에서 논의된 바와 같이, 설정을 변경하고, 사용자 데이터를 추가 또는 제거하고, 디지털 컴포넌트를 전달하는 등 요청에 응답할 수 있다(325). 유효성 검사 중 하나라도 실패하면, 수신자 컴퓨팅 시스템(320)은 요청을 무시할 수 있다. 예를 들어, 수신자 컴퓨팅 시스템(320)은 요청에 응답하지 않을 수 있고, 요청된 동작을 수행하지 않을 수 있다.
디지털 컴포넌트를 전달하는 것을 포함하는 요청의 경우, 응답(325)은 적절한 디지털 컴포넌트(312)를 선택적으로 송신하는 것을 포함할 수 있다. 예를 들어, 수신자 컴퓨팅 시스템(320)은 요청의 페이로드에 기초하여 디지털 컴포넌트를 선택하고, 디지털 컴포넌트를 디지털 컴포넌트 제공자에게 요청을 보낸 디지털 컴포넌트 배포 시스템에 보낼 수 있다. 차례로, 디지털 컴포넌트 배포 시스템은 디지털 컴포넌트를 클라이언트 디바이스(300)에 보낼 수 있다. 클라이언트 디바이스(300)는 디지털 컴포넌트를 수신할 수 있다(304). 차례로, 클라이언트 디바이스(300)는 디지털 컴포넌트를 제시할 수 있다.
위에서 논의된 바와 같이, 일부 접근법에서, 블라인드 서명 방식은 디바이스 무결성 토큰을 생성하는 프로세스에서 사용될 수 있으므로, 디바이스 무결성 컴퓨팅 시스템은 클라이언트 디바이스의 공개 키의 원시 데이터를 볼 수 없다. 예를 들어, 클라이언트 디바이스는 개인/공개 키 쌍의 배치를 생성한 다음 디바이스 무결성 엘리먼트의 대응하는 배치를 검색하기 위해 공개 키를 디바이스 무결성 시스템에 보내기 전에 블라인드 서명 방식을 사용하여 공개 키를 블라인드화할 수 있다(또는 공개 키의 암호화 해시 또는 디바이스 모델 번호와 연결된 공개 키의 암호화 해시와 같이 블라인드 서명 방식의 커밋 페이즈에 대한 값으로 사용될 수 있는 이들 공개 키의 적절한 파생물). 이 예에서 디바이스 무결성 엘리먼트는 블라인드화된 공개 키의 블라인드 서명이다. 이러한 배치 프로세스의 예시가 도 4에 도시되어 있다.
이 예에서, 디바이스 무결성 컴퓨팅 시스템(420)은 클라이언트 디바이스에 대한 M개의 서로 다른 신뢰도 레벨을 정의하고, 대응하는 M개의 신뢰도 레벨에 대해 M개의 서로 다른 블라인드 서명 검증 키(411)를 퍼블리시할 수 있다(421). 예를 들어, M개의 레벨은 신뢰할 수 있음과 신뢰할 수 없음의 두 가지 레벨을 포함할 수 있다. 다른 예에서, M개의 레벨은 의심스러움, 만족스러움, 신뢰할 수 있음의 세 가지 레벨을 포함할 수 있다. 다른 예에서, M개의 레벨은 사기, 의심, 만족 및 신뢰의 4가지 레벨을 포함할 수 있다. 다른 수의 레벨도 사용될 수 있다. 따라서 M은 2보다 크거나 같은 정수일 수 있다. 일부 접근법에서, 가장 낮은 레벨의 신뢰도(예: "신뢰할 수 없음" 또는 "사기" 수준의 신뢰도)에 대해 블라인드 서명 검증 키를 할당하는 대신, M개의 레벨의 신뢰도에서 가장 낮은 레벨의 신뢰도를 생략할 수 있으며, 디바이스 무결성 컴퓨팅 시스템은 단순히 신뢰도가 가장 낮은 디바이스에 대해 블라인드 서명 제공을 거부할 수 있다. 따라서 이러한 접근법에서 M은 1보다 크거나 같은 정수가 될 수 있다.
디바이스 무결성 컴퓨팅 시스템(420)은 블라인드 서명 방식을 사용하여 신뢰도의 각 레벨에 대해 각각의 블라인드 서명 검증 키(411)를 생성할 수 있다. 블라인드 서명 방식은 IETF(Internet Engineering Task Force) VOPRF(Verifiable Oblivious Pseudorandom Functions) 블라인드 서명 방식과 같은 개인적으로 검증가능한 블라인드 서명 방식일 수 있다. 다른 접근법에서, 블라인드 서명 방식은 RSA(Rivest-Shamir-Adleman) 블라인드 서명 방식과 같이 공개적으로 검증가능한 블라인드 서명 방식일 수 있다.
디바이스 무결성 컴퓨팅 시스템(420)은 클라이언트 디바이스(400)를 포함하는 클라이언트 디바이스가 블라인드 서명 검증 키(411)를 획득할 수 있도록 블라인드 서명 검증 키(411)를 퍼블리시할 수 있다. 예를 들어, 디바이스 무결성 컴퓨팅 시스템(420)은 블라인드 서명 검증 키(411)를 웹사이트 또는 모바일 앱 스토어에 퍼블리시할 수 있다.
클라이언트 디바이스(400)는 이러한 블라인드 서명 검증 키(401)를 수신할 수 있다. 예를 들어, 클라이언트 디바이스(400)는 블라인드 서명 검증 키(411)를 다운로드하고, 블라인드 서명 검증 키(411)를 로컬적으로, 예를 들어 보안 저장소 또는 캐시에 저장할 수 있다. 클라이언트 디바이스(400)는 아래에서 더 논의되는 바와 같이 나중에 디바이스 무결성 컴퓨팅 시스템(420)으로부터 수신된 블라인드 서명을 검증하기 위해 블라인드 서명 검증 키(411)를 보유할 수 있다. 일부 접근법에서, 디바이스 무결성 컴퓨팅 시스템(420)은 새로운 블라인드 서명 검증 키(411)를 주기적으로 퍼블리시할 수 있고(예를 들어, 매시간, 매일, 매주 또는 다른 적절한 기간마다), 블라인드 서명 검증 키의 세트의 이러한 리프레시는 아래에서 자세히 설명하는 것처럼 디바이스 무결성 토큰의 적시성을 승인하는데 사용될 수 있다.
N개의 디바이스 무결성 토큰의 배치를 획득하기 위해, 클라이언트 디바이스(400)는 N개의 공개/개인 키 쌍을 생성한다(402). 예를 들어, 클라이언트 디바이스의 신뢰 프로그램은 각 디바이스 무결성 토큰에 대해 각각의 비대칭 공개/개인 키 쌍을 생성할 수 있다.
클라이언트 디바이스(400)는 블라인드 서명 검증 키를 생성하는데 사용되는 블라인드 서명 방식에 따라 각 공개 키 또는 각 공개 키의 파생물을 블라인드화한다(403). 즉, 클라이언트 디바이스(400)는 각각의 공개 키에 대한 공개 키 데이터를 블라인드화하고, 여기서 공개 키 데이터는 공개 키 또는 공개 키의 파생물이다. 공개 키를 블라인드화하는 것은 공개 키의 원시 값에 블라인드 팩터를 적용하여 공개 키의 원시 값을 숨기는 것을 포함할 수 있다. 이러한 방식으로, 디바이스 무결성 컴퓨팅 시스템(420)은 클라이언트 디바이스(400)로부터 수신된 공개 키의 원시 값에 액세스할 수 없으며, 이러한 값을 사용하여 예를 들어 추가 데이터를 가진 공개 키의 원시 값을 수신한 다른 엔터티로부터 수신된 데이터를 사용하여, 사용자 또는 클라이언트 디바이스(400)를 추적할 수 없다.
디바이스 무결성 컴퓨팅 시스템(420)에 의해 블라인드 서명될 필요가 있는 데이터의 양을 줄이기 위해, 각각의 전체 디바이스 공개 키를 블라인드화하는 대신에, 클라이언트 디바이스(400)(예를 들어, 그것의 신뢰 프로그램)는 공개 키의 파생물을 생성할 수 있고, 공개 키의 파생물을 블라인드화한다. 파생물은 공개 키의 암호화 해시일 수 있다. 예를 들어, 클라이언트 디바이스(400)는 암호화해시 함수를 사용하여 각 공개 키의 암호화 해시를 생성한 후, 블라인드 서명 방식을 사용하여 공개 키의 암호화 해시를 블라인드화할 수 있다. 일부 구현예에서, 암호화 해시 알고리즘은 SHA256일 수 있다.
일부 구현예에서, 클라이언트 디바이스(420)는 암호화 해시를 절단함으로써 블라인드 공개 키 데이터의 데이터 크기를 추가로 감소시킬 수 있고, 그 다음 절단된 암호화 해시를 블라인드화할 수 있다. 예를 들어, 이 절단은 데이터 크기가 더 큰 원본 암호화 해시로부터 암호화 해시를 16바이트로 제한할 수 있다. 이러한 절단은 클라이언트 디바이스(400)가 블라인드 서명 방식을 사용하여 블라인드화하는 더 짧은 암호화 해시를 초래한다.
이러한 방식으로 블라인드적으로 서명된 데이터의 양을 줄이는 것은 데이터를 블라인드로 서명할 때 디바이스 무결성 컴퓨팅 시스템(420)에 가해지는 부담을 줄여(예를 들어, CPU 사이클, 데이터 저장 요구사항, 메모리 소비 등) 디바이스 무결성 컴퓨팅 시스템(420)이 블라인드 서명을 더 빠르고 효율적으로 생성하고 전체 공개 키의 블라인드 버전이 제공되는 경우보다 더 많은 요청을 처리하게 한다. 이것은 또한 요청이 송신되는 네트워크의 대역폭 소비를 줄이고 많은 양의 블라인드 공개 키 데이터를 단일 요청으로 송신되게 한다.
클라이언트 디바이스(400)는 N개의 디바이스 무결성 토큰에 대한 요청(412)을 디바이스 무결성 컴퓨팅 시스템(420)에 송신한다(404). 숫자 N은 2보다 크거나 같은 정수일 수 있다. 요청은 클라이언트 디바이스(400)에 의해 생성된 각각의 공개 키(411)에 대한 블라인드 공개 키 데이터를 포함할 수 있다. 예를 들어, 요청은 N개의 블라인드 공개 키, 공개 키의 N개의 블라인드 암호화 해시 또는 공개 키의 N개의 블라인드 절단 암호화 해시를 포함할 수 있다. 요청은 또한 예를 들어 클라이언트 디바이스(400)의 신뢰 프로그램에 의해 수집되는 디바이스 레벨 사기 탐지 신호를 포함할 수 있다.
디바이스 무결성 컴퓨팅 시스템(420)은 요청을 수신한다(422). 디바이스 무결성 컴퓨팅 시스템(420)은 디바이스 레벨 사기 탐지 신호에 기초하여 클라이언트 디바이스(400)의 신뢰도 판정을 결정한다(423). 예를 들어, 디바이스 무결성 컴퓨팅 시스템(400)은 (동작 421에서 퍼블리시된 M개의 블라인드 서명 검증 키에 대응하는) M개의 가능한 신뢰도 판정을 가질 수 있다. 디바이스 무결성 컴퓨팅 시스템(420)은 디바이스 레벨 사기 탐지 신호에 기초하여 M개의 가능한 판정 중 하나에 클라이언트 디바이스(400)를 할당할 수 있다.
클라이언트 디바이스(400)의 신뢰도에 대한 판정을 결정한 후, 디바이스 무결성 컴퓨팅 시스템(400)은 블라인드 서명 개인 키를 사용하여 블라인드 공개 키 데이터(예를 들어, 각각의 N개의 블라인드 공개 키 또는 각각의 블라인드 암호화 해시)의 각 부분에 서명한다(424). 예를 들어, 디바이스 무결성 컴퓨팅 시스템(420)은 클라이언트 디바이스(400)에 대해 결정된 신뢰도의 판정에 대응하는 블라인드 서명 개인 키(예: 결정된 신뢰도 판정에 대한 공개 블라인드 서명 검증 키에 대응하는 블라인드 서명 개인 키)를 획득한다(424). 이러한 방식으로 블라인드 서명 방식을 사용하여, 디바이스 무결성 컴퓨팅 시스템(420)은 공개 키 데이터의 실제 값을 알지 않고도 블라인드 공개 키 데이터의 디지털 서명을 생성할 수 있다.
디바이스 무결성 컴퓨팅 시스템(420)은 N개의 블라인드 서명(413)을 클라이언트 디바이스(425)에 반환한다. 클라이언트 디바이스(400)는 디바이스 무결성 컴퓨팅 시스템(405)으로부터 블라인드 서명을 수신한다.
클라이언트 디바이스(400)는 블라인드 서명 방식을 사용하여 블라인드 서명을 비-블라인드화한다(406). 예를 들어, 클라이언트 디바이스(400)의 신뢰 프로그램은 블라인드 서명이 생성된 블라인드 공개 키 데이터 및 디바이스 무결성 컴퓨팅 시스템(420)에 의해 퍼블리시된 블라인드 서명 검증 키를 사용하여 각 블라인드 서명을 승인할 수 있다. 이를 위해, 신뢰 프로그램은 예를 들어 각각의 신뢰도 판정에 대해 다수의 블라인드 서명 확인 키를 사용하여 블라인드 서명을 승인하려고 시도할 수 있다. 판정이 클라이언트 디바이스(400)에 할당된 판정과 일치하지 않는 경우, 블라인드 서명은 해당 판정에 대한 블라인드 서명 검증 키를 사용하여 승인되지 않을 것이다. 신뢰 프로그램은 블라인드 서명을 성공적으로 승인하는 블라인드 서명 검증 키에 기초하여 클라이언트 디바이스(400)의 신뢰도에 대한 할당된 판정을 결정할 수 있다. 예를 들어, 블라인드 검증 키에 대응하는 신뢰도의 판정은 클라이언트 디바이스(400)에 할당된 판정이다. 승인되면, 신뢰 프로그램은 블라인드 서명 방식을 사용하여 블라인드 서명을 비-블라인드화할 수 있다.
클라이언트 디바이스(400)는 디바이스 무결성 토큰의 배치를 생성한다(408). 예를 들어, 클라이언트 디바이스(400)의 신뢰 프로그램은 위의 동작(402)에서 생성된 각각의 공개 키에 대한 디바이스 무결성 토큰을 생성할 수 있다. 각 디바이스 무결성 토큰은 예를 들어 (1) 디바이스 무결성 토큰이 생성되는 클라이언트 디바이스의 공개 키; (2) 디바이스 무결성 컴퓨팅 시스템에 의해 결정된 신뢰도의 판정; 및 (3) 블라인드 공개 키의 비블라인드화된 블라인드 서명 또는 공개 키의 암호화 해시(예: 절단)를 포함할 수 있다. 일부 접근법에서, 디바이스 무결성 토큰은 비-블라인드화된 블라인드 서명에서 암시될 수 있으므로 신뢰도 판정을 생략할 수 있다. 블라인드 서명이 공개적으로 검증가능하지 않은 경우, 블라인드 서명을 검증하기 위해 디바이스 무결성 컴퓨팅 시스템이 호출될 때(예를 들어, 아래에서 논의되는 도 5의 541 참조), 디바이스 무결성 컴퓨팅 시스템은 또한 판정을 반환할 수 있다. 블라인드 서명이 공개적으로 검증가능한 경우, 블라인드 서명을 검증하는 공개 키는 또한 디바이스의 신뢰도에 대한 판정을 의미한다.
클라이언트 디바이스(400)는 디바이스 무결성 토큰(410)을 저장한다. 예를 들어, 클라이언트 디바이스(400)의 신뢰 프로그램은 디바이스 무결성 토큰을 포함해야 하는 요청을 보낼 때 나중에 사용하기 위해 디바이스 무결성 토큰을 보안 저장소에 저장할 수 있다. 보안 저장소는 클라이언트 디바이스(400)의 토큰 캐시일 수 있다.
도 4의 예에 도시된 바와 같이, 디바이스 무결성 토큰의 배치를 생성하고 저장하면, 클라이언트 디바이스는 디바이스 무결성 토큰을 사용하여 위에서 논의된 바와 같이 디지털 컴포넌트 제공자 또는 다른 증명 토큰 수신자를 위해 만들어진 다양한 요청의 일부로서 증명 토큰을 조합하고 보낼 수 있다. 그러한 요청의 예시가 도 5의 프로세스 흐름도로서 도시된다.
요청을 준비하기 위해, 클라이언트 디바이스(500)는 예를 들어 클라이언트 디바이스의 토큰 캐시로부터 디바이스 무결성 토큰을 검색할 수 있다(501). 다양한 접근법에서, 클라이언트는 예를 들어, (1) 각 요청에 대해 새로운 디바이스 무결성 토큰을 사용; 또는 (2) 선택된 시간 간격(예: 연속 H 시간) 동안 동일한 디바이스 무결성 토큰을 사용; 또는 (3) 동일한 애플리케이션 또는 웹사이트에서 발생한 모든 요청에 대해 동일한 디바이스 무결성 토큰을 사용; 또는 (4) 이러한 토큰 재사용 접근법의 조합(예: 선택된 시간 간격 내에 동일한 애플리케이션 또는 웹사이트에서 발생한 모든 요청에 대해 동일한 디바이스 무결성 토큰 사용)을 사용할 수 있다. 따라서, 클라이언트 디바이스(500)는 요청이 생성된 애플리케이션 또는 웹사이트 또는 요청이 생성된 현재 시간에 기초하여 디바이스 무결성 토큰을 검색할 수 있다.
클라이언트 디바이스(500)는 요청 페이로드(위에서 설명됨)를 포함하는 콘텐츠 세트, 요청이 생성된 시간을 표시하는 요청 생성 타임스탬프, 디바이스 무결성 토큰 및 디바이스 무결성 토큰에 대응하는 디바이스 공개 키(예: 공개 키 데이터가 블라인드로 서명되고, 비블라인드화된 블라인드 서명과 함께 디바이스 무결성 토큰에 포함된 공개 키)를 포함하는 요청(511)을 조합할 수 있다. 요청은 또한 클라이언트 디바이스의 개인 키(예를 들어, 요청에 포함된 공개 키에 대응하는 개인 키)를 사용하여 서명된(502) 콘텐츠 세트의 디지털 서명을 포함할 수 있다. 예를 들어, 클라이언트 디바이스(500)의 신뢰 프로그램은 개인 키를 사용하여 콘텐츠 세트에 기초하여 디지털 서명을 생성할 수 있다. 요청은 증명 토큰을 포함하거나 증명 토큰의 형식일 수 있다. 예를 들어, 증명 토큰은 콘텐츠 세트(예: 증명 토큰 생성 타임스탬프 포함) 및 디지털 서명을 포함할 수 있다.
클라이언트 디바이스(500)는 요청(511)을 수신자의 컴퓨팅 시스템(520)으로 송신한다(503). 수신자가 디지털 컴포넌트 제공자이면, 클라이언트 디바이스(500)는 디지털 컴포넌트 배포 시스템에 요청을 전송할 수 있으며, 이 시스템은 차례로 적절한 디지털 컴포넌트 제공자에게 요청을 전달한다.
수신자 컴퓨팅 시스템(520)은 요청을 승인한다(522). 수신자 컴퓨팅 시스템(520)은 요청에 포함된 디바이스 공개 키를 사용하여 요청의 디지털 서명을 검증함으로써 요청을 승인할 수 있다. 수신자 컴퓨팅 시스템(520)은 또한 요청의 타임스탬프를 요청이 수신된 시간과 비교함으로써 요청을 승인할 수 있다. 서명이 성공적으로 승인되고 타임스탬프가 현재 시간의 임계 기간 내에 있으면 클라이언트 디바이스(500)는 요청이 승인된 것으로 간주할 수 있다.
수신자 컴퓨팅 시스템(520)은 또한 디바이스 무결성 토큰을 승인한다. 이 승인 프로세스는 블라인드 서명을 생성할 때 디바이스 무결성 컴퓨팅 시스템(540)에 의해 사용되는 블라인드 서명 방식에 따라 다를 수 있다. 블라인드 서명 방식이 공개적으로 검증가능한 방식(예: RSA)인 경우, 수신자 컴퓨팅 시스템(520)은 디바이스 무결성 컴퓨팅 시스템을 호출하지 않고 디바이스 무결성 토큰을 승인할 수 있다(523a). 이 예에서, 수신자 컴퓨팅 시스템(520)은 블라인드 서명 방식을 사용하여 디바이스 무결성 토큰에 포함된 공개 키 데이터의 비블라인드화된 블라인드 서명을 검증할 수 있다. 공개 키의 암호화 해시가 사용되는 경우, 수신자 컴퓨팅 시스템(520)은 클라이언트 디바이스(500)와 동일한 암호화 해시 함수를 사용하여 요청에 포함된 공개 키의 암호화 해시를 생성하고(적절한 경우 이를 자를 수 있음) 블라인드 서명 방식을 사용하여 암호화 해시의 비블라인드화된 블라인드 서명을 검증한다.
블라인드 서명 방식이 개인 검증가능한 방식(예를 들어, IETF VOPRF)인 경우, 수신자 컴퓨팅 시스템(520)은 비블라인드화된 블라인드 서명을 검증하기 위해 디바이스 무결성 컴퓨팅 시스템(540)을 호출할 수 있다(523b). 이 예에서, 수신자 컴퓨팅 시스템(520)은 비블라인드화된 블라인드 서명 및 공개 키 또는 공개 키의 암호화 해시를 디바이스 무결성 컴퓨팅 시스템(540)에 보낼 수 있다.
디바이스 무결성 컴퓨팅 시스템(540)은 블라인드 서명 방식을 사용하여 비블라인드화된 블라인드 서명을 검증하고 디지털 컴포넌트 제공자에게 응답을 제공하도록 시도할 수 있다(541). 응답은 검증의 성공 여부 및 비블라인드화된 블라인드 서명을 검증하는 블라인드 서명 검증 키에 대응하는 클라이언트 디바이스의 신뢰도를 표시할 수 있다.
수신자 컴퓨팅 시스템(520)은 예를 들어, 디바이스 무결성 토큰이 최근에 생성되었는지 확인하고 디바이스 무결성 토큰의 신뢰도 판정이 요청을 따르는 충분한 판정인지 확인하기 위해 디바이스 무결성 토큰의 적시성 및 클라이언트 디바이스의 신뢰도를 승인한다(524). 디바이스 무결성 컴퓨팅 시스템(540)은 새로운 블라인드 서명 검증 키를 주기적으로 재퍼블리시할 수 있기 때문에, 적시성 승인은, 예를 들어 디바이스 무결성 토큰이 만료된 블라인드 서명 확인 키로 검증되었다고 결정함으로써, 디바이스 무결성 토큰의 블라인드 서명이 무효 도난 키로 서명되지 않았음을 확인하는 것을 포함할 수 있다. 하나의 접근법에서, 수신자 컴퓨팅 시스템은 블라인드 서명 검증 키의 유효 날짜가 퍼블리시된 키에 대한 URL의 일부로 인코딩되었기 때문에 블라인드 서명 확인 키가 만료되었다고 결정할 수 있다. 다른 접근법에서, 수신자 컴퓨팅 시스템은 검증 키가 검증 키의 만료 날짜를 인코딩하는 메타데이터와 함께 퍼블리시되기 때문에 블라인드 서명 검증 키가 만료되었다고 결정할 수 있다.
이들 유효성 검사를 모두 통과하면, 수신자 컴퓨팅 시스템(520)은 예를 들어 위에서 논의된 바와 같이, 설정을 변경하고, 사용자 데이터를 추가 또는 제거하고, 디지털 컴포넌트를 전달하는 등 요청에 응답할 수 있다(525). 디지털 컴포넌트를 전달하는 것을 포함하는 요청의 경우, 응답(525)은 적절한 디지털 컴포넌트(512)를 클라이언트 디바이스(500)에 선택적으로 송신하는 것을 포함할 수 있다. 이 예에서, 클라이언트 디바이스(500)는 디지털 컴포넌트(104)를 제시할 수 있다. 유효성 검사 중 임의의 것이 실패하면, 수신자 컴퓨팅 시스템(520)은 요청을 무시할 수 있으며, 예를 들어 요청, 업데이트 설정 등에 대한 응답을 전송하지 않도록 선택할 수 있다.
도 2 내지 도 5의 예에 도시된 접근법 동안 상기 설명된 것은 클라이언트 디바이스의 디바이스 공개 키를 사용하는 것을 포함하지만, 다른 접근법은 그룹 서명 방식을 위해 디바이스 공개 키의 사용을 포기할 수 있다. 일반적으로 그룹 서명 방식은 그룹의 구성원이 그룹을 대신하여 메시지에 익명으로 서명할 수 있도록 하는 방법이다. 그룹 서명 방식에서, 그룹 관리자는 인증서 C로 메시지에 서명하는데 사용될 수 있는 그룹 서명 함수 서명(message, C)를 퍼블리시하며, 여기서 인증서 C는 그룹 관리자에 의해 그룹 구성원에게 비공개로 발행된 기밀 인증서(익명 개인 키라고도 함)이다. 그룹 관리자는 또한 그룹 검증 키 K(그룹 공개 키라고도 함)와 메시지가 그룹 서명 함수로 서명된 경우에만 TRUE를 반환하는 그룹 서명 검증 함수 verify(sign(message, C), K)를 퍼블리시하며, 익명 인증서 C 및 C에 대한 그룹 인증 키 K를 사용한다.
이러한 기법은 디바이스 무결성 시스템을 그룹 관리자로 사용하여 클라이언트 디바이스 요청의 증명을 위해 그룹 서명 방식을 사용할 수 있다. 일부 그룹 서명 방식을 사용하면 그룹 관리자가 그룹 구성원이 만든 익명 서명을 비익명화할 수 있지만, 프라이버시 고려사항은 DAA(직접 익명 증명)와 같이 이러한 비익명화 기능을 포함하지 않은 그룹 서명 방식을 선호할 수 있다. 예를 들어, 일부 접근법에서 디바이스 무결성 시스템은 Barreto-Naehrig 곡선이 있는 ECC DAA와 같은 ECC(타원 곡선 암호화) DAA 체계를 사용할 수 있다. 또한 일부 그룹 서명 방식은 그룹 관리자가 그룹 구성원 자격을 취소하게 할 수 있지만, 효율성을 고려하면 이 취소 기능이 포함되지 않은 그룹 서명 방식을 선호할 수 있고, 기법을 인터넷 규모로 확장할 수 있다(예: 수백만 또는 수십억 그룹 구성원의 그룹 보유).
클라이언트 디바이스 요청의 증명을 위한 그룹 서명 방식의 예시적 예가 도 6 및 도 7의 프로세스 흐름도에 도시되어 있다. 이 예에서, 디바이스 무결성 컴퓨팅 시스템(620)은 클라이언트 디바이스에 대한 M개의 서로 다른 신뢰도 레벨을 정의하고, 대응하는 M개의 신뢰도 레벨에 대해 M개의 서로 다른 그룹 검증 키를 퍼블리시할 수 있다. 예를 들어, 디바이스 무결성 시스템은 하나, 둘 또는 그 이상의 그룹 검증 키, 예를 들어 디바이스 신뢰도의 레벨에 대응하는 ECC DAA 검증 키를 퍼블리시할 수 있다. M=1인 접근법의 경우, 그룹 검증 키는 최소 레벨의 신뢰도에 대응하며, 해당 최소 레벨의 신뢰도를 충족하지 않는 디바이스는 신뢰도 그룹의 구성원으로 가입되지 않는다. M≥2인 접근법의 경우, 서로 다른 그룹 검증 키는 디바이스 신뢰도의 각 레벨 또는 분류에 대응한다. 일부 접근법에서, 디바이스 무결성 컴퓨팅 시스템은 새로운 그룹 검증 키를 주기적으로 퍼블리시할 수 있고(예를 들어, 매시간, 매일, 매주 또는 적절한 다른 기간 동안) 그룹 검증 키 세트의 이러한 리프레시는 아래에서 자세히 설명하는 것처럼 클라이언트 디바이스 요청의 적시성을 승인하는데 사용될 수 있다.
이제 도 6을 참조하면, 클라이언트 디바이스(600)는 디바이스 무결성 서버(620)에 의해 관리되는 M개의 신뢰도 그룹 중 하나에 대한 기밀 인증서 형태의 개인 디바이스 무결성 인증서를 요청할 수 있다(601). 요청은 예를 들어 클라이언트 디바이스(600)의 신뢰 프로그램에 의해 수집되는 디바이스 레벨 사기 탐지 신호를 포함할 수 있다.
디바이스 무결성 컴퓨팅 시스템은 요청을 수신한다(621). 디바이스 무결성 컴퓨팅 시스템(620)은 디바이스 레벨 사기 탐지 신호에 기초하여 클라이언트 디바이스의 신뢰도 판정을 결정할 수 있고, 신뢰도 판정에 대응하는 선택된 신뢰도 그룹에 클라이언트 디바이스를 할당할 수 있다(622).
그런 다음, 디바이스 무결성 컴퓨팅 시스템(620)은 선택된 신뢰도 그룹에 대응하는 익명 인증서(611)를 생성 또는 선택하고, 클라이언트 디바이스에 익명 인증서(611)를 반환할 수 있다(623). 예를 들어, 디바이스 무결성 컴퓨팅 시스템은 디바이스 무결성 컴퓨팅 시스템에 의해 디바이스에 할당된 디바이스 신뢰도 레벨과 연관된 ECC DAA 검증 키에 대응하는 자격 증명을 생성할 수 있다. 클라이언트 디바이스(620)는 익명 인증서(611)를 수신하고 이를 클라이언트 디바이스(620)에서, 예를 들어 개인 키 저장소에 로컬적으로 안전하게 저장할 수 있다(602). 예를 들어 클라이언트 디바이스는 개인 키 저장소에 대한 마스터 키를 사용하여 인증서를 암호화할 수 있으므로 악의적인 당사자가 인증서를 남용하여 다른 디바이스에서 사용할 수 없도록 한다.
특정한 신뢰도 그룹에 대한 익명의 멤버십 인증서를 얻은 클라이언트 디바이스는 이 익명 인증서를 사용하여 디지털 컴포넌트 제공자 또는 기타 증명 토큰 수신자가 만든 다양한 요청의 일부로 증명 토큰을 조합하고 보낼 수 있다. 이 예에서 증명 토큰은 클라이언트 디바이스의 공개 키를 포함하지 않기 때문에 익명 증명 토큰이라고 할 수 있다. 그러한 요청의 예시가 도 7의 프로세스 흐름도로서 도시된다.
클라이언트 디바이스(700)는 디지털 컴포넌트 제공자 또는 다른 증명 토큰 수신자에 대한 요청(701)을 개시할 수 있다. 일부 구현예에서, 클라이언트 디바이스는 선택적으로 아래에 추가로 설명되는 바와 같이 요청이 증명 토큰 제한(702)을 초과하지 않는지 확인할 수 있다. 클라이언트 디바이스(700)는 예를 들어, 클라이언트 디바이스 상의 개인 키 저장소로부터 익명의 인증서를 검색하고(703), 상기 도 6에서 기술된 바와 같이 디바이스 무결성 컴퓨팅 시스템으로부터 인증서를 이전에 획득하였다.
클라이언트 디바이스(700)는 요청(711)을 생성하고, 검색된 익명 인증서로 그 요청에 서명한다(704). 요청을 생성하는 것은 예를 들어 요청 페이로드 및 요청 생성 타임스탬프를 포함하는 콘텐츠 세트를 생성하는 것을 포함할 수 있다. 요청 페이로드는 예를 들어 디지털 컴포넌트를 선택하는데 사용될 수 있는 데이터 또는 데이터 제거와 같이 증명 토큰 수신자에 의해 요청된 변경을 특정하는 데이터를 포함할 수 있다. 요청 생성 타임스탬프는 요청이 생성된 시간을 표시할 수 있다. 일부 경우에, 요청 생성 타임스탬프는 중복 요청이나 재생 공격을 감지할 수 있을 만큼 충분히 작은 시간 해상도를 갖는다. 예를 들어, 요청 생성 타임스탬프는 약 1밀리초 미만 또는 약 1마이크로초 미만의 시간 분해능을 가질 수 있다. 그룹 서명 방식이 확률적 그룹 서명 방식인 접근법에서, 클라이언트 디바이스(700)에 의한 동일한 요청(711)의 2개의 개별 서명은 다른 서명을 생성할 것이다. 이러한 접근법에서 요청(711)의 수신자는 동일한 서명을 가진 요청을 거부함으로써 중복된 요청 또는 재생 공격을 방지할 수 있다.
전술한 그리고 도 3 내지 도 5에서 설명된 다른 접근법들과 대조적으로, 요청(711)은 클라이언트 디바이스의 공개 키를 포함하지 않으며, 디바이스 무결성 토큰도 포함하지 않는다(도 3의 요청(311) 및 도 5의 요청(511)과 비교). 이전에 설명된 접근법의 이러한 증명 토큰 기능은 현재 접근법의 그룹 서명 방식에서 필요하지 않으며, 여기서 클라이언트 디바이스의 익명 인증서 C 소유 및 사용은 클라이언트 디바이스가 디바이스 무결성 컴퓨팅 시스템에서 관리되는 신뢰도 그룹의 구성원임을 나타낸다. 클라이언트 디바이스는 퍼블리시된 그룹 서명 함수 sign(message, C)을 사용하여 익명 인증서 C를 사용하여 요청(711)에 서명한다. 예를 들어, 클라이언트 디바이스(700)는 익명 인증서 C를 사용하여 콘텐츠 세트의 디지털 서명을 생성할 수 있다. 예를 들어, 클라이언트 디바이스는 디바이스 무결성 서버에 의해 클라이언트 디바이스에 이전에 제공된 ECC DAA 자격 증명으로 ECC DAA 서명 방식을 사용하여 요청에 서명할 수 있다.
클라이언트 디바이스는 요청(711)을 수신자의 컴퓨팅 시스템(720)으로 송신한다(705). 수신자가 디지털 컴포넌트 제공자이면, 클라이언트 디바이스(700)는 디지털 컴포넌트 배포 시스템에 요청을 전송할 수 있으며, 이 시스템은 차례로 적절한 디지털 컴포넌트 제공자에게 요청을 전달한다.
수신자 컴퓨팅 시스템(720)은 요청을 수신한다(722). 클라이언트 디바이스(700)로부터 요청(711)을 수신하기 전에, 수신자 컴퓨팅 시스템(720)은 디바이스 무결성 컴퓨팅 시스템의 M개의 신뢰도 클래스에 대한 M개의 상이한 그룹 검증 키 세트를 수신한다(721). 디바이스 무결성 컴퓨팅 시스템(740)은 이러한 M개의 그룹 검증 키를 퍼블리시하고(741), 새로운 그룹 검증 키를 주기적으로(예를 들어, 매시간, 일, 주 또는 적절한 다른 기간마다) 다시 퍼블리시할 수 있으며, 이 경우 증명 토큰 수신자는 클라이언트 디바이스의 요청을 승인하는데 사용할 새 그룹 검증 키를 주기적으로 수신한다. 한 접근법에서, 그룹 검증 키는 잘 알려진 URL을 사용하여 잘 알려진 경로에 퍼블리시되어, 임의의 수신자 컴퓨팅 시스템(720)이 표준 HTTP 요청을 사용하여 그룹 검증 키를 가져올 수 있다. 경로는 날짜/시간 정보를 인코딩할 수 있거나 그룹 검증 키를 포함하는 메타데이터는 키 만료 날짜를 인코딩할 수 있으므로, 아래에서 추가로 논의되는 바와 같이, 수신자 컴퓨팅 시스템이 키가 최신인지 여부를 결정할 수 있도록 한다.
수신자 컴퓨팅 시스템(720)은 요청의 적시성을 승인(validate)한다(723). 예를 들어, 수신자는 요청 생성 타임스탬프를 검토하여 무엇보다도 요청이 중복(또는 재생 시도)이 아니며 요청이 오래되지 않았는지(예: 요청 생성 타임스탬프와 수신자 컴퓨팅 시스템이 임계값 내에서 요청을 수신한 시간의 차이)를 확인할 수 있다.
수신자 컴퓨팅 시스템(720)은 요청의 익명 서명 및 신뢰도를 승인한다(724). 예를 들어, 수신자는 M개의 퍼블리시된 그룹 검증 키 세트에서 각각의 퍼블리시된 그룹 검증 키 K에 대해 검증 함수 verify(sign(message,C), K)를 평가하여 익명 서명을 승인할 수 있다. 검증 함수는 예를 들어 디바이스 무결성 서버에 의해 이전에 퍼블리시된 ECC DAA 검증 키를 사용하여 계산되는 ECC DAA 서명 검증 함수일 수 있다. 함수가 모든 퍼블리시된 그룹 검증 키 K에 대해 FALSE이면, 수신자는 요청이 위조되었거나 클라이언트 디바이스(700)가 어떤 신뢰도 그룹에도 속하지 않았다고 결정할 수 있다. 반면에, 함수가 특정 그룹 검증 키 K에 대해 TRUE이면, 클라이언트 디바이스(700)는 그 특정 그룹 검증 키 K에 대응하는 신뢰도 그룹에 속한다.
이들 유효성 검사를 모두 통과하면, 증명 토큰 수신자는 예를 들어 위에서 논의된 바와 , 같이, 설정을 변경하고, 사용자 데이터를 추가 또는 제거하고, 디지털 컴포넌트를 전달하는 등 요청에 응답할 수 있다(725). 디지털 컴포넌트를 전달하는 것을 포함하는 요청의 경우, 응답(725)은 적절한 디지털 컴포넌트(712)를 클라이언트 디바이스(700)에 선택적으로 송신하는 것을 포함할 수 있다. 클라이언트 디바이스(700)는 디지털 컴포넌트를 수신한다(706). 차례로, 클라이언트 디바이스(700)는 클라이언트 디바이스(700)의 사용자에게 디지털 컴포넌트를 제시할 수 있다.
한편, 전술한 그리고 도 6 및 도 7에 도시된 그룹 서명 접근법은 클라이언트 디바이스의 디바이스 공개 키에 기초한 추적을 방지하여 클라이언트 디바이스 또는 사용자의 프라이버시를 강화하며, 또한 증명 토큰 수신자(예: 디지털 컴포넌트 제공자)가 증명 토큰 수신자에게 부당한 양의 요청을 보내는 악의적인 디바이스 또는 애플리케이션을 식별하는 것을 방지할 수 있다. 따라서, 일부 접근법에서 클라이언트 디바이스는 과도한 양의 증명 토큰을 보내는 것으로부터 클라이언트 디바이스를 억제할 수 있는 신뢰할 수 있는 조절기를 포함할 수 있다. 다시 도 7을 참조하면, 조절기는 예를 들어 요청이 진행되게 하기 전에 개시된 요청이 증명 토큰 제한을 초과하지 않는지 검증하는 동작(702)을 수행할 수 있다. 조절기는 예를 들어 스레드, 프로세스, 서브루틴 또는 클라이언트 디바이스의 신뢰 운영 체제의 기타 컴포넌트일 수 있다. 조절기는 도 6 내지 8의 그룹 서명 접근법의 맥락에서 아래에서 설명되며, 조절기가 본 명세서에 기술된 증명 토큰 맥락 중 임의의 것에서 증명 토큰의 양을 제한하는데 사용될 수 있다. 예를 들어, 조절기는 도 3의 요청(311) 또는 도 5의 요청(511)을 제한하기 위해 사용될 수 있다.
이러한 조절기 접근법의 예시가 도 8의 프로세스 흐름도에 도시되어 있다. 디지털 컴포넌트 제공자 및 다른 요청 수신자 또는 증명 토큰을 포함하는 다른 통신과 같은 다양한 증명 토큰 수신자(850)는 증명 토큰 수량 제한을 표시하는 정보를 퍼블리시할 수 있다(851). 예를 들어, 증명 토큰 수신자는 (1) 선택된 시간 프레임 내에 각 개별 클라이언트 디바이스로부터 수신자의 선택된 목적지 도메인으로 보낼 수 있는 토큰 수에 대한 제한(예: Y초, 분 또는 시간 내 요청 X개 이하); (2) 선택된 시간 프레임 내에 개별 클라이언트 디바이스의 하나 이상의 선택된 애플리케이션으로부터 수신자의 선택된 목적지 도메인으로 보낼 수 있는 토큰 수에 대한 제한(예: Y초, 분 또는 시간 내 애플리케이션 A로부터 또는 애플리케이션 A가 아닌 임의의 애플리케이션으로부터 요청 X개 이하); (3) 선택된 시간 프레임 내에 개별 클라이언트 디바이스로부터 수신자의 선택된 목적지 도메인 내에 선택된 엔드포인트로 보낼 수 있는 토큰 수에 대한 제한; (4) 선택된 시간 프레임 내에 클라이언트 디바이스 상의 하나 이상의 선택된 애플리케이션으로부터 선택된 목적지 도메인 내의 선택된 엔드포인트로 보낼 수 있는 토큰 수에 대한 제한; 또는 (5) 그러한 제한 중 둘 이상의 조합을 퍼블리시할 수 있다.
조절기(830)는 클라이언트 디바이스(800)의 신뢰 프로그램(820)(예를 들어, 운영 체제)의 컴포넌트로서 퍼블리시된 토큰 수량 제한 정보를 수신한다(821). 퍼블리시된 토큰 수량 제한 정보는 다양한 방법으로 수신될 수 있다. 한 가지 접근법에서, 각 증명 토큰 수신자는 토큰 수신자의 개인 키로 서명된 파일에 토큰 수량 정보를 퍼블리시한다. 신뢰할 수 있는 크롤러는 주기적으로 해당 파일을 가져오고(토큰 수신자에 대한 공개 키와 함께) 해당 파일을 각 클라이언트 디바이스(800)에 전달한다. 그러면 각 클라이언트 디바이스의 조절기(830)는 토큰 수신자의 서명을 검증한 후 조절 요구 사항을 따른다. 예를 들어, 조절기(830)는 제한을 초과하는 요청에 대한 증명 토큰을 생성하지 않음으로써 제한이 초과되지 않도록 할 수 있다.
다른 접근법에서, 각 토큰 수신자는 서명된 토큰 수량 정보를 디지털 배포 플랫폼(예: 모바일 앱을 다운로드할 수 있는 모바일 앱 스토어)에 제출한다. 디지털 배포 플랫폼은 토큰 수량 정보를 검증하고 서명한다. 각 토큰 수신자는 두 번 서명된 토큰 수량 정보를 클라이언트 디바이스(800)에 전달한다. 그러면 각 클라이언트 디바이스의 조절기(830)는 토큰 수신자 및 디지털 배포 플랫폼 둘 모두의 서명을 검증한 후 조절 요구 사항을 따른다. 예를 들어, 조절기(830)는 제한을 초과하는 요청에 대한 증명 토큰을 생성하지 않음으로써 제한이 초과되지 않도록 할 수 있다.
클라이언트 디바이스의 애플리케이션(810)이 증명 토큰(811)에 대한 신뢰 프로그램(820)에 대한 요청을 개시할 때, 신뢰 프로그램(820)은 이 요청을 수신한다(822). 신뢰 프로그램(820)은 그런 다음 요청을 따르는 것이 클라이언트 디바이스로 하여금 퍼블리시된 토큰 수량 제한 중 하나 이상을 초과하게 하는지 여부를 평가하기 위해 조절기를 호출할 수 있다(823). 요청이 퍼블리시된 토큰 수량 제한 중 하나 이상을 초과하면, 신뢰 프로그램(820)은 증명 토큰 요청을 거부한다(단계 823a). 요청이 퍼블리시된 토큰 수량 제한을 초과하지 않는 경우, 신뢰 운영 체제(820)는 증명 토큰이 생성되어 적절한 증명 토큰 수신자에게 전송되게 한다(단계 823b).
상기 기술에 더하여, 사용자가 본 명세서에 기술된 시스템들, 프로그램들 또는 구성들이 사용자 정보의 수집(예를 들어, 사용자의 소셜 네트워크에 관한 정보, 사회적 액션들 또는 활동들, 직업, 사용자의 선호들 또는 사용자의 현재 위치)을 하는 경우 및 콘텐츠 또는 서버로부터 통신에 사용자가 전송되는 경우에 관한 선택을 하게 하는 제어들이 사용자에게 제공될 수 있다. 추가로, 특정 데이터는 그것이 저장되거나 사용되기 전에 하나 이상의 다양한 방식들로 취급되어, 개인적으로 식별가능한 정보는 제거된다. 예를 들면, 사용자의 신원은 사용자에 관한 개인적으로 식별가능한 정보(예: 전화번호, IMEI, 디바이스 시리얼 번호)가 결정될 수 없도록 취급되거나 또는 사용자의 지리적 위치는 위치 정보가 획득된 곳에서 일반화되어(시, 우편번호 또는 주 수준으로), 사용자의 특정한 위치가 결정될 수 없도록 한다. 따라서, 사용자는 사용자에 관한 어떤 정보가 수집될지, 정보가 어떻게 사용될지, 정보 보유 정책 그리고 어떤 정보가 사용자에게 제공될지에 관한 제어를 가질 수 있다.
도 9는 상기 기술된 동작들을 수행하는데 사용될 수 있는 예시적 컴퓨터 시스템(900)의 블록 다이어그램이다. 시스템(900)은 프로세서(910), 메모리(920), 저장 디바이스(930) 및 입력/출력 디바이스(940)를 포함한다. 컴포넌트들(910, 920, 930 및 940) 각각은 예를 들면, 시스템 버스(950)를 사용하여 상호 연결될 수 있다. 프로세서(910)는 시스템(900) 내에서 실행하기 위한 명령어들을 프로세싱할 수 있다. 일부 구현예에서, 프로세서(910)는 단일-스레드 프로세서이다. 다른 구현예에서, 프로세서(910)는 멀티-스레드 프로세서이다. 프로세서(910)는 메모리(920) 또는 저장 디바이스(930)에 저장된 명령어들을 프로세싱할 수 있다.
메모리(920)는 시스템(900) 내에 정보를 저장한다. 일 구현예에서, 메모리(920)는 컴퓨터 판독가능 매체이다. 일부 구현예에서, 메모리(920)는 휘발성 메모리 유닛이다. 다른 구현예에서, 메모리(920)는 비휘발성 메모리 유닛이다.
저장 디바이스(930)는 시스템(900)에 대한 대형 저장소를 제공할 수 있다. 일부 구현예에서, 저장 디바이스(930)는 컴퓨터 판독가능 매체이다. 다양한 상이한 구현예에서, 저장 디바이스(930)는 예를 들면, 하드 디스크 디바이스, 광학 디스크 디바이스, 다수의 컴퓨팅 디바이스들(예를 들면, 클라우드 저장 디바이스)에 의해 네트워크를 통해 공유되는 저장 디바이스 또는 일부 기타 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(940)는 시스템(900)에 대한 입력/출력 동작들을 제공한다. 일부 구현예에서, 입력/출력 디바이스(940)는 네트워크 인터페이스 디바이스 예를 들어, 이더넷 카드, 직렬 통신 디바이스(예를 들어, RS-232 포트) 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현예에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 다른 외부 디바이스들(960) 예를 들어, 키보드, 프린터 및 디스플레이 디바이스들에 송신하도록 구성된 드라이버 디바이스들을 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스들, 모바일 통신 디바이스들, 셋톱 박스 텔레비전 클라이언트 디바이스들 등과 같은 다른 구현예들도 사용될 수 있다.
예시적 프로세싱 시스템이 도 9에서 기술되었지만, 본 발명의 구현예들 및 본 명세서에 기술된 기능적 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 다른 유형의 디지털 전자 회로에서, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장 매체(또는 매체들)에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트들 또는 매체(예를 들면, 다수의 CD들, 디스크들, 또는 다른 저장 디바이스들)이거나 또는 그에 포함될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에서 데이터 프로세싱 장치에 의해 수행되는 동작들로서 구현될 수 있다.
용어 "데이터 프로세싱 장치"는 예시로서 프로그래머블 프로세서, 컴퓨터, 시스템 온 칩 또는 앞서 언급된 것들 중 다수의 것들 또는 조합들을 포함하는 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함한다. 상기 장치는 특수 목적 논리 회로, 예를 들어 FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)을 포함할 수 있다. 또한, 장치는 하드웨어 이외에 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임(cross-platform runtime) 실행 환경, 가상 머신 또는 그들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드로도 알려져 있음)은 컴파일된 또는 인터프리트된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성될 수 있으며, 독립 실행형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 객체로서 또는 컴퓨팅 환경에서 사용하기에 적합한 기타 단위를 포함하는 임의의 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만, 반드시 그런 것은 아니다. 프로그램은 다른 프로그램들이나 데이터, 예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트들을 가지는 파일의 부분에, 문제되는 프로그램 전용 단일의 파일에 또는 다수의 조정된 파일들, 예를 들어, 하나 이상의 모듈들, 서브프로그램 또는 코드의 일부를 저장하는 파일들에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치되어 있거나 다수의 사이트들에 걸쳐서 분산되어 있고 통신 네트워크에 의해 상호연결된 다수의 컴퓨터들에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스들 및 논리 흐름들은 입력 데이터를 동작하고 출력을 생성함으로써 액션들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 프로세스들 및 논리 흐름들은 또한 FPGA 또는 ASIC와 같은 특수 목적 논리 회로에 의해 수행될 수 있고, 장치는 또한 특수 목적 논리 회로로서 구현될 수 있다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은, 예시로서, 범용 및 전용 마이크로프로세서들을 포함한다. 일반적으로, 프로세서는 읽기-전용 메모리 또는 랜덤 액세스 메모리 또는 둘 모두로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령어들에 따라 액션들을 수행하기 위한 프로세서 및 명령어들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대형 저장 디바이스들 예를 들면, 자기적, 자기-광학 디스크들 또는 광학적 디스크들 또한 포함하거나 또는 그로부터 데이터를 수신하거나 그에 데이터를 전송하기 위해 동작적으로 결합될 수 있다. 그러나, 컴퓨터는 상기 디바이스들을 반드시 가져야하는 것은 아니다. 추가로, 컴퓨터는 다른 디바이스, 예를 들어, 몇 가지만 나열하면, 모바일 전화, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 휴대용 저장 디바이스 예를 들어, 범용 직렬 버스(USB) 플래시 드라이브에 내장될 수 있다. 컴퓨터 프로그램 명령어들 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어, EPROM, EEPROM 및 플래시 메모리 디바이스들과 같은 반도체 메모리 디바이스들; 예를 들어, 내부 하드 디스크들 또는 이동식 디스크들과 같은 자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태의 비휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보충되거나 그 안에 통합될 수 있다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에서 기술된 본 발명의 실시예들은 사용자에게 정보를 디스플레이하기 위해 예를 들어, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터와 같은 디스플레이 디바이스 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스 예를 들어, 마우스 또는 트랙볼을 갖는 컴퓨터에서 구현될 수 있다. 다른 종류의 디바이스들도 사용자와의 인터렉션을 제공하는데 사용될 수 있다. 예를 들어, 사용자에게 제공되는 피드백은 시각 피드백, 청각 피드백 또는 촉각 피드백과 같은 임의의 형태의 감각적 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가로, 컴퓨터는 사용자에 의해 사용되는 디바이스에 문서를 송수신함으로써 예를 들어, 웹브라우저로부터 수신된 요청에 응답하여, 사용자의 사용자 디바이스상의 웹브라우저에 웹페이지를 전송함으로써 사용자와 인터렉션할 수 있다.
본 명세서에서 기술된 발명의 실시예는 예를 들어 데이터 서버와 같은 백엔드 컴포넌트, 어플리케이션 서버와 같은 미들웨어 컴포넌트 또는 그래픽 사용자 인터페이스를 가지는 사용자 컴퓨터 또는 사용자가 본 명세서에 기술된 본 발명의 구현예와 인터렉션할 수 있는 웹 브라우저와 같은 프론트엔드 컴포넌트 또는 하나 이상의 상기 백엔드, 미들웨어 또는 프론트엔드 컴포넌트들의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호연결될 수 있다. 통신 네트워크들의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 인터-네트워크(예를 들어, 인터넷) 및 피어투피어 네트워크(예를 들어, 애드혹 피어투피어 네트워크)를 포함한다.
컴퓨팅 시스템은 사용자들 및 서버들을 포함할 수 있다. 사용자와 서버는 일반적으로 서로 멀리 떨어져 있으며, 일반적으로 통신 네트워크를 통해 인터렉션한다. 사용자와 서버의 관계는 각각의 컴퓨터에서 실행되고 서로 사용자-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 일부 실시예에서, 서버는(예를 들어, 사용자 디바이스와 인터렉션하는 사용자에게 데이터를 디스플레이하고 사용자 입력을 수신하기 위해) 사용자 디바이스에 데이터(예를 들어, HTML 페이지)를 전송한다. 사용자 디바이스에서 생성된 데이터(예를 들어, 사용자 인터렉션의 결과)는 서버에서 사용자 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부내용을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 범위에 대한 제한으로서 해석되어서는 안되며, 오히려 특정한 발명의 특정한 실시예에 특정한 구성들에 대한 설명으로 해석되어야 한다. 별개의 실시예의 컨텍스트에서 본 명세서에서 기술되는 일정 구성들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 컨텍스트에서 기술된 다양한 구성들은 또한 다수의 실시예에서 개별적으로 또는 임의의 적절한 서브 조합으로 구현될 수 있다. 게다가, 구성들은 일정 조합으로 동작하고 심지어 초기적으로 그렇게 청구되는 것으로서 상기에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우, 조합으로부터 제거될 수 있고, 청구된 조합은 서브 조합 또는 서브 조합의 변형으로 안내될 수 있다.
유사하게, 동작들이 특정한 순서로 도면에서 도시되었지만, 이는 상기 동작들이 도시된 특정한 순서로 또는 시계열적 순서로 수행되어야 함을 요구하는 것으로서 또는 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안된다. 특정 환경에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예에서 다양한 시스템 컴포넌트들의 분리는 모든 실시예에서 그러한 분리가 필요한 것으로서 이해되어서는 안되며, 일반적으로 기술된 프로그램 컴포넌트들 및 시스템들은 단일의 소프트웨어 제품에 함께 통합되거나 다수의 소프트웨어 제품들에 패키징될 수 있다고 이해되어야 한다.
따라서, 본 발명의 특정한 실시예들이 기술되었다. 다른 실시예들도 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 기재된 액션들은 상이한 순서로 수행되고 여전히 원하는 결과들을 달성할 수 있다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 특정한 도시된 순서, 또는 시계열적 순서를 반드시 필요로 하지 않는다. 특정 구현예에서, 멀티태스킹과 병렬 프로세싱은 이점이 있다.

Claims (15)

  1. 컴퓨터로 구현되는 방법으로서,
    디바이스 무결성 컴퓨팅 시스템에 의해, 클라이언트 디바이스로부터, N개의 디바이스 무결성 엘리먼트들에 대한 요청을 수신하는 단계, 상기 요청은 상기 클라이언트 디바이스에 대한 디바이스 레벨 사기 탐지 신호를 포함하고, N개의 디바이스 무결성 엘리먼트들 각각에 대해, 공개 키 데이터는 (i) 상기 디바이스 무결성 엘리먼트에 대한 개별 공개 키 또는 (ii) 상기 디바이스 무결성 엘리먼트에 대한 개별 공개 키의 파생물 중 적어도 하나를 포함하며;
    상기 디바이스 무결성 컴퓨팅 시스템에 의해, 상기 디바이스 레벨 사기 탐지 신호에 적어도 기초하여, 상기 클라이언트 디바이스의 신뢰도에 대한 판정을 결정하는 단계;
    상기 N개의 디바이스 무결성 엘리먼트들 각각에 대해, 상기 디바이스 무결성 컴퓨팅 시스템에 의해, 상기 디바이스 무결성 엘리먼트에 대한 상기 공개 키 데이터를 적어도 사용하여 상기 디바이스 무결성 엘리먼트를 생성하는 단계, 상기 디바이스 무결성 엘리먼트는 상기 디바이스 무결성 엘리먼트에 대한 상기 공개 키 데이터를 포함하는 콘텐츠의 세트에 기초하여 생성된 디지털 서명을 포함하며, 상기 디지털 서명은 상기 결정된 신뢰도에 대한 판정에 대응하는 서명 키를 사용하여 생성되며; 및
    상기 디바이스 무결성 컴퓨팅 시스템에 의해, 상기 N개의 디바이스 무결성 엘리먼트를 상기 클라이언트 디바이스에 전송하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 청구항 1에 있어서, N은 2 이상의 정수인, 컴퓨터로 구현되는 방법.
  3. 청구항 1에 있어서,
    각 디바이스 무결성 엘리먼트는 상기 디바이스 무결성 엘리먼트에 대한 상기 콘텐츠의 세트를 포함하는 개별 디바이스 무결성 토큰을 포함하고, 상기 디바이스 무결성 엘리먼트에 대한 상기 콘텐츠의 세트는 신뢰도 판정이 결정된 시간을 표시하는 타임스탬프 및 상기 디바이스 무결성 엘리먼트에 대한 공개 키 데이터를 포함하며; 그리고
    각각의 디바이스 무결성 엘리먼트를 생성하는 단계는 상기 디바이스 무결성 컴퓨팅 시스템의 개인 키를 사용하여 상기 디바이스 무결성 엘리먼트에 대한 콘텐츠의 세트를 디지털 서명하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  4. 청구항 3에 있어서, 상기 디바이스 무결성 엘리먼트에 대한 콘텐츠의 세트는 상기 신뢰도의 판정을 더 포함하는, 컴퓨터로 구현되는 방법.
  5. 청구항 1에 있어서, 각각의 디바이스 무결성 엘리먼트를 생성하는 단계는 블라인드 서명 방식을 사용하여, 상기 디바이스 무결성 엘리먼트에 대한 공개 키 데이터의 블라인드 서명을 생성하는 단계를 포함하고, 상기 디바이스 무결성 엘리먼트는 블라인드 서명인, 컴퓨터로 구현되는 방법.
  6. 청구항 5에 있어서,
    클라이언트 디바이스들에 대한 M개의 신뢰도 레벨들에 대응하는 M개의 블라인드 서명 검증 키들을 퍼블리시하는 단계 및 M개의 검증 키들에 대응하는 M개의 개별 서명 키들을 보유하는 단계를 더 포함하는, 컴퓨터로 구현되는 방법.
  7. 청구항 6에 있어서, 상기 신뢰도 판정을 결정하는 단계는 상기 M개의 신뢰도 레벨들로부터 선택된 신뢰도 레벨을 상기 클라이언트 디바이스에 할당하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  8. 청구항 7에 있어서, 각각의 디바이스 무결성 엘리먼트에 대한 공개 키 데이터는 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 파생물을 포함하고, 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 파생물은 상기 블라인드 서명 방식을 사용하여 블라인드화된 블라인드 공개 키를 포함하는, 컴퓨터로 구현되는 방법.
  9. 청구항 8에 있어서, 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 파생물은 상기 디바이스 무결성 엘리먼트에 대한 공개 키의 블라인드 절단 암호화 해시를 포함하는, 컴퓨터로 구현되는 방법.
  10. 청구항 5에 있어서, 상기 블라인드 서명 방식은 개인적으로 검증가능한 블라인드 서명 방식을 포함하는, 컴퓨터로 구현되는 방법.
  11. 청구항 10에 있어서, 상기 개인적으로 검증가능한 블라인드 서명 방식은 IETF VOPRF 블라인드 서명 방식인, 컴퓨터로 구현되는 방법.
  12. 청구항 5에 있어서, 상기 블라인드 서명 방식은 공개적으로 검증가능한 블라인드 서명 방식을 포함하는, 컴퓨터로 구현되는 방법.
  13. 청구항 12에 있어서, 상기 공개적으로 검증 가능한 블라인드 서명 방식은 블라인드 RSA 서명 방식인, 컴퓨터로 구현되는 방법.
  14. 시스템으로서,
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서로 하여금 청구항 1 내지 13 중 어느 한 항의 방법을 수행하게 하도록 구성된 컴퓨터 판독가능 명령어가 저장되어 있는 하나 이상의 메모리를 포함하는, 시스템.
  15. 명령어가 저장된 비일시적 컴퓨터 판독가능 매체로서, 상기 명령어는 하나 이상의 컴퓨터에 의해 실행될 때, 상기 하나 이상의 컴퓨터로 하여금 청구항 1 내지 13 중 어느 한 항의 방법을 수행하게 하는, 비일시적 컴퓨터 판독가능 매체.
KR1020227006853A 2020-07-09 2021-03-16 익명 이벤트 증명 KR102639228B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL275947A IL275947A (en) 2020-07-09 2020-07-09 Anonymous Event Confirmation
IL275947 2020-07-09
PCT/US2021/022495 WO2022010548A1 (en) 2020-07-09 2021-03-16 Anonymous event attestation

Publications (2)

Publication Number Publication Date
KR20220042192A KR20220042192A (ko) 2022-04-04
KR102639228B1 true KR102639228B1 (ko) 2024-02-21

Family

ID=79553657

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227006853A KR102639228B1 (ko) 2020-07-09 2021-03-16 익명 이벤트 증명

Country Status (7)

Country Link
US (1) US20220417034A1 (ko)
EP (1) EP4008088A1 (ko)
JP (1) JP7389235B2 (ko)
KR (1) KR102639228B1 (ko)
CN (1) CN114391242B (ko)
IL (1) IL275947A (ko)
WO (1) WO2022010548A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230247268A1 (en) * 2022-01-31 2023-08-03 Roku, Inc. Computing System with Device Attestation Feature

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120047550A1 (en) * 2010-08-20 2012-02-23 Fujitsu Limited Method and System for Device Integrity Authentication
US20180375663A1 (en) * 2017-06-21 2018-12-27 Eric Le Saint Secure communications providing forward secrecy
US20200162251A1 (en) * 2018-11-09 2020-05-21 Ares Technologies, Inc. Systems and methods for distributed key storage

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2744818B1 (fr) * 1996-02-12 1998-03-27 Bull Sa Procede de verification de la conservation de l'integrite d'une requete emise sans protection par un client vers un serveur au moyen de l'integrite de la reponse
US6871276B1 (en) * 2000-04-05 2005-03-22 Microsoft Corporation Controlled-content recoverable blinded certificates
KR100847999B1 (ko) 2006-06-30 2008-07-23 포스데이타 주식회사 네트워크 기반의 dvr 시스템에 있어서 dvr 서버 및모니터링 대상 단말 접근 제어 방법
US8078876B2 (en) 2007-04-30 2011-12-13 Intel Corporation Apparatus and method for direct anonymous attestation from bilinear maps
JP4851497B2 (ja) 2007-07-17 2012-01-11 インテル コーポレイション 双線形マップからの直接匿名認証のための装置および方法
US8356181B2 (en) * 2007-11-15 2013-01-15 Intel Corporation Apparatus and method for a direct anonymous attestation scheme from short-group signatures
KR101523420B1 (ko) * 2010-04-12 2015-05-27 인터디지탈 패튼 홀딩스, 인크 부팅 처리에서의 단계화 제어 해제
US8832447B2 (en) * 2011-08-10 2014-09-09 Sony Corporation System and method for using digital signatures to assign permissions
US9219602B2 (en) * 2011-12-27 2015-12-22 Intel Corporation Method and system for securely computing a base point in direct anonymous attestation
JP5475035B2 (ja) 2012-02-24 2014-04-16 日本電信電話株式会社 認証権限移譲システム、情報端末、トークン発行局、サービス提供装置、認証権限移譲方法、及びプログラム
US9515832B2 (en) * 2013-06-24 2016-12-06 Microsoft Technology Licensing, Llc Process authentication and resource permissions
ES2695245T3 (es) * 2013-12-04 2019-01-02 Telefonica Digital Espana Slu Método implementado por ordenador y un sistema informático para evitar problemas de seguridad en el uso de certificados digitales en la firma de códigos y un producto de programa informático de los mismos
US9807610B2 (en) * 2015-03-26 2017-10-31 Intel Corporation Method and apparatus for seamless out-of-band authentication
US20170289185A1 (en) 2016-03-31 2017-10-05 Qualcomm Incorporated Device assisted traffic anomaly detection
US10397005B2 (en) * 2017-03-31 2019-08-27 Intel Corporation Using a trusted execution environment as a trusted third party providing privacy for attestation
EP3639471B1 (en) * 2017-06-14 2021-10-06 Harman International Industries, Incorporated Systems and methods for security of network connected devices
US10505978B2 (en) * 2017-08-24 2019-12-10 Visa International Service Association Utilizing trust tokens to conduct secure message exchanges
CN107800688B (zh) * 2017-09-28 2020-04-10 南京理工大学 一种基于收敛加密的云端数据去重和完整性审计方法
CN107948143B (zh) * 2017-11-15 2021-03-30 安徽大学 一种云存储中基于身份的隐私保护完整性检测方法和系统
US11438168B2 (en) 2018-04-05 2022-09-06 T-Mobile Usa, Inc. Authentication token request with referred application instance public key
US10154061B1 (en) 2018-05-04 2018-12-11 INTEGRITY Security Services, Inc. Cloaking authority system
JP6937280B2 (ja) 2018-09-13 2021-09-22 株式会社東芝 情報処理装置、リソース提供装置、情報処理方法、情報処理プログラム、リソース提供方法、リソース提供プログラム
CN109788482B (zh) * 2019-02-26 2021-09-03 武汉大学 一种车联网环境下车辆间的消息匿名认证方法及系统
WO2020210362A1 (en) * 2019-04-08 2020-10-15 Ares Technologies, Inc. Systems, devices, and methods for machine learning using a distributed framework
CN115619403A (zh) * 2019-10-24 2023-01-17 福建福链科技有限公司 一种安全的基于区块链的监控视频数据交易方法与系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120047550A1 (en) * 2010-08-20 2012-02-23 Fujitsu Limited Method and System for Device Integrity Authentication
US20180375663A1 (en) * 2017-06-21 2018-12-27 Eric Le Saint Secure communications providing forward secrecy
US20200162251A1 (en) * 2018-11-09 2020-05-21 Ares Technologies, Inc. Systems and methods for distributed key storage

Also Published As

Publication number Publication date
IL275947A (en) 2022-02-01
KR20220042192A (ko) 2022-04-04
WO2022010548A1 (en) 2022-01-13
JP2022551389A (ja) 2022-12-09
CN114391242B (zh) 2024-02-23
EP4008088A1 (en) 2022-06-08
JP7389235B2 (ja) 2023-11-29
US20220417034A1 (en) 2022-12-29
CN114391242A (zh) 2022-04-22

Similar Documents

Publication Publication Date Title
EP4022845B1 (en) Cryptographically secure data protection
US20230050222A1 (en) Cryptographically secure request verification
US11949688B2 (en) Securing browser cookies
JP2023096089A (ja) グループ署名による匿名イベント証明
KR102608325B1 (ko) 클라이언트 장치에서 통신의 무결성 보호
KR102639228B1 (ko) 익명 이벤트 증명
CN113015974B (zh) 针对隐私保护的可验证同意
CN116348874B (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