광고 ID 복호화

이제 Authorized Buyers에서 모바일 애플리케이션 인벤토리 입찰 요청에서 Android 광고 ID를 전달할 수 있습니다.

광고 ID 정보

Google Play 서비스 v4.0에서 Android에서는 사용자가 재설정할 수 있는 새로운 광고 식별자인 광고 ID를 출시했습니다.

광고 ID는 광고주가 리마케팅 캠페인을 운영하고 '전환' (구매 또는 다운로드)을 기록하는 데 사용할 수 있습니다. 광고 ID에는 두 가지 주요 기능이 있습니다.

  • 사용자는 언제든지 광고 ID를 재설정할 수 있습니다.
  • 사용자는 언제든지 Google 설정 앱에서 바로 관심 기반 광고를 선택 해제할 수 있습니다. 이 설정은 광고 ID를 사용하는 모든 광고 회사에 적용됩니다.

기술적 정의

광고 ID는 실시간 입찰 프로토콜에서 BidRequest.Mobile.encrypted_advertising_id를 통해 전달됩니다.

optional bytes encrypted_advertising_id = 20;

필드는 36바이트이며 3개의 섹션으로 구성됩니다.

  • initialization_vector: 16바이트
  • ciphertext: 16바이트, 광고 ID의 암호화된 16바이트 UUID
  • integrity_signature: 4바이트
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}

정의

변수 세부정보
initialization_vector 16바이트 - 노출에 고유함
ciphertext 16바이트 - 다음으로 생성됨: <advertising_id <xor> hmac(encryption_key, initialization_vector)>
integrity_signature 4바이트 - hmac(integrity_key, advertising_id || initialization_vector)의 처음 4바이트로 생성됨
encryption_key 32바이트 - 계정 설정 시 제공
integrity_key 32바이트 - 계정 설정 시 제공
advertising_id 16바이트 - 암호화되지 않은 원래의 광고 ID(UUID)
final_message 36바이트 - encrypted_advertising_id 필드를 통해 전송된 바이트 배열
연산자 세부정보
hmac(key, data) SHA-1 HMAC: key를 사용하여 data를 암호화합니다.
a || b a 문자열은 b 문자열로 연결됩니다.

암호화 스키마

광고 ID의 암호화 체계는 가격 확인 복호화에 사용된 것과 동일한 체계를 기반으로 합니다.

  1. 광고 ID는 바이트 배열에 저장되며, 크기 오버헤드를 최소화하면서 적절한 보안을 보장하도록 설계된 맞춤 암호화 체계로 암호화됩니다.
  2. 암호화 체계는 키 HMAC 알고리즘을 사용하여 노출 이벤트에 고유한 initialization_vector를 기반으로 비밀 패드를 생성합니다.

암호화 의사 코드

advertising_id = advertising ID from mobile device
pad = hmac(encryption_key, initialization_vector) // first 16 bytes
ciphertext = pad <xor> advertising_id
integrity_signature = hmac(integrity_key, advertising_id || initialization_vector)  // first 4 bytes
final_message = initialization_vector || ciphertext || integrity_signature

복호화 스키마

복호화 코드는 1) 암호화 키를 사용하여 encrypted_advertising_id 필드를 복호화하고 필요한 경우 2) 무결성 키로 무결성 비트를 확인해야 합니다. 키는 계정 설정 중에 제공됩니다. 구현 구성 방식에는 제한이 없습니다.

  1. 패드를 생성합니다. hmac(encryption_key, initialization_vector)
  2. XOR: 이 결과를 가져와 암호문과 함께 <xor>를 가져와 암호화를 취소합니다.
  3. 확인: 무결성 서명이 HMAC(integrity_key, advertising_id || initialization_vector)의 4바이트를 전달합니다.

복호화 의사 코드

(initialization_vector, ciphertext, integrity_signature) = final_message // split up according to length
pad = hmac(encryption_key, initialization_vector) // first 16 bytes
advertising_id = ciphertext <xor> pad
confirmation_signature = hmac(integrity_key, advertising_id || initialization_vector) // first 4 bytes
success = (confirmation_signature == integrity_signature)

자바 라이브러리

암호화 알고리즘을 구현하여 광고 ID를 인코딩 및 디코딩하는 대신 DoubleClickCrypto.java를 사용할 수 있습니다. 자세한 내용은 암호화를 참고하세요.