Android
GooglePlay

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 可能
  • 再発行可能(ただし手続きはかなり厳重)

やってみる

  • 実際にやってみる