Authorized Buyers hiện hỗ trợ chuyển mã nhận dạng cho quảng cáo Android trong các yêu cầu giá thầu khoảng không quảng cáo trên ứng dụng dành cho thiết bị di động.
Giới thiệu về mã nhận dạng cho quảng cáo
Với Dịch vụ Google Play phiên bản 4.0, Android đã ra mắt một giá trị nhận dạng mới mà người dùng có thể đặt lại đối với quảng cáo được gọi là mã nhận dạng cho quảng cáo.
Nhà quảng cáo có thể sử dụng mã nhận dạng cho quảng cáo để chạy chiến dịch tái tiếp thị và ghi lại "lượt chuyển đổi" (mua hoặc tải xuống). Mã nhận dạng cho quảng cáo có hai tính năng chính:
- Người dùng có thể đặt lại mã nhận dạng cho quảng cáo bất cứ lúc nào.
- Người dùng có thể chọn không nhận quảng cáo dựa trên mối quan tâm bất cứ lúc nào, ngay trong ứng dụng Cài đặt Google. Chế độ cài đặt này áp dụng cho mọi công ty quảng cáo sử dụng mã nhận dạng cho quảng cáo.
Định nghĩa về kỹ thuật
Mã nhận dạng cho quảng cáo được truyền qua BidRequest.Mobile.encrypted_advertising_id
trong giao thức đặt giá thầu theo thời gian thực:
optional bytes encrypted_advertising_id = 20;
Trường này có kích thước 36 byte và chứa 3 phần:
initialization_vector
: 16 byte.ciphertext
: 16 byte, UUID 16 byte được mã hoá của mã nhận dạng cho quảng cáo.integrity_signature
: 4 byte.
{initialization_vector (16 bytes)}{ciphertext (16 bytes)}{integrity_signature (4 bytes)}
Định nghĩa
Biến | Thông tin chi tiết |
---|---|
initialization_vector |
16 byte – duy nhất cho lượt hiển thị. |
ciphertext |
16 byte – được tạo dưới dạng: <advertising_id <xor> hmac(encryption_key, initialization_vector)> |
integrity_signature |
4 byte – được tạo dưới dạng 4 byte đầu tiên của: hmac(integrity_key, advertising_id || initialization_vector) |
encryption_key |
32 byte – được cung cấp khi thiết lập tài khoản. |
integrity_key |
32 byte – được cung cấp khi thiết lập tài khoản. |
advertising_id |
16 byte – Mã nhận dạng cho quảng cáo gốc, chưa mã hoá, là UUID |
final_message |
36 byte – Mảng byte được gửi qua trường encrypted_advertising_id . |
Toán tử | Thông tin chi tiết |
---|---|
hmac(key, data) |
SHA-1 HMAC, sử dụng key để mã hoá data . |
a || b |
chuỗi a nối với chuỗi b . |
Lược đồ mã hoá
Lược đồ mã hoá cho mã nhận dạng cho quảng cáo dựa trên cùng một lược đồ dùng để giải mã phương thức xác nhận giá.
- Mã nhận dạng cho quảng cáo được lưu trữ trong một mảng byte. Mã này được mã hoá bằng lược đồ mã hoá tuỳ chỉnh được thiết kế để giảm thiểu hao tổn về kích thước trong khi vẫn đảm bảo mức độ bảo mật cao.
- Giao thức mã hoá sử dụng một thuật toán HMAC có khoá để tạo vùng đệm bí mật dựa trên
initialization_vector
dành riêng cho sự kiện hiển thị.
Mã giả để mã hoá
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
Lược đồ giải mã
Mã giải mã của bạn phải 1) giải mã trường encrypted_advertising_id
bằng khoá mã hoá và 2) xác minh bit tính toàn vẹn bằng khoá tính toàn vẹn (không bắt buộc). Chúng tôi sẽ cung cấp khóa cho bạn trong quá trình thiết lập tài khoản. Không có quy tắc hạn chế nào về cách bạn sắp xếp cấu trúc triển khai.
- Tạo bảng tính:
hmac(encryption_key, initialization_vector)
- XOR: Lấy kết quả này và
<xor>
cùng với bản mã hoá để đảo ngược quá trình mã hoá. - Xác minh: Chữ ký về tính toàn vẹn truyền 4 byte
HMAC(integrity_key, advertising_id || initialization_vector)
Mã giả giải mã
(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)
Thư viện Java
Thay vì triển khai các thuật toán mã hoá để mã hoá và giải mã mã nhận dạng cho quảng cáo, bạn có thể sử dụng DoubleClickCrypto.java. Để biết thêm thông tin, hãy xem bài viết Mật mã học.