Discussion:
Passwörter in Textfiles verschlüsseln
(zu alt für eine Antwort)
Uwe Naumann
2007-07-31 21:48:49 UTC
Permalink
Hallo allerseits,

ich lege meine ganzen Anwendungseinstellungen in einer Property-File ab.
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
die Passwörter ungern im Klartext dort hinterlegen. Auf welchem,
möglichst einfachen, Wege kann ich die ver-/entschlüsseln?

Hat jemand ein paar Hinweise für mich?
--
Gruss Uwe

--------- cut here with a very sharp knife ---------
Uwe Naumann eMail: uwe[at]vieledinge[dot]de
Web: http://www.vieledinge.de http://www.swllog.de
Michael Osipov
2007-07-31 21:55:53 UTC
Permalink
Post by Uwe Naumann
Hallo allerseits,
ich lege meine ganzen Anwendungseinstellungen in einer Property-File ab.
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
die Passwörter ungern im Klartext dort hinterlegen. Auf welchem,
möglichst einfachen, Wege kann ich die ver-/entschlüsseln?
kannst ja nur per hash mit symmetrischer verschlüsselung gehen.
das sollte aber schnell zu knacken sein.

ABER: verschlüsselung/rechte von home dateien ist die aufgabe des OS
nicht von der applikation.
in unix ist das kein problem, unter windows auch.

Firefox speichert z.b. alle passwörter im profil als Base64. Kein hit,
sicher ist es auch nicht.
Habe selbst beim bugzilla angefragt ob man bei TB verschlüsselte profile
haben kann, es kam nur zurück siehe ABER!

bye
Andreas Eberhöfer
2007-07-31 22:18:46 UTC
Permalink
Post by Michael Osipov
Post by Uwe Naumann
Hallo allerseits,
ich lege meine ganzen Anwendungseinstellungen in einer Property-File ab.
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
die Passwörter ungern im Klartext dort hinterlegen. Auf welchem,
möglichst einfachen, Wege kann ich die ver-/entschlüsseln?
kannst ja nur per hash mit symmetrischer verschlüsselung gehen.
das sollte aber schnell zu knacken sein.
Was hat denn Hash mit symetrischer Verschlüsselung zu tun? Hash ist eine
Einwegverschlüsselung und kann nicht mehr entschlüsselt werden.
Algorithmen dazu sind z.B. MD5 oder SHA1.
Symetrische Verschlüsselung bedeutet das man zum ver- und entschlüsseln
den selben Schlüssel hat. Algorithmen dazu sind z.B. AES oder DES.
Und wieso sollte das schnell zu knacken sein? Klar, selbe Passwörter
erzeugen den selben Hashcode und es gibt im Netz Datenbanken die den
Hashcode von zig gängigen PW gespeichert haben. Damit kann man einfache
Passwörter knacken, aber wenn man in sein Passwort Sonderzeichen einbaut
ist man sicher.
Außerdem wie meinst du denn, dass die Passwörter unter Unix
verschlüsselt werden?
Post by Michael Osipov
Firefox speichert z.b. alle passwörter im profil als Base64. Kein hit,
sicher ist es auch nicht.
Mich würde echt mal interessieren, wer das Amenmärchen das Base64 eine
Verschlüsselung sei, in die Welt gesetzt hat. Base64 ist dafür da 8 Bit
Ascii in 7 Bit Ascii umzusetzen.
Post by Michael Osipov
Habe selbst beim bugzilla angefragt ob man bei TB verschlüsselte profile
haben kann, es kam nur zurück siehe ABER!
Beim Firefox mag das aber stimmen, es gibt aber Anwendungsfälle da
reicht das nicht aus.

mfg
Andreas
Michael Osipov
2007-07-31 22:23:30 UTC
Permalink
Post by Andreas Eberhöfer
Post by Michael Osipov
Post by Uwe Naumann
Hallo allerseits,
ich lege meine ganzen Anwendungseinstellungen in einer Property-File ab.
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
die Passwörter ungern im Klartext dort hinterlegen. Auf welchem,
möglichst einfachen, Wege kann ich die ver-/entschlüsseln?
kannst ja nur per hash mit symmetrischer verschlüsselung gehen.
das sollte aber schnell zu knacken sein.
Was hat denn Hash mit symetrischer Verschlüsselung zu tun? Hash ist eine
Einwegverschlüsselung und kann nicht mehr entschlüsselt werden.
Da habe ich mich unglücklich ausgedrückt. aber das ist mir bewusst.
Post by Andreas Eberhöfer
Algorithmen dazu sind z.B. MD5 oder SHA1.
MD5 wurde bereits geknackt. MAn sollte schon SHA1 nutzen.
Post by Andreas Eberhöfer
Symetrische Verschlüsselung bedeutet das man zum ver- und entschlüsseln
den selben Schlüssel hat. Algorithmen dazu sind z.B. AES oder DES.
Und wieso sollte das schnell zu knacken sein? Klar, selbe Passwörter
erzeugen den selben Hashcode und es gibt im Netz Datenbanken die den
Hashcode von zig gängigen PW gespeichert haben. Damit kann man einfache
Passwörter knacken, aber wenn man in sein Passwort Sonderzeichen einbaut
ist man sicher.
das meinte ich, wenn PWs unsicher sind, nutzt auch eine verschlüsselung
nichts.
Post by Andreas Eberhöfer
Außerdem wie meinst du denn, dass die Passwörter unter Unix
verschlüsselt werden?
accountpasswörter werden unter unix ja nicht als plaintext
abgespeichert. werden verschlüsselt oder eher gehasht.
Post by Andreas Eberhöfer
Post by Michael Osipov
Firefox speichert z.b. alle passwörter im profil als Base64. Kein hit,
sicher ist es auch nicht.
Mich würde echt mal interessieren, wer das Amenmärchen das Base64 eine
Verschlüsselung sei, in die Welt gesetzt hat. Base64 ist dafür da 8 Bit
Ascii in 7 Bit Ascii umzusetzen.
base64 ist keine verschlüsselung, ist nur notbehelf für mails mit anhang.
Post by Andreas Eberhöfer
Post by Michael Osipov
Habe selbst beim bugzilla angefragt ob man bei TB verschlüsselte
profile haben kann, es kam nur zurück siehe ABER!
Beim Firefox mag das aber stimmen, es gibt aber Anwendungsfälle da
reicht das nicht aus.
was richt nicht auch, dass du chmod 700 machst? für alles andere gibt es
truecrypt!

bye
Bernd Eckenfels
2007-07-31 22:33:41 UTC
Permalink
Post by Michael Osipov
accountpasswörter werden unter unix ja nicht als plaintext
abgespeichert. werden verschlüsselt oder eher gehasht.
Das geht helt nur, weil sie nur zum pruefen eingesetzt werden. Alle
passwoerter unter "unix" die an jemand anderes gesendet werden (.ftprc,
fetchmail, wget) sind ja meistens unverschluesselt. zB. muss man auch ssh
keys ohne passwort anlegen wenn man sie automatisiert verwenden will.

Man koennte diese mit einem master passwort schuetzen aber dieses kennt die
Anwendung und damit auch ein potentieller hacker..

Gruss
Bernd
Malte Schirmacher
2007-07-31 22:46:17 UTC
Permalink
Post by Michael Osipov
MD5 wurde bereits geknackt. MAn sollte schon SHA1 nutzen.
Das ist ebenfalls ein Ammenmärchen. Für den Hier beschriebenen Fall,
nämlich das verschlüsselte abspeichern von Passwörtern ist MD5 nach wie
vor gut geeignet.
Bernd Eckenfels
2007-07-31 22:27:21 UTC
Permalink
Post by Andreas Eberhöfer
Mich würde echt mal interessieren, wer das Amenmärchen das Base64 eine
Verschlüsselung sei, in die Welt gesetzt hat. Base64 ist dafür da 8 Bit
Ascii in 7 Bit Ascii umzusetzen.
1. Firefox hat ein master passwort fuer den credential store: nicht base64.
Weiss nicht welche passwoerter dort nicht drin liegen?

2. credentials mit base64 _verschleiert_ abzulegen ist sehr gebraechlich,
denn es ist einfach und der zusaetzliche aufwand fuer irgend eine andere
verschleierung lohnt sich nicht da der symmetrische key und das verfahren
immer aus dem sourcecode extrahiert werden kann. ob ich jetzt AES-256 mit
"secret" verschluessle oder nur mit base64 verschleire macht keinen
unterschied (solange ich nicht den symmetrischen key anders schuetzen
kann/will). Ich finde es "ehrlicher" wenn eine software von verschleierung
redet und nicht von verschluesselung.

Ich bitte zu beachten dass ich zwischen passwoerter die geprueft werden
(muessen einwegverschluesselt werden) und credentials die im klartext
vorhanden sein muessen unterscheide.

Gruss
Bernd
Michael Osipov
2007-07-31 22:32:27 UTC
Permalink
Post by Bernd Eckenfels
Post by Andreas Eberhöfer
Mich würde echt mal interessieren, wer das Amenmärchen das Base64 eine
Verschlüsselung sei, in die Welt gesetzt hat. Base64 ist dafür da 8 Bit
Ascii in 7 Bit Ascii umzusetzen.
1. Firefox hat ein master passwort fuer den credential store: nicht base64.
Weiss nicht welche passwoerter dort nicht drin liegen?
nicht das masterpw. in der signons2.txt ist bei mir alles in base64.
sehe es gerade.
habe kein master pw gesetzt.
Post by Bernd Eckenfels
2. credentials mit base64 _verschleiert_ abzulegen ist sehr gebraechlich,
denn es ist einfach und der zusaetzliche aufwand fuer irgend eine andere
verschleierung lohnt sich nicht da der symmetrische key und das verfahren
immer aus dem sourcecode extrahiert werden kann. ob ich jetzt AES-256 mit
"secret" verschluessle oder nur mit base64 verschleire macht keinen
unterschied (solange ich nicht den symmetrischen key anders schuetzen
kann/will). Ich finde es "ehrlicher" wenn eine software von verschleierung
redet und nicht von verschluesselung.
die frage war ja, wie man passwörter richtig verschlüsseln kann. ich
denke, dass nur asymmetrische verschlüsselung hilft.
oder?
Bernd Eckenfels
2007-07-31 22:43:01 UTC
Permalink
Post by Michael Osipov
die frage war ja, wie man passwörter richtig verschlüsseln kann. ich
denke, dass nur asymmetrische verschlüsselung hilft.
oder?
Verschluesselung nur dann nutzen wenn man einen sicheren schluessel hat.
Also im Falle von Firefox z.b. wenn man das master password hat. Ohne
masterpassword oder daemon der das geheimnis haelt macht es kein sinn
ueberhaupt zu verschluesseln, da ist base64 ausreichend.

Fuer authorisierungs-passwoerter ist es unstrittig dass man (salted) einweg
verfahren nehmen muss.

Gruss
Bernd
Andreas Eberhöfer
2007-07-31 22:49:30 UTC
Permalink
Post by Bernd Eckenfels
Post by Andreas Eberhöfer
Mich würde echt mal interessieren, wer das Amenmärchen das Base64 eine
Verschlüsselung sei, in die Welt gesetzt hat. Base64 ist dafür da 8 Bit
Ascii in 7 Bit Ascii umzusetzen.
1. Firefox hat ein master passwort fuer den credential store: nicht base64.
Weiss nicht welche passwoerter dort nicht drin liegen?
2. credentials mit base64 _verschleiert_ abzulegen ist sehr gebraechlich,
denn es ist einfach und der zusaetzliche aufwand fuer irgend eine andere
verschleierung lohnt sich nicht da der symmetrische key und das verfahren
immer aus dem sourcecode extrahiert werden kann. ob ich jetzt AES-256 mit
"secret" verschluessle oder nur mit base64 verschleire macht keinen
unterschied (solange ich nicht den symmetrischen key anders schuetzen
kann/will). Ich finde es "ehrlicher" wenn eine software von verschleierung
redet und nicht von verschluesselung.
Ich bitte zu beachten dass ich zwischen passwoerter die geprueft werden
(muessen einwegverschluesselt werden) und credentials die im klartext
vorhanden sein muessen unterscheide.
Klar hast du recht. Bei meinem Vorredner klang es aber ein bisschen so
als würde er base64 als Verschlüsselung ansehen, und ich hab schon öfter
von Leuten gehört das sie Base64 als Verschlüsselung einstufen.

mfg
Andreas
Paul Ebermann
2007-08-05 01:33:59 UTC
Permalink
Post by Andreas Eberhöfer
Post by Michael Osipov
Firefox speichert z.b. alle passwörter im profil als Base64. Kein hit,
sicher ist es auch nicht.
Mich würde echt mal interessieren, wer das Amenmärchen das Base64 eine
Verschlüsselung sei, in die Welt gesetzt hat. Base64 ist dafür da 8 Bit
Ascii in 7 Bit Ascii umzusetzen.
Wenn schon korrigieren, dann richtig.

Es gibt kein 8-Bit-ASCII (es sei denn, man zählt das Parity-Bit mit),
und Base64 kodiert einen Strom von 8-Bit-Daten (gemeinhin "Bytes"
genannt) in eine Untermenge von ASCII (je 6 Bit in einem Zeichen).


Paul
--
Alle meine Antworten, Feststellungen, Behauptungen
sind mit AFAIK und IMHO zu lesen und nicht in der
Luft- und Raumfahrt oder Atomindustrie zu verwenden.
Andreas Eberhöfer
2007-07-31 22:34:06 UTC
Permalink
Post by Uwe Naumann
Hallo allerseits,
ich lege meine ganzen Anwendungseinstellungen in einer Property-File ab.
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
die Passwörter ungern im Klartext dort hinterlegen. Auf welchem,
möglichst einfachen, Wege kann ich die ver-/entschlüsseln?
Passwörter verschlüsselt man in der Regel mit einer Hashfunktion. Damit
kann man aber nicht mehr entschlüsseln. Das Prinzip dahinter ist, dass
selbe Passwörter immer den selben Hashcode erzeugen. Du musst in deiner
Property-Datei den Hashcode der Passwörter speichern. Bei der
Passwortabfrage bildest du den Hashcode des eingegebenen Textes und
vergleichst dies mit dem gespeicherten Hashcode, das reicht aus.

Den Hash von einem String kannst du mit folgender Methode berechnen:

public static String computeHash(String pass)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(pass.getBytes());
StringBuffer result = new StringBuffer();
byte[] hashcode = md.digest();
for (int i = 0; i < hashcode.length; i++)
{
result.append(Integer.toHexString(0xFF & hashcode[i]));
}
return result.toString();

} catch (NoSuchAlgorithmException e)
{
System.out.println("Algorithmus nicht gefunden");
}

return null;
}


mfg
Andreas
Bernd Eckenfels
2007-07-31 22:45:32 UTC
Permalink
Post by Andreas Eberhöfer
Post by Uwe Naumann
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
Passwörter verschlüsselt man in der Regel mit einer Hashfunktion. Damit
kann man aber nicht mehr entschlüsseln.
Es sind credentials (zugangskennwoerter) die kann man nicht
einweg-verschluesseln. (man kann ihre verwendung hoechstens vermeiden, z.b.
mit NTLM SSO Propagation)

Gruss
Bernd
Andreas Eberhöfer
2007-07-31 22:56:45 UTC
Permalink
Post by Bernd Eckenfels
Post by Andreas Eberhöfer
Post by Uwe Naumann
Da sind dann auch Zugangsdaten zu einer Datenbank dabei. Nun möchte ich
Passwörter verschlüsselt man in der Regel mit einer Hashfunktion. Damit
kann man aber nicht mehr entschlüsseln.
Es sind credentials (zugangskennwoerter) die kann man nicht
einweg-verschluesseln. (man kann ihre verwendung hoechstens vermeiden, z.b.
mit NTLM SSO Propagation)
Oh stimmt, sorry. Ich war auf der falschen Baustelle.
Loading...