You are not logged in.

  • Login

1

Thursday, January 29th 2009, 3:27pm

Passwort speichern

Hi,

Ich brauch mal wieder hilfe:

Ich habe ein JFrame, in dem es ein JPasswortField gibt. Wie kann man dieses sicher in einer Datei oder sonst wo speichern, dass man gar nicht oder nur sehr schwer darankommt?
Ich hab schon in der API geschaut, in Forum gesucht und Google befragt. Habt ihr eine Idee?

MfG bla

2

Thursday, January 29th 2009, 3:30pm

Da man Datein lesen kann, solltest du das verschlüsselt ab speichern... Eine Datei verstecken in der Hoffnung das sie niemand findet ist blödsinn. :)

3

Thursday, January 29th 2009, 3:33pm

Es gibt also keine Packages, die sowas machen?
Dann mach ich mich mal an die arbeit...

MfG bla

4

Thursday, January 29th 2009, 3:34pm

Passwörter werden noramlerweise als Hash gespecihert. Ein Hash ist mehr oder weniger ein Fingerabdruck von einem String oder Datei oder eine sonstigen Zeichenfolge. Wenn jetzt jemand ein Passwort eingibt, berechnest du einfach den Hash und verlgiechst ihn mit dem gespeicherten. Ich würde dir empfehlen einen doppelt gehashten sha1-Hash zu nehmen. Also im Grunde die Hash-Operation 2x durchführen.

Beispiel zur Berechnung eines Hashs:

http://www.anyexample.com/programming/ja…_sha_1_hash.xml

5

Thursday, January 29th 2009, 3:38pm

Es gibt also keine Packages, die sowas machen?
Dann mach ich mich mal an die arbeit...

MfG bla


Zumindest das Schreiben der Datei kann man Recht einfach mit Proeprties machen.

Also zum schreiben sind das 3 Zeilen:

Java Quellcode

1
2
3
Properties p = new Properties();
        p.setProperty("password", "passwordValue");
        p.storeToXML(new FileOutputStream(new File("user.pass")), "nocomment");


Und zum lesen:

Java Quellcode

1
2
Properties p = new Properties();
        p.loadFromXML(new FileInputStream(new File("user.pass")));


Danach kannste dann mit:

Java Quellcode

1
p.getProperty("password");


auf das Passwort zugreifen.

6

Thursday, January 29th 2009, 3:39pm

Und wieder mal eine Frage ganz schnell beantwortet :thumbup:

MfG bla

7

Thursday, January 29th 2009, 7:16pm

RE: Passwort speichern

Hi,

Ich brauch mal wieder hilfe:

Ich habe ein JFrame, in dem es ein JPasswortField gibt. Wie kann man dieses sicher in einer Datei oder sonst wo speichern, dass man gar nicht oder nur sehr schwer darankommt?
Ich hab schon in der API geschaut, in Forum gesucht und Google befragt. Habt ihr eine Idee?

MfG bla

Ich habe den Thread hier nicht ganz gelesen aber leider muss ich dir sagen, dass das was du möchtest prinzipbedingt nicht geht. Zum einen kannst du das Passwort verschlüsseln müsstest den Schlüssel aber in deinem Porgramm eincodieren, es ist also relativ leicht wieder auslesbar. Der Ver/Entschlüsselungsalgrithmus steht ja praktischerweise gleich daneben. Die Nummer mit den Hashes hat auch Nachteile, da bei bekannten Hashes das Passwort per BruteForce, Kollision oder RainbowTables (wenn du kein Salt benutzt) knacken, oder - wenn man sichs einfach machen möchte - mann öffnet die Datei und schreibt einen anderen Hash darein, und schon kennt nur Der Angreifer das Passwort. Da hilft auch nicht zweimal Hashen oder sonstwas.

8

Tuesday, February 3rd 2009, 7:54pm

Kann man denn wenigstens verhindern, dass man einen anderen hash reinschreiben kann?

MfG bla

9

Tuesday, February 3rd 2009, 8:04pm

So direkt nicht. Du könntest aber den Rest der Sachen, die du speicherst mit dem Hash verschlüsseln. Wenn dann einer den Hash ändert kommt nur noch Grütze bei rum. Generell ist dein Vorhaben aber schwierig, so lang es um eine lokale Applikation geht.

10

Tuesday, February 3rd 2009, 8:18pm

Ich soll dann also das, was gespeichert wird, mit dem String (Hash des Passworts) als Schlüssel, verschlüsseln?

MfG bla

11

Wednesday, February 4th 2009, 6:52pm

Ja aber nur, wenn dein Programm den Hash niemals irgendwo abspeichert

12

Thursday, February 5th 2009, 12:03am

Ne Client-seitige Lösung is halt ziemlich Käse - weil du unheimlich viel darin investieren müsstest, um das sicher zu machen. Das wird sich in den meisten Fällen nicht lohnen. Man könnte beispielweise die Klasse mit dem Hash verschlüsseln, wobei da halt das Problem wäre, dass man die Klassen mit dem Hash wieder Entschlüsseln und sich nen Loader bastelt.

13

Thursday, February 5th 2009, 12:50am

weil du unheimlich viel darin investieren müsstest, um das sicher zu machen.
Der Punkt den oben schon jemand angesprochen hat ist doch: Es ist NICHT möglich, dass ein Programm sich selbst schützt. Das geht aus Prinzip einfach überhaupt nicht. Es muss immer ne Passworteingabe oder ne Verbindung zu nem anderen Server oder sonst irgendwas externes da sein, dass diesen Schutz gewährt. Ohne ist es einfach nicht Möglich. Da kann man soviele Tricks mit Verschlüsselungen und Hashes anwenden wie man will, es geht NICHT.

14

Thursday, February 5th 2009, 8:31pm

Ich glaube, ich lass die Passwörter einfach aus dem Programm draußen...

MfG bla

15

Saturday, February 7th 2009, 8:29pm

Ich glaube, ich lass die Passwörter einfach aus dem Programm draußen...

MfG bla


Um das ganze noch mal aufzurollen^^
Wofür benötigst du denn deinen Passwortschutz?
Damit Mama und Papa und evtl. der kleine Bruder (im übertragenem Sinne) nicht dran kommt? Dann reicht auch das gehashte Passwort irgendwo hinzuhaun und gut...
Für die anderen Fälle, wurde ja schon alles gesagt :(

16

Sunday, February 8th 2009, 12:52am

Auch externe Server bieten immer eine Gefahrenquelle. Der Fehler liegt ganz woanders. Lass den User ein Passwort eingeben, verschlüssel die Daten damit und zum entschlüsseln lass ihn das wieder eingeben. Wenn es stimmt, ist der Kram entschlüsselbar, mit einem falschen Schlüssel halt nicht. Dafür brauchst du keinen externen Server, keine Hashes, kein Salt oder sonstwas, es ist doch ganz einfach. Der Trugschluss wird oft gemacht (gerne auch von Firmen): Mehr technisches Schnickschnack führt halt nicht zu mehr Sicherheit. Sichere Schlüssel, sichere Algorithmen und ein wenig gesunder Menschenverstand - mehr braucht man nicht.

In diesem Fall: Ein Passwort das die Ausführung eines Programms verhindert ist ähnlich zu einem Lizenzkey und auch kaum realisierbar. Sowas wird schnell geknackt und ist meiner Ansicht nach der falsche Ansatz. Programme mit Passwörtern zu schützen macht in den allermeisten Szenarien überhaupt keinen Sinn, da ja letzlich ja immernur irgendwelche Daten geschützt werden müssen. Es gibt verschiedene Szenarien warum ein Programm ein Passwort verlangen sollte und je nachdem welches zutrifft sollte man dann versuchen sich anders zu schützen (Verschlüsselung von Daten, Authentifizierung bei Remote-Diensten,...).

Similar threads

Social bookmarks