本文へスキップ
ecdsa.com

APK 署名スキーム(v1〜v4)

v1 の JAR 署名、APK 署名ブロックに格納するファイル全体の署名である v2(Android 7.0)と v3(Android 9、鍵のローテーション)、対象を絞ったローテーションの v3.1(Android 13)、増分インストール用の v4(Android 11)からなる、Android のアプリ署名形式です。
別表記APK signingAPK Signature Scheme v2APK Signature Scheme v3apksigner

v2 は、署名ブロック自体(ブロック ID 0x7109871a)を除く APK の内容全体に署名するため、どのような改変も検出でき、検証も v1 のエントリーごとの JAR チェックより高速です。v3(ブロック ID 0xf05368c0)は、ローテーションを証明する系統(proof-of-rotation lineage)を追加し、アプリが新しい署名鍵に移行できるようにします。v3.1 では、ローテーションを新しいプラットフォームバージョンだけに適用できます。v4 は、ADB の増分インストール用にマークルツリー署名を別の .idsig ファイルに格納し、v2 または v3 の署名も必要とします。

apksigner sign と apksigner verify --print-certs はすべてのスキームに対応しています。Google Play アプリ署名では、アプリ署名鍵を Google 側で保管し、開発者は別のアップロード鍵でアップロードします。アップデートは同じ鍵か、ローテーション後の後継鍵で署名しなければならず、そうでなければインストールに失敗します。APK 署名インスペクターは、スキーム、署名者、系統を一覧表示します。

規格と参考文献

すべての用語