php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.05.2005, 22:04   #1 (permalink)
Gast
 
Beiträge: n/a
Standard Verschlüsselung der Datenbank

Mir stellt sich gerade die Frage, in wie fern man die Datenbank sicher verschlüsseln kann, ohne jedoch die Funktionalität einzuschränken. Gute Verschlüsselungstechniken sind nämlich nicht linear, das bedeutet das man wahrscheinlich auf Suchfunktionen verzichten muss.

Mal angenommen in der DB steht folgenders:

Herr Prof. Dr. Max Mustermann
Musterweg 44
44444 Musterstatt
Musterland

nach der Chiffrierung steht da:

564gvf5rag23z6Fdahd56gfFhaeWdhfdca5DbggrSewgds8etu gRTrte3shSre3
7Sfseasrrztz523ggrtwgg4wfHgssetHgsrZHf3q3gfSdhjgzh huzkhtJujhJdrFGj6
744fGqw3yGqH4Stfw3SqqasVyXyyCVj23ufvaJhdtz854FhkMb DMlOzhjSDsD
Fgr338auz1

nun habe ich eine Suchfunktion die mit ... LIKE '%$suchstring%' arbeiten soll. Man müsste nun den Suchstring chiffrieren damit es bei der Suche nach "Max Mustermann" einen match geben kann - was z.b. bei linearer monoalphabetischer Substitution (exrem unsicher) gehen müsste. Wie ist das aber bei nonlinearer polyalphabetischer Verschlüsselung?

Dann noch eine Frage, die ich mal so in den Raum stellen möchte: Bringt es überhaupt etwas, sich um die Verschlüsselung der DB gedanken zu machen? Gedanke: Wenn jemand an meine DB kommt, kommt er auch an meine Skripte. Und damit hat er dann auch das Werkzeug zum dechiffrieren. Was spricht dafür, die DB zu verschlüsseln, und was dagegen?

Wie macht ihr das - verschlüsselt ihr eure DB? Warum? Warum nicht?

Ich freue mich über sachliche Kommentare.
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 16.05.2005, 22:10   #2 (permalink)
Gast
 
Beiträge: n/a
Standard

a) Wenn jemand an deine db kommt heisst das noch lange nicht, das er auch an deine scripte kommt
b) Verschlüsselung der DB verlangsamt eher alles mögliche - was soll es bringen?
c) Verschlüsselung macht bei einem passwort sinn, da vergleicht man aber meist direkt

Ich glaube eher, das du dir mit der Verschlüsselung steine in den Weg legst... .
 
Alt 16.05.2005, 22:22   #3 (permalink)
Gast
 
Beiträge: n/a
Standard

Na ja, was mir u.a. Kopfschmerzen macht sind die Fälle aus der Vergangenheit, wo es Hacker immer wieder geschafft haben (weis nicht wie) die Adressdaten von grossen Firmen im Internet offenzulegen. Wäre da die DB verschlüsselt, hätte man nur den Spaghetti-Code vorgefunden.

Ein weiteres Sicherheitsrisiko besteht beim Provider selbst. Heutzutage kann man niemandem mehr trauen, und wer garantiert einem das beim Provider nicht jemand angestellt ist, der sich an den Daten der Kunden bedient um damit Geld zu verdienen. Ich bin zwar bei 1&1, habe aber trotzdem ein komisches Gefühl. Schließlich haben die Admins dort auf alles Zugriff. Ist alles nicht ausgeschlossen. Mit einer Verschlüsselung würden diesen Leuten schon mal Steine in den Weg gelegt werden.

Aber ich sehe das auch so, das man sich selbst massiv Steine in den Weg legt. Vor allem auch wenn man mal ein par Fehler in der DB hat die behoben werden müssen. Ist alles verschlüsselt, kann man die Arbeit mit dem Telnet Client in vielen Fällen knicken, wenn es nicht nur um Datenbankdesign geht sondern um Suche nach verwaisten Datensätzen etc.

Hinzu kommt, das man in vielen Fällen wohl auf BLOB anstatt auf z.B. varchar(20) zurück greifen muss, weil der Code einfach viel länger wird.

Passwörter sind MD5() verschlüsselt, aber die will man ja auch nicht durchsuchen oder irgendwo anzeigen. In dem Fall stört es nicht

Nur musste ich bisher die Erfahrung machen das Seitens der Kundschaft immer wieder nach Verschlüsselung gefragt wird. Die Leute fühlen sich einfach sicherer, wenn ihre sensiblen Daten auf dem Server nich in Klartext gespeichert werden. Aber im Moment sehe ich da noch massive Schwierigkeiten was die Umsetzung angeht, und glaube auch das die Performance spürbar darunter leidet. Bin aber kein Experte, bestimmt weis es jemand besser
 
Alt 16.05.2005, 22:31   #4 (permalink)
Erfahrener Benutzer
 
Registriert seit: 20.04.2005
Beiträge: 753
Matthias959 befindet sich auf einem aufstrebenden Ast
Matthias959 eine Nachricht über MSN schicken Matthias959 eine Nachricht über Skype™ schicken
Standard

Zitat:
Passwörter sind MD5() verschlüsselt, aber die will man ja auch nicht durchsuchen oder irgendwo anzeigen. In dem Fall stört es nicht
Wenn ich mich nicht täusche kann man mitt MD5() Verschlüsselte Texte nicht wieder entschlüsseln lassen. Wäre also für eine Datenbank mit Kundendaten weniger sinnvoll.
Die Frage ist ob sich der Aufwand überhaupt lohnt. Ich kann mir nämlich nicht vorstellen das die Provider die Daten ihrer Kunden ausspähen.
Matthias959 ist offline  
Alt 16.05.2005, 23:48   #5 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
Wenn ich mich nicht täusche kann man mitt MD5() Verschlüsselte Texte nicht wieder entschlüsseln lassen
das ist richtig. MD5 ist eine one-way Chiffrierung. Verschlüsselung ist das falsche Wort, da hab ich mich falsch ausgedrückt

MD5 nehme ich nur wenn ich ein Login-Passwort speichern will. Bei Eingabe des Passwortes wird auf den Input md5() angewandt damit man in der DB vergleichen kann.

Zitat:
Ich kann mir nämlich nicht vorstellen das die Provider die Daten ihrer Kunden ausspähen.
Ausschließen kann man es aber auch nicht. Nach dem Prinzip: Wo kein Kläger, da kein Richter. Und wer würde es schon merken wenn seine DB ausgelesen wird und die Adressen an Spammer oder an die Konkurrenz verkauft werden. Beweisen kann man das sowieso nicht. Da liegt es nahe das man sich Gedanken zur Vorsorge macht. Beste Lösung ist wahrscheinlich immer ein eigener Server in einem Kellerverlies, der direkt an ein Backbone angeschlossen wird, aber wer kann sich das schon leisten...
 
Alt 17.05.2005, 21:43   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

zur Sache mit der Suche:
PHP-Code:
<?php
$insert_query 

'INSERT INTO tabelle ( feld ) 
    VALUES ( ENCODE( "' 
$text '", "' $password '") )';


$query 
'SELECT
    feld
FROM
    tabelle
WHERE 
    DECODE( feld, "' 
$password '") LIKE "%' $suchstring '%"';

?>
tapferesschneiderlein ist offline  
Alt 17.05.2005, 21:53   #7 (permalink)
Gast
 
Beiträge: n/a
Standard

Wenn du dem Hoster nicht traust, dann gibt es für dein Problem keine Lösung. Denn der Hoster kommt nicht nur an deine Datenbank, er kommt auch an dein Script, mit dem du die Daten codierst und decodierst.

Gruß
phpfan
 
Alt 17.05.2005, 21:58   #8 (permalink)
Gast
 
Beiträge: n/a
Standard

gutes Argument... wie ist es wenn die Skripte nun kompiliert sind (z.b. Zend)?

Zitat:
zur Sache mit der Suche:
PHP:

<?php
$insert_query =
'INSERT INTO tabelle ( feld )
VALUES ( ENCODE( "' . $text . '", "' . $password . '") )';


$query =
'SELECT
feld
FROM
tabelle
WHERE
DECODE( feld, "' . $password . '") LIKE "%' . $suchstring . '%"';

?>
macht das sinn? Wer Zugriff auf die DB bekommt, wendet auf die verschlüsselten Daten dann einfach das mysql-interne decode an
 
Alt 18.05.2005, 01:01   #9 (permalink)
Erfahrener Benutzer
 
Registriert seit: 27.10.2003
Beiträge: 530
Thice
Standard

Zitat:
Zitat von NewBert
...MD5 ist eine one-way Chiffrierung...
md5() ist eine Prüfsummen-Funktion, KEINE Verschlüsselung.

MfG Andy
__________________
kintzebros.de | KintzeBros Home Entertainment
2061. Nach dem Frieden | kurzfilm
Paula | spielfilm
Thice ist offline  
Alt 18.05.2005, 03:15   #10 (permalink)
Gast
 
Beiträge: n/a
Standard

stimmt. Schlüssel gibts ja nicht. Gibt es eigentlich einen Fall, wo zwei unterschiedliche strings nach md5() Anwendung den selben String ergeben? Nicht, oder? Wenn das so wäre, und die Sache eine eineindeutig (kein Tippfehler) ist, müsste es doch theretisch möglich sein den md5-String zurück in den Ursprungsstring zu bringen...
 
Sponsor Mitteilung
PHP Code Flüsterer

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

 


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
Array Inhalte in eine Datenbank über tragen Munsi1 PHP Tipps 2008 5 11.04.2008 13:28
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
Verbindung zu einer Datenbank im LAN Datenbanken 11 25.09.2005 12:18
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
[Erledigt] Seiten in PHP mit Datenbank PHP Tipps 2005-2 3 24.07.2005 09:07
Zugriff auf Sybase 8 Datenbank über ADOdb PHP-Fortgeschrittene 15 06.04.2005 15:55
[Erledigt] Eintrag in Datenbank mittels Formular? Datenbanken 5 16.12.2004 17:36
MySQL findet Datenbank nicht Datenbanken 10 21.10.2004 09:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbank verschlüsselung sinnvoll

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.




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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.