Tandatangan Apl Android: Cara Ia Berfungsi dan Mengapa Ia Penting

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

Setiap kali anda memasang apl pada telefon Android anda, pemeriksaan keselamatan yang senyap tetapi kritikal berlaku di latar belakang. Telefon anda mengesahkan tandatangan digital pakej APK. Jabat tangan kriptografi inilah yang menghalang penggodam berniat jahat daripada "meracuni" apl anda dengan perisian hasad sambil memastikan pembangun boleh menolak kemas kini tanpa kehilangan identiti mereka.

Jika anda menulis apl, tandatangan ialah sesuatu yang anda perlu betulkan; jika anda hanya suka bermain-main dengan Android, ia adalah salah satu bahagian sistem yang paling memuaskan untuk difahami. Walau apa pun, cara tandatangan apl berfungsi berbaloi dengan masa anda. Di bawah ini kami membincangkan teknologi, cara skim penandatanganan berkembang, dan cara anda boleh mengesahkan sijil secara manual dalam talian.

Perkara yang anda akan pelajari dalam artikel ini
  • Mengapa setiap apl Android mesti ditandatangani dan kriptografi yang terlibat (RSA / EC).
  • Perbezaan antara skim tandatangan v1 (JAR), v2, v3 dan v4 dan yang mana satu apl anda patut gunakan hari ini.
  • Cara Android memutuskan sama ada untuk membenarkan kemas kini berdasarkan kesinambungan tandatangan.
  • Cara putaran kunci membolehkan pembangun menukar kunci tandatangan mereka tanpa memecahkan pemasangan sedia ada.
  • Cara untuk mengesahkan sendiri mana-mana tandatangan APK, pada baris arahan atau dengan pengesah berasaskan pelayar kami.

Apakah itu App Signing?

Pada terasnya, tandatangan apl ialah proses di mana pembangun menggunakan Kunci Peribadi untuk menjana blok tandatangan bagi fail apl mereka. Kunci Awam yang sepadan kemudiannya dibenamkan dalam APK dalam folder META-INF. Apabila telefon anda cuba memasang apl, ia menggunakan kunci awam untuk menyemak sama ada tandatangan itu sepadan dengan kandungan fail.

Ini menyediakan dua sifat utama:

  1. Kebolehubahan: Jika satu bait kod apl ditukar (cth., oleh Trojan), tandatangan tidak lagi sepadan dengan fail dan Android akan menolak untuk memasangnya.
  2. Bukti Identiti: Jika apl cuba mengemas kini yang sedia ada, tandatangan mereka mesti sepadan. Inilah sebabnya anda tidak boleh memasang apl Facebook yang diusik berbanding apl rasmi.

Evolusi Skim Menandatangani

Google telah terus meningkatkan mekanisme tandatangan untuk meningkatkan kelajuan dan keselamatan:

Mengapa Sijil Penting untuk Pemuatan Side

Apabila anda memuat turun APK daripada sumber tidak rasmi, Pencincangan Sijil ialah kawan baik anda. Cap jari sijil (seperti cincang SHA-256) secara unik mengenal pasti kunci tandatangan pembangun. Setiap apl menyimpan kunci tandatangan yang sama merentas semua kemas kininya, jadi anda boleh membandingkan cap jari APK dengan nilai diterbitkan pembangun untuk mengesahkan ia tulen.

Jika anda mengesyaki APK adalah palsu, anda harus menjalankannya melalui Pengesah APK Dalam Talian kami. Alat kami akan menunjukkan kepada anda:

Cara Android Mengesahkan Tandatangan pada Masa Pemasangan

Langkah "sahkan sijil" sering ditonjolkan sehinggakan ia berbaloi untuk melihat perkara yang sebenarnya dilakukan oleh OS apabila anda mengetik APK dan Android memutuskan sama ada untuk memasangnya:

  1. Buka APK sebagai ZIP dan cari blok tandatangan. Untuk tandatangan v2/v3 yang merupakan blok berstruktur sejurus sebelum direktori pusat; untuk skim v1 warisan ia adalah kandungan META-INF/*.RSA, *.DSA atau *.EC.
  2. Kirakan ringkasan SHA-256 bagi setiap bait APK yang lain. Blok tandatangan dikecualikan daripada ringkasannya sendiri; semua yang lain dicincang dalam ketulan yang ditentukan.
  3. Sahkan setiap ringkasan bahagian terhadap ringkasan yang direkodkan dalam blok tandatangan. Jika walaupun satu bait telah diubah sejak pembangun menandatangani fail, ringkasan tidak akan sepadan dan pemasangan ditolak dengan ralat "Apl tidak dipasang" generik.
  4. Sahkan blok tandatangan itu sendiri dihasilkan dengan kunci peribadi sijil. Kunci awam sijil digunakan untuk menyemak tandatangan kriptografi dalam blok. Semakan yang berjaya bermakna sesiapa yang menandatangani fail memiliki kunci peribadi yang dipasangkan dengan sijil ini.
  5. Bandingkan cap jari sijil dengan mana-mana pemasangan sedia ada dengan nama pakej yang sama. Jika pakej sudah dipasang dan APK baharu ditandatangani dengan sijil berbeza, pemasangan ditolak dengan INSTALL_FAILED_UPDATE_INCOMPATIBLE. Ini ialah pertahanan anti-penyamaran utama OS: pelakon yang berniat jahat tidak boleh menggantikan apl bank anda dengan salinan mereka sendiri melainkan mereka turut mencuri kunci tandatangan bank.

Tiada satu pun daripada ini membuktikan pembangun itu boleh dipercayai, cuma fail yang akan anda pasangkan adalah sama bait dengan apa yang mereka tandatangani dan tiada pihak lain telah mengganggunya. Percaya kepada pembangun ialah keputusan yang berasingan, dan keputusan yang anda buat dengan memutuskan sumber mana yang anda pasang.

Maksud "Tandatangan Tidak Padan" Sebenarnya

Satu-satunya kejutan yang paling biasa orang ramai lakukan semasa pemuatan sisi ialah ralat "tanda tidak sepadan" semasa kemas kini. Inilah yang sebenarnya berlaku:

Dua cara ini berlaku dalam amalan:

  1. APK pihak ketiga ialah benar-benar daripada penerbit yang berbeza, contohnya salinan "diubah suai" atau "ditampal". Menolak pemasangan adalah kelakuan yang betul; memasangnya bermakna mempercayai orang yang tidak dikenali dengan data yang sama yang telah disentuh oleh apl bank anda.
  2. APK pihak ketiga ialah muat naik semula APK rasmi, tetapi sistem Tandatangan Apl Play Google menandatangani muat turun setiap pengguna dengan pembungkus kunci muat naik pengguna. Dua peranti kadangkala boleh melihat data tandatangan yang sedikit berbeza untuk versi apl konseptual yang sama. Dalam kes itu, cap jari sijil pada akar masih sepadan; anda boleh mengesahkan dengan Pengesah APK kami.

Jika cap jari sijil sungguh berbeza daripada pemasangan sedia ada anda, satu-satunya cara ke hadapan ialah menyahpasang salinan semasa terlebih dahulu (kehilangan datanya) sebelum memuatkan sisi ganti, jangan sekali-kali melumpuhkan pengesahan tandatangan.

Menjana Kunci Tandatangan Anda Sendiri (Untuk Pembangun)

Jika anda sedang membina apl Android, anda akhirnya perlu menandatangani binaan anda sendiri. Perintah satu baris standard menggunakan keytool daripada SDK Java ialah:

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

Dua perkara yang perlu diketahui:

Untuk binaan ujian termuat sisi, stor kunci nyahpepijat yang tidak ditandatangani adalah baik; untuk pengeluaran, gunakan stor kunci kesahan panjang yang dilindungi kata laluan yang disimpan dalam sandaran luar talian.

Sahkan Identiti Apl Seperti Pro

Jangan percaya nama fail generik. Semak inti kriptografi APK anda dalam beberapa saat.

Sahkan Sijil Sekarang

Perangkap Penandatanganan Biasa

  1. Sijil yang ditandatangani sendiri: Kebanyakan apl Android ditandatangani sendiri. Tidak seperti SSL untuk tapak web, tiada pihak berkuasa pusat untuk menandatangani apl Android. Anda mesti mempercayai pembangun secara langsung.
  2. Apl Sijil Nyahpepijat: yang dibina untuk ujian menggunakan kunci "nyahpepijat" generik. Apl ini tidak boleh dikeluarkan kepada umum dan disekat oleh banyak penapis keselamatan.
  3. Kehilangan Kunci: Jika pembangun kehilangan stor kunci peribadi mereka, mereka boleh tidak pernah mengemas kini apl mereka semula. Mereka perlu mengeluarkan apl "Baharu" dengan nama pakej yang berbeza.

Memilih Skim Tandatangan yang Tepat untuk SDK Sasaran Anda

Tandatangan apl secara senyap menyokong banyak keselamatan Android. Setelah perhubungan kunci persendirian/awam mengklik, anda boleh menilai apl yang dimuatkan sisi berdasarkan meritnya dan mengesahkan bahawa perkara yang anda pasang tidak diubah sejak pembangun menandatanganinya. Untuk maklumat lanjut tentang dalaman Android, lihat panduan kepada format XAPK kami.

Kejuruteraan & Didokumentasikan oleh Mst Shaefale Pemaju Utama & Arkitek Pakej Android • Disahkan pada Android 12–15

Mst Shaefale mengekalkan penggabungan XAPK/APKS pihak pelanggan, penghurai manifes binari dan alat tandatangan APK v1+v2 di xapktoapk.com. Lihat arahan atau perubahan OS yang sudah lapuk? Hantar nota editorial.