php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.07.2011, 17:36  
Benutzer
 
Registriert seit: 24.07.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Phantomias befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Konzept: Verschlüsselung

Liebe Helfer,

habt Nachsicht, ich bin in vielerlei Hinsicht noch blutiger Anfänger.
Ich brauche ein sinnvolles Konzept für folgendes Anliegen:

In meiner SQL (mySQL) Datenbank werden Personendaten gespeichert (z.B. Vorname, Nachname, Geburtsdatum - jeweils in Spalten). Diese Daten sollen verschlüsselt in der Datenbank gespeichert werden. Dies realisiere ich momentan mit Hilfe von Mcrypt (Rijndael-Algorithmus, 128 bits), d.h. die Daten kommen beim Server an, werden dort verschlüsselt und in der Datenbank gespeichert. Wenn ich nun eine Suche innerhalb der PHP-Anwendung, z.B. nach einem Nachname starte, verschlüssel ich einfach den Suchstring.
Problem ist, dass ich somit natürlich nur Ergebnisse bekomme, die exakt dem Suchstring entsprechen. Zum Beispiel findet man mit "kurt" nicht "Kurt".

Wie kann ich Daten in der Datenbank verschlüsselt abspeichern und gleichzeitig noch eine komfortable Suche ermöglichen? Ich möchte zum Beispiel auch "Müller" finden, bei einer Suchanfrage mit "Mül", am besten sogar noch mit "Muel", "mul", usw.
Ich hoffe, man kann mein Anliegen verstehen...

Vielen Dank und beste Grüße
Phantomias
Phantomias ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.07.2011, 17:46  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Das geht nicht, jedenfalls nicht so wie du dir das vorstellst. Es wäre interessant zu wissen, zu welchem Zweck die Verschlüsselung erfolgt und vor allem wo der Schlüssel dazu liegt. Ich vermute ehrlich gesagt schon einen Fehler im Konzept und würde dort ansetzen.
fab ist offline   Mit Zitat antworten
Alt 24.07.2011, 17:56  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Vor was möchtest du dich schützen wenn die Daten verschlüsselt in der DB liegen? fab hat es schon angesprochen, wenn die Daten so verschlüsselt sind dann kannst du damit nicht mehr arbeiten denn sie verlieren jede Bedeutung!
Flor1an ist offline   Mit Zitat antworten
Alt 24.07.2011, 17:59  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Wer deine DB klaut, der wird auch das Script mitnehmen, in dem man nachlesen kann, wie alles wieder entschlüsselt werden kann. Wenn die Daten genügend wertvoll erscheinen, dann kriegt man das auch mit Brute-Force-Angriffen geknackt.

Mach die besser Gedanken darüber, wie du potentielle Einbrecher abwehrst.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 24.07.2011, 18:02  
Benutzer
 
Registriert seit: 24.07.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Phantomias befindet sich auf einem aufstrebenden Ast
Standard

Hallo Fab,

vielen Dank für deine schnelle Antwort.
Jetzt weiß ich ehrlich gesagt nicht, welche Informationen relevant sind, damit mir weitergeholfen werden kann. Es kann sehr gut sein, dass ein Fehler im Konzept vorliegt, deswegen bin ich für alle Vorschläge offen.

Die PHP-Anwendung ist für einen Bereich, in dem vom Gesetzgeber ein möglichst hoher Datenschutz gefordert wird. Es gibt zwar keine genauen gesetzlichen Vorgaben, allerdings wird ein Datenschutz nach "möglichst besten Gewissen" gefordert. Der Schlüssel ist mir als Programmierer natürlich bekannt und liegt auch auf meinem Server - aber wenn ich einen Blick in die Datenbank werfe, sehe ich die Daten zunächst nur verschlüsselt. Auch müssten Dritte sich sowohl Zugriff auf den Datenbankserver (für die Daten) als auch auf den PHP-Server (für den Schlüssel) verschaffen, um an die Daten zu gelangen. Somit kann man vor dem Gesetzgeber, der keine genauen Vorgaben gibt, besser argumentieren - falls wirklich mal nachgehakt werden sollte.

Wie sehe ein sinnvolles Konzept aus? Mit der nun verfachten Vorgabe: Verschlüsselte Daten in der Datenbank, trotzdem eine schnelle und komfortable Suche.

Helfen diese Informationen?

Vielen Dank...
Phantomias ist offline   Mit Zitat antworten
Alt 24.07.2011, 18:11  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Verschlüsselung der Felder in der Datenbank mit einem Schlüssel der dem PHP-Skript bekannt ist ist Augenwischerei, das gefällt vielleicht dem Gesetzgeber, bringt dir aber in der Praxis nur Probleme. Die Verbindung die du dort verschlüsselst ist eigentlich bereits durch den Login zur Datenbank gesichert (hier ein sicheres Passwort zu wählen ist effektiver und wichtiger!). Ich gehe einfach mal davon aus, dass Datenbank und Webserver auf dem gleichen Server laufen aber selbst wenn nicht, ist es hier Angelegenheit des Serveradmins, nicht des Programmiers, den Zugriff zur Datenbank von außen zu unterbinden.

Deine Aufgabe ist es, die Anwendung gegen Angriffe wie SQL Injections und CSRF zu schützen, damit nicht dein PHP Skript zur Sicherheitslücke wird. Da hilft dir dann nämlich auch keine Verschlüsselung der Welt, die zwischen Skript und Datenbank erfolgt.

@Wolla: Brute Force ist bei AES jetzt wirklich nicht der Schwachpunkt, die Probleme liegen hier wie bereits angedeutet ganz woanders.

Edit: Du schreibst "Vorgabe: verschlüsselte Daten in der Datenbank" - ist das wirklich wörtlich die Vorgabe oder deine Interpretation? Weiter oben steht noch "hoher Datenschutz, keine genauen Vorgaben"
fab ist offline   Mit Zitat antworten
Alt 24.07.2011, 18:14  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Die Frage ist halt auch ob die Verschlüsselung einzelner Werte dir wirklich "Sicherheit" bietet. Du hast immer noch viele Probleme die damit nicht erledigt sind.

Z.B.: solltest du deine IDs nicht auch verschlüsselt haben könnte ein Angreifer der die DB besitzt z.b. auf der Webseite irgendwie mal eine Person suchen und sieht seine ID. Nun kann er in der DB den Eintrag mit der ID raussuchen. Zwar kann er nicht auf seinen Namen oder sein Geburtsdatum zugreifen aber vlt. interessieren ihn andere Dinge. Z.B. könnte dieser Eintrag mit anderen Einträgen verknüpft sein, sind sicherlich auch ganz interessante Informationen. Oder er erstellt sich selbst einen Account und schaut sich an wie sein Geburtsdatum verschlüsselt wurde. Findet er jetzt einen anderen Eintrag der den selben verschlüsselten Wert in der Geburtstagsspalte hat dann weiß er das Geburtsdatum obwohl dieses ja verschlüsselt ist.

Du siehst nur die Werte verschlüsseln bringt nicht komplette Sicherheit, den aus der Kombination zwischen den Daten können immer noch Informationen extrahiert werden.

Die Frage ist aber auch wovor du dich genau schützen willst. Hast du Angst das er an die Zugangsdaten zum MySQL Server kommt? Oder hast du Angst das er auf das Filesystem des DB Servers zugreifen kann und die Dateien in der die DB alles abspeichert kopieren kann?

"hoher Datenschutz" kann z.b. auch bedeuten das du nicht einfach in der URL "profil.php?id=123" die 123 veränderst und dann die Profilinformationen einer anderen Person auslesen darfst.
Flor1an ist offline   Mit Zitat antworten
Alt 24.07.2011, 18:32  
Benutzer
 
Registriert seit: 24.07.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Phantomias befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe eure Kritik bzw. eure Vorschläge.
Es ist sicherlich wichtiger auch andere Aspekte und Elemente mit den entsprechenden Maßnahmen abzusichern. Aber bevor wir dazu kommen und selbst wenn es Augenwischerei ist, gibt es eine Möglichkeit der Verschlüsselung mit entsprechenden Suchmöglichkeiten? Es geht unter anderem auch darum, dass für mich die Daten nicht sofort einsehbar sind. Natürlich ist das Augenwischerei, da ich den Schlüssel besitze und jederzeit die Daten entschlüsseln könnte. Aber vor dem Gesetzgeber macht es durchaus einen Unterschied, ob ich beim Zugriff auf die Datenbank die Daten sofort sehe oder erst Maßnahmen dafür ergreifen muss...
Phantomias ist offline   Mit Zitat antworten
Alt 24.07.2011, 18:58  
Benutzer
 
Registriert seit: 24.07.2011
Beiträge: 41
PHP-Kenntnisse:
Anfänger
Phantomias befindet sich auf einem aufstrebenden Ast
Standard

@fab: "Das geht nicht, jedenfalls nicht so wie du dir das vorstellst."
Oder war das schon die entsprechende Antwort?
Phantomias ist offline   Mit Zitat antworten
Alt 24.07.2011, 19:13  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

Warum werden denn die Verbindungen nicht verschlüsselt und mittels Zertifikaten abgesichert? Der Server-Raum entsprechend gesichert und die Software durch QA entsprechend auf einem hohen Sicherheitsniveau.

Alles andere ist nicht nur Augenwischerei, sondern soll wohl mangelnde Sicherheit kaschieren. So kommt's mir jedenfalls vor.
lcrash 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
Eigene Verschlüsselung if ( !CryptExtension ) Lightware PHP Einsteiger 19 10.03.2011 20:14
Multilinguale Webseite - suche gutes Konzept! HelloPHP! PHP Einsteiger 25 02.03.2011 15:32
.htaccess Verschlüsselung (MD5) Paeisi PHP Einsteiger 12 30.01.2011 21:46
[Erledigt] 3DES Verschlüsselung und XML OnerOrk PHP-Fortgeschrittene 1 17.12.2010 12:52
[Erledigt] Framework Kernel Konzept Geryon Software-Design 36 06.10.2010 22:23
Verschlüsselung root66 PHP-Fortgeschrittene 4 30.07.2010 15:19
AES Verschlüsselung Java > PHP trudii11 PHP Tipps 2010 2 08.06.2010 16:31
Konzept einer Datenbankabstraktion Dark Guardian Software-Design 29 30.01.2010 18:13
PHP Verschlüsselung 3jfx PHP Tipps 2010 1 23.01.2010 22:18
[Erledigt] Konzept für einen PHP Web Crawler Dark Guardian Software-Design 10 23.11.2009 16:31
Schnelle symetrische Verschlüsselung Zender PHP-Fortgeschrittene 7 04.11.2008 23:53
Verschlüsselung? Wozu denn? phpdummi Off-Topic Diskussionen 20 13.08.2008 00:28
Verschlüsselung PHP Tipps 2005-2 13 07.06.2005 18:06
Verschlüsselung der Datenbank PHP Tipps 2005 18 18.05.2005 09:45
[Erledigt] Multigaming Warscript Konzept PHP-Fortgeschrittene 6 30.08.2004 20:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
verschlüsselung konzept, konzept verschlüsselung, php datenbank verschlüsseln, geburtsdatum verschlüsseln, php verschlüsselung, geburtsdatum verschlüsselt, geburtsdatum verschluesselt, verschlüsselung von daten konzepte, mysql datenbank personen daten, php und sql schützen wovor, eigene verschlüsselung php, konzept der datenverschlüsselung, verschlüsselungskonzept, datenbank verschlüsseln php, verschlüsselte datenbanken php, phantomias verschlüsselung, php in verschlüsselter db suchen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:13 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