Características de seguridad y privacidad de iOS
En este artículo se explica cómo trabajar con la seguridad y privacidad en iOS y cómo afectan a una aplicación de Xamarin.iOS.
Apple ha realizado varias mejoras en la seguridad y la privacidad en iOS 10 (y superiores) que ayudarán al desarrollador a mejorar la seguridad de sus aplicaciones y garantizar la privacidad del usuario final. En este artículo se trata la implementación de estas características en una aplicación Xamarin.iOS.
Mejoras generales
Los siguientes cambios generales se han realizado en seguridad y privacidad en iOS 10:
- La API de Common Data Security Architecture (CDSA) está en desuso y debe reemplazarse por la API de SecKey para generar claves asimétricas.
- La nueva clave
NSAllowsArbitraryLoadsInWebContent
se puede agregar al archivo Info.plist deuna aplicación y permitirá que las páginas web se carguen correctamente mientras la protección de la seguridad de transporte de Apple (ATS) sigue habilitada para el resto de la aplicación. Para obtener más información, consulte nuestra documentación de seguridad de transporte de aplicaciones. - Dado que el nuevo Portapapeles en iOS 10 y macOS Sierra permite al usuario copiar y pegar entre dispositivos, la API se ha ampliado para permitir que un Portapapeles se limite a un dispositivo específico y se le aplique una marca de tiempo para que se borre automáticamente en un momento dado. Además, las áreas de montaje con nombre ya no se conservan y deben sustituirse por los contenedores de áreas de montaje compartidos.
- Para todas las conexiones SSL/TLS, el cifrado simétrico RC4 está ahora deshabilitado de manera predeterminada. Además, la API de transporte seguro ya no admite SSLv3 y se recomienda que el desarrollador deje de usar la criptografía SHA-1 y 3DES lo antes posible.
Acceso a datos de usuario privados
Como resultado, las aplicaciones que se ejecutan en iOS 10 (o posterior) deben declarar estáticamente su intención de acceder a características específicas o información del usuario escribiendo una o varias claves específicas de privacidad en sus archivos Info.plist que explican al usuario por qué la aplicación quiere obtener acceso.
Importante
Las aplicaciones que no proporcionen las claves requeridas serán canceladas silenciosamente por el sistema cuando intenten acceder a una de las funciones restringidas o a la información del usuario, sin error. Si una aplicación se inicia inesperadamente con errores en iOS 10, asegúrese de que se han especificado todos los Info.plist necesarios.
Están disponibles las siguientes claves relacionadas con la privacidad:
- Privacidad - Descripción del uso de Apple Music (
NSAppleMusicUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder a la biblioteca multimedia del usuario. - Privacidad - Descripción del uso de periféricos por bluetooth (
NSBluetoothPeripheralUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder a bluetooth en el dispositivo del usuario. - Privacidad - Descripción del uso de calendarios (
NSCalendarsUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder al calendario del usuario. - Privacidad - Descripción del uso de la cámara (
NSCameraUsageDescription
): permite al desarrollador describir por qué la aplicación desea acceder a la cámara del dispositivo. - Privacidad - Descripción del uso de los contactos (
NSContactsUsageDescription
): permite al desarrollador describir por qué la aplicación desea acceder a los contactos del usuario. - Privacidad - Descripción del uso compartido de salud (
NSHealthShareUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder a los datos de salud del usuario. Para obtener más información, consulte La referencia de la clase HKHealthStore de Apple. - Privacidad - Descripción del uso de la actualización de salud (
NSHealthUpdateUsageDescription
): permite al desarrollador describir por qué la aplicación desea editar los datos de salud del usuario. Para obtener más información, consulte La referencia de la clase HKHealthStore de Apple. - Privacidad - Descripción de uso de HomeKit (
NSHomeKitUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder a los datos de configuración de HomeKit del usuario. - Privacidad - Descripción del uso de Location Always (
NSLocationAlwaysUsageDescription
): permite al desarrollador describir por qué la aplicación desea tener siempre acceso a la ubicación del usuario. - [En desuso] Privacidad - Descripción del uso de la ubicación (
NSLocationUsageDescription
): permite al desarrollador describir por qué la aplicación desea acceder a la ubicación del usuario. NOTA: Esta clave ha quedado en desuso en iOS 8 (y versiones posteriores). UseNSLocationAlwaysUsageDescription
oNSLocationWhenInUseUsageDescription
en su lugar. - Privacidad - Descripción del uso de Location When In Use (
NSLocationWhenInUseUsageDescription
): permite al desarrollador describir por qué la aplicación desea acceder a la ubicación del usuario mientras se está ejecutando. - [En desuso] Privacidad - Descripción del uso de la biblioteca multimedia: permite al desarrollador describir por qué la aplicación quiere acceder a la biblioteca multimedia del usuario. NOTA: Esta clave ha quedado en desuso en iOS 8 (y versiones posteriores). En su lugar, use
NSAppleMusicUsageDescription
. - Privacidad - Descripción del uso del micrófono (
NSMicrophoneUsageDescription
): permite al desarrollador describir por qué la aplicación desea acceder al micrófono del dispositivo. - Privacidad - Descripción del uso del movimiento (
NSMotionUsageDescription
): Permite al desarrollador describir por qué la aplicación quiere acceder al acelerómetro del dispositivo. - Privacidad - Descripción del uso de la fototeca (
NSPhotoLibraryUsageDescription
): permite al desarrollador describir por qué la aplicación desea acceder a la fototeca del usuario. - Privacidad - Descripción del uso de recordatorios (
NSRemindersUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder a los recordatorios del usuario. - Privacidad - Descripción del uso de Siri (
NSSiriUsageDescription
): permite al desarrollador describir por qué la aplicación quiere enviar datos del usuario a Siri. - Privacidad - Descripción del uso del reconocimiento de voz (
NSSpeechRecognitionUsageDescription
): permite al desarrollador describir por qué la aplicación desea enviar datos del usuario a los servidores de reconocimiento de voz de Apple. - Privacidad - Descripción del uso del proveedor de TV (
NSVideoSubscriberAccountUsageDescription
): permite al desarrollador describir por qué la aplicación quiere acceder a la cuenta del proveedor de TV del usuario.
Para obtener más información sobre cómo trabajar con las claves de Info.plist, consulte la Referencia de claves de la lista de propiedades de información de Apple.
Configuración de claves de privacidad
Tome el siguiente ejemplo de acceso a HomeKit en iOS 10 (y versiones posteriores): el desarrollador deberá agregar la clave NSHomeKitUsageDescription
al archivo info.plist de la aplicación y proporcionar una cadena que declare por qué la aplicación quiere acceder a la base de datos HomeKit del usuario. Esta cadena se presentará al usuario la primera vez que ejecute la aplicación:
Actualmente, Xamarin.iOS para Visual Studio no admite la edición de las claves de privacidad de Info.plist desde el editor de manifiestos de iOS predeterminado. En su lugar, deberá usar el editor de PList genérico, por lo que debe hacer lo siguiente:
Haga clic con el botón derecho en el archivo Info.plist en el Explorador de soluciones y seleccione Abrir con....
Seleccione Editor genérico de PList de la lista de programas para abrir el archivo y haga clic en Aceptar.
Haga clic en el botón + de la última fila del editor para agregar una nueva entrada a la lista. Esto se denominará "Propiedad personalizada", con el tipo establecido en
String
y un valor vacío.Haga clic en el nombre de la propiedad y aparecerá una lista desplegable.
En la lista desplegable, seleccione una clave de privacidad (como Privacidad - Descripción de uso de HomeKit):
Escriba una descripción en la columna Valor para saber por qué la aplicación quiere acceder a la característica o la información de usuario especificadas:
Guarde los cambios en el archivo.
Importante
En el ejemplo anterior, si no se establece la clave NSHomeKitUsageDescription
en el archivo Info.plist, la aplicación producirá un error silencioso (el sistema la cerrará en el entorno de ejecución sin error) cuando se ejecute en iOS 10 (o superior).
Resumen
En este artículo se han tratado los cambios de seguridad y privacidad que Apple ha realizado en iOS 10 y cómo afectan a una aplicación de Xamarin.iOS.