Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Datenbank zur Laufzeit ver- bzw- entschlüsseln


m-s - Mo 27.06.11 15:34
Titel: Datenbank zur Laufzeit ver- bzw- entschlüsseln
In einem anderen Beitrag ging es darum wie man eine bestimmte BlowFish Verschlüsselung verwendet.
Jetzt wollte ich mich ran machen und eine Software schreiben die eine verschlüsselte Tabelle bei Google abholt und auf dem PC anzeigt. Das Abholen und lokal in eine Datenbank schreiben werde ich wohl hinbekommen, wo ich ins Stocken kam, bei der Überlegung wie ich die Datenbank während des Ladens entschlüssle.

Ich lade die Datenbanken eigentlich immer mit einem Dataset über VS.
Wenn ich aus dem Datenbankquellen die Tabelle auf eine Form ziehe, habe ich einfach nen DataViewGrid.
Sweit so gut, aber es sollen ja nicht die ver- sondern die entschlüsselten Werte angezeigt werden.

Habt Ihr ne Idee wie ich das am besten und schnellsten (Lade- und Speichervorgangsgeschwindigkeit) realisiert bekommen? Beim Starten alles entschlüsseln (also wenn das eingegebene Passwort stimmt) und beim Beenden alles wieder verschlüsseln.


norman2306 - Mo 27.06.11 16:09

Du lädst erst die Tabelle und entschlüsselst Sie dann. Wo ist da dein Problem? Ich gehe mal davon aus, dass nur die Einträge verschlüsselt sind? Dann kannst du einfach durch die Einträge iterieren und jeden Eintrag einzeln encrypten, bevor du das DataSet an die Tabelle bindest. Für die dechiffrierung eines Textes mit BlowFish gibt es auch ausreichend Code im Netz.


Trashkid2000 - Mo 27.06.11 20:27

Hallo,
user profile iconm-s hat folgendes geschrieben Zum zitierten Posting springen:
Habt Ihr ne Idee wie ich das am besten und schnellsten (Lade- und Speichervorgangsgeschwindigkeit) realisiert bekommen?
Naja, habe erst gedacht, dass es wohl das schnellste wäre, wenn das ent- und verschlüsseln der Server übernimmt. Man das Laden und Speichern also über eine Stored Procedure erledigt. Aber das geht so nicht, da
1. der BlowFish-Algorithmus nicht per default im (MS)-Sql-Server integriert ist
2. Du die Daten von Google abholst (Du also wahrscheinlich keine Möglichkeit hast, eine SP in die Datenbank zu packen)

Gute Entscheidung übrigens, die Daten zu verschlüsseln, wenn sie bei Google gehostet sind... :?
user profile iconm-s hat folgendes geschrieben Zum zitierten Posting springen:
Beim Starten alles entschlüsseln (also wenn das eingegebene Passwort stimmt) und beim Beenden alles wieder verschlüsseln.

Naja, so wie schon user profile iconnorman2306 schrieb, würde auch ich die Daten laden, und dann in einer Schleife entschlüsseln. Beim Speichern dann vorher halt verschlüsseln. Alles eigentlich ganz einfach.
Und die Geschwindigkeit: keine Ahnung, wieviele Daten Du lädtst, die dann auch noch entschlüsselt werden müssen....

Ein ganz großes Problem sehe ich dabei noch:
Woher willst Du wissen, dass das eingegebene Passwort richtig ist? Mit der BlowFish-Klasse, die ich in Deinem vorigen Beitrag gepostet habe, kommt bei einem falschen Passwort zum entschlüsseln halt nur Müll raus.
Keine Ahnung, wie das abgefangen werden soll.


m-s - Mo 27.06.11 23:37

Ja OK, danke für die Antworten.
Ich dachte gibt vielleicht irgendwas extrem cooles, wie z.B. son ganzes DataSet in einem Rutsch irgendwo durch zu schicken :)

OK dann die ganze Datenbank durchgehen, sollte ich schaffen . . . hoffe ich doch :)

Mit dem Passwort könnte man es so machen, dass das Passwort in der Anwendung gespeichert werden muss und vorher geprüft wird. Da die Daten von Google kommen, könnte es natürlich trotzdem falsch sein.

So ganz abfangen kann ich das in diesem Fall wohl nicht, weil ein echter Sync mit der Palm Software nicht geht. Die Datenbankanwendung unter WebOS bietet die Voraussetzungen nicht. Also kann ich vermutlich nicht für eine Durchgängigkeit sorgen, muss der Anwender selbst machen.

Ich werde mich mal vorarbeiten, mal sehen wo ich überall anecke :)

Erst mal vielen Dank.


norman2306 - Di 28.06.11 06:46

Du kannst das Password zusätzlich hashen und online speichern. Dann kannst du durch Hashvergleich überprüfen, ob es richtig ist. Wenn nicht, wird nicht entschlüsselt.


m-s - Di 28.06.11 11:48

user profile iconnorman2306 hat folgendes geschrieben Zum zitierten Posting springen:
Du kannst das Password zusätzlich hashen und online speichern. Dann kannst du durch Hashvergleich überprüfen, ob es richtig ist. Wenn nicht, wird nicht entschlüsselt.

Ja gute Idee, danke