Category Archives: Android Security

「Android Security 安全なアプリケーションを作成するために」第27回(8/6)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.280-298

第11章 セキュリティに関連する機能

  • 11.2 アカウントマネージャ
    • 11.2.8 Authenticatorの作成例 (p.280 アプリケーションを構成するファイル ~)
      • p.280 リスト11-14
        <activity>の属性、android:exculdeFromRecents="true"は、このアクティビティがサービスから起動されるアクティビティであり、最近起動されたアクティビティリストに表示したくないため。
      • p.281 リスト11-16
        パスワード入力用のEditTextのinputTypeは、”text”だと入力文字が見えてしまう。”textPassword”にする方が良い。
    • 11.2.9 セキュリティに関する注意点
  • 11.3 まとめ

付録A セキュリティ対策チェックリスト

付録B 用語集

 

読了

Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第26回(8/2)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp.270 – 279(次回はp280 アプリケーションを構成するファイル から)

第11章 セキュリティに関連する機能

  • 11.2 アカウントマネージャ
    • 11.2.5 AccountManagerに必要なパーミッション
    • 11.2.6 AccountManagerの使用例
      • リスト11-11 l.6
        uses-sdkandroidはandroidの前にスペースが必要
      • リスト11-13
        • mActivityにthisを入れておいてダイアログのOnClickListenerで使用しているが、MainActivity.thisで参照することもできるはず
        • mCallbackを定義している箇所
          <Bundle>とmCallbackの間にスペースが必要
    • 11.2.7 Authenticatorとは
    • 11.2.8 Authenticatorの作成例
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第25回(7/30)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)

範囲 pp.257-270

第11章 セキュリティに関連する機能

  • 11.1 DeviceAdministration
    • 11.1.4 APIの概要 (p.257 解除パスワードの有効期限の設定から)
      p.259 setMaximumFailedPasswordsForWipe()の第2引数の許容回数について、いくつまで設定できるのだろうかという話題がでましたが、型がintなのでintの上限まで可能です。
  • 11.2 アカウントマネージャ
    • 11.2.1 アンドロイドのアカウント管理機能
    • 11.2.2 端末に登録されているアカウント情報
    • 11.2.3 アカウント管理機能の仕組み
    • 11.2.4 AccountManagerの使用法
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第24回(7/26)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.245-257

第10章 暗号化手法

  • 10.6 まとめ
    • p.245 2.の2つ目の項目
      AES(共通鍵暗号方式)なのに、「秘密鍵の管理に注意する。」って何?
      → 単に、「鍵の管理に注意する。」と言いたかったのではないか。

第11章 セキュリティに関連する機能

  • 11.1 DeviceAdministration
    • 11.1.1 Device Administrationとは
      • p.248 表11-1
        既存パスワードを知らずにアプリからパスワード変更ができるのはあぶなそう。
        → p.250 別途デバイス管理者権限を有効にしないとダメ。
        → 一般の人は、「デバイス管理者」といってデバイスがスマートフォン等を表すことや、管理者が管理が許可されるアプリを表していることはわからないだろう。図11-3のアプリ名やアプリの説明で、「あなたをこのスマートフォンの管理者に設定」みたいなことを書けば、簡単にだまされてチェックしそう。
      • p.248に関連して
        パターンを忘れたときは、googleアカウントを使って解除する方法があるらしい。
    • 11.1.2 利用シーン
    • 11.1.3 デバイス管理者権限の有効化
    • 11.1.4 APIの概要 (p.257 リスト11-7まで)
      • p.253 リスト11-3 l.2
        putExtra()で設定している、mDeviceAdminSample の型は何?
        → ComponentName (p.255 リスト11-5)

        • ComponentName のnew()で渡している、DeviceAdminSampleは何?
          → DeviceAdminReceiverのサブクラス。(p.252 リスト11-1 AdnroidManifest.xmlの <receiver android:name で指定している。)
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第23回(7/23)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp.231 – 244

第10章 暗号化手法

  • 10.4 AES暗号方式の使用例
    • 10.4.1 暗号化
      • リスト10-4
        インストールされた日時を取得する際は自身のApplicationInfoのパッケージ名をもとにPackageInfoを取得しているが、アプリケーションのパッケージ名は引数で取得したコンテキストから取得している。
      • 236ページから237ページにかけてプロバイダの話が出てくるがコードには出てきていない。どうやって指定する?
        →Cipher.getInstanceメソッドにはプロバイダ名(String)やプロバイダ(Provider)を引数としてとるものがありました。
    • 10.4.2 復号化
  • 10.5 セキュリティサービス
    • 10.5.1 セキュリティサービスの取得
      • 本文にある「リソース10-10」は「リスト10-10」の誤記でしょう。
    • 10.5.2 セキュリティサービスの一覧
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第22回(7/19)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)

範囲 pp.220-230

第9章 アプリケーションの保護

  • 9.3 Android Market Licensing Service
    • 9.3.3 アプリケーションの開発と公開 (p.220 「難読化の実装」~)
      • p.220 「難読化の実装」のl.4 ミスタイプ
        ServerManagerdPolicy → ServerManagedPolicy
      • p.221 中程
        OS2.2以前とOS2.3移行の間でANDROID_IDがダブることはあるのだろうか?
    • 9.3.4 テスト
      • p.224 「アプリケーションのアップロード」のl.1
        「アプリケーションをアップロードしなければテストできませんが、…」とあるが、表9-3を見ると公開用アカウントではできるようなので、テスト用アカウントでの話だろう。
      • p.224
        公開用アカウントとテスト用アカウントがあるが、テスト用アカウントではレスポンス値を変更できず、またテスト用アカウント毎に別のレスポンス値を設定できないのであれば、公開用アカウントを知らずに異なるレスポンス値のテストができないので、結局テスト担当者も開発用アカウントを知らないとテストできないのではないか。
    • 9.3.5 ライセンスサーバのレスポンスコード
      • p.225 表9-4
        • レスポンスコードの表記が大文字小文字まじりだったりアンダースコアがあったりなかったりする。
          Setting Up for Licensing | Android Developers にあるテストレスポンス設定の絵では、全て大文字、アンダースコアありで書いてある。また、Licensing Reference | Android Developers では、Respond Normallyは無いがそれ以外は同様に大文字、アンダースコアありで書いてある。
        • LICENSED_OLD_KEYのエクストラにGTが二つ書いてある。
          → 1つはGRの間違い。
        • 説明中の、「サーバへのリトライは行わない」とか「リトライの最大回数に達するまでライセンスチェックを繰り返す」とかは、勝手にそうなるわけではなくクライアントアプリでそのようにすべきだという意味。
  • 9.4 まとめ

第10章 暗号化手法

  • 10.1 Javaの暗号化アーキテクチャ
  • 10.2 よく使用される暗号方式
    • 10.2.1 AES暗号
    • 10.2.2 RSA暗号
  • 10.3 アンドロイドで使用できる暗号方式

 

Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第21回(7/16)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp.205 – 220「難読化の実装」の手前まで

第9章 アプリケーションの保護

  • 9.2 ProGuard
    • 9.2.5 ProGuardが生成するファイル
      • リスト9-9、9-10
        スタックトレース1行目のactivityroguardtargetはactivity proguardtargetの誤り?
    • 9.2.6 難読化の限界
  • 9.3 Android Market Licensing Service
    • 9.3.1 Android Market Licensing Serviceとは
      • Google Playのヘルプを見たら、Google Play ライセンス サービスと表記されていました
    • 9.3.2 ライセンシングの流れ
    • 9.3.3 アプリケーションの開発と公開
      • 表9-2
        値にアンダーバーがあったりなかったりしている。実際の画面でもこうなっている?
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第20回(7/12)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)
範囲 pp.195-205

第9章 アプリケーションの保護

  • 9.1 ソースコードの解析
    • 9.1.2 ソースコード解析の流れ (p.195 「改変」から)
      p.196 APKの再作成でapktool -v b の引数は対象のディレクトリとapkファイル名のようですが、間のスペースがありません。
      p.197 のjarsignerのコマンドの例でも、いくつかスペースが抜けてしまっています。
  • 9.2 ProGuard
    • 9.2.1 ProGuardとは
    • 9.2.2 ProGuardを使用するときの注意点
    • 9.2.3 ProGuardの使用法
    • 9.2.4 ProGuardの適用後のコード
Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第19回(7/9)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.185-194

第8章 インテント

  • 8.5 サービスのセキュリティ
    • 8.5.3 サービスのセキュリティ
  • 8.6 まとめ
    • p.186 アクティビティのアイテム3つ目、メソッド名間違い
      onSavedInstanceState() → onSaveInstanceState()。
      ちなみに、onCreate()などのBundle型引数の名前は、以前保存したものなのでsavedInstanceState

第9章 アプリケーションの保護

  • 9.1 ソースコードの解析
    • 9.1.1 解析対象のアプリケーション
    • 9.1.2 ソースコード解析の流れ (p.195 「改変」の前まで)
      • p.191 デコード例 1行目
        APKファイル名が、p.190で取り出したときと変わっている。

 

Category: Android Security

「Android Security 安全なアプリケーションを作成するために」第18回(7/5)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp.174「送信先を指定したブロードキャスト」 – 185

第8章 インテント

  • 8.4 ブロードキャストのセキュリティ
    • 8.4.2 ブロードキャストの送信
    • 8.4.3 ブロードキャストの注意点
      • リスト8-37
        act=で…ACT_SEND_BROADCAST_PERMISSIONとあるけどPERMISSIONはおかしいのでは?
      • p.176 ブロードキャストの優先度に負の値を指定した場合の優先度はどうなるのだろう?
        android.content.IntentFilterにSYSTEM_LOW_PRIORITYがあり、値は-1000でした。
        アプリはSYSTEM_LOW_PRIORITY以下の値を使用してはいけないようです。
      • p.177 l.2 sigunature
      • リスト8-42
        • android.bluetooth.device.action.BOND_STATE_CHANGED
          接続状態?
        • android.hardware.usb.action.USB_ACCESSORY_ATTACHEDが2つある
          android.hardware.usb.action.USB_ACCESSORY_DETACHEDの間違い?
  • 8.5 サービスのセキュリティ
    • 8.5.1 サービスとは
    • 8.5.2 サービスの宣言
Category: Android Security