So führen Sie SSL-Pinning in iOS-Apps durch

Veröffentlicht: 2020-02-24

Sobald Menschen ihr Zuhause verlassen, machen sie sich auf die Suche nach offenen Wi-Fi- Netzwerken. Egal, ob sie am Flughafen warten oder in einem Café sitzen, die Hauptaufgabe besteht darin, eine offene Wi-Fi- Verbindung zu finden.

Erschreckenderweise sind auch die Hacker auf der gleichen Suche. Auch sie warten darauf, dass die Benutzer eine Verbindungsanfrage im offenen Netzwerk stellen, bevor sie ihr Phishing-Gehirn einsetzen und ihnen ihre sensiblen Daten oder schlimmer noch Geld auf ihrem Bankkonto entziehen.

Während HTTPS bis zu einem gewissen Grad effektiv ist, ist es ein SSL-Protokoll, das bekanntermaßen Benutzer sicher macht, indem es unzerbrechlich und weitgehend sicher ist. Aber Man-In-The-Middle (MITM)-Angriffe haben auch Wege gefunden, dies zu durchbrechen.

Hier kommt die SSL-Pinning - Technik als eine der Best Practices für die Sicherheit mobiler Apps ins Spiel . Wenn wir speziell über Plattformen sprechen, ist es die ideale Sicherheitslösung für iPhone-Apps, die das Problem hervorragend löst.

In diesem Artikel werden wir uns mit den Arten und Prozessen der Integration von SSL-Pinning in iOS-Apps befassen, um diese Man-in-the-Middle-Angriffe zu verhindern. Ein Prozess, der ein aktiver Teil der OWASP-Testpraxis für mobile Sicherheit ist.

Arten der Pinning- Methode für SSL-Zertifikate

Es gibt im Wesentlichen zwei Methoden für den SSL-Pinning-Test, wie unten beschrieben:

SSL-Pinning

SSL-certificate

  • Zertifikat anheften – Sie können das Zertifikat des Servers herunterladen und in der App bündeln. Zur Laufzeit vergleicht die App das Serverzertifikat mit denen, die Sie eingebettet haben.
  • Den öffentlichen Schlüssel anheften – Sie können den öffentlichen Schlüssel des Zertifikats im Code als Zeichenfolge abrufen. Zur Laufzeit vergleicht die Anwendung den öffentlichen Schlüssel des Zertifikats mit einem, der im Code fest codiert ist.

Die Wahl zwischen den beiden SSL-Pinning- iOS - Methoden hängt von Ihrer Serverkonfiguration und Ihren individuellen Anforderungen ab. Wenn Sie die erste Option wählen, müssen Sie die App hochladen, wenn der Server sein Zertifikat ändert, oder sie funktioniert nicht mehr. Wenn Sie sich für die zweite Option entscheiden, verstoßen Sie möglicherweise gegen die Schlüsselrotationsrichtlinie, da sich der öffentliche Schlüssel nicht ändert.

Werfen wir nun einen Blick auf die Schritte zum Implementieren von SSL-Pinning in Ihrer iOS-App.

*Hinweis: Die unten aufgeführten Schritte folgen dem Vorgang des Anheftens von iOS-Zertifikaten mit Swift.

So implementieren Sie SSL-Pinning in Ihrer iOS-App

1. NSURLSession

Im Fall von NSURLSession ist die primäre Methode zur Handhabung von SSL-Pinning URLSession:didReceiveChallenge:completionHandler:delegate. Entwickler müssen die Klasse so einstellen, dass sie URLSessionDelegate entspricht, und diese Funktion in die Klasse einfügen:

Die Funktion würde „ Anmeldeinformationen vom Delegaten als Antwort auf eine Authentifizierungsanforderung vom Remote-Server anfordern . Der iPhone-App-Entwickler vergleicht dann Zertifikate vom Server mit einem, das im App-Bundle gespeichert ist. Wenn die beiden Zertifikate identisch sind, wird die Authentifizierung zugelassen und der Client kann eine Verbindung zum Server herstellen.

2. Pinning des Alamofire-Zertifikats

Alamofire ist eine der bekanntesten Bibliotheken für HTTP-Netzwerke in Swift-Sprache. Es verfügt über die integrierte Funktionalität für SSL-Pinning in iOS Swift und ist extrem einfach zu bedienen. So erstellen Sie eine sichere iOS-App mit Alamofire-Zertifikat-Pinning.

Häufige Probleme im Zusammenhang mit der SSL-Pinning-Implementierung und wie man sie löst

Die Qualitätssicherungsexperten renommierter App-Entwicklungsagenturen testen mobile Apps regelmäßig auf Sicherheitslücken, einschließlich vollständiger Netzwerkdurchdringung. Aber es gibt viele App-Testagenturen, die sich nicht mit der gleichen Begeisterung auf diese Bereiche konzentrieren. Sie scheinen bei der Implementierung dieser speziellen iPhone-Sicherheitslösung in ihren Apps zurückhaltend zu sein.

Hier sind einige der häufigsten Gründe dafür –

  • Einer der größten Nachteile von SSL-Pinning in der iOS- App ist seine Implementierung. Der Prozess ist komplex und kann die Entwickler dazu zwingen, den Code immer wieder neu zu schreiben, und den App-Erstellungsprozess verkomplizieren .
  • Das Anheften von iOS-SSL-Zertifikaten, die sich regelmäßig ändern müssen, kann die Entwickler dazu zwingen, die App-Binärdatei jedes Mal zu aktualisieren, wenn sich das Zertifikat ändert.
  • Es müssen mehrere Anstrengungen unternommen werden, um die Möglichkeiten zur Umgehung der iOS-SSL-Überprüfung zu schützen.

In Anbetracht der Auswirkungen, die das Fehlen der Bühne mit sich bringen kann, erfahren Sie hier, wie einige häufige Fallstricke von einem zuverlässigen Unternehmen für die Entwicklung von iPhone -Apps vermieden werden .

Pin testen

Im Gegensatz zum normalen App-Test, bei dem Sie testen, ob alles funktioniert, besteht die Methode für den SSL-Pinning-Test darin, dass Sie prüfen müssen, ob etwas fehlschlägt. Sie müssen sich darauf konzentrieren, zu testen, ob die App potenziell kompromittierte Verbindungen abbricht. Wenn die App die Kommunikation mit einem einzelnen Endpunkt ermöglicht, ist das Testen so einfach wie das Versetzen der GET-Anforderung in einen beliebigen Zustand. Im Idealfall muss die App in diesem Fall die Verbindung abbauen und die Anfrage sollte fehlschlagen.

Umgang mit Zertifikatsänderungen

Beim Erneuern eines Domänenzertifikats bleibt das öffentliche/private Schlüsselpaar erhalten, dies ist jedoch nicht immer der Fall. Aber wenn Sie den Aktualisierungszyklus richtig planen, können Sie die Ausfallzeiten für Endbenutzer vermeiden.

Bevor das iOS-SSL-Zertifikat auf der Website aktiviert wird, müssen Sie es zusätzlich zum derzeit aktiven Zertifikat in der App anheften und dann ein Update freigeben. Wenn wir diesen Schritt bei Appinventiv befolgen, um eine sichere iOS-App zu erstellen , führen wir vorübergehend einen Schnelltest mit dem neuen Zertifikat durch und testen die App mit beiden gepinnten Zertifikaten.

Häufig gestellte Fragen zum SSL-Pinning in iOS-Anwendungen

1. Wo sollen sensible Daten in einer iOS-App gespeichert werden?

Die sensiblen Daten der App sollten immer in iCloud oder Schlüsselbund in iOS oder sogar in der Datenbank nach ordnungsgemäßer Verschlüsselung gespeichert werden.

2. Wie funktioniert SSL?

SSL-Pinning ist einer der häufigsten Sicherheitstipps für iOS-Apps . Aber um zu verstehen, was es bedeutet, müssen Sie zuerst wissen, wie SSL funktioniert.

  • Ein Browser versucht, sich mit einer Website zu verbinden, die mit SSL gesichert ist. Der Browser fordert dann den Webserver auf, sich zu identifizieren.
  • Der Webserver sendet dann dem Browser seine Kopie des SSL-Zertifikats.
  • Der Browser prüft, ob dem SSL-Zertifikat vertraut werden muss. Wenn dies möglich ist, wird eine Nachricht an den Webserver gesendet.
  • Der Webserver sendet dann eine Bestätigung zurück, um die SSL-verschlüsselte Sitzung zu beginnen.
  • Die verschlüsselten Daten werden dann schließlich zwischen Browser und Webserver geteilt.

Endgedanken

Obwohl SSL-Pinning als sicher gilt und weit verbreitet ist, wenn eine Verschlüsselung erforderlich ist, ist eine weitere Schutzebene immer willkommen, wenn Anwendungen mit hohem Risiko erstellt werden. Mit SSL-Pinning können Sie die Identität des Servers über der SSL-Vertrauenskette überprüfen.

Mit SSL-Pinning können Sie alle Verbindungen ablehnen, außer denen mit dem designierten Server, dessen SSL-Zertifikat wir in unserem lokalen Bündel gespeichert haben. Ein möglicher Nachteil davon ist, dass Sie die App jedes Mal aktualisieren müssen, wenn der SSL-Schlüssel des Servers geändert wird.

Falls Sie auch planen, eine iOS-App mit SSL-Pinning zu starten, kann es ein guter Anfang sein, sich an die beste iOS-App-Entwicklungsfirma zu wenden .