読書メモ/「Android Security 安全なアプリケーションを作成するために」 (v1)
読書メモ / 「Android Security 安全なアプリケーションを作成するために」 (v1)
id: 1052 所有者: msakamoto-sf
作成日: 2012-01-15 22:35:29
カテゴリ: Android セキュリティ 読書
すべてのAndroidプログラマにオススメの一冊です。
自分もAndroidプログラミングを勉強していて、いくつかセキュリティ面も調査してきました。
本書籍で新しく勉強になった点など、以下、読書メモです。
- "3.5 固有識別子"(p29 - )
- アプリ側で生成したUUIDを識別に使用するのがオススメ
- 以下は非推奨
- READ_PHONE_STATE必要:IMEI, IMSI, ICCID
- READ_PHONE_STATE不要:シリアルNo, ANDROID_ID
- "4.2.1 ディレクトリ" p42以降:アプリケーションをSDカードに移動→apkがSDカードに移る。Audio/Videoなど容量の大きいリソースを抱えたAPKの場合は効果的。データやファイルなどは"/data/data"以下のままのようだ。
- apkをSDカードに配置させるには、p45の"SDカードインストール"も参照。
- p83 : "5.5.2 プリファレンスメソッド" : 3種類もある・・・
- Context.getSharedPreferences() : MODE指定可能
- PreferenceManager.getDefaultSharedPreferences() : MODE指定不可、MODE_PRIVATE固定
- Activity.getPreferences() : MODE指定可能
- p89 : データベースファイルの保護 :
- SQLiteDatabase.openOrCDreateDatabase() : MODE指定不可、但し 644 でDBファイルが作成されるので要注意(他アプリからも読取は可)
- Context.openOrCreateDatabase() : MODE指定可能
- SQLiteOpenHelper : MODE指定不可、MODE_PRIVATE固定
- "6.5 疑われやすいパーミッションの組み合わせ" (p117 - )
- パーミッションの「組み合わせ」に対して、疑われてしまいそうなペアを示してくれているので、開発したアプリがこれらに該当する場合はユーザーへ分かりやすい形で明記する必要がある。
- "7.6 コンテントプロバイダのパーミッション設定事例" : 事例ベースで解説してくれているので分かりやすい。
- コンテントプロバイダのパーミッションは、他(Activity/Receiver/Service)より複雑なので、最終的にこうした事例ベースに当てはめた上で検討することになりそう。
- "OSによるインテントデータの隠ぺい" (p153 - ) : log上でIntent内容がマスクされるか否か、抜き書き
- "tel:" マスクされる
- "smsto:" : マスクされる
- "mailto:" : アドレスはそのまま表示される
- "http://" : URLとクエリがそのまま表示される
- "geo:" : そのまま表示される
- "9.2.3 ProGuardの使用法" (p199)
- "アンドロイドSDKの注意点" : まさにこれに嵌ってしまった・・・。
- SDK r16 にアップデートしたら再発。SDKェ・・・。
- "動作している環境からパスワードを生成し、使用する" (p233 - )
- 当然ながら、ここに掲載されているサンプルコードをそのまま使うのではなく、改造して使う。
- ProGuardのセクションでは特に記されていないが、SDKのクラス・メソッドの呼び出しは難読化されないので、例えばPBEKeySpec()の呼び出し箇所から変数を逆に辿り、パスワードが解析される危険性は残る。(とはいえ、カジュアルハックの防止には効果がありそう)
以下は、本書を読んでいて不足感を感じた点です。
- ログ出力についての記述 : android.util.Log#v(), d(), i() ... はisLoggable()と組み合わせないと、なんだけど、自分の認識以上に常識化してるのかな?あるいは、そもそも秘密情報はデバッグログといえども出力しない、というのは当たり前の前提になっているのだろうか。
- アプリケーションに焦点を絞っているから仕方ないとは思うが、サーバとの通信(HTTP, HTTPSを使ったAPI呼び出しなど)関連のトピックが無い。
- 例1:HTTPSを使うときの証明書の扱い
- Androidにインストール済みのルート証明書
- 自己署名証明書の危険性、などなど
- 例2:OAuthの2-legged/3-leggedで使われるConsumerKeyの取り扱い
- 他、サーバサイドと絡めたtokenの適切な扱いなど。
上記のような不足感はあるものの、Androidアプリに特化した「セキュア開発」本としては日本で恐らく第一であり、内容的にも必要十分と思われます。Androidアプリの開発者全てにオススメできる一冊です。
プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2012-01-15 22:36:31
md5:ebc5ac52acd1699695a90fd38e18c51d
sha1:94c6b0be08cba06ec1ab05c69169ce58b858b3d4