top of page

Androidのデジタル署名についてまとめ


はじめに

Google Playにアプリをアップロードする際に署名をしていると思いますが、僕は今まで「おまじない」として思考停止で使っていました。同じような人は結構いるんじゃないでしょうか。

そこでGoogle Playでの署名についてちゃんと調べ、まとめてみました。


署名プロセス

署名プロセスの基本は、

  • ファイルを転送する際に

  • 送信側がファイルに署名して転送

  • 受信側が受け取ったファイルの署名を検証

という流れです。


アプリ開発者が作成したアプリがユーザのデバイスにインストールされるまでには2回のファイル転送があります。


  1. 開発者がアプリをGoogle Playにアップロード

  2. ユーザがアプリをGoogle Playにダウンロード


従って、署名-検証のプロセスも2回必要です。



2つの署名プロセス

ここで、もし1と2で同じファイルが転送されるだけならば、2では

I Google Playは特に署名せず検証のみ行い、問題なければ転送

II ユーザはGoogle Playと同じ検証鍵で再度検証

で問題ありません。


しかし、現状のGoogle Playの配信の仕組みでは1と2で転送されるファイルは同じではありません。

1 ではApp Bundleという形式、2ではapkという形式のファイルが転送されます。


これらの違いはリンク先などを参照いただきたいですが、今回の文脈においては

開発者はApp Bundleをアップロードして、Google PlayがApp Bundleからユーザのデバイスに合ったapkを作成して配信する、と理解してください。



アップロード鍵とアプリ署名鍵

話を戻すと、2において転送されるファイルは1で転送されるファイルとは異なるので、別途署名が必要になります。


1において開発者がApp Bundle署名に用いるのがアップロード鍵です。これは開発者が自分で作成、管理します。

ふだんkeytoolsで作っているのはこれです。


2においてGoogle Playがapkの署名に用いるのがアプリ署名鍵です。これはGoogle Playが作成、管理します。



まとめ

まとめると以下のようになります。

  1. 開発者は、アップロード鍵を用いてApp Bundleに署名し、Google Playにアップロード

  2. Google Playは、App Bundleを検証

  3. Google Playは、App Bundleからapkを作成

  4. Google Playは、アプリ署名鍵でapkに署名し、ユーザのデバイスに配信



参考文献

Comments


カテゴリ

あなたの買い物をサポートする
アプリ Shop Plan

iphone6.5p2.png

​いつ何を買うかの計画を立てられるアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

「後で読む」を忘れないアプリ ArticleReminder

気になった​Webサイトを登録し、指定時刻にリマインダを送れるアプリです

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png
bottom of page