Wie Daten verschlüsseln?

Ich habe ein Email Client geschrieben, die Einstellungen für ein und ausgangsserver sowie login daten sind bei mir in einer Propertie Datei offengelegt.

Das Programm liest einfach die Logindaten raus und benutzt diese. Nun will ich ungern meine Passwörter einfach so liegen lassen.
Wie schreibe ich diese verschlüsselt in die Propertie datei rein? Und wie lese ich diese dann richtig aus?

EDIT: Die Daten direkt in die Klasse zu schreiben kommt nicht in frage.
Ich möchte aufjedenfall die Propertie behalten nur das da nicht mehr passwort=123 steht sondern passwort=asd4as56da&/(nhd ihr wisst schon :wink:

lg
Zicky

Ich gehe davon aus, dass jeder Benutzer sein eigenes Login hat?

In der Regel spricht nichts dagegen, die Daten unverschlüsselt im Homeverzeichnis des Benutzers abzulegen. In der Regel haben nur Admins darauf Zugriff. Natürlich klappt das dann nur zufriedenstellend auf privaten Computern.

Ansonsten gibt es diverse Verschlüsselungsalgorithmen, die Du nutzen kannst.

Wofür ist denn Dein Emailclient?

[QUOTE=Sym]Ich gehe davon aus, dass jeder Benutzer sein eigenes Login hat?

In der Regel spricht nichts dagegen, die Daten unverschlüsselt im Homeverzeichnis des Benutzers abzulegen. In der Regel haben nur Admins darauf Zugriff. Natürlich klappt das dann nur zufriedenstellend auf privaten Computern.

Ansonsten gibt es diverse Verschlüsselungsalgorithmen, die Du nutzen kannst.

Wofür ist denn Dein Emailclient?[/QUOTE]

Dieser Email CLient ist nur ein Modul von vielen in einem sehr viel grösseren Programm, natürlich sind deswegen viel mehr sensible Daten darin enthalten. Alle diese Daten werden wärend der Installation abgefragt so das dann diese Propertie Datei erzeugt wird. Diese Datei wird dann von dem Programm genutzt. Unteranderem sind dort auch noch root admin logindaten, logins für Datenbanken emails, bank… also nichts was man im klartext offen legen will.

Deswegen möchte den Installer umschreiben so das er die Daten verschlüsselt in eine Propertie schreibt, und das Programm es dann beim Lesen entschlüsselt.

DIe Eingabe der Passwörter wärend der benutzung der Software will ich dem Nutzer ersparen.

Das ganze kann mit Java zu Kopfschmerzen führen, da dir im Default starke Verschlüsselungen nicht zur Verfügung stehen. Dazu musst du die Java Crypto Extension installieren. Das kann bei dir auch für’s Setup interessant sein. Die Klassiker wie RSA oder ähnliches bieten sich an - mit einer entsprechenden Schlüssellänge. Empfehlungen und Erläuterungen gibt’s gratis vom BSI. So sollte z.B. RSA mit min. 2000 Bit Schlüsseln verwendet werden.

Was das ganze aber wieder sehr unsicher macht :wink:
Du hast dann nur die Möglichkeit die Daten mit einem allgemeinen Schlüssel zu verschlüsseln. Das führt dazu, dass man die Daten wieder sehr einfach entschlüsseln kann, da der Schlüssel bekannt ist.

Üblicherweise wird das so gemacht:
Es wird ein Passwortcontainer erstellt, der mit einem Masterkennwort verschlüsselt wird, das der Benutzer bei der Installation oder ersten Nutzung eingibt. Dieses Masterkennwort muss der Benutzer dann immer eingeben wenn auf die Passwörter im Container zugegriffen werden soll.

Oder es wird zufällig ein Schlüssel erstellt …

Aber besser ist es dennoch, dass der Benutzer ein Passwort vergeben kann.

Der dann aber doch auch in Klartext auf dem Rechner liegen muss, oder? Kennt man den Ort kommt man einfach an den Schlüssel.

Hallo
Ich habe jetzt die Jasypt Lib genommen, die haben da den StrongTextEncryptor und PooledPBEStringEncryptor. Für die sichere Verschlüsselung wird aber wie oben von Schlingel erwähnt das JCE8 benötigt. Ich kann das dem Nutzer aber nicht antun. Deswegen habe ich eine Klasse eingebaut die das hier macht …“INFO MainApp - removing cryptography restrictions…”

Das Ergbnis von


  System.out.println(Cipher.getMaxAllowedKeyLength("AES")); 

Ist jetzt nicht mehr 128 sondern 2147483647 und ich kann jetzt den StrongTextEncryptor von Jasypt einsetzen ohne eine Instalaltion von JCE8! Anschliessend das


pw =  0QLDqdvK4PEMlCtZgMo2FUSAYOQ62ogA 

betrachten und glücklich sein.

Vielen Dank an alle

Aber auch diese Lib wird irgendwo einen Super-Key haben oder nach einem Master-Secret verlangen. Die gleiche Frage habe ich auch schon mal gestellt zusätzlich mit : “Wie machen es Outlook und Thunderbird?”.
Antwort : genauso unsicher
So lange keine Zusatzinfo vom User erforderlich ist sondern aus bequemlichkeit alles im quasi-Plaintext auf der Platte liegt ist es unsicher, gleich wie oft gesichert.