Android6.0で削除、追加されたパーミッション(最終版)

A+ a-

Android 6.0で変更になったパーミッションに続いて、削除、追加されたパーミッションです。
前回と同じく、Nexus5X,Nexus6Pで吸い出した物です。


Android 6.0でプロテクションレベルが変更になったパーミッション(最終版)

A+ a-

Android 6.0でRuntime-Permissionモデルが導入されました。このモデルはユーザーに許可を求めるダイアログを出すので、あまり出すとユーザにとって、うざいと思われるのを嫌ってか、多くのパミッションが、dangerousからnormalに変更になりました。

normalパミッションは、はく奪したりできないし、ユーザに知られることなく(ツールを使えば見れますが)使う事ができます。
プライバシー情報を取得可能な、normalパミッションは本当にいやだなーと思います。

ググるとAndroid M Preview版の時の物を公開されている方がいらっしゃいますが、それから変更も加わってますし、Googleのドキュメントも信用できませんので、最終版という事で、Nexus5Xm,Nexus6Pから吸い出した物をアップします。(android. permissionと、com.android)


Androidアプリセキュア開発セミナーを開催します

A+ a-


半年にごとにセキュアスカイ・テクノロジーさんと共催しているAndroidアプリセキュア開発セミナーのお知らせです。
今回はいつもの内容に加えて、Android 6.0で大きく変更されたパーミッションまわりのお話などもさせていただきたいと思っています。

概要
日時:2015年12月9日(水)10:00-17:00 (9:30受付開始)
会場:セキュスカイ・テクノロジー社セミナールーム(PMO 神田司町2F)
対象:Androidアプリケーションの企画、設計、開発のリーダー、およびマネージャ
費用:50,000円/人(税抜き)

詳細はこちら

ABCD金沢の講演資料 (Android6.0のセキュリティ)

A+ a-

2015/11/22-/23日に金沢にて、ABCD 2015 Kanazawaが開催されました。(ハッシュダグ #ABCD2015K)

来場者募集をした当初は、参加登録者約20名程度でとまっておりましたが、最終的には80名となり、会場も結構賑わい大盛況でした。



22日にAndroid Securityについて講演させて頂きました。
その発表資料となります。
ダウンロード(PDF): Android 6.0のセキュリティ事項

私も色々な講演を聞けてとても有意義な二日間でした。
ありがとうございました。

2015/11/23
追記:上記PDFですが、誤ってアクセス制限がかかっていました。
解除しましたのでどなたでもダウンロード可能です。


Android6 互換モード(2):カメラAPIへのアクセスはRuntimeException

A+ a-

Android6.0でランタイムパミッションモデルについて、調査した事項を色々と情報共有しています。
先日の「ランタイムパミッションの互換性(1)」の記事のタイトルに1とついていますが、今回はその2で、カメラAPIの互換モードについてです。互換モードとは、一言で言えば、「Android6.0以上の端末で、インストールタイムパーミッションモデルで実行しているアプリケーションが、端末の設定画面から、特定のパーミッションをはく奪された時の事を言います。」詳しくは「ランタイムパミッションの互換性(1)」を参照してください。

結論から言えば、飛びます。カメラアプリは要修正です。Android Developer Siteでは、互換モードでは、ContentProvider系では0件を返したりして、それなりに動くと書いてありますが、何故かカメラは飛びます。


以下調査結果です。

CheckSelfPermissionの注意事項

A+ a-

Android 6.0(マシュマロ)でランタイムパミッションが導入され、ランタイムパミッション周りのメソッドが新規追加されました。
主に以下のメソッドに対して、アンドキュメント動作やサポートライブラリを含めると色々と注意事項があるので、個々に解説したいと思っております。

  • checkSelfPermission()
  • shouldShowRequestPermissionRationale()
  • requestPermissions()

CheckSelfPermission

 int checkSelfPermission (String permission)

アプリケーションが指定したパミッションを持っているかを判断するメソッド

  • パーミッションが取得済の場合は、PERMISSION_GRANTED
  • パーミッションが未取得の場合は、PERMISSION_DENIEDを返す。
  • 互換モードの時(設定→拒否)の場合は、PERMISSION_DENIED_APP_OPを返す。(PermissionChecker.checkSelfPermissionのみ)
(※ 互換モードに関しては、ランタイムパミッションの互換性(1)を参照してください)

またcheckSelfPermissionはクラス違いで3つ存在しそれぞれ使い分けをします。

ランタイムパミッションの互換性(1)

A+ a-

Android OS 6.0(Marshmallow)でランタイムパーミッションが導入されましたが、Android OS 6.0端末を持っているのは、ほんの一握りのユーザです。現状ではAndroid6.0以下も考慮しつつアプリケーションを作成していく必要があります。
ランタイムパーミッションの互換性及び注意事項について、以下の二点に関して記載していきたいと思います。

  • 互換モードの動作
  • サポートライブラリ―

互換モードとは


互換モードとは、Android6.0以上の端末で、インストールタイムパーミッションモデルで実行しているアプリケーションが、端末の設定画面から、特定のパーミッションをはく奪された時の事を言います。(わかりにくい)

※「互換モード」という用語は、わかりにくくあまり良くない気もしますが、Developer Previewの説明でそのような記載がGoogleにあり、また良い言葉が見つからないので、互換モードという言葉を以後使いたいと思います。

まず、TargetSdkVersionと実行環境とインストールタイムパーミッションモデルとランタイムパーミッションモデルについておさらいをしたいと思います。

Android6.0でMODE_MULTI_PROCESSが非推奨になったので、プリファレンスのモード指定は、MODE_PRIVATE一択になりました。

A+ a-


Android6.0 (Marshmallow)で、MODE_MULTI_PROCESSが非推奨になりました。
http://developer.android.com/intl/ja/reference/android/content/Context.html#MODE_MULTI_PROCESS

MODE_MULTI_PROCESS、プレファレンスファイルを作成する時などに、getPreferences等のメソッドの引数に指定されるファイルアクセスモードで、AndroidOS3.0の時に新しく追加され、複数のプロセスから同じプレファレンスファイルにアクセスする時に使用します。

今回、以下のような説明が記載されていました。

API Level23で非推奨
MODE_MULTI_PROCESSは、異なったプロセス間での同時修正を両立するためのメカニズムを提供しません。さらにアンドロイドの一部のバージョンでは確実に動作しません。
アプリケーションは、これを使用しないでください。その代りにContentProviderのようなクロスプロセスでのデータ管理手法を使用してください。
....
確実に動作していなかったようです。

アンドロイドアプリからデバイスロック画面の呼び出し: Confirm Credential

A+ a-



アンドロイドもう8歳らしいです。昔からアンドロイドをやっていた方は、一度はアプリからデバイスロック画面を使って、本人認証できないかと思った事があるかと思います。「権限がなくてできません」と怒られてできなかったのですが、Android 5.0からできるようになってました。Android 6.0のConfirm Credentialを見てて、該当メソッドが、API Level21と記載されており、ええ!!と思い動作確認したら、5.0でも動きました。
多分私以外にも同じような人がいると思いますので、「Confirm Credential」ご紹介です。

   デバイスロック画面



11月末に、Androidセキュリティの講演&展示しに金沢に行ってきます。

A+ a-


2015年11月22日(日)・23日(月祝)に石川県金沢市でアンドロイドの開発者イベント「ABCD 2015 Kanazawa – Android Bazaar and Conference Diverse」が開催されます。
日本アンドロイドの会では展示+講演のイベントを年2回東京にて開催しておりますが、そのミニ版!金沢が終わった後はこの経験を活かし他の県でも実施ってことになるとうれしいです。

22日にAndroid6のセキュリティに関してお話をさせて頂きますが
-Android6.0のRuntimePermissionの説明。
-Androidのセキュリティ全体での注意点
-最近のよくある脆弱性
といった内容になるのではないかと思っています。
(まだ、原稿書いてないです)

RiskFinderの展示もさせて頂きます。自分の検査したいアプリ等持ってきていただければ、こっそり検査しちゃいます。

VRハンズオンやRoBoHon展示などもあり大変充実した内容となっています。
金沢近隣でアンドロイド開発に興味をお持ちの方、ぜひご参加ください。参加は“無料”です。
事前エントリー&詳細はこちら>>

ちょっと、集客?に苦しんでいるようです。情報拡散にお手伝い頂けましたらうれしいです。

名称

ABCD 2015 Kanazawa - Android Bazaar and Conference Diverse -

日程

11月22日 (日) 9:00-20:30
11月23日 (月祝) 9:00-19:00

指紋認証とエミュレータコマンド

A+ a-

Nexus5Xが手もとに届き、ようやく指紋認証に関してきちんと調査する環境が整いました。
調査結果を色々と情報共有したいのですが、なかなか調査も進まないため、
Androidの会10月定例会で指紋認証の話でお話した、エミュレータバグの話はあまりネット上に記載がありませんので本日の記事にしたいと思います。

 Android6.0の指紋認証機能に対応した機器はまだ少数ですので、なかなかテストが難しいと思いますが、エミュレータで指紋認証のテストをすることが可能です。
Android Developer Siteでエミュレータによる指紋認証の記載はあまりなく、以下の2か所にさらっと書いてあるのみです(翻訳するまでもない内容です)
 実際にどのような感じで動作するのか動かしてみましたので、短いですがエミュレーターでの指紋認証について説明したいと思います。


スマートフォン&モバイル EXPO【秋】2015 にてRiskFinderが出展されました。

A+ a-

2015年10月28日〜30日まで、幕張メッセにて「スマートフォン&モバイル EXPO【秋】2015」が開催されました。当日の状況(主催者さん の情報より)

諸般の事情により、弊社は今回出展していませんが、株式会社システナ様より弊社が脆弱性診断エンジンを提供している「 RiskFinder」が出展されました。
「RiskFinder」は、Androidアプリケーションの脆弱性を診断できるWebサービスです。
今回は、このシステナ様の出展の模様をお伝えしたいと思います。