Pag-sign ng Android App: Paano Ito Gumagana at Bakit Ito Mahalaga

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

Sa tuwing mag-i-install ka ng app sa iyong Android phone, isang tahimik ngunit kritikal na pagsusuri sa seguridad ang nangyayari sa background. Bine-verify ng iyong telepono ang digital na lagda ng APK package. Ang cryptographic na handshake na ito ang pumipigil sa mga nakakahamak na hacker na "lason" ang iyong mga app gamit ang malware habang tinitiyak na makakapag-push ang mga developer ng mga update nang hindi nawawala ang kanilang pagkakakilanlan.

Kung magsusulat ka ng mga app, ang pag-sign ay isang bagay na kailangan mo lang gawin nang tama; kung gusto mo lang makipag-usap sa Android, isa ito sa pinakakasiya-siyang bahagi ng system na maunawaan. Alinmang paraan, sulit ang kung paano gumagana ang pag-sign ng app sa iyong oras. Sa ibaba ay tinatalakay namin ang teknolohiya, kung paano umunlad ang mga scheme ng pagpirma, at kung paano mo magagawa ang manu-manong i-verify ang mga sertipiko online.

Ano ang matututunan mo sa artikulong ito
  • Bakit kailangang pirmahan ang bawat Android app at kung anong cryptography ang kasangkot (RSA / EC).
  • Ang pagkakaiba sa pagitan ng v1 (JAR), v2, v3, at v4 signature scheme, at kung alin ang dapat gamitin ng iyong app ngayon.
  • Paano nagpapasya ang Android kung papayagan ang isang update batay sa pagpapatuloy ng lagda.
  • Paano hinahayaan ng pag-ikot ng key ang isang developer na baguhin ang kanilang signing key nang hindi sinisira ang mga kasalukuyang pag-install.
  • Paano i-verify ang anumang lagda ng APK sa iyong sarili, sa command line o sa aming verifier na nakabatay sa browser.

Ano ang App Signing?

Sa kaibuturan nito, ang pag-sign ng app ay isang proseso kung saan gumagamit ang isang developer ng Pribadong Susi upang bumuo ng signature block para sa mga file ng kanilang app. Ang kaukulang Pampublikong Susi ay naka-embed sa APK sa loob ng META-INF folder. Kapag sinubukan ng iyong telepono na i-install ang app, ginagamit nito ang pampublikong key upang tingnan kung tumutugma ang lagda sa nilalaman ng file.

Nagbibigay ito ng dalawang pangunahing katangian:

  1. Kawalang pagbabago: Kung binago ang isang byte ng code ng app (hal., ng isang Trojan), hindi na tutugma ang signature sa file, at tatanggihan ng Android na i-install ito.
  2. Katibayan ng Pagkakakilanlan: Kung sinubukan ng isang app na i-update ang isang umiiral na, dapat tumugma ang kanilang mga lagda. Ito ang dahilan kung bakit hindi ka makakapag-install ng na-tamper na Facebook app sa opisyal na app.

Ebolusyon ng mga Scheme sa Paglagda

Patuloy na in-upgrade ng Google ang mekanismo ng pag-sign upang mapahusay ang bilis at seguridad:

Bakit Mahalaga ang Mga Sertipiko para sa Sideloading

Kapag nag-download ka ng APK mula sa isang hindi opisyal na pinagmulan, ang Hashing ng Sertipiko ay ang iyong matalik na kaibigan. Ang isang fingerprint ng certificate (tulad ng SHA-256 hash) ay natatanging kinikilala ang signing key ng developer. Ang bawat app ay nagpapanatili ng parehong signing key sa lahat ng mga update nito, kaya maaari mong ihambing ang fingerprint ng isang APK sa na-publish na halaga ng developer upang makumpirma na ito ay totoo.

Kung pinaghihinalaan mong peke ang isang APK, dapat mo itong patakbuhin sa aming Online na Tagasuri ng APK. Ipapakita sa iyo ng aming tool:

Paano Bine-verify ng Android ang isang Lagda sa Oras ng Pag-install

Ang hakbang na "i-verify ang certificate" ay madalas na binabanggit kaya sulit na talakayin kung ano talaga ang ginagawa ng OS kapag nag-tap ka ng APK at nagpasya ang Android kung i-install ito:

  1. Buksan ang APK bilang ZIP at hanapin ang signing block. Para sa v2/v3 signature na isang structured block kaagad bago ang central directory; para sa legacy v1 scheme ito ay ang mga nilalaman ng META-INF/*.RSA, *.DSA, o *.EC.
  2. Compute SHA-256 digest ng bawat iba pang byte ng APK. Ang signing block ay hindi kasama sa sarili nitong digest; lahat ng iba pa ay na-hash sa mga tinukoy na chunks.
  3. I-verify ang digest ng bawat chunk laban sa mga digest na naitala sa signing block. Kung kahit isang byte ay binago mula noong pirmahan ng developer ang file, hindi tutugma ang mga digest at tinanggihan ang pag-install na may generic na error na "Hindi naka-install ang app."
  4. I-verify na ang signing block mismo ay ginawa gamit ang pribadong key ng certificate. Ang public key ng certificate ay ginagamit upang suriin ang cryptographic signature sa block. Ang isang matagumpay na pagsusuri ay nangangahulugan na sinumang pumirma sa file ay nagtataglay ng pribadong key na ipinares sa certificate na ito.
  5. Ihambing ang fingerprint ng certificate sa anumang umiiral nang pag-install ng parehong pangalan ng package. Kung naka-install na ang package at nilagdaan ang bagong APK gamit ang ibang certificate, tatanggihan ang pag-install gamit ang INSTALL_FAILED_UPDATE_INCOMPATIBLE. Ito ang pangunahing depensa ng OS laban sa pagpapanggap: hindi maaaring palitan ng malisyosong aktor ang iyong bank app ng sarili nilang kopya maliban kung ninakaw din nila ang signing key ng bangko.

Wala sa mga ito ang nagpapatunay na mapagkakatiwalaan ang developer, tanging ang file na iyong ii-install ay byte-pareho sa kanilang nilagdaan at walang ibang partido ang nakialam dito. Ang pagtitiwala sa developer ay isang hiwalay na desisyon, at isa ang gagawin mo sa pamamagitan ng pagpapasya kung aling mga source ang iyong ini-install.

Ano Talaga ang Ibig sabihin ng "Signature Mismatch".

Ang nag-iisang pinakakaraniwang sorpresang tinatamaan ng mga tao kapag nag-sideload ay ang error na "signature mismatch" sa pag-update. Narito ang aktwal na nangyayari:

Dalawang paraan ito nangyayari sa pagsasanay:

  1. Ang third-party na APK ay tunay na mula sa ibang publisher, halimbawa isang "modded" o "patched" na kopya. Ang pagtanggi sa pag-install ay ang tamang pag-uugali; ang pag-install nito ay nangangahulugan ng pagtitiwala sa isang estranghero na may parehong data na nahawakan na ng app ng iyong bangko.
  2. Ang third-party na APK ay isang muling pag-upload ng opisyal na APK, ngunit nilalagdaan ng Google Play App Signing system ang pag-download ng bawat user gamit ang susi sa pag-upload wrapper ng user. Makakakita minsan ang dalawang device ng bahagyang magkaibang signature data para sa parehong konseptong bersyon ng app. Sa kasong iyon, tumutugma pa rin ang fingerprint ng certificate sa ugat; maaari mong i-verify sa aming Tagasuri ng APK.

Kung ang certificate fingerprint tunay ay naiiba sa iyong kasalukuyang pag-install, ang tanging paraan pasulong ay i-uninstall muna ang kasalukuyang kopya (nawawala ang data nito) bago i-sideload ang kapalit, hindi kailanman i-disable ang signature verification.

Pagbuo ng Iyong Sariling Signing Key (Para sa Mga Developer)

Kung gumagawa ka ng mga Android app, kakailanganin mong lagdaan ang sarili mong mga build. Ang karaniwang one-line command gamit ang keytool mula sa isang Java SDK ay:

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

Dalawang bagay na dapat malaman:

Para sa mga sideloaded na pagtatayo ng pagsubok, maayos ang isang unsigned debug keystore; para sa produksyon, gumamit ng password-protected long-validity keystore na naka-store sa offline backup.

I-verify ang App Identity Tulad ng isang Pro

Huwag magtiwala sa mga generic na pangalan ng file. Suriin ang cryptographic na puso ng iyong mga APK sa ilang segundo.

I-verify ang Mga Sertipiko Ngayon

Mga Karaniwang Pikit sa Pagpirma

  1. Mga Sertipikong Pinirmahan ng Sarili: Karamihan sa mga Android app ay self-signed. Hindi tulad ng SSL para sa mga website, walang sentral na awtoridad para sa pag-sign ng Android app. Dapat kang direktang magtiwala sa developer.
  2. Gumagamit ng generic na "debug" key ang Mga Sertipiko sa Pag-debug: Apps na binuo para sa pagsubok. Ang mga app na ito ay hindi dapat kailanman ilabas sa publiko at na-block ng maraming mga filter ng seguridad.
  3. Pagkawala ng Susi: Kung mawala ng developer ang kanilang pribadong keystore, maaari nilang i-update muli ng hindi kailanman ang kanilang app. Kailangan nilang maglabas ng "Bago" na app na may ibang pangalan ng package.

Pagpili ng Tamang Signing Scheme para sa Iyong Target na SDK

Ang pag-sign ng app ay tahimik na nagpapatibay sa maraming seguridad ng Android. Sa sandaling mag-click ang pribado/pampublikong key na relasyon, maaari mong hatulan ang isang sideloaded na app sa mga merito nito at kumpirmahin na ang ini-install mo ay hindi nabago mula noong lagdaan ito ng developer. Para sa higit pa sa Android internals, tingnan ang aming gabay sa format na XAPK.

Ininhinyero at Dokumento ni Mst Shaefale Punong Developer at Arkitekto ng Package sa Android • Na-verify sa Android 12–15

Pinapanatili ni Mst Shaefale ang client-side na XAPK/APKS merger, binary manifest parser, at APK v1+v2 signing tool sa xapktoapk.com. Makita ang isang hindi napapanahong command o pagbabago ng OS? Magpadala ng editoryal na tala.