Penandatanganan Aplikasi Android: Cara Kerja dan Mengapa Penting

A brass key on a smartphone showing a verified checkmark, illustrating Android app signing

Setiap kali Anda memasang aplikasi di ponsel Android, pemeriksaan keamanan penting namun senyap terjadi di latar belakang. Ponsel Anda memverifikasi tanda tangan digital paket APK. Jabat tangan kriptografi inilah yang mencegah peretas jahat "meracuni" aplikasi Anda dengan malware sekaligus memastikan pengembang dapat mengirimkan pembaruan tanpa kehilangan identitas mereka.

Jika Anda menulis aplikasi, penandatanganan adalah sesuatu yang harus Anda lakukan dengan benar; jika Anda hanya ingin mengutak-atik Android, ini adalah salah satu bagian sistem yang paling memuaskan untuk dipahami. Apa pun pilihannya, cara kerja penandatanganan aplikasi sepadan dengan waktu Anda. Di bawah ini kami membahas teknologinya, bagaimana skema penandatanganan berkembang, dan bagaimana Anda dapat memverifikasi sertifikat secara manual online.

Apa yang akan Anda pelajari di artikel ini
  • Mengapa setiap aplikasi Android harus ditandatangani dan kriptografi apa yang terlibat (RSA/EC).
  • Perbedaan antara skema tanda tangan v1 (JAR), v2, v3, dan v4, dan skema mana yang harus digunakan aplikasi Anda saat ini.
  • Cara Android memutuskan apakah akan mengizinkan pembaruan berdasarkan kontinuitas tanda tangan.
  • Bagaimana rotasi kunci memungkinkan pengembang mengubah kunci penandatanganannya tanpa merusak instalasi yang sudah ada.
  • Cara memverifikasi sendiri tanda tangan APK apa pun, pada baris perintah atau dengan pemverifikasi berbasis browser kami.

Apa itu Penandatanganan Aplikasi?

Pada intinya, penandatanganan aplikasi adalah proses di mana pengembang menggunakan Kunci Pribadi untuk menghasilkan blok tanda tangan untuk file aplikasi mereka. Kunci Publik yang sesuai kemudian tertanam dalam APK di dalam folder META-INF. Saat ponsel Anda mencoba menginstal aplikasi, ponsel menggunakan kunci publik untuk memeriksa apakah tanda tangannya cocok dengan konten file.

Ini memberikan dua properti utama:

  1. Kekekalan: Jika satu byte kode aplikasi diubah (misalnya oleh Trojan), tanda tangan tidak akan lagi cocok dengan file tersebut, dan Android akan menolak untuk menginstalnya.
  2. Bukti Identitas: Jika suatu aplikasi mencoba memperbarui aplikasi yang sudah ada, tanda tangannya harus cocok. Inilah sebabnya mengapa Anda tidak dapat memasang aplikasi Facebook yang dirusak daripada aplikasi resmi.

Evolusi Skema Penandatanganan

Google terus meningkatkan mekanisme penandatanganan untuk meningkatkan kecepatan dan keamanan:

Mengapa Sertifikat Penting untuk Sideloading

Saat Anda mengunduh APK dari sumber tidak resmi, Hashing Sertifikat adalah teman terbaik Anda. Sidik jari sertifikat (seperti hash SHA-256) secara unik mengidentifikasi kunci penandatanganan pengembang. Setiap aplikasi menyimpan kunci penandatanganan yang sama di semua pembaruannya, sehingga Anda dapat membandingkan sidik jari APK dengan nilai yang dipublikasikan pengembang untuk mengonfirmasi keasliannya.

Jika Anda mencurigai suatu APK palsu, Anda harus menjalankannya melalui Pemverifikasi APK Online kami. Alat kami akan menunjukkan kepada Anda:

Bagaimana Android Memverifikasi Tanda Tangan pada Waktu Penginstalan

Langkah "verifikasi sertifikat" sering kali diabaikan sehingga ada baiknya menelusuri apa yang sebenarnya dilakukan OS saat Anda mengetuk APK dan Android memutuskan apakah akan menginstalnya:

  1. Buka APK sebagai ZIP dan temukan blok penandatanganan. Untuk tanda tangan v2/v3 yang merupakan blok terstruktur tepat sebelum direktori pusat; untuk skema legacy v1 isinya META-INF/*.RSA, *.DSA, atau *.EC.
  2. Hitung intisari SHA-256 dari setiap byte APK lainnya. Blok penandatanganan dikecualikan dari intisarinya sendiri; segala sesuatu yang lain di-hash dalam potongan yang ditentukan.
  3. Verifikasi intisari setiap potongan terhadap intisari yang dicatat di blok penandatanganan. Jika bahkan satu byte pun telah diubah sejak pengembang menandatangani file, intisari tidak akan cocok dan instalasi ditolak dengan kesalahan umum "Aplikasi tidak diinstal".
  4. Verifikasi bahwa blok penandatanganan itu sendiri dibuat dengan kunci pribadi sertifikat. Kunci publik sertifikat digunakan untuk memeriksa tanda tangan kriptografi di blok. Pemeriksaan yang berhasil berarti siapa pun yang menandatangani file tersebut memiliki kunci pribadi yang dipasangkan dengan sertifikat ini.
  5. Bandingkan sidik jari sertifikat dengan instalasi apa pun yang ada dengan nama paket yang sama. Jika paket sudah terinstal dan APK baru ditandatangani dengan sertifikat yang berbeda, instalasi ditolak dengan INSTALL_FAILED_UPDATE_INCOMPATIBLE. Ini adalah pertahanan utama anti-peniruan identitas OS: pelaku jahat tidak dapat mengganti aplikasi bank Anda dengan salinannya sendiri kecuali mereka juga mencuri kunci penandatanganan bank.

Semua ini tidak membuktikan bahwa pengembang dapat dipercaya, hanya saja file yang akan Anda instal identik dengan byte yang mereka tandatangani dan tidak ada pihak lain yang merusaknya. Kepercayaan pada pengembang adalah keputusan terpisah, dan keputusan yang Anda buat dengan memutuskan dari sumber mana Anda menginstal.

Apa Arti Sebenarnya "Ketidakcocokan Tanda Tangan".

Satu-satunya kejutan paling umum yang dialami orang ketika melakukan sideload adalah kesalahan "ketidakcocokan tanda tangan" pada pembaruan. Inilah yang sebenarnya terjadi:

Ada dua cara hal ini terjadi dalam praktiknya:

  1. APK pihak ketiga adalah asli dari penerbit lain, misalnya salinan yang "dimodifikasi" atau "ditambal". Menolak instalasi adalah tindakan yang benar; menginstalnya berarti memercayai orang asing dengan data yang sama yang telah disentuh oleh aplikasi bank Anda.
  2. APK pihak ketiga adalah unggahan ulang APK resmi, namun sistem Penandatanganan Aplikasi Google Play menandatangani setiap download pengguna dengan wrapper kunci unggah milik pengguna. Dua perangkat terkadang dapat melihat data tanda tangan yang sedikit berbeda untuk versi aplikasi konseptual yang sama. Dalam hal ini sidik jari sertifikat pada akar masih cocok; Anda dapat memverifikasi dengan Pemverifikasi APK kami.

Jika sidik jari sertifikat sungguh-sungguh berbeda dari instalasi Anda yang sudah ada, satu-satunya cara untuk maju adalah dengan menghapus salinan saat ini terlebih dahulu (kehilangan datanya) sebelum melakukan sideload penggantinya, jangan pernah menonaktifkan verifikasi tanda tangan.

Menghasilkan Kunci Penandatanganan Anda Sendiri (Untuk Pengembang)

Jika Anda membuat aplikasi Android, pada akhirnya Anda harus menandatangani versi Anda sendiri. Perintah satu baris standar yang menggunakan keytool dari Java SDK adalah:

keytool -genkeypair -v \
        -keystore my-release.keystore \
        -alias my-app -keyalg RSA -keysize 2048 \
        -validity 10000

Dua hal yang perlu diketahui:

Untuk build pengujian yang di-sideload, keystore debug yang tidak ditandatangani dapat digunakan; untuk produksi, gunakan keystore validitas panjang yang dilindungi kata sandi dan disimpan dalam cadangan offline.

Verifikasi Identitas Aplikasi Seperti Profesional

Jangan percaya nama file umum. Periksa inti kriptografi APK Anda dalam hitungan detik.

Verifikasi Sertifikat Sekarang

Kesalahan Umum dalam Penandatanganan

  1. Sertifikat yang Ditandatangani Sendiri: Sebagian besar aplikasi Android ditandatangani sendiri (self-signed). Berbeda dengan SSL untuk situs web, tidak ada otoritas pusat untuk penandatanganan aplikasi Android. Anda harus mempercayai pengembangnya secara langsung.
  2. Sertifikat Debug: Aplikasi yang dibuat untuk pengujian menggunakan kunci "debug" umum. Aplikasi ini tidak boleh dirilis ke publik dan diblokir oleh banyak filter keamanan.
  3. Kerugian Kunci: Jika pengembang kehilangan keystore pribadinya, mereka dapat memperbarui tidak pernah aplikasinya lagi. Mereka harus merilis aplikasi "Baru" dengan nama paket yang berbeda.

Memilih Skema Penandatanganan yang Tepat untuk SDK Target Anda

Penandatanganan aplikasi secara diam-diam mendasari sebagian besar keamanan Android. Setelah hubungan kunci pribadi/publik diklik, Anda dapat menilai aplikasi yang di-sideload berdasarkan manfaatnya dan mengonfirmasi bahwa apa yang Anda instal belum diubah sejak pengembang menandatanganinya. Untuk informasi lebih lanjut tentang internal Android, lihat panduan untuk format XAPK kami.

Direkayasa & Didokumentasikan oleh Mst Shaefale Pengembang Utama & Arsitek Paket Android • Terverifikasi di Android 12–15

Mst Shaefale mengelola penggabungan XAPK/APKS sisi klien, parser manifes biner, dan alat penandatanganan APK v1+v2 di xapktoapk.com. Temukan perintah yang ketinggalan jaman atau perubahan OS? Kirimkan catatan editorial.