内容
- 準備: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 可能
- 再発行可能(ただし手続きはかなり厳重)
やってみる
- 実際にやってみる