# XML Daten verschlüsseln (PBE), wo das Passwort speichern?



## DarthShader (28. Juni 2009)

Hallo,

ich arbeite an einem Programm, welches XML Daten auf die lokale Platte schreibt. Ich würde gerne, dass diese Daten verschlüsselt werden, sodass man die XML Dateien nicht so einfach klartext einsehen kann. Das verschlüsselt möchte ich mit "Jasypt" bewerkstelligen. Meine Frage ist jedoch allgemeinere Natur:

Wenn man PBE (Password based encryption) verwendet, dann muss das Passwort zu ver- und entschlüsseln ja irgendwie mit dem Programm abgespeichert werden. Wie kann man sich denn sicher tun? Meine sehr amateuer-hafte Idee ist es, das Passwort einfach als Konstante im Java Programm zu definieren, und das dann zu verwenden. Aber das könnte sicher jemand auslesen.

Gibt es da überhaupt eine wirklich sichere Strategie? Irgendwelche Tipps, wie ich es zumindest geschickt machen kann, sodass ich das Passwirt einfach hardcode?


Über Eure Hilfe würde ich mich sehr freuen


Vielen Dank!


----------



## DosCoder (28. Juni 2009)

Hi,
wenn du das Passwort schon im Code haben willst, dann ist eine Konstante sicher das beste. Allerdings musst du daran denken, dass man ja deine Quelldateien einfach decompiliern könnte und somit das Passwort auslesen kann.
In deiner Situation würde ich diese Konstante daher nicht "password" nennen, sondern irgendwie anders. Zudem würde ich die Variable verschlüsselt hinschreiben, und dann durch einen möglichst langen Methodenbaum entschlüsseln(langer Methodenbaum => schlechter zu verfolgen).
Aber dies macht deinen Quellcode ziehmlich unübersichtlich, denn wirst du, wenn du nach ein paar Jahren das Programm aktualisieren willst, noch wissen, wozu die Konstante "apfelbaum" mit dem Wert "40#Z%$nf§" gut war?
Du wirst also, wenn es wirklich sicher werden soll, nciht um eine Bibliothek herumkommen.

Ciao
DosCoder


----------



## DarthShader (28. Juni 2009)

Hallo DosCoder,

vielen Dank für Deine Antwort. Ja, die Gedanken kann ich alle nachvollziehen.

Allerdings, was meinst Du mit



> Du wirst also, wenn es wirklich sicher werden soll, nciht um eine Bibliothek herumkommen



ich nutze ja eine Bibliothek, eben Jasypt (http://www.jasypt.org/), aber was sollte diese (oder eine andere) denn besser machen können? Irgendwo muss ich ja das Passwort speichern, da können die sicher auch nichts dran ändern.

In diesem Szenario geht es sich auch nicht darum, etwas 100% sicher zu machen. Ich vermute auch, das ist gar nicht möglich... aber vielleicht gibt es ja noch weitere Tipps, wie man hier vorgehen sollte.


----------



## DosCoder (28. Juni 2009)

Hi,
du hast recht, es gibt nichts, was man nicht irgendwie hacken könnte. Ich glaube das mit deiner Bibliothek habe ich falsch verstanden: Ich dachte, dass du jasypt dazu benutzt, deine Datei zu verschlüsseln, nicht aber das Passwort. 
Fazit: Desto mehr Bibliothken(=Verschlüsselungs-Technologien) du hintereinander verwendest, desto mehr Umwege du gehst, desto schwieriger wird das Passwort von einem Hacker ausgelesen werden können, aber halt auch von dir 
Ciao
DosCoder


----------



## DarthShader (29. Juni 2009)

Tja ich denke dass es wirklich auf solche Maßnahmen hinaus läuft, also irgendwie kreativ sein, was das speichern des Passwortes angeht, sodass man nciht sofort drauf kommt. 

In meinem Anwendungsfall ist es nicht ganz so kritisch, es gehört ja immerhin auch einiges an Energie dazu, das alles zu ermitteln, zu dekompilieren etc... ich denke davor bin ich momentan noch sicher.

Ich werde nun mal schauen, wie ich das PW in meinem Code unterbringe, danke!


----------



## Nord-Süd-Richtung (29. Juni 2009)

Hi

ich denke es sollte eigentlich kein Problemdarstellen, dass Passwort im Quellcode zu speichern. Wenn der potenzielle Hacker die Datei dekompiliert, wird er meines Erachtens gar kein Passwort mehr brauchen


----------



## DarthShader (29. Juni 2009)

Naja, es geht dabei um eine Datenerfassung, die sensible Daten in XML abspeichert, deshalb werden diese Daten verschlüsselt. Es ist dann schon noch ein Unterschied, ob ein Angreifer den Quellcode kennt, oder die eigentlich erfassten Daten - letzteres wäre schlimmer.


----------

