KR102526106B1 - 데이터를 보호하기 위한 시스템 및 방법 - Google Patents

데이터를 보호하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102526106B1
KR102526106B1 KR1020227020735A KR20227020735A KR102526106B1 KR 102526106 B1 KR102526106 B1 KR 102526106B1 KR 1020227020735 A KR1020227020735 A KR 1020227020735A KR 20227020735 A KR20227020735 A KR 20227020735A KR 102526106 B1 KR102526106 B1 KR 102526106B1
Authority
KR
South Korea
Prior art keywords
client device
response
data
challenge
verification challenge
Prior art date
Application number
KR1020227020735A
Other languages
English (en)
Other versions
KR20220092631A (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 KR20220092631A publication Critical patent/KR20220092631A/ko
Application granted granted Critical
Publication of KR102526106B1 publication Critical patent/KR102526106B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/107Network architectures or network communication protocols for network security for controlling access to devices or network resources wherein the security policies are location-dependent, e.g. entities privileges depend on current location or allowing specific operations only from locally connected terminals
    • 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/3271Cryptographic 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 challenge-response
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • 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/0869Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • H04W12/033Protecting confidentiality, e.g. by encryption of the user plane, e.g. user's traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/065Continuous authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/60Context-dependent security
    • H04W12/65Environment-dependent, e.g. using captured environmental data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/30Types of network names
    • H04L2101/365Application layer names, e.g. buddy names, unstructured names chosen by a user or home appliance name

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

데이터를 보호하기 위한 시스템 및 방법이 개시된다. 데이터에 대한 액세스를 요청하는 디바이스는 데이터에 대한 요청에 응답하여 제공된 데이터에 임베딩된 챌린지에 정확하게 응답해야 한다. 데이터를 수신하는 디바이스가 챌린지에 대해 정확한 응답을 생성할 수 있는 경우, 디바이스는 데이터를 수신하려는 디바이스로서 검증될 수 있다. 디바이스가 챌린지에 대해 정확한 응답을 생성할 수 있는 경우, 그 정확한 응답은 요청된 데이터가 의도한 대로 사용되고 있음을 나타낼 수 있다. 즉, 챌린지는 실제로 요청에 응답하여 데이터의 분배를 트리거한 서버에 의해 데이터를 사용하기에 적합한 환경으로 간주되는 요청에 지정된 컨텍스트가 실제로 사용될 컨텍스트라는 것을 보장할 수 있다.

Description

데이터를 보호하기 위한 시스템 및 방법{SYSTEMS AND METHODS FOR PROTECTING DATA}
인터넷은 다양한 데이터에 대한 액세스를 가능하게 한다. 일부 상황에서, 데이터에 대한 액세스는 예를 들어 데이터를 보호하는 패스워드에 의해 제한될 수 있다. 암호화 기술과 같은 다른 기술이 데이터에 대한 액세스를 제한할 수도 있다.
본 문서는 데이터를 보호하기 위한 기술을 설명한다. 본 문서 전체에 상세히 기술된 바와같이, 데이터는 그 데이터를 수신하는 디바이스(예를 들어, 데이터에 대한 액세스를 요청하는 디바이스)가 데이터에 대한 요청에 응답하여 제공된 데이터에 임베딩된 챌린지(challenge)에 정확하게 응답(예를 들어, 답변)하도록 요구함으로써 보호될 수 있다. 데이터를 수신하는 디바이스가 챌린지에 대한 정확한 응답을 생성할 수 있는 경우, 그 디바이스는 데이터를 수신하려는 디바이스로 검증될 수 있다. 부가적으로 또는 대안적으로, 디바이스가 챌린지에 대한 정확한 응답을 생성할 수 있을 때, 그 정확한 응답은 요청된 데이터가 예를 들어 데이터 요청에서 수신된 정보에 따라 의도된 대로 사용되고 있음을 나타낼 수 있다. 예를 들어, 챌린지에 대한 정확한 응답을 생성하기 위해, (예를 들어, 디바이스의 사용자가 아닌) 데이터를 수신하는 디바이스는 그 데이터가 실제로 사용되고 있는 컨텍스트가 데이터 요청에 지정된 제안된 컨텍스트와 일치(match)하는지를 확인하도록 요구될 수 있다. 다시 말해, 챌린지는 요청에 응답하여 데이터의 배포를 트리거한 서버에서 데이터를 사용하기에 적합한 환경으로 간주되는 상기 요청에 지정된 컨텍스트가 그 데이터가 실제로 사용될 컨텍스트라는 것을 보장할 수 있다. 이는 하나의 디바이스가 요청 내의 적절한 컨텍스트 정보를 사용하여 데이터에 대한 액세스를 요청하고, 이어서 데이터를 수신한 후 부적절한 환경으로 데이터를 포워딩하거나 리디렉션(redirect, 재전달)하는 "스푸핑(spoofing)" 활동을 방지할 수 있다.
일부 구현에서, 서버는 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신한다. 예를 들어, 요청은 상이한 엔티티(예를 들어, 디지털 컴포넌트를 제공하는 엔티티와 상이한 엔티티가 제공하는 웹 페이지 또는 기본 애플리케이션)에 의해 배포된 컨텐츠를 갖는 리소스에 통합될 디지털 컴포넌트에 대한 요청일 수 있다. 이 예에서, 클라이언트 디바이스의 환경을 특징짓는 속성은 디지털 컴포넌트가 제시될 컨텍스트를 지정할 수 있다. 컨텍스트는 디지털 컴포넌트가 프리젠테이션을 위해 통합될 애플리케이션 또는 웹 페이지에 의해 적어도 부분적으로 정의될 수 있다. 다양한 다른 정보가 요청의 일부가 될 수 있다. 예를 들어, 요청은 컨텍스트 정보 대신 또는 컨텍스트 정보에 추가하여 서버가 컨텍스트 정보를 검색할 수 있는 위치를 지정할 수 있다. 하나 이상의 속성은 클라이언트 디바이스의 브라우저의 공개키, 클라이언트 디바이스의 공개키, 클라이언트 디바이스의 어드레스, 서버의 쿠키 이름과 값 및 애플리케이션 이름의 임의의 조합을 포함할 수 있다.
서버는 수신된 하나 이상의 속성에 기초하여 응답 데이터를 선택한다. 일부 구현에서, 서버는 예를 들어, 요청에서 컨텍스트 정보를 사용하여(예를 들어, 애플리케이션의 유형, 이름 또는 다른 특성에 기초하여) 애플리케이션에서 사용자에게 제시될 디지털 컴포넌트를 선택할 수 있다. 일부 구현에서, 응답 데이터는 검증 챌린지와 함께 응답 데이터에 대한 액세스를 제어하는데 사용되는 응답 스크립트와 결합된다.
서버는 응답 데이터에 대한 액세스를 제어하는 검증 챌린지를 생성한다. 즉, 검증 챌린지에 대한 클라이언트 디바이스의 답변이 검증 챌린지에 정확하게 응답하는 경우 클라이언트 디바이스에게 응답 데이터에 대한 액세스 권한이 제공된다. 검증 챌린지에 대한 클라이언트 디바이스의 응답이 검증 챌린지에 정확하게 응답하지 않는 경우 클라이언트 디바이스는 응답 데이터에 액세스할 수 없다. 예를 들어, 서버는 클라이언트 디바이스만 해독할 수 있는 암호화된 고유값을 생성할 수 있다. 일부 구현에서, 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성이 검증 챌린지를 생성하는데 사용된다. 특정 예에서, 요청의 하나 이상의 속성은 또한 (예를 들어, 클라이언트 디바이스의 공개키를 사용하여) 고유값과 함께 암호화된다. 이들 속성은 클라이언트 디바이스에 의해 사용되어검증 챌린지 뒤의 서버 또는 서버들을 검증할 수 있다. 일부 구현에서, 응답 데이터 자체는 암호화된 데이터를 포함할 수 있어서, 클라이언트 디바이스가 검증 챌린지에 정확하게 응답하더라도, 클라이언트 디바이스는 여전히 응답 데이터를 사용자에게 제시하기 위해 응답 데이터의 적어도 일부를 해독할 수 있어야 한다. 이 추가 암호화는 응답 데이터에 액세스하기 위한 검증 챌린지를 바이패스(우회)하는 것을 방지할 수 있다.
서버는 검증 챌린지로 응답 데이터를 보안한다. 예를 들어, 선택된 디지털컴포넌트에 대한 액세스는 수신(하는) 클라이언트 디바이스가 검증 챌린지를 해독 및 처리할 수 있을 뿐만 아니라 그 검증 챌린지에 적절하게 응답할 수 있는지 여부에 기초하여 제공되거나 방지될 수 있다. 위에서 논의된 바와 같이, 일부 구현에서, 응답 데이터의 적어도 일부는 (예를 들어, 추가된 보안을 위해) 암호화될 수 있다. 이러한 구현에서, 암호화된 버전의 응답 데이터가 검증 챌린지에 포함된다. 그런 다음 서버는 어리지널 요청에 대해 클라이언트 디바이스로 검증 챌린지 및 응답 데이터를 전송할 수 있다. 예를 들어, 서버는 검증 챌린지와 함께 디지털 컴포넌트를 클라이언트 디바이스로 전송할 수 있다. 디지털 컴포넌트는 클라이언트 디바이스가 검증 챌린지에 정확하게 답변하지 않는 한 클라이언트 디바이스가 디지털 컴포넌트에 액세스하거나 이를 제시할 수 없는 방식으로 보안된다. 예를 들어, 디지털 컴포넌트 패키지는 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때만 클라이언트 디바이스가 클라이언트 디바이스상의 응답 데이터에 액세스할 수 있게 하는 실행 코드(예를 들어, 응답 스크립트)를 포함할 수 있다. 따라서, 실행 코드는 검증 챌린지에 정확하게 응답한 후에 만 디지털 컴포넌트를 렌더링할 수 있게 한다.
일부 구현에서, 디지털 컴포넌트 패키지는 검증 챌린지에 대한 예상 응답(예를 들어, 서버에 의해 생성된 고유값의 암호화 해시)을 포함한다. 검증 챌린지에는 서버에 의해 생성되었지만 클라이언트 디바이스의 공개키로 암호화된 고유값의 다른 복사본도 포함될 수 있다. 일부 구현에서, 검증 챌린지에 예상 응답을 추가하는 것에 추가하여 또는 그 대신에, 서버는 대칭 키 암호화 알고리즘을 사용하여 응답 데이터의 적어도 일부를 암호화할 수 있다.
예를 들어, 클라이언트 디바이스는 검증 챌린지를 수신하여, 예를 들어 클라이언트 디바이스에 검증 챌린지가 암호화된 공개키에 대응하는 개인키가 있는 경우 이를 해독한다. 즉, 검증 챌린지가 클라이언트 디바이스의 공개키로 암호화된 경우, 클라이언트 디바이스는 그의 개인키로 검증 챌린지를 해독할 수 있다. 검증 챌린지가 해독되면, 클라이언트 디바이스는 디지털 컴포넌트 패키지에서 고유값을 검색하여 그 고유값을 챌린지 응답으로 변환한다(예를 들어, 해독된 고유값의 암호화 해시를 생성함). 예를 들어, 클라이언트 디바이스는 고유값에 대해 보안 해시 알고리즘(Secure Hash Algorithm : SHA) 기능과 같은 암호화 해시 기능을 실행하여 암호화 해시를 생성할 수 있다. 클라이언트 디바이스는 응답 스크립트(예를 들어, 디지털 컴포넌트 스크립트)를 실행하고 생성된 챌린지 응답(예를 들어, 클라이언트 디바이스에서 생성된 고유값의 암호화 해시)을 스크립트에 제출할 수 있다. 스크립트는 제출된 해시와 예상 응답(예를 들어, 서버에서 생성된 암호화 해시)을 비교한다. 해시가 일치하는 경우, 클라이언트 디바이스는 디지털 컴포넌트에 액세스하여 렌더링한다. 해시가 일치하지 않는 경우 디지털 컴포넌트에 대한 액세스는 방지된다.
클라이언트 디바이스는 챌린지에서 수신된 복호화된 하나 이상의 속성을 오리지널 데이터 요청의 하나 이상의 속성과 비교함으로써 검증 챌린지 자체를 검증한다. 속성이 일치하면 클라이언트 디바이스는 고유값의 암호화 해시를 디지털 컴포넌트 스크립트에 제출한다. 속성이 일치하지 않으면 클라이언트 디바이스는 응답 스크립트를 실행하는 것을 자제할 수 있다. 위에서 언급한 바와 같이, 응답 데이터의 일부 또는 전체는 예를 들어, 디지털 컴포넌트 스크립트가 바이패스되어 응답 데이터를 검색할 수 없도록 암호화될 수 있다. 그러한 경우, 클라이언트 디바이스가 해시들이 일치한다고 결정할 때, 클라이언트 디바이스는 응답 데이터를 (응답 스크립트를 사용하여) 해독하고 사용자에게 데이터를 제시할 수 있다.
일부 구현에서, 요청은 클라이언트 디바이스 자체가 아니라 중개 서버로부터 수신된다. 이러한 구현에서, 서버는 요청으로부터 클라이언트 디바이스의 어드레스를 검색하여 해당 어드레스로 응답 데이터와 함께 검증 챌린지를 전송할 수 있다. 이는 응답 데이터가 애플리케이션에 제시되어야 하는 경우에 유리할 수 있지만, 애플리케이션 내의 컨텍스트 정보는 사용자 디바이스에 알려진 것이 아니라 애플리케이션 제공자의 중개 서버에 알려져 있다.
개시된 데이터 보호 기술은 다양한 장점을 제공한다. 예를 들어, 개시된 데이터 보호 기술은 요청된 데이터가 사용자에게 제시될 환경의 검증을 가능하게 한다. 검증은 요청 자체에 대한 응답이 클라이언트와 서버 간의 추가 통신없이 환경을 검증하는 방법을 포함하는 방식으로 수행된다. 더욱이, 이 기술은 클라이언트 디바이스가 서버로부터의 데이터를 검증하여, 요청 자체가 클라이언트 디바이스에 의해 또는 클라이언트 디바이스를 대신하여 응답 데이터를 제시하기 위한 적절한 환경 속성으로 전송되었는지 확인하게 한다.
개시된 데이터 보호 기술이 제공하는 다른 이점은 중개 서버에 의한 공격 및/또는 사기 시도(fraud attempt)에 있다. 예를 들어, 응답 데이터가 중개 서버의 네트워크를 통해 서버에서 클라이언트 디바이스로 전송될 때, 하나 이상의 중개 서버는 응답 데이터를 다른 사용자 및/또는 다른 환경에 제시하려고 시도하는 상이한 클라이언트 디바이스로 응답 데이터를 리디렉션하려고 시도할 수 있고, 개시된 기술은 상이한 클라이언트 디바이스가 검증 챌린지에 정확하게 응답할 수 없어 응답 데이터에 액세스할 수 없기 때문에 이러한 사기를 방지한다.
본 명세서에 개시된 기술은 데이터에 대한 불법 액세스를 방지하는 것이 바람직한 임의의 적절한 컨텍스트(상황)에 있을 수 있다. 순전히 본 발명을 보다 구체적인 용어로 설명하기 위해, 보호될 데이터가 공고 데이터 또는 여행 애플리케이션용 데이터인 예시적인 컨텍스트가 아래에서 논의된다. 이들은 본 명세서에 개시된 기술이 사용될 수 있는 컨텍스트의 비-제한적인 예이며, 다른 컨텍스트가 가능하다는 것이 이해될 것이다.
일부 구현에서, 하나 이상의 서버는 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성들을 포함하는 데이터 요청을 수신한다. 하나 이상의 서버는 하나 이상의 속성에 기초하여 응답 데이터를 선택하고, 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 사용하여, 클라이언트 디바이스가 검증 챌린지에 대한 정확한 답변을 생성하는지 여부에 기초하여 응답 데이터에 대한 액세스를 제어하는 검증 챌린지를 생성한다. 따라서, 클라이언트 디바이스에 의해 생성된 답변이 검증 챌린지에 정확하게 응답하고 클라이언트 디바이스가 검증 챌린지에 지정된 환경의 하나 이상의 속성을 검증하는 경우 클라이언트 디바이스에게 응답 데이터에 대한 액세스를 제공하고, 클라이언트 디바이스에 의해 생성된 응답이 검증 챌린지에 정확하게 응답하지 않거나 클라이언트 디바이스가 검증 챌린지에 지정된 환경의 하나 이상의 속성을 검증하지 않는 경우 클라이언트 디바이스가 응답 데이터에 액세스하는 것을 방지한다. 하나 이상의 서버는 검증 챌린지로 응답 데이터를 보안하고, 그리고 검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송한다.
클라이언트 디바이스는 챌린지 응답을 생성하고 챌린지 응답이 검증 챌린지에 대한 유효 응답인지 여부를 결정한다. 챌린지 응답이 검증 챌린지에 대한 유효 응답이라는 결정에 응답하여, 클라이언트 디바이스는 응답 데이터에 액세스한다.
일부 구현에서, 클라이언트 디바이스에게 응답 데이터에 대한 액세스를 제공하는 것은 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때 클라이언트 디바이스가 클라이언트 디바이스에 대한 응답 데이터에 액세스할 수 있게 하는 실행 코드를 클라이언트 디바이스에게 제공하는 것을 포함한다.
일부 구현에서, 하나 이상의 속성은 클라이언트 디바이스의 브라우저의 공개키, 클라이언트 디바이스의 공개키, 클라이언트 디바이스의 어드레스, 서버의 쿠키 이름과 값, 또는 애플리케이션 이름 중 하나 이상을 포함한다. 또한, 일부 구현에서, 검증 챌린지를 생성하는 것은 고유값을 생성하고, 클라이언트 디바이스의 공개키를 검색하고, 클라이언트 디바이스의 공개키를 사용하여 상기 요청의 고유값 및 하나 이상의 속성을 암호화하고, 그리고 암호화된 고유값 및 하나 이상의 속성 중 하나를 포함하는 검증 챌린지를 생성하는 것을 포함한다.
일부 구현에서, 하나 이상의 서버는 클라이언트 디바이스의 공개키를 사용하여, 응답 데이터의 적어도 일부를 암호화함으로써 검증 챌린지로 응답 데이터를 보안한다. 또한, 일부 구현에서, 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신하는 것은 하나 이상의 속성의 적어도 일부를 저장하는 중개 서버로부터 데이터 요청을 수신하는 것을 포함한다.
일부 구현에서, 하나 이상의 서버는 데이터 요청으로부터 클라이언트 디바이스의 어드레스를 추출하고 검증 챌린지를 클라이언트 디바이스의 어드레스로 전송함으로써 검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송한다.
본 명세서에서 설명된 주제의 하나 이상의 기술의 세부 사항은 첨부 도면 및 이하의 설명에서 설명된다. 본 주제의 다른 특징, 양태 및 이점은 상세한 설명, 도면 및 청구 범위로부터 명백해질 것이다.
도 1은 본 개시에서 논의된 기술에 따른 통신 시퀀스를 도시한다.
도 2는 검증 챌린지로 응답 데이터를 보안하기 위한 블록도이다. .
도 3은 데이터 요청에 포함되고 서버에 의해 수신될 수 있는 예시적인 속성을 포함하는 데이터 구조를 도시한다.
도 4는 검증 챌린지용 필드를 포함하는 데이터 구조의 예를 도시한다.
도 5는 클라이언트 디바이스가 검증 챌린지에 답변하기 위해 수행할 수 있는 예시적인 동작의 블록도이다.
도 6은 응답 데이터에 대한 액세스를 제공할지 또는 방지할지 여부를 결정하기 위해 스크립트가 수행할 수 있는 동작을 도시한다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
도 1은 본 개시에서 논의된 기술에 따른 통신 시퀀스를 묘사하는 시스템(100)을 도시한다. 시스템(100)은 클라이언트 디바이스(102)를 포함한다. 클라이언트 디바이스(102)는 스마트 폰, 전자 태블릿 또는 다른 적절한 클라이언트 디바이스일 수 있다. 시스템(100)은 또한 클라이언트 디바이스와 통신하기 위한 하나 이상의 서버(104)를 포함한다. 구체적으로, 하나 이상의 서버(104)는 클라이언트로부터 데이터 요청을 수신하여, 보안(된) 응답 데이터를 포함하는 검증 챌린지를 클라이언트 디바이스(102)로 전송한다. 데이터 요청은 임의의 사용자 입력 없이 및/또는 임의의 사용자 입력과 독립적으로 클라이언트 디바이스상의 웹 브라우저 또는 다른 애플리케이션에 의해 생성된다. 클라이언트 디바이스는 검증 챌린지를 수신하여 챌린지 응답을 애플리케이션(106)(예를 들어, 응답 데이터가 사용자에게 제시될 브라우저 또는 다른 애플리케이션)에 제출한다.
도 2는 검증 챌린지로 응답 데이터를 보안하기 위한 프로세스(200)의 블록도이다. 동작(202)에서, (예를 들어, 서버(104) 중의) 하나 이상의 서버는 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신한다. 데이터 요청은 클라이언트 디바이스의 브라우저의 공개키, 클라이언트 디바이스의 공개키, 클라이언트 디바이스의 어드레스, 서버의 쿠키 이름과 값(예를 들어, 응답 데이터가 제시될 웹 페이지를 서비스하는 서버에 대한 쿠키의 이름과 값), 애플리케이션 이름 및 기타 적합한 속성 중 하나 이상을 포함할 수 있다. 응답 데이터를 제공할 웹 페이지, 애플리케이션 이름 및 기타 적절한 속성을 제공한다. 데이터 요청이 클라이언트 디바이스 자체로부터 수신되면, 클라이언트 디바이스는 그 데이터 요청에 포함되어야 하는 환경의 속성들을 결정할 수 있다.
일부 구현에서, 예를 들어, 중개 서버는 응답 데이터가 사용자에게 제시될 클라이언트 디바이스의 환경에 관한 일부 정보를 가질 수 있기 때문에, 데이터 요청은 중개 서버에 의해 생성된다. 구체적으로, 응답 데이터가 애플리케이션 내에서(예를 들어, 클라이언트 디바이스상에서 플레이되는 게임 내에서) 사용자에게 제시되는 경우, 특히 애플리케이션과 상기 데이터를 제공하는 서버 간의 통신이 암호화된 경우, 클라이언트 디바이스는 애플리케이션에 액세스하여 응답 데이터가 제시될 환경을 결정하지 못할 수 있다. 그러나, 애플리케이션에 데이터를 제공하는 중개 서버는 환경에 관한 데이터를 가질 수 있다. 예를 들어, 애플리케이션이 여행 애플리케이션인 경우, (예를 들어, 검색 요청에 응답하여) 여행 정보를 애플리케이션에 제공하는 서버에는 응답 데이터가 제시될 환경 정보에 대한 더 나은 데이터가 있다. 즉, 사용자가 특정 여행 위치를 검색하는 경우, 해당 정보는 중개 서버에는 알려지지만 클라이언트 디바이스에는 알려지지 않는다. 따라서, 이들 구현에서, 중개 서버는 데이터 요청을 생성하고 전송한다. 일부 구현에서, 중개 서버는 중개 서버가 갖지 않을 수 있는 일부 속성(예를 들어, 클라이언트 디바이스상의 애플리케이션의 공개키)을 클라이언트 디바이스에 질의(query)한다.
도 3은 데이터 요청에 포함될 수 있고 서버에 의해 수신될 수 있는 예시적인 속성을 포함하는 데이터 구조(300)를 도시한다. 공개키(302)는 클라이언트 디바이스가 검증 챌린지를 해독하는데 사용할 수 있는 클라이언트 디바이스의 개인키에 대응하는 공개키이다. 일부 구현에서, 공개키는 디바이스 자체의 공개키이다. 다른 구현에서, 공개키는 응답 데이터가 사용자에게 제시될 애플리케이션에 대해 생성된 공개키이다. 예를 들어, 웹 브라우저에는 클라이언트 디바이스 공개키/개인키 외에 또는 대신에 공개키/개인키 쌍이 생성될 수 있다. 따라서, 응답 데이터(예를 들어, 데이터 요청에 응답하여)가 제시될 애플리케이션이 브라우저인 경우, 데이터 요청은 그 브라우저 내의 개인키에 대응하는 공개키를 포함할 수 있다. 서버는 다양한 공개키/개인키 인프라(PKI) 구현을 사용하여 클라이언트 디바이스에 대한 공개키 및 개인키를 생성할 수 있다.
인터넷 프로토콜(IP) 어드레스(304)는 검증 챌린지가 전송될 수 있는 클라이언트 디바이스의 IP 어드레스이다. 요청이 클라이언트 디바이스로부터 수신되는 구현에서, 데이터 요청을 생성하는 클라이언트 디바이스상의 애플리케이션은 클라이언트 디바이스의 운영 체제에 클라이언트 디바이스의 IP 어드레스를 질의할 수 있다. 데이터 요청이 클라이언트 디바이스로부터 수신되는 것이 아니라 예를 들어 중개 서버로부터 수신되는 구현에서, 중개 서버는 클라이언트 디바이스에 어드레스를 질의하거나 응답 데이터가 디스플레이될 애플리케이션을 사용하여 송수신된 통신에 기초하여 클라이언트 디바이스의 어드레스를 결정할 수 있다.
URL(306)은 응답 데이터가 디스플레이될 웹 페이지의 어드레스일 수 있다. 예를 들어, 응답 데이터를 브라우저에 표시하려는 경우, URL은 웹 사이트 및/또는 웹 페이지에 관한 다른 정보뿐만 아니라 웹 사이트 및/또는 웹 페이지의 컨텍스트 또는 유형을 서버에 알릴 수 있다. 애플리케이션 이름(308)은 응답 데이터가 디스플레이될 애플리케이션 이름이다. 필드(310)는 데이터 요청의 일부로서 서버에 의해 수신될 수 있는 하나 이상의 다른 속성을 포함할 수 있다. 다른 속성은 예를 들어 애플리케이션 내의 컨텍스트를 포함할 수 있다. 여행 애플리케이션의 경우, 컨텍스트는 사용자가 요청한 여행 위치일 수 있다. 승차 서비스 애플리케이션의 경우, 컨텍스트는 다른 사용자 선호도뿐만 아니라 사용자의 현재 위치 및 목적지일 수 있다. 일부 구현에서, 다른 속성 필드가 데이터 구조(300)에 추가될 수 있다.
도 2를 다시 참조하면, 동작(204)에서, (예를 들어, 서버들(104) 중의) 서버는 하나 이상의 속성에 기초하여 응답 데이터를 선택한다. 응답 데이터는 디지털 컴포넌트일 수 있다. 본 문서 전체에서 사용되는 바와같이, "디지털 컴포넌트"라는 문구는 디지털 컨텐츠의 개별 단위 또는 디지털 정보(예를 들어, 비디오 클립, 오디오 클립, 멀티미디어 클립, 이미지, 텍스트 또는 다른 컨텐츠 단위)를 지칭한다. 디지털 컴포넌트는 물리적 메모리 디바이스에 단일 파일 또는 파일 모음으로 전자적으로 저장될 수 있고, 디지털 컴포넌트는 비디오 파일, 오디오 파일, 멀티미디어 파일, 이미지 파일, 또는 텍스트 파일의 형태를 취할 수 있고, 광고가 디지털 컴포넌트의 유형이 되도록 광고 정보를 포함할 수 있다. 일부 구현에서, 디지털 컴포넌트는 디지털 컴포넌트의 데이터를 사용자에게 제시하기 위한 스크립트를 포함하거나 스크립트에 삽입될 수 있다. 이 스크립트에는 검증 챌린지에 대한 답변이 올바른지 여부를 결정하기 위한 실행 가능 명령들이 포함될 수 있다.
일부 구현에서, 검증 챌린지은 광고 컨텍스트에서 사용될 수 있다. 즉, 클라이언트 디바이스(예를 들어, 스마트 폰 또는 전자 태블릿)상의 웹 브라우저 또는 다른 애플리케이션은 사용자에게 프리젠테이션을 위해 광고가 클라이언트 디바이스로 전송되도록 요청할 수 있다. 서버는 속성들(예를 들어, 광고가 표시될 환경)에 기초하여 광고를 선택하여 클라이언트 디바이스로 다시 전송할 수 있다. 일부 구현에서, 광고는 광고 스크립트에 캡슐화된다. 선택된 광고를 포함하는 광고 스크립트는 검증 챌린지에 의해 보호될 응답 데이터일 수 있다.
일부 구현에서, 검증 챌린지는 여행 컨텍스트에서 사용될 수 있다. 예를 들어, 사용자 디바이스는 사용자가 시작 위치에서 종료 위치로 여행하기를 원할 때 데이터 요청을 생성할 수 있다. 데이터 요청은 하나 이상의 속성으로서 시작 위치 및 종료 위치를 포함할 수 있다. 또한, 데이터 요청은 사용자 및 사용자 디바이스에 관한 다른 정보를 포함할 수 있다. 서버가 데이터 요청을 수신하면, 서버는 클라이언트 디바이스로 전송할 응답 데이터(예를 들어, 디지털 컴포넌트)를 선택할 수 있다. 디지털 컴포넌트는 사용자가 이용할 수 있는 하나 이상의 차량에 관한 정보를 포함할 수 있다. 디지털 컴포넌트는 여행에 필요한 다른 정보를 포함할 수 있다. 게다가, 챌린지 검증 프로세스는 여행 상황에서 운전자에게 사용될 수 있다. 즉, 운전자의 클라이언트 디바이스는 서버로 전송된 운전자 환경의 속성을 이용하여 운전자가 운전 동작에 이용 가능함을 서버에 나타내는 데이터 요청을 생성할 수 있다. 이 속성은 운전자의 위치, 운전자의 식별(id), 운전자 클라이언트 디바이스의 공개키 및 위에서 논의된 임의의 속성을 포함하는 다른 적절한 속성을 포함할 수 있다.
도 2를 다시 참조하면, 동작(206)에서, (예를 들어, 서버(104) 중의) 서버는 응답 데이터에 대한 액세스를 제어하는 검증 챌린지를 생성한다. 검증 챌린지는 클라이언트 디바이스가 검증 챌린지에 대한 답변을 생성하는지 여부에 기초하여 응답 데이터에 대한 액세스를 제어한다. 구체적으로, 클라이언트 디바이스에 의해 생성된 답변이 검증 챌린지에 정확하게 응답하는 경우 클라이언트 디바이스는 응답 데이터에 대한 액세스를 제공받는다. 클라이언트 디바이스에 의해 생성된 답변이 검증 챌린지에 정확하게 응답하지 않는 경우 클라이언트 디바이스는 응답 데이터에 액세스하는 것이 방지된다. 서버는 다양한 방법으로 검증 챌린지를 생성할 수 있다. 일부 구현에서, 서버는 암호화를 사용하여 검증 챌린지을 생성할 수 있다. 서버는 고유값을 생성할 수 있다. 고유값은 예를 들어 숫자 값(예를 들어, 다중 숫자), 16진수 값, 단어, 구 또는 다른 적절한 고유값일 수 있다. 예를 들어, 서버는 난수 생성기를 사용하여 하나 이상의 알고리즘과 함께 고유값을 생성할 수 있다.
일부 구현에서, 고유값은 요청의 하나 이상의 파라미터를 사용하여 생성될 수 있다. 예를 들어, 서버는 요청으로부터의 IP 어드레스, 요청으로부터의 URL의 해시 및/또는 요청으로부터의 애플리케이션 이름을 사용하여 고유값을 생성할 수 있다. 아래는 고유값에 대한 예시적인 데이터 구조이다.
{고유값 :…
IP 어드레스: …
애플리케이션 이름 :…}
데이터 구조는 JSON(JavaScript Object Notation)과 유사한 포멧으로 저장할 수 있다. 일부 구현에서, 데이터 구조의 크기를 줄이기 위해, 이진 인코딩 방식(예를 들어, 프로토콜 버퍼 또는 cbor http://cbor.io)이 적용될 수 있다.
일부 구현에서, 서버는 클라이언트 디바이스의 공개키를 검색하거나 수신한다. 위에서 논의된 바와 같이, 클라이언트 디바이스의 공개키는 데이터 요청에 포함될 수 있고, 따라서 서버는 요청으로부터 클라이언트 디바이스의 공개키를 검색할 수 있다. 일부 구현에서, 서버는 클라이언트 디바이스 자체에 질의함으로써 클라이언트 디바이스로부터 공개키를 검색할 수 있다. 다른 예에서, 서버는 중개 서버로부터 클라이언트 디바이스의 공개키를 검색할 수 있다. 구현에서, 필요한 키가 클라이언트 디바이스상의 특정 애플리케이션으로부터 온 경우, 클라이언트 디바이스는 그 키에 액세스할 수 없지만, 대신 중개 서버가 그 키를 저장할 수 있다. 따라서, 서버는 중개 서버로부터 공개키를 검색할 수 있다.
서버가 클라이언트 디바이스의 공개키를 획득하여 고유값을 생성할 때, 서버는 클라이언트 디바이스의 공개키를 사용하여 고유값을 암호화한다. 암호화된 고유값은 검증 챌린지의 일부가 된다. 또한, 서버는 생성된 고유값의 암호화 해시를 생성할 수 있다. 서버는 고유값에 대해 보안 해시 알고리즘(Secure Hash Algorithm : SHA) 기능과 같은 암호화 해시 기능을 실행하여 암호화 해시를 생성할 수 있다. 서버는 고유값의 암호화 해시를 검증 챌린지에 추가한다. 암호화 해시는 예상 응답이 된다.
일부 구현에서, 암호화 해시는 클라이언트 디바이스상에서의 비교를 위해 스크립트 또는 다른 실행 가능 코드에 추가된다. 예를 들어, 스크립트는 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때 클라이언트 디바이스가 클라이언트 디바이스상의 응답 데이터에 액세스할 수 있게 하는 실행 코드일 수 있다. 클라이언트 디바이스는 검증 챌린지에 답변할 때 스크립트를 실행할 수 있다. 일부 구현에서, 서버는 클라이언트 디바이스의 공개키를 사용하여 데이터 요청으로 수신된 하나 이상의 속성을 암호화한다. 클라이언트 디바이스는 속성을 해독하고 해당 속성을 사용하여 검증 챌린지 자체를 검증할 수 있다. 즉, 클라이언트 디바이스는 검증 챌린지가 서버에 의해 수신된 특정 데이터 요청에 대한 응답인지 여부를 결정할 수 있다.
도 2를 다시 참조하면, 동작(208)에서, (예를 들어, 서버(104) 중의) 서버는 검증 챌린지로 응답 데이터를 보안한다. 예를 들어, 서버는 응답 데이터 및 검증 챌린지(예를 들어, 클라이언트 디바이스의 공개키를 사용하여 암호화된 고유값, 고유값의 암호 해시를 포함하는 예상 응답, 및 일부 구현에서 클라이언트 장치의 공개 키를 사용하여 암호화된 데이터 요청에서 수신된 속성들 포함)를 포함하는 응답 패키지를 데이터 요청에 응답하여 생성할 수 있다. 응답 패키지는 다른 데이터를 포함할 수 있다. 위에서 논의된 바와 같이, 디지털 컴포넌트는 응답 데이터 또는 응답 데이터의 일부일 수 있다. 일부 구현에서, 검증 챌린지에 예상 응답을 추가하는 것에 추가하여 또는 그 대신에, 서버는 대칭 키 암호화 알고리즘을 사용하거나 클라이언트 디바이스의 공개키(예를 들어, 클라이언트 디바이스의 브라우저 키)를 사용하여 응답 데이터의 적어도 일부를 암호화할 수 있다. 클라이언트 디바이스는 클라이언트 디바이스에 의해 반환된 고유값을 암호화 키로 사용하여 동일한 대칭 키 암호화 알고리즘을 사용하여 응답 데이터를 해독할 수 있다. 응답 데이터의 일부가 클라이언트 디바이스의 공개키를 사용하여 암호화되는 경우, 클라이언트 디바이스는 대응하는 개인키를 사용하여 응답 데이터의 일부를 해독할 수 있다.
광고 컨텍스트에서, 응답 데이터는 스크립트 내에, 실행 가능 코드에 추가하여, 사용자에게 제시될 광고를 포함하는 스크립트(예를 들어, 광고 스크립트)를 포함할 수 있다. 여행 컨텍스트에서, 응답 데이터는 데이터 요청에 지정된 시작 지점에서 종료 지점으로 사용자를 운송할 수 있는 차량에 대한 운전자/차량 정보를 갖는 디지털 컴포넌트를 포함할 수 있다. 운전자측 주행 컨텍스트에서, 응답 데이터는 운전자가 승객을 원하는 출발 지점점에서 원하는 종료 지점으로 운송하기 위해 승객 정보를 갖는 디지털 컴포넌트를 포함할 수 있다. 모든 컨텍스트에서, 응답 데이터는 스크립트에 캡슐화되고 및/또는 클라이언트 디바이스의 공개키를 사용하여 암호화될 수 있다.
일부 구현에서, 서버는 (예를 들어, 클라이언트 디바이스의 공개키를 사용하여) 응답 데이터의 적어도 일부를 암호화한다. 응답 데이터의 암호화는 응답 데이터 추출을 시도하여 클라이언트 디바이스 또는 중개 서버의 시스템 또는 애플리케이션이 스크립트를 바이패스하거나 검증 챌린지를 피하려고 시도하는 것을 방지하는데 유용할 수 있다. 클라이언트 디바이스는 응답 데이터를 사용자에게 제시하기 전에 응답 데이터의 암호화된 부분을 해독할 수 있다. 도 4는 검증 챌린지에 필드를 포함하는 데이터 구조(400)의 예를 도시한다. 필드(402)는 암호화된 고유값(예를 들어, 클라이언트 디바이스의 공개키를 사용하여 암호화됨)을 포함한다. 필드(404)는 예상 응답(예를 들어, 고유값의 암호화 해시)을 포함한다. 필드(406)는 응답 데이터를 포함한다. 예를 들어, 필드(406)는 디지털 컴포넌트를 포함할 수 있다. 일부 구현에서, 필드들(404 및 406)은 예상 응답 및 응답 데이터를 포함하는 스크립트를 저장하는 단일 필드이다. 필드(408)는 요청에서 수신된 하나 이상의 암호화된 속성을 저장한다. 위에서 논의한 바와 같이, 속성들은 클라이언트 디바이스에서 검증 챌린지를 검증하는데 사용될 수 있다. 필드(410)에 의해 예시된 바와 같이, 다른 데이터가 데이터 구조(400)에 포함될 수 있다.
도 2를 다시 참조하면, 동작(210)에서, (예를 들어, 서버(104) 중의) 서버는 검증 챌린지로 보안된 응답을 클라이언트 디바이스로 전송한다. 일부 구현에서, 서버는 요청으로부터 클라이언트 디바이스의 어드레스(예를 들어, IP 어드레스)를 추출하고 클라이언트 디바이스의 어드레스로 검증 챌린지를 전송한다. 일부 구현에서, 서버는 클라이언트 디바이스의 어드레스에 액세스하지 못할 수 있다. 예를 들어, 오리지널 데이터 요청이 중개 서버로부터 수신된 경우, 서버는 클라이언트 디바이스에서 최종적으로 수신되도록 검증 챌린지를 중개 서버로 전송할 수 있다. 일부 구현에서, 클라이언트 디바이스로 전송된(예를 들어, 제공된) 응답 데이터는 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때 클라이언트 디바이스가 클라이언트 디바이스의 응답 데이터에 액세스할 수 있도록 하는 실행 가능 코드를 포함한다.
일부 구현에서, 서버는 다수의 중개 서버를 통해 검증 챌린지를 전송한다. 하나 이상의 중개 서버는 응답 데이터를 인터셉트하여 그 응답 데이터를 상이한 클라이언트 디바이스로 리디렉션하려고 시도할 수 있다. 그러나, 암호화가 특정 클라이언트 디바이스의 공개키를 사용하여 수행되었으므로, 해당 클라이언트 디바이스만 검증 챌린지에 정확하게 답변하여 응답 데이터에 액세스할 수 있다.
일부 구현에서,(예를 들어, 더 느린 네트워크를 통한) 전송을 위해 검증 챌린지의 크기를 감소시키는 것이 유용할 수 있다. 이러한 구현 및 다른 구현에서, 검증 챌린지는 위에서 논의된 속성들 없이(예를 들어, 어드레스, 애플리케이션 이름 또는 다른 적절한 속성들 없이) 암호화된 고유값을 포함할 수 있다. 응답 데이터는 알고리즘의 암호화 키로서 고유값 동작을 갖는 대칭 키 암호화 알고리즘(예를 들어, 고급 암호화 표준 알고리즘)을 사용하여 암호화할 수 있다. 이 구현은 유효한 클라이언트 디바이스에는 해독된 고유값과 결합하여 응답 데이터에 액세스할 수 있는 모든 다른 속성 정보가 있기 때문에 유용할 수 있다. 또한, 검증 챌린지 자체는 대칭 키 암호화 알고리즘을 사용하여 암호화할 수 있다. 대칭 키 암호화 알고리즘을 사용하여 검증 챌린지를 암호화하려면 요청이 웹 요청(예를 들어, 웹 페이지에 포함될 디지털 컴포넌트에 대한 요청)이어야 한다. 다른 요구 사항으로는 쿠키가 서버에 의해 브라우저의 쿠키 저장소에 드롭(drop)되고, 서버가 쿠키 매칭 프로세스를 통해 서버의 자체 쿠키를 통해 브라우저를 인식하고, 서버가 쿠키 도난을 방지하기 위해 서버의 쿠키를 올바르게 마킹하고, 서버가 서버의 쿠키 값을 다른 당사자와 공유하지 않을 것을 포함한다. 또한, 서버는 각 브라우저를 고유하게 식별하여 다른 당사자가 서버의 쿠키 값을 결정할 수 없도록 서버의 쿠키 값에 충분한 엔트로피를 가져야 한다. 일부 구현에서, 서버는 수요 측 플랫폼(DSP) 광고 네트워크의 일부일 수 있고 응답 데이터는 클라이언트 디바이스에서 사용자에게 제시될 광고일 수 있다.
도 5는 클라이언트 디바이스가 검증 챌린지에 답변하기 위해 수행할 수 있는 동작의 블록도이다. 동작(502)에서, 클라이언트 디바이스는 검증 챌린지로 보안된 데이터를 수신한다. 예를 들어, 클라이언트 디바이스는 검증 챌린지를 생성한 서버 또는 중개 서버로부터 검증 챌린지를 수신할 수 있다. 동작(504)에서, 클라이언트 디바이스는 클라이언트 디바이스의 개인키를 사용하여 검증 챌린지를 해독한다. 검증 챌린지가 정확하게 해독되면, 클라이언트 디바이스는 검증 챌린지 내에서 데이터를 검색할 수 있다. 동작(506)에서, 클라이언트 디바이스는 검증 챌린지를 검증한다. 클라이언트 디바이스는 검증 챌린지의 일부로서 수신된 속성들을 클라이언트 디바이스에 의해 또는 클라이언트 디바이스를 대신하여 생성된 오리지널 데이터 요청의 속성들과 비교한다. 만약 검증 챌린지에서 수신된 속성들이 데이터 요청의 속성들(예를 들어, 환경의 속성)과 일치(매칭)하면, 클라이언트 디바이스는 검증 챌린지가 클라이언트 디바이스에 의해 또는 클라이언트 디바이스를 대신하여 생성된 데이터 요청에 대응한다고 결정한다. 만약 검증 챌린지에서 수신된 속성들이 데이터 요청의 속성들과 일치하지 않으면, 클라이언트 디바이스는 검증 챌린지를 검증하지 않는다(예를 들어, 검증 챌린지 처리를 중지하고 검증 챌린지에 답변하지 않는다). 동작(508)에서, 클라이언트 디바이스는 고유값을 검색한다. 위에서 논의된 바와 같이, 고유값은 예를 들어 숫자, 구, 16진수, 다중 숫자, 단어 또는 다른 적절한 값일 수 있다. 만약 상이한 클라이언트 디바이스가 응답 데이터와 함께 검증 챌린지를 수신하면(예를 들어, 중개 서버가 사기적으로 응답(즉, 응답 데이터 및 검증 챌린지)을 리디렉션한 경우), 상이한 클라이언트 디바이스는 암호 해독 동작을 정확하게 수행하고 검증 챌린지에 정확하게 답변할 수 없다.
동작(510)에서, 클라이언트 디바이스는 고유값을 챌린지 답변으로 변환한다. 예를 들어, 클라이언트 디바이스는 고유값에 대해 암호화 해시 알고리즘을 실행할 수 있다. 변환 방법은 고유값이 올바른 경우(즉, 고유값이 요청에 지정된 응답 데이터가 사용될 컨텍스트를 나타내는 경우) 예상 응답과 동일한 암호화 해시값을 생성한다. 일부 구현에서, 변환 방법은 (예를 들어, 동일한 암호 해싱 알고리즘을 통해) 서버 변환 방법과 동기화된다. 고유값이 올바르지 않은 경우, 변환 방법은 예상 응답과 동일한 암호 해시값을 생성하지 않으므로 클라이언트 디바이스의 컨텍스트가 요청에 지정된 컨텍스트와 다르다는 것을 나타낸다.
동작(512)에서, 클라이언트 디바이스는 챌린지 답변과 예상 응답을 비교한다. 일부 구현에서, 클라이언트 디바이스는 검증 패키지의 일부로서 수신된 스크립트를 검색하고 비교를 수행하기 위해 스크립트를 실행할 수 있다. 클라이언트 디바이스는 변환된 고유값을 스크립트에 제출할 수 있다. 도 6은 응답 데이터에 대한 액세스를 제공할지 또는 방지할지 여부를 결정하기 위해 스크립트가 수행할 수 있는 동작을 도시한다. 동작(602)에서, 스크립트는 챌린지 응답을 수신한다. 예를 들어, 스크립트는 해독된 고유값의 암호화 해시를 입력으로서 수신할 수 있다. 동작(604)에서, 스크립트는 예상 응답 데이터를 검색한다. 예를 들어, 스크립트는 서버에서 해시된 고유값의 암호화 해시를 검색할 수 있다.
동작(606)에서, 스크립트는 검색된 예상 응답 데이터를 클라이언트 디바이스에 의해 생성된 응답으로도 지칭되는 챌린지 응답과 비교한다. 예를 들어, 스크립트는 2개의 암호화 해시를 비교할 수 있다. 동작(608)에서, 스크립트는 검색된 예상 응답 데이터(예를 들어, 서버에 의해 생성된 암호화 해시)가 챌린지 응답내의 데이터(예를 들어, 클라이언트 디바이스상에서 생성된 암호화 해시)와 일치하는지 여부를 결정한다. 만약 암호화 해시들이 일치하면, 프로세스(600)는 스크립트가 클라이언트 디바이스에게 응답 데이터에 대한 액세스를 제공하는 동작(610)으로 이동한다. 만약 암호화 해시들이 일치하지 않으면, 프로세스(600)는 스크립트가 클라이언트 디바이스가 응답 데이터에 액세스하는 것을 방지하는 동작(612)으로 이동한다. 따라서, 클라이언트 디바이스는 챌린지 응답을 생성하고, 챌린지 응답이 검증 챌린지에 대한 유효 응답인지 여부를 결정하고, 챌린지 응답이 검증 챌린지에 대한 유효 응답이라는 결정에 응답하여 응답 데이터에 액세스한다.
클라이언트 디바이스에 의해 생성된 답변이 검증 챌린지에 정확하게 응답하고 클라이언트 디바이스가 검증 챌린지에 지정된 환경의 하나 이상의 속성을 검증하는 경우, 클라이언트 디바이스는 응답 데이터에 대한 액세스 권한을 제공받는다. 그러나, 클라이언트 디바이스에 의해 생성된 응답이 검증 챌린지에 정확하게 응답하지 않거나 클라이언트 디바이스가 검증 챌린지에 지정된 환경의 하나 이상의 속성을 검증하지 않는 경우, 클라이언트 디바이스는 응답 데이터에 액세스하는 것이 방지된다.
응답 데이터의 적어도 일부가 암호화되는 구현에서, 클라이언트 디바이스(예를 들어, 스크립트)는 예를 들어 대칭 키 암호화 알고리즘(예컨대, AES)을 사용하여 해당 데이터를 해독할 수 있다. 이러한 구현은 요청이 웹 요청(예를 들어, 웹 페이지에 포함될 디지털 컴포넌트에 대한 요청)일 것을 요구할 수 있다. 다른 요구 사항으로는 쿠키가 서버에 의해 브라우저의 쿠키 저장소에 드롭되고, 서버가 쿠키 매칭 프로세스를 통해 서버의 자체 쿠키를 통해 브라우저를 인식하고, 서버가 쿠키 도난을 방지하기 위해 서버의 쿠키를 올바르게 마킹하고, 서버가 서버의 쿠키 값을 다른 당사자와 공유하지 않을 것을 포함한다. 또한, 서버는 각 브라우저를 고유하게 식별하여 다른 당사자가 서버의 쿠키 값을 결정할 수 없도록 서버의 쿠키 값에 충분한 엔트로피를 가져야 한다. 일부 구현에서, 서버는 수요 측 플랫폼(DSP) 광고 네트워크의 일부일 수 있고 응답 데이터는 클라이언트 디바이스에서 사용자에게 제시될 광고일 수 있다.
응답 데이터의 적어도 일부가 대칭 키 암호화 알고리즘을 사용하여 암호화되는 구현에서, 클라이언트 디바이스는 해독된 고유 번호를 응답 데이터에 대한 암호 해독 키로서 사용할 수 있다. 즉, 클라이언트 디바이스는 고유 데이터가 해독 키인대칭 키 암호화 알고리즘을 사용하여 응답 데이터를 해독화할 수 있다.
도 5를 다시 참조하면, 동작(514)에서, 클라이언트 디바이스는 비교에 기초하여 렌더링 정책을 제정한다. 위에서 논의된 바와 같이, 챌린지 검증 시스템은 많은 다른 시나리오에서 구현될 수 있다. 렌더링 정책은 브라우저 또는 다른 애플리케이션에서 모든 유형의 데이터를 렌더링하는데 사용할 수 있다. 예를 들어, 애플리케이션이 게임 애플리케이션인 경우, 추가 게임 데이터가 게임내에서 렌더링될 수 있다. 다른 예에서, 챌린지 검증 시스템이 광고 컨텍스트에서 구현되는 경우, 시스템은 다양한 다른 컴포넌트 및 단계를 포함할 수 있다. 예를 들어, 오리지널 데이터 요청은 클라이언트 디바이스의 광고 식별자를 포함할 수 있다. 광고 식별자는 디바이스 또는 사용자 특정 정보를 필요로 하지 않고 디바이스를 다른 시스템으로 고유하게 식별한다. 광고 컨텍스트에서 스크립트는 광고에 액세스할 수 있게 하는 광고 스크립트일 수 있다. 따라서, 렌더링 정책은 적절한 환경하에서 광고가 사용자에게 제시될 수 있게 한다. 즉, 렌더링 정책은 광고가 제공될 환경이 오리지널 데이터 요청의 속성과 일치하는지 여부에 기초하여 광고가 사용자에게 제시되는 것을 가능하게 하거나 방지할 수 있다. 일부 구현에서, 암호화 해시들이 일치하지 않으면, 렌더링 정책은 플레이스 홀더가 렌더링되어야함을 나타낼 수 있다.
챌린지 검증 시스템이 여행 컨텍스트에서 구현되는 경우, 응답 데이터는 오리지널 데이터 요청에 표시된 시작 위치로부터 종료 위치로 클라이언트 디바이스의 사용자를 주행시키는데 이용 가능한 운전자 정보를 포함하는 디지털 컴포넌트일 수 있다. 일부 구현에서, 검증 챌린지가 정확하게 답변될 때, 클라이언트 디바이스는 차량의 운전자와 접촉하거나 차량의 진행 상황에 대한 업데이트를 얻도록 활성화될 수 있다.
일부 구현에서, 검증 챌린지 시스템은 하나 이상의 API(application programming interface)를 사용하여 구현될 수 있다. 클라이언트 디바이스와 서버 모두에 설치할 수 있는 API가 구축될 수 있다. 추가적으로 또는 대안적으로, 하나는 서버용이고 다른 하나는 클라이언트 디바이스용인 2개의 API가 구축될 수 있다. 클라이언트 디바이스의 검증 챌린지 시스템은 서버 측의 API로 데이터 요청을 제출하도록 프로그래밍하는 것을 포함할 수 있다. 또한, 중개 서버가 서버에 데이터 요청을 제출하도록 실행 코드를 작성할 수 있다. 제2 API는 서버가 데이터 요청을 수신하고, 검증 챌린지를 생성하며, 검증 챌린지를 클라이언트 디바이스에 전송하기 위해 생성될 수 있다. 이 API는 일부 구현에서 요청 API와 결합될 수 있다.
본 명세서에 기술된 주제 및 동작들의 실시예는 본 명세서에 개시된 구조 및 이들의 구조적 등가물을 포함하는 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 명세서에 기술된 주제의 실시예들은 하나 이상의 컴퓨터 프로그램, 즉 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 명령들은 인공적으로 생성된 전파 신호, 예를 들어 데이터 처리 장치에 의해 실행하기 위해 적합한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위해 생성되는 기계 생성 전기, 광학 또는 전자기 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 저장 디바이스, 컴퓨터 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스, 또는 이들 중 하나 이상의 조합 일 수 있거나 이에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파 신호가 아니지만, 컴퓨터 저장 매체는 인위적으로 생성된 전파된 신호로 인코딩된 컴퓨터 프로그램 명령들의 소스 또는 목적지일 수 있다. 컴퓨터 저장 매체는 또한 하나 이상의 개별 물리적 컴포넌트 또는 매체(예를 들어, 다수의 CD, 디스크 또는 다른 저장 디바이스)일 수 있거나 그에 포함될 수 있다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독 가능 저장 디바이스에 저장되거나 다른 소스로부터 수신된 데이터에 대한 데이터 처리 장치에 의해 수행되는 동작으로서 구현될 수 있다.
"데이터 처리 장치"라는 용어는 예를 들어 프로그램 가능 프로세서, 컴퓨터, 칩상의 시스템, 또는 다수의 것, 또는 이들의 조합을 포함하여 데이터를 처리하는 모든 종류의 장치, 디바이스 및 기계를 포함한다. 이 장치는 특수 목적 논리 회로, 예를 들어 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)을 포함할 수 있다. 장치는 또한 하드웨어 외에, 당해 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스-플랫폼 런타임 환경, 가상 머신 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 장치 및 실행 환경은 웹 서비스, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 컴퓨팅 모델 인프라를 실현할 수 있다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일된 또는 해석된 언어를 포함하여 모든 형태의 프로그래밍 언어로 작성될 수 있으며, 독립형 프로그램 또는 컴퓨팅 환경에 사용하기에 적합한 모듈, 구성 요소, 서브 루틴 또는 기타 디바이스를 포함하여 모든 형태로 배포될 수 있다. 컴퓨터 프로그램은 파일 시스템의 파일에 해당할 수 있지만 반드시 그런 것은 아니다. 프로그램은 다른 프로그램 또는 데이터(예를 들어, 마크 업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부, 당해 프로그램 전용의 단일 파일, 또는 다수의 조정 파일(예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드의 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 하나의 사이트에 위치하거나 여러 사이트에 분산되어 있고 통신 네트워크에 의해 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 기술된 프로세스 및 논리 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 프로세스 및 논리 흐름은 또한 특수 목적 논리 회로, 예를 들어 FPGA(필드 프로그램 가능 게이트 어레이) 또는 ASIC(애플리케이션 특정 집적 회로)에 의해 수행될 수 있으며 장치는 또한 이들로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예로서 범용 및 특수 목적 마이크로 프로세서, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령 및 데이터를 수신할 것이다. 컴퓨터의 필수 요소는 명령을 수행하기 위한 프로세서와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스이다. 일반적으로, 컴퓨터는 또한 예를 들어 자기, 자기 광 디스크 또는 광 디스크와 같은 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스를 포함하거나 이로부터 데이터를 수신하거나 데이터를 전송하거나 또는 그 둘 모두를 하기 위해 동작적으로 연결될 것이다. 그러나 컴퓨터에는 이러한 디바이스들이 필요하지 않다. 또한, 컴퓨터는 다른 디바이스, 예를 들어 모바일 전화기, 개인 휴대 정보 단말기(PDA), 모바일 오디오 또는 비디오 플레이어, 게인 콘솔, GPS(Global Positioning System) 수신기, 또는 휴대용 저장 디바이스(예를 들어, USB 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 디바이스들은 예를 들어 EPROM, EEPROM 및 플래시 메모리 디바이스와 같은 반도체 메모리 디바이스; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광자기 디스크; 및 CD ROM 및 DVD-ROM 디스크를 포함하는 모든 형태의 비 휘발성 메모리, 매체 및 메모리 디바이스를 포함한다. 프로세서와 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 명세서에 기술된 주제의 실시예는 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스(예를 들어, CRT(음극선관) 또는 LCD(liquid crystal display) 디스플레이 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 디바이스(예를 들어, 마우스 또는 트랙볼)를 갖는 컴퓨터에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 디바이스가 사용될 수도 있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각 피드백 또는 촉각 피드백일 수 있고, 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 디바이스가 사용될 수도있다. 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각 피드백 또는 촉각 피드백 일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서를 전송하고 문서를 수신함으로써 사용자와 상호 작용할 수 있으며; 예를 들어, 웹 브라우저에서 받은 요청에 응답하여 웹 페이지를 사용자 클라이언트 디바이스의 웹 브라우저로 전송한다.
본 명세서에 기술된 주제의 실시예는 예를 들어, 데이터 서버와 같은 백엔드 컴포넌트를 포함하거나, 애플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 사용자가 본 명세서에 기술된 주제의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터와 같은 프론트 엔드 컴포넌트, 또는 하나 이상의 이러한 백엔드, 미들웨어 또는 프론트 엔드 컨토넌트의 임의의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터, 예를 들어 통신 네트워크에 의해 상호 연결될 수 있다. 통신 네트워크의 예는 근거리 통신망("LAN") 및 광역 통신망("WAN"), 네트워크 간(예를 들어, 인터넷) 및 피어-투-피어 네트워크(예를 들어, 애드혹 피어- 피어-네트워크)를 포함할 수 있다.
컴퓨팅 시스템은 클라이언트와 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 멀리 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다. 일부 실시예에서, 서버는 (예를 들어, 클라이언트 디바이스와 상호 작용하는 사용자에게 데이터를 디스플레이하고 사용자로부터 데이터를 수신하기 위해) 데이터(예를 들어, HTML 페이지를 클라이언트 디바이스로 전송한다. 클라이언트 디바이스에서 생성된 데이터(예를 들어, 사용자 상호 작용의 결과)는 서버에서 클라이언트 디바이스로부터 수신될 수 있다.
본 명세서는 많은 특정 구현 세부 사항을 포함하지만, 이들은 임의의 발명의 범위 또는 부과될 수 있는 것에 대한 제한으로 해석되어서는 안되며, 오히려 특정 발명의 특정 실시예에 특정된 특징의 설명으로 해석되어야 한다. 별도의 실시예와 관련하여 본 명세서에서 설명된 특정 특징들은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예와 관련하여 설명된 다양한 특징은 또한 다수의 실시예에서 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 설명되고 심지어 초기에 그렇게 부과될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징은 일부 경우에 조합에서 제외될 수 있고, 그 청구된 조합은 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 특정 순서로 도면에 도시되어 있지만, 이는 바람직한 결과를 달성하기 위해 이러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행되거나 또는 모든 예시된 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 전술한 실시예에서 다양한 시스템 컴포넌트의 분리는 모든 실시예에서 이러한 분리를 요구하는 것으로 이해되어서는 안되며, 기술된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 또는 여러 소프트웨어 제품에 패키지화될 수 있음을 이해해야 한다 .
따라서, 주제의 특정 실시예들이 설명되었다. 다른 실시예는 다음의 청구 범위의 범위 내에 있다. 일부 경우, 청구 범위에 언급된 동작들은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성할 수 있다. 또한, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 요구할 필요는 없다. 특정 구현들에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 방법으로서,
    하나 이상의 서버에 의해, 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신하는 단계;
    하나 이상의 서버에 의해, 상기 하나 이상의 속성에 기초하여 응답 데이터를 선택하는 단계;
    하나 이상의 서버에 의해, 암호화(encrypted) 값을 생성하기 위해 적어도 상기 하나 이상의 속성을 암호화하는 단계;
    하나 이상의 서버에 의해, 암호화 값을 포함하고 상기 클라이언트 디바이스가 검증 챌린지에 대한 정확한 응답을 생성하는지 여부에 기초하여 응답 데이터에 대한 액세스를 제어하는 검증 챌린지를 생성하는 단계로서:
    서버에 의해 생성된 예상 응답과 일치하는 클라이언트 디바이스에 의해 생성된 챌린지 응답으로 클라이언트 디바이스가 검증 챌린지에 정확하게 응답할 때 응답 데이터에 대한 클라이언트 디바이스 액세스를 제공하는 단계와;
    클라이언트 디바이스에 의해 생성된 챌린지 응답이 서버에 의해 생성된 예상 응답과 일치하지 않을 때 클라이언트 디바이스가 응답 데이터에 액세스하는 것을 방지하는 단계를 포함하고;
    하나 이상의 서버에 의해, 검증 챌린지로 응답 데이터를 보안하는 단계; 및
    하나 이상의 서버에 의해, 검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    클라이언트 디바이스에서 챌린지 응답을 생성하는 단계;
    클라이언트 디바이스에서, 챌린지 응답이 검증 챌린지에 대한 유효 응답인지 여부를 결정하는 단계; 및
    챌린지 응답이 검증 챌린지에 대한 유효 응답이라는 결정에 응답하여, 클라이언트 디바이스에 의해, 응답 데이터에 액세스하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    응답 데이터에 대한 클라이언트 디바이스 액세스를 제공하는 단계는,
    클라이언트 디바이스로, 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때 클라이언트 디바이스가 클라이언트 디바이스상의 응답 데이터에 액세스할 수 있도록 하는 실행 코드를 제공하는 단계를 포함하는 것을 특징으로 하는 방법.
  4. 제1항에 있어서,
    하나 이상의 속성은,
    클라이언트 디바이스의 브라우저의 공개키, 클라이언트 디바이스의 공개키, 클라이언트 디바이스의 어드레스, 서버의 쿠키 이름과 값, 또는 애플리케이션 이름 중 하나 이상을 포함하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    검증 챌린지를 생성하는 단계는,
    고유값을 생성하는 단계;
    클라이언트 디바이스의 공개키를 검색하는 단계;
    클라이언트 디바이스의 공개키를 사용하여 고유값을 암호화하는 단계; 및
    암호화된 고유값 및 암호화 값을 포함하는 검증 챌린지를 생성하는 단계를 포함하는 것을 특징으로 하는 방법.
  6. 제1항에 있어서,
    하나 이상의 서버에 의해, 검증 챌린지로 응답 데이터를 보안하는 단계는,
    클라이언트 디바이스의 공개키를 사용하여 응답 데이터의 적어도 일부를 암호화하는 단계를 포함하는 것을 특징으로 하는 방법.
  7. 제1항에 있어서,
    요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신하는 단계는,
    하나 이상의 속성의 적어도 일부를 저장하는 중개 서버로부터 데이터 요청을 수신하는 단계를 포함하는 것을 특징으로 하는 방법.
  8. 제1항에 있어서,
    하나 이상의 서버에 의해, 검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송하는 단계는,
    데이터 요청으로부터, 클라이언트 디바이스의 어드레스를 추출하는 단계; 및
    검증 챌린지를 클라이언트 디바이스의 어드레스로 전송하는 단계를 포함하는 것을 특징으로 하는 방법.
  9. 컴퓨터 프로그램을 저장하는 비-일시적 컴퓨터 저장 매체로서, 프로그램은 데이터 처리 장치에 의해 실행될 때 데이터 처리 장치로 하여금 동작들을 수행하게 하는 명령을 포함하고, 상기 동작들은,
    하나 이상의 서버에 의해, 요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신하는 단계;
    하나 이상의 서버에 의해, 상기 하나 이상의 속성에 기초하여 응답 데이터를 선택하는 단계;
    하나 이상의 서버에 의해, 암호화 값을 생성하기 위해 적어도 상기 하나 이상의 속성을 암호화하는 단계;
    하나 이상의 서버에 의해, 암호화 값을 포함하고 상기 클라이언트 디바이스가 검증 챌린지에 대한 정확한 응답을 생성하는지 여부에 기초하여 응답 데이터에 대한 액세스를 제어하는 검증 챌린지를 생성하는 단계로서:
    서버에 의해 생성된 예상 응답과 일치하는 클라이언트 디바이스에 의해 생성된 챌린지 응답으로 클라이언트 디바이스가 검증 챌린지에 정확하게 응답할 때 응답 데이터에 대한 클라이언트 디바이스 액세스를 제공하는 단계와;
    클라이언트 디바이스에 의해 생성된 챌린지 응답이 서버에 의해 생성된 예상 응답과 일치하지 않을 때 클라이언트 디바이스가 응답 데이터에 액세스하는 것을 방지하는 단계를 포함하고;
    하나 이상의 서버에 의해, 검증 챌린지로 응답 데이터를 보안하는 단계; 및
    하나 이상의 서버에 의해, 검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  10. 제9항에 있어서,
    클라이언트 디바이스에서 챌린지 응답을 생성하는 단계;
    클라이언트 디바이스에서, 챌린지 응답이 검증 챌린지에 대한 유효 응답인지 여부를 결정하는 단계; 및
    챌린지 응답이 검증 챌린지에 대한 유효 응답이라는 결정에 응답하여, 클라이언트 디바이스에 의해 응답 데이터에 액세스하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  11. 제9항에 있어서,
    응답 데이터에 대한 클라이언트 디바이스 액세스를 제공하는 단계는,
    클라이언트 디바이스로, 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때 클라이언트 디바이스가 클라이언트 디바이스상의 응답 데이터에 액세스할 수 있도록 하는 실행 코드를 제공하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  12. 제9항에 있어서,
    하나 이상의 속성은,
    클라이언트 디바이스의 브라우저의 공개키, 클라이언트 디바이스의 공개키, 클라이언트 디바이스의 어드레스, 서버의 쿠키 이름과 값, 또는 애플리케이션 이름 중 하나 이상을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  13. 제9항에 있어서,
    검증 챌린지를 생성하는 단계는,
    고유값을 생성하는 단계;
    클라이언트 디바이스의 공개키를 검색하는 단계;
    클라이언트 디바이스의 공개키를 사용하여 고유값을 암호화하는 단계; 및
    암호화된 고유값 및 암호화 값을 포함하는 검증 챌린지를 생성하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  14. 제9항에 있어서,
    하나 이상의 서버에 의해, 검증 챌린지로 응답 데이터를 보안하는 단계는,
    클라이언트 디바이스의 공개키를 사용하여 응답 데이터의 적어도 일부를 암호화하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  15. 제9항에 있어서,
    요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신하는 단계는,
    하나 이상의 속성의 적어도 일부를 저장하는 중개 서버로부터 데이터 요청을 수신하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  16. 제9항에 있어서,
    하나 이상의 서버에 의해, 검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송하는 단계는,
    데이터 요청으로부터, 클라이언트 디바이스의 어드레스를 추출하는 단계; 및
    검증 챌린지를 클라이언트 디바이스의 어드레스로 전송하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 저장 매체.
  17. 동작들을 수행하도록 구성된 하나 이상의 서버를 포함하는 시스템으로, 상기 동작들은,
    요청된 데이터가 제공될 클라이언트 디바이스의 환경을 특징짓는 하나 이상의 속성을 포함하는 데이터 요청을 수신하는 동작과;
    상기 하나 이상의 속성에 기초하여 응답 데이터를 선택하는 동작과;
    암호화 값을 생성하기 위해 적어도 상기 하나 이상의 속성을 암호화하는 동작과;
    암호화 값을 포함하고 그리고 클라이언트 디바이스가 검증 챌린지에 대한 정확한 응답을 생성하는지 여부에 기초하여 응답 데이터에 대한 액세스를 제어하는, 검증 챌린지를 생성하는 동작으로서:
    서버에 의해 생성된 예상 응답과 일치하는 클라이언트 디바이스에 의해 생성된 챌린지 응답으로 클라이언트 디바이스가 검증 챌린지에 정확하게 응답할 때 응답 데이터에 대한 클라이언트 디바이스 액세스를 제공하는 동작과;
    클라이언트 디바이스에 의해 생성된 챌린지 응답이 서버에 의해 생성된 예상 응답과 일치하지 않을 때 클라이언트 디바이스가 응답 데이터에 액세스하는 것을 방지하는 동작을 포함하고;
    검증 챌린지로 응답 데이터를 보안하는 동작과; 그리고
    검증 챌린지로 보안된 응답 데이터를 클라이언트 디바이스로 전송하는 동작을 포함하는 것을 특징으로 하는 시스템.
  18. 제17항에 있어서,
    상기 동작들은,
    클라이언트 디바이스에서 챌린지 응답을 생성하는 동작과;
    클라이언트 디바이스에서, 챌린지 응답이 검증 챌린지에 대한 유효 응답인지 여부를 결정하는 동작과; 그리고
    챌린지 응답이 검증 챌린지에 대한 유효 응답이라는 결정에 응답하여, 클라이언트 디바이스에 의해 응답 데이터에 액세스하는 동작을 더 포함하는 것을 특징으로 하는 시스템.
  19. 제17항에 있어서,
    응답 데이터에 대한 클라이언트 디바이스 액세스를 제공하는 동작은,
    클라이언트 디바이스로, 클라이언트 디바이스가 검증 챌린지에 대한 유효 응답을 생성할 때 클라이언트 디바이스가 클라이언트 디바이스의 응답 데이터에 액세스할 수 있도록 하는 실행 코드를 제공하는 동작을 포함하는 것을 특징으로 하는 시스템.
  20. 제17항에 있어서,
    하나 이상의 속성은,
    클라이언트 디바이스의 브라우저의 공개키, 클라이언트 디바이스의 공개키, 클라이언트 디바이스의 어드레스, 서버의 쿠키 이름과 값, 또는 애플리케이션 이름 중 하나 이상을 포함하는 것을 특징으로 하는 시스템.
KR1020227020735A 2019-10-15 2019-10-15 데이터를 보호하기 위한 시스템 및 방법 KR102526106B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020207018319A KR102414158B1 (ko) 2019-10-15 2019-10-15 데이터를 보호하기 위한 시스템 및 방법
PCT/US2019/056277 WO2021076104A1 (en) 2019-10-15 2019-10-15 Systems and methods for protecting data

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020207018319A Division KR102414158B1 (ko) 2019-10-15 2019-10-15 데이터를 보호하기 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20220092631A KR20220092631A (ko) 2022-07-01
KR102526106B1 true KR102526106B1 (ko) 2023-04-26

Family

ID=68542741

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207018319A KR102414158B1 (ko) 2019-10-15 2019-10-15 데이터를 보호하기 위한 시스템 및 방법
KR1020227020735A KR102526106B1 (ko) 2019-10-15 2019-10-15 데이터를 보호하기 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020207018319A KR102414158B1 (ko) 2019-10-15 2019-10-15 데이터를 보호하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US20220255758A1 (ko)
EP (2) EP3827572B1 (ko)
JP (2) JP7135090B2 (ko)
KR (2) KR102414158B1 (ko)
CN (2) CN112997462B (ko)
ES (1) ES2908048T3 (ko)
WO (1) WO2021076104A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703995B (zh) * 2021-08-13 2024-04-16 深圳市中博科创信息技术有限公司 前后端数据交互方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282933A1 (en) 2013-03-13 2014-09-18 Uniloc Luxembourg, S.A. Device authentication using device environment information
US20150350204A1 (en) 2014-05-30 2015-12-03 Toshiba Tec Kabushiki Kaisha Cloud-based device authentication

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064736A (en) * 1997-09-15 2000-05-16 International Business Machines Corporation Systems, methods and computer program products that use an encrypted session for additional password verification
US6105066A (en) * 1998-05-05 2000-08-15 International Business Machines Corp. Client-server system with central application management and using fully qualified class names of object-oriented applications for determining permanent server storage locations for application configuration information
JP2003345707A (ja) 2002-05-28 2003-12-05 Nippon Telegr & Teleph Corp <Ntt> コンテンツ流通管理方法および装置
CA2644772A1 (en) * 2006-03-16 2007-09-20 British Telecommunications Public Limited Company Methods, apparatuses and software for authentication of devices temporarily provided with a sim to store a challenge-response
US20090210708A1 (en) * 2008-02-14 2009-08-20 Higher Challenge, Inc. Systems and Methods for Authenticating and Authorizing a Message Receiver
US8868923B1 (en) * 2010-07-28 2014-10-21 Sandia Corporation Multi-factor authentication
EP2475144A1 (en) * 2011-01-05 2012-07-11 Gemalto SA Method for communicating between a server and a client and corresponding client, server and system
JP2012155397A (ja) 2011-01-24 2012-08-16 Yappa Corp コンテンツ管理システム、コンテンツ管理方法及びプログラム
US8817984B2 (en) * 2011-02-03 2014-08-26 mSignia, Inc. Cryptographic security functions based on anticipated changes in dynamic minutiae
US20130019293A1 (en) * 2011-07-14 2013-01-17 Google Inc. Enabling Access to Electronic Content Based on Possession of Physical Content
JP6132605B2 (ja) 2012-04-26 2017-05-24 キヤノン株式会社 情報処理装置、及びその制御方法
EP2979392B1 (en) * 2013-03-27 2019-08-14 Irdeto B.V. A challenge-response method and associated client device
US9178881B2 (en) * 2013-10-09 2015-11-03 Microsoft Technology Licensing, Llc Proof of device genuineness
US9998438B2 (en) * 2013-10-23 2018-06-12 Microsoft Technology Licensing, Llc Verifying the security of a remote server
US9251334B1 (en) * 2014-01-30 2016-02-02 Amazon Technologies, Inc. Enabling playback of media content
WO2016045746A1 (en) * 2014-09-26 2016-03-31 Irdeto B.V. A challenge-response method and associated computing device
US9692757B1 (en) * 2015-05-20 2017-06-27 Amazon Technologies, Inc. Enhanced authentication for secure communications
US10044725B2 (en) * 2015-12-18 2018-08-07 Google Llc Controlling access to online resources using device validations
US10305885B2 (en) * 2016-03-03 2019-05-28 Blackberry Limited Accessing enterprise resources using provisioned certificates
US10205726B2 (en) * 2016-06-03 2019-02-12 Honeywell International Inc. Apparatus and method for preventing file access by nodes of a protected system
US20170359344A1 (en) * 2016-06-10 2017-12-14 Microsoft Technology Licensing, Llc Network-visitability detection control
US10397778B2 (en) * 2016-07-29 2019-08-27 Citrix Systems, Inc. Computer network providing secure mobile device enrollment features and related methods
KR20180038151A (ko) * 2016-10-06 2018-04-16 (주) 하이엔티비 본인 인증 시스템 및 본인 인증 서버
US10218704B2 (en) * 2016-10-06 2019-02-26 Cisco Technology, Inc. Resource access control using named capabilities
AU2018309432A1 (en) * 2017-08-03 2020-02-27 Entersekt International Limited System and method for authenticating a transaction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282933A1 (en) 2013-03-13 2014-09-18 Uniloc Luxembourg, S.A. Device authentication using device environment information
US20150350204A1 (en) 2014-05-30 2015-12-03 Toshiba Tec Kabushiki Kaisha Cloud-based device authentication

Also Published As

Publication number Publication date
EP3827572B1 (en) 2022-01-26
CN115695040A (zh) 2023-02-03
KR20220092631A (ko) 2022-07-01
CN112997462B (zh) 2022-11-22
KR20210046578A (ko) 2021-04-28
JP2022511580A (ja) 2022-02-01
KR102414158B1 (ko) 2022-06-28
ES2908048T3 (es) 2022-04-27
CN112997462A (zh) 2021-06-18
JP7135090B2 (ja) 2022-09-12
JP7438295B2 (ja) 2024-02-26
EP3998790A1 (en) 2022-05-18
JP2022172251A (ja) 2022-11-15
WO2021076104A1 (en) 2021-04-22
EP3827572A1 (en) 2021-06-02
US20220255758A1 (en) 2022-08-11

Similar Documents

Publication Publication Date Title
US10063372B1 (en) Generating pre-encrypted keys
KR102538032B1 (ko) 온라인 신원의 분산 검증을 위한 시스템 및 방법
JP7319380B2 (ja) ブラウザクッキーを保護する
JP2023067928A (ja) コンテンツ選択プロセスの完全性を改善するためのセキュアマルチパーティ計算の使用
JP7475492B2 (ja) 機密情報を保護するためのマルチパーティ計算およびk-匿名性技法の使用
JP7438295B2 (ja) データを保護するためのシステムおよび方法
KR102608325B1 (ko) 클라이언트 장치에서 통신의 무결성 보호
US20230421544A1 (en) Preventing fraud in aggregated network measurements
CN114391242B (zh) 匿名事件证明
US20220004599A1 (en) Content encryption
KR20220161428A (ko) 정보 액세스를 제한하는 보안 네트워크 통신
WO2023211496A1 (en) Cryptographically secure and privacy-preserving matching
KR20220052352A (ko) 온라인 프라이버시 보호 기술
CN118077170A (en) Secure computing using multiparty computing and trusted execution environments

Legal Events

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