Laden...

Speichern sensibler Daten

Erstellt von hirschkadaver vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.526 Views
H
hirschkadaver Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren
Speichern sensibler Daten

Hi,

ich schreibe gerade ein kleines Programm, welches auf eine MySQL DB zugreift. Die Logindaten sollen hier vom User einstellbar sein, also nicht hard coded.
Die simpelste möglichkeit ist, die Daten in properties.settings.default zu spiechern, allerdings werden die Daten ja hierbei plain in eine XML Datei geschieben, was bei Passwörtern etc denkbar ungeschickt ist.

Meine Frage: ist es irgendwie möglich, diese Programmeinstellungen nicht als XML sondern einem automatisch verschlüsselten Dateiformat abzulegen?
Wenn nicht, wie speichert man dann sensible Daten am sinnvollsten? Verschlüsseln und in eine Datei schreiben, die immer ausgelesen werden muss oder gibts da was einfacheres fertiges?

Danke & MfG

89 Beiträge seit 2006
vor 16 Jahren

Hallo,

Einwegverschluesseln, bei Verlust neu generieren.

Btw. Ich traue keiner Software/Seite, die mir mein Passwort zurueckschicken kann 🙂

Gruss
purestrain

Edit:
Ich dachte ein reine Benutzer-PW.

49.485 Beiträge seit 2005
vor 16 Jahren
H
hirschkadaver Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren

Original von purestrain
Hallo,

Einwegverschluesseln, bei Verlust neu generieren.

Hm, wie soll das funktionieren? Wenn ich das vom User eingegebene Passwort zB per MD5 verschlüssel und abspeicher, kann ich es nicht mehr an den SQL-Server schicken...
Oder hat MySQL da eine Anmeldemöglichkeit die ich noch nicht kenne?

A
138 Beiträge seit 2007
vor 16 Jahren

Hallo,

Original von hirschkadaver
Oder hat MySQL da eine Anmeldemöglichkeit die ich noch nicht kenne?

Dieses wäre genauso sicher, bzw. unsicher, als würde man das Passwort als Plaintext ablegen.
Wenn ich mich z.B. mit dem MD5 Hash von meinem Datenbankpasswort auch anmelden könnte, wäre die nächste Frage, wie ich denn den MD5 Hash des Datenbankpasswortes sicher abspeichere?
Wenn ich den in die App-Config in Plaintext hinterlege, liest ein Angreifer den Hash aus, und kann sich dann damit bei der DB anmelden. Sicherheitszugewinn geht gegen Null.

Das beste wäre:
Wenn der User dein Programm startet, muss dieser ein Passwort angeben. Aus diesem Passwort wird ein Key abgeleitet, mit dem das Datenbankpasswort dann entschlüsselt wird.
Da die meisten User aber nicht bereit sind, bei Programmstart ein Passwort anzugeben, entfällt diese Variante leider meistens.

Sonst kann man auf sogenannte Schlüsselcontainer zurückgreifen:
Gewusst wie: Speichern von asymmetrischen Schlüsseln in einem Schlüsselcontainer

Sein DB-Passwort verschlüsselt in einer Datei abzuspeichern ist aber so oder so problematisch.
Was ist, wenn der Angreifer die Datei kopiert und dann dein Programm startet und so Zugang zu DB hat?
Wenn er den Netzverkehr mitschneidet, bekommt er sogar in Klartext das Passwort.

Eine umständliche Lösung per SSL würde hier abhilfe schaffen, indem der Fingerabdruck/Hashwert der Zertifikates mitverwendet wird, um das Datenbankpasswort zu verschlüsseln.
Kopiert ein Angreifer dann die Datei mit dem verschlüsselten Passwort und möchte sich an einem anderen Server damit anmelden, um so am Server das Passwort zu erhalten/mitzulesen, zu würde ein anderes Zertifikat ja für SSL Verbindung verwendet werden* => anderer Fingerabdurck => anderer/falsche Key zum entschlüsseln des Datenbankpasswortes.

Wie du siehst, ist es gar nicht so leicht, hohe Sicherheit ohne Komforteinschränkungen zu bieten.

*: Wenn der Angreifer das orginal Zertifikat + private Key hat, würde die Schwachstelle nicht mehr beim Client zu suchen sein.

89 Beiträge seit 2006
vor 16 Jahren

Wie ich oben geschrieben habe; Ich war der annahme das es sich um ein reines Benutzer-PW o.ae. handelt; Login habe ich uebersehen.

H
hirschkadaver Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren

Original von Andavos
Dieses wäre genauso sicher, bzw. unsicher, als würde man das Passwort als Plaintext ablegen.
Wenn ich mich z.B. mit dem MD5 H...

Manchmal sollte man einfach denken bevor man sich komplett lächerlich macht... stimmt natürlich, das war sehr dämlich von mir 🙂

Das Programm ist eigentlich ausschließlich für mich gedacht, es wird auf exakt 2 PCs auf der Welt laufen, nämlich zuhause und im Geschäft. Daher muss nicht alles 100%ig dicht sein, aber das PW sollte auch eben nicht gerade als Klartext irgendwo stehen.
Deswegen danke ich, dass ich auf SSL etc verzichten kann. Das einfache verschlüsselte Speichern in einer Datei sollte in meinem Fall eigentlich reichen.

Danke an alle für die Tipps