TLS-Sicherheit
iOS, iPadOS und macOS unterstützen Transport Layer Security (TLS 1.0, TLS 1.1, TLS 1.2, TLS 1.3) und Datagram Transport Layer Security (DTLS). Das Protokoll TLS unterstützt sowohl AES-128 als auch AES-256 und bevorzugt Cipher-Suites mit Forward Secrecy. „Safari“, „Kalender“, „Mail“ und andere Internetprogramme verwenden dieses Protokoll automatisch, um einen verschlüsselten Kommunikationskanal zwischen einem Gerät und den Netzwerkdiensten herzustellen. High-Level-APIs (z. B. CFNetwork) erleichtern es Entwicklern, TLS in ihren Apps umzusetzen. Im Gegensatz dazu bieten Low-Level-APIs (z. B. Network.framework) präzise Einstellungsmöglichkeiten. CFNetwork lässt SSL 3 nicht zu. Apps (z. B. Safari), die von WebKit Gebrauch machen, ist es verwehrt, eine SSL 3-Verbindung herzustellen.
Bei iOS 11 (und neueren Versionen) und macOS 10.13 (oder neuer) können SHA-1-Zertifikate nicht mehr für TLS-Verbindungen verwendet werden, solange sie der Benutzer nicht als vertrauenswürdig einstuft. Zertifikate mit RSA-Schlüsseln mit weniger als 2048 Bit sind ebenfalls nicht zulässig. Die RC4-Cipher-Suite für die symmetrische Verschlüsselung findet in iOS 10 und macOS 10.12 keine Anwendung. Standardmäßig sind RC4-Cipher-Suites auf TLS-Clients oder -Servern, die mit SecureTransport APIs implementiert wurden, nicht aktiviert und können keine Verbindung herstellen, wenn es sich bei RC4 um die einzige verfügbare Cipher-Suite handelt. Dienste oder Apps, die RC4 erfordern, sollten für die Verwendung von sicheren Cipher-Suites aktualisiert werden, um ein höheres Maß an Sicherheit zu erzielen. In iOS 12.1 müssen Zertifikate, die nach dem 15. Oktober 2018 von einem vom System als vertrauenswürdig eingestuften Root-Zertifikat ausgegeben wurden, in einem vertrauenswürdigen CT-Protokoll (Certificate Transparency) registriert sein, damit sie für TLS-Verbindungen zugelassen werden. In iOS 12.2 ist TLS 1.3 für Network.framework und für NSURLSession-APIs standardmäßig aktiviert. TLS-Clients, die SecureTransport APIs verwenden, können TLS 1.3 nicht verwenden.
Transportsicherheit für Apps
App Transport Security umfasst Anforderungen für Standardverbindungen, um bei Verwendung von NSURLConnection-, CFURL- oder NSURLSession-APIs sicherzustellen, dass von den Apps die besten Verfahren für sichere Verbindungen eingehalten werden. Standardmäßig beschränkt App Transport Security die Cipher-Auswahl auf solche Cipher-Suites, die Forward Secrecy bereitstellen, insbesondere:
ECDHE_ECDSA_AES und ECDHE_RSA_AES im Galois/Counter Mode (GCM)
Cipher Block Chaining (CBC)-Modus
Apps sind in der Lage, das Forward Secrecy-Erfordernis pro Domain zu deaktivieren. In diesem Fall wird RSA_AES zur Gruppe der verfügbaren Ciphers hinzugefügt.
Server müssen TLS 1.2 und Forward Secrecy unterstützen und Zertifikate müssen auf der Basis von SHA-256 (oder stärker) validiert und signiert sein, wobei ein 2048-Bit-RSA-Schlüssel oder ein 256-Bit-ECC-Schlüssel (elliptischer Kurven-Schlüssel) die Mindestanforderung darstellt.
Netzwerkverbindungen, die diese Anforderungen nicht erfüllen, kommen nicht zustande, es sei denn, die App setzt die in App Transport Security definierten Anforderungen für die Transportsicherheit außer Kraft. Ungültige Zertifikate führen in jedem Fall zu einem nicht behebbaren Fehler (Hard Failure) und zum Nichtzustandekommen der Verbindung. App Transport Security wird automatisch auf alle Apps angewendet, die für iOS 9 (oder neuer) und für macOS 10.11 (oder neuer) kompiliert werden.
Prüfung der Zertifikatgültigkeit
Die Beurteilung der Vertrauenswürdigkeit eines TLS-Zertifikats erfolgt gemäß Industriestandards, die in RFC 5280 definiert sind, und unter Berücksichtigung neu aufkommender Standards wie beispielsweise RFC 6962 (Zertifikattransparenz). Apple-Geräte mit iOS 11 (oder neuer) oder mit macOS 10.13 (oder neuer) erhalten periodisch eine laufend aktualisierte Liste widerrufener oder eingeschränkter Zertifikate. Diese Liste wird aus den Zertifikatsperrlisten (Certificate Revocation Lists, CRLs) zusammengestellt, die von den Zertifizierungsstellen, die in die Apple-Produkte integriert sind und von Apple als vertrauenswürdig eingestuft werden, und/oder von ihnen nachgeordneten Stellen veröffentlicht werden. Apple behält sich das Recht vor, zusätzliche Einschränkungen in die Liste aufzunehmen. Diese Informationen werden immer dann zu Rate gezogen, wenn eine API-Netzwerkfunktion verwendet wird, um eine sichere Verbindung herzustellen. Wenn eine einzelne Zertifizierungsstelle mehr Zertifikate zurückgezogen hat, als einzeln aufgelistet werden können, kann eine Beurteilung der Vertrauenswürdigkeit zu dem Ergebnis führen, dass eine OCSP-Anfrage (Online Certificate Status Response) erforderlich ist. Wenn auf die Anfrage keine Antwort erfolgt, schlägt die Beurteilung fehl.