iOS のセキュリティとプライバシーの機能

この記事では、iOS でのセキュリティとプライバシーの操作と、それらが Xamarin.iOS アプリに与える影響について説明します。

Apple は、iOS 10 (以降) のセキュリティとプライバシーの両方にいくつかの強化を行っています。これにより、開発者はアプリのセキュリティを向上させ、エンド ユーザーのプライバシーを確保できます。 この記事では、Xamarin.iOS アプリでのこれらの機能の実装について説明します。

一般的な機能強化

iOS 10 のセキュリティとプライバシーに対して、次の一般的な変更が行われました。

  • Common Data Security Architecture (CDSA) API は非推奨となりました。非対称キーを生成するには、SecKey API に置き換える必要があります。
  • 新しい NSAllowsArbitraryLoadsInWebContent キーはアプリの Info.plist ファイルに追加でき、Apple Transport Security (ATS) 保護がアプリの残りの部分で引き続き有効になっている間に Web ページを正しく読み込むことができます。 詳細については、 アプリ トランスポート セキュリティ に関するドキュメントを参照してください。
  • iOS 10 と macOS Sierra の新しいクリップボードでは、ユーザーがデバイス間でコピーして貼り付けることができるようにするため、API が拡張され、クリップボードを特定のデバイスに制限し、特定の時点でタイムスタンプを自動的にクリアできます。 また、名前付き貼り付けボードは永続化されなくなり、共有の貼り付けボード コンテナーに置き換える必要があります。
  • すべての SSL/TLS 接続で、RC4 対称暗号が既定で無効になりました。 さらに、Secure Transport API は SSLv3 をサポートしなくなったため、開発者はできるだけ早く SHA-1 および 3DES 暗号化の使用を停止することをお勧めします。

プライベート ユーザー データへのアクセス

iOS 10 以降で実行されているアプリは、アプリがアクセスを望む理由をユーザーに説明する Info.plist ファイルに 1 つ以上のプライバシー キーを入力して、特定の機能またはユーザー情報にアクセスする意図を静的に宣言する必要があります。

重要

必要なキーを提供できないアプリは、制限された機能またはユーザー情報のいずれかにエラー なしでアクセスしようとすると、システムによってサイレント終了されます。 iOS 10 でアプリが予期せず失敗する場合は、必要なすべての Info.plist が指定されていることを確認します。

次のプライバシー関連のキーを使用できます。

  • プライバシー - Apple Music の使用状況の説明 (NSAppleMusicUsageDescription) - 開発者は、アプリがユーザーのメディア ライブラリにアクセスする理由を説明できます。
  • プライバシー - Bluetooth 周辺機器の使用状況の説明 (NSBluetoothPeripheralUsageDescription) - 開発者は、アプリがユーザーのデバイス上の Bluetooth にアクセスする理由を説明できます。
  • プライバシー - 予定表の使用状況の説明 (NSCalendarsUsageDescription) - 開発者は、アプリがユーザーの予定表にアクセスする理由を説明できます。
  • プライバシー - カメラの使用状況の説明 (NSCameraUsageDescription) - アプリがデバイスのカメラにアクセスする理由を開発者が説明できるようにします。
  • プライバシー - 連絡先の使用状況の説明 (NSContactsUsageDescription) - 開発者は、アプリがユーザーの連絡先にアクセスする理由を説明できます。
  • プライバシー - 正常性共有の使用状況の説明 (NSHealthShareUsageDescription) - 開発者は、アプリがユーザーの正常性データにアクセスする理由を説明できます。 詳細については、「Apple の HKHealthStore クラス リファレンス」を参照してください
  • プライバシー - 正常性更新プログラムの使用状況の説明 (NSHealthUpdateUsageDescription) - 開発者は、アプリがユーザーの正常性データを編集する理由を説明できます。 詳細については、「Apple の HKHealthStore クラス リファレンス」を参照してください
  • プライバシー - HomeKit の使用状況の説明 (NSHomeKitUsageDescription) - 開発者は、アプリがユーザーの HomeKit 構成データにアクセスする理由を説明できます。
  • プライバシー - 場所 Always Usage Description (NSLocationAlwaysUsageDescription) - 開発者は、アプリが常にユーザーの場所にアクセスできるようにする理由を説明できます。
  • [非推奨] プライバシー - 場所の使用状況の説明 (NSLocationUsageDescription) - 開発者は、アプリがユーザーの場所にアクセスする理由を説明できます。 注: このキーは、iOS 8 以降では非推奨になっています。 代わりに、NSLocationAlwaysUsageDescription タグまたは NSLocationWhenInUseUsageDescription タグを使用してください。
  • プライバシー - 使用中の場所 使用状況の説明 (NSLocationWhenInUseUsageDescription) - アプリが実行中にユーザーの場所にアクセスする理由を開発者が説明できるようにします。
  • [非推奨] プライバシー - メディア ライブラリの使用状況の説明 - 開発者は、アプリがユーザーのメディア ライブラリにアクセスする理由を説明できます。 注: このキーは、iOS 8 以降では非推奨になっています。 代わりに NSAppleMusicUsageDescription を使用してください
  • プライバシー - マイクの使用状況の説明 (NSMicrophoneUsageDescription) - アプリがデバイスのマイクにアクセスする理由を開発者が説明できるようにします。
  • プライバシー - モーション使用状況の説明 (NSMotionUsageDescription) - 開発者は、アプリがデバイスの加速度計にアクセスする理由を説明できます。
  • プライバシー - フォト ライブラリの使用状況の説明 (NSPhotoLibraryUsageDescription) - 開発者は、アプリがユーザーのフォト ライブラリにアクセスする理由を説明できます。
  • プライバシー - アラームの使用状況の説明 (NSRemindersUsageDescription) - 開発者は、アプリがユーザーのリマインダーにアクセスする理由を説明できます。
  • プライバシー - Siri の使用状況の説明 (NSSiriUsageDescription) - アプリがユーザー データを Siri に送信する理由を開発者が説明できるようにします。
  • プライバシー - 音声認識の使用状況の説明 (NSSpeechRecognitionUsageDescription) - 開発者は、アプリが Apple の音声認識サーバーにユーザー データを送信する理由を説明できます。
  • プライバシー - テレビ プロバイダーの使用状況の説明 (NSVideoSubscriberAccountUsageDescription) - 開発者は、アプリがユーザーのテレビ プロバイダー アカウントにアクセスする理由を説明できます。

Info.plist キーの操作の詳細については、「Apple の Information Property List Key Reference」を参照してください

プライバシー キーの設定

iOS 10 (以降) で HomeKit にアクセスする次の例を見てみましょう。開発者は、アプリの Info.plist ファイルにキーを追加NSHomeKitUsageDescriptionし、アプリがユーザーの HomeKit データベースにアクセスする理由を宣言する文字列を指定する必要があります。 この文字列は、アプリを初めて実行するとユーザーに表示されます。

NSHomeKitUsageDescription アラート

Xamarin.iOS for Visual Studio では、現在、既定の iOS マニフェスト エディター内からの Info.plist プライバシー キーの編集はサポートされていません。 代わりに、汎用 PList エディターを使用する必要があるため、次の操作を行います。

  1. ソリューション エクスプローラーInfo.plist ファイルを右クリックし、[プログラムで開く...] を選択します。

  2. プログラムの一覧から [汎用 PList エディター ] を選択してファイルを開き、[OK] をクリック します

    汎用 PList エディターを

  3. エディターの最後の + 行にあるボタンをクリックして、新しいエントリを一覧に追加します。 これは "カスタム プロパティ" と呼ばれ、Type は に String 設定され、値は空になります。

  4. プロパティ名をクリックすると、ドロップダウンが表示されます。

  5. ドロップダウン リストから、プライバシー キー (プライバシー - HomeKit の使用状況の説明など) を選択します。

    プライバシー キーを選択する プライバシー

  6. アプリが特定の機能またはユーザー情報にアクセスする理由の説明を [値] 列に入力します。

    説明を入力する

  7. 変更をファイルに保存します。

重要

上記の例では、Info.plist ファイルでキーを設定NSHomeKitUsageDescriptionできなかった場合、iOS 10 (またはそれ以上) で実行すると、アプリがサイレントモードで失敗し (実行時にシステムによって閉じられます)、エラーが発生します。

まとめ

この記事では、Apple が iOS 10 で行ったセキュリティとプライバシーの変更と、それらが Xamarin.iOS アプリに与える影響について説明しました。