Tach,
das ist quasi eine Folgefrage zu Klaus' Vortrag auf der Macoun (iOS Sicherheit).
Es geht mir um die Frage, wie man Benutzergeheimnisse vernünftig (also am besten sicher und komfortabel) handhabt. Wie sieht es da eigentlich mit dem RAM aus?
Es gab (in dem Vortrag) z.B. das (negative) Beispiel von der Banking-App, die eine TAN-Liste auf dem Dateisystem entschlüsselt, wenn sie gestartet wird und wieder verschlüsselt beim Beenden. Mit iOS4 kam der Hintergrundbetrieb und die Ungewissheit des tatsächlichen Beendens und damit die Gefahr, dass die TAN-Liste unverschlüsselt in einem iTunes Backup landet. Ich verstehe irgendwie nicht, warum diese TAN-Liste überhaupt je unverschlüsselt im Dateisystem existieren muss. Warum werden die unverschlüsselten Daten nicht einfach im RAM gehalten? Dann sind sie automatisch weg, wenn die App beendet wird. Falls man dann noch Bedenken hat, dass der Speicher unverändert einer anderen App zufällt, kann man ja immer noch beim Beenden die Strings komplett nullen oder so, aber wer um alles in der Welt kommt denn auf die Idee, unverschlüsselte Daten ins Dateisystem zu schreiben? Der RAM-Inhalt interessiert doch bei einem iTunes Backup nicht, oder?
Andere Stelle, gleiches Thema: Keychain. Allerdings mit einer Einschränkung: ich denke hier an eine permanent laufende App (Musikabspieler, Routenplaner, VoIP, ...). Wenn die ihre Geheimnisse anfangs aus der Keychain holt und im RAM in ein Dictionary einlagert, ist sie hinterher unabhängig von den lustigen Schutzklassen der Keychain (always, when unlocked, when einmal unlocked, ...). Sie hat die Geheimnisse ja sowieso in ihrem lokalen Cache (im RAM), also kann sie grundsätzlich die stärkste Klasse "when unlocked" in der Keychain nutzen, am Anfang von dort laden und ab dann immer den lokalen Cache nutzen und so trotzdem im gelockten Zustand darauf zugreifen.
Die Frage ist: wie sicher sind die Daten im RAM wirklich? Gibt es unter iOS sowas wie eine Swap-Partition? Eine Auslagerungsdatei?
Ich frage, weil ich es einfach nicht weiß.
Danke!
PS: Jailbreaks lassen wir mal beiseite. Da ist dann eh kein Kraut gewachsen.
das ist quasi eine Folgefrage zu Klaus' Vortrag auf der Macoun (iOS Sicherheit).
Es geht mir um die Frage, wie man Benutzergeheimnisse vernünftig (also am besten sicher und komfortabel) handhabt. Wie sieht es da eigentlich mit dem RAM aus?
Es gab (in dem Vortrag) z.B. das (negative) Beispiel von der Banking-App, die eine TAN-Liste auf dem Dateisystem entschlüsselt, wenn sie gestartet wird und wieder verschlüsselt beim Beenden. Mit iOS4 kam der Hintergrundbetrieb und die Ungewissheit des tatsächlichen Beendens und damit die Gefahr, dass die TAN-Liste unverschlüsselt in einem iTunes Backup landet. Ich verstehe irgendwie nicht, warum diese TAN-Liste überhaupt je unverschlüsselt im Dateisystem existieren muss. Warum werden die unverschlüsselten Daten nicht einfach im RAM gehalten? Dann sind sie automatisch weg, wenn die App beendet wird. Falls man dann noch Bedenken hat, dass der Speicher unverändert einer anderen App zufällt, kann man ja immer noch beim Beenden die Strings komplett nullen oder so, aber wer um alles in der Welt kommt denn auf die Idee, unverschlüsselte Daten ins Dateisystem zu schreiben? Der RAM-Inhalt interessiert doch bei einem iTunes Backup nicht, oder?
Andere Stelle, gleiches Thema: Keychain. Allerdings mit einer Einschränkung: ich denke hier an eine permanent laufende App (Musikabspieler, Routenplaner, VoIP, ...). Wenn die ihre Geheimnisse anfangs aus der Keychain holt und im RAM in ein Dictionary einlagert, ist sie hinterher unabhängig von den lustigen Schutzklassen der Keychain (always, when unlocked, when einmal unlocked, ...). Sie hat die Geheimnisse ja sowieso in ihrem lokalen Cache (im RAM), also kann sie grundsätzlich die stärkste Klasse "when unlocked" in der Keychain nutzen, am Anfang von dort laden und ab dann immer den lokalen Cache nutzen und so trotzdem im gelockten Zustand darauf zugreifen.
Die Frage ist: wie sicher sind die Daten im RAM wirklich? Gibt es unter iOS sowas wie eine Swap-Partition? Eine Auslagerungsdatei?
Ich frage, weil ich es einfach nicht weiß.
Danke!
PS: Jailbreaks lassen wir mal beiseite. Da ist dann eh kein Kraut gewachsen.
