昨天我們介紹了數位簽名的原理與 Android 簽名驗證,今天分享如何對APP進行自我簽名。
在 Android Studio 中,可以透過「Generate Signed App Bundle / APK」選項來簽署應用程式,或使用 jarsigner 或 apksigner 工具進行簽名。
以下以 apksigner 為例,展示如何簽署一個 APK 檔案:
echo -e "password\npassword\njohn doe\ntest\ntest\ntest\ntest\ntest\nyes" > params.txt
cat params.txt | keytool -genkey -keystore key.keystore -validity 1000 -keyalg RSA -alias john
zipalign -p -f -v 4 myapp.apk myapp_signed.apk
echo password | apksigner sign --ks key.keystore myapp_signed.apk
說明:
首先建立 params.txt 檔案,預先填寫 keytool 在生成金鑰對(Key Pair)時所需的資訊,以自動回答交互式問題。若僅用於測試,密碼(password)和名稱(name)可簡單填寫。
使用 keytool 生成 RSA 金鑰對,並儲存至 key.keystore 檔案中。
使用 zipalign 對 myapp.apk 中的未壓縮檔案進行 4 位元組對齊,使其更高效地映射至記憶體(mmap),減少記憶體使用量並加速載入速度。
最後使用 apksigner 對對齊後的 myapp_signed.apk 進行數位簽署。
驗證啟動(Verified Boot)是 Android 的一項安全機制,旨在確保作業系統(OS)的完整性。
Android 使用特殊金鑰簽署並驗證 Boot Images,確保開機時先檢查系統完整性,確認簽名是否有效,然後才正常啟動。此外,Android 還會檢查 Rollback Protection,防止載入低於儲存版本號的系統版本。
Eio 模式
Eio 模式是 Android 設備在驗證啟動(Verified Boot)過程中,若偵測到儲存區存在未經授權的修改時,顯示的一種警告畫面。其主要目的是提醒使用者,設備可能已被篡改。