Keamanan TLS
iOS, iPadOS, serta macOS mendukung Keamanan Lapisan Transpor (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) dan Keamanan Lapisan Transpor Datagram (DTLS). Protokol TLS mendukung AES128 dan AES256, dan memprioritaskan rangkaian cipher dengan kerahasiaan maju. App internet seperti Safari, Kalender, dan Mail menggunakan protokol ini secara otomatis untuk mengaktifkan saluran komunikasi terenkripsi antara perangkat dan layanan jaringan. API Level Tinggi (seperti CFNetwork) memudahkan pengembang untuk mengadopsi TLS di app mereka, sementara API level rendah (seperti Network.framework) menyediakan kontrol cermat. CFNetwork tidak mengizinkan SSL 3, dan app yang menggunakan WebKit (seperti Safari) dilarang membuat koneksi SSL 3.
Di iOS 11 atau lebih baru dan macOS 10.13 atau lebih baru, sertifikat SHA-1 tidak lagi diizinkan untuk koneksi TLS kecuali jika dipercaya oleh pengguna. Sertifikat dengan kunci RSA yang lebih pendek dari 2048 bit juga tidak diizinkan. Rangkaian cipher simetris RC4 tidak lagi digunakan di iOS 10 dan macOS 10.12. Secara default, klien atau server TLS yang diterapkan dengan API SecureTransport tidak memiliki rangkaian cipher RC4 dan tidak dapat terhubung jika RC4 adalah satu-satunya rangkaian cipher yang tersedia. Agar lebih aman, layanan atau app yang memerlukan RC4 harus ditingkatkan untuk menggunakan rangkaian cipher aman. Di iOS 12.1, sertifikat yang diterbitkan setelah 15 Oktober 2018 dari sertifikat root yang dipercayai sistem harus masuk ke dalam log Transparansi Sertifikat tepercaya untuk memungkinkan koneksi TLS. Di iOS 12.2, TLS 1.3 diaktifkan secara default untuk API Network.framework dan NSURLSession. Klien TLS yang menggunakan API SecureTransport tidak dapat menggunakan TLS 1.3.
Keamanan Transpor App
Keamanan Transpor App menyediakan persyaratan koneksi default sehingga app diharuskan untuk mengutamakan koneksi aman saat menggunakan API NSURLConnection, CFURL, atau NSURLSession. Secara default, Keamanan Transpor App membatasi pilihan cipher menjadi hanya rangkaian yang menyediakan kerahasiaan maju, khususnya:
ECDHE_ECDSA_AES dan ECDHE_RSA_AES dalam Mode Galois/Penghitung (GCM)
Mode Rantai Blok Cipher (CBC)
App dapat menonaktifkan persyaratan kerahasiaan maju per domain, dalam kasus ini, RSA_AES ditambahkan ke rangkaian cipher yang tersedia.
Server harus mendukung TLS 1.2 dan kerahasiaan maju, dan sertifikat harus sah serta ditandatangani menggunakan SHA256 atau lebih kuat dengan setidaknya kunci RSA 2048 bit atau kunci kurva eliptis 256 bit.
Koneksi jaringan yang tidak memenuhi persyaratan ini akan gagal kecuali jika app menimpa Keamanan Transpor App. Sertifikat yang tidak sah selalu mengakibatkan kegagalan perangkat dan tidak adanya koneksi. Keamanan Transpor App diterapkan ke app yang dibuat untuk iOS 9 atau lebih baru dan macOS 10.11 atau lebih baru secara otomatis.
Pemeriksaan validitas sertifikat
Pengevaluasian status sertifikat TLS tepercaya dilakukan sesuai dengan standar industri yang dibuat, seperti yang diputuskan di RFC 5280, dan menggabungkan standar yang muncul seperti RFC 6962 (Transparansi Sertifikat). Di iOS 11 atau lebih baru dan macOS 10.13 atau lebih baru, perangkat Apple diperbarui secara berkala dengan daftar sertifikat yang dibatalkan serta dibatasi saat ini. Daftar diagregatkan dari daftar pembatalan sertifikat (CRL) yang diterbitkan oleh setiap otoritas sertifikat daftar internal yang dipercayai oleh Apple, serta oleh penerbit CA bawahan. Daftar juga dapat menyertakan batasan lainnya atas kehendak Apple. Informasi ini dikonsultasikan kapan pun fungsi API jaringan digunakan untuk membuat koneksi aman. Jika ada terlalu banyak sertifikat yang dibatalkan dari CA untuk dicantumkan secara terpisah, evaluasi kepercayaan dapat memerlukan respons status sertifikat online (OCSP), dan jika responsnya tidak tersedia, evaluasi kepercayaan akan gagal.