TLS-suojaus
iOS, iPadOS ja macOS tukevat TLS-versioita (Transport Layer Security) 1.0, 1.1, 1.2 ja 1.3 sekä DTLS:ää (Datagram Transport Layer Security). TLS-protokolla tukee AES-128:aa ja AES-256:ta ja suosii salausmenetelmiä, joissa on forward secrecy -ominaisuus. Safarin, Kalenterin ja Mailin kaltaiset internet-apit muodostavat automaattisesti tällä protokollalla salatun tiedonsiirtokanavan laitteen ja verkkopalveluiden välille. Korkeamman tason rajapinnat (kuten CFNetwork) auttavat kehittäjiä ottamaan TLS:n käyttöön omissa apeissaan. Alemman tason rajapinnat (kuten Network.framework) puolestaan tarjoavat tarkan valvonnan. CFNetwork hylkää SSL 3:n, ja appeja, jotka käyttävät WebKitiä (kuten Safari), estetään muodostamasta SSL 3 -yhteyttä.
iOS 11:ssä ja uudemmissa ja macOS 10.13:ssa ja uudemmissa SHA-1-varmenteita ei enää sallita TLS-yhteyksille, jollei käyttäjä luota niihin. Myöskään varmenteita, joiden RSA-avaimet ovat alle 2048 bittiä, ei sallita. Symmetrinen RC4-salausmenetelmä poistetaan käytöstä iOS 10:ssä ja macOS 10.12:ssa. SecureTransport API -rajapinnoilla toteutetuilla TLS-asiakkailla tai -palvelimilla ei oletusarvoisesti ole käytössä RC4-salausmenetelmää, eivätkä ne voi muodostaa yhteyttä, jos RC4 on ainoa saatavilla oleva vaihtoehto. Suojauksen parantamiseksi RC4:ää vaativia palveluita tai appeja tulisi päivittää käyttämään turvallisia salausmenetelmiä. iOS 12.1:ssä 15.10.2018 jälkeen järjestelmän luottamasta juurivarmenteesta myönnettyjen varmenteiden täytyy kirjautua sisään luotettuun varmenteen läpinäkyvyyslokiin TLS-yhteyksien sallimiseksi. iOS 12.2:ssa TLS 1.3 on oletuksena käytössä Network.framework- ja NSURLSession-rajapinnoille. TLS-asiakkaat, jotka käyttävät SecureTransport-rajapintoja, eivät voi käyttää TLS 1.3:a.
ATS (App Transport Security)
ATS (App Transport Security) tarjoaa oletusarvoiset yhteysvaatimukset niin, että apit noudattavat parhaita käytäntöjä turvallisten yhteyksien suhteen käyttäessään NSURLConnection-, CFURL- tai NSURLSession-rajapintoja. ATS rajaa oletusarvoisesti salauksen valinnan sisältämään ainoastaan ratkaisut, jotka tarjoavat forward secrecy -ominaisuuden, erityisesti:
ECDHE_ECDSA_AES ja ECDHE_RSA_AES Galois-/laskuritilassa (GCM)
Salauslohkoketjutus (CBC) ‑tila
Apit voivat poistaa forward secrecy -vaatimuksen käytöstä domain-kohtaisesti. Tässä tapauksessa RSA_AES lisätään käytettävissä olevien koodipakettien sarjaan.
Palvelimien tulee tukea TLS 1.2:ta ja forward secrecy -ominaisuutta. Lisäksi varmenteiden tulee olla voimassa ja allekirjoitettu käyttäen SHA256:ta tai mieluummin minimissään 2048-bittistä RSA-avainta tai 256-bittistä elliptisen käyrän avainta.
Sellaisten verkkoyhteyksien muodostaminen ei onnistu, jotka eivät täytä näitä vaatimuksia, ellei appi ohita ATS:ää. Virheellisistä varmenteista on aina seurauksena laitteistovirhe tai se, ettei yhteyttä muodostu. ATS:ää käytetään automaattisesti appeihin, jotka on rakennettu iOS 9:lle tai uudemmalle ja macOS 10.11:lle tai uudemmalle.
Varmenteen tarkistus
TLS-varmenteen luotetun tilan arviointi tehdään alan vakiintuneiden standardien mukaisesti, kuten on määritetty standardissa RFC 5280, ja siihen sisältyy uusia standardeja, kuten RFC 6962 (varmenteen läpinäkyvyys). iOS 11:ssä tai uudemmissa ja macOS 10.13:ssa tai uudemmissa Applen laitteisiin päivitetään säännöllisesti nykyinen luettelo perutuista ja rajoitetuista varmenteista. Luettelo on peräisin varmenteen sulkulistoista (CRL-listat), joita julkaisevat jokainen Applen luottama vakiojuurivarmentaja sekä niiden alapuoliset varmenteen myöntäjät. Luettelo voi myös sisältää muita rajoituksia Applen harkinnan mukaisesti. Tietoja kysytään aina, kun verkkorajapintatoimintoa käytetään salatun yhteyden muodostamista varten. Jos varmenteen myöntäjältä on saatu liian monta peruttua varmennetta luetteloitaviksi yksitellen, luottamuksen arviointi voi edellyttää, että tarvitaan OCSP-vastaus, ja arviointi voi epäonnistua, jos vastausta ei ole saatavilla.