Immer mehr Hacker greifen mobile Anwendungen an, und die Zahl nimmt täglich zu, da mobile Anwendungen Dinge enthalten, an denen Hacker interessiert sind, beispielsweise Benutzerdaten. Hartcodierte (notizierte, feste und nicht veränderbare) Sicherheitsschlüssel, persönliche Informationen werden im Klartext auf der SD-Karte gespeichert, Benutzernamen und Passwörter werden unverschlüsselt in der Datenbank gespeichert, gesammelte Analysen werden im Klartextverfahren gespeichert und an den Remote-Server gesendet. Diese Situationen erleichtern den Angriff (erfolgreich).
Der ordnungsgemäße Einsatz von Kryptografie-Tools kann unsere sensiblen Daten schützen und Privatsphäre und Datenintegrität gewährleisten. Andererseits ist Kryptographie schwierig zu nutzen und leicht zu missbrauchen. Achten Sie auf fehlerhafte Kryptografie (z. B. Verwendung unsicherer Algorithmen oder fest codierte Schlüssel in Binärpaketen). Sehen Sie sich die Liste der zehn größten Risiken im Mobilfunkbereich im Jahr 2014 an. Was sind also die Lehren daraus? Es ist nicht ratsam, keine Verschlüsselung zu verwenden, aber es ist auch nicht ratsam, nicht korrekt zu verschlüsseln (ganz zu schweigen vom Zeitaufwand).
Um sichere Anwendungen auf der Android-Plattform zu entwickeln, stellen wir als nächstes vor, wie man einfach und sicher verschlüsselt.
Zunächst stellen wir kurz einige gängige Verschlüsselungsbibliotheken vor, die in Android-Anwendungen integriert werden können. Eine kryptografische Bibliothek ist eine Sammlung kryptografischer Tools, die Tools wie Verschlüsselungsalgorithmen, Füllmethoden und Hash-Funktionen umfasst.
Bouncy Castle
Legion of the Bouncy Castle ist eine gemeinnützige Gruppe aus Australien. Sie haben Bouncy Castle geschrieben, eine weit verbreitete Klassenbibliothek. Diese Bibliothek bietet sowohl eine einfache Kryptografie-API als auch einen Anbieter von Java Cryptozoology Extensions (JCE). Auf der Android-Plattform ist bereits eine optimierte alte Version von Bouncy Castle integriert (es wurden auch einige kleinere Änderungen zur Anpassung an die Android-Plattform vorgenommen). Das Ergebnis ist, dass jeder Versuch, die neueste Version der BouncyCastle-Klassenbibliothek in einer Anwendung zu erstellen und zu verwenden, zu einem Klassenladekonflikt führt.
Spongy Castle
Die Motivation hinter Spongy Castle besteht darin, Android-Entwicklern die Verwendung jeder Version der BouncyCastle-Bibliothek in ihren Anwendungen zu ermöglichen. SpongyCastle ist eine einfache Neuverpackung der neuesten Version von BouncyCastle; alle org.bouncycastle.*-Pakete werden in org.spongycastle.* umbenannt und die Namen aller Java-Sicherheits-API-Anbieter werden von BC in SC geändert.
OpenSSL
OpenSSL ist ein Open-Source-Toolkit, das SSL- und TLS-Protokolle sowie gängige kryptografische Bibliotheken implementiert. OpenSSL wurde auf viele Plattformen portiert, darunter auch Android. Alternativ können Sie aus dem Quellcode erstellen (mit dem Android NDK) und ihn dann in Ihre Anwendung bündeln.
Nehmen wir nun an, dass Sie für Anwendungszwecke einige Daten verschlüsseln möchten. Welchen Verschlüsselungsalgorithmus würden Sie verwenden, AES oder DES? Wie lang ist Ihr geheimer Schlüssel, 128 oder 256 Bit? Welchen Verschlüsselungsmodus werden Sie verwenden, ECB oder CBC? Wenn Sie auf keine dieser Fragen Antworten und keine guten Gründe haben, befinden Sie sich möglicherweise in einer heiklen Situation, in der Sie zwar über alle benötigten Werkzeuge verfügen, sich aber überhaupt nicht sicher sind, welches zu verwenden und wie.
Hier kommt das Cryptozoology Toolkit for Dummies ins Spiel. Diese Toolkits implementieren keine ausgefallenen kryptografischen Funktionen und versuchen auch nicht, eine der oben genannten kryptografischen Bibliotheken zu ersetzen. Sie basieren vielmehr auf diesen Bibliotheken mit dem alleinigen Zweck, die Verwendung kryptografischer Funktionen einfacher und sicherer zu machen.
Im Gegensatz zu allgemeinen Kryptografiebibliotheken unterstützen diese Toolkits normalerweise nur eine Teilmenge von Algorithmen, Modi, Strukturen und Parametern. Diese Toolkits bieten Ihnen sinnvolle Standardeinstellungen für gängige Verschlüsselungstools, falls Sie wissen, was Sie wollen, aber nicht wissen, wie man es verwendet, oder einfach nur Wert darauf legen, am Ende eine sichere Lösung zu haben. Sehen wir uns einige dieser Toolkits an, um besser zu verstehen, wie sie funktionieren.
Keyczar
Keyczar ist eine Reihe von Open-Source-Toolkits, die ursprünglich von zwei Mitgliedern des Google-Sicherheitsteams entwickelt wurden. Es ist in den Sprachen Java, Python und C++ implementiert. Es unterstützt zwei Authentifizierungsmethoden: symmetrische Verschlüsselung und kostenpflichtige Verschlüsselung. Keyczar bietet sichere Standardeinstellungen, einschließlich Algorithmen, Schlüssellänge und -modus, Schlüsselrotation und -versionierung, automatische Generierung von Initialisierungsvektoren und Autorisierungscodes, und unterstützt die Internationalisierung. Das Toolkit basiert auf JCE (hier) und nutzt den Sicherheitsanbieter von Spongy Castle.
AeroGear Crypto
AeroGear Crypto ist eine kleine Java-Bibliothek, die von AeroGear bereitgestellt wird. Es unterstützt zertifizierbare symmetrische Verschlüsselung, elliptische Kurvenverschlüsselung und passwortbasierte Schlüsselableitung. Es bietet auch eine explizite Spezifikation des Algorithmus. AeroGear Crypto basiert auf Spongy Castle auf der Android-Plattform und Bouncy Castle auf anderen Plattformen. Die Bibliothek ist auch auf iOS, Windows Phone und Cordova verfügbar.
Conceal
Um große Dateien auf SD-Karten schnell und mit sehr wenig Speicher zu verschlüsseln und zu authentifizieren, hat Facebook Conceal entwickelt. Conceal kann sowohl Authentifizierung als auch Verschlüsselung durchführen und bietet standardmäßig auch Schlüsselverwaltungsfunktionen. Es verwendet OpenSSL, enthält jedoch nur die Teile, die es benötigt, sodass seine Größe nur 85 KB beträgt. Die auf der Conceal-Website veröffentlichten Ergebnisse zeigen, dass es besser ist als Bouncy Castle.
Die folgende Tabelle fasst die oben vorgestellten Verschlüsselungsbibliotheken zusammen. Bitte beachten Sie: Alle oben beschriebenen Bibliotheken ermöglichen Kryptografie-Neulingen die sichere Verschlüsselung, fortgeschrittene Entwickler können diese Standardeinstellungen jedoch nach Belieben überschreiben und alle Verschlüsselungsdetails angeben (genau wie bei anderen Kryptografiebibliotheken).
AeroGear Crypto AeroGear Apache 2.0
Facebook BSD verbergen
Keyczar – Apache 2.0
Verschlüsselungsbibliothek Entwicklungsunternehmen Lizenz
Um es zusammenzufassen
Wenn Sie ein Entwickler mobiler Apps sind, müssen Sie Zeit (Energie) aufwenden, um Ihre App zum Benutzer zu machen -freundlich, funktionsreich und auffällig, aber vergessen Sie nicht, die Sicherheit Ihrer App zu verbessern. Wenn Sie nicht wissen, wie Sie anfangen sollen, oder befürchten, es nicht richtig zu machen, wählen Sie zunächst eines der im Artikel genannten Toolkits aus. Unabhängig davon, für welches Verschlüsselungstool Sie sich entscheiden, sollten Sie die Implementierung von Verschlüsselungsalgorithmen und Verschlüsselungsprotokollen vermeiden und nur solche Algorithmen und Protokolle verwenden, die weit verbreitet, allgemein anerkannt und getestet sind.