Seguridad de TLS
iOS, iPadOS y macOS son compatibles con los protocolos de seguridad de la capa de transporte (TLS 1.0, TLS 1.1, TLS 1.2 y TLS 1.3) y con los protocolos de seguridad de la capa de transporte de datagramas (DTLS). El protocolo TLS admite tanto AES128 como AES256, y prefiere conjuntos de encriptado con secreto-hacia-adelante. Las apps de Internet como Safari, Calendario y Mail utilizan automáticamente este protocolo para activar un canal de comunicación encriptado entre el dispositivo y los servicios de red. Las API de alto nivel (como CFNetwork) facilitan a los desarrolladores la adopción de TLS en sus apps, mientras que las API de bajo nivel (como Network.framework) proporcionan un control muy preciso. CFNetwork no permite SSL 3 y las apps que utilizan WebKit (como Safari) tienen prohibido realizar una conexión SSL 3.
En macOS 10.13 o versiones posteriores y iOS 11 o versiones posteriores, no se permiten los certificados de SHA‑1 para las conexiones TLS a menos que el usuario confíe en ellos. No se permiten en absoluto los certificados con claves RSA de menos de 2048 bits. El conjunto de encriptación simétrico RC4 está obsoleto en iOS 10 y macOS 10.12. De forma predeterminada, los servidores y clientes TLS con API de SecureTransport no permiten conjuntos de encriptación RC4, y no podrán conectarse cuando RC4 sea el único conjunto de encriptación disponible. Para mayor seguridad, las apps y servicios que requieran RC4 deberían actualizarse para usar conjuntos de encriptación seguros. En iOS 12.1, los certificados emitidos después del 15 de octubre de 2018 desde un certificado raíz en el que confía el sistema deben agregarse a un registro de confianza de transparencia de certificados para permitir conexiones TLS. En iOS 12.2, TLS 1.3 se activa de forma predeterminada para las API Network.framework y NSURLSession. Los clientes TLS que usen las API SecureTransport no pueden usar TLS 1.3.
Seguridad de transporte de las apps
La seguridad de transporte de las apps proporciona requisitos de conexión de forma predeterminada, de manera que las apps cumplan las buenas prácticas para conexiones seguras al utilizar las API NSURLConnection, CFURL o NSURLSession. De forma predeterminada, la seguridad de transporte de las apps limita la selección de encriptación para que incluya sólo conjuntos que proporcionen secreto-hacia-adelante, específicamente:
ECDHE_ECDSA_AES y ECDHE_RSA_AES en el modo Galois/Counter (GCM)
Modo de encadenamiento de bloques de encriptado (CBC)
Las apps pueden desactivar el requisito de secreto-hacia-adelante por dominio, en cuyo caso se agrega RSA_AES al conjunto de encriptación disponible.
Los servidores deben ser compatibles con TLS 1.2 y secreto-hacia-adelante, y los certificados deben ser válidos y estar firmados mediante SHA256 o más fuerte, con una clave RSA de al menos 2048 bits o una clave de curva elíptica de 256 bits como mínimo.
Las conexiones de red que no cumplan estos requisitos darán error a menos que la app omita la seguridad de transporte de las apps. Los certificados no válidos siempre dan como resultado un fallo grave e imposibilidad de conexión. La seguridad de transporte de las apps se aplica automáticamente a las apps compiladas para iOS 9 o versiones posteriores, o macOS 10.11 o versiones posteriores.
Verificación de la validez del certificado
La evaluación del estado de confianza de un certificado TLS se realiza de acuerdo con los estándares establecidos de la industria, como se indica en RFC 5280, e incorpora estándares tales como RFC 6962 (transparencia de los certificados). En iOS 11 o versiones posteriores y en macOS 10.13 o versiones posteriores, los dispositivos Apple se actualizan periódicamente con una lista actualizada de los certificados revocados y restringidos. La lista se agrega a partir de las listas de revocación de certificados (CRL) que publica cada una de las autoridades de certificados raíz integrados en quienes Apple confía, así como sus emisores de CA subordinados. La lista también puede incluir otras restricciones, a discreción de Apple. Esta información se consulta siempre que la API de una red tenga una función que se utilice para realizar una conexión segura. Si hay demasiados certificados revocados de una CA para enumerarlos de forma individual, una evaluación de confianza podría requerir una respuesta sobre el estado del certificado en línea (OCSP); si la respuesta no está disponible, la evaluación de confianza fallará.