MSDN ライブラリ

Windows Phone のセキュリティ

2012/02/09

Windows Phone Application Platform は、アプリケーションを健全なエコシステムから取得することにより、ユーザーがカスタマイズできる魅力的なユーザー エクスペリエンスを提供するように設計されています。この目標を達成するためには、エンド ユーザーの信頼性に関する考慮事項に確実に対処する必要があります。

Windows Phone Application Platform には、ユーザーが Windows Phone でサードパーティ製のアプリケーションをダウンロードして使用する際に、エンド ユーザーの品質エクスペリエンスを確保できるようにと設計されたいくつものテクノロジーが組み込まれています。これらのテクノロジーによって対処される事項は、大まかに分けて次の 3 つのカテゴリに分類できます。

  • 電話エクスペリエンスの品質。エンド ユーザーは、取得したアプリケーションによって、電話の応答性が悪くなるとか、他のアプリケーションや電話自体に影響が及ぶような変更が加えられるなど、自分の電話エクスペリエンスに悪影響が及ぶことがなく、快適に使用できることを望んでいます。さらに、エンド ユーザーが何らかの理由で特定のアプリケーションが自分の電話で必要なくなった場合に、アプリケーションが簡単にアンインストールでき、完全にアンインストールされることも重要です。

  • ユーザーの情報へのアクセス。エンド ユーザーは、取得したアプリケーションが知らないうちに特定の情報にアクセスすることを望みません。これには、エンド ユーザーの個人データ、連絡先、居場所、写真などの情報が含まれます。

  • 請求が発生するイベント。エンド ユーザーは、アプリケーションが自分の許可なしに追加料金を発生させるようなアクションを実行しないことを望みます。例として、1-900 番号への呼び出しを行うアプリケーションが挙げられます。

Windows Phone Application Platform には、こういった点に対処するように設計されたいくつかの対策が含まれており、エンド ユーザーが安心してアプリケーションを試してみられるような健全なエコシステムを支援します。

Windows Phone Application Platform の目標の 1 つに、設計上安全であり、既定で安全なアプリケーションの作成を支援することがあります。この目標を達成する上で重要な点は、いくつかのセキュリティ対策を開発環境とライフサイクルに組み込むことです。Windows Phone Marketplace での販売を承認されたすべてのアプリケーションに必須とされる、自動化されたデジタル署名が良い例です。

エンド ユーザーに利点を与えるためのセキュリティ上の措置を促進するために、アプリケーションの開発者は以下の手順に従う必要があります。

  1. Windows Phone 開発者としてサインアップし、ISV としての自身に関する情報を提供し (これは検証対象となります)、関連料金を支払います。

  2. 推奨される開発環境を入手します (無料版も入手可能です)。

  3. .NET マネージ言語開発のテクノロジーとツールのみを使用し、Windows Phone のアプリケーション開発に指定された標準プラクティスに従って Windows Phone アプリケーションを開発します。テストをより簡単に行えるようにするために、開発者は 1 つまたは複数の Windows Phones を開発デバイスとして登録できるようになっています。これによって、開発中も、そしてアプリケーションの送信と認定のプロセスでデジタル署名されるより前でもアプリケーションを実行できるようになります。

  4. Windows Phone アプリケーションを Windows Phone Marketplace に含めるために送信します。このプロセスで、アプリケーションは公に文書化されたさまざまな認定テストの対象になります。これらのテストすべてに合格すれば、そのアプリケーションは開発者に代わってデジタル署名され、Windows Phone Marketplace で販売できるようになります。

開発者は、この構造化された開発環境とプロセスに従うことにより、Windows Phones のエンド ユーザーに安心を与えるアプリケーション エコシステムを作り出すという役割を果たすことになります。

この構造化された開発プラットフォームと実行環境には、開発者の知的財産権を保護する助けとなるように設計された措置も含まれています。アプリケーションを Windows Phone 上で実行するには、Windows Phone Marketplace によって発行された有効なライセンスが電話上になくてはなりません。つまり、たとえ技術に精通したエンド ユーザーが Windows Phone Marketplace を回避して、何らかの別の方法で自分の電話にアプリケーションを読み込む方法を見つけ出したとしても、ライセンスがなければ Windows Phone での実行は許可されないため、開発者の労力の成果を保護する助けとなります。

Windows Phone Application Platform には、Windows Phone のエンド ユーザーを以下のような望ましくない特定の動作を示すアプリケーションから保護するために設計されたさまざまなテクノロジーが採用されています。

  • アプリケーションの構造化された送信と認定のプロセスには、問題を伴う可能性のある特定の動作を識別して、こういったアプリケーションが Windows Phone Marketplace で提供されるのを防ぐための一連の認定テストが含まれています。

  • Windows Phone Marketplace は、アプリケーションの入手、必須のコード署名、およびアプリケーション ライセンスのための唯一の正当なソースです。このアプローチにより、Windows Phone アプリケーションで、一連の一貫した標準が維持されます。

  • .NET マネージ コードのみを使用して Windows Phone アプリケーションを開発するという要件により、開発者の生産性とそのアプリケーションの堅牢性が向上します。適切に使用すれば、マネージ コードの厳密な型指定、境界チェック、およびメモリ管理の機能は、ハッカーによるアプリケーションの悪用や意図しない過剰なリソース消費につながるようなプログラミング上の一般的なエラーの多くをなくすか、少なくとも最小限に留めるのに役立ちます。

  • Windows Phone アプリケーションは、セキュリティ保護されたプロセス内で実行されます。これは、アプリケーションが互いに分離されており、厳密に構造化された方法で電話機能と対話することを意味します。データや構成情報を保存する必要がある場合、アプリケーションは、他のアプリケーションによるアクセスから保護されるように設計された分離ストレージを使用して保存します。アプリケーションは、制御されたメカニズムを通じてしか他のアプリケーションと相互通信することができません。分離ストレージの詳細については、「Windows Phone の分離ストレージの概要」を参照してください。

  • Windows Phone アプリケーションは、実行マネージャーの監視下で実行されます。実行マネージャーは、アプリケーションが定義済みの特定の規則で要求されるとおりに動作しているかどうかを評価します。たとえば、実行マネージャーは、フォアグラウンドでないアプリケーションによるリソースの使用を監視し、フォアグラウンド アプリケーションのユーザーに対する応答性がよくなるように、必要に応じてフォアグラウンドでないアプリケーションを終了させます。

  • 特定のアプリケーションの実行に使用される、サンドボックス化されたプロセスは、カスタマイズされた一連のセキュリティ機能を持ちます。Windows Phone Application Platform は、実行するために必要な機能だけをアプリケーションに与えることによって、各アプリケーションが持つ攻撃対象となるアクセス領域を最小化するように設計されています。たとえば、メディア ライブラリを使用する必要がないアプリケーションについては、Windows Phone Application Platform は、メディア ライブラリへのアクセス権を持たないサンドボックス化されたプロセス内で実行しようとします。

    アプリケーションが必要とする可能性のある機能の中に、情報へのアクセスや料金の発生につながるものが含まれている場合もあります。このような場合、Windows Phone Marketplace は、アプリケーション購入前にこの情報をエンド ユーザーに開示します。プレインストールされたアプリケーションも、そのアプリケーションが初めて実行されるときにエンド ユーザーにこの情報を開示する必要があります。

SDL は、ソフトウェア開発に焦点の当てられたセキュリティ保証プロセスです。必須のセキュリティ アクティビティが集められたものであり、従来のソフトウェア開発ライフサイクルのフェーズごとにグループ化されています。これらのセキュリティ アクティビティの多くは、スタンドアロン ベースで実装された場合にもある程度のセキュリティ上の利点を提供しますが、Microsoft での実務的な経験からは、順を追って、かつ再現性あるプロセスの一部として実行されたセキュリティ アクティビティは、一時的な実装よりも優れたセキュリティが得られるということがわかっています。全体的で実際的なアプローチを組み合わせることにより、SDL には、エンド ユーザーを保護する目的で開発プロセスのすべてのフェーズを通じてセキュリティとプライバシーが導入されています。SDL の詳細については、「SDL プロセス ガイダンス」を参照してください。

Microsoft は、開発者の皆様に自分の開発したアプリケーションで使用していただける多数の SDL ツールを提供しています。Windows Phone 開発者の皆様に役立てていただけるツールとして、以下のツールがあります。

SDL ツール

情報

Microsoft SDL 脅威モデル化ツール

SDL 脅威モデル化ツールは、セキュリティ関連の問題が専門ではないエキスパートが、自分のシステムのセキュリティ設計について話し合い、それらの設計に潜む可能性のあるセキュリティ上の問題を実績ある手法で分析し、セキュリティ上の問題を緩和するためのアドバイスや管理を行うことにより、脅威モデルを作成して分析することができるようにするツールです。

FxCop

FxCop は、静的なアナライザーです。マネージ コードのアセンブリを分析し、可能な設計、場所、パフォーマンス、セキュリティの向上などのアセンブリに関する情報を報告します。

BinScope

BinScope バイナリ アナライザーは、バイナリを分析して、それらが SDL の要件と勧告に従って構築されているかどうかを確認する検証ツールです。BinScope は、SDL に要求されるコンパイラー/リンカー フラグが設定されていること、厳密な名前付きのアセンブリが使用されていること、最新のビルド ツールが存在すること、最新の優れた ATL ヘッダーが使用されていることなどをチェックします。BinScope は、SDL で禁止されているような危険な構築についても報告します。

MiniFuzz

MiniFuzz File Fuzzer は、ファイルを扱うコード内のセキュリティ上の脆弱性を暴露する可能性があるような問題を検出するために設計された基本的なテスト ツールです。このツールは、アプリケーション内でファイルの解析を行うような Windows Phone にとって便利です。

Banned.h

banned.h ヘッダー ファイルは、SDL 要件で禁止されている機能のコードからの削除をサポートする削除リソースです。このファイルには、禁止されているすべての API がリストされており、開発者がコード内でそれを見つけられるようになっています。このツールは、Web サービスを構築する開発者にとって便利です。

サーバーの SSL 証明書がターゲットとなる Web サイトに対して有効であり、信頼できる機関から発行されていれば、SSL 接続を使用して Web サービスに接続できます。アプリケーションから SSL 接続をテストする前に、Windows Phone の Internet Explorer を使用して Web サイトにアクセスしてみることをお勧めします。ブラウザーを使用しているときにその証明書で警告またはエラーが発生した場合は、アプリケーションで試みた接続もおそらく失敗します。

Windows Phone に付属している SSL ルート証明書の完全なリストについては、「Windows Phone の SSL ルート証明書」を参照してください。

信頼できる機関のリストに証明機関を追加することは可能ですが、クライアント SSL 証明書の追加はサポートされていません。

ProtectedData クラスを使用すれば、Data Protection API (DPAPI) を使用してデータを簡単に暗号化および暗号化解除できます。詳細については、「方法: Windows Phone アプリケーションでデータを暗号化する」を参照してください。

Web サービスでのセキュリティの処理方法については、「Windows Phone の Web サービス セキュリティ」を参照してください。

アプリケーションが以下の項目に関連する API を使用する必要がある場合、App ハブへのアプリケーションの送信と認定のプロセス中にそれらを使用するための対応する機能が自動的にアプリケーションに許可されます。これらの機能は、エンド ユーザーが Windows Phone Marketplace で購入するためにアプリケーションを表示したときに、エンド ユーザーに開示されます。位置情報サービスなどの一部の機能は、目立つように表示されます。

機能の完全な一覧については、「Windows Phone のアプリケーション マニフェスト ファイル」を参照してください。

Windows Phone では、以下の暗号化アルゴリズムがサポートされています。

  • AES

  • HMACSHA1

  • HMACSHA256

  • Rfc2898DeriveBytes

  • RSA

  • SHA1

  • SHA256

表示:
© 2016 Microsoft