Adobe Air (wiwobooks.com Release)
Store:
EncryptedLocalStore.removeItem("Test-Zeichenkette");
14.1.5 Encrypted Local Store leeren
Schließlich können Sie den gesamten Encrypted Local Store auch auf einen Schlag löschen. Die Klasse EncryptedLocalStore bietet hierfür die statische Methode reset() .
Lösungsweg
Aufruf der statischen EncryptedLocalStore -Methode reset()
So geht es
Das Leeren des verschlüsselten lokalen Bereichs einer Anwendung bedarf also nur einer einzelnen Zeile:
EncryptedLocalStore.reset();
14.2 Verschlüsselte Datenbank
Etwas komplexer wird die Sache bei der Verschlüsselung von Informationen in einer lokalen Datenbank. Diese Möglichkeit steht seit AIR 1.5 zur Verfügung. Die Verschlüsselung geschieht beim Anlegen der Datenbank, zusätzlich kann der Schlüssel nachträglich geändert werden. Der Arbeitsablauf beim Zugriff auf die Daten einer Datenbank (insbesondere der SQL-Statements) bleibt aber gleich. AIR stellt für alle Anwendungen die gleiche einzige SQLite-Engine zur Verfügung. Das bedeutet, dass alle AIR-Anwendungen, die gleichzeitig laufen, theoretisch auf die unverschlüsselten Datenbanken (das heißt im Fall von SQLite: Datenbankdateien) jeder anderen AIR-Anwendung zugreifen können – einen Zugang zu den entsprechenden Dateien vorausgesetzt. Viele Entwickler beschleicht bei derart prinzipiell offenem Zugang zu den Daten ihrer Anwendung ein mulmiges Gefühl in der Magengegend – und wahrscheinlich noch vielmehr die Personen, die mit dem Schutz von Privatsphäre und/oder intellektuellem Eigentum befasst sind.
Zwar ist das Szenario, das es einem Angreifer ermöglichen würde, sich die Daten einer anderen Anwendung zu verschaffen, aufgrund der anderweitigen Beschränkungen der AIR-Laufzeitumgebung sehr unwahrscheinlich, es schadet aber nicht, sich diese theoretische Möglichkeit vor Augen zu führen.
Performance
Wenn Sie den Zugang auf Ihre lokale Datenbank beschränken wollen, können Sie also Ihre Datenbank verschlüsseln. Allerdings ergeben sich durch die Verschlüsselung Performanceeinbußen, die je nach Anzahl der Schreibzugriffe auf die Datenbank in der Größenordnung von 15 % liegen können.
Wenn Sie Verschlüsselung verwenden, sollten Sie sich gleichzeitig eine Strategie überlegen, wie Sie die Anzahl der Schreibzugriffe möglichst gering halten, um den Performancenachteil zu minimieren. Sie haben z. B. im Datenbank-Kapitel bereits Transaktionen kennengelernt.
Schlüssel für die Datenbank
Der Schlüssel für die Datenbankverschlüsselung ist stets ein Byte-Array, das exakt 16 Zeichen lang ist. Warum das so ist? Weil der zugrunde liegende Verschlüsselungsalgorithmus AES-CCM 128 Bits tief ist – das ergibt bei 8 Bits pro Zeichen 16 Zeichen. Der Schlüssel für die Datenbank sollte nicht im Quelltext Ihrer Anwendung gespeichert sein, sondern von einer externen Datenquelle bezogen werden, z. B. von Ihrem Webserver. Oder aber Sie lassen den Benutzer das Kennwort für die Datenbank eingeben. Sie können die Sicherheit der Verschlüsselung erhöhen, wenn Sie den Schlüssel für die Datenbank ebenfalls verschlüsseln.
14.2.1 Verschlüsselte Datenbank öffnen oder erstellen
Das Öffnen einer verschlüsselten Datenbank geschieht mit der gleichen Methode wie das Öffnen einer unverschlüsselten Datenbank, die jedoch um einen bestimmten Parameter encryptionKey ergänzt ist. Um eine verschlüsselte Datenbank zu erstellen, benötigen Sie eine »frische« Datenbankverbindung. Frisch ist in diesem Sinne eine Datenbankverbindung dann, wenn die Datenbankdatei entweder noch nicht besteht oder noch keine Tabellen enthält.
Lösungsweg
1. File -Instanz für neue Datenbankdatei erstellen
2. SQLConnection -Instanz erstellen
3. ByteArray -Instanz erstellen und 128 Bit langen Wert zuweisen, z. B. als 16 Zeichen lange Zeichenkette
4. Bei asynchronem Zugriff: Registrieren von Ereignis-Listenern für SQLEvent.OPEN und SQLErrorEvent.ERROR
5. Datenbankverbindung öffnen, ByteArray -Instanz als Parameter encryptionKey übergeben
synchron: SQLConnection -Instanzmethode open() , mit File -Instanz als erstem und ByteArray -Instanz als fünftem Parameter
asynchron: SQLConnection -Instanzmethode openAsync() , mit File - Instanz als erstem und ByteArray -Instanz als fünftem Parameter
Stolperfallen/Caveats
AIR löst einen Fehler vom Typ SQLError aus, wenn Sie versuchen, eine Datenbank mit encryptionKey zu öffnen, die nicht verschlüsselt ist, oder wenn der Schlüssel nicht mit dem der Datenbank übereinstimmt.
Tipp
Wenn
Weitere Kostenlose Bücher