SafetyNet Attestation API adalah API anti-penyalahgunaan yang memungkinkan developer aplikasi mengevaluasi perangkat Android yang menjalankan aplikasi mereka. API ini harus digunakan sebagai bagian dari sistem deteksi penyalahgunaan untuk membantu menentukan apakah server Anda berinteraksi dengan aplikasi asli yang berjalan di perangkat Android asli.
SafetyNet Attestation API memberikan pengesahan yang ditandatangani secara kriptografis sehingga akan mengevaluasi integritas perangkat. Untuk membuat pengesahan ini, API memeriksa lingkungan software dan hardware perangkat, yang dilakukan untuk mencari masalah integritas, dan membandingkannya dengan data referensi untuk perangkat Android yang disetujui. Pengesahan yang dihasilkan terikat dengan nonce yang disediakan aplikasi pemanggil. Pengesahan ini juga memuat stempel waktu pembuatan dan metadata tentang aplikasi yang meminta.
API ini tidak dirancang untuk memenuhi kasus penggunaan berikut:
- Bertindak sebagai mekanisme anti-penyalahgunaan atau keamanan aplikasi yang berdiri sendiri. Gabungkan penggunaan API ini dengan praktik terbaik untuk keamanan aplikasi yang telah dipublikasikan dan berbagai sinyal anti-penyalahgunaan khusus untuk produk Anda.
- Berfungsi saat perangkat tidak terhubung ke internet. Dalam skenario tersebut, API akan menampilkan error.
- Meminta responsnya ditafsirkan langsung di aplikasi yang memanggil. Pindahkan semua logika keputusan anti-penyalahgunaan ke server yang berada di bawah kendali Anda.
- Menyediakan sinyal terperinci tentang modifikasi sistem. API ini menawarkan nilai boolean yang mengekspresikan berbagai tingkat integritas sistem.
- Berisi sinyal untuk kasus penggunaan khusus aplikasi, seperti ID perangkat, status emulasi GPS, dan status penguncian layar.
- Mengganti atau menerapkan pemeriksaan DRM yang kuat.
- Murni memeriksa apakah perangkat di-root, karena API ini dirancang untuk memeriksa integritas perangkat secara keseluruhan.
Ringkasan
SafetyNet Attestation API menggunakan alur kerja berikut:
- SafetyNet Attestation API menerima panggilan dari aplikasi Anda. Panggilan ini menyertakan nonce.
- Layanan SafetyNet Attestation mengevaluasi lingkungan runtime dan meminta pengesahan bertanda tangan atas hasil evaluasi tersebut dari server Google.
- Server Google mengirimkan pengesahan bertanda tangan ke layanan SafetyNet Attestation di perangkat.
- Layanan SafetyNet Attestation menampilkan pengesahan bertanda tangan ini ke aplikasi Anda.
- Aplikasi Anda meneruskan pengesahan bertanda tangan ke server Anda.
- Server memvalidasi respons dan menggunakannya untuk keputusan anti-penyalahgunaan. Server menyampaikan temuannya ke aplikasi Anda.
Gambaran grafis proses ini ditampilkan pada Gambar 1:
![](https://developer.android.google.cn/static/images/training/safetynet/attestation-protocol.png?authuser=8&hl=id)
Catatan: Dokumentasi dan checklist tambahan
Selama inisialisasi, konfigurasi, dan aktivasi SafetyNet Attestation API, dan selain dokumentasi utama ini, perhatikan dan patuhi saran berikut:
Mendapatkan kunci API
Untuk memanggil metode SafetyNet Attestation API, Anda harus menggunakan kunci API. SafetyNet Attestation API tidak digunakan lagi, sehingga Anda tidak dapat lagi meminta kunci API baru.
Kuota dan pemantauan API
Alokasi kuota default per project untuk memanggil SafetyNet Attestation API adalah 10.000 permintaan per hari di seluruh basis pengguna Anda. Untuk membuat volume permintaan integritas yang lebih tinggi, migrasikan ke Play Integrity API dan minta peningkatan kuota berdasarkan petunjuk dalam dokumentasi Play Integrity API. Perlu diperhatikan bahwa permintaan kuota memerlukan waktu beberapa hari kerja untuk diproses. Jadi, sebaiknya siapkan pemantauan dan pemberitahuan kuota untuk menghindari situasi darurat.
Catatan: Berapa pun kuota yang disediakan untuk project Anda, setiap instance aplikasi dibatasi maksimum 5 permintaan per menit. Jika batas ini terlampaui, semua permintaan yang tersisa selama menit tersebut akan menampilkan error.
Perhatikan perilaku ini saat menerapkan mekanisme coba ulang aplikasi Anda.
Memeriksa versi layanan Google Play
Sebelum menggunakan SafetyNet Attestation API, Anda harus memastikan bahwa layanan Google Play dengan versi yang benar telah diinstal di perangkat pengguna. Jika versi yang diinstal salah, aplikasi Anda dapat berhenti merespons setelah memanggil API. Jika aplikasi mendeteksi bahwa versi yang diinstal salah, Anda harus meminta pengguna mengupdate aplikasi layanan Google Play di perangkat mereka.
Untuk memeriksa kompatibilitas versi layanan Google Play yang terinstal
dengan versi Android SDK yang Anda gunakan, panggil metode
isGooglePlayServicesAvailable()
,
seperti yang ditampilkan dalam cuplikan kode berikut:
if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context)
== ConnectionResult.SUCCESS) {
// The SafetyNet Attestation API is available.
} else {
// Prompt user to update Google Play services.
}
Pada perangkat yang menjalankan Layanan Google Play v13.0 dan yang lebih baru, SafetyNet Attestation API juga mendukung kunci API yang dibatasi aplikasi. Fitur ini mengurangi risiko penggunaan yang tidak disengaja atau tidak sah dari kunci API yang memiliki batasan kuota. Untuk menggunakan fitur opsional ini, pastikan versi minimum Layanan Google Play di perangkat tersebut setidaknya v13.0, seperti yang ditampilkan dalam cuplikan kode berikut:
if (GoogleApiAvailability.getInstance()
.isGooglePlayServicesAvailable(context, 13000000) ==
ConnectionResult.SUCCESS) {
// The SafetyNet Attestation API is available.
} else {
// Prompt user to update Google Play Services.
}
Meminta pengesahan SafetyNet
Setelah Anda mendapatkan kunci API yang valid untuk Android Device Verification API di Konsol API Google, aplikasi Anda dapat menggunakan layanan SafetyNet Attestation. Caranya, selesaikan langkah-langkah berikut:
- Dapatkan nonce.
- Minta pengesahan SafetyNet.
- Transfer responsnya ke server Anda.
- Gunakan respons tersebut di server Anda, bersama dengan sinyal anti-penyalahgunaan lainnya, untuk mengontrol perilaku aplikasi Anda.
Agar aplikasi Anda tetap responsif, jalankan langkah-langkah ini di luar thread eksekusi utama aplikasi Anda. Untuk mempelajari lebih lanjut cara membuat thread eksekusi terpisah, lihat Mengirimkan operasi ke beberapa thread.
Anda harus melakukan pemeriksaan ini untuk melindungi semua tindakan penting—termasuk login, peristiwa pembelian, dan pemerolehan produk dalam aplikasi yang baru—di aplikasi Anda. Namun, panggilan ke SafetyNet Attestation API menyebabkan peningkatan latensi, penggunaan data seluler, dan penggunaan baterai, jadi sebaiknya temukan keseimbangan antara keamanan dan kegunaan. Sebagai contoh, Anda dapat memilih untuk meminta pengesahan SafetyNet setelah login dan menjalankan pemeriksaan ulang paling banyak sekali setiap 30 menit. Anda juga dapat mengizinkan server memutuskan kapan aplikasi Anda meminta pengesahan, untuk mempersulit pihak-pihak tidak bertanggung jawab yang ingin memprediksi waktu pemeriksaan Anda.
Mendapatkan nonce
Saat memanggil SafetyNet Attestation API, Anda harus meneruskan nonce. Pengesahan yang dihasilkan akan memuat nonce ini, yang memungkinkan Anda menentukan bahwa pengesahan itu adalah milik panggilan API Anda dan belum di-replay oleh penyerang.
Nonce yang digunakan dengan permintaan SafetyNet harus memiliki panjang minimal 16 byte. Anda harus memasukkan variabilitas ke dalam nonce, untuk memastikan bahwa nonce yang sama tidak digunakan dua kali. Sebagai praktik terbaik, ambil bagian nonce dari data yang dikirim ke server Anda. Misalnya, gabungkan hash nama pengguna dengan stempel waktu permintaan untuk membentuk nonce.
Penting: Sertakan sebanyak mungkin data dalam nonce. Dengan demikian, Anda mempersulit penyerang untuk melakukan serangan replay. Misalnya, mengambil nonce dari nama pengguna akan membatasi serangan replay pada akun yang sama. Namun, mengambil nonce dari semua detail sebuah peristiwa pembelian akan membatasi penggunaan pesan respons API pada peristiwa pembelian itu saja.
Setelah menerima respons bertanda tangan dari API, selalu bandingkan nonce dalam respons bertanda tangan dengan nonce yang Anda buat dari pesan lainnya yang dikirim ke server Anda. Pemeriksaan ini memastikan bahwa penyerang tidak dapat menggunakan kembali pengesahan bertanda tangan yang diambil dari perangkat yang baik untuk membuat permintaan lain yang berbahaya.
Untuk informasi tambahan tentang penggunaan fungsi kriptografi, lihat panduan tentang cara menggunakan kriptografi.
Meminta pengesahan
Setelah Anda tersambung ke layanan Google Play dan telah membuat nonce, Anda siap membuat permintaan pengesahan SafetyNet. Respons atas permintaan Anda mungkin tidak segera didapatkan. Jadi, sebaiknya siapkan pemroses callback untuk menangani respons dari layanan. Contoh pemroses ditampilkan dalam cuplikan kode berikut:
Kotlin
SafetyNet.getClient(this).attest(nonce, API_KEY) .addOnSuccessListener(this) { // Indicates communication with the service was successful. // Use response.getJwsResult() to get the result data. } .addOnFailureListener(this) { e -> // An error occurred while communicating with the service. if (e is ApiException) { // An error with the Google Play services API contains some // additional details. val apiException = e as ApiException // You can retrieve the status code using the // apiException.statusCode property. } else { // A different, unknown type of error occurred. Log.d(FragmentActivity.TAG, "Error: " + e.message) } }
Java
// The nonce should be at least 16 bytes in length. // You must generate the value of API_KEY in the Google APIs dashboard. SafetyNet.getClient(this).attest(nonce, API_KEY) .addOnSuccessListener(this, new OnSuccessListener<SafetyNetApi.AttestationResponse>() { @Override public void onSuccess(SafetyNetApi.AttestationResponse response) { // Indicates communication with the service was successful. // Use response.getJwsResult() to get the result data. } }) .addOnFailureListener(this, new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { // An error occurred while communicating with the service. if (e instanceof ApiException) { // An error with the Google Play services API contains some // additional details. ApiException apiException = (ApiException) e; // You can retrieve the status code using the // apiException.getStatusCode() method. } else { // A different, unknown type of error occurred. Log.d(TAG, "Error: " + e.getMessage()); } } });
Metode
onSuccess()
menunjukkan bahwa komunikasi dengan layanan berhasil, tetapi
tidak menunjukkan apakah perangkat lulus pengesahan SafetyNet atau tidak. Bagian
selanjutnya dalam artikel ini membahas cara membaca hasil pengesahan dan memverifikasi
integritasnya.
Mentransfer respons pengesahan SafetyNet ke server Anda
Saat aplikasi Anda berkomunikasi dengan SafetyNet, layanan memberikan respons
yang berisi hasil pengesahan SafetyNet, dan menyertakan informasi tambahan
untuk membantu Anda memverifikasi integritas pesan tersebut. Hasilnya
disediakan sebagai
objek
SafetyNetApi.AttestationResponse
. Gunakan metode
getJwsResult()
objek ini untuk mendapatkan data permintaan. Respons diformat sebagai Tanda tangan Web
JSON (JWS).
Kirimkan objek JWS kembali ke server Anda untuk divalidasi dan digunakan.
Menggunakan respons pengesahan SafetyNet di server
Cuplikan JWS berikut menunjukkan format dan contoh konten data payload:
{
"timestampMs": 9860437986543,
"nonce": "R2Rra24fVm5xa2Mg",
"apkPackageName": "com.package.name.of.requesting.app",
"apkCertificateDigestSha256": ["base64 encoded, SHA-256 hash of the
certificate used to sign requesting app"],
"ctsProfileMatch": true,
"basicIntegrity": true,
"evaluationType": "BASIC",
"deprecationInformation": "..."
}
Payload pengesahan bertanda tangan biasanya berisi kolom-kolom berikut:
Stempel waktu respons
timestampMs
: Milidetik setelah epoch UNIX saat pesan respons JWS dihasilkan oleh server Google.
Data yang diberikan oleh aplikasi pemanggil
nonce
: Token sekali pakai yang diteruskan aplikasi pemanggil ke API.
Data tentang aplikasi pemanggil
apkPackageName
: Nama paket aplikasi pemanggil.apkCertificateDigestSha256
: Representasi yang dienkode Base-64 dari hash SHA-256 untuk sertifikat penandatanganan aplikasi pemanggil.
Verdict integritas
ctsProfileMatch
: Verdict integritas perangkat yang lebih ketat. JikactsProfileMatch
bernilaitrue
, berarti profil perangkat yang menjalankan aplikasi Anda cocok dengan profil perangkat yang telah lulus uji kompatibilitas Android dan telah disetujui sebagai perangkat Android bersertifikasi Google.basicIntegrity
: Verdict integritas perangkat yang lebih longgar. Jika hanyabasicIntegrity
yang bernilaitrue
, perangkat yang menjalankan aplikasi Anda kemungkinan tidak dimodifikasi. Namun, perangkat tersebut belum tentu lulus uji kompatibilitas Android.Untuk informasi selengkapnya tentang uji kompatibilitas Android, lihat Mendesain Perangkat Android serta Kompatibilitas Android dan Compatibility Test Suite (CTS).
Informasi Penghentian Layanan
deprecationInformation
: String yang berisi informasi untuk developer tentang penghentian SafetyNet Attestation API.
Kolom opsional
error
: Informasi error berenkode yang relevan dengan permintaan API saat ini.advice
: Saran tentang cara mengembalikan perangkat ke kondisi yang baik.evaluationType
: Jenis pengukuran yang berkontribusi pada respons API saat ini.
Kemungkinan untuk verdict integritas
Pesan JWS berisi dua parameter yang menunjukkan hasil pemeriksaan
kompatibilitas perangkat: ctsProfileMatch
dan basicIntegrity
. Status
perangkat yang menjalankan aplikasi Anda dapat memengaruhi nilai setiap parameter, seperti
ditunjukkan pada Tabel 1:
Tabel 1. Contoh pengaruh status perangkat terhadap nilai
basicIntegrity
dan ctsProfileMatch
Status Perangkat | Nilai ctsProfileMatch |
Nilai basicIntegrity |
---|---|---|
Perangkat tersertifikasi, asli, dan lolos CTS | true |
true |
Perangkat tersertifikasi dengan bootloader tidak terkunci | false |
true |
Perangkat asli tetapi tidak tersertifikasi, misalnya produsen tidak mengajukan sertifikasi | false |
true |
Perangkat dengan ROM kustom (tidak di-root) | false |
true |
Emulator | false |
false |
Tidak ada perangkat (seperti skrip pengemulasi protokol) | false |
false |
Tanda-tanda penyusupan integritas sistem, salah satunya mungkin dengan metode rooting | false |
false |
Tanda-tanda serangan aktif lainnya, seperti hooking API | false |
false |
Kasus error
Pesan JWS juga dapat menampilkan beberapa jenis kondisi error:
- Hasil
null
menunjukkan bahwa panggilan ke layanan tidak selesai dengan baik. - Parameter error di JWS menunjukkan bahwa masalah telah terjadi, seperti error jaringan atau error yang dipalsukan penyerang. Sebagian besar error bersifat sementara dan akan menghilang jika Anda melakukan panggilan lain ke layanan. Sebaiknya Anda mencoba lagi beberapa kali dengan menambah lamanya penundaan antara setiap percobaan ulang.
- Jika perangkat dimodifikasi—artinya, jika basicIntegrity dalam respons
ditetapkan ke salah—verdict mungkin tidak memuat data tentang aplikasi pemanggil, seperti
apkPackageName
danapkCertificateDigestSha256
. Hal ini terjadi saat sistem kami tidak dapat menentukan dengan pasti aplikasi pemanggil tersebut.
Apa yang harus dilakukan jika pengesahan bertanda tangan melaporkan error?
- Coba lagi. Error pada perangkat yang sah bersifat sementara dan akan menghilang jika Anda melakukan panggilan lain ke layanan.
- Pastikan aplikasi Anda tidak memanggil API lebih dari 5 kali per menit di perangkat yang terkena dampak, dan kuota API project Anda belum habis.
- Asumsikan bahwa mungkin penyerang sengaja memicu kasus error untuk menyamarkan aktivitasnya.
Saran agar lulus pemeriksaan mendatang
Jika tersedia, parameter advice
menyediakan informasi untuk membantu menjelaskan alasan
SafetyNet Attestation API menetapkan ctsProfileMatch
atau basicIntegrity
ke salah dalam hasil tertentu. Nilai parameter ini berisi daftar
string, seperti dalam contoh berikut:
{"advice": "LOCK_BOOTLOADER,RESTORE_TO_FACTORY_ROM"}
Di aplikasi, Anda dapat menerjemahkan nilai dalam parameter saran menjadi pesan yang mudah digunakan untuk membantu pengguna lulus dalam pengesahan SafetyNet selanjutnya, seperti ditunjukkan dalam daftar berikut:
LOCK_BOOTLOADER
- Pengguna harus mengunci bootloader perangkatnya.
RESTORE_TO_FACTORY_ROM
- Pengguna harus memulihkan perangkat ke ROM asli pabrik.
Jenis evaluasi
Parameter evaluationType
ada setiap kali verdict ctsProfileMatch
dan
basicIntegrity
ada.
Parameter ini memberikan informasi tentang jenis pengukuran yang digunakan untuk
menghitung kolom seperti ctsProfileMatch
dan basicIntegrity
untuk respons tertentu.
Nilai parameter berisi daftar string, seperti dalam contoh berikut:
{"evaluationType": "BASIC,HARDWARE_BACKED"}
Saat ini, kemungkinan nilainya adalah:
BASIC
- Data referensi dan pengukuran standar digunakan.
HARDWARE_BACKED
- Fitur keamanan yang didukung hardware digunakan. Hal ini mencakup fitur seperti Pengesahan Kunci, yang didukung pada perangkat yang dikirimkan denganAndroid 8.0 (level API 26) dan lebih tinggi.
Di aplikasi, Anda dapat memperlakukan keberadaan HARDWARE_BACKED
di
parameter evaluationType
sebagai indikator evaluasi integritas perangkat
yang lebih kuat.
Catatan: Mengandalkan parameter evaluationType
ini
hanya direkomendasikan untuk aplikasi yang sudah menggunakan verdict ctsProfileMatch
dan yang memerlukan jaminan integritas perangkat tingkat tertinggi,
meskipun harus membatasi basis penggunanya. Dalam sebagian besar kasus, Anda harus
terus mengandalkan verdict basicIntegrity
dan
ctsProfileMatch
untuk mendeteksi penyalahgunaan. Verdict ini sudah
menggabungkan fitur keamanan yang didukung hardware, jika berlaku.
Jika Anda memutuskan untuk bergantung pada keberadaan nilai tertentu dalam
parameter evaluationType
, sebaiknya pertimbangkan untuk menerapkan mekanisme
percobaan ulang di aplikasi jika terjadi error sementara.
Memverifikasi respons pengesahan SafetyNet
Anda harus memastikan bahwa respons pengesahan SafetyNet benar-benar berasal dari layanan SafetyNet dan menyertakan data yang cocok dengan permintaan Anda.
Untuk memverifikasi asal pesan JWS, selesaikan langkah-langkah berikut:
- Ekstrak rantai sertifikat SSL dari pesan JWS.
- Validasi rantai sertifikat SSL tersebut dan gunakan pencocokan nama host SSL untuk memastikan
bahwa sertifikat entitas akhir itu diterbitkan untuk nama host
attest.android.com
. - Gunakan sertifikat tersebut untuk memverifikasi tanda tangan pesan JWS.
- Periksa data pesan JWS untuk memastikan kecocokannya dengan data dalam permintaan awal Anda. Secara khusus, pastikan stempel waktu telah divalidasi dan bahwa nonce, nama paket, dan hash sertifikat penandatanganan aplikasi sesuai dengan nilai yang diharapkan.
Anda perlu memverifikasi pernyataan JWS menggunakan solusi kriptografis standar, seperti yang tercantum dalam penggunaan contoh API android-play-safetynet, yang tersedia di GitHub.
Selama pengembangan dan pengujian awal (tetapi tidak selama produksi), Anda dapat memanggil API online untuk memverifikasi tanda tangan pernyataan JWS. Proses ini juga telah ditampilkan dalam penggunaan contoh API android-play-safetynet yang tersedia di GitHub. Perhatikan bahwa API verifikasi online ditujukan semata-mata untuk pengujian tahap awal, dan Anda memiliki kuota tetap sebesar 10.000 permintaan per hari.
Penting: Penggunaan API verifikasi online hanya memvalidasi bahwa pesan JWS ditandatangani oleh server SafetyNet Attestation API. API online ini tidak dapat memverifikasi apakah kolom-kolom dalam payload cocok dengan nilai yang diharapkan oleh layanan Anda.
Membuat rencana untuk menangani kasus tidak terduga
Sebaiknya rencanakan penggunaan Anda dengan memperhitungkan perubahan dan gangguan.
- Perubahan API
- Kolom-kolom baru (eksperimental) dapat muncul dalam verdict kapan saja. Pastikan kolom tambahan ini tidak merusak parser atau logika penggunaan Anda. Secara khusus, jangan mengandalkan kolom eksperimental sebelum diumumkan di milis klien SafetyNet API.
- SafetyNet Attestation API tidak aktif
Jika SafetyNet Attestation API tidak tersedia, pengguna sangat dianjurkan untuk membangun kemampuan sisi server yang secara dinamis mengontrol ketergantungan pada ketersediaan serta kualitas API ini beserta responsnya.
Strategi standar harus menyertakan kemampuan untuk secara dinamis memerintahkan aplikasi agar berhenti memanggil API ini, serta daftar yang diizinkan berdasarkan perangkat maupun pengguna untuk mengabaikan hasil SafetyNet Attestation API bagi class perangkat dan pengguna tertentu.
Contoh Kode
Untuk panduan tambahan tentang menggunakan SafetyNet API, lihat contoh kode yang tersedia di GitHub.
Daftar Pengumuman
Sebaiknya Anda mengikuti milis klien SafetyNet API untuk menerima info terbaru tentang SafetyNet Attestation API.
Masukan
Pertimbangkan untuk memberikan masukan Anda terkait API ini. Kami menggunakan masukan Anda untuk memprioritaskan fitur dan kemampuan baru untuk API ini.
Pelajari lebih lanjut
Untuk mempelajari lebih lanjut praktik terbaik penggunaan SafetyNet Attestation API, lihat link berikut:
- Checklist untuk integrasi SafetyNet Attestation API
- Postingan blog: 10 things you might be doing wrong when using the SafetyNet Attestation API (10 kesalahan yang mungkin Anda lakukan saat menggunakan SafetyNet Attestation API)
Persyaratan layanan tambahan
Dengan mengakses atau menggunakan SafetyNet API, Anda menyetujui Persyaratan Layanan Google API dan Persyaratan Tambahan berikut. Harap baca dan pahami semua persyaratan dan kebijakan yang berlaku sebelum mengakses API.
Persyaratan Layanan SafetyNet
Seperti halnya data yang dikumpulkan dalam jumlah besar dari pengamatan di lapangan, ada kemungkinan munculnya positif palsu (PP) dan negatif palsu (NP). Kami menyajikan data sebaik-baiknya sesuai dengan pemahaman kami. Kami menguji mekanisme pendeteksian kami secara ekstensif untuk memastikan akurasinya, dan kami berkomitmen meningkatkan metode tersebut dari waktu ke waktu untuk memastikan metode tersebut tetap akurat.
Anda setuju untuk mematuhi semua hukum, peraturan, dan hak pihak ketiga yang berlaku (termasuk, tetapi tidak terbatas pada undang-undang yang mengatur impor atau ekspor data atau software, privasi, dan hukum setempat). Anda tidak boleh menggunakan API untuk mendorong atau mempromosikan kegiatan ilegal atau pelanggaran terhadap hak-hak pihak ketiga. Anda tidak boleh melanggar persyaratan layanan lainnya dengan Google (atau afiliasinya).
Anda menerima dan memahami bahwa SafetyNet API bekerja dengan mengumpulkan informasi hardware dan software, seperti data perangkat dan aplikasi, serta hasil pengesahan SafetyNet, dan mengirimkan data tersebut ke Google untuk dianalisis. Berdasarkan Pasal 3(d) Persyaratan Layanan Google API, Anda setuju bahwa jika Anda menggunakan API, Anda bertanggung jawab untuk menyampaikan pemberitahuan atau memberikan persetujuan apa pun yang diperlukan terkait pengumpulan dan pembagian data ini kepada Google.
Keamanan Data SafetyNet Attestation
Google Play memiliki bagian keamanan data bagi developer untuk mengungkapkan praktik pengumpulan, berbagi, dan keamanan data aplikasi mereka. Untuk membantu melengkapi persyaratan bagian keamanan data, Anda dapat menggunakan informasi berikut terkait cara SafetyNet Attestation API menangani data:
Jenis praktik | Cara SafetyNet Attestation API menerapkan praktik |
---|---|
Data yang dikumpulkan selama penggunaan |
|
Tujuan pengumpulan data | Data yang dikumpulkan akan digunakan untuk memverifikasi integritas aplikasi dan integritas perangkat. |
Enkripsi data | Data tidak dienkripsi |
Berbagi data | Data tidak akan ditransfer kepada pihak ketiga mana pun. |
Penghapusan data | Data akan dihapus setelah periode retensi data tetap. |
Untuk menyelesaikan pengungkapan data, Anda dapat menggunakan panduan tentang jenis data Android untuk membantu menentukan jenis data yang paling tepat dalam mendeskripsikan data yang dikumpulkan. Dalam pengungkapan data, pastikan Anda juga memperhitungkan cara aplikasi tertentu membagikan dan menggunakan data yang dikumpulkan.
Meskipun kami berupaya untuk bersikap setransparan mungkin dalam mendukung Anda, kami tidak dapat berbicara untuk Anda, dan Anda sepenuhnya bertanggung jawab untuk memutuskan cara merespons formulir bagian keamanan data Google Play terkait praktik pengumpulan, berbagi, dan keamanan data pengguna aplikasi Anda.