
Segurança de TLS
O iOS, iPadOS e macOS oferecem suporte ao Transport Layer Security (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) e ao Datagram Transport Layer Security (DTLS). O protocolo TLS é compatível com AES128 e AES256, e prefere conjuntos de cifras com encaminhamento secreto. Apps que usam internet, como Safari, Calendário e Mail, usam esse protocolo automaticamente para ativar um canal de comunicação criptografado entre o dispositivo e os serviços de rede. As APIs de alto nível (como CFNetwork
) facilitam a adoção do TLS por desenvolvedores em apps, enquanto as APIs de baixo nível (como Network.framework
) fornecem um controle mais detalhado. CFNetwork
não permite SSL 3, e os apps que usam WebKit (como o Safari) são proibidos de fazer uma conexão SSL 3.
Em dispositivos com iOS 11, iPadOS 13.1 e macOS 10.13 ou posteriores, os certificados SHA‑1 não têm mais permissão para conexões TLS sem que sejam confiados pelo usuário. Certificados com chaves RSA com menos de 2048 bits também não são permitidos. O conjunto de cifras simétricas RC4 não é mais usado no iOS 10 e no macOS 10.12. Por padrão, clientes ou servidores TLS implementados com APIs de Transporte Seguro não têm os conjuntos de cifras RC4 ativados e não podem se conectar quando RC4 for o único conjunto de cifras disponível. Para ter mais segurança, serviços ou apps que requeiram RC4 devem ser atualizados para usar conjuntos de cifras seguros.
Em dispositivos com iOS 12.1, os certificados emitidos após 15 de outubro de 2018 a partir de um certificado raiz de confiança do sistema devem constar de um registro de Transparência de Certificado confiável para serem permitidos em conexões TLS.
Em dispositivos com iOS 12.2 ou posterior, o TLS 1.3 está ativado por padrão para as APIs Network.framework
e NSURLSession
. Clientes TLS que usam APIs SecureTransport não podem usar TLS 1.3.
Segurança de Transporte em Apps
A Segurança de Transporte em Apps fornece requisitos de conexão padrão para que os apps possam seguir as melhores práticas de conexão segura ao usar as APIs NSURLConnection
, CFURL
ou NSURLSession
. Por padrão, a Segurança de Transporte em Apps limita a seleção de cifras para incluir apenas os conjuntos que fornecem encaminhamento secreto, especificamente:
ECDHE_ECDSA_AES e ECDHE_RSA_AES no Modo Galois/Counter (GCM)
Modo de Encadeamento de Bloco de Cifra (CBC)
Apps podem desativar o requisito de encaminhamento secreto por domínio, adicionando, nesse caso, RSA_AES ao conjunto de cifras disponíveis.
Os servidores precisam oferecer suporte ao TLS 1.2 e encaminhamento secreto, e os certificados precisam ser válidos e assinados com SHA256 ou mais forte com, no mínimo, uma chave RSA de 2048 bits ou chave de curva elíptica de 256 bits.
As conexões de rede que não atenderem a esses requisitos falharão, a não ser que o app substitua a Segurança de Transporte em Apps. Certificados inválidos sempre resultarão em falha e falta de conexão. A Segurança de Transporte em Apps é aplicada automaticamente a apps compilados para iOS 9, iPadOS 13.1 e macOS 10.11 ou posteriores.
Verificação da validade de certificados
A avaliação do estado de confiança de um certificado TLS é realizada de acordo com padrões de mercado consolidados, conforme definido no RFC 5280 e incorpora padrões novos como o RFC 6962 (Transparência de Certificado). No iOS 11 ou posterior e macOS 10.13 ou posterior, os dispositivos Apple são atualizados periodicamente com uma lista atual de certificados revogados e restringidos. A lista é agregada a partir de listas de revogação de certificados (CRLs) que são publicadas por todas as autoridades de certificação raiz integradas nas quais a Apple confia, assim como por suas ACs emissoras subordinadas. A lista também pode incluir outras restrições a critério da Apple. Essas informações são consultadas sempre que uma função de API de rede é usada para fazer uma conexão segura. Se houver um número grande demais de certificados revogados de uma AC para serem listados individualmente, uma avaliação de confiança pode exigir uma resposta de estado de certificado on-line (OCSP), e ser malsucedida caso a resposta não esteja disponível.