TLS-sikkerhet
iOS, iPadOS og macOS støtter Transport Layer Security (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) og Datagram Transport Layer Security (DTLS). TLS-protokollen støtter både AES128 og AES256 og foretrekker kodesamlinger med «forward secrecy». Internett-apper som Safari, Kalender og Mail bruker denne protokollen automatisk for å opprette en kryptert kommunikasjonskanal mellom enheten og nettverkstjenestene. Høynivå-API-er (for eksempel CFNetwork) gjør det enkelt for utviklere å ta i bruk TLS i appene, samtidig som lavnivå-API-er (for eksempel Network-rammeverket) sørger for finmasket kontroll. CFNetwork tillater ikke SSL 3, og det er forbudt for apper som bruker WebKit (for eksempel Safari), å opprette SSL 3-forbindelser.
Fra og med iOS 11 og macOS 10.13 tillates ikke lenger SHA-1-sertifikater til bruk med TLS-forbindelser, med mindre de er godkjent av brukeren. Sertifikater med RSA-nøkler som er kortere enn 2048 bit, tillates heller ikke. Kodesamlingen RC4 godtas ikke fra og med iOS 10 og macOS 10.12. TLS-klienter eller -tjenere som er implementert med SecureTransport API-er, har som standard ikke aktivert kodesamlingen RC4, og de kan ikke opprette forbindelse når RC4 er den eneste tilgjengelige kodesamlingen. For å øke sikkerheten bør tjenester eller apper som krever RC4, oppgraderes til å bruke sikre kodesamlinger. I iOS 12.1 kreves det at sertifikater utstedt etter 15. oktober 2018 fra et systemgodkjent rotsertifikat, må være logget i en godkjent Certificate Transparency-logg før de kan brukes med TLS-forbindelser. TLS 1.3 er aktivert som standard for Network-rammeverk og NSURLSession API-er i iOS 12.2. TLS-klienter som bruker SecureTransport-API-er, kan ikke bruke TLS 1.3.
App Transport Security
App Transport Security sørger for standard tilkoblingskrav slik at apper følger mønsterpraksiser for sikre forbindelser ved bruk av API-ene NSURLConnection, CFURL eller NSURLSession. App Transport Security begrenser som standard kodevalgene slik at det kun er mulig å velge samlinger som gir «forward secrecy», nærmere bestemt:
ECDHE_ECDSA_AES og ECDHE_RSA_AES i Galois/Counter Mode (GCM)
CBC-modus (Cipher Block Chaining)
Apper kan deaktivere kravet om «forward secrecy» per domene, og i så fall blir RSA_AES lagt til settet med tilgjengelige koder.
Tjenere må ha støtte for TLS 1,2 og «forward secrecy», og sertifikater må være gyldige og signerte ved hjelp av SHA256 eller sterkere med minimum en 2048-bit RSA-nøkkel eller en 256-bit-nøkkel basert på elliptisk kurve.
Nettverkstilkoblinger som ikke oppfyller disse kravene, kan ikke opprettes, med mindre appen overstyrer App Transport Security. Ugyldige sertifikater vil alltid føre til en feil som ikke kan overstyres, og at ingen tilkobling opprettes. App Transport Security tas automatisk i bruk for apper som er kompilert for iOS 9 eller nyere og macOS 10.11 eller nyere.
Kontroll av sertifikatets gyldighet
Kontroll av status for et TLS-sertifikat gjennomføres i tråd med etablerte bransjestandarder, som definert i RFC 5280, og ved hjelp av nye standarder, for eksempel RFC 6962 (sertifikat-transparens). I iOS 11 og nyere og macOS 10.13 og nyere oppdateres Apple-enheter regelmessig med en oppdatert liste over tilbakekalte og begrensede sertifikater. Listen lages på grunnlag av lister over tilbakekalte sertifikater (CRL-er) som publiseres av hver av de innebygde rotsertifikatmyndighetene som Apple stoler på, og deres underlagte sertifiseringsmyndigheter. Listen kan også inkludere andre begrensninger etter Apples skjønn. Denne informasjonen brukes når en API-funksjon for nettverk brukes til å opprette en sikker tilkobling. Hvis det finnes for mange tilbakekalte sertifikater fra en sertifiseringsmyndighet til at de kan vises enkeltvis, kan en kontroll i stedet kreve at det finnes Online Certificate Status Response (OCSP), og hvis det ikke finnes, vil ikke godkjenningskontrollen lykkes.