iOS 보안 및 개인 정보 기능

이 문서에서는 iOS의 보안 및 개인 정보 보호 작업과 Xamarin.iOS 앱에 미치는 영향에 대해 설명합니다.

Apple은 개발자가 앱의 보안을 개선하고 최종 사용자의 개인 정보를 보장하는 데 도움이 되는 iOS 10(이상)의 보안 및 개인 정보 보호를 몇 가지 개선했습니다. 이 문서에서는 Xamarin.iOS 앱에서 이러한 기능을 구현하는 것에 대해 설명합니다.

향상된 일반 기능

iOS 10의 보안 및 개인 정보 보호에 대한 일반적인 변경 사항은 다음과 같습니다.

  • CDSA(Common Data Security Architecture) API는 더 이상 사용되지 않으며 비대칭 키를 생성하려면 SecKey API로 대체해야 합니다.
  • NSAllowsArbitraryLoadsInWebContent 키를 앱의 Info.plist 파일에 추가할 수 있으며, 앱의 나머지 부분에 대해 ATS(Apple Transport Security) 보호를 계속 사용하는 동안 웹 페이지가 올바르게 로드되도록 허용합니다. 자세한 내용은 App Transport Security 설명서를 참조하세요.
  • iOS 10 및 macOS Sierra의 새 클립보드를 사용하면 사용자가 디바이스 간에 복사하여 붙여넣을 수 있으므로 클립보드를 특정 디바이스로 제한하고 지정된 지점에서 타임스탬프를 자동으로 지울 수 있도록 API가 확장되었습니다. 또한 명명된 붙여넣기 보드는 더 이상 유지되지 않으며 공유 붙여넣기 컨테이너로 바꿔야 합니다.
  • 모든 SSL/TLS 연결의 경우 이제 RC4 대칭 암호가 기본적으로 비활성화됩니다. 또한 보안 전송 API는 더 이상 SSLv3을 지원하지 않으며, 개발자는 가능한 한 빨리 SHA-1 및 3DES 암호화 사용을 중지하는 것이 좋습니다.

개인 사용자 데이터 액세스

iOS 10 이상에서 실행되는 앱은 사용자에게 액세스하려는 이유를 설명하는 Info.plist 파일에 하나 이상의 개인 정보 키를 입력하여 특정 기능 또는 사용자 정보에 액세스하려는 의도를 정적으로 선언해야 합니다.

Important

필요한 키를 제공하지 못하는 앱은 오류 없이 제한된 기능 또는 사용자 정보 중 하나에 액세스하려고 하면 시스템에서 자동으로 종료됩니다. iOS 10에서 앱이 예기치 않게 실패하기 시작하는 경우 필요한 모든 Info.plist 가 지정되었는지 확인합니다.

사용할 수 있는 개인 정보 관련 키는 다음과 같습니다.

  • 개인 정보 - Apple 음악 사용 설명(NSAppleMusicUsageDescription) - 개발자가 앱이 사용자의 미디어 라이브러리에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - Bluetooth 주변 장치 사용 설명 (NSBluetoothPeripheralUsageDescription) - 개발자가 앱이 사용자의 디바이스에서 Bluetooth에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 일정 사용 설명 (NSCalendarsUsageDescription) - 개발자가 앱이 사용자의 일정에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 카메라 사용 설명(NSCameraUsageDescription) - 개발자가 앱이 디바이스의 카메라에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 연락처 사용 설명 (NSContactsUsageDescription) - 개발자가 앱이 사용자의 연락처에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 상태 공유 사용 설명 (NSHealthShareUsageDescription) - 개발자가 앱이 사용자의 상태 데이터에 액세스하려는 이유를 설명할 수 있습니다. 자세한 내용은 Apple의 HKHealthStore 클래스 참조를 참조하세요.
  • 개인 정보 - 상태 업데이트 사용 설명 (NSHealthUpdateUsageDescription) - 개발자가 앱이 사용자의 상태 데이터를 편집하려는 이유를 설명할 수 있습니다. 자세한 내용은 Apple의 HKHealthStore 클래스 참조를 참조하세요.
  • 개인 정보 - HomeKit 사용 설명 (NSHomeKitUsageDescription) - 개발자가 앱이 사용자의 HomeKit 구성 데이터에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 위치 항상 사용 설명 (NSLocationAlwaysUsageDescription) - 개발자가 앱이 항상 사용자의 위치에 액세스하려는 이유를 설명할 수 있습니다.
  • [사용되지 않음] 개인 정보 - 위치 사용 설명 (NSLocationUsageDescription) - 개발자가 앱이 사용자 위치에 액세스하려는 이유를 설명할 수 있습니다. 참고: 이 키는 iOS 8 이상에서 더 이상 사용되지 않습니다. 대신 NSLocationAlwaysUsageDescription 또는 NSLocationWhenInUseUsageDescription를 사용하십시오.
  • 개인 정보 - 사용 중 위치 사용 설명 (NSLocationWhenInUseUsageDescription) - 개발자가 앱이 실행되는 동안 사용자의 위치에 액세스하려는 이유를 설명할 수 있습니다.
  • [사용되지 않음] 개인 정보 - 미디어 라이브러리 사용 설명 - 개발자가 앱이 사용자의 미디어 라이브러리에 액세스하려는 이유를 설명할 수 있습니다. 참고: 이 키는 iOS 8 이상에서 더 이상 사용되지 않습니다. 대신 NSAppleMusicUsageDescription를 사용하세요.
  • 개인 정보 - 마이크 사용 설명 (NSMicrophoneUsageDescription) - 개발자가 앱이 디바이스 마이크에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 동작 사용 설명 (NSMotionUsageDescription) - 개발자가 앱이 디바이스의 가속도계에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 사진 라이브러리 사용 설명 (NSPhotoLibraryUsageDescription) - 개발자가 앱이 사용자의 사진 라이브러리에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 미리 알림 사용 설명 (NSRemindersUsageDescription) - 개발자가 앱이 사용자의 미리 알림에 액세스하려는 이유를 설명할 수 있습니다.
  • 개인 정보 - Siri 사용 설명 (NSSiriUsageDescription) - 개발자가 앱이 사용자 데이터를 Siri로 보내려는 이유를 설명할 수 있습니다.
  • 개인 정보 - 음성 인식 사용 설명 (NSSpeechRecognitionUsageDescription) - 개발자가 앱이 사용자 데이터를 Apple의 음성 인식 서버로 보내려는 이유를 설명할 수 있습니다.
  • 개인 정보 - TV 공급자 사용 설명 (NSVideoSubscriberAccountUsageDescription) - 개발자가 앱이 사용자의 TV 공급자 계정에 액세스하려는 이유를 설명할 수 있습니다.

Info.plist 키 작업에 대한 자세한 내용은 Apple의 정보 속성 목록 키 참조를 참조하세요.

개인 정보 키 설정

iOS 10 이상에서 HomeKit에 액세스하는 다음 예제를 참조하세요. 개발자는 앱의 Info.plist 파일에 키를 추가하고 NSHomeKitUsageDescription 앱이 사용자의 HomeKit 데이터베이스에 액세스하려는 이유를 선언하는 문자열을 제공해야 합니다. 이 문자열은 앱을 처음 실행할 때 사용자에게 표시됩니다.

An example NSHomeKitUsageDescription alert

Visual Studio용 Xamarin.iOS는 현재 기본 iOS 매니페스트 편집기 내에서 Info.plist 개인 정보 키 편집을 지원하지 않습니다. 대신 일반 PList 편집기를 사용해야 하므로 다음을 수행합니다.

  1. 솔루션 탐색기 Info.plist 파일을 마우스 오른쪽 단추로 클릭하고 [다음으로 열기]를 선택합니다.

  2. 프로그램 목록에서 일반 PList 편집기를 선택하여 파일을 연 다음 확인을 클릭합니다.

    Select the Generic PList Editor

  3. 편집기 + 에서 마지막 행의 단추를 클릭하여 목록에 새 항목을 추가합니다. 형식이 설정 String 되고 빈 값이 있는 "사용자 지정 속성"이라고 합니다.

  4. 속성 이름을 클릭하면 드롭다운이 표시됩니다.

  5. 드롭다운 목록에서 개인 정보 키(예: 개인 정보 - HomeKit 사용 설명)를 선택합니다.

    Select a Privacy key

  6. 앱이 지정된 기능 또는 사용자 정보에 액세스하려는 이유에 대한 설명을 값 열에 입력합니다.

    Enter a description

  7. 변경 내용을 파일에 저장합니다.

Important

위의 예제에서 Info.plist 파일에서 키를 설정 NSHomeKitUsageDescription 하지 않으면 iOS 10 이상에서 실행할 때 오류가 발생하지 않고 앱이 자동으로 실패(런타임 시 시스템에서 닫힘)됩니다.

요약

이 문서에서는 Apple이 iOS 10에서 변경한 보안 및 개인 정보 변경 내용과 Xamarin.iOS 앱에 미치는 영향에 대해 설명했습니다.