Androidのデジタル署名についてまとめ
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に署名し、ユーザのデバイスに配信



参考文献

あなたの買い物をサポートする
アプリ 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