KR102445873B1 - 클라이언트 디바이스에서 서드 파티 콘텐츠 디스플레이 검증 - Google Patents

클라이언트 디바이스에서 서드 파티 콘텐츠 디스플레이 검증 Download PDF

Info

Publication number
KR102445873B1
KR102445873B1 KR1020207034019A KR20207034019A KR102445873B1 KR 102445873 B1 KR102445873 B1 KR 102445873B1 KR 1020207034019 A KR1020207034019 A KR 1020207034019A KR 20207034019 A KR20207034019 A KR 20207034019A KR 102445873 B1 KR102445873 B1 KR 102445873B1
Authority
KR
South Korea
Prior art keywords
data
content item
token
digitally signed
content
Prior art date
Application number
KR1020207034019A
Other languages
English (en)
Other versions
KR20210102058A (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 KR20210102058A publication Critical patent/KR20210102058A/ko
Application granted granted Critical
Publication of KR102445873B1 publication Critical patent/KR102445873B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • H04N21/4353Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream involving decryption of additional data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0021Image watermarking
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2355Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving reformatting operations of additional data, e.g. HTML pages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2389Multiplex stream processing, e.g. multiplex stream encrypting
    • H04N21/23892Multiplex stream processing, e.g. multiplex stream encrypting involving embedding information at multiplex stream level, e.g. embedding a watermark at packet level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • H04N21/8173End-user applications, e.g. Web browser, game
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/835Generation of protective data, e.g. certificates
    • H04N21/8358Generation of protective data, e.g. certificates involving watermark
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/60Digital content management, e.g. content distribution
    • H04L2209/608Watermarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

서드파티 콘텐츠 제시시 발생할 수 있는 오류를 검출하고, 콘텐츠 플랫폼이 클라이언트 디바이스에서 액세스될 때 콘텐츠 제공자에 의해 콘텐츠 플랫폼에 제공된 서드파티 콘텐츠가 실제로 디스플레이되고 사용자에게 보이는지 검증하기 위한 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하여, 방법, 시스템 및 장치. 방법은 클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 단계를 포함한다. 디스플레이의 특정한 부분에 내장된 디지털 워터마크가 추출될 수 있고, 특정한 콘텐츠 아이템을 설명하는 속성에 대한 데이터를 획득하기 위해 디코딩될 수 있다. 이 데이터를 사용하여 디지털 서명된 토큰이 생성될 수 있고, 상기 토큰은 애플리케이션에 제공될 수 있다.

Description

클라이언트 디바이스에서 서드 파티 콘텐츠 디스플레이 검증
본 명세서는 일반적으로 서드파티 콘텐츠 제시시 발생할 수 있는 오류를 검출하고, 콘텐츠 플랫폼이 클라이언트 디바이스에서 엑세스될 때 콘텐츠 플랫폼에 디스플레이하기 위해 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠가 실제로 디스플레이되는지 검증하는 것과 관련된다.
클라이언트 디바이스는 애플리케이션(예: 웹브라우저, 네이티브 애플리케이션)을 사용하여 콘텐츠 플랫폼(예: 검색 플랫폼, 소셜 미디어 플랫폼 또는 콘텐츠를 호스팅하는 다른 플랫폼)에 액세스할 수 있다. 콘텐츠 플랫폼은 클라이언트 디바이스에서 시작된 애플리케이션 내에서 하나 이상의 서드파티 콘텐츠 제공자에 의해 제공될 수 있는 콘텐츠를 디스플레이할 수 있다. 일부 경우에, 콘텐츠 제공자에 의한 디스플레이를 위해 제공되는 콘텐츠는 애플리케이션 내에서 실제로 디스플레이되지 않을 수 있다(또는 디스플레이를 위해 제공되지만 실제로 사용자 디스플레이의 사용자에게 보이지 않음). 이는 콘텐츠 플랫폼이 디스플레이되는 애플리케이션의 오류, 콘텐츠 플랫폼에서 제공하는 특정한 콘텐츠 페이지의 오류, 일반적인 콘텐츠 플랫폼의 오류 또는 콘텐츠 플랫폼에 콘텐츠를 제공하는 하나 이상의 콘텐츠 제공자의 오류와 같은 여러 가지 이유 때문일 수 있다.
일반적으로, 본 명세서에 기술된 발명의 일 혁신적 양태는 클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 단계, 상기 요청은 상기 디스플레이의 특정한 부분을 식별하며; 상기 디스플레이의 특정한 부분에 디스플레이된 상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되었는지 여부를 결정하는 단계; 상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되어 있다고 결정함에 응답하여: 상기 디지털 워터마크 내에서 인코딩된 복수의 속성에 대한 데이터를 획득하기 위해 상기 디지털 워터마크를 디코딩하는 단계, 상기 복수의 속성은 상기 특정한 콘텐츠 아이템을 설명하며; 상기 디지털 서명된 토큰의 페이로드에서 상기 복수의 속성에 대한 데이터를 포함하는 상기 디지털 서명된 토큰을 생성하는 단계; 및 상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 단계를 포함한다. 이 양태의 다른 실시예들은 상기 방법들의 액션들을 수행하도록 구성된 대응 시스템들, 디바이스들, 장치들 및 컴퓨터 프로그램들을 포함한다. 컴퓨터 프로그램들(예를 들어, 명령어들)은 컴퓨터 저장 디바이스에 인코딩될 수 있다. 이들 또는 다른 실시예들은 다음 구성들 중 하나 이상을 각각 선택적으로 포함할 수 있다.
상기 방법은 상기 디지털 서명된 토큰을 사용하여, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 상기 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는 단계를 더 포함하며, 상기 확인하는 단계는: 상기 디지털 서명된 토큰에 포함된 디지털 서명이 유효한지 검증하는 단계, 상기 검증하는 단계는 상기 디지털 서명된 토큰에 포함된 상기 디지털 서명이 아닌 데이터를 사용하여 디지털 서명을 생성하는 단계를 포함하며; 상기 콘텐츠 제공자로부터, 상기 서드파티 콘텐츠 아이템에 대한 상기 복수의 속성에 대한 데이터를 획득하는 단계; 및 상기 디지털 워터마크에 인코딩된 상기 복수의 속성에 대한 데이터가 상기 서드파티 콘텐츠 아이템에 대해 획득된 대응하는 복수의 속성에 대한 데이터와 동일하다고 결정하고 이에 응답하여 상기 특정한 콘텐츠 아이템이 상기 서드파티 콘텐츠임을 표시하는 메시지를 생성하는 단계를 포함한다.
상기 방법은 상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되어 있지 않다고 결정함에 응답하여, 상기 서드파티 콘텐츠 아이템이 상기 클라이언트 디바이스의 디스플레이의 상기 특정한 부분에서 보이지 않음을 표시하는 메시지를 상기 디지털 서명된 토큰의 페이로드에 포함하는 디지털 서명된 토큰을 생성하는 단계; 및 상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 단계를 포함한다.
일부 구현예에서, 방법은 상기 디스플레이의 특정한 부분을 사용하여, 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 스크린샷을 획득하는 단계를 더 포함한다.
일부 구현예에서, 상기 특정한 콘텐츠 아이템에 내장된 디지털 워터마크를 획득하는 단계는 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 획득된 스크린샷으로부터 디지털 워터마크를 획득하는 것을 포함한다.
일부 구현예에서, 상기 획득된 디지털 워터마크는 다음의 속성들 중 둘 이상에 대한 데이터를 인코딩하며, 상기 속성들은: 서드파티 콘텐츠 아이템의 콘텐츠 유형; 상기 서드파티 콘텐츠 아이템에 제공된 콘텐츠에 대한 설명; 서드파티 콘텐츠 제공자의 식별; 서드파티 콘텐츠 아이템에 대한 고유 식별자; 서드파티 콘텐츠 아이템의 크기 파라미터; 상기 디지털 워터마크가 생성되었던 시간을 표시하는 타임스탬프; 및 상기 서드파티 콘텐츠 제공자의 디지털 서명을 포함한다.
일부 구현예에서, 디지털 서명된 토큰은 (1) 상기 클라이언트 디바이스의 디바이스 공개 키; (2) 상기 복수의 속성에 대한 데이터를 포함하는 페이로드; (3) 상기 클라이언트 디바이스의 신뢰성을 식별하는 디바이스 무결성 토큰, 상기 디바이스 무결성 토큰은 신뢰 디바이스 무결성 시스템에 의해 서명되며; 및 (4) 상기 디바이스 공개 키, 상기 페이로드 및 상기 디바이스 무결성 토큰의 디지털 서명을 포함하는 증명 토큰이며, 상기 디지털 서명은 상기 디바이스 공개 키에 대응하고 수학적으로 링크된 상기 클라이언트 디바이스에 대한 디바이스 개인 키를 사용하여 생성된다.
일반적으로, 본 명세서에 기술된 발명의 일 혁신적 양태는 클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 단계; 상기 요청은 상기 클라이언트 디바이스의 운영 체제에서 획득된 초기 증명 데이터를 포함하며, 상기 초기 증명 데이터는 (1) 상기 디스플레이의 특정한 부분에 디스플레이된 상기 특정한 콘텐츠 아이템에 내장된 디지털 워터마크 내에 인코딩되었던 복수의 속성에 대한 디코딩된 데이터, 상기 복수의 속성은 상기 특정한 콘텐츠 아이템을 설명하며, (2) 상기 디스플레이의 특정한 부분을 식별하는 데이터, 및 (3) 상기 디코딩된 데이터 및 상기 디스플레이의 특정한 부분을 식별하는 데이터를 사용하여 생성된 제1 데이터 아이템을 포함하며; 상기 운영 체제로부터, 상기 제1 데이터 아이템이 제2 데이터 아이템과 매칭되는지 여부를 특정하는 표시를 획득하는 단계, 상기 제2 데이터 아이템은 상기 디코딩된 데이터 및 상기 요청에 포함된 상기 디스플레이의 특정한 부분을 식별하는 데이터를 사용하여 상기 운영 체제에 의해 생성되며; 상기 제1 데이터 아이템이 상기 제2 데이터 아이템과 매칭됨을 특정하는 표시를 획득함에 응답하여: 디지털 서명된 토큰의 페이로드에서 상기 복수의 속성에 대한 데이터를 포함하는 디지털 서명된 토큰을 생성하는 단계; 상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 단계를 포함한다. 이 양태의 다른 실시예들은 상기 방법들의 액션들을 수행하도록 구성된 대응 시스템들, 디바이스들, 장치들 및 컴퓨터 프로그램들을 포함한다. 컴퓨터 프로그램들(예를 들어, 명령어들)은 컴퓨터 저장 디바이스에 인코딩될 수 있다. 이들 또는 다른 실시예들은 적어도 다음 구성을 각각 선택적으로 포함할 수 있다.
일부 구현예에서, 제1 데이터 아이템 및 제2 데이터 아이템 각각은 해시된 메시지 인증 코드다.
본 명세서에 기술된 본 발명의 특정한 실시예들은 다음의 이점들을 실현하도록 구현될 수 있다. 본 명세서에 설명된 기법은 예를 들어 콘텐츠 플랫폼에 의해 제공되는 콘텐츠 페이지에서, 콘텐츠 플랫폼에서 또는 콘텐츠 플랫폼의 콘텐츠 페이지에 액세스하는데 사용되는 애플리케이션에서 소프트웨어 오류 및 버그(예를 들어 악의적 엔터티가 저지른 사기 사례를 포함할 수 있음)와 같은 오류를 식별할 수 있다. 예를 들어, 애플리케이션, 특정한 콘텐츠 페이지 또는 콘텐츠 플랫폼 내의 소프트웨어 오류로 인해 콘텐츠 제공자가 제공한 서드파티 콘텐츠가 디스플레이되지 않거나 다른 콘텐츠가 콘텐츠 플랫폼에 디스플레이될 수 있는 서드파티 콘텐츠를 덮거나 가릴 수 있다. 일부 경우에, 이러한 소프트웨어 오류는 애플리케이션, 특정한 콘텐츠 페이지 또는 콘텐츠 플랫폼을 손상시킬 수 있는 악성 엔터티에 의해 발생할 수 있다. 본 명세서에 설명된 기법은 콘텐츠 플랫폼이 클라이언트 디바이스에서 액세스될 때 콘텐츠 제공자가 제공하는 서드파티 콘텐츠가 실제로 보이는지 검증할 수 있다. 클라이언트 디바이스에 디스플레이될 것으로 예상되는 콘텐츠 제공자가 제공한 특정한 서드파티 콘텐츠가 클라이언트 디바이스 사용자에게 보이지 않는 경우 그것은 (1) 클라이언트 디바이스에서 디스플레이된 콘텐츠 페이지, (2) 콘텐츠 플랫폼, (3) 애플리케이션 및/또는 (4) 콘텐츠 플랫폼에 콘텐츠를 제공하는 하나 이상의 콘텐츠 제공자에서 소프트웨어 오류가 있다는 신호이다.
본 명세서에 설명된 기법은 또한 콘텐츠 제공자가 제공하는 서드파티 콘텐츠가 실제로 클라이언트 디바이스에 디스플레이되고 디바이스의 사용자에게 보이는지 여부에 대한 독립적인 검증을 제공한다. 즉, 본 명세서에 설명된 서드파티 콘텐츠 검증 기법은 (기존 솔루션의 경우처럼) 애플리케이션 내에 디스플레이되는 콘텐츠와 관련하여 콘텐츠 플랫폼이 만든(예: 제출된 데이터) 표현에 단순히 의존하지 않는다. 오히려, 본 명세서에 설명된 기법은 클라이언트 디바이스에 의한 독립적인 프로세싱(예를 들어, 단독으로 또는 클라이언트 디바이스에서 실행되는 별도의 애플리케이션과 협력하여 운영 체제의 프로세싱)에 의존하여 이러한 검증을 수행한다. 본 명세서에 기술된 기법은 콘텐츠 플랫폼에서 제공되고 클라이언트 디바이스에 디스플레이되는 콘텐츠를 분석하고, 이 콘텐츠가 실제로 콘텐츠 제공자에 의해 제공되고 사용자 디바이스의 사용자에게 보이는지 여부를 검증하는데 사용될 수 있는 토큰을 생성한다.
이와 관련하여, 본 명세서에 설명된 기법은 디스플레이되고 클라이언트 디바이스에서 사용자에게 보여지는 콘텐츠를 검증하기 위해 콘텐츠 제공자(또는 다른 콘텐츠 검증 엔터티)에 의해 사용될 수 있는 정보의 클라이언트 디바이스에서 콘텐츠 제공자(또는 다른 콘텐츠 검증 엔터티)로의 보안 전송을 가능하게 한다. 악성 애플리케이션 또는 엔터티는 클라이언트 디바이스가 콘텐츠 제공자(또는 다른 콘텐츠 검증 엔터티)에게 제공한 정보를 변조하거나 위조하려고 시도할 수 있으며, 이는 콘텐츠가 잘못 검증되게 할 수 있다. 이를 방지하기 위해, 본 명세서에 설명된 기법은 특정 암호화 기법을 사용하여 클라이언트 디바이스에서 콘텐츠 제공자로의 정보 전송을 보호한다. 그 결과, 본 명세서에 기술된 콘텐츠 검증 프로세스는 콘텐츠 검증 프로세스 동안 콘텐츠 제공자(또는 다른 적절한 검증 시스템)를 속이도록 설계된 악의적이거나 사기성 액션에 굴복할 가능성이 낮다.
본 명세서에서 본 발명의 하나 이상의 실시예들의 세부 사항은 첨부 도면과 아래의 설명에서 기술된다. 본 발명의 다른 구성들, 양태들 및 이점들은 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1은 클라이언트 디바이스의 애플리케이션 내에서 액세스되는 콘텐츠 플랫폼 내에서 디스플레이하기 위해 콘텐츠가 제공되는 예시적 환경의 블록도이다.
도 2는 오류를 검출하고 콘텐츠 플랫폼에서 제공되고 클라이언트 디바이스에 디스플레이되고 디바이스의 사용자에게 보이는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공되는지 검증하는 예시적 프로세스를 도시하는 스윔 레인 다이어그램이다.
도 3은 오류를 검출하고 콘텐츠 플랫폼에서 제공되고 클라이언트 디바이스에 디스플레이되고 디바이스의 사용자에게 보이는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공되는지 검증하는 또 다른 예시적 프로세스를 도시하는 스윔 레인 다이어그램이다.
도 4는 예시적 컴퓨터 시스템의 블록도이다.
다양한 도면들에서 동일한 참조 번호 및 기호는 동일한 구성요소를 표시한다.
본 개시는 서드파티 콘텐츠 제시시 발생할 수 있는 오류를 검출하고, 콘텐츠 플랫폼이 클라이언트 디바이스에서 엑세스될 때 콘텐츠 플랫폼에 디스플레이하기 위해 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠가 실제로 디스플레이되고 사용자에게 보이는지 검증하기 위한 컴퓨터로 구현되는 방법과 시스템에 관련된다.
콘텐츠 플랫폼은 콘텐츠 플랫폼이 클라이언트 디바이스에서 실행되는 애플리케이션(예: 브라우저, 네이티브 애플리케이션) 내에서 액세스될 때 그 플랫폼에 제공된 특정 콘텐츠가 실제로 클라이언트 디바이스에 디스플레이되고 사용자에게 보이는지 검증하려고 할 수 있다. 콘텐츠 제공자는 또한 콘텐츠 플랫폼이 클라이언트 디바이스에서 액세스될 때 콘텐츠 플랫폼에 제공하는 서드파티 콘텐츠가 실제로 클라이언트 디바이스에 디스플레이되고 사용자에게 보이는지 검증하기를 원할 수 있다. 본 명세서에 기술된 기법(아래에 요약되고 본 명세서 전체에 걸쳐 추가적으로 자세히 설명됨)은 콘텐츠 제공자(또는 다른 적절한 콘텐츠 검증 시스템)와 협력하여 작동하는 클라이언트 디바이스에서 실행되는 신뢰 소프트웨어 프로세스(예: 운영 체제의 보안/권한 코드, 신뢰 시스템 애플리케이션)에 의존하여 그러한 콘텐츠 검증을 가능하게 한다.
본 명세서 전체에 걸쳐 기술된 바와 같이, 운영 체제(또는 클라이언트 디바이스 또는 웹브라우저의 다른 신뢰 애플리케이션)는 클라이언트 디바이스에서 실행되는 애플리케이션으로부터 요청을 수신하여 부분적으로 또는 완전히 암호화될 수 있는 디지털 서명된 토큰을 생성한다. 이 디지털 서명된 토큰은 애플리케이션 내의 콘텐츠 페이지에 제공되고 클라이언트 디바이스 디스플레이의 특정한 부분에 디스플레이되고 사용자에게 보이는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템임을 검증하는데 사용될 수 있다.
클라이언트 디바이스의 운영 체제(또는 클라이언트 디바이스 또는 웹브라우저의 다른 신뢰 애플리케이션)는 디스플레이의 특정한 부분(예: 모바일 디바이스용 터치 스크린 및 데스크톱 컴퓨터용 LCD/LED 디스플레이)에 디스플레이된 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되어 있는지 여부를 결정한다. 본 명세서에서 사용된 바와 같이, 신뢰 애플리케이션은 디바이스의 보안 환경에서 동작하고, 특정 코어 디바이스 서비스를 수행하는 애플리케이션이다(운영 체제 내에서 권한있는 코드에 의해 수행되는 디바이스 서비스와 유사). 운영 체제(또는 웹브라우저)가 콘텐츠에서 디지털 워터마크를 식별하지 못하는 경우, 콘텐츠 제공자가 제공한 서드파티 콘텐츠 아이템(해당 워터마크를 포함할 수 있음)이 클라이언트 디바이스에 보이지 않는다는 결론을 내린다. 이는 콘텐츠 페이지, 콘텐츠 플랫폼, 애플리케이션 또는 콘텐츠 제공자에서의 오류를 표시할 수 있다. 반면에, 운영 체제(또는 웹브라우저)가 특정한 콘텐츠 아이템에서 디지털 워터마크를 식별하면, 디지털 워터마크를 디코딩하여 특정한 콘텐츠 아이템을 설명하는 다수의 속성(예: 콘텐츠 아이템 식별자, 콘텐츠 유형, 콘텐츠 설명, 콘텐츠 생성자 등)에 대한 데이터를 획득한다.
이 디코딩된 데이터를 사용하여, 운영 체제(또는 클라이언트 디바이스 또는 웹브라우저의 다른 신뢰 애플리케이션)는 디지털 서명된 토큰의 페이로드에 있는 다수의 속성에 대한 데이터를 포함하는 디지털 서명된 토큰을 생성한다. 일부 구현예에서, 디지털 서명된 토큰은 (1) 클라이언트 디바이스의 고유 식별자 (예: 디바이스의 공개 키), (2) 페이로드, (3) 클라이언트 디바이스의 신뢰성을 평가하는데 사용될 수 있는 디바이스 무결성 토큰 및/또는 (4) 클라이언트 디바이스의 개인 키를 사용하여 생성된 클라이언트 디바이스, 페이로드 및 디바이스 무결성 토큰에 대한 디바이스 식별자의 디지털 서명을 포함하는 증명 토큰이다. 디지털 서명된 토큰, 특히 증명 토큰은 디지털 서명된 토큰의 수신자가 토큰의 페이로드(또는 기타)에 포함된 임의의 데이터가 변조 또는 위조되었는지 여부를 식별할 수 있도록 한다(도 2를 참조하여 추가로 기술될 바와 같이). 웹브라우저가 디지털 서명된 토큰을 생성하는 경우, 브라우저의 네이티브 코드가 토큰을 생성한다. 브라우저 네이티브 코드는 브라우저에 의해 렌더링된 웹페이지에서 실행되는 스크립트에 없는 권한이 있다. 일반적으로 Javascript가 브라우저 네이티브 코드에 침투하는 것은 매우 어렵다.
운영 체제(또는 클라이언트 디바이스 또는 웹브라우저의 다른 신뢰 애플리케이션)는 디지털 서명된 토큰을 콘텐츠 제공자(또는 다른 적절한 콘텐츠 검증 시스템)에 보낸다. 콘텐츠 제공자는 먼저 디지털 서명을 검증함으로써 디지털 서명된 토큰이 진본인지 여부를 확인한다. 그렇지 않은 경우, 콘텐츠 제공자는 서드파티 콘텐츠 아이템이 클라이언트 디바이스에 디스플레이되지 않을 수 있으며, 콘텐츠 페이지, 콘텐츠 플랫폼 또는 애플리케이션에 오류가 있을 수 있다고 결론을 내린다. 콘텐츠 제공자가 디지털 서명된 토큰이 진본인 것으로 결정하면, 페이로드에 포함된 속성에 대한 데이터가 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템의 속성 데이터와 매칭되는지 여부를 결정한다. 콘텐츠 제공자가 속성에 대한 데이터가 매칭된다고 결정하면, 콘텐츠 제공자는 디스플레이를 위해 제공되고 디바이스의 디스플레이의 특정한 부분에서 사용자에게 보이는 특정한 콘텐츠 아이템이 실제로 콘텐츠 제공자에 의해 제공되었다고 결론을 내린다. 그렇지 않은 경우, 콘텐츠 제공자는 서드파티 콘텐츠 아이템이 클라이언트 디바이스에 실제로 디스플레이되지 않았고, 콘텐츠 페이지, 콘텐츠 플랫폼 또는 애플리케이션 또는 콘텐츠 제공자에 오류가 있을 수 있다고 결론을 내린다.
상기 기술된 구성 및 추가 구성은 아래에 자세히 설명된다.
도 1은 클라이언트 디바이스의 애플리케이션 내에서 액세스되는 콘텐츠 플랫폼 내에서 디스플레이하기 위해 콘텐츠가 제공되는 예시적 환경(100)이다. 예시적 환경(100)은 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷 또는 그들의 조합과 같은 네트워크(150)를 포함한다. 네트워크(150)는 클라이언트 디바이스(102), 콘텐츠 플랫폼(140) 및 콘텐츠 제공자(130)를 연결한다. 예시적 환경(100)은 많은 상이한 콘텐츠 제공자(130), 콘텐츠 플랫폼(140) 및 클라이언트 디바이스(102)를 포함할 수 있다.
클라이언트 디바이스(102)는 네트워크(150)를 통해 콘텐츠를 요청하고 수신할 수 있는 전자 디바이스이다. 예시적 클라이언트 디바이스(102)는 퍼스널 컴퓨터들, 모바일 통신 디바이스들, 디지털 어시스턴트 디바이스 및 네트워크(150)를 통해 데이터를 송수신할 수 있는 기타 디바이스를 포함한다. 클라이언트 디바이스(102)는 일반적으로 네트워크(150)를 통해 데이터의 송수신을 지원하기 위한 웹 브라우저와 같은 사용자 어플리케이션을 포함하지만, 클라이언트 디바이스(102)에 의해 실행되는 네이티브 어플리케이션(native application)도 네트워크(150)를 통해 콘텐츠의 송수신을 지원할 수 있다. 클라이언트 디바이스(102)에 제시된 콘텐츠의 예는 웹페이지, 워드 프로세싱 문서, PDF(Portable Document Format) 문서, 이미지, 비디오 및 검색 결과 페이지를 포함한다.
콘텐츠 플랫폼(140)은 콘텐츠의 배포를 가능하게 하는 컴퓨팅 플랫폼(예를 들어, 도 4를 참조하여 설명된 데이터 프로세싱 장치)이다. 예시적 콘텐츠 플랫폼(140)은 검색 엔진, 소셜 미디어 플랫폼, 새로운 플랫폼, 데이터 수집기 플랫폼, 또는 다른 콘텐츠 공유 플랫폼을 포함한다. 각 콘텐츠 플랫폼(140)은 콘텐츠 플랫폼 서비스 제공자에 의해 운영될 수 있다.
콘텐츠 플랫폼(140)은 자신의 콘텐츠를 발행하고 이용 가능하게 할 수 있다. 예를 들어, 콘텐츠 플랫폼(140)은 자체 뉴스 기사를 발행하는 뉴스 플랫폼일 수 있다. 콘텐츠 플랫폼(140)은 또한 콘텐츠 플랫폼(140)의 일부가 아닌 하나 이상의 콘텐츠 제공자(130)에 의해 제공되는 콘텐츠를 제시할 수 있다. 위의 예에서, 뉴스 플랫폼은 또한 하나 이상의 콘텐츠 제공자(130)에 의해 제공되는 서드파티 콘텐츠를 제시할 수 있다. 다른 예로서, 콘텐츠 플랫폼(140)은 자신의 콘텐츠를 퍼블리시하지 않고 다른 콘텐츠 제공자(130)에 의해 제공되는 서드파티 콘텐츠를 취합하여 제시하는 데이터 수집기 플랫폼일 수 있다.
본 명세서에서 사용되는 바와 같이, 콘텐츠 제공자(130)는 데이터 프로세싱 장치(도 4를 참조하여 설명됨)일 수 있고, 서버, 저장소, 또는 이들 엔터티로부터의 콘텐츠에 대한 요청에 응답하여 콘텐츠를 콘텐츠 플랫폼(140) 및/또는 클라이언트 디바이스(102)에 제공하는 하나 이상의 엔터티에 의해 생성 및/또는 퍼블리시된 콘텐츠를 저장하는 다른 저장 디바이스를 포함할 수 있다.
클라이언트 디바이스(102)가 애플리케이션 내의 콘텐츠 플랫폼(140)에 의해 제공되는 콘텐츠 페이지에 액세스 할 때, 애플리케이션 A(106)(예: 브라우저 또는 네이티브 애플리케이션), 콘텐츠 페이지의 스크립트(또는 애플리케이션 A의 네이티브 코드)는 콘텐츠 플랫폼(140)의 일부가 아닌 하나 이상의 콘텐츠 제공자(130)로부터 콘텐츠를 요청한다. 콘텐츠에 대한 이 요청에 응답하여, 콘텐츠 제공자(130)는 애플리케이션 내에서 콘텐츠 아이템(예를 들어, 콘텐츠 아이템 CI1(106) 또는 콘텐츠 아이템 CI2(108))로서 제시될 수 있는 서드파티 콘텐츠를 제공한다.
클라이언트 디바이스(102)는 콘텐츠 제공자(130)와 협력하여 애플리케이션에서 제공되고 클라이언트 디바이스(예: CI1(106))에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자(130)에 의해 제공되고 사용자에게 보이는지 여부를 검증할 수 있다. 클라이언트 디바이스(102) 및 콘텐츠 제공자(130)가 이 검증을 협력적으로 수행하는 기법은 아래에 요약되어 있으며 도 2 및 3을 참조하여 추가로 상세하게 설명된다.
우선, 콘텐츠 제공자(130)는 애플리케이션 내에서 디스플레이하기 위해 콘텐츠 플랫폼에 제공하는 콘텐츠 아이템에 디지털 워터마크를 포함시킨다. 본 명세서에서 사용된 바와 같이, 디지털 워터마크는 시각적으로 알아볼 수 없는 방식으로 콘텐츠 내에 정보를 내장한다. 일부 구현예에서, 콘텐츠 제공자(130)는 콘텐츠 아이템의 메타 데이터 내가 아닌 콘텐츠 아이템의 콘텐츠에 디지털 워터마크를 내장한다. 콘텐츠 아이템의 콘텐츠 내에 디지털 워터마크를 내장하면 콘텐츠 아이템의 스크린샷만 사용하여 콘텐츠 아이템에서 워터마크를 디코딩하거나 추출할 수 있다(콘텐츠 아이템의 메타데이터가 아닌 콘텐츠 아이템의 콘텐츠만 제공).
또한 콘텐츠 아이템에 내장된 디지털 워터마크는 콘텐츠 아이템을 설명하는 하나 이상의 속성을 인코딩한다. 이러한 속성의 예는 다른 것들 중에서도 특히, (1) 콘텐츠 아이템의 콘텐츠 유형(예: 콘텐츠가 비디오, 오디오 또는 텍스트인지 여부를 특정할 수 있음), (2) 콘텐츠 아이템의 콘텐츠에 대한 설명, (3) 콘텐츠 제공자의 식별 (예: 숫자, 영숫자 또는 콘텐츠 아이템을 제공한 특정한 콘텐츠 제공자(130)를 고유하게 식별 할 수 있는 기타 식별자), (4) 콘텐츠 아이템의 식별 (예: 숫자, 영숫자 또는 콘텐츠 아이템을 고유하게 식별할 수 있는 기타 식별자), (5) 컨텐츠 아이템의 생성자의 식별(예: 숫자, 영숫자 또는 컨텐츠 제공자(130)와 같거나 다를 수 있는 컨텐츠 아이템의 생성자를 고유하게 식별할 수 있는 다른 식별자), (6) 콘텐츠 아이템의 크기 파라미터(예: 콘텐츠 제공자(130)가 콘텐츠 아이템이 제공될 것으로 예상하는 콘텐츠 블록의 예상 크기를 특정하는 파라미터), (7) 디지털 워터마크가 생성되었던 시간을 표시하는 타임스탬프(예: 워터마크가 생성되었던 시간 및/또는 날짜) 및 (8) 콘텐츠 제공자(130)의 디지털 서명(예: 디지털 서명은 디지털 워터마크에 인코딩된 속성을 통해 서명될 수 있음)를 포함한다. 이들 속성은 콘텐츠 제공자(130)에 의해 이후에 특정한 콘텐츠가 콘텐츠 제공자에 의해 제공되었고 사용자에게 보이는지를 검증하는데 사용된다.
일부 구현예에서, 콘텐츠 제공자(130)는 콘텐츠 아이템을 구성하는 상이한 픽셀들의 픽셀 값들에 대한 조정/수정을 특정함으로써(즉, 컬러 쉐이드를 조정함으로써) 디지털 워터마크를 콘텐츠 아이템의 콘텐츠에 내장한다. 조정으로 콘텐츠의 색상이 수정될 수 있지만 시각적으로 인식할 수 없는 방식으로 수정된다. 즉, 색상을 완전히 변경하지 않고(예: 빨간색과 같은 특정한 색상으로부터 파란색과 같은 완전히 다른 색상으로 픽셀 변경), 콘텐츠의 색상에 대한 미세한 조정을 함으로써(예: 특정한 색상으로부터 상기 특정한 색상에 대한 옅은 색으로 픽셀을 변경).
콘텐츠 제공자(130)가 콘텐츠 아이템을 애플리케이션(104)에 제공하면, 애플리케이션(104)은 콘텐츠 아이템을 렌더링한다. 즉, 애플리케이션(104)은 애플리케이션(104) 내에 디스플레이하기 위해 콘텐츠 아이템을 제공할 수 있다.
애플리케이션(104)이 콘텐츠 페이지 상의 하나 이상의 콘텐츠 아이템을 디스플레이하기 위해 렌더링 또는 제공한 후, 애플리케이션(104)(또는 스크립트의 도움을 통해 콘텐츠 아이템 자체)은 애플리케이션 내에 디스플레이된 특정한 콘텐츠 아이템, 예를 들어 Ci1(106)이 실제로 콘텐츠 제공자(130)에 의해 제공되었고 사용자에게 보인다는 것을 검증할 수 있다.
일부 구현예에서(도 2를 참조하여 설명된 바와 같이), 애플리케이션은 클라이언트 디바이스(102)의 운영 체제(118)에 요청하여, 디지털 서명된 토큰을 생성하며, 상기 디지털 서명된 토큰은 애플리케이션(104) 내의 콘텐츠 페이지에 제공되고, 클라이언트 디바이스의 디스플레이의 특정한 부분에서 디스플레이되고 사용자에게 보이는 콘텐츠 아이템 Ci1(106)이 콘텐츠 제공자(130)에 의해 제공된 콘텐츠 아이템인지 여부를 검증하는데 사용된다. 디바이스 디스플레이 드라이버(110), 워터마크 디코더(112), 토큰 생성기(114) 및 MAC 생성기(116)와 같은 소프트웨어 컴포넌트를 포함하는 운영 체제(118) 내의 권한 있는 또는 신뢰 코드는 디지털 워터마크를 디코딩하고, 디지털 서명된 토큰을 생성하고, 상기 디지털 서명된 토큰을 애플리케이션(104)에 제공하는데 사용된다. 애플리케이션(104)은 이 디지털 서명된 토큰을 콘텐츠 제공자(130)에 제공하고, 차례로 콘텐츠 검증을 수행할 때 이 디지털 서명된 토큰을 사용한다. 권한이 있거나 신뢰할 수 있는 코드는 커널 모드에서만 실행되는 코드이다(예: 다른 사용자, 애플리케이션 또는 엔터티가 아닌 운영 체제에서만 실행할 수 있는 코드/명령어). 결과적으로 권한이 있거나 신뢰할 수 있는 코드는 다른 애플리케이션/엔터티의 침투에 덜 취약하다.
일부 구현예에서(도 3을 참조하여 설명된 바와 같이), 운영 체제(118)는 디지털 워터마크를 디코딩하고, 다른 애플리케이션(즉, 애플리케이션(104)과 별개인 애플리케이션(140))은 디지털 서명된 토큰 생성시 디코딩된 디지털 워터마크로부터 획득된 정보를 사용한다.
도 1의 상기 참조된 컴포넌트 각각의 구조 및/또는 동작은 도 2 및 3을 참조하여 추가로 상세히 설명된다.
도 2는 오류를 검출하고, 클라이언트 디바이스에 디스플레이된 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공되고 사용자에게 보이는지 검증하기 위한 예시적 프로세스(200)를 예시하는 스윔 레인 다이어그램이다. 프로세스(200)의 동작은 도 1에 기술되고 도시된 시스템의 컴포넌트들에 의해 수행되는 것으로 후술되나; 그러나, 그러한 설명은 단지 예시적 목적이다. 프로세스(200)의 동작은 도 4를 참조하여 기술된 바와 같이 임의의 적절한 디바이스 또는 시스템, 예를 들어 임의의 적절한 데이터 프로세싱 장치에 의해 수행될 수 있다. 프로세스(200)의 동작은 또한 비일시적 컴퓨터 판독가능 매체에 저장된 명령어로서 구현될 수 있다.
애플리케이션 A(104)는 애플리케이션(104) 내에서 콘텐츠 아이템 CI1(106) 및 CI2(108)를 제공하는 것을 포함하는 콘텐츠 페이지를 렌더링한다(202에서). 도 1을 참조하여 설명된 바와 같이, 이러한 콘텐츠 아이템 중 하나 이상은 콘텐츠 제공자(130)로부터 획득된 서드파티 콘텐츠 아이템일 수 있다.
애플리케이션 A(104)는 운영 체제(118)에 요청을 송신하여, 디지털 서명된 토큰을 생성하며(204에서), 상기 디지털 서명된 토큰은 애플리케이션(104) 내의 콘텐츠 페이지에서 제공되고, 클라이언트 디바이스(102)의 디스플레이의 특정한 부분에 디스플레이되고 클라이언트 디바이스(102)의 사용자에게 보이는 특정한 콘텐츠 아이템 CI1(106)이 콘텐츠 제공자(130)에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 검증하는데 사용된다. 디지털 서명된 토큰 생성에 대한 세부 사항은 동작 210을 참조하여 설명된다. 일부 구현예에서, 디지털 서명된 토큰을 생성하기 위한 요청은 이 애플리케이션 내에 디스플레이된 콘텐츠를 검증하기 위한 애플리케이션 A에 의한 요청의 일부로서 포함된다. 애플리케이션(104)에 의해 송신되고 운영 체제(118)에 의해 수신되는 이 요청은 또한 특정한 콘텐츠 아이템 CI1(106)이 디스플레이되는 클라이언트 디바이스의 디스플레이의 특정한 부분을 식별한다.
일부 구현예에서, 네이티브 애플리케이션일 수 있는 애플리케이션(104)은 소프트웨어 개발 키트(SDK) 또는 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있고, SDK 또는 API는 애플리케이션(104)으로 하여금 요청을 생성하게 하고, 요청과 함께 특정한 콘텐츠 아이템이 디스플레이되는 디스플레이의 특정한 부분을 구분하는 디스플레이의 좌표(또는 디바이스의 디스플레이의 픽셀 범위 특정)를 제공하게 한다. 애플리케이션(104)이 웹브라우저인 구현예에서, 페이지에서 실행되는 스크립트는 요청을 생성하고, 요청과 함께 특정한 콘텐츠 아이템이 디스플레이되는 디스플레이의 특정한 부분을 구분하는 디스플레이의 좌표(또는 디바이스의 디스플레이에서 픽셀 범위를 특정)를 제공할 수 있다. 이러한 구현예에서, 운영 체제가 디지털 서명된 토큰을 생성하면 스크립트는 운영 체제(118)에 요청을 송신한다. 그러나 웹브라우저가 디지털 서명된 토큰을 생성하는 경우, 스크립트는 웹브라우저의 네이티브, 권한이 있는 코드로 요청을 송신한다.
운영 체제(118)(또는 웹용 브라우저)는 디스플레이의 특정한 부분의 스크린샷을 획득한다(206에서). 일부 구현예에서, 디바이스 디스플레이 드라이버(110)는 요청에 포함되었던 디스플레이의 특정한 부분의 식별(예: 좌표 또는 픽셀 범위)을 사용하여, 디스플레이의 특정한 부분에 디스플레이하기 위해 제공된 특정한 콘텐츠 아이템 CI1(106)의 스크린샷의 위치를 찾아 생성한다. 일부 구현예에서, 디바이스 디스플레이 드라이버(110)는 디스플레이의 특정한 부분의 스크린샷을 워터마크 디코더(112)에 제공한다. 일부 구현예에서, 운영 체제의 디바이스 드라이버는 디바이스 드라이버가 전체 비트맵을 메모리에 구축하고 전체 비트맵을 화면에 보여줄 수 있는 메모리 버퍼를 가지고 있다. 이러한 구현예에서, 스크린샷을 획득하는 것은 단순히 메모리의 전체 비트맵에 액세스하고, 디스플레이의 특정한 부분에 대응하는 비트맵의 부분을 식별하는 것을 포함한다.
디바이스 디스플레이 드라이버(110)로부터 획득된 스크린샷을 사용하여, 워터마크 디코더(112)(운영 체제(118)에서 또는 웹브라우저의 일부로서 구현될 수 있음)는 디지털 워터마크가 스크린샷에 존재하는지 여부를 결정하고 그렇다면 디지털 워터마크를 디코딩한다(206에서). 워터마크 디코더(112)는 콘텐츠 아이템에 디지털 워터마크로서 인코딩되었던 데이터를 획득하기 위해 데이터가 특정한 콘텐츠에서 인코딩될 수 있는 방법을 특정하는 규칙을 저장하는 규칙 기반 엔진으로 구현될 수 있다(예를 들어, 픽셀 값 조정의 다른 패턴을 사용하여). 대안적으로, 워터마크 디코더(112)는 기계 학습 모델(예를 들어, 감독된 기계 학습 모델)과 같은 통계 모델로서 구현될 수 있다. 이러한 모델은 입력 콘텐츠 아이템의 스크린샷으로부터 디지털 워터마크(즉, 콘텐츠 아이템 내에서 인코딩된 데이터)를 획득할 수 있으며, 디지털 워터마크가 내장된 콘텐츠 아이템의 스크린샷 세트와 콘텐츠 아이템 내에 인코딩된 데이터를 포함하는 대응하는 레이블 세트를 사용하여 트레이닝된다. 대안적으로, 워터마크 디코더(112)는 먼저 푸리에 변환 또는 웨이블릿 변환을 포함하는 알고리즘을 사용하여 이미지를 주파수 도메인으로 변환한 다음 결과의 저주파 컴포넌트를 조사함으로써 구현될 수 있다.
일부 구현예에서, 워터마크 디코더(112)는 먼저 디지털 워터마크가 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템에 내장되었는지 여부를 결정한다. 이는 특정한 콘텐츠 아이템에 디지털 워터마크로서 내장된 임의의 데이터가 있는지 결정하기 위해 특정한 콘텐츠 아이템의 스크린샷을 분석하는 것을 포함한다. 예를 들어, 특정한 콘텐츠의 픽셀 값(즉, 특정한 콘텐츠 아이템에 대응하는 디스플레이의 특정한 부분의 스크린샷)은 규칙 기반 엔진(또는 기계 학습 모델과 같은 다른 통계 모델)을 사용하여 분석되어, 콘텐츠 아이템 내에서 디지털 워터마크로서 인코딩될 수 있는 데이터를 식별한다. 이 분석이 특정한 콘텐츠 아이템에 존재하는 임의의 인코딩된 데이터를 식별하지 않으면, 워터마크 디코더(112)는 특정한 콘텐츠 아이템에 디지털 워터마크가 포함되어 있지 않다고 결정한다. 이 결정에 기초하여, 운영 체제(118)(또는 웹브라우저가 디지털 서명된 토큰을 생성하는 경우 웹브라우저)는 콘텐츠 제공자(130)에 의해 제공된 서드파티 콘텐츠 아이템이 애플리케이션(104)에 디스플레이되지 않았거나, 디스플레이된 경우 애플리케이션(104) 내에 디스플레이되는 다른 콘텐츠에 의해 숨겨지거나 가려졌다고 결론내린다. 그러한 경우에, 운영 체제(118)(또는 웹브라우저가 디지털 서명된 토큰을 생성하는 경우 웹브라우저)는 콘텐츠 제공자(130)에 의해 제공되었던 서드파티 콘텐츠 아이템이 클라이언트 디바이스의 디스플레이의 특정한 부분에서 보이지 않는다고 표시하는 메시지를 생성한다.
반면에, 분석 결과 데이터가 콘텐츠 아이템 내에 인코딩된 것으로 밝혀지면, 워터마크 디코더(112)는 특정한 콘텐츠 아이템에 디지털 워터마크가 포함되어 있다고 결정한다. 이 경우, 워터마크 디코더(112)는 규칙 기반 엔진 또는 다른 적절한 통계 모델(예를 들어, 기계 학습 모델)을 사용하여, 디지털 워터마크 내에서 인코딩된 하나 이상의 속성에 대한 데이터를 획득하기 위해 디지털 워터마크를 디코딩한다. 도 1을 참조하여 설명된 바와 같이, 이러한 속성에 대한 데이터는 특정한 콘텐츠 아이템을 설명하고, 콘텐츠 제공자(130)에 의해 콘텐츠 제공자(130)가 이 콘텐츠를 제공했는지 여부를 검증하는데 사용될 수 있다(아래에서 추가로 설명됨). 워터마크 디코더(112)는 특정한 콘텐츠 아이템(106)을 설명하는 하나 이상의 속성에 대한 데이터를 포함하는 디코딩된 디지털 워터마크를 토큰 생성기(114)에 제공한다.
토큰 생성기(114)(운영 체제(118)의 일부이거나 웹브라우저가 디지털 서명된 토큰을 생성하는 경우 웹 브라우저의 일부일 수 있음)는 특정한 콘텐츠 아이템을 설명하는 하나 이상의 속성에 대한 데이터를 포함하는 디지털 워터마크를 디코딩하여 획득된 데이터를 사용하여 디지털 서명된 토큰을 생성한다(208에서).
일부 구현예에서, 디지털 서명된 토큰은 적어도 사용자 식별자와 페이로드를 포함하고, 일부 경우에 디바이스 무결성 토큰(즉, 디바이스 무결성 토큰은 증명 토큰에 포함될 수 있지만 반드시 포함될 필요는 없다)도 포함하는 데이터의 세트를 포함하는 증명 토큰이다. 증명 토큰은 이 데이터 세트의 디지털 서명도 포함한다. 다음 단락에서는 이 데이터 세트의 각 데이터 아이템과 이 데이터 세트의 디지털 서명에 대해 설명한다.
증명 토큰에 포함될 수 있는 사용자 식별자는 클라이언트 디바이스(102)의 공개 키를 포함한다. 예를 들어, 클라이언트 디바이스(102)는 디바이스 개인 키 및 디바이스 공개 키를 포함하는 하나 이상의 암호 키 쌍을 생성 및/또는 유지할 수 있다. 디바이스 공개 키는 디바이스 개인 키에 대응하며 수학적으로 링크된다. 개인 키를 사용하여 디지털 서명된 데이터는 대응 공개 키를 사용해야만 검증될 수 있다. 마찬가지로 공개 키를 사용하여 암호화된 데이터는 대응 개인 키를 사용해야만 복호화될 수 있다.
증명 토큰에 포함될 수 있는 페이로드는 특정한 콘텐츠 아이템을 설명하는 하나 이상의 속성에 대한 데이터를 포함하는 디지털 워터마크를 디코딩하여 획득된 데이터를 포함한다. 하나 이상의 속성에 대한 데이터는 별도의 속성에 대한 데이터를 포함하는 어레이의 각 포지션을 가진 어레이(또는 다른 데이터 구조)로서 페이로드에 포함될 수 있다. 일부 구현예에서, 어레이는 콘텐츠 아이템 내에서 인코딩될 수 있는 N개의 가능한 속성에 대응하는 N개의 포지션을 가질 수 있다; 그러나 데이터는 디코딩된 워터마크에 기초하여 데이터를 사용할 수 있는 속성에 해당하는 어레이 포지션에만 저장될 수 있다. 워터마크 디코더가 콘텐츠 아이템이 디지털 워터마크를 포함하지 않는다고 결정하는 경우, 토큰 생성기(114)는 운영 체제(118)에 의해 생성된 메시지를 포함할 수 있으며, 상기 메시지는 콘텐츠 제공자(130)에 의해 제공되었던 서드파티 콘텐츠 아이템이 클라이언트 디바이스의 디스플레이의 특정한 부분에서 보이지 않는다는 것을 표시한다.
증명 토큰에 포함될 수 있는 무결성 토큰은 엔터티가 신뢰 클라이언트 디바이스(110)에 의해 요청이 송신되었는지 여부를 결정하게 할 수 있는 디바이스 무결성 토큰을 포함한다. 디바이스 무결성 토큰은 클라이언트 디바이스의 사기 신호를 평가하고 상기 평가에 기초하여 클라이언트 디바이스에 신뢰성 레벨을 할당하는 서드파티 디바이스 무결성 시스템에 의해 발급될 수 있다. 클라이언트 디바이스(102)에 대한 디바이스 무결성 토큰은 (1) 디바이스 무결성 토큰이 생성되었던 시점에 클라이언트 디바이스(102)의 신뢰성 (또는 무결성) 레벨을 표시하는 판정, (2) 디바이스 무결성 토큰이 생성되었던 시점을 표시하는 디바이스 무결성 토큰 생성 시간, 및 (3) 클라이언트 디바이스(102)에 대한 고유 식별자(예: 클라이언트 디바이스의 디바이스 공개 키 또는 그 파생물일 수 있음)를 포함할 수 있다. 디바이스 무결성 토큰은 디바이스 무결성 토큰에 있는 데이터의 디지털 서명을 포함할 수 있다. 이 디지털 서명은 디바이스 무결성 시스템의 개인 키를 사용하여 생성될 수 있다.
예를 들어 디바이스 무결성 시스템은 시스템이 기밀로 유지하는 개인 키를 사용하여 데이터에 서명할 수 있다. 디바이스 무결성 토큰을 수신하는 엔터티는 디바이스 무결성 토큰의 서명을 검증하기 위해 디바이스 무결성 시스템의 공개 키를 사용할 수 있다. 디바이스 무결성 토큰과 증명 토큰 모두에 클라이언트 디바이스(102)에 대한 디바이스 공개 키를 포함하는 것은 이 두 토큰을 함께 바인딩한다. 즉, 디바이스 무결성 토큰에 클라이언트 디바이스(102)의 디바이스 공개 키를 포함시킴으로써, 증명 토큰의 수신자는 디바이스 무결성 토큰이 해당 클라이언트 디바이스(102)에 대해 생성되었음을 결정할 수 있다. 이는 다른 당사자가 에뮬레이터 또는 손상된 클라이언트 디바이스의 요청에 신뢰 디바이스에 대한 디바이스 무결성 토큰을 포함할 수 없게 한다.
증명 토큰에 포함될 수 있는 디지털 서명은 전술한 데이터 세트(또는 그 일부 변형)의 디지털 서명일 수 있다. 이 디지털 서명은 클라이언트 디바이스(102)의 운영 체제에 의해 안전하고 기밀로 유지될 수 있는 디바이스 개인 키를 사용하여 생성된다. 웹브라우저가 디지털 서명된 토큰을 생성하는 경우, 브라우저는 개인 키를 안전하고 기밀로 유지할 수 있다. 예를 들어, 디지털 서명은 페이로드의 디지털 서명, 사용자 식별자(예를 들어, 디바이스 공개 키) 및 디바이스 무결성 토큰일 수 있다. 일부 구현예에서, 운영 체제(118)는 ECDSA(Elliptic Curve Digital Signature Algorithm)를 사용하여 디지털 서명을 생성하지만, RSA와 같은 다른 서명 기법도 사용될 수 있다.
일부 구현예에서, 증명 토큰 대신에, 다른 유형의 디지털 서명된 토큰이 토큰 생성기(116)에 의해 생성될 수 있으며, 이는 또한 디지털 워터마크를 디코딩함으로써 획득된 속성 데이터의 통신을 보호하는데 사용될 수 있다. 예를 들어, 속성 데이터는 서드파티 무결성 시스템의 개인 키를 사용하여 디지털적으로 서명될 수 있다. 콘텐츠 제공자(130)와 같이 후속적으로 디바이스 무결성 토큰을 수신하는 엔터티는 서드파티 무결성 시스템으로부터 대응하는 공개 키를 요청할 수 있고, 이 키를 사용하여 서명 및 속성 데이터를 검증할 수 있다.
프로세스(200)로 돌아가서, 운영 체제(118)(또는 웹브라우저가 디지털 서명된 토큰을 생성하는 경우 웹브라우저)는 생성된 디바이스 무결성 토큰을 애플리케이션(104)에 제공한다(212에서).
애플리케이션(104)은 디지털 서명된 토큰을 콘텐츠 제공자(130)에 송신하고(214에서) 콘텐츠 제공자(130)는 이 토큰을 사용하여 특정한 콘텐츠 아이템 CI1(106)이 콘텐츠 제공자(130)에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인한다(216에서). 일부 구현예에서, 디지털 워터마크에 인코딩된 속성 값은 암호화될 수 있다. 확인의 일부로서, 콘텐츠 제공자(130)는 디지털 워터마크에 인코딩되었던(그리고 토큰의 페이로드에 포함되었던) 복수의 속성에 대한 데이터를 획득하기 위해 디지털 서명된 토큰의 암호화된 부분을 복호화한다. 증명 토큰이 디지털 서명된 토큰으로 사용되는 구현예에서, 콘텐츠 제공자(130)는 증명 토큰에 포함된 디바이스 공개 키를 사용하여 토큰에 포함된 디지털 서명을 검증한다.
그 다음, 콘텐츠 제공자(130)는 디지털 서명된 토큰에 포함된 디지털 서명을 검증한다. 일부 구현예에서, 콘텐츠 제공자(130)는 디바이스의 개인 키를 사용하여 복호화된 페이로드, 디바이스 공개 키 및 암호화된 디바이스 무결성 토큰에 포함된 데이터 아이템을 사용하여 디지털 서명을 생성하고, 이 생성된 디지털 서명을 증명 토큰에 포함된 디지털 서명과 비교한다. 비교가 동일한 디지털 서명을 나타내지 않으면, 콘텐츠 제공자(130)는 디스플레이의 특정한 부분 내에 디스플레이를 위해 제공된 콘텐츠 아이템(CI1 106)이 콘텐츠 제공자(130)가 제공한 서드파티 콘텐츠 아이템이 아니라고 결론을 내린다. 일부 구현예에서, 콘텐츠 제공자(130)는 콘텐츠 플랫폼(140), 애플리케이션(104), 콘텐츠가 디스플레이되는 특정한 콘텐츠 페이지 또는 콘텐츠 제공자에 오류가 있을 수 있음을 표시하는 메시지를 애플리케이션(104)에 송신할 수 있다. 한편, 비교 결과 동일한 서명이 드러나면, 콘텐츠 제공자(130)는 증명 토큰의 페이로드에 포함된 하나 이상의 속성에 대한 데이터를 획득하고 콘텐츠 확인을 계속한다.
일부 구현예에서, 증명 토큰이 서명된 디바이스 무결성 토큰을 포함하는 경우, 콘텐츠 제공자(130)는 디바이스 무결성 시스템과 인터렉션하여 시스템에 대한 공개 키를 획득할 수 있다(위에서 설명됨). 이 콘텐츠 제공자(130)는 이 공개 키를 사용하여 디바이스 무결성 토큰에서 디지털 서명을 검증함으로써 디바이스 무결성 토큰이 실제로 디바이스 무결성 시스템에 의해 생성되었고 생성 후 수정되지 않았다는 것을 검증한다. 획득된 공개 키를 사용하여 디바이스 무결성 토큰의 디지털 서명이 성공적으로 검증되고, 검증된 디바이스 무결성 토큰에 존재하는 디바이스 무결성 데이터가 디바이스가 신뢰할 수 있음을 나타내는 경우, 콘텐츠 제공자(130)는 콘텐츠 유효성 확인을 계속한다. 그러나 획득된 공개 키를 이용하여 디바이스 무결성 토큰을 검증할 수 없고, 토큰 검증시 획득된 디바이스 무결성 데이터가 디바이스가 신뢰할 수 없음을 나타내는 경우, 콘텐츠 제공자(130)는 추가 콘텐츠 확인을 중지할 수 있다. 그러한 예에서, 콘텐츠 제공자(130)는 또한 콘텐츠 확인을 위해 사용될 디지털 서명된 토큰을 송신한 클라이언트 디바이스(102)에 오류가 있을 수 있음을 나타내는 메시지를 애플리케이션(104)에 송신할 수 있다.
콘텐츠 확인의 일부로서, 콘텐츠 제공자(130)는 이전에 콘텐츠 플랫폼(150)에 제공한 서드파티 콘텐츠 아이템에 대한 하나 이상의 속성에 대한 데이터를 획득한다. 일부 구현예에서, 콘텐츠 제공자(130)는 (1) 콘텐츠 제공자(130)에 의해 제공된 콘텐츠 아이템, (2) 콘텐츠 아이템이 제공되었던 콘텐츠 플랫폼(140) 및 (3) 콘텐츠 플랫폼에 액세스하는데 사용되는 애플리케이션 내에서 디스플레이를 위해 콘텐츠 아이템이 제공되는 클라이언트 디바이스(102)에 대한 데이터를 저장하는 저장소로부터 이 데이터를 검색할 수 있다. 이러한 구현예에서, 콘텐츠 제공자(130)는 특정한 클라이언트 디바이스(102)에 대한 디바이스 식별자(예: 디바이스 공개 키) 및 엑세스되었던 특정한 콘텐츠 플랫폼(140)(예: 콘텐츠 플랫폼 식별자)를 사용하여, 콘텐츠 아이템의 세트 및 이러한 콘텐츠 아이템에 대한 하나 이상의 속성에 대한 대응하는 데이터를 식별한다. 이 구현예에서, 콘텐츠 제공자(130)는 클라이언트 디바이스(102)에 제공되었을 수 있는 콘텐츠 아이템 세트 및 연관된 속성 데이터를 식별한다. 대안적 또는 추가적 구현예에서, 콘텐츠 제공자(130)는 식별된 데이터 세트를 더욱 좁히기 위해 토큰의 페이로드에 포함된 하나 이상의 속성에 대한 데이터를 사용할 수 있다. 예를 들어, 토큰의 페이로드가 타임스탬프(콘텐츠 제공자(130)에 의해 콘텐츠 아이템이 제공되었던 시간을 표시) 및 콘텐츠 아이템 식별자를 포함한다면, 콘텐츠 제공자(130)는 이 데이터를 사용하여 이전에 제공되었던 단일 콘텐츠 아이템 및 연관된 속성 데이터를 추가로 제한하고 가능하다면 격리시킨다.
콘텐츠 제공자(130)는 디지털 워터마크에 인코딩되었던 (그리고 디지털 서명된 토큰의 페이로드로부터 획득된) 하나 이상의 속성에 대한 데이터를 단일 콘텐츠 아이템 또는 콘텐츠 제공자(130)에 의해 식별된 콘텐츠 아이템 세트에 대한 하나 이상의 속성에 대한 데이터와 비교한다(이전 단락에서 설명된 바와 같이). 콘텐츠 제공자(130)가 디지털 워터마크에 인코딩된 하나 이상의 속성에 대한 데이터가 콘텐츠 제공자(130)가 자신의 저장소로부터 식별한 임의의 콘텐츠 아이템에 대한 대응하는 속성에 대한 데이터와 동일하지 않다고 결정하면, 콘텐츠 제공자(130)는 클라이언트 디바이스(102)에 디스플레이된 특정한 콘텐츠 아이템 CI1(106)은 콘텐츠 제공자(130)에 의해 제공되지 않았다고 결론을 내린다. 그러한 예에서, 콘텐츠 제공자(130)는 콘텐츠 플랫폼(140), 애플리케이션(104) 또는 콘텐츠가 디스플레이되는 특정한 콘텐츠 페이지에 오류가 있을 수 있음을 표시하는 메시지를 애플리케이션(104)에 송신할 수 있다. 한편, 콘텐츠 제공자(130)가 디지털 워터마크에 인코딩된 하나 이상의 속성에 대한 데이터가 콘텐츠 제공자(130)가 자신의 저장소에서 식별한 임의의 콘텐츠 아이템에 대해 획득된 대응하는 속성에 대한 데이터와 동일하다고 결정하는 경우, 콘텐츠 제공자(130)는 특정한 콘텐츠 아이템 CI1(106)이 콘텐츠 제공자(130)에 의해 제공되고 사용자에게 보이는 서드파티 콘텐츠 아이템임을 나타내는 메시지를 생성한다.
전술한 프로세스 흐름 및 시스템 구현예에서, 운영 체제(118)는 콘텐츠 아이템에 포함된 디지털 워터마크를 디코딩하고, 운영 체제에 의해 알려지거나 검증 가능한 정보와 함께 디지털 워터마크를 디코딩할 때 획득된 데이터에 기초하여 디바이스 공개/개인 키 쌍 및 토큰 생성 시간을 포함하는 암호화 토큰을 생성한다. 대안적으로, 애플리케이션(104)이 웹브라우저인 일부 구현예에서, 운영 체제(118) 대신에 브라우저가 디지털 워터마크를 디코딩하고 디지털 서명된 토큰을 생성하는데 사용될 수 있다. 대안적으로, 일부 구현예에서, 운영 체제(118)가 여전히 디지털 워터마크를 디코딩할 수 있지만, 별개의 엔터티(예를 들어, 디지털 서명된 토큰을 요청하는 애플리케이션 이 아닌 애플리케이션)가 디지털 서명된 토큰을 생성할 수 있다. 이 구현예 및 대응하는 프로세스 흐름은 아래 도 3을 참조하여 설명된다.
도 3은 오류를 검출하고 및/또는 콘텐츠 제공자가 콘텐츠 플랫폼에 제공한 서드파티 콘텐츠가 콘텐츠 플랫폼이 클라이언트 디바이스에서 액세스될 때 실제로 디스플레이되는지 그리고 사용자에게 보이는지 검증하기 위한 예시적 프로세스(300)를 도시하는 스윔 레인 다이어그램이다. 프로세스(300)의 동작은 도 1에 기술되고 도시된 시스템의 컴포넌트들에 의해 수행되는 것으로 후술된다. 프로세스(300)의 동작은 단지 예시의 목적으로 설명된다. 프로세스(300)의 동작은 도 4를 참조하여 기술된 바와 같이 임의의 적절한 디바이스 또는 시스템, 예를 들어 임의의 적절한 데이터 프로세싱 장치에 의해 수행될 수 있다. 프로세스(300)의 동작은 또한 비일시적 컴퓨터 판독가능 매체에 저장된 명령어로서 구현될 수 있다.
애플리케이션 A(104)는 애플리케이션(104) 내에서 콘텐츠 아이템 CI1(106) 및 CI2(108)를 제공하는 것을 포함하는 콘텐츠 페이지를 렌더링한다(302에서). 도 1 및 2를 참조하여 설명된 바와 같이, 이러한 콘텐츠 아이템 중 하나 이상은 콘텐츠 제공자(130)로부터 획득된 서드파티 콘텐츠 아이템일 수 있다.
애플리케이션 A(104)는 운영 체제(118)에 요청을 송신하여, 초기 증명 데이터를 생성하며(304에서), 상기 초기 증명 데이터는 애플리케이션(104) 내의 콘텐츠 페이지에서 제공되고, 클라이언트 디바이스(102)의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템 CI1(106)이 콘텐츠 제공자(130)에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 검증하는데 적어도 부분적으로 사용될 것이다. 애플리케이션(104)에 의해 송신되고 운영 체제(118)에 의해 수신되는 요청은 또한 특정한 콘텐츠 아이템 CI1(106)이 디스플레이되는 클라이언트 디바이스의 디스플레이의 특정한 부분을 식별한다. 애플리케이션 A에 의해 요청된 초기 증명 데이터는: (1) 특정한 컨텐츠 아이템으로부터 획득된 하나 이상의 속성에 대한 디코딩된 데이터 (예; 특정한 컨텐츠 아이템에 포함된 디지털 워터마크를 디코딩할 때) 또는 특정한 컨텐츠 아이템의 분석에 기초하여 운영 체제에 의해 식별된 기타 데이터(예: 특정한 콘텐츠 아이템에 워터마크가 포함되지 않았음을 나타내는 데이터); (2) 상기 클라이언트 디바이스의 디스플레이의 특정한 부분을 식별하는 데이터; 및 (3) 예를 들어, 디코딩된 데이터(또는 운영 체제에 의해 식별된 다른 데이터) 및 디스플레이의 특정한 부분을 식별하는 데이터를 사용하여 생성된 메시지 인증 코드일 수 있는 제1 데이터 아이템을 포함한다. 일부 구현예에서, 초기 증명 데이터는 디코딩된 데이터가 획득되는 시기(즉, 워터마크 디코더(112)가 디지털 워터마크를 디코딩하여 하나 이상의 속성에 대한 데이터를 획득하는 시간)를 나타내는 타임스탬프와 같은 메타 데이터를 포함할 수 있다(동작 308에서 더 설명된 바와 같이). 이러한 구현예에서, 제1 데이터 아이템은 디코딩된 데이터(또는 운영 체제에 의해 식별된 다른 데이터), 디스플레이의 특정한 부분을 식별하는 데이터 및 메타데이터의 메시지 인증 코드일 수 있다.
일부 구현예에서, 네이티브 애플리케이션일 수 있는 애플리케이션(104)은 소프트웨어 개발 키트(SDK) 또는 애플리케이션 프로그래밍 인터페이스(API)를 포함할 수 있고, SDK 또는 API는 애플리케이션(104)으로 하여금 요청을 생성하게 하고, 요청과 함께 특정한 콘텐츠 아이템이 디스플레이되는 디스플레이의 특정한 부분을 구분하는 디스플레이의 좌표(또는 디바이스의 디스플레이의 픽셀 범위 특정)를 제공하게 한다. 애플리케이션(104)이 웹브라우저인 구현예에서, 페이지에서 실행되는 스크립트는 요청을 생성하고, 요청과 함께 특정한 콘텐츠 아이템이 디스플레이되는 디스플레이의 특정한 부분을 구분하는 디스플레이의 좌표(또는 디바이스의 디스플레이에서 픽셀 범위를 특정)를 제공할 수 있다.
일부 구현예에서, 초기 증명 데이터에 대한 요청은 클라이언트 디바이스의 디스플레이의 특정한 부분 내에 디스플레이를 위해 제공된 특정한 콘텐츠 아이템의 검증을 위한 애플리케이션에 의한 광범위한 요청의 일부이다.
운영 체제(118)는 디스플레이의 특정한 부분의 스크린샷을 획득한다(306에서). 도 2를 참조하여 기술된 바와 같이, 디바이스 디스플레이 드라이버(110)는 요청에 포함되었던 디스플레이의 특정한 부분의 식별(예: 좌표 또는 픽셀 범위)을 사용하여, 디스플레이의 특정한 부분에 디스플레이하기 위해 제공된 특정한 콘텐츠 아이템 CI1(106)의 스크린샷의 위치를 찾아 생성한다.
디바이스 디스플레이 드라이버(110)로부터 획득된 스크린샷을 사용하여, 워터마크 디코더(112)는 디지털 워터마크가 스크린샷에 존재하는지 여부를 결정하고 그렇다면 디지털 워터마크를 디코딩한다(308에서). 이 동작은 도 2를 참조하여 설명된 유사한 동작(동작 206)과 실질적으로 동일한 방식으로 수행된다. 도 2를 참조하여 설명된 바와 같이, 디스플레이의 특정한 부분의 스크린샷이 디지털 워터마크를 포함하는 경우, 워터마크 디코더(112)는 특정한 콘텐츠 아이템(106)에 대한 하나 이상의 속성에 대한 데이터를 획득하기 위해 디지털 워터마크를 디코딩한다. 한편, 워터마크 디코더(112)가 디스플레이의 특정한 부분의 스크린샷이 디지털 워터마크를 포함하지 않는다고 결정하면, 운영 체제(108)는 콘텐츠 제공자(130)에 의해 제공된 서드파티 콘텐츠 아이템이 애플리케이션(104)에 디스플레이되지 않았거나, 디스플레이된 경우 애플리케이션(104) 내에 디스플레이되는 다른 콘텐츠에 의해 숨겨지거나 가려졌다고 결론내린다. 그러한 경우에, 운영 체제(118)는 콘텐츠 제공자(130)에 의해 제공되었던 서드파티 콘텐츠 아이템이 클라이언트 디바이스의 디스플레이의 특정한 부분에서 보이지 않는다고 표시하는 메시지를 생성한다.
MAC 생성기(116)는 디코딩된 데이터(또는 운영 체제에 의해 식별된 다른 데이터), 디스플레이의 특정한 부분을 식별하는 데이터 및 메타데이터의 메시지 인증 코드(MAC)를 생성한다(310에서). 일부 구현예에서, MAC은 해시 기반 메시지 인증 코드(HMAC)일 수 있고, 이는 키가 있는 해시 메시지 인증 코드라고도 한다. MAC 생성기(116)는 디코딩된 데이터(또는 운영 체제에 의해 식별된 다른 데이터), 디스플레이의 특정한 부분을 식별하는 데이터 및 운영 체제(118)의 비밀 암호화 키를 사용하는 메타데이터(적용 가능한 경우)(클라이언트 디바이스 내의 안전한 위치에 저장됨)의 HMAC를 생성한다. 일부 구현예에서, 운영 체제(118)는 디코딩된 데이터(또는 운영 체제에 의해 식별된 다른 데이터), 디스플레이의 특정한 부분을 식별하는 데이터 및 메타데이터를 가진 HMAC를 데이터 구조에 포함시킨다. 이 데이터 구조에 포함된 데이터를 초기 증명 데이터라고 한다. 일부 구현예에서, 운영 체제(118)는 단일 데이터 구조 내에 이러한 데이터 아이템을 포함하지 않는다; 그러나 이러한 개별 데이터 아이템의 컬렉션을 여전히 초기 증명 데이터라고 한다.
운영 체제(118)는 초기 증명 데이터를 송신하고 애플리케이션(104)은 수신한다(312, 314에서).
초기 증명 데이터를 수신하면, 애플리케이션(104)은 애플리케이션 B(160)로부터 증명 토큰을 요청한다(316에서). 초기 증명 데이터에 대한 요청이 광범위한 콘텐츠 검증 요청의 일부인 구현예에서, 증명 토큰에 대한 요청은 초기 증명 데이터를 수신할 때 애플리케이션에 의해 자동으로 실행될 수 있다. 일부 구현예에서, 초기 증명 데이터가 수신되는 시점과 증명 토큰에 대한 요청이 생성되는 시점 사이에 지연이 있을 수 있다. 이러한 구현예에서, 운영 체제(118)와 협력하여 애플리케이션(104)은 애플리케이션(104) 내에 제시된 다수의 콘텐츠 아이템과 연관된 초기 증명 데이터를 생성할 수 있지만, 콘텐츠 제공자(130)(또는 다른 콘텐츠 검증 시스템)가 특정한 콘텐츠 아이템 CI1(106)의 콘텐츠 검증을 요청할 때까지 증명 토큰을 요청하기를 기다릴 수 있다.
애플리케이션(160)이 디지털 서명된 토큰을 생성하기 전에, 애플리케이션(160)은 초기 증명 데이터에 제공된 데이터의 검증을 요청한다. 이는 실제 증명 데이터를 다른 콘텐츠 아이템과 연관된 초기 증명 데이터에 제공된 가짜 데이터 또는 데이터로 대체하여 콘텐츠 검증 시스템을 속이려는 악의적인 엔터티/애플리케이션의 시도를 막기 위한 노력이다. 따라서, 애플리케이션(160)은 초기 증명 데이터를 확인하기 위해 운영 체제(118)에 요청을 송신한다(318에서). 일부 구현예에서, 이 요청은 운영 체제(118)에 의해 확인될 초기 증명 데이터를 포함한다.
운영 체제(118)는 초기 증명 데이터를 검증한다(320에서). 일부 구현예에서, 운영 체제(118)는 두 단계로 초기 증명 데이터를 검증한다. 먼저, 운영 체제(118)는 모두 초기 증명 데이터에 포함되는 디코딩된 데이터(또는 운영 체제에 의해 식별된 다른 데이터)의 비밀 암호화 키, 디스플레이의 특정한 부분을 식별하는 데이터(적용 가능한 경우) 및 메타데이터를 사용하여 HMAC를 생성한다. 본 명세서에서 결과 값을 제2 데이터 아이템이라고 한다.
운영 체제는 이 제2 데이터 아이템을 제1 데이터 아이템과 비교하는데, 이는 동작 310에서 생성되고 초기 증명 데이터 내에 포함된 HMAC를 참조한다(322에서). 비교에 기초하여, 제1 데이터 아이템이 제2 데이터 아이템과 매칭되면, 운영 체제(118)는 제1 데이터 아이템이 제2 데이터 아이템과 매칭됨을 나타내는 메시지를 생성한다(즉, HMAC가 검증되고/유효했다). 반면에, 제1 데이터 아이템이 제2 데이터 아이템과 매칭되지 않는 경우, 운영 체제(118)는 제1 데이터 아이템이 제2 데이터 아이템과 매칭되지 않음을 나타내는 메시지를 생성한다(즉, HMAC가 검증되고 유효하지 않음). 운영 체제(118)는 생성된 메시지를 애플리케이션(160)(즉, 도 3의 앱 B)에 송신한다.
이 메시지를 수신하면, 애플리케이션(160)(즉, 도 3의 앱 B)은 암호화 토큰을 생성한다(324에서). 일부 구현예에서, 애플리케이션(160)(즉, 도 3의 앱 B)은 HMAC의 결과에 관계없이 암호화 토큰을 생성하며; 다른 구현예에서, 애플리케이션(160)은 HMAC가 동작(322)에서 유효하다고 결정될 때만 암호화 토큰을 생성한다.
애플리케이션(160)(즉, 도 3에서 앱 B)은 초기 증명 데이터에 포함된 데이터 즉, 특정한 컨텐츠 아이템으로부터 획득된 하나 이상의 속성에 대한 디코딩된 데이터 (예; 특정한 컨텐츠 아이템에 포함된 디지털 워터마크를 디코딩할 때) 또는 특정한 컨텐츠 아이템의 분석에 기초하여 운영 체제에 의해 식별된 기타 데이터(예: 특정한 콘텐츠 아이템에 워터마크가 포함되지 않았음을 나타내는 데이터)를 사용하여 디지털 서명된 토큰을 생성한다. 애플리케이션(160)은 도 2의 동작 210을 참조하여 설명된 것과 실질적으로 동일한 방식으로 디지털 서명된 토큰을 생성한다.
애플리케이션(160)은 생성된 디지털 서명된 토큰을 애플리케이션(104)에 송신하고, 이는 차례로 디지털 서명된 토큰을 콘텐츠 제공자(130)(또는 다른 적절한 콘텐츠 검증 시스템)에 송신한다.
콘텐츠 제공자(130)는 도 2의 동작(216)을 참조하여 설명된 것과 실질적으로 동일한 방식으로(326에서) 디지털 서명된 토큰을 확인한다.
도 3의 전술한 프로세스 흐름에서, 애플리케이션(160)(즉, 도 1에 도시된 애플리케이션 B)은 운영 체제와 별개이다. 그러나, 다른 대안적 구현예에서, 애플리케이션(160)은 운영 체제(118)의 일부일 수 있다. 이러한 구현예에서, HMAC(동작 310 내지 314 및 318 내지 322에서 설명된 바와 같이)를 생성하고 검증하는 것은 필요하지 않다. 이는 위의 도 3의 설명과 달리, 초기 증명 데이터를 생성하는 엔터티(즉, 운영 체제(118))가 증명 토큰을 생성하는 엔터티(즉, 이 대안적 구현에서 운영 체제(118)의 일부인 애플리케이션 B(160))와 동일하기 때문이다. 이 대안적 구현예는 아래에 설명되어 있다.
이러한 대안적 구현에서, 요청(304)은 초기 증명 데이터에 대한 요청(위에 설명된 동작 304와 동일함)이거나 디지털 서명된 토큰에 대한 요청일 수 있다(도 2를 참조하여 설명된 동작 204와 유사함). 운영 체제(118)는 여전히 스크린샷을 찍고 디지털 워터마크를 디코딩하는 동작(즉, 동작 306 및 308)을 수행한다. 운영 체제(118)는 동작(310)에서 설명된 바와 같이 HMAC를 생성하지 않는다. 대신, 운영 체제(118)의 관련 컴포넌트(즉, 컴포넌트 110-112)는 동작 306 및 308에서 획득/생성된 데이터와 함께 요청(304)에 포함된 데이터를 운영 체제(118)의 일부인 애플리케이션 B(160)에 제공한다.
애플리케이션(104)으로부터의 초기 요청이 초기 증명 데이터에 대한 요청이었다면, 운영 체제(118)는 초기 증명 데이터가 수집되었음을 애플리케이션(104)에 알린다. 그러나, 운영 체제(118)는 이 구현예에서 애플리케이션(104)에 데이터를 제공할 필요가 없다. 일부 구현예에서, 운영 체제는 이 데이터를 애플리케이션(104)에 송신할 수 있다. 애플리케이션(104)은 디지털 서명된 토큰에 대한 별도의 제2 요청을 이제 운영 체제(118)의 일부인 애플리케이션 B에 송신한다. 이 요청은 운영 체제(118)에 의해 애플리케이션(104)에 제공된 데이터를 포함한다. 운영 체제는 먼저 이전에 애플리케이션 B(160)에 제공한 데이터가 제2 요청에서 애플리케이션(104)으로부터 수신된 데이터와 동일한지 여부를 확인한다. 데이터가 매칭되면 애플리케이션 B는 디지털 서명된 토큰을 생성하고, 그렇지 않으면 애플리케이션 B는 오류가 있다고 결론을 내린다. 이 프로세싱은 도 3을 참조하여 위에서 설명한 동작 318-322를 대체한다.
대안적으로, 애플리케이션(104)으로부터의 초기 요청이 디지털 서명된 토큰에 대한 요청인 경우, 운영 체제(118)는 애플리케이션(104)에 어떠한 응답도 송신하지 않으며 애플리케이션(104)은 또한 운영 체제(118)에 어떠한 추가 요청도 송신하지 않는다.
애플리케이션 B는 요청(304)에 포함된 데이터 및/또는 상기 동작(324)을 참조하여 설명된 것과 실질적으로 동일한 방식으로 동작(306 및 308)에서 생성된 획득된 데이터를 사용하여 디지털 서명된 토큰을 생성한다.
콘텐츠 제공자(130)는 동작 326을 참조하여 전술한 것과 실질적으로 동일한 방식으로 디지털 서명된 토큰을 확인한다.
도 4는 상기 기술된 동작들을 수행하는데 사용될 수 있는 예시적 컴퓨터 시스템(400)의 블록도이다. 시스템(400)은 프로세서(410), 메모리(420), 저장 디바이스(430) 및 입력/출력 디바이스(440)를 포함한다. 컴포넌트들(410, 420, 430 및 440) 각각은 예를 들면, 시스템 버스(450)를 사용하여 상호 연결될 수 있다. 프로세서(410)는 시스템(400) 내에서 실행하기 위한 명령어들을 프로세싱할 수 있다. 일 구현예에서, 프로세서(410)는 단일-스레드 프로세서이다. 다른 구현예에서, 프로세서(410)는 멀티-스레드 프로세서이다. 프로세서(410)는 메모리(420) 또는 저장 디바이스(430)에 저장된 명령어들을 프로세싱할 수 있다.
메모리(420)는 시스템(400) 내에 정보를 저장한다. 일 구현예에서, 메모리(420)는 컴퓨터 판독가능 매체이다. 일 구현예에서, 메모리(420)는 휘발성 메모리 유닛이다. 다른 구현예에서, 메모리(420)는 비휘발성 메모리 유닛이다.
저장 디바이스(430)는 시스템(400)에 대한 대형 저장소를 제공할 수 있다. 일 구현예에서, 저장 디바이스(430)는 컴퓨터 판독가능 매체이다. 다양한 상이한 구현예에서, 저장 디바이스(430)는 예를 들면, 하드 디스크 디바이스, 광학 디스크 디바이스, 다수의 컴퓨팅 디바이스들(예를 들면, 클라우드 저장 디바이스)에 의해 네트워크를 통해 공유되는 저장 디바이스 또는 일부 기타 대용량 저장 디바이스를 포함할 수 있다.
입력/출력 디바이스(440)는 시스템(400)에 대한 입력/출력 동작들을 제공한다. 일 구현예에서, 입력/출력 디바이스(440)는 네트워크 인터페이스 디바이스 예를 들어, 이더넷 카드, 직렬 통신 디바이스(예를 들어, RS-232 포트) 및/또는 무선 인터페이스 디바이스(예를 들어, 802.11 카드) 중 하나 이상을 포함할 수 있다. 다른 구현예에서, 입력/출력 디바이스는 입력 데이터를 수신하고 출력 데이터를 다른 입력/출력 디바이스들 예를 들어, 키보드, 프린터 및 디스플레이 디바이스들(460)에 송신하도록 구성된 드라이버 디바이스들을 포함할 수 있다. 그러나, 모바일 컴퓨팅 디바이스들, 모바일 통신 디바이스들, 셋톱 박스 텔레비전 클라이언트 디바이스들 등과 같은 다른 구현예들도 사용될 수 있다.
예시적 프로세싱 시스템이 도 4에서 기술되었지만, 본 발명의 구현예들 및 본 명세서에 기술된 기능적 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 다른 유형의 디지털 전자 회로에서, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다.
미디어가 반드시 파일에 대응하는 것은 아니다. 미디어는 다른 문서를 보관하는 파일의 일부, 문제의 문서 전용 단일 파일 또는 다수의 조정된 파일에 저장될 수 있다.
본 발명의 실시예들과 본 명세서에 기술된 동작들은 본 발명에 개시된 구조들 및 그들의 구조적 균등물들 또는 그들 중 하나 이상의 조합들을 포함하는 디지털 전자회로 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 본 발명의 실시예들은 하나 이상의 컴퓨터 프로그램들로서 구현될 수 있다. 즉, 데이터 프로세싱 장치에 의해 실행 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 컴퓨터 저장 매체(또는 매체들)에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈들. 대안적으로 또는 추가로, 프로그램 명령어들은 데이터 프로세싱 장치에 의해 실행하기 위한 적절한 수신기 장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 인공적으로 생성된 전파된 신호 즉, 기계-생성 전기, 광학 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 어레이 또는 디바이스 또는 그들 중 하나 이상의 조합이거나 그에 포함될 수 있다. 또한, 컴퓨터 저장 매체는 전파된 신호가 아니지만, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령어들의 소스 또는 목적지일 수 있다. 또한, 컴퓨터 저장 매체는 하나 이상의 별개의 물리적 컴포넌트들 또는 매체(예를 들면, 다수의 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 (20)

  1. 컴퓨터로 구현되는 방법으로서,
    클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 단계, 상기 요청은 상기 디스플레이의 특정한 부분을 식별하며;
    상기 디스플레이의 특정한 부분에 디스플레이된 상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되었는지 여부를 결정하는 단계;
    상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되어 있다고 결정함에 응답하여:
    상기 디지털 워터마크 내에서 인코딩된 복수의 속성에 대한 데이터를 획득하기 위해 상기 디지털 워터마크를 디코딩하는 단계, 상기 복수의 속성은 상기 특정한 콘텐츠 아이템을 설명하며;
    상기 디지털 서명된 토큰의 페이로드에서 상기 복수의 속성에 대한 데이터를 포함하는 상기 디지털 서명된 토큰을 생성하는 단계; 및
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  2. 청구항 1에 있어서,
    상기 디지털 서명된 토큰을 사용하여, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 상기 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는 단계를 더 포함하며, 상기 확인하는 단계는:
    상기 디지털 서명된 토큰에 포함된 디지털 서명이 유효한지 검증하는 단계, 상기 검증하는 단계는 상기 디지털 서명된 토큰에 포함된 상기 디지털 서명이 아닌 데이터를 사용하여 디지털 서명을 생성하는 단계를 포함하며;
    상기 콘텐츠 제공자로부터, 상기 서드파티 콘텐츠 아이템에 대한 상기 복수의 속성에 대한 데이터를 획득하는 단계; 및
    상기 디지털 워터마크에 인코딩된 상기 복수의 속성에 대한 데이터가 상기 서드파티 콘텐츠 아이템에 대해 획득된 대응하는 복수의 속성에 대한 데이터와 동일하다고 결정하고 이에 응답하여 상기 특정한 콘텐츠 아이템이 상기 서드파티 콘텐츠임을 표시하는 메시지를 생성하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  3. 청구항 1에 있어서,
    디지털 워터마크가 상기 특정한 콘텐츠 아이템에 내장되어 있지 않다는 결정에 응답하여, 상기 서드파티 콘텐츠 아이템이 상기 클라이언트 디바이스의 디스플레이의 상기 특정한 부분에서 보이지 않음을 표시하는 메시지를 상기 디지털 서명된 토큰의 페이로드에 포함하는 디지털 서명된 토큰을 생성하는 단계; 및
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  4. 청구항 1에 있어서,
    상기 디스플레이의 특정한 부분을 사용하여, 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 스크린샷을 획득하는 단계를 더 포함하고;
    상기 특정한 콘텐츠 아이템에 내장된 디지털 워터마크를 획득하는 단계는 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 획득된 스크린샷으로부터 디지털 워터마크를 획득하는 것을 포함하는, 컴퓨터로 구현되는 방법.
  5. 청구항 1에 있어서, 상기 획득된 디지털 워터마크는 다음의 속성들 중 둘 이상에 대한 데이터를 인코딩하며, 상기 속성들은:
    서드파티 콘텐츠 아이템의 콘텐츠 유형;
    상기 서드파티 콘텐츠 아이템에 제공된 콘텐츠에 대한 설명;
    서드파티 콘텐츠 제공자의 식별;
    서드파티 콘텐츠 아이템에 대한 고유 식별자;
    서드파티 콘텐츠 아이템의 크기 파라미터;
    상기 디지털 워터마크가 생성되었던 시간을 표시하는 타임스탬프;
    상기 서드파티 콘텐츠 제공자의 디지털 서명을 포함하는, 컴퓨터로 구현되는 방법.
  6. 청구항 1에 있어서,
    상기 디지털 서명된 토큰은: (1) 상기 클라이언트 디바이스의 디바이스 공개 키; (2) 상기 복수의 속성에 대한 데이터를 포함하는 페이로드; (3) 상기 클라이언트 디바이스의 신뢰성을 식별하는 디바이스 무결성 토큰, 상기 디바이스 무결성 토큰은 신뢰 디바이스 무결성 시스템에 의해 서명되며; 및 (4) 상기 디바이스 공개 키, 상기 페이로드 및 상기 디바이스 무결성 토큰의 디지털 서명을 포함하는 증명 토큰이며, 상기 디지털 서명은 상기 디바이스 공개 키에 대응하고 수학적으로 링크된 상기 클라이언트 디바이스에 대한 디바이스 개인 키를 사용하여 생성되는, 컴퓨터로 구현되는 방법.
  7. 컴퓨터로 구현되는 방법으로서,
    클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 단계;
    상기 요청은 상기 클라이언트 디바이스의 운영 체제에서 획득된 초기 증명 데이터를 포함하며, 상기 초기 증명 데이터는 (1) 상기 디스플레이의 특정한 부분에 디스플레이된 상기 특정한 콘텐츠 아이템에 내장된 디지털 워터마크 내에 인코딩되었던 복수의 속성에 대한 디코딩된 데이터, 상기 복수의 속성은 상기 특정한 콘텐츠 아이템을 설명하며, (2) 상기 디스플레이의 특정한 부분을 식별하는 데이터, 및 (3) 상기 디코딩된 데이터 및 상기 디스플레이의 특정한 부분을 식별하는 데이터를 사용하여 생성된 제1 데이터 아이템을 포함하며;
    상기 운영 체제로부터, 상기 제1 데이터 아이템이 제2 데이터 아이템과 매칭되는지 여부를 특정하는 표시를 획득하는 단계, 상기 제2 데이터 아이템은 상기 디코딩된 데이터 및 상기 요청에 포함된 상기 디스플레이의 특정한 부분을 식별하는 데이터를 사용하여 상기 운영 체제에 의해 생성되며;
    상기 제1 데이터 아이템이 상기 제2 데이터 아이템과 매칭됨을 특정하는 표시를 획득함에 응답하여:
    디지털 서명된 토큰의 페이로드에서 상기 복수의 속성에 대한 데이터를 포함하는 디지털 서명된 토큰을 생성하는 단계;
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
  8. 청구항 7에 있어서,
    상기 제1 데이터 아이템 및 상기 제2 데이터 아이템 각각은 해시된 메시지 인증 코드인, 컴퓨터로 구현되는 방법.
  9. 시스템으로서,
    명령어들을 저장하는 하나 이상의 메모리 디바이스들; 및
    상기 하나 이상의 메모리 디바이스들과 인터렉션하도록 구성되는 하나 이상의 데이터 프로세싱 장치를 포함하며, 상기 명령어들의 실행시 하나 이상의 데이터 프로세싱 장치로 하여금 동작들을 수행하게 하며, 동작들은:
    클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 동작, 상기 요청은 상기 디스플레이의 특정한 부분을 식별하며;
    상기 디스플레이의 특정한 부분에 디스플레이된 상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되었는지 여부를 결정하는 동작;
    상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되어 있다고 결정함에 응답하여:
    상기 디지털 워터마크 내에서 인코딩된 복수의 속성에 대한 데이터를 획득하기 위해 상기 디지털 워터마크를 디코딩하는 동작, 상기 복수의 속성은 상기 특정한 콘텐츠 아이템을 설명하며;
    상기 디지털 서명된 토큰의 페이로드에서 상기 복수의 속성에 대한 데이터를 포함하는 상기 디지털 서명된 토큰을 생성하는 동작; 및
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 동작을 포함하는, 시스템.
  10. 청구항 9에 있어서,
    상기 디지털 서명된 토큰을 사용하여, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 상기 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는 동작을 더 포함하며, 상기 확인하는 동작은:
    상기 디지털 서명된 토큰에 포함된 디지털 서명이 유효한지 검증하는 동작, 상기 검증하는 동작은 상기 디지털 서명된 토큰에 포함된 상기 디지털 서명이 아닌 데이터를 사용하여 디지털 서명을 생성하는 동작을 포함하며;
    상기 콘텐츠 제공자로부터, 상기 서드파티 콘텐츠 아이템에 대한 상기 복수의 속성에 대한 데이터를 획득하는 동작; 및
    상기 디지털 워터마크에 인코딩된 상기 복수의 속성에 대한 데이터가 상기 서드파티 콘텐츠 아이템에 대해 획득된 대응하는 복수의 속성에 대한 데이터와 동일하다고 결정하고 이에 응답하여 상기 특정한 콘텐츠 아이템이 상기 서드파티 콘텐츠임을 표시하는 메시지를 생성하는 동작을 포함하는, 시스템.
  11. 청구항 9에 있어서,
    디지털 워터마크가 상기 특정한 콘텐츠 아이템에 내장되어 있지 않다는 결정에 응답하여, 상기 서드파티 콘텐츠 아이템이 상기 클라이언트 디바이스의 디스플레이의 상기 특정한 부분에서 보이지 않음을 표시하는 메시지를 상기 디지털 서명된 토큰의 페이로드에 포함하는 디지털 서명된 토큰을 생성하는 동작; 및
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 동작을 포함하는, 시스템.
  12. 청구항 9에 있어서,
    상기 디스플레이의 특정한 부분을 사용하여, 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 스크린샷을 획득하는 동작을 더 포함하며;
    상기 특정한 콘텐츠 아이템에 내장된 디지털 워터마크를 획득하는 동작은 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 획득된 스크린샷으로부터 디지털 워터마크를 획득하는 것을 포함하는, 시스템.
  13. 청구항 9에 있어서, 상기 획득된 디지털 워터마크는 다음의 속성들 중 둘 이상에 대한 데이터를 인코딩하며, 상기 속성들은:
    서드파티 콘텐츠 아이템의 콘텐츠 유형;
    상기 서드파티 콘텐츠 아이템에 제공된 콘텐츠에 대한 설명;
    서드파티 콘텐츠 제공자의 식별;
    서드파티 콘텐츠 아이템에 대한 고유 식별자;
    서드파티 콘텐츠 아이템의 크기 파라미터;
    상기 디지털 워터마크가 생성되었던 시간을 표시하는 타임스탬프;
    상기 서드파티 콘텐츠 제공자의 디지털 서명을 포함하는, 시스템.
  14. 청구항 9에 있어서,
    상기 디지털 서명된 토큰은: (1) 상기 클라이언트 디바이스의 디바이스 공개 키; (2) 상기 복수의 속성에 대한 데이터를 포함하는 페이로드; (3) 상기 클라이언트 디바이스의 신뢰성을 식별하는 디바이스 무결성 토큰, 상기 디바이스 무결성 토큰은 신뢰 디바이스 무결성 시스템에 의해 서명되며; 및 (4) 상기 디바이스 공개 키, 상기 페이로드 및 상기 디바이스 무결성 토큰의 디지털 서명을 포함하는 증명 토큰이며, 상기 디지털 서명은 상기 디바이스 공개 키에 대응하고 수학적으로 링크된 상기 클라이언트 디바이스에 대한 디바이스 개인 키를 사용하여 생성되는, 시스템.
  15. 비일시적 컴퓨터 판독가능 매체로서,
    명령어들을 저장하는 하나 이상의 메모리 디바이스들; 및
    상기 하나 이상의 메모리 디바이스들과 인터렉션하도록 구성되는 하나 이상의 데이터 프로세싱 장치를 포함하며, 상기 명령어들의 실행시 하나 이상의 데이터 프로세싱 장치로 하여금 동작들을 수행하게 하며, 동작들은:
    클라이언트 디바이스에서 실행되는 애플리케이션으로부터, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는데 사용되는 디지털 서명된 토큰을 생성하기 위한 요청을 수신하는 동작, 상기 요청은 상기 디스플레이의 특정한 부분을 식별하며;
    상기 디스플레이의 특정한 부분에 디스플레이된 상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되었는지 여부를 결정하는 동작;
    상기 특정한 콘텐츠 아이템에 디지털 워터마크가 내장되어 있다고 결정함에 응답하여:
    상기 디지털 워터마크 내에서 인코딩된 복수의 속성에 대한 데이터를 획득하기 위해 상기 디지털 워터마크를 디코딩하는 동작, 상기 복수의 속성은 상기 특정한 콘텐츠 아이템을 설명하며;
    상기 디지털 서명된 토큰의 페이로드에서 상기 복수의 속성에 대한 데이터를 포함하는 상기 디지털 서명된 토큰을 생성하는 동작; 및
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  16. 청구항 15에 있어서,
    상기 디지털 서명된 토큰을 사용하여, 상기 애플리케이션 내의 콘텐츠 페이지에 제공되고 상기 클라이언트 디바이스의 디스플레이의 특정한 부분에 디스플레이되는 상기 특정한 콘텐츠 아이템이 콘텐츠 제공자에 의해 제공된 서드파티 콘텐츠 아이템인지 여부를 확인하는 동작을 더 포함하며, 상기 확인하는 동작은:
    상기 디지털 서명된 토큰에 포함된 디지털 서명이 유효한지 검증하는 동작, 상기 검증하는 동작은 상기 디지털 서명된 토큰에 포함된 상기 디지털 서명이 아닌 데이터를 사용하여 디지털 서명을 생성하는 동작을 포함하며;
    상기 콘텐츠 제공자로부터, 상기 서드파티 콘텐츠 아이템에 대한 상기 복수의 속성에 대한 데이터를 획득하는 동작; 및
    상기 디지털 워터마크에 인코딩된 상기 복수의 속성에 대한 데이터가 상기 서드파티 콘텐츠 아이템에 대해 획득된 대응하는 복수의 속성에 대한 데이터와 동일하다고 결정하고 이에 응답하여 상기 특정한 콘텐츠 아이템이 상기 서드파티 콘텐츠임을 표시하는 메시지를 생성하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  17. 청구항 15에 있어서,
    디지털 워터마크가 상기 특정한 콘텐츠 아이템에 내장되어 있지 않다는 결정에 응답하여, 상기 서드파티 콘텐츠 아이템이 상기 클라이언트 디바이스의 디스플레이의 상기 특정한 부분에서 보이지 않음을 표시하는 메시지를 상기 디지털 서명된 토큰의 페이로드에 포함하는 디지털 서명된 토큰을 생성하는 동작; 및
    상기 생성된 디지털 서명된 토큰을 상기 애플리케이션에 제공하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  18. 청구항 15에 있어서,
    상기 디스플레이의 특정한 부분을 사용하여, 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 스크린샷을 획득하는 동작을 더 포함하며;
    상기 특정한 콘텐츠 아이템에 내장된 디지털 워터마크를 획득하는 동작은 상기 디스플레이의 특정한 부분에 디스플레이된 특정한 콘텐츠 아이템의 획득된 스크린샷으로부터 디지털 워터마크를 획득하는 것을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  19. 청구항 15에 있어서, 상기 획득된 디지털 워터마크는 다음의 속성들 중 둘 이상에 대한 데이터를 인코딩하며, 상기 속성들은:
    서드파티 콘텐츠 아이템의 콘텐츠 유형;
    상기 서드파티 콘텐츠 아이템에 제공된 콘텐츠에 대한 설명;
    서드파티 콘텐츠 제공자의 식별;
    서드파티 콘텐츠 아이템에 대한 고유 식별자;
    서드파티 콘텐츠 아이템의 크기 파라미터;
    상기 디지털 워터마크가 생성되었던 시간을 표시하는 타임스탬프;
    상기 서드파티 콘텐츠 제공자의 디지털 서명을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  20. 청구항 15에 있어서,
    상기 디지털 서명된 토큰은: (1) 상기 클라이언트 디바이스의 디바이스 공개 키; (2) 상기 복수의 속성에 대한 데이터를 포함하는 페이로드; (3) 상기 클라이언트 디바이스의 신뢰성을 식별하는 디바이스 무결성 토큰, 상기 디바이스 무결성 토큰은 신뢰 디바이스 무결성 시스템에 의해 서명되며; 및 (4) 상기 디바이스 공개 키, 상기 페이로드 및 상기 디바이스 무결성 토큰의 디지털 서명을 포함하는 증명 토큰이며, 상기 디지털 서명은 상기 디바이스 공개 키에 대응하고 수학적으로 링크된 상기 클라이언트 디바이스에 대한 디바이스 개인 키를 사용하여 생성되는, 비일시적 컴퓨터 판독가능 매체.
KR1020207034019A 2020-02-06 2020-02-06 클라이언트 디바이스에서 서드 파티 콘텐츠 디스플레이 검증 KR102445873B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2020/017027 WO2021158229A1 (en) 2020-02-06 2020-02-06 Verifying display of third party content at a client device

Publications (2)

Publication Number Publication Date
KR20210102058A KR20210102058A (ko) 2021-08-19
KR102445873B1 true KR102445873B1 (ko) 2022-09-21

Family

ID=69771153

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207034019A KR102445873B1 (ko) 2020-02-06 2020-02-06 클라이언트 디바이스에서 서드 파티 콘텐츠 디스플레이 검증

Country Status (9)

Country Link
US (1) US11882327B2 (ko)
EP (1) EP3881202B1 (ko)
JP (1) JP7077425B2 (ko)
KR (1) KR102445873B1 (ko)
CN (1) CN113498514A (ko)
AU (1) AU2020260456B2 (ko)
BR (1) BR112020022501A2 (ko)
CA (1) CA3100347C (ko)
WO (1) WO2021158229A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11809531B2 (en) * 2020-02-03 2023-11-07 Nxp B.V. Method for watermarking a machine learning model
US11809532B2 (en) * 2020-10-14 2023-11-07 Irdeto B.V. Detection of modification of an item of content
US11699208B2 (en) 2021-03-12 2023-07-11 Nxp B.V. Method for watermarking a machine learning model
IL285887B1 (en) * 2021-08-26 2024-03-01 Google Llc Secure attribution using anonymous signals

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110123062A1 (en) * 2009-11-24 2011-05-26 Mordehay Hilu Device, software application, system and method for proof of display

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6611607B1 (en) * 1993-11-18 2003-08-26 Digimarc Corporation Integrating digital watermarks in multimedia content
JP3103061B2 (ja) 1997-09-12 2000-10-23 インターナショナル・ビジネス・マシーンズ・コーポレ−ション トークン作成装置および該トークンを用いたデータ制御システム
JP4185363B2 (ja) 2001-02-22 2008-11-26 ビーイーエイ システムズ, インコーポレイテッド トランザクション処理システムにおけるメッセージ暗号化及び署名のためのシステム及び方法
JP3935879B2 (ja) 2001-11-06 2007-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データ供給のためのシステム
US20050278235A1 (en) 2004-06-10 2005-12-15 International Business Machines Corporation Method and system for a contract option
US20050278253A1 (en) 2004-06-15 2005-12-15 Microsoft Corporation Verifying human interaction to a computer entity by way of a trusted component on a computing device or the like
CN101106455B (zh) 2007-08-20 2010-10-13 北京飞天诚信科技有限公司 身份认证的方法和智能密钥装置
US20090292924A1 (en) 2008-05-23 2009-11-26 Johnson Erik J Mechanism for detecting human presence using authenticated input activity
US20100312653A1 (en) 2009-06-05 2010-12-09 Microsoft Corporation Verifiable advertisement presentation
JP5432999B2 (ja) 2009-06-23 2014-03-05 パナソニック株式会社 暗号鍵配布システム
US20110161145A1 (en) * 2009-12-26 2011-06-30 Mahajan Ayeshwarya B Method and device for securely displaying digital content on a computing device
WO2014138430A2 (en) 2013-03-06 2014-09-12 Marvell World Trade Ltd. Secure simple enrollment
US20140282696A1 (en) * 2013-03-15 2014-09-18 Qualcomm Incorporated Advertising download verification
US20150150109A1 (en) 2013-11-27 2015-05-28 Adobe Systems Incorporated Authenticated access to a protected resource using an encoded and signed token
US9860241B2 (en) 2014-04-15 2018-01-02 Level 3 Communications, Llc Device registration, authentication, and authorization system and method
US10362007B2 (en) * 2015-11-12 2019-07-23 Facebook, Inc. Systems and methods for user account recovery
WO2017117551A1 (en) * 2015-12-30 2017-07-06 Verimatrix, Inc. Systems and method for retroactive assignment of personally identifiable information in distribution of digital content
JP6861292B2 (ja) 2017-03-01 2021-04-21 アップル インコーポレイテッドApple Inc. モバイルデバイスを使用したシステムアクセス
US11611808B2 (en) * 2017-05-09 2023-03-21 Verimatrix, Inc. Systems and methods of preparing multiple video streams for assembly with digital watermarking
CN107342998A (zh) 2017-07-04 2017-11-10 四川云物益邦科技有限公司 通过移动存储设备实现的个人信息提取方法
US10932129B2 (en) 2017-07-24 2021-02-23 Cisco Technology, Inc. Network access control

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110123062A1 (en) * 2009-11-24 2011-05-26 Mordehay Hilu Device, software application, system and method for proof of display

Also Published As

Publication number Publication date
CN113498514A (zh) 2021-10-12
AU2020260456A1 (en) 2021-08-26
CA3100347A1 (en) 2021-08-06
EP3881202A1 (en) 2021-09-22
KR20210102058A (ko) 2021-08-19
CA3100347C (en) 2023-02-14
US11882327B2 (en) 2024-01-23
BR112020022501A2 (pt) 2022-09-06
WO2021158229A1 (en) 2021-08-12
JP2022522315A (ja) 2022-04-18
EP3881202B1 (en) 2022-01-26
US20220124393A1 (en) 2022-04-21
AU2020260456B2 (en) 2021-12-23
JP7077425B2 (ja) 2022-05-30

Similar Documents

Publication Publication Date Title
KR102445873B1 (ko) 클라이언트 디바이스에서 서드 파티 콘텐츠 디스플레이 검증
KR102429406B1 (ko) 콘텐츠 플랫폼에서 사용자 상호작용 확인
US11258611B2 (en) Trusted data verification
KR102470639B1 (ko) 신뢰되는 코드 증명 토큰으로 데이터 무결성 향상
CN115550060B (zh) 基于区块链的可信证书验证方法、装置、设备和介质
KR102672181B1 (ko) 프라이버시 보호 애플리케이션 및 장치 오류 검출
KR102498265B1 (ko) 프라이버시 보호 애플리케이션 및 장치 오류 검출
US20230385811A1 (en) Secure and decentralized payment for digital media content via certificates with wallet information
CN115151907A (zh) 验证网络应用的可信度
KR20220000899A (ko) 웹뷰 내에서 콘텐츠 및 상호작용들을 확인

Legal Events

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