Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

Wie speicher ich ein sensibles Passwort auf dem System ab...

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Wie speicher ich ein sensibles Passwort auf dem System ab...

Beitrag von zeeno »

... damit das Programm nach einem Neustart wieder dieses verwenden kann?

Ich könnte es natürlich einfach in eine Datei schreiben, aber das wäre mir nicht sicher genug. :ugly:

Eine Einweg-Verschlüsselung wird nicht funktionieren, da das Passwort benutzt wird um sich bei Googlemail anzumelden.

Kurzum: Ich hab mir ein kleines Programm in Java geschrieben, was im System Tray liegt und alle X Minuten überprüft ob ich Mails hab. Jetzt will ich meine Accountdaten nicht Hardcoden.

Wie mach ich das am Besten? Hab mir überlegt die Daten in eine Textdatei zu speichern, diese Textdatei mit DES zu verschlüsseln und den Key als serialisiertes Objekt ebenfalls in einer Datei zu speichern (wobei bei jeder verschlüsselung ein neuer Key erstellt wird). Funktioniert leider nur so halb.

Hat jemand eine bessere Idee?
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
50493D33
Wrack
Wrack
Beiträge: 488
Registriert: Dez 2002

Beitrag von 50493D33 »

Gar nicht? Wenn keine Nutzerinteraktion statt finden soll, kann ein Angreifer einfach die selbe Technik nutzen wie dein Programm.
Thorns-zertifizierter Dampfplauderer

"There... are... four... lights!"
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Aha und wie machen das dann andere Programme? Rein aus Interesse. Irgendwie müssen die die Daten ja auch schützen.

Edit: Kann ich dem IMAP Server nicht einfach das Passwort als MD5 Hash senden? Das wäre wohl die einzig sichere Möglichkeit und wohl die einfachste.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Roughael
Stripe
Stripe
Beiträge: 2498
Registriert: Mär 2002

Beitrag von Roughael »

dann wissen sie das passwort nicht, können aber mit dem hash genauso auf die daten zugreifen :ugly:
die sicherste möglichkeit ist noch manuelle eingabe..

für alles andere kann man verschiedene algorithmen nutzen, die das ganze encodieren und dekodieren können,
aber dann darfste kein java nutzen, weil java kann man leicht dekompilieren und
hat danach nutzbaren code zur verfügung um das reine passwort lesen zu können.

andere programme machen es in der regel dem user nur schwer das passwort ohne extra tools auszulesen. mehr kannst du auch nicht machen.
<-- Ehemaliger TTK-Bandit, bis inquake rumzickte -->

Dict.cc Firefox Addon | Q3Devel | Code3Arena(De) | GameType Revolution | Open Game Libraries
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Achja da war ja was :ugly:

Tja dann bleibt mir ja nix anderes übrig als es einem nur schwer zu machen.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Kanegou
Assist
Assist
Beiträge: 5395
Registriert: Mai 2003
Wohnort: #hirnfick

Beitrag von Kanegou »

DES auf jedenfall schonmal gleich vergessen. Der einfach durchlauf lässt sich knacken und Triple DES ist nicht perfomant. Nimm am besten AES.

Du kannst das E-Mail Passwort schon in der Datei speichern (codiert natürlich). Das Passwort für die Entschlüsselung würde ich nicht jedesmal neu generieren um es dann wieder in irgendwo zu speichern (das müsste man ja wieder mindestens genauso gut codieren).

Worauf du achten musst ist das Passwort im Code nicht direkt in einem String zu halten, sondern am besten an verschiedenen Stellen im Code durch unterschiedlichste operationen wie bit verschiebung etc. zu berechnen (dabei auch drauf achten das Compiler Optimierung für diesen Part aus ist). Du musst halt verhindern dass das Passwort im Klartext im Speicher liegt und/oder leicht als solches zu erkennen ist. Ich hatte das früher mal ähnlich gemacht mit dem Windows Administrator Passwort und hatte da ein paar gute Tipps über Google gefunden.
Bild
Frylock: You know, I think I've finally found a good use for the TV.
Master Shake: You put that right back upstairs!
Frylock: No.
Master Shake: Well, then, you help me move down my chair down here so I can watch it. HERE!
Frylock: No, I won't.
Master Shake: Uh... well... I will pee all over my pants, and THEN who's gonna end up looking bad? Huh?
Frylock: You just stay down here with your TV and fucking shove it.
Master Shake: ... Well, maybe I WILL!
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Kanegou hat geschrieben:DES auf jedenfall schonmal gleich vergessen. Der einfach durchlauf lässt sich knacken und Triple DES ist nicht perfomant. Nimm am besten AES.
Lass mich raten, Du hast erst letztes Semester eine Kryptographievorlesung gehört? :ugly:
Klingt jedenfalls wie aus dem Lehrbuch.. mal ehrlich, wer kommt sonst im Alltag auf die Idee, DES oder gar Triple-DES zu verwenden? :ugly: ²
Kanegou hat geschrieben:Worauf du achten musst ist das Passwort im Code nicht direkt in einem String zu halten, sondern am besten an verschiedenen Stellen im Code durch unterschiedlichste operationen wie bit verschiebung etc. zu berechnen (dabei auch drauf achten das Compiler Optimierung für diesen Part aus ist). Du musst halt verhindern dass das Passwort im Klartext im Speicher liegt und/oder leicht als solches zu erkennen ist.
Ich weiß nicht, ob ihm das wirklich so viel bringt..
Irgendwann muss er sein Passwort an den Mailserver schicken und spätestens dann steht es als ein vollständiger String im Speicher bzw. wird sogar über die Leitung geschickt, die vmtl. auch nicht SSL Verschlüsselt ist und damit sowieso von jedem im Netz mitgehört werden könnte :ugly:
Bild
DrKolossos
Angel
Angel
Beiträge: 589
Registriert: Dez 2002
Wohnort: Graz

Beitrag von DrKolossos »

EviLsEyE hat geschrieben:Lass mich raten, Du hast erst letztes Semester eine Kryptographievorlesung gehört? :ugly:
Klingt jedenfalls wie aus dem Lehrbuch.. mal ehrlich, wer kommt sonst im Alltag auf die Idee, DES oder gar Triple-DES zu verwenden? :ugly: ²
Verstehe ich nicht. Er hat doch recht, dass DES nicht gerade das sicherste ist!? Oder war de Quote nicht auf Kanegou bezogen?
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

EviLsEyE hat geschrieben:Lass mich raten, Du hast erst letztes Semester eine Kryptographievorlesung gehört? :ugly:
Klingt jedenfalls wie aus dem Lehrbuch.. mal ehrlich, wer kommt sonst im Alltag auf die Idee, DES oder gar Triple-DES zu verwenden? :ugly: ²


Ich weiß nicht, ob ihm das wirklich so viel bringt..
Irgendwann muss er sein Passwort an den Mailserver schicken und spätestens dann steht es als ein vollständiger String im Speicher bzw. wird sogar über die Leitung geschickt, die vmtl. auch nicht SSL Verschlüsselt ist und damit sowieso von jedem im Netz mitgehört werden könnte :ugly:
Hab bisher noch nicht wirklich mit Verschlüsselungen gearbeitet unter Java und da war DES zufällig als erstes genannt und als Beispiel aufgeführt :ugly:

Hab nicht wirklich Ahnung welcher sicher ist und welcher nicht.

Die Leitung ist per SSL verschlüsselt. Zudem such ich auch noch eine Möglichkeit mich per MD5-Digest zu authentifizieren. Aber ich finde da nichts in der JavaMail API zu unter IMAP und unter POP3 genausowenig. Da steht nur auth.login boolean oder auth.plain boolean aber wenn ich diese Parameter auf false setze, dann ändert sich rein gar nichts :ugly:
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Kanegou
Assist
Assist
Beiträge: 5395
Registriert: Mai 2003
Wohnort: #hirnfick

Beitrag von Kanegou »

EviLsEyE hat geschrieben:Ich weiß nicht, ob ihm das wirklich so viel bringt..
Irgendwann muss er sein Passwort an den Mailserver schicken und spätestens dann steht es als ein vollständiger String im Speicher bzw. wird sogar über die Leitung geschickt, die vmtl. auch nicht SSL Verschlüsselt ist und damit sowieso von jedem im Netz mitgehört werden könnte :ugly:
Ja das ist ja klar. Da hat man ja auch keinen Einfluss drauf. Das selbe Probelm hast du ja auch bei E-Mail Programmen. Aber man sollte zumindest versuchen das gespeicherte Passwort in der Datei zu verschlüsseln und den Schlüssel dazu so gut es geht zu verstecken.
Bild
Frylock: You know, I think I've finally found a good use for the TV.
Master Shake: You put that right back upstairs!
Frylock: No.
Master Shake: Well, then, you help me move down my chair down here so I can watch it. HERE!
Frylock: No, I won't.
Master Shake: Uh... well... I will pee all over my pants, and THEN who's gonna end up looking bad? Huh?
Frylock: You just stay down here with your TV and fucking shove it.
Master Shake: ... Well, maybe I WILL!
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Hab jetzt eine Möglichkeit gefunden. Cipher bietet das Verschlüsseln von Objekten an. Schreibe das verschlüsselte Objekt einfach in eine Datei und fertig. Kann es dann auslesen und wieder entschlüsseln. Jetzt ist nur die Frage wie und wo ich den Key speicher. Und ob ich den Key bei jedem Verschlüsselungs- und Entschlüsselungsdurchlauf neu erstelle. Würde das die Sicherheit nicht nochmal erneut steigern? Weil der Key sich ja immer ändert.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Kanegou
Assist
Assist
Beiträge: 5395
Registriert: Mai 2003
Wohnort: #hirnfick

Beitrag von Kanegou »

Klar steigert das die Sicherheit, aber die Frage ist, wie willst du dir den neuen Schlüssel merken?
Bild
Frylock: You know, I think I've finally found a good use for the TV.
Master Shake: You put that right back upstairs!
Frylock: No.
Master Shake: Well, then, you help me move down my chair down here so I can watch it. HERE!
Frylock: No, I won't.
Master Shake: Uh... well... I will pee all over my pants, and THEN who's gonna end up looking bad? Huh?
Frylock: You just stay down here with your TV and fucking shove it.
Master Shake: ... Well, maybe I WILL!
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Momentan merke ich mir den Key indem ich diesen als serialisiertes Objekt in einer Datei speicher.

Was anderes fällt mir jetzt nicht ein bis auf eine total überdimensionierte JavaDB zu nehmen mit einem Datensatz :ugly: aber selbst das ist denke ich gut knackbar.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
EviLsEyE
Administrator
Administrator
Beiträge: 23012
Registriert: Jan 2000
Wohnort: NRW
Kontaktdaten:

Beitrag von EviLsEyE »

Ich stelle mir gerade die Frage, warum Du überhaupt so einen riesigen Aufwand betreibst..?
Es wird doch wohl kaum ein Karl Koch oder ZeroCool an Deinen Rechner kommen, der versuchen wird Dein Mailpasswort zu knacken oder zu stehlen :ugly:
Reicht da nicht eigentlich schon sowas simples wie rot13, kennifier und Konsorten aus? :catch:
DrKolossos hat geschrieben:Verstehe ich nicht. Er hat doch recht, dass DES nicht gerade das sicherste ist!? Oder war de Quote nicht auf Kanegou bezogen?
Jein, war schon auf Kanegou bezogen - die Formulierung seiner Antwort erinnerte mich aber 1:1 an eine meiner Kryptographie-Vorlesungen und ich musste schmunzeln :D
Merke aber gerade, mein Post klang irgendwie gehässig - das war jedenfalls nicht vorgesehen ;)
Bild
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

EviLsEyE hat geschrieben:Ich stelle mir gerade die Frage, warum Du überhaupt so einen riesigen Aufwand betreibst..?
Es wird doch wohl kaum ein Karl Koch oder ZeroCool an Deinen Rechner kommen, der versuchen wird Dein Mailpasswort zu knacken oder zu stehlen :ugly:
Reicht da nicht eigentlich schon sowas simples wie rot13, kennifier und Konsorten aus? :catch:


Jein, war schon auf Kanegou bezogen - die Formulierung seiner Antwort erinnerte mich aber 1:1 an eine meiner Kryptographie-Vorlesungen und ich musste schmunzeln :D
Merke aber gerade, mein Post klang irgendwie gehässig - das war jedenfalls nicht vorgesehen ;)

Wenn ich immer nur das machen würde was mir genügen würde, hätte ich niemals die Motivation aufbringen können mir selbst irgendeine Programmiersprache beizubringen :ugly:
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
fame
Combo
Combo
Beiträge: 13805
Registriert: Okt 2000
Wohnort: LK Rosenheim

Beitrag von fame »

Kannst du als Key nicht einfach eine Passphrase nehmen die du dann halt beim starten des Programms eingibst?! Eine Art Masterpasswort, wie z.B. bei Opera.
RDX hat geschrieben:Halt einfach mal deine verfickte Fresse du Spast, OK? Wenn es dir Spass macht nach dem Essen einen grummelnden Magen zu haben (noch dazu nachdem du etwas gegessen hast was dir absolut nicht schmeckt) um dann irgendwann furzend auf's Klo zu spazieren und richtig ordentlichen Weichschiss zu hinterlassen wonach du deinen Arsch etwa 12 mal abwischen musst, dann viel Spass damit.
Wenn nicht, dann halt's Maul und lass mich in Ruhe.
Kanegou
Assist
Assist
Beiträge: 5395
Registriert: Mai 2003
Wohnort: #hirnfick

Beitrag von Kanegou »

zeeno hat geschrieben:Momentan merke ich mir den Key indem ich diesen als serialisiertes Objekt in einer Datei speicher.

Was anderes fällt mir jetzt nicht ein bis auf eine total überdimensionierte JavaDB zu nehmen mit einem Datensatz :ugly: aber selbst das ist denke ich gut knackbar.
Ja, und das wäre dann genau das Problem. Der Key liegt serialisiert aber unverschlüsselt in einer Datei. Deswegen ist die Idee mit dem immer neu generierten Key nicht sinnvoll.
Bild
Frylock: You know, I think I've finally found a good use for the TV.
Master Shake: You put that right back upstairs!
Frylock: No.
Master Shake: Well, then, you help me move down my chair down here so I can watch it. HERE!
Frylock: No, I won't.
Master Shake: Uh... well... I will pee all over my pants, and THEN who's gonna end up looking bad? Huh?
Frylock: You just stay down here with your TV and fucking shove it.
Master Shake: ... Well, maybe I WILL!
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

fame hat geschrieben:Kannst du als Key nicht einfach eine Passphrase nehmen die du dann halt beim starten des Programms eingibst?! Eine Art Masterpasswort, wie z.B. bei Opera.
Das ist eine sehr gute Idee. Ich verlange dann sozusagen beim erstmaligen Starten das Masterpasswort und speicher das dann als MD5 Hash. Für die Verschlüsselung benutze ich dann das Passwort was der Benutzer bei dem regulären Starten eingibt als Plain-Text nachdem es mit dem MD5-Hash abgeglichen wurde. Der MD5-Hash dient dann nur zum abgleichen und kann nicht für die Verschlüsselung selbst benutzt werden.

So ist das Masterpasswort nur für einen wirklich kurzen Moment als char[] im Speicher und wird dann auch sofort wieder von der GC zerstört.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Debee
Tank Jr.
Tank Jr.
Beiträge: 941
Registriert: Okt 2006

Beitrag von Debee »

Eine Alternative ist einen Mikrocontroller wie einen MSP430 mit
durchgebrannter JTAG Security Fuse (dJSF)zu verwenden. Der Flash-Speicher
mit dJSF kann nicht mehr ausgelesen werden. Damit hat man einen
wirksamen Kopierschutz. Die Übertragung kann mit PGP sicher
verschlüsselt werden. Das ist etwas TPM-ähnliches.
Das Problem ist damit aber, das der Mikrocontroller nur beschränkt
prüfen kann ob der Server ok ist oder von einem Angreifer kontrolliert
wird - wie auch bei TPM.
ColdFusion
Capture
Capture
Beiträge: 6195
Registriert: Apr 2001

Beitrag von ColdFusion »

pff. Passwörter sind sowieso miserable Authentifizierungssysteme!

Challenge-Response und Zero-Knowledge-Beweise ftw!
Bild

Ich bin dagegen. Was hab ich gerade gesagt? Was kümmert mich mein Geschwätz von eben! Ich bin dafür, ich sag "Ja"!
p4nDa
Doom
Doom
Beiträge: 3540
Registriert: Jun 2005

Beitrag von p4nDa »

Naja, also:
du wirst (als privatanwender) nicht drumrum kommen dass irgendwann mal das passwort im klartext im hauptspeicher vorliegt... Wenn du deinem system nicht traust, hast du eh ganz andere probleme.

Deswegen versteh ich jetzt dein problem nicht ganz?
Du willst dein gmail(?) pw ablegen? Ja dann tu das doch. Aes-256 ist industriestandard und gilt als (aktuell) sicher. Was manche fuer tipps abgeben is laecherlich.

Das passwort muss ja irgendwie an google uebermittelt werden. Also muss das passwort im speicher stehen. wenn ich nen angreifer habe, der zugriff auf meinen speicher hat, dann schreckt ihn auch eine "zerstueckelte/geXORte" version nicht ab.

Also deine jetztige idee ist:
du erwartest ne usereingabe -> hasht sie (md5) und benutzt diesen hash als key fuer deine (zb aes) verschluesselte datei?
was soll dir der hashschritt bringen?
edith: ok, verstanden wie du das hashen meinst. (kein md5 verwenden)
Hat java keine String Objekte mehr, oder warum verwendest du char[]? Und auf ein Aufraeumen des GC, bei so ner anwendung wuerd ich mich sicherlich verlassen!!!

(und ja, du willst kein des)
wenn du schon so rangehst: wie siehts denn mit der vertrauenswuerdigkeit deines netzwerkes aus? was is mit der ssl verbindung? etc...
Bild
zeeno
Uriel
Uriel
Beiträge: 2793
Registriert: Nov 2002
Kontaktdaten:

Beitrag von zeeno »

Es geht mir hier nicht um die "Sicherheit" meines Passwortes oder anderes. Es geht mir darum rein um den didaktischen Effekt (da ich mit sowas noch nicht wirklich viel Erfahrung habe. Gerade in Java.)

Die Verbindung geht über SSL. Ein String Objekt im Speicher ist leichter auszulesen als ein char[].

Der Hash Schritt bringt mir die Bestätigung der Richtigkeit des eingegebenen Masterpasswortes und somit den SecretKey für die Verschlüsselung. Natürlich gibt es bei sowas überall Lücken. Aber mir geht es nicht um super tolle Sicherheit. Bin auch nicht Paranoid was das angeht. Ich will es nur selbst mal programmiert haben. So hab ich bisher alles gelernt. Einfach mal selber machen... ;)

Und die Tipps hier haben mir schon sehr weitergeholfen.
Bild

Drum & Bass: Hartes oder Weiches

"Demokratie ist, wenn man sich aussuchen kann wer verarscht." - Hagen Rether
[/CENTER]
Urstoff
Biker
Biker
Beiträge: 1018
Registriert: Sep 2008

Beitrag von Urstoff »

@p4nDa:
String-Objekte landen bei Java unter Umständen in einem Pool. Das ist der letzte Ort, wo man ein Kennwort haben möchte. ;)
Das kannst Du auch einfach überprüfen:

Code: Alles auswählen

String s1 = "hallo"; /* neues Objekt, landet im Pool */
String s2 = "hallo"; /* identisch mit s1, kommt nämlich aus dem Pool */
System.out.println(s1 == s2); /* true */

String s3 = new String("hallo"); /* neues Objekt, nicht aus dem Pool */
System.out.println(s1 == s3); /* false */
s3 = s3.intern(); /* gibt das Objekt aus dem Pool zurück, das gleich s3 ist */
System.out.println(s1 == s3); /* true */
Sich ein neues String-Objekt mit new zu erzeugen, wäre also denkbar, aber das ist weder schön noch klar noch sicher. Je nach Eingabe weiß man auch nicht, woher ein String kommt. Ist es ein neues Objekt oder ist es ein aus dem Pool wiederverwendetes?
zeeno hat geschrieben:Hab jetzt eine Möglichkeit gefunden. Cipher bietet das Verschlüsseln von Objekten an. Schreibe das verschlüsselte Objekt einfach in eine Datei und fertig. Kann es dann auslesen und wieder entschlüsseln. Jetzt ist nur die Frage wie und wo ich den Key speicher. Und ob ich den Key bei jedem Verschlüsselungs- und Entschlüsselungsdurchlauf neu erstelle. Würde das die Sicherheit nicht nochmal erneut steigern? Weil der Key sich ja immer ändert.
Das verlagert das Problem lediglich. Nun ist das Kennwort durch einen Schlüssel geschützt, und Du weißt nicht, wohin Du mit dem blöden Schlüssel sollst.

In Java gibt es einen Schlüsselspeicher (java.security.keystore), in dem man Zertifikate und Schlüssel sicher speichern kann. Aber auch dort werden sie mit einem Kennsatz oder wenigstens Kennwort gesichert.

Für die Schlüssel selbst gibt es Klassen, da mußt Du Dir nichts bauen. Das einzige, was Du als char-Feld hast, ist das eingegebene Kennwort, und Du hast schon sehr richtig erkannt, daß es nach dem Laden des Schlüsselspeichers entfernt werden kann. Den Garbage Collector wirft man für so etwas aber nicht an, das ist unnütz und viel zu teuer. Stattdessen überschreibt man es, und da man es dann nie mehr braucht, kann man es auf null setzen, damit der GC den Speicher irgendwann freigibt.

Code: Alles auswählen

char[] password;
...
Arrays.fill(password, '#');
password = null;
Das ist eine sehr gute Idee. Ich verlange dann sozusagen beim erstmaligen Starten das Masterpasswort und speicher das dann als MD5 Hash.
Wenn Du kein Salz hinzufügst, kannst Du es auch fast im Klartext abspeichern. ;) Die Idee ist zwar schon richtig, aber die Länge des Kennwortes muß erhöht werden, und das geschieht durch das Salz. Das darf auch öffentlich bekannt sein, Du kannst also zufällige Zeichen oder ein festes Merkmal eines Nutzers verwenden. Das verhindert zweierlei: einerseits ergeben zwei identische Kennwörter unterschiedliche Streuwerte; andererseits steigt die Länge des Kennwortes, vorberechnete Tabellen mit Streuwerten bringen daher nichts mehr.

Wenn Du den Rechenaufwand eines Angreifers noch erhöhen möchtest, berechnest Du den Streuwert iterativ, beispielsweise in hunderttausend Durchläufen. Das geht für ein einzelnes Kennwort sehr schnell, erhöht den Aufwand eines Angreifers, der alles ausprobieren muß, aber ganz enorm. Salz alleine genügt aber.

Ach ja, und dann nimmt man heute auch kein MD5 mehr. SHA-2 ist eine gute Wahl.
Warzenschwan
Assist
Assist
Beiträge: 5169
Registriert: Feb 2007

Beitrag von Warzenschwan »

Und dieses ganze Gerede, weil du keinen Mailclient nutzen willst? :ugly: ;)
Bild

Was soll denn daran zu groß sein?
Antworten