Die Bedeutung und Aufmerksamkeit für die Sicherheit im Internet hat in den letzten Jahren erheblich zugenommen. Während der diesjährigen WWDC hat Apple deutlich gemacht, dass er mit einer neuen Funktion die Sicherheit seiner Betriebssysteme verbessern will, App Transport-Sicherheit.
Natürlich ist die Sicherheit einer Plattform nur so hoch wie die Sicherheit ihrer Komponenten. Dazu gehören auch Anwendungen von Drittanbietern. Mit anderen Worten, Apple erwartet, dass Entwickler App Transport Security in ihre Anwendungen übernehmen.
In diesem Artikel werde ich erklären, welche App Transport Securitybeinhaltet, wie sich dies auf Ihre Anwendungen auswirkt und wie Sie Ihre Anwendungen aktualisieren können, um sich an die Richtlinien und Empfehlungen von Apple zu halten.
App Transport-Sicherheit, oder ATS Kurz gesagt, ist eine neue Funktion von iOS 9 und OS X El Capitan. Obwohl Apple watchOS nicht erwähnt hat, können wir davon ausgehen, dass App Transport Security auch für watchOS 2 gilt. App Transport Security zielt darauf ab, die Sicherheit der Betriebssysteme von Apple und aller auf diesen Betriebssystemen ausgeführten Anwendungen zu verbessern.
Netzwerkanforderungen, die über HTTP gesendet werden, übertragen die Daten als Klartext. Es ist selbstverständlich, dass dies ein erhebliches Sicherheitsrisiko darstellt. Apple betont, dass jeder Entwickler sich bemühen sollte, die Daten seiner Kunden sicher zu halten, auch wenn dies nicht der Fall ist scheinen wichtig oder empfindlich.
App Transport Security fördert aktiv die Sicherheit, indem es eine Reihe von bewährten Sicherheitsmethoden auferlegt. Die wichtigste Anforderung besteht darin, dass Netzwerkanforderungen über eine sichere Verbindung gesendet werden müssen. Wenn App Transport Security aktiviert ist, werden Netzwerkanforderungen automatisch über HTTPS statt über HTTP gesendet.
Es gibt eine Reihe weiterer Anforderungen, um die Sicherheit weiter zu verbessern. Für App Transport Security ist beispielsweise TLS (Transport Layer Security) 1.2 oder höher erforderlich. Während Sie mit TLS möglicherweise nicht vertraut sind, haben Sie sicher von SSL (Secure Sockets Layer) gehört. TLS ist der Nachfolger von SSL und ist eine Sammlung kryptografischer Protokolle, um die Sicherheit über Netzwerkverbindungen durchzusetzen.
Apple hat kürzlich eine öffentliche Vorabversion zu App Transport Security veröffentlicht, um Entwicklern die Möglichkeit zu geben, App Transport Security zu planen. In diesem Dokument wird beschrieben, was App Transport Security von Ihren Anwendungen und den Web-Services erwartet, mit denen es interagiert.
Einen Augenblick. Meine Anwendung verwendet ein CDN (Content Delivery Network), auf das ich keine Kontrolle habe und das HTTPS nicht unterstützt. Mach dir keine Sorgen. Apple hat deinen Rücken bedeckt. In Bezug auf App Transport Security fällt eine Anwendung in eine von vier Kategorien. Sehen wir uns die einzelnen Kategorien an, um zu sehen, wie sich diese auf eine Anwendung auswirken.
Wenn Ihre Anwendung nur mit Servern verbunden ist, die HTTPS unterstützen, haben Sie Glück. Ihre Anwendung muss keine Änderungen vornehmen. Beachten Sie jedoch, dass App Transport Security TLS 1.2 erfordert und erwartet, dass die Domäne Verschlüsselungscodes verwendet, die die Weiterleitungsgeheimnis unterstützen. Das Zertifikat muss auch die Anforderungen von ATS erfüllen. Es ist daher wichtig zu überprüfen, ob die Server, mit denen Ihre Anwendung kommuniziert, die Anforderungen von ATS erfüllen.
Es ist möglich, dass Ihre Anwendung mit Servern kommuniziert, die die ATS-Anforderungen nicht erfüllen. In diesem Fall müssen Sie dem Betriebssystem mitteilen, welche Domänen betroffen sind, und in den Anwendungen Ihrer Anwendung angeben Info.plist welche anforderungen werden nicht erfüllt.
Dies bedeutet, dass App Transport Security für jeden Endpunkt erzwungen wird, mit dem Ihre Anwendung spricht, mit Ausnahme der in Ihren Anwendungen angegebenen Info.plist. Sie können die Ausnahmen mithilfe einer Reihe vordefinierter Schlüssel konfigurieren. In der folgenden Info.plist definieren wir drei Ausnahmen.
… NSAppTransportSecurity … NSExceptionDomains api.insecuredomain.com NSExceptionAllowsInsecureHTTPLoads cdn.somedomain.com NSThirdPartyExceptionMinimumTLSVersion 1.1 thatotherdomain.com NSIncludesSubdomains NSExceptionRequiresForwardSecrecy
Die erste Ausnahme, die wir definieren, teilt ATS mit, dass die Kommunikation mit dieser Subdomäne die Anforderung zur Verwendung von HTTPS überschreibt. Beachten Sie, dass diese Ausnahme nur für die in der Ausnahme angegebene Unterdomäne gilt. Es ist wichtig zu verstehen, dass die NSExceptionAllowsInsecureHTTPLoads
key bezieht sich nicht nur auf die Verwendung von HTTPS. Die Ausnahme gibt an, dass für diese Domäne jede Anforderung von App Transport Security überschrieben wird.
Es ist möglich, dass Ihre Anwendung mit einem Server kommuniziert, der seine Daten über HTTPS bereitstellt, TLS 1.2 oder höher jedoch nicht verwendet. In diesem Fall definieren Sie eine Ausnahme, die die minimale TLS-Version angibt, die verwendet werden soll. Dies ist eine bessere und sicherere Option, als die App Transport Security für diese bestimmte Domäne vollständig zu überschreiben.
Das NSIncludesSubdomains
key teilt App Transport Security mit, dass die Ausnahme für jede Unterdomäne der angegebenen Domäne gilt. Die Ausnahme definiert weiter, dass die Domäne Verschlüsselungscodes verwenden kann, die keine Vorwärtsgeheimnisse unterstützen (NSExceptionRequiresForwardSecrecy
) Durch Erweitern der Liste der akzeptierten Chiffren. Für weitere Informationen zum Forward Secrecy empfehle ich, die technischen Hinweise von Apple zu diesem Thema zu lesen.
Wenn Sie einen Webbrowser erstellen, haben Sie ein etwas größeres Problem. Da Sie nicht wissen, welche Webseiten Ihre Benutzer besuchen werden, können Sie unmöglich feststellen, ob diese Webseiten über HTTPS bereitgestellt werden und die ATS-Anforderungen erfüllen. In diesem Fall gibt es keine andere Möglichkeit, als App Transport Security vollständig zu deaktivieren.
Es ist wichtig, dass Sie die App Transport Security explizit ablehnen. Denken Sie daran, dass App Transport Security standardmäßig erzwungen wird. In Ihrer Bewerbung Info.plist, Sie fügen ein Wörterbuch für den Schlüssel hinzu NSAppTransportSecurity
. Das Wörterbuch sollte einen Schlüssel enthalten, NSAllowsArbitraryLoads
, und sein Wert sollte auf gesetzt werden JA
. So sollte die Info.plist-Datei Ihrer Anwendung aussehen, wenn Sie App Transport Security ablehnen.
… NSAppTransportSecurity … NSAllowsArbitraryLoads
Es gibt eine vierte Option, bei der Ihre Anwendung die App Transport-Sicherheit ablehnt, jedoch eine Reihe von Ausnahmen definiert. Dies ist nützlich, wenn Ihre Anwendung Daten von einer Reihe von Servern abruft, die Sie nicht kontrollieren, aber auch mit einer von Ihnen verwalteten API kommuniziert. In diesem Fall geben Sie in Ihren Bewerbungsunterlagen an Info.plist dass beliebige Ladevorgänge zulässig sind, Sie definieren jedoch auch eine oder mehrere Ausnahmen, für die App Transport Security aktiviert ist. So könnte die Info.plist aussehen.
… NSAppTransportSecurity … NSAllowsArbitraryLoads NSExceptionDomains api.tutsplus.com NSExceptionAllowsInsecureHTTPLoads
Apple hat betont, dass sich Anwendungen automatisch für App Transport Security anmelden, wenn sie für iOS 9 oder OS X El Capitan entwickelt wurden. Dies bedeutet, dass Sie keine Änderungen an Ihren Anwendungen vornehmen müssen, solange Sie sie mit iOS 8 oder OS X Yosemite erstellen.
Basierend auf früheren Versionen von iOS und OS X haben wir jedoch herausgefunden, dass Apple von Entwicklern verlangt, dass sie ihre Anwendungen kurz nach ihrer offiziellen Veröffentlichung mit dem neuesten SDK erstellen. Mit anderen Worten, auch wenn Sie App Transport Security nicht einhalten müssen, wenn iOS 9 und OS X El Capitan später in diesem Jahr veröffentlicht werden, ist es sehr wahrscheinlich, dass Apple von Entwicklern verlangt, dass sie das neueste SDK im ersten oder zweiten Format verwenden 2. Quartal 2016. Ich empfehle Ihnen daher zu untersuchen, wie App Transport Security Ihre Anwendungen früher als später beeinflusst.
Ich hoffe, dieser Artikel hat deutlich gemacht, dass App Transport Security von Ihren Anwendungen nicht übernommen werden kann irgendwann mal. Es ist ähnlich wie Apples Forderung nach 64-Bit-Unterstützung vor nicht allzu langer Zeit. Wenn Ihre Anwendungen nur über HTTPS mit Servern kommunizieren, die den ATS-Anforderungen entsprechen, müssen Sie einige Zeit investieren, um zu untersuchen, wie App Transport Security Ihre Anwendungen beeinflusst. Apples Technote zu App Transport Security kann Ihnen dabei helfen.