Características de seguridad y privacidad de iOS

En este artículo se trata el trabajo con seguridad y privacidad en iOS y cómo afectan a una aplicación 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

Se han realizado los siguientes cambios generales en seguridad y privacidad en iOS 10:

  • La API de Common Data Security Architecture (CDSA) está en desuso y debe reemplazarse por la API SecKey para generar claves asimétricas.
  • La nueva clave se puede agregar al archivo Info.plist de una aplicación y permitirá que las páginas web se carguen correctamente mientras la protección de Seguridad de transporte de NSAllowsArbitraryLoadsInWebContent Apple (ATS) todavía está habilitada para el resto de la aplicación. NSAllowsArbitraryLoadsInWebContent Para más información, consulte nuestra documentación de App Transport Security.
  • Dado que el nuevo Portapapeles en iOS 10 y macOS Sierra permite al usuario copiar y pegar entre dispositivos, la API se ha expandido para permitir que un Portapapeles se limite a un dispositivo específico y que la marca de tiempo se borra automáticamente en un punto determinado. Además, las tablas de pegado con nombre ya no se conservan y se deben reemplazar por los contenedores de la placa de pegado compartidos.
  • Para todas las conexiones SSL/TLS, el cifrado simétrico RC4 ahora está deshabilitado de forma 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 privado

Las aplicaciones que se ejecutan en iOS 10 (o posterior) deben declarar estáticamente su intención de acceder a características o información de usuario específicas mediante la especificación de una o varias claves de privacidad en sus archivos Info.plist que expliquen al usuario por qué la aplicación quiere obtener acceso.

Importante

El sistema finalizará de forma silenciosa las aplicaciones que no proporcionen las claves necesarias cuando intenten acceder a una de las características restringidas o a la información del usuario, sin errores. Si una aplicación se inicia con errores inesperados en iOS 10, asegúrese de que se ha especificado todo el archivo Info.plist necesario.

Están disponibles las siguientes claves relacionadas con la privacidad:

  • Privacidad: Descripción Música uso de Apple ( ) : permite al desarrollador describir por qué la aplicación quiere acceder a la biblioteca multimedia del usuario.
  • Privacidad: Bluetooth descripción de uso periférico ( ): permite al desarrollador describir por qué la aplicación quiere acceder a Bluetooth en el dispositivo del usuario.
  • Privacy - Calendars Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder al calendario del usuario.
  • Privacidad: descripción del uso de la cámara ( ): permite al desarrollador describir por qué la aplicación quiere acceder a la cámara del dispositivo.
  • Privacidad: descripción del uso de contactos ( ): permite al desarrollador describir por qué la aplicación quiere acceder a los contactos del usuario.
  • Privacy - Health Share Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder a los datos de mantenimiento del usuario. Para más información, consulte la referencia de la clase HKHealthStore deApple.
  • Privacy - Health Update Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere editar los datos de mantenimiento del usuario. Para más información, consulte la referencia de la clase HKHealthStore deApple.
  • Privacy - HomeKit Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder a los datos de configuración de HomeKit del usuario.
  • Privacy - Location Always Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere tener siempre acceso a la ubicación del usuario.
  • [En desuso] Privacidad: descripción del uso de la ubicación ( ): permite al desarrollador describir por qué la aplicación quiere acceder a la ubicación del usuario. NOTA: Esta clave ha quedado en desuso en iOS 8 (y superior). Use NSLocationAlwaysUsageDescription o NSLocationWhenInUseUsageDescription en su lugar.
  • Privacy - Location When In Use Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder a la ubicación del usuario mientras se ejecuta.
  • [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 superior). Usa NSAppleMusicUsageDescription en su lugar.
  • Privacidad: descripción del uso del micrófono ( ): permite al desarrollador describir por qué la aplicación quiere acceder al micrófono de los dispositivos.
  • Privacidad: descripción del uso del movimiento ( ): permite al desarrollador describir por qué la aplicación quiere acceder al acelerómetro del dispositivo.
  • Privacy - Photo Library Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder a la biblioteca de fotos del usuario.
  • Privacy - Reminders Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder a los recordatorios del usuario.
  • Privacidad: descripción del uso de Siri ( ): permite al desarrollador describir por qué la aplicación quiere enviar datos de usuario a Siri.
  • Privacidad: descripción del uso del reconocimiento de voz ( ): permite al desarrollador describir por qué la aplicación quiere enviar datos de usuario a los servidores de reconocimiento de voz de Apple.
  • Privacy - TV Provider Usage Description ( ): permite al desarrollador describir por qué la aplicación quiere acceder a la cuenta del proveedor de televisión del usuario.

Para obtener más información sobre cómo trabajar con claves Info.plist, vea Referencia de clave de lista de propiedades de información deApple.

Establecimiento de claves de privacidad

En el ejemplo siguiente de acceso a HomeKit en iOS 10 (y versiones mayores), el desarrollador deberá agregar la clave 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 NSHomeKitUsageDescription homeKit del NSHomeKitUsageDescription usuario. Esta cadena se presentará al usuario la primera vez que ejecute la aplicación:

Una alerta NSHomeKitUsageDescription de ejemploUna

Xamarin.iOS para Visual Studio actualmente 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 PList genérico, así que haga lo siguiente:

  1. Haga clic con el botón derecho en el archivo Info.plist en la Explorador de soluciones y seleccione Abrir con....

  2. Seleccione el Editor PList genérico de la lista de programas para abrir el archivo y, a continuación, haga clic en Aceptar.

    Seleccionar el editor PList genérico

  3. 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.

  4. Haga clic en el nombre de la propiedad y aparecerá una lista desplegable.

  5. En la lista desplegable, seleccione una clave de privacidad (por ejemplo, Privacidad - Descripción de uso de HomeKit):

    Seleccionar una clave de privacidad Seleccioneuna clave de

  6. Escriba una descripción en la columna Valor para saber por qué la aplicación quiere acceder a la información de usuario o característica dada:

    Escriba una descripción Escriba

  7. Guarde los cambios en el archivo.

Importante

En el ejemplo anterior, si no se establece la clave en el archivo NSHomeKitUsageDescriptionNSHomeKitUsageDescription se produciría un error en la aplicación en modo silencioso (cerrado por el sistema en tiempo de ejecución) sin errores cuando se ejecuta en iOS 10 (o superior).

Resumen

En este artículo se han abordado los cambios de seguridad y privacidad que Apple ha realizado en iOS 10 y cómo afectan a una aplicación xamarin.iOS.