Iluminat23
05.02.12, 13:45
Hallo,
für Paranoide Menschen wird das Leben in Zeiten der "Cloud" immer schwerer. Will man nicht zum Einsiedler werden und auch an der Mobilen Welt teilhaben kommt man kaum um google, iCloud und Co. herrum. Nun habe ich mir gedacht, theoretisch müsste es doch auch möglich sein alle Daten Clientseitig zu verschlüsseln, so das "die Cloud" nur verschlüsselte Daten von mir kennt. Ich könnte nun alle Daten von hand per GPG/PGP verschlüsseln und händisch auf z.B. einem WebDAV-Share ablegen. Dabei müsste ich aber auch immer alle Daten händisch ver/entschlüsseln und ich müsste selbständig die Keys auf den Clients verteilen. Das ist nicht gerade ein benutzerfreundliches Verfahren.
Ich habe mir nun _versucht_ ein Verfahren zu überlegen, welches den Nutzer nicht nötigt einen Key selbständig auf den verschiedenen Clients zu installieren. Bei meinen Überlegungen hatte ich z.B. Adressbucheinträge im Hinterkopf, welche ich auf allen Clients synchronisiert zur Verfügung haben möchte (dieses Verfahren sollte sich aber eigentlich für alle Daten anwenden lassen welche sich in einzelne nicht zu größe Datensätze zerlegen lässt. (Falls es da schon etwas gibt und das jemand kennt, bitte mir sagen. Dann brauche ich meine Grauen zellen nciht mehr selber zu bemühen.)
Ziele:
Benutzer + Passwort basiert
kein händisches übertragen von Schlüsseln
die Daten werden nur auf dem CLient entschlüsselt
Also ein "leerer" Client soll sich mit dem Server durch Angabe von Benutzer und Passwort anmelden und dann auf die Daten zugreifen können. Für den Nutzer soll die Verschlüsselung transparent sein.
Ich habe mal eine Art Sequenzdiagramm erstellt welche meine Idee Veranschaulichen soll (siehe Anhang: client_enc.png).
http://linuxforen.de/forums/attachment.php?attachmentid=20299&d=1328447884
Auf dem Server wird eine Art PublicKey hinterlegt, Beim Anmelden mit dem Benutzernamen (1), Antwortet der Server mit dem PublicKey (2), also er übermittelt den PublicKey (hier einfach nur key genannt) an den Client. Der Client verwendet den PublicKey und das Passwort um ein Verschlüsseltes Passwort zu generieren(3), mit welchem er sich beim Server authentifiziert (4). Der Server kennt nur das verschlüsselte Passwort (enc_pw). Wenn sich der Client erfolgreich Authentifiziert hat, vordert er einen 2. Schlüssel an der auf dem Server hinterlegt ist (5). Der Server übermittelt diesen an den Client (6). Dieser 2. Schlüssel über selbst verschlüsselt (enc_priv_key) und kann nur mit dem Passwort des Useres entschlüsselt werden (7). Nun ist der Client im besitz des private Keys und kann vom Server verschlüsselte Datensätze anfordern (8). Der Server kennt den Inhalt der Datensätze nicht und liefert diese Verschlüsselt an den Client (9). Der Client verendet den entschlüsselten PrivateKey (priv_key) um den Datensatz zu entschlüsseln (10). Nun Kann der Client mit den entschlüsselten Daten arbeiten.
Dieses Verfahren hat einige schwachstellen, welche zum teil lösbar sein sollten.
Das Verfahren ist nur so sicher wie das verwendete Passwort.
Angreifer können Benutzerkonten erfragen in dem sie Random-User verwenden und warten ob ein Key zurück geliefert wird.
Der Hoster kommt an den verschlüsselten PrivateKey und könnte darauf einen Bruteforce-Angriff starten (das Passwort muss entsprechend lang und sicher gewählt werden).
Eventuell gibt es auch schon Verfahren, welche eben dieses Problem lösen, wenn einer von Euch ein solches kennt würde ich mich freuen wenn ich hier einen Tipp bekommen würde. Auch über kommentare zu dem was ich heir ersonnen habe würden mich freuen.
Was aus dem ganzen werden soll/wird ist mir aber selbst noch nciht so ganz klar. Es wäreaber schön, wenn man den Datenkraken dieser Welt ein paar der Persönlichen Daten wieder entreißen könnte ohne Dabei auf jeglichen Komfort verzichten zu müssen.
Gruß
iluminat23
für Paranoide Menschen wird das Leben in Zeiten der "Cloud" immer schwerer. Will man nicht zum Einsiedler werden und auch an der Mobilen Welt teilhaben kommt man kaum um google, iCloud und Co. herrum. Nun habe ich mir gedacht, theoretisch müsste es doch auch möglich sein alle Daten Clientseitig zu verschlüsseln, so das "die Cloud" nur verschlüsselte Daten von mir kennt. Ich könnte nun alle Daten von hand per GPG/PGP verschlüsseln und händisch auf z.B. einem WebDAV-Share ablegen. Dabei müsste ich aber auch immer alle Daten händisch ver/entschlüsseln und ich müsste selbständig die Keys auf den Clients verteilen. Das ist nicht gerade ein benutzerfreundliches Verfahren.
Ich habe mir nun _versucht_ ein Verfahren zu überlegen, welches den Nutzer nicht nötigt einen Key selbständig auf den verschiedenen Clients zu installieren. Bei meinen Überlegungen hatte ich z.B. Adressbucheinträge im Hinterkopf, welche ich auf allen Clients synchronisiert zur Verfügung haben möchte (dieses Verfahren sollte sich aber eigentlich für alle Daten anwenden lassen welche sich in einzelne nicht zu größe Datensätze zerlegen lässt. (Falls es da schon etwas gibt und das jemand kennt, bitte mir sagen. Dann brauche ich meine Grauen zellen nciht mehr selber zu bemühen.)
Ziele:
Benutzer + Passwort basiert
kein händisches übertragen von Schlüsseln
die Daten werden nur auf dem CLient entschlüsselt
Also ein "leerer" Client soll sich mit dem Server durch Angabe von Benutzer und Passwort anmelden und dann auf die Daten zugreifen können. Für den Nutzer soll die Verschlüsselung transparent sein.
Ich habe mal eine Art Sequenzdiagramm erstellt welche meine Idee Veranschaulichen soll (siehe Anhang: client_enc.png).
http://linuxforen.de/forums/attachment.php?attachmentid=20299&d=1328447884
Auf dem Server wird eine Art PublicKey hinterlegt, Beim Anmelden mit dem Benutzernamen (1), Antwortet der Server mit dem PublicKey (2), also er übermittelt den PublicKey (hier einfach nur key genannt) an den Client. Der Client verwendet den PublicKey und das Passwort um ein Verschlüsseltes Passwort zu generieren(3), mit welchem er sich beim Server authentifiziert (4). Der Server kennt nur das verschlüsselte Passwort (enc_pw). Wenn sich der Client erfolgreich Authentifiziert hat, vordert er einen 2. Schlüssel an der auf dem Server hinterlegt ist (5). Der Server übermittelt diesen an den Client (6). Dieser 2. Schlüssel über selbst verschlüsselt (enc_priv_key) und kann nur mit dem Passwort des Useres entschlüsselt werden (7). Nun ist der Client im besitz des private Keys und kann vom Server verschlüsselte Datensätze anfordern (8). Der Server kennt den Inhalt der Datensätze nicht und liefert diese Verschlüsselt an den Client (9). Der Client verendet den entschlüsselten PrivateKey (priv_key) um den Datensatz zu entschlüsseln (10). Nun Kann der Client mit den entschlüsselten Daten arbeiten.
Dieses Verfahren hat einige schwachstellen, welche zum teil lösbar sein sollten.
Das Verfahren ist nur so sicher wie das verwendete Passwort.
Angreifer können Benutzerkonten erfragen in dem sie Random-User verwenden und warten ob ein Key zurück geliefert wird.
Der Hoster kommt an den verschlüsselten PrivateKey und könnte darauf einen Bruteforce-Angriff starten (das Passwort muss entsprechend lang und sicher gewählt werden).
Eventuell gibt es auch schon Verfahren, welche eben dieses Problem lösen, wenn einer von Euch ein solches kennt würde ich mich freuen wenn ich hier einen Tipp bekommen würde. Auch über kommentare zu dem was ich heir ersonnen habe würden mich freuen.
Was aus dem ganzen werden soll/wird ist mir aber selbst noch nciht so ganz klar. Es wäreaber schön, wenn man den Datenkraken dieser Welt ein paar der Persönlichen Daten wieder entreißen könnte ohne Dabei auf jeglichen Komfort verzichten zu müssen.
Gruß
iluminat23