iOS 보안 및 개인 정보 보호 기능iOS Security and Privacy Features

이 문서에서는 보안 및 개인 정보 보호에 iOS 및 Xamarin.iOS 앱에 미치는 영향을 사용 하 여 작업을 설명 합니다.This article covers working with security and privacy in iOS and how they affect a Xamarin.iOS app.

Apple는 개발자가 앱의 보안을 강화 하 고 최종 사용자의 개인 정보 보호에 도움이 되는 보안 및 개인 정보 보호 iOS 10 개 (이상)에 모두 몇 가지 향상을 했습니다.Apple has made several enhancements to both security and privacy in iOS 10 (and greater) that will help the developer improve the security of their apps and ensure the end user's privacy. 이 문서에서는 Xamarin.iOS 앱에서 이러한 기능을 구현 다룰 것입니다.This article will cover implementing these features in a Xamarin.iOS app.

일반적인 개선 사항General Enhancements

IOS 10에서에서 보안 및 개인 정보 보호는 다음과 같은 일반 변경이 적용 했습니다.The following general changes have been made to Security and Privacy in iOS 10:

  • 일반적인 데이터 보안 아키텍처 (CDSA) API는 사용 되지 않으며 비대칭 키를 생성 하는 SecKey API로 바꿔야 합니다.The Common Data Security Architecture (CDSA) API has been deprecated and should be replaced with the SecKey API to generate asymmetric keys.
  • NSAllowsArbitraryLoadsInWebContent 키를 추가할 수는 앱의 Info.plist 파일과 웹 페이지 앱의 나머지 부분에 대 한 Apple 전송 보안 (ATS) 보호를 사용 하도록 계속 하는 동안 올바르게 로드를 사용 하면 합니다.The new NSAllowsArbitraryLoadsInWebContent key can be added to the an app's Info.plist file and will allow web pages to load correctly while Apple Transport Security (ATS) protection is still enabled for the rest of the app. 자세한 내용은 참조 하십시오 우리의 앱 전송 보안 설명서.For more information, please see our App Transport Security documentation.
  • 새 클립보드에 10 iOS 및 macOS Sierra를 허용 하므로 사용자 장치 간에 복사 및 붙여넣기를 API는 클립보드 특정 장치로 제한 되며 타임 스탬프가 적용 된 지정된 된 시점에 자동으로 지울 수 있도록 확장 되었습니다.Because the new Clipboard in iOS 10 and macOS Sierra allows the user to copy and paste between devices, the API has been expanded to allow a clipboard to be limited to a specific device and be timestamped to be cleared automatically at a given point. 또한 명명 된 대지의 오브젝트 더 이상 유지 됩니다 및 임시 보드 공유 컨테이너를 사용 하 여 대체 해야 합니다.Additionally, named pasteboards are no longer persisted and should be replaced with the shared pasteboard containers.
  • 모든 SSL/TLS 연결에 대해 RC4 대칭 암호화는 이제 기본적으로 비활성화 됩니다.For all SSL/TLS connections, the RC4 symmetric cipher is now disabled by default. 또한 보안 전송 API SSLv3을 더 이상 지원 및 개발자는 sha-1 및 3DES 암호화를 사용 하 여 가능한 한 빨리 중지 하는 것이 좋습니다.Additionally, the Secure Transport API no longer supports SSLv3 and it is recommended that the developer stop using SHA-1 and 3DES cryptography as soon as possible.

개인 사용자 데이터에 액세스Accessing Private User Data

IOS 10 이상에서 실행 되는 앱에서 하나 이상의 개인 키를 입력 하 여 특정 기능 또는 사용자 정보에 액세스 하려면 의도 정적으로 선언 해야 자신의 Info.plist 앱을 확보 하고자 하는 이유는 사용자에 게 설명 하는 파일 액세스 합니다.Apps running on iOS 10 (or later) must statically declare their intent to access specific features or user information by entering one or more Privacy Keys in their Info.plist files that explain to the user why the app wishes to gain access.

중요

필요한 키를 자동으로 종료 됩니다 시스템에서 사용자 정보를 제한 된 기능 중 하나에 액세스 하려고 할 때 제공 되지 않는 응용 프로그램 오류 없이!Apps that fail to provide the required keys will be silently terminated by the system when they attempt to access one of the restricted features or user information, without error! IOS 10에서 예기치 않게 실패 하는 앱을 시작 하는 경우 필요한 모든 되도록 Info.plist 지정 되었습니다.If an app starts unexpectedly failing on iOS 10, ensure that all of the required Info.plist have been specified.

다음 개인 키가 사용 가능한 관련:The following Privacy related keys are available:

  • 개인 정보-Apple 음악 사용 설명 (NSAppleMusicUsageDescription)-앱 사용자의 미디어 라이브러리에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Apple Music usage Description (NSAppleMusicUsageDescription) - Allows the developer to describe why the app wants to access the user's media library.
  • 개인 정보-Bluetooth 주변 장치 사용 설명 (NSBluetoothPeripheralUsageDescription)-앱 사용자의 장치에서 Bluetooth를 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Bluetooth Peripheral Usage Description (NSBluetoothPeripheralUsageDescription) - Allows the developer to describe why the app wants to access Bluetooth on the user's device.
  • 개인 정보-일정 사용 설명 (NSCalendarsUsageDescription)-앱 사용자의 일정에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Calendars Usage Description (NSCalendarsUsageDescription) - Allows the developer to describe why the app wants to access the user's calendar.
  • 개인 정보-카메라 사용 설명 (NSCameraUsageDescription)-앱을 장치의 카메라에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Camera Usage Description (NSCameraUsageDescription) - Allows the developer to describe why the app wants to access the device's camera.
  • 개인 정보-연락처 사용 설명 (NSContactsUsageDescription)-앱 사용자의 연락처에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Contacts Usage Description (NSContactsUsageDescription) - Allows the developer to describe why the app wants to access the user's contacts.
  • 개인 정보-건강 공유 사용 설명 (NSHealthShareUsageDescription)-앱 사용자 상태 데이터에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Health Share Usage Description (NSHealthShareUsageDescription) - Allows the developer to describe why the app wants to access the user's health data. 자세한 내용은 Apple의를 참조 하세요 HKHealthStore 클래스 참조합니다.For more information, please see Apple's HKHealthStore Class Reference.
  • 개인 정보-건강 업데이트 사용 설명 (NSHealthUpdateUsageDescription)-앱 사용자 상태 데이터를 편집 하려는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Health Update Usage Description (NSHealthUpdateUsageDescription) - Allows the developer to describe why the app wants to edit the user's health data. 자세한 내용은 Apple의를 참조 하세요 HKHealthStore 클래스 참조합니다.For more information, please see Apple's HKHealthStore Class Reference.
  • 개인 정보-HomeKit 사용 설명 (NSHomeKitUsageDescription)-앱 사용자의 HomeKit 구성 데이터에 액세스 하려고 하는 이유는 무엇을 설명 하기 위해 개발자가 있습니다.Privacy - HomeKit Usage Description (NSHomeKitUsageDescription) - Allows the developer to describe why the app wants to access the user's HomeKit Configuration Data.
  • 개인 정보-위치 항상 사용 설명 (NSLocationAlwaysUsageDescription)-앱 사용자의 위치에 항상 액세스할 하려는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Location Always Usage Description (NSLocationAlwaysUsageDescription) - Allows the developer to describe why the app wants to always have access to the user's location.
  • [사용 되지 않음] 개인 정보-위치 사용 설명 (NSLocationUsageDescription)-앱 사용자 위치에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.[Deprecated] Privacy - Location Usage Description (NSLocationUsageDescription) - Allows the developer to describe why the app wants to access the user location. 참고: IOS 8 (이상)에서이 키가 사용 되지 않습니다. 사용 하 여 NSLocationAlwaysUsageDescription 또는 NSLocationWhenInUseUsageDescription 대신 합니다.NOTE: This key has been deprecated in iOS 8 (and greater). Use NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription instead.
  • 개인 정보-위치는 경우에 사용 하 여 사용 설명 (NSLocationWhenInUseUsageDescription)-앱이 실행 되는 동안 사용자의 위치에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Location When In Use Usage Description (NSLocationWhenInUseUsageDescription) - Allows the developer to describe why the app wants to access the user's location while it is running.
  • [사용 되지 않음] 개인 정보-미디어 라이브러리 사용 설명 -개발자가 앱이 사용자의 미디어 라이브러리에 액세스 하려고 하는 이유를 설명 하는 수 있습니다.[Deprecated] Privacy - Media Library Usage Description - Allows the developer to describe why the app wants to access to the user's media library. 참고: IOS 8 (이상)에서이 키가 사용 되지 않습니다. 사용 하 여 NSAppleMusicUsageDescription 대신 합니다.NOTE: This key has been deprecated in iOS 8 (and greater). Use NSAppleMusicUsageDescription instead.
  • 개인 정보-마이크 사용 설명 (NSMicrophoneUsageDescription)-앱을 장치의 마이크에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Microphone Usage Description (NSMicrophoneUsageDescription) - Allows the developer to describe why the app wants to access the devices microphone.
  • 개인 정보-동작 사용 설명 (NSMotionUsageDescription)-앱을가 속도계는 장치에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Motion Usage Description (NSMotionUsageDescription) - Allows the developer to describe why the app wants to access the device's accelerometer.
  • 개인 정보-사진 라이브러리 사용 설명 (NSPhotoLibraryUsageDescription)-앱 사용자의 사진 라이브러리에 액세스 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Photo Library Usage Description (NSPhotoLibraryUsageDescription) - Allows the developer to describe why the app wants to access the user's photo library.
  • 개인 정보-미리 알림 사용 설명 (NSRemindersUsageDescription)-앱 사용자의 미리 알림을 액세스 하려고 하는 이유는 무엇을 설명 하기 위해 개발자가 있습니다.Privacy - Reminders Usage Description (NSRemindersUsageDescription) - Allows the developer to describe why the app wants to access the user's reminders.
  • 개인 정보-Siri 사용 설명 (NSSiriUsageDescription)-Siri 사용자 데이터를 보낼 앱 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Siri Usage Description (NSSiriUsageDescription) - Allows the developer to describe why the app wants to send user data to Siri.
  • 개인 정보-음성 인식 사용 설명 (NSSpeechRecognitionUsageDescription)-앱을 Apple의 음성 인식 서버에 사용자 데이터를 전송 하려고 하는 이유를 설명 하기 위해 개발자가 있습니다.Privacy - Speech Recognition Usage Description (NSSpeechRecognitionUsageDescription) - Allows the developer to describe why the app wants to send user data to Apple's speech recognition servers.
  • 개인 정보-TV 공급자 사용 설명 (NSVideoSubscriberAccountUsageDescription)-앱 사용자의 TV 공급자 계정에 액세스 하려고 하는 이유는 무엇을 설명 하기 위해 개발자가 있습니다.Privacy - TV Provider Usage Description (NSVideoSubscriberAccountUsageDescription) - Allows the developer to describe why the app wants to access the user's TV provider account.

작업에 대 한 자세한 내용은 Info.plist 키를 참조 하세요. Apple 정보 속성 목록 키 참조합니다.For more information on working with Info.plist keys, please see Apple's Information Property List Key Reference.

개인 키를 설정합니다.Setting Privacy Keys

HomeKit ios 10 개 (이상)에 액세스 하는 예로 다음, 개발자를 추가 해야 합니다는 NSHomeKitUsageDescription 앱의 키 Info.plist 파일 및 앱 사용자의 HomeKit에 액세스 하려고 하는 이유는 무엇을 선언 문자열을 제공 합니다. 데이터베이스입니다.Take the following example of accessing HomeKit on iOS 10 (and greater), the developer will need to add the NSHomeKitUsageDescription key to the app's Info.plist file and provide a string declaring why the app wants to access the user's HomeKit database. 이 문자열은 사용자가 처음에 앱을 실행 하기에 표시 됩니다.This string will be presented to the user the first time they run the app:

경고 예제 NSHomeKitUsageDescriptionAn example NSHomeKitUsageDescription alert

Visual Studio 용 Xamarin.iOS를 현재 편집을 지원 하지 않습니다 합니다 Info.plist 매니페스트 편집기 기본 iOS 내에서 개인 키입니다.Xamarin.iOS for Visual Studio currently doesn't support editing the Info.plist privacy keys from within the default iOS manifest editor. 제네릭 PList 편집기를 사용 해야 하는 대신 하므로 다음을 수행 합니다.Instead you will need to use the generic PList editor, so do the following:

  1. 마우스 오른쪽 단추로 클릭 합니다 Info.plist 파일을 솔루션 탐색기 선택한 로 열기... .Right-click on the Info.plist file in the Solution Explorer and select Open with....

  2. 선택 된 제네릭 PList 편집기 파일을 열고 프로그램 목록에서 클릭 확인합니다.Select the Generic PList Editor from the list of programs to open the file, then click OK.

    제네릭 PList 편집기를 선택Select the Generic PList Editor

  3. 클릭 합니다 + 목록에 새 항목을 추가 하기 위해 편집기에서 마지막 행에는 단추입니다.Click the + button on the last row in the editor to add a new entry to the list. "사용자 지정 속성"로 설정 하는 형식 사용 하 여 호출 됩니다 String 및 빈 값입니다.This will be called "Custom Property", with the Type set to String and an empty value.

  4. 속성 이름을 클릭 하 고 드롭다운이 표시 됩니다.Click the property name, and a dropdown will appear.

  5. 드롭다운 목록에서 개인 키를 선택 합니다 (같은 개인 정보-HomeKit 사용 설명):From the dropdown list, select a Privacy key (such as Privacy - HomeKit Usage Description):

    개인 키 선택Select a Privacy key

  6. 앱이 지정된 된 기능 또는 사용자 정보에 액세스 하려고 하는 이유의 값 열에 설명을 입력 합니다.Enter a description into the Value column for why the app wants to access the given feature or user information:

    설명 입력Enter a description

  7. 파일의 변경 내용을 저장합니다.Save the changes to the file.

중요

설정 하지 못했습니다 위에 주어진 예제에서는 NSHomeKitUsageDescription 키를 Info.plist 앱 파일을 초래 자동으로 실패 (되 런타임 시 시스템에 의해 닫힘) (iOS 10에서에서 실행 하는 경우 오류 없이 또는 그 이상).In the example given above, failure to set the NSHomeKitUsageDescription key in the Info.plist file would result in the app silently failing (being closed by the system at runtime) without error when run in iOS 10 (or greater).

요약Summary

이 문서에서는 보안 및 개인 정보 보호 변경은 Apple에 iOS 10 및 Xamarin.iOS 앱에 미치는 영향의 검사가 수행 합니다.This article has covered the security and privacy changes that Apple has made in iOS 10 and how they affect a Xamarin.iOS app.