Dalam proposal awal Protected Audience, bidding dan lelang untuk permintaan iklan pemasaran ulang dijalankan secara lokal di perangkat. Persyaratan ini mungkin menuntut persyaratan komputasi yang mungkin tidak praktis untuk dijalankan di perangkat dengan daya pemrosesan yang terbatas, atau mungkin terlalu lambat untuk memilih dan merender iklan karena latensi jaringan.
Proposal layanan Bidding dan Lelang (B&A) menguraikan cara untuk mengizinkan komputasi Protected Audience berlangsung di server cloud di trusted execution environment (TEE), bukan berjalan secara lokal di perangkat pengguna. Proposal B&A bertujuan untuk mendukung alur terpadu guna mempertimbangkan permintaan iklan kontekstual dan pemasaran ulang. Memindahkan komputasi ke server dapat membantu mengoptimalkan lelang Protected Audience dengan mengosongkan siklus komputasi dan bandwidth jaringan untuk perangkat.
Google akan menyediakan komponen B&A, dan komponen itu akan tersedia sebagai open source. Teknologi iklan yang tertarik dapat menghosting instance-nya sendiri dengan penyedia cloud publik yang didukung. Anda dapat membaca proposal B&A lebih lanjut di GitHub. Perhatikan bahwa tanggal yang ditampilkan dalam dokumen tersebut mencerminkan penerapan untuk Chrome, dan kami akan memublikasikan informasi selengkapnya tentang integrasi dengan Android di masa mendatang. Dokumen ini berfungsi sebagai pengantar B&A, dan API baru yang akan disediakan Android untuk berinteraksi dengan B&A. Kami akan memposting informasi teknis selengkapnya tentang cara menggunakan API baru ini dalam update mendatang.
Tempat layanan B&A sesuai
B&A memberikan opsi tambahan untuk menjalankan lelang di dalam server tepercaya yang dimiliki teknologi iklan yang menjalankan biner open source yang disediakan Google. Data pengguna tetap ada di perangkat, dan Google akan menyediakan API untuk memindahkan data tersebut dengan aman ke TEE. Informasi selengkapnya tentang strategi enkripsi kami dapat Anda temukan di bawah.
Artinya, beberapa bagian proses lelang terjadi di perangkat, dan bagian lainnya di cloud. Dari perspektif DSP, audiens kustom (termasuk iklan kandidat yang disertakan untuk kampanye pemasaran ulang) masih dikelola di perangkat menggunakan API pengelolaan audiens kustom yang sama dengan saat lelang dijalankan di perangkat. Dari sudut pandang SSP, permintaan tetap dipicu di perangkat, dan dokumen ini menjelaskan API baru yang akan digunakan. Untuk semua pihak, pelaporan hasil lelang masih dimulai dari perangkat, setelah panggilan B&A selesai.
Perbedaan utamanya terletak pada tempat logika pembuatan URL bidding, penskoran, dan pelaporan
dijalankan. Alih-alih menjalankan logika bidding, lelang, dan
pelaporan di perangkat, logika generateBid()
, scoreAd()
, reportResult()
, dan
reportWin()
dijalankan di TEE. Logika bidding pembeli dan logika
penskoran penjual dijalankan dalam lingkungan B&A mereka sendiri, di tengah
alur lelang Protected Audience:
Enkripsi Data
Dengan B&A, informasi Protected Audience seperti audiens kustom dan jumlah bid mengalir dari perangkat, melalui server teknologi iklan penjual, menuju ke server teknologi iklan pembeli, dan kembali ke perangkat. Oleh karena itu, platform ini mengenkripsi data yang menuju ke layanan Protected Audience, dan hanya dapat didekripsi oleh layanan yang telah disahkan. Baca selengkapnya tentang strategi enkripsi di GitHub.
Alur arsitektur dan lelang
Proposal ini mencakup kebutuhan beberapa komponen baru yang dijelaskan di GitHub, termasuk aliran data dari perangkat ke B&A.
Pada level tinggi, aliran data dijelaskan sebagai berikut:
- Di perangkat, penjual akan mengumpulkan informasi dari Protected Audience menggunakan
getAdSelectionData
API. - SDK di perangkat mengirim permintaan ke layanan Iklan
Penjual. Permintaan ini mencakup payload kontekstual dan
ProtectedAudienceInput
terenkripsi. - Layanan Iklan Penjual mengirimkan permintaan ke layanan bidding real-time (RTB) pembeli yang berjalan di luar TEE untuk mendapatkan iklan kontekstual kandidat, lalu memberi skor dan memilih iklan kontekstual pemenang.
- Layanan Iklan Penjual mengirim permintaan ke layanan SellerFrontEnd miliknya yang berjalan di TEE.
- Layanan SellerFrontEnd mengirim permintaan dengan data khusus pembeli ke Layanan BuyerFrontEnd.
- Pembeli menggunakan layanan Kunci/Nilai dan layanan Bidding mereka sendiri, yang menghasilkan bid untuk kandidat iklan yang bersumber dari perangkat untuk semua audiens kustom yang dipertimbangkan untuk pemasaran ulang.
- Layanan SellerFrontEnd membaca dari layanan Kunci/Nilai mereka dan menilai iklan kandidat. Hasilnya dienkripsi dan ditampilkan ke layanan Iklan Penjual.
- Layanan Iklan Penjual menampilkan hasil pemenang yang dienkripsi, dan hasil kontekstual secara opsional, ke SDK di perangkat.
- Di perangkat, penjual mengambil iklan pemenang menggunakan
processAdSelectionResult
API, yang mendekripsi respons dari layanan Iklan Penjual.
Deskripsi mendetail tentang setiap langkah dan cara data dienkripsi dapat ditemukan di GitHub. Kode untuk komponen ini akan tersedia melalui open source. Kode yang disediakan akan menangani penggabungan permintaan dari layanan SellerFrontEnd ke layanan BuyerFrontEnd.
Deployment Cloud
Teknologi iklan akan men-deploy layanan B&A ke platform cloud publik yang didukung. Deployment ini akan dikelola oleh teknologi iklan yang akan bertanggung jawab untuk menentukan Tujuan Tingkat layanan ketersediaan.
Menjalankan lelang
Langkah pertama untuk menjalankan lelang B&A adalah mengumpulkan data dari audiens kustom
di perangkat dan mengenkripsinya untuk dikirim ke lelang sisi server. Untuk melakukannya,
gunakan getAdSelectionData
API:
AdSelectionData getAdSelectionData(AdTechIdentifier seller)
Metode getAdSelectionData
menghasilkan input yang diperlukan untuk komponen B&A,
seperti BuyerInput
dan
ProtectedAudienceInput
, serta mengenkripsi data sebelum menyediakan
hasilnya kepada pemanggil. Untuk mencegah kebocoran data di seluruh aplikasi, data
ini berisi informasi dari semua pembeli yang ada di perangkat. Baca selengkapnya
tentang keputusan ini di bagian pertimbangan privasi.
API ini menampilkan objek AdSelectionData
:
class AdSelectionData {
long adSelectionId // Unique identifier for the auction.
byte[] data // Encrypted bytes containing data sourced from
// on device custom audiences; will
// be used as the payload to B&A.
}
Dengan menggunakan AdSelectionData
, SDK di perangkat dapat mengirim permintaan ke
layanan Iklan Penjual mereka dengan menyertakan data dalam permintaan POST atau PUT:
fetch('https://www.example-ssp.com/auction', {
method: "PUT",
body: data,
…
})
SDK di perangkat bertanggung jawab untuk mengenkode data ini. Sebaiknya
gunakan solusi hemat ruang seperti mengirim permintaan ke layanan Iklan Penjual
sebagai multipart/form-data
.
Setelah permintaan dimulai, layanan Iklan Penjual meneruskan permintaan ke layanan SellerFrontEnd yang berjalan di TEE. Saat mengonfigurasi layanan SellerFrontEnd, penjual akan memberikan daftar alamat domain yang terkait dengan layanan BuyerFrontEnd yang dioperasikan oleh pembeli yang berpartner dengan penjual. Permintaan akan digabungkan ke berbagai layanan BuyerFrontEnd yang telah disediakan penjual, sehingga pembeli dapat membuat bid untuk kandidat iklan yang mereka pilih. Untuk pembeli tertentu, B&A hanya akan mengirim informasi tentang audiens kustom yang dimiliki pembeli sehingga tidak ada kebocoran data antar-pembeli. Setelah membuat bid, daftar iklan kandidat akan kembali ke layanan SellerFrontEnd tempat pemenang dipilih. Terakhir, layanan SellerFrontEnd menampilkan iklan pemenang yang dienkripsi ke perangkat.
Dengan respons dari permintaan ke layanan Iklan Penjual kembali di perangkat,
platform menawarkan API baru kedua untuk mendekripsi hasil dan memberikan
AdSelectionOutcome
, objek yang sama yang ditampilkan dari lelang di perangkat
saat ini.
PersistAdSelectionResultRequest {
AdSelectionId id // Same ID returned from initial getAdSelectionData call.
AdTechIdentifier seller // Used for enrollment checks.
byte[] adSelectionionResult // The result of the network call to Seller Ad
// service/B&A.
}
persistAdSelectionResult(persistAdSelectionResultRequest);
Pelaporan
URL pelaporan akan dibuat di layanan B&A. Ping ke URL tersebut untuk
melaporkan tayangan dan interaksi karena lelang masih perlu
dipicu di perangkat. SDK di perangkat masih perlu memanggil
reportImpression()
dan reportInteraction()
API menggunakan
AdSelectionId
yang dihasilkan dalam alur B&A. Beacon yang dihasilkan untuk
pelaporan interaksi dan URL yang sesuai terdapat di dalam
respons terenkripsi, sehingga selama dekripsi respons tersebut, peristiwa dan pemetaan
URL disimpan di perangkat.
Pertimbangan Privasi
Proposal API Bidding & Lelang Browser di GitHub menjelaskan cara pertimbangan privasi dipertimbangkan. Proposal ini menggunakan nomenklatur Chrome, tetapi prinsip yang sama berlaku untuk Android.
adSelectionData
dienkripsi untuk memastikan bahwa data dalam pengiriman hanya dapat diakses
oleh PPAPI dan server tepercaya. Untuk mengurangi risiko kebocoran data karena
perubahan ukuran adSelectionData
, kami berencana untuk membuat adSelectionData
yang sama untuk semua panggilan ke getAdSelectionData
API. Ini menyiratkan bahwa semua
CustomAudience
di perangkat digunakan untuk membuat adSelectionData
. Kami juga
akan membatasi pengaruh parameter input GetAdSelectionData
pada
adSelectionData
yang dihasilkan.
Menghasilkan adSelectionData
yang sama untuk semua teknologi iklan yang menggunakan semua data lelang
di perangkat akan menghasilkan payload yang lebih tinggi dan harus ditransfer dalam setiap
panggilan ke server teknologi iklan, sekaligus berpotensi membuka ekosistem terhadap penyalahgunaan
oleh entity berbahaya. Masalah ini dibahas di bagian Pertimbangan
ukuran dan Pertimbangan anti-penyalahgunaan di bawah.
Pertimbangan ukuran
SDK klien teknologi iklan diharapkan untuk memaketkan byte terenkripsi
adSelectionData
ke dalam panggilan untuk iklan kontekstual yang dibuat ke server Penjual.
Untuk performa yang optimal, penting untuk mengoptimalkan ukuran
adSelectionData
tanpa mengorbankan fungsi. Kami berencana untuk memperkenalkan
pengoptimalan seperti yang disebutkan dalam Penjelasan pengoptimalan
payload untuk mengurangi ukuran adSelectionData
. Pengoptimalan ini
akan mencakup:
- Menambahkan
ad_render_id
diCustomAudience
sehingga dikirim menggunakanadSelectionData
, bukan menggunakan URI dan metadata render iklan. Teknologi iklan dapat lebih mengoptimalkan hal ini dengan tidak mengirimkan data iklan diadSelectionData
. Opsi ini akan didukung diCustomAudience API
dalam rilis mendatang. - Memastikan
user_bidding_signals
tidak dikirim diadSelectionData
. Sebagai gantinya, teknologi iklan dapat mengambiluser_bidding_signals
dari server Kunci/Nilai mereka. - Memungkinkan pembeli untuk memprioritaskan
CustomAudience
. - Memungkinkan pembeli untuk menentukan prioritas penjual.
- Menghasilkan
adSelectionData
di beberapa bucket tetap untuk membatasi kebocoran bit sekaligus mengurangi ukuran payload.
Pengoptimalan ukuran akan dilakukan dengan tetap memperhatikan kekhawatiran yang timbul dalam pertimbangan privasi.
Pertimbangan anti-penyalahgunaan
Seperti disebutkan dalam pertimbangan Privasi, adSelectionData
dibuat menggunakan
semua data pembeli di perangkat.
Hal ini membuka ekosistem terhadap kemungkinan adanya entity berbahaya yang dapat menambahkan data pembeli palsu yang dapat menurunkan performa, payload yang membengkak hingga meningkatkan biaya, dll.
Untuk mengatasi penyalahgunaan adSelectionData
, kami akan memperkenalkan tindakan berikut
- Memungkinkan
CustomAudience
untuk menentukan prioritas penjual dan penjual yang disetujui secara eksplisit - Memungkinkan SSP untuk menentukan pembeli, prioritas pembeli, dan kuota per pembeli secara eksplisit di payload yang dihasilkan
- Menyediakan mekanisme bagi SSP untuk menentukan jumlah maksimum pembeli per panggilan atau ukuran maksimal per pembeli.
Tindakan ini dirancang untuk memungkinkan teknologi iklan menentukan teknologi iklan lain
yang berkolaborasi dengan mereka, dan untuk menetapkan batas yang dapat diterima pada payload
adSelectionData
yang perlu mereka proses. Kami mengusulkan memungkinkan penjual untuk menetapkan
daftar dan prioritas pembeli ini dalam panggilan terpisah. Spesifikasi ini akan
tetap konstan selama beberapa interval waktu untuk menghindari paparan data tambahan
tentang pengguna melalui panggilan berulang.
Mitigasi yang disebutkan di atas sedang dibahas dan dapat berubah dari waktu ke waktu. Seperti yang disebutkan sebelumnya, semua mitigasi yang diperkenalkan untuk anti-penyalahgunaan dan pembatasan ukuran harus mematuhi pertimbangan privasi.