TLS-säkerhet
iOS, iPadOS och macOS har stöd för TLS-säkerhet (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) och DTLS (Datagram Transport Layer Security). TLS-protokollet stöder både AES128 och AES256 samt föredrar kodpaket med FS (Forward Secrecy). Internetappar som Safari, Kalender och Mail använder det här protokollet automatiskt för att skapa en krypterad kommunikationskanal mellan enheter och nätverkstjänster. API:er på hög nivå (som CFNetwork) gör det enkelt för utvecklare att använda TLS i sina appar, medan API:er på låg nivå (som Network.framework) ger en mer finmaskig kontroll. SSL 3 tillåts inte av CFNetwork och appar som använder WebKit (t.ex. Safari) får inte öppna SSL 3-anslutningar.
I iOS 11 eller senare och macOS 10.13 eller senare är SHA-1-certifikat inte längre tillåtna för TLS-anslutningar, med undantag för om de är betrodda av användaren. Certifikat med RSA-nycklar som är kortare än 2048 bitar är inte heller tillåtna. Den symmetriska kodningsgruppen RC4 är utfasad i iOS 10 och macOS 10.12. Som förval är RC4 inte aktiverat för TLS-klienter eller -servrar som implementeras med SecureTransport API, och de kan inte ansluta när RC4 är enda tillgängliga kodningsgruppen. För att öka säkerheten bör tjänster och appar som kräver RC4 uppgraderas för användning med säkra kodningsgrupper. I iOS 12.1 måste certifikat som är utfärdade efter den 15 oktober 2018 från ett systembetrott rotcertifikat loggas i en betrodd Certificate Transparency-logg för att tillåtas för TLS-anslutningar. I iOS 12.2 är TLS 1.3 aktiverat som förval för Network.framework och NSURLSession-API:er. TLS-klienter som använder SecureTransport-API:erna kan inte använda TLS 1.3.
App Transport Security
App Transport Security tillhandahåller förvalda anslutningskrav så att appar följer bästa praxis för säkra anslutningar när API:erna NSURLConnection, CFURL eller NSURLSession används. Som förval begränsar App Transport Security kodvalet till att endast inkludera grupper som tillhandahåller FS (forward secrecy), mer specifikt:
ECDHE_ECDSA_AES och ECDHE_RSA_AES i GCM-läge (Galois/Counter Mode)
CBC-läge (Cipher Block Chaining)
Appar kan avaktivera FS-kravet per domän. I sådana fall läggs RSA_AES till i uppsättningen tillgängliga koder.
Servrarna måste ha stöd för TLS 1.2 och FS, och certifikaten måste vara giltiga och signerade med SHA256 eller starkare och ha minst en 2048-bitars RSA-nyckel eller en elliptisk 256-bitars kurvnyckel.
Nätverksanslutningar som inte uppfyller dessa krav kommer att misslyckas, förutsatt att appen inte förbigår App Transport Security. Ogiltiga certifikat leder obevekligen till fel och att ingen anslutning upprättas. App Transport Security används automatiskt i appar som kompileras för iOS 9 eller senare och för macOS 10.11 eller senare.
Kontroll av certifikatvalidering
Utvärdering av den betrodda statusen för ett TLS-certifikat sker i enlighet med etablerad branschstandard, beskrivet i RFC 5280, och innehåller blivande standarder som RFC 6962 (certifikattransparens). I iOS 11 eller senare, samt macOS 10.13 eller senare, uppdateras Apple-enheter regelbundet med en aktuell lista över återkallade och begränsade certifikat. Listan sammanställs utifrån certifikatåterkallningslistor (CRL) som publiceras av de olika inbyggda rotcertifikatutfärdare som är betrodda av Apple, liksom av deras underordnade certifikatutfärdare. Listan kan också innehålla andra begränsningar efter beslut från Apple. Den här informationen efterfrågas varje gång en nätverks-API-funktion används till att skapa en säker anslutning. Om det finns för många återkallade certifikat från en certifikatutfärdare för att lista dem ett och ett kan en tillförlitlighetsutvärderingen istället kräva ett OCSP (online certificate status response), och tillförlitlighetsutvärderingen misslyckas om svaret inte är tillgängligt.