BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

Dan Guido氏が語る - iOSアプリケーションのセキュリティ事情

| 作者: Ralph Winzinger フォローする 0 人のフォロワー , 翻訳者 吉田 英人 フォローする 0 人のフォロワー 投稿日 2016年8月2日. 推定読書時間: 4 分 |

原文(投稿日:2016/06/17)へのリンク

モバイルアプリケーションの人気がいまだ衰えを見せず,モバイルデバイスによるトランザクションの増加が続く中で,セキュリティはますます重要な問題となっている。“Modern iOS Application Security”と題したQCon New York 2016の講演では,Dan Guido氏が,iOSを取り巻くセキュリティ事情について詳しく解説した。

Guido氏の説明は,iOSアプリケーションで使用されているセキュリティメカニズムを解説することから始まった。iOSのセキュリティモデルは,セキュアな通信チャネルからハードウェアベースのデバイス固有暗号化まで,さまざまなレベルから構成されている。

  • Transport Layer Security: iOSは,ネットワーク接続のセキュリティサポートを提供する。
  • Data Protection: iOSは,アプリケーションが使用するほぼすべてのファイルに対して,強力な暗号化機能を提供する。
  • Code Signing: Appleはすべてのコードに対して署名を求めている。これによってメモリの内容を4kBのページ単位で,開発者にまで遡ることが可能だ。
  • Runtime Process Security: iOSは,強力なサンドボックスでプロセスを分離する。プロセスが他のプロセスのメモリにアクセスすることはできない。
  • Secure Enclave: 指紋センサを装備した新しいiOSデバイスは,ハードウェアベースの暗号化キーを備えている。このキーは製造時にデバイス単位でユニークに生成され,オペレーティングシステム外部に保管されている。

 

このようなメカニズムは極めて安全な環境をアプリケーションに提供するが,Guido氏は続けて,それでも念頭に置かなくてはならない点について説明する。

Transport Layer Securityはすべてのネットワーク接続に対して必須ではないが,適切なデータ暗号化と認証チェックを行なわないネットワーク接続は,攻撃者による中間攻撃に対して脆弱である。ネットワーク接続時の設定や,もっと簡易な方法では,バックグラウンドでセキュリティを処理するTrusKitなどのライブラリを用いることで,必要なメカニズムをすべて活性化することが可能だ。

Data Protectionは先日のAppleとFBIの論争の元にもなった,極めて強力なメカニズムである。データが内部のハードウェアキーを使って暗号化されると,デバイス外部で復号化することはできない。従って重要なデータに関しては, 常にパスコードとデバイスIDを使用して暗号化される必要がある。そうではあっても,データの漏洩は防止しなくてはならない。クリップボードや「お気に入り」,クッキーなど,比較的安全性の高くない場所で,データを見つけ出そうとするアプリやツールがあるからだ。それと同時に,重要なデータは最小限に留める必要がある - そのようなデータは,バックアップや同期を避けると同時に,バックグラウンドスクリーンの画像やログ情報からの除外,キーボードキャッシュの無効化といった処理も必要だ。

Guido氏によると,これらのガイドラインに従うことで,高レベルのアプリケーションセキュリティを提供することが可能になる。しかしながら,開発者の注意すべきものがもうひとつある – 脱獄(Jailbreaks)だ。デバイスが脱獄されれば,それがユーザの自発的なものか,あるいは悪意を持ってインストールされたものかに関わらず,上述したようなセキュリティメカニズムはすべて無効になる可能性がある。開発者として高度なセキュリティを提供する必要がある場合には,脱獄が行なわれていないことを確認しなくてはならない。

  • Jailbreak Detection – 特定のファイルやプロセスなど,脱獄コードがインストールされた場合に残されている痕跡を確認することができる。
  • Anti-debug Protection – Jailbreak Detectionが可視化されるのを防止するため,アプリケーションがデバッグモードで実行されないようにする必要がある。
  • Anti Reversing – コードが何らかの方法でリエンジニアリングされることを防止しなくてはならない。一般的には,コードを意図的に大きくしたり,複雑にしたりする方法が行なわれている。

 

Guido氏は,LLVMがマシンコードではなく,ビットコードのみを生成するという事実を示唆して,講演を締め括っている。Appleはこれを,プラットフォーム毎にコードを変更ないし最適化するために使用しているが,同じ概念を用いて,すでにIDEにある自動セキュリティを強化することも可能だ。このコンテキストで使用可能な,MASTのようなツールキットも存在する。

なお,QConのプレゼンテーションのすべてが,カンファレンス終了後数週間で無償公開されるのではない点について理解して頂きたい。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT