Google I/Oが開催されAndroid 4.1がリリースされました。ざっと見た感じ5.0と付けるには、ちょっと機能が少なすぎだから4.1なので納得感です。Keynoteでも4.1の話の時は全然盛り上がってませんでしたしね

Android Security本を出版したおかげで、なんだかセキュリティ周りは一通り見ておく必要が出てきておりますので、今後調査するのを忘れないようにメモも兼ねて、セキュリティに関連する変更・追加箇所について、少し書きたいと思います。

参考URL

App Encryption

Starting with Android 4.1, Google Play will help protect application assets by encrypting all paid apps with a device-specific key before they are delivered and stored on a device.

Google Playで配信される有料アプリは、端末固有のキーにより配信される前に暗号化されてきて、ほら安心ということらしいです。

気になる点

  • assetsってassetsディレクトリの事かな?そこに著作権的にコピーされたら困るファイルなどを置くのがいいよということなんでしょうか?
  • device-specific keyって何よ!いつ生成されるのかな?google accountとはひもづかないのかな?どこに保存されるのかな?と色々妄想が膨らみます。
  • Google Playのソースは提供されないので、とりあえず、4.1で有料ソフトを買った時にダウンロードされるファイルと、4.0でダウンロードされるファイルを比べて何がどう違っているのか、実際に試してみる必要があります。

Isolated services

By specifying android:isolatedProcess=”true” in the tag, your Service will run under its own isolated user ID process that has no permissions of its own.

If set to true, this service will run under a special process that is isolated from the rest of the system and has no permissions of its own. The only communication with it is through the Service API (binding and starting).

サービスに、isolateProcess=true付けると、パミッション持っているアプリでもそのサービスは、パミッション持ってない事になって動くってことでしょうか?何に使うのかちょっと想定できないので、Android 4.1のソースがきたら何に使っているのかを見てみます。

READ_EXTERNAL_STORAGE

外部ストレージに書き込みパミッションはあったのですが、今まで読み込みパミッションは存在しませんでした。
ようやく追加されたかーと思ったのですが、4.1ではこのパミッションを持っていようが、もってなかろうが、外部記憶装置にアクセスできます。今後のために用意した!ということです。
1.6の時に、外部ストレージの書き込みに関するパミッションが追加されました。その時はいきなり追加されて、パミッションが付いてなくても、1.5端末だと書き込できるよ仕様だったのですが、今回は少し時間をおく戦法みたいです。

確かにいきなりやると、動かないソフトが続出しそうですから、移行期間ということでしょうか、もしくは政治的要因とか…

ちなみに、端末の方の、「設定」→「開発者向けオプション」に「SDカードの保護」(アプリによるSDカードの読みトレイ権限のリクエストが必要ってのが増えました。これをクリックすると以下のようなダイアログが表示されます。(拾ってきたイメージで試したら、USBストレージの保護と表示されました(^^)
開発に使えますし、有効にすることで、SDカードを読みに行っているアプリの発見ができますね。

実際にREAD_EXTERNAL_STORAGE権限なしに、SDカードにアクセスに行ったときに表示されるダイアログを出そうと思って、弊社のtRSSRederで試してみましたが、何もダイアログでません。

WRITE権限を持っているからでないのか、miniSdkやtargetSdkが関連するのか… 断定するにはテストプログラムかかないといけないので、とりあえず調査はここまででペンディングです。

READ_USER_DICTIONARY WRITE_USER_DICTIONARY

ユーザ辞書の書き込み・読み込み権限、IMEなんかで使いますね

特に感想なし

READ_CALL_LOG WRITE_CALL_LOG

これはちょっと嬉しい権限です。
ここに詳しい解説があります

You must explicitly request the READ_CALL_LOG and/or WRITE_CALL_LOG permissions; access to the call log is no longer implicitly provided through READ_CONTACTS and WRITE_CONTACTS.

ということで、今までは通話記録を取るには、電話帳のデータを取るパミッションを必要をしてました。READ_CONTACTSは、できる事の範囲が広すぎるので分離されるということです。アンドロイドのパミッションがこういった方向に行ってくれると嬉しいです。通話記録だけ読み込むソフトは、今後はこちらを使用した方が良いと思います(バージョン問題はありますが…)

BIND_ACCESSIBILITY_SERVICE権限追加

アクセシビリティ関連が変更になりましたので、ついでに追加されたようです。

感想

ぐっとくるAPIが今回はなかった、残念、4.0の時はVPNまわりにぐっときたのに…

Developers Siteのデザインが変わって、なれてないから、色々調査するのに時間がかかる…

ブログ内の関連する記事