セキュアなAndroidアプリ開発のため留意すべきこととは
では、どのように方法でAndroidアプリを作っていけばセキュアになるのか。
2012年4月から一般社団法人として活動している「日本スマートフォンセキュリティ協会(JSSEC)」が刊行している「Androidアプリのセキュア設計・セキュアコーディングガイド」は、通信キャリアや総務省が推奨するガイドラインのデファクトスタンダードだ。
作成はJSSECのワーキンググループ「セキュアコーディンググループ」が担当し、グループリーダーはSDNAの松並勝氏が務め、奥山氏もガイドの執筆に関わっている。
ガイドの初版は2012年に刊行され、Android 6.0対応の第6版は2016年2月に公開された。その中から奥山氏は以下の3項目について紹介した。
- 新しいPermissionモデル(Runtime Permission)
- 指紋認証によるユーザー認証
- Notification Visibility
まずPermissionモデルについて。Permissionとはアプリにネットワーク通信や位置情報の提供などを許可することを意味する。従来はアプリのインストール時にリストを見せられてOKを押すと、それ以降はアプリの機能がすべて使えることになっていた。これがAndroid 6.0では、アプリの実行時にユーザーの同意を得る方式に変わった。これはiPhoneのiOSと同じになったともいえる。
新しいPermissionモデルは、保護レベルが危険な許諾のみに影響を与えている。Permissionグループ単位での権限管理になっており、同じグループに属するPermissionは一度の要求ですべて承諾される。
驚くのは、ユーザーによる許可の取り消しが可能になったことだ。iOSではOS自体に許諾機能が組み込まれているが、Androidでは、開発者が意識的に権限要求用のAPIを呼び出す必要がある。また許諾を得られなかったり、許諾を取り消されたりした場合のエラー処理が必須だ。
奥山氏は、「危険レベルのPermissionが必要なアプリが落ちないようにするための最低限度の対応」として以下のスライドを紹介した。
次に指紋認証について。個々のアプリから指紋認証を使えるようになった。いわゆるログインやパスワード対応、それ以外にも使うことができる。利用には以下の条件がある。
- Android 6.0(API Level 23)以降
- Fingerprint機能が端末にないと使用不可
- ロックが設定されていないと使用不可
- 指紋が登録されていないと使用不可
奥山氏は指紋認証の特徴として、以下の点を挙げた。
まず良い点は、入力が楽になることだ。パスワードを覚えなくていいし、漏えいの危険も無くなる。また端末の指紋認証センサーまでアクセスしないと解除できないので、攻撃を受けにくい。
しかし悪い点もある。秘匿困難性や人工物による認証、認証制度などの問題から、強度はパスワードよりも弱いと言われている。また指を大きく傷つけてしまうと認証できなくなる可能性がある。換えがきかないものを認証の鍵として使っているため、非交換性という生体認証特有の弱点がある。課金や決済といった重要な情報・機能を扱う際は、かならず他の認証方法と併用した方がいい。
また正しい暗号の使い方も理解する必要がある。弱い暗号を使ってしまうと、弱い鍵を使う結果につながるので、注意が必要だ。
最後はNotification(通知)だ。Android 5.0から変わった点として、画面ロック中にも画面上にNotificationを出せるようになった。画面ロック中にメール着信が分かるなど、ユーザーの利便性を上げるために、簡単なメッセージが見られるようになっている。
単純に何でもNotificationを出すというわけではなく、Public、Private、Secretの三種類のVisibilityを設定できるようになっている。Publicはすべてのロック画面上でNotificationが表示されるが、Secretでは表示されない。Privateでは、画面ロック中にユーザーに見せる情報と、ロック解除後に見せる情報を切り分けて設定することが求められる。
最後に奥山氏は「Android 6.0でも脆弱性はまだまだ残っている。ガイドブックなどを読み、意識的にセキュアなアプリ開発をしていただきたい」と語り、セッションを閉じた。
お問い合わせ
ソニーデジタルネットワークアプリケーションズ株式会社