最先端の利用シーンからみるセキュリティリスク
DESCRIPTION
情報セキュリティ大学院大学で開催された「スマートフォンや次世代端末のセキュリティ」での講演資料TRANSCRIPT
Android SecurityGClue
Apple TV
AirPlayミラーリング
iCloud
MacBook iPhone4S Apple TV
Android最新動向
Android
• 55万台/1日
• 新規登録端末 1億9000万件
• デバイス数 400
Android Market
• App
• 30万件
• Download
• 3000万DL/日
AppStore
iTunes AppStore Android Market
3300万DL/日 3300万DL/日
7600万DL/日
AppStore 2014
1850億ダウンロード/年
5億ダウンロード/日
CPU/GPUの進化
ムーアの法則の2倍以上
Android OS 4.0
顔認証 Hangout
パノラマ写真 カメラエフェクト
Android OS4
Android Beam WiFi Direct P2P
BluetoothHealth
Galaxy Nexus
Android OS
1.0 1.1 1.5 1.6 2.0 2.1 2.2 2.3
3.0 3.1 3.2
4.0
For Tablet
For SmartPhone
2.0 3.1
For TV
独自のStore
独自 Market
Ameba AppMarket CyberAgent@ゲームセンター GMO
Yahoo Market YahooSquare Enix Market Square Enix
au one Market au/kddiAndroApp Vectorバナドロイド Bandai Namco
独自Market(海外)
GetJar175000本のアプリがダウンロード可能
Amazon AppStore Amazonの運営するAppStore
GetJar
300万ダウンロード/日
Java MEBlackBerrySymbianWindows MobileAndroid
175000本のアプリ
Amazon AppStore
Kindle Fire
Android OS 2.3ベース
独自ストアのリスク
Android Market事後審査型
不正アプリはアカウント削除Kill Switch
iTunes Store事前審査型
Androidアプリとは?
Android
Android Security Model
• Androidは特権分離OS
アプリケーションに異なったLinux
UserIDと、GroupIDが割り振られる
UID/GID/data/data
# ls -ldrwxr-x--x app_1 app_1 2011-10-20 17:46 com.android.backupconfirmdrwxr-x--x app_2 app_2 2011-10-20 17:50 com.android.browserdrwxr-x--x app_3 app_3 2011-10-20 17:46 com.android.calculator2drwxr-x--x app_4 app_4 2011-10-20 17:50 com.android.calendardrwxr-x--x app_6 app_6 2011-10-20 17:46 com.android.cameradrwxr-x--x app_7 app_7 2011-10-20 17:46 com.android.certinstallerdrwxr-x--x app_0 app_0 2011-10-20 17:46 com.android.contactsdrwxr-x--x app_9 app_9 2011-10-20 17:46 com.android.customlocale2drwxr-x--x app_10 app_10 2011-10-20 17:46 com.android.defcontainerdrwxr-x--x app_11 app_11 2011-10-20 17:49 com.android.deskclockdrwxr-x--x app_12 app_12 2011-10-20 17:46 com.android.developmentdrwxr-x--x app_14 app_14 2011-10-20 17:50 com.android.emaildrwxr-x--x app_8 app_8 2011-10-20 17:46 com.android.emulator.connectivity.testdrwxr-x--x app_18 app_18 2011-10-20 17:46 com.android.emulator.gps.testdrwxr-x--x app_15 app_15 2011-10-20 17:46 com.android.exchangedrwxr-x--x app_16 app_16 2011-10-20 17:46 com.android.fallback
アプリケーションがインストールされた時点で、それぞれに異なったUID/GIDが割り振られる
公開アプリには署名• 公開アプリ署名を付与
• デバックアプリ./android/debug.keystore を付与
開発者を特定するために使用される
Androidのアプリ• パッケージ名がユニークである必要があるcom.gclue.app1com.yokohama.app1
App A App B
com.gclue.app1 com.yokohama.app1
ADK
Hardware連携
• ADK
• USB Host
Intent連携
Intent連携
App AApp B
起動
データの受け渡し
Androidのメカニズム
Androidのメカニズム
• Permissionユーザへのアクセスや、特定の処理の許可をおこなう
• URI Permission特定データへのアクセスを許可
Permission
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
アプリDownload
480px x 800pxSamsungGalaxy S
[Captivate]
Permissionの許諾
AndroidManifest.xml
IMEIPhone No
Software VersionSim Serial
Subscriber Id
PermissionPermission名 概要
android.permission.GET_ACCOUNTS 登録のGMailを取得
android.permission.READ_CALENDAR カレンダーの呼び込み
android.permission.READ_CONTACTS 連絡先の呼び込み
android.permission.READ_PHONE_STATE 電話情報(IMEI, SubscriberID, SimSerial)
android.permission.READ_PROFILE プロフィール情報の読み込み
android.permission.RECEIVE_SMSandroid.permission.READ_SMSandroid.permission.WRITE_SMS
SMSの読み込み/書き込み/受信
android.permission.USE_CREDENTIALSAndroidデバイスで認証済みのGoogleサービスのOAuthトークンを取得
Data
• Content Provider(SQLite)
• SharedPreference(KeyValueStore)
• File I/O
Content Provider
• Android搭載のデータベース
• SQLite
android:readPermission android:writePermission android:permission
AndroidManifest.xml
URI Permission
• 特定のデータにアクセスを許可
• <grant-uri-permission>タグ
• 他のアプリから指定されたデータへの読み込みや書き込みが可能になる
<grant-uri-permission android:pathPrefix="/all_downloads/"/>
AndroidManifest.xml
SharedPreferenceFile I/O
Context.MODE_PRIVATEContext.MODE_WORLD_READABLEContext.MODE_WORLD_WRITEABL
AndroidManifest.xml
Cloudからの操作
Account Manager
Account Manager
AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "android", null, this, null, null);
Android Marketへのアクセス等
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
AndroidManifest.xml
Account Manager
Google App Engineへのアクセス等
AccountManagerFuture<Bundle> accountManagerFuture = mgr.getAuthToken(acct, "ah", null, this, null, null);
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
AndroidManifest.xml
Cloud連携AcountManager
Service KeyGoogle Analytics Data
APIsanalytics
Google Apps APIs(Domain Information
& Management)
appsGoogle Sites Data API jotspot
Blogger Data API bloggerBook Search Data API print
Calendar Data API clGoogle Code Search
Data API codesearch
Contacts Data API cpContent API for
Shopping structuredcontent
Documents List Data API
writelyFinance Data API financeGmail Atom feed mailHealth Data API healthMaps Data APIs local
Picasa Web Albums Data API
lh2Sidewiki Data API annotateweb
Spreadsheets Data API wiseWebmaster Tools API sitemaps
YouTube Data API youtubeAndroid Market android
No Password
GoogleのApp
Google Data Protocol
パスワードレスでGoogleのクラウドにログイン
Google Apps
Google Apps Device Policy