TLS-sikkerhed
iOS, iPadOS og macOS understøtter Transport Layer Security (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) og Datagram Transport Layer Security (DTLS). TLS-protokollen understøtter både AES128 og AES256 og foretrækker kodepakker med Forward Secrecy. Internetapps som Safari, Kalender og Mail bruger automatisk denne protokol til at åbne en krypteret kommunikationskanal mellem enheden og netværkstjenester. API'er på højt niveau (f.eks. CFNetwork) gør det nemt for udviklere at benytte TLS i deres apps, og API'er på lavt niveau (f.eks. Network.framework) indeholder fintmaskede kontrolmuligheder. CFNetwork tillader ikke brug af SSL 3, og apps, der bruger WebKit (f.eks. Safari), forhindres i at oprette en SSL 3-forbindelse.
I iOS 11 og nyere versioner og macOS 10.13 og nyere versioner er SHA-1-certifikater ikke længere tilladt for TLS-forbindelser, medmindre brugeren godkender dem. Certifikater med RSA-nøgler på under 2048 bit er heller ikke tilladt. Den symmetriske RC4-kodepakke er udfaset i iOS 10 og macOS 10.12. RC4-kodepakker er som standard ikke slået til for TLS-klienter og -servere, der er implementeret med SecureTransport-API'er, og disse klienter og servere kan derfor ikke oprette forbindelse, når RC4 er den eneste tilgængelige kodepakke. Tjenester og apps, der kræver RC4, bør opgraderes, så de bruger sikre kodepakker. I iOS 12.1 skal certifikater, der er udstedt efter 15. oktober 2018 fra et systemgodkendt rodcertifikat, logges i en godkendt CT-log (Certificate Transparency) for at blive tilladt til TLS-forbindelser. I iOS 12.2 er TLS 1.3 som standard slået til for Network.framework- og NSURLSession-API'er. TLS-klienter, der bruger SecureTransport API'er, kan ikke bruge TLS 1.3.
App Transport Security
App Transport Security sørger for standardkrav til forbindelser, så apps følger den bedste praksis for sikre forbindelser ved brug af NSURLConnection-, CFURL- eller NSURLSession-API'er. App Transport Security begrænser som standard kodningsvalget, så kun pakker med Forward Secrecy er inkluderet, nærmere bestemt:
ECDHE_ECDSA_AES og ECDHE_RSA_AES med Galois-/tællerfunktion (GCM)
CBC-funktion (Cipher Block Chaining)
Apps kan slå kravet om Forward Secrecy fra pr. domæne. Hvis de gør det, føjes RSA_AES til sættet med tilgængelige kodninger.
Servere skal understøtte TLS 1.2 med Forward Secrecy, og certifikater skal være gyldige og skal signeres vha. SHA256 eller en bedre metode og som minimum have en 2048-bit RSA-nøgle eller en 256-bit elliptisk kurvenøgle.
Netværksforbindelser, der ikke overholder disse krav, vil mislykkes, medmindre appen tilsidesætter App Transport Security. Ugyldige certifikater vil altid mislykkes, så der ikke oprettes forbindelse. App Transport Security anvendes automatisk på apps, der er kompileret til iOS 9 og nyere versioner og macOS 10.11 og nyere versioner.
Kontrol af certifikaters gyldighed
Status for godkendelse af et TLS-certifikat foretages i henhold til etablerede branchestandarder som fastlagt i RFC 5280 og inkorporerer nye standarder, f.eks. RFC 6962 (om certifikaters gennemsigtighed). Apple-enheder med iOS 11 eller en nyere version eller macOS 10.13 eller en nyere version opdateres jævnligt med en aktuel liste med tilbagekaldte certifikater og certifikater med begrænsninger. Listen dannes ud fra lister med tilbagekaldte certifikater, som udgives af hver af de indbyggede rodcertifikatmyndigheder, som er godkendt af Apple, samt af deres underordnede CA-udstedere. Efter Apples valg kan listen også omfatte andre begrænsninger. Der slås op i disse oplysninger, hver gang en funktion i et netværks-API bruges til at oprette en sikker forbindelse. Hvis der er for mange tilbagekaldte certifikater fra en certifikatmyndighed til, at de alle kan anføres på listen, kan en evaluering af tillid i stedet bestemme, at der er behov for et svar på et onlinecertifikats status (OCSP). Hvis der ikke kommer et svar, kan evalueringen ikke gennemføres.