Verschlüsselter lokaler SpeicherFür jede auf dem Computer eines Benutzers installierte AIR-Anwendung stellt die Adobe® AIR®-Laufzeitumgebung einen permanenten, verschlüsselten lokalen Speicher zur Verfügung. Dadurch können Daten auf der lokalen Festplatte des Benutzers in einem verschlüsselten Format gespeichert und abgerufen werden, das von anderen Benutzern nicht leicht entschlüsselt werden kann. Für jede AIR-Anwendung wird ein separater, verschlüsselter und lokaler Speicher verwendet, und jede AIR-Anwendung verwendet einen separaten, verschlüsselten und lokalen Speicher für jeden Benutzer. Hinweis: Zusätzlich zum verschlüsselten lokalen Speicher ermöglicht AIR auch die Verschlüsselung von Inhalten, die in SQL-Datenbanken gespeichert sind. Weitere Informationen finden Sie unter Verwenden von Verschlüsselung mit SQL-Datenbanken.
Es empfiehlt sich, den verschlüsselten lokalen Speicher zum Zwischenspeichern von Daten zu verwenden, die gesichert werden müssen (z. B. Anmeldeinformationen für Webdienste). Der ELS eignet sich für die Speicherung von Informationen, die für andere Benutzer nicht zugänglich sein sollen. Er schützt die Daten jedoch nicht vor anderen Prozessen, die unter demselben Benutzerkonto ausgeführt werden. ELS eignet sich deshalb nicht für den Schutz geheimer Anwendungsdaten wie DRM oder Verschlüsselungsschlüssel. AIR verwendet DPAPI unter Windows, KeyChain unter Mac OS und KeyRing oder KWallet unter Linux, um den verschlüsselten lokalen Speicher den einzelnen Anwendungen und Benutzern zuzuordnen. Die Verschlüsselung im lokalen Speicher erfolgt mit einer AES-CBC-128-Bit-Verschlüsselung. Die im verschlüsselten lokalen Speicher enthaltenen Informationen stehen AIR-Anwendungsinhalten nur in der Sicherheits-Sandbox der Anwendung zur Verfügung. Wenn Sie eine AIR-Anwendung aktualisieren, behält die aktualisierte Version den Zugriff auf alle vorhandenen Daten im verschlüsselten lokalen Speicher, es sei denn:
Einschränkungen des verschlüsselten lokalen SpeichersDie Daten im verschlüsselten lokalen Speicher sind durch die Authentifizierungsdaten des Betriebssystems des Benutzers geschützt. Andere Entitäten haben keinen Zugriff auf den Speicher, solange sie sich nicht als der betreffende Benutzer anmelden können. Die Daten sind jedoch nicht vor dem Zugriff durch andere Anwendungen, die von einem authentifizierten Benutzer ausgeführt werden, geschützt. Da der Benutzer authentifiziert werden muss, damit diese Angriffe funktionieren, sind die vertraulichen Daten eines Benutzers immer noch geschützt (sofern nicht das Benutzerkonto selbst unbefugt verwendet wird). Daten, die Ihre Anwendung vor Benutzern geheim halten möchte, zum Beispiel Lizenzschlüssel oder DRM-Schlüssel, sind jedoch nicht sicher. Deshalb ist der verschlüsselte lokale Speicher nicht der geeignete Ort für die Speicherung dieser Informationen. Er ist lediglich ein geeigneter Speicherort für die persönlichen Daten eines Benutzers, zum Beispiel Kennwörter. Daten im ELS können aus verschiedenen Gründen verloren gehen. Der Benutzer könnte die Anwendung zum Beispiel deinstallieren und die verschlüsselte Datei löschen. Oder die Herausgeber-ID wird im Rahmen eines Updates geändert. Deshalb sollte der verschlüsselte lokale Speicher als privater Zwischenspeicher eingesetzt werden, nicht jedoch als permanenter Datenspeicher. Der stronglyBound-Parameter ist veraltet und sollte nicht auf true gesetzt werden. Das Einstellen des Parameters auf true bringt keinerlei zusätzlichen Schutz für Daten. Gleichzeitig geht der Zugriff auf die Daten verloren, wenn die Anwendung aktualisiert wird, selbst wenn die Herausgeber-ID gleich bleibt. Der verschlüsselte lokale Speicher arbeitet möglicherweise langsamer, wenn mehr als 10 MB Daten gespeichert sind. Bei der Deinstallation einer AIR-Anwendung werden die Daten im verschlüsselten lokalen Speicher nicht gelöscht. Zu den bewährten Verfahren bei der Verwendung des verschlüsselten lokalen Speicher gehört Folgendes:
Hinzufügen von Daten zum verschlüsselten lokalen SpeicherSpeichern Sie Daten unter Verwendung der statischen setItem()-Methode der EncryptedLocalStore-Klasse im verschlüsselten lokalen Speicher. Die in einer Hash-Tabelle gespeicherten Daten verwenden Strings als Schlüssel, wobei die Daten als Byte-Arrays gespeichert sind. Im folgenden Beispielcode wird ein String im verschlüsselten lokalen Speicher gespeichert: var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes);
Der dritte Parameter der Methode setItem(), der Parameter stronglyBound, ist optional. Wenn dieser Parameter auf true gesetzt ist, bindet der verschlüsselte lokale Speicher das gespeicherte Element an die digitale Signatur und die Bit der speichernden AIR-Anwendung. var str:String = "Bob";
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(str);
EncryptedLocalStore.setItem("firstName", bytes, false);
Bei einem Element, dessen stronglyBound-Parameter beim Speichern auf true gesetzt ist, sind nachfolgende Aufrufe von getItem() nur erfolgreich, wenn die aufrufende AIR-Anwendung identisch ist mit der speichernden Anwendung (d. h., wenn in den Dateien im Anwendungsverzeichnis keine Daten geändert wurden). Sind die aufrufende und die speichernde Anwendung nicht identisch, wird eine Error-Ausnahme ausgelöst, wenn Sie für ein stark gebundenes Element getItem() aufrufen. Wenn Sie die Anwendung aktualisieren, können stark gebundene Daten, die zuvor in den verschlüsselten lokalen Speicher geschrieben wurden, nicht gelesen werden. Ist der stronglyBound-Parameter auf false gesetzt (Standardwert), muss nur die Hersteller-ID gleich bleiben, damit die Anwendung die Daten lesen kann. Die Bit der Anwendung können sich ändern (und sie müssen von demselben Herausgeber signiert werden). Es müssen aber nicht dieselben Bit sein wie in der Anwendung, in der die Daten gespeichert wurden. Aktualisierte Anwendungen mit derselben Herausgeber-ID wie das Original können auch weiterhin auf die Daten zugreifen. Hinweis: Durch Einstellen von stronglyBound auf true entsteht in der Praxis kein zusätzlicher Schutz für die Daten. Ein Benutzer mit bösartigen Absichten könnte eine Anwendung nach wie vor ändern, um Zugriff auf die Daten im verschlüsselten lokalen Speicher zu erhalten. Außerdem ist der Schutz der Daten vor externen Bedrohungen, die nicht von Benutzern ausgehen, gleichermaßen wirksam, unabhängig davon, ob stronglyBound auf true oder false eingestellt ist. Deshalb sollte stronglyBound nicht auf true gesetzt werden.
Zugriff auf die Daten im verschlüsselten lokalen SpeicherSie können mithilfe der Methode EncryptedLocalStore.getItem() einen Wert aus dem verschlüsselten lokalen Speicher abrufen. Hier ein Beispiel: var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName");
trace(storedValue.readUTFBytes(storedValue.length)); // "Bob"
Entfernen von Daten aus dem verschlüsselten lokalen SpeicherSie können einen Wert aus dem verschlüsselten lokalen Speicher mithilfe der Methode EncryptedLocalStore.removeItem() löschen. Hier ein Beispiel: EncryptedLocalStore.removeItem("firstName");
Und durch Aufruf der Methode EncryptedLocalStore.reset() können alle Daten aus dem verschlüsselten lokalen Speicher löschen. Auch hierzu ein Beispiel: EncryptedLocalStore.reset(); |
|