Edited at

Google Play App Signing

More than 1 year has passed since last update.


内容


  • 準備:APK 署名の仕組み

  • いままでとこれから


    • いままで:app signing key の自己管理

    • これから:Google Play App Signing で管理



  • 作業手順

  • やってみる



APK の署名


  • 端末に APK をインストールするためにはデジタル署名が必要です。

  • Android システムが署名を検証します



仕組み


  • 開発者は pub/priv key-pair を保持


    • apk を priv key で署名

    • apk に pub key を添付(公開鍵証明書)



  • Andorid は apk に添付された公開鍵証明書で署名を検証

  • 署名が valid ならアプリを上書き更新



詳細


  • META-INF/CERT.SF


    • 各リソースパスとその SHA1 が含まれたファイル



  • META-INF/CERT.RSA


    • CERT.SF を署名したファイル(公開鍵も含む)

    • これを使って署名検証




openssl pkcs7 -inform DER -in scene/META-INF/CERT.DSA -noout -print_certs -text




用語


  • app signing key: アプリの署名に使う priv key のこと

  • keystore: priv key のバイナリ形式



何を防ぎたいか


  • APK の改竄

  • 開発者としての証明


    • ⇒ 他者アプリの上書きインストールの禁止





防いでないこと


  • app signing key 保持者の信頼性


    • 証明書は自己発行



  • 新規インストール時のアプリの信頼性



いままで



app signing key の自己管理


  • keystore (priv key) は自己管理

  • 紛失すると apk が二度とアップデートできない



図解

ref: https://developer.android.com/studio/publish/app-signing.html



これから:



Google Play App Signing


  • Google に app signing key を預ける

  • メリット


    • Google の最高セキュリティレベルで管理される

    • 鍵を紛失する心配をしなくていい

    • Google が署名できるので配布時に最適化可能





図解



ref: https://developer.android.com/studio/publish/app-signing.html



注意点など


  • 取り消せない



Step1: 利用規約に同意


  • Play Console を開く

  • Google Play App Signing の利用規約に同意する



Step2: App Signing Key のアップロード


  • Google の提供ツールで app signing key 自体を暗号化

  • Play Console からアップロード



Step3: アップロード鍵の登録


  • アップロード用の鍵(keystore)をローカルで生成

  • 公開鍵証明書を Play にアップロード

  • APK アップロード時にはこのアップロード鍵(keystore)を使う



アップロード鍵について


  • revoke 可能

  • 再発行可能(ただし手続きはかなり厳重)



やってみる


  • 実際にやってみる