php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.04.2010, 13:05  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard Passwort-Handling bei verschlüsselten DB-Daten

Hi,
ich möchte ein Projekt auf die Beine stellen, welches in der Datenbank relativ sensible Daten enthält. Da ich mich vor einem Datenbank-Klau absichern möchte, würde ich gern die sensiblen Daten per AES verschlüsseln. Das Passwort für die Verschlüsselung sollte dann am besten das Passwort des Users sein und nicht in der Applikation hinterlegt sein, damit der Dieb auch beim Diebstahl der gesamten DB nichts in der Hand hat.

Ich möchte also on-the-fly, wenn der User eingeloggt ist, seine Daten entschlüsseln und ihm zur Verfügung stellen. Aber wie? Er soll ja nicht bei jeder Detail-Seite (es gibt recht viele Datensätze pro User) sein Passwort neu eingeben müssen. Und das Passwort in die Session zu schreiben wäre riskant, da beim Bruch der Applikation zumindest die Passwörter aller aktuell eingeloggten User offen darliegen.

Würde es hier Sinn machen, das User-Passwort in ein Cookie zu schreiben. Ich erhöhe damit zwar immens das Risiko einer XSS-Attacke, dafür aber nur für den einen User. Alle anderen Datensätze wären in dem Fall trotzdem sicher.

Und das Passwort hätte noch den Nachteil, dass, wenn der User sein Passwort ändern will, ich alle seine Daten neu verschlüsseln müsste.

Wie würdet ihr das machen?

Viele Grüße,
Christoph
McSodbrenner ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.04.2010, 13:20  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von McSodbrenner Beitrag anzeigen
Würde es hier Sinn machen, das User-Passwort in ein Cookie zu schreiben. Ich erhöhe damit zwar immens das Risiko einer XSS-Attacke, dafür aber nur für den einen User. Alle anderen Datensätze wären in dem Fall trotzdem sicher.
Hm, da scheint mir die Session aber doch der bessere Ablageort.

Über das, was auf deinem Server passiert, hast du die Kontrolle.
Über das, was auf dem Client vor sich geht, eher nicht.

Zitat:
Und das Passwort hätte noch den Nachteil, dass, wenn der User sein Passwort ändern will, ich alle seine Daten neu verschlüsseln müsste.
Du könntest zweistufig arbeiten.
Entschlüssle mit dem Passwort, das der Nutzer eingibt, einen individuellen Schlüssel, den du zur Verschlüsselung der Daten verwendest.
Ändert der Nutzer sein Passwort, verschlüsselst du damit seinen Datenschlüssel neu. Damit kann die Verschlüsselung der Daten gleich bleiben.
ChrisB ist offline   Mit Zitat antworten
Alt 28.04.2010, 13:23  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Was ist, wenn der Benutzer sein Paßwort vergisst (kommt relativ häufig vor)?

Oder wenn ein Benutzer kompromitiert wird (passiert auch häufiger, als das ein Server wirklich gehackt wird)? Sekretärin Fr. Müller-Lüdenscheidt schreibt ihr Passwort eh auf ein Post-It und klebt den an den Monitor, wenn es nicht dem Namen der Katze entspricht...

Verschlüsselungspasswörter sollten sehr stark sein - will ich einem 08/15 Userpasswort wie "müller123" vertrauen?

IMHO solltest du die Verschlüsselung auf EIN starkes Passwort aufbauen, welches dann an EINER (oder WENIGEN) sicheren Stellen aufbewahrt wird.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 28.04.2010, 13:35  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Über das, was auf deinem Server passiert, hast du die Kontrolle.
Über das, was auf dem Client vor sich geht, eher nicht.
Ja schon, aber WENN der Server ausgelesen wird, ist zumindest nur der eine User betroffen.

Zitat:
Zitat von ChrisB Beitrag anzeigen
Du könntest zweistufig arbeiten.
Entschlüssle mit dem Passwort, das der Nutzer eingibt, einen individuellen Schlüssel, den du zur Verschlüsselung der Daten verwendest.
Ändert der Nutzer sein Passwort, verschlüsselst du damit seinen Datenschlüssel neu. Damit kann die Verschlüsselung der Daten gleich bleiben.
Stimmt, gute Idee. Löst leider nicht das Problem, dass ich seinen Schlüssel mit herumtragen muss.

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Was ist, wenn der Benutzer sein Paßwort vergisst (kommt relativ häufig vor)?
Sollte mit ChrisBs Lösung zu erledigen sein.

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Verschlüsselungspasswörter sollten sehr stark sein - will ich einem 08/15 Userpasswort wie "müller123" vertrauen?

IMHO solltest du die Verschlüsselung auf EIN starkes Passwort aufbauen, welches dann an EINER (oder WENIGEN) sicheren Stellen aufbewahrt wird.
Naja, es ist das Passwort für seine eigenen Daten. Wenn es zu schwach ist, ist das sein Problem. Wenn ich auf ein Passwort setze, muss halt nur das zu bekommen sein, um das System zu kompromittieren. Und da ich on-the-fly dekodieren muss, liegt das Passwort auf dem Webserver. Wahrscheinlich nicht der Ort, den du als sichere Stelle einstufst
McSodbrenner ist offline   Mit Zitat antworten
Alt 28.04.2010, 13:46  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von McSodbrenner Beitrag anzeigen
Und da ich on-the-fly dekodieren muss, liegt das Passwort auf dem Webserver. Wahrscheinlich nicht der Ort, den du als sichere Stelle einstufst
Wenn dir der Client der sicherere Ort zu sein scheint - dann übertrage die verschlüsselten Daten, und dekodiere sie clientseitig
ChrisB ist offline   Mit Zitat antworten
Alt 28.04.2010, 13:50  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von McSodbrenner Beitrag anzeigen
Naja, es ist das Passwort für seine eigenen Daten. Wenn es zu schwach ist, ist das sein Problem. Wenn ich auf ein Passwort setze, muss halt nur das zu bekommen sein, um das System zu kompromittieren. Und da ich on-the-fly dekodieren muss, liegt das Passwort auf dem Webserver. Wahrscheinlich nicht der Ort, den du als sichere Stelle einstufst
Warum dann überhaupt verschlüsseln oder Sicherheit einsetzen?

Was ich meinte war: BENUTZER schreiben sich komplizierte Passwörter auf und bewahren diese Info nahe dem Rechner auf, ergo am Arbeitsplatz. Dieser wird frequentiert, Kollegen kommen vorbei, Kunden, Besucher, manchmal ist der Platz nicht besetzt (Mittag) und es bietet sich die Gelegenheit für Diebe.

Der Serverraum sollte abgeschlossen sein. Nur authorisiertes Personal sollte Zugang haben - kein Ort, an dem Besucher, Kunden oder die Putzkolonne durchkommt.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 28.04.2010, 14:05  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Wenn dir der Client der sicherere Ort zu sein scheint - dann übertrage die verschlüsselten Daten, und dekodiere sie clientseitig
Was soll das ändern?
Ich meinte ja nicht, dass der Client sicher ist. Doch wenn er kompromittiert ist, sind es zumindest nicht gleichzeitig auch alle anderen Kunden.

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Warum dann überhaupt verschlüsseln oder Sicherheit einsetzen?
Ganz einfach, damit beim Diebstahl der Datenbank nicht alle User-Daten offenliegen.

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Was ich meinte war: BENUTZER schreiben sich komplizierte Passwörter auf und bewahren diese Info nahe dem Rechner auf, ergo am Arbeitsplatz. Dieser wird frequentiert, Kollegen kommen vorbei, Kunden, Besucher, manchmal ist der Platz nicht besetzt (Mittag) und es bietet sich die Gelegenheit für Diebe.
Klar, kann immer passieren, betrifft dann aber nur diesen User.

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Der Serverraum sollte abgeschlossen sein. Nur authorisiertes Personal sollte Zugang haben - kein Ort, an dem Besucher, Kunden oder die Putzkolonne durchkommt.
Der Angriff kommt ja auch nicht unbedingt von innen, sondern von außen. Ich hatte vor kurzem das Problem, dass ein Root-Server innerhalb von drei Stunden, nachdem die Meldung einer Sicherheitslücke in SSH bekannt wurde, ein Rootkit drauf hatte. 3 Stunden... da hab ich mal gut gestaunt und aus Respekt den Hut abgenommen.

Weitere Meinungen, Lösungen? Arbeitet vielleicht jemand mit sensiblen Daten?
McSodbrenner ist offline   Mit Zitat antworten
Alt 29.04.2010, 01:18  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.269
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Du kannst das schon machen, dass du die Daten mit dem Passwort des Users verschluesselst. Nur musst du dir eben auch klar sein, welche Konsequenzen das hat: Sehr viel Arbeit, keine Suche, keine Sortierung, keine Statistiken, viel Rechenaufwand, (hoffentlich!) unloesbare Probleme wenn das Passwort vergessen wird, trotz allem keine wirklich bedeutend hohe Sicherheit und einen Spezialfall abgedeckt, der vermutlich nie (?) auftreten wird. Da stellt sich mir die Frage nach der Verhaeltnismaessigkeit.

Klar, jeder findet seine Daten, die er zu verwalten hat wichtig, aber sind sie es auch objektiv? Ich behaupte mal, dass selbst Kontoinformationen auf einem Hostingserver mit guten, langen, sich regelmaessig aendernen Zugangspasswoertern, einer soliden, professionellen Anwendungsentwicklung sicher genug sind.
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 29.04.2010, 07:46  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Du schreibst nicht zufällig Software für einen gewissen Staat in den USA ?

-> States' Rights Come to Security Forefront -- Massachusetts State Data Protection Law
robo47 ist offline   Mit Zitat antworten
Alt 29.04.2010, 10:34  
Erfahrener Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 160
PHP-Kenntnisse:
Fortgeschritten
McSodbrenner befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Du kannst das schon machen, dass du die Daten mit dem Passwort des Users verschluesselst. Nur musst du dir eben auch klar sein, welche Konsequenzen das hat...

Klar, jeder findet seine Daten, die er zu verwalten hat wichtig, aber sind sie es auch objektiv?
Der Witz bei diesen Daten ist folgender. Es ist kein schwerer Verlust für den User selbst, wenn nur er sie verliert (zum Thema "unloesbare Probleme wenn das Passwort vergessen wird"), da die Daten geplant nur 7 Tage gespeichert werden. Der würde wahrscheinlich nur sagen: "Pech". Sie dürfen nur unter keinen Umständen jemand anders in die Hände fallen. Denn dann werden diese Daten ziemlich brisant.

Zitat:
Zitat von robo47 Beitrag anzeigen
Du schreibst nicht zufällig Software für einen gewissen Staat in den USA ?
States' Rights Come to Security Forefront -- Massachusetts State Data Protection Law
Krass, aber nein. Es sind nicht mal persönliche Daten.
McSodbrenner ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] geänderte Daten übergeben ? danyh Datenbanken 3 17.03.2010 12:00
Website in XML-Format öffnen und Daten in DB schreiben...aber nur wie ? Oli Krause PHP Tipps 2009 11 22.03.2009 12:36
Registrierte User sollen ihre Daten ändern können 54ch4 PHP Tipps 2009 17 14.03.2009 14:29
Scriptsuche Suche Script zum einpflegen von daten... derTorsten1909 Scriptbörse 17 10.01.2009 18:22
Daten in Datenbank übergeben Bebre PHP Tipps 2008 2 11.02.2008 11:41
Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
daten mit positionsangabe einlesen PHP Tipps 2005-2 3 20.07.2005 16:45
[Erledigt] Passwort und Nutzerverwaltung in Php und Mysql PHP Tipps 2005-2 7 23.06.2005 17:46
3 Seiten durch Passwort schützen mit einmaliger PW-Eingabe? PHP Tipps 2005 12 19.04.2005 22:41
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
Passwort verschlüsselung Datenbanken 5 06.09.2004 10:31
benutzername + passwort pruefen PHP Tipps 2004 4 07.07.2004 16:14
Übertragung von Daten zwischen Anmeldeschritten PHP Tipps 2004 6 18.06.2004 20:32
HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
deutsche bahn passwort ändern, passwort in db verschlüsseln, php datenbank handling sensible daten, schwere php verschlüsselungsfunktionen, verschlüsseltes passwort im datensatz, php verschlüsselung datenbank, verschlüsselte db dateien öffnen, php password handling, daten in db verschlüsselt speichern php, datenschlüssel pgp, verschlüsselung passwort in db, datenschlüssel klau, php passwort jeder datensatz, php passwörter in db verschlüsseln, passwörter in db verschlüsseln, dbahn.de/passwort ändern, php passwort handling, php verschlüsselung serpent beispiel, handling von passwort vergessen, dateien verschlüsseln kennwort ändern

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:38 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum