Moin Moin!
ich programmiere gerade einen WebShop (PHP) mit einem BackEnd(JAVA), die beide auf eine MySQL-DB zugreifen.
Nun geht es um den beliebten Datenschutz.
Der fängt damit an, die Systeme abzusichern, und ist integraler Bestandteil der Planung einer neuen Software. Du hast also viel zu früh angefangen, Code zu schreiben.
Ich will/darf die Userdaten nicht im Klartext speichern!
Was meinst Du genau mit "Userdaten"?
Das Passwort für den Login hinterlege ich mit md5() das ist klar.
Schlechte Idee.
MD5 ist als geknackt anzusehen, erst recht ohne Salt. Nimm den härtesten Hash-Algorithmus, den Du bekommen kannst. SHA-512 wäre ein Anfang. Und auf jeden Fall gehört eine Zufallskomponente ("Salt") in die Hash-Funktion.
Aber was wäre das sinnvollste für die Kundendaten (Name, Straße, Ort, usw)?
Speichern im Klartext.
Die Anschrift ist laut unserem Datenschutz-Beauftragten ohnehin nicht sonderlich schutzwürdig.
Was meinst Du mit "usw"?
Diese müssen von mir ja auch mit einem Key entschlüsselt werden....
Eben. Das ist vollkommener Mumpitz, denn der Schlüssel und der Entschlüsselungsalgorithmus muß im Programm vorhanden sein. Ein Angreifer kann sich entweder den Schlüssel aus dem Programm herausfummeln oder stumpf das Programm so austricksen, dass es die Daten entschlüsselt rausrückt.
Also Klartext.
Ich dachte evtl an aes_encrypt direkt bei den Select/Updates per MySQL, da dies weder für Java noch PHP problematisch wird ;-)
Mumpitz. Damit verbrennst Du nur Rechenzeit.
Wäre dies aus Eurer Sicht sinnvoll? Oder gäbe es noch gute Alternativen?
Password + Salt durch eine Hash-Funktion jagen, Datenbank-Server, Backend-Server, Webserver und Backup-Server so gut es geht verrammeln, restliche Daten im Klartext speichern.
Zum Absichern der Server: Server baulich sichern (verschlossene Tür mit ausreichend Widerstand gegen Einbruchsversuche, keine Fenster, stabile Wände), keine nicht zwingend notwendigen Dienste (Services bzw. Daemons) laufen lassen, alle Software mit den minimal möglichen Rechten laufen lassen, Remote-Zugang gar nicht oder nur über eine verschlüsselte Verbindung, Zertifikate bzw. Public Key-Verfahren statt Login mit Passwort, ... -- zu dem Thema kann man kistenweise Bücher schreiben.
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".