php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 1,00 durchschnittlich.
Alt 25.04.2008, 18:16  
Neuer Benutzer
 
Registriert seit: 10.11.2007
Beiträge: 18
t.animal befindet sich auf einem aufstrebenden Ast
Standard Sicheres verschlüsseln mit mcrypt?

Hi!

Ich möchte diverse Schulnoten in einer DB speichern. Ich habe mir folgendes Konzept überlegt und wollte euch mal fragen, was ihr davon haltet - bitte korrigiert mich, wenn ich in meinen Überlegungen einen Fehler habe:

Zitat:
1. Nachdem die Schulnoten übermittelt wurden, werden erstmal die nicht übermittelten Felder (wenn z.B. Englisch keine Note eingetragen wurde) mit zufälligen Buchstaben aufgefüllt.

2. Danach werden alle Felder aneinandergehängt und mit einem Seperator (;) getrennt.

3. Anschließend wird an den Mischmasch der md5-hash des Userpassworts angehängt und die Daten an einer zufälligen Stelle abgeschnitten und hinten wieder angehängt (bspw: "Englisch_1-1:15;Englisch_1-2:12;Englisch_1-3:srha;*md5-hash*" =>sch_1-2:12;Englisch_1-3:srha;*md5-hash*Englisch_1-1:15;Engli)

4. Jetzt wird das ganze mithilfe von mcrypt mit Rijndael-256 verschlüsselt wobei als Schlüssel wieder der md5-hash des Passworts verwendet wird und das Ergebnist in einem TEXT-Feld einer mysql-DB abgelegt.


Zur Erläuterung der einzelnen Schritte (ich kenne mich nicht 100% gut mit Verschlüsselungstechnik aus und habe daher vielleicht ein paar Denkfehler drin - weist mich bitte drauf hin):

Zitat:
1. Um schon den Ausgangsblock zu "verzufälligen" füge ich hier die Buchstaben ein.

2. Damit hoffe ich die Performance zu erhöhen, da ich davon ausgehe, dass das entschlüsseln von 30 Noten langsamer ist, als das entschlüsseln von 1 größeren Block.

3. Damit der Block nicht mit einem vorhersehbaren Wert beginnt verschiebe ich alles und verwende einen eindeutigen Wert (md5-hash) als Trennzeichen. Gleichzeitig kann ich später nach dem Entschlüsseln einfach herausfinden ob das Passwort richtig war, indem ich gucke ob der Hash im Klartext enthalten ist.

4. Jetzt verschlüssele ich das ganze mit AES-256.


Vielen Dank schonmal!
t.animal ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.04.2008, 18:28  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von t.animal
2. Danach werden alle Felder aneinandergehängt und mit einem Seperator ( getrennt.
Dann bei Bedarf ein str_pad auf die gewünschte Länge. rijndael-256 hat selbst schon eine Blockgröße von 32 Bytes.
Zitat:
Zitat von t.animal
4. Jetzt wird das ganze mithilfe von mcrypt mit Rijndael-256 verschlüsselt wobei als Schlüssel [...] Passworts verwendet wird
Nicht zu viel rumbasteln. Was bringt es zum Beispiel den md5 Hash als des Passworted als Passwort zu benutzen?
David ist offline   Mit Zitat antworten
Alt 25.04.2008, 19:13  
Erfahrener Benutzer
 
Registriert seit: 29.02.2008
Beiträge: 102
Thomas befindet sich auf einem aufstrebenden Ast
Standard

Hi,

Seh ich das richtig, dass du anfängst, die Daten auf dem Server nach dem Absenden zu verschlüsseln und sonst noch irgendwie umzustellen? Wenn die Daten auf dem Weg abgefangen werden nützt das nämlich garnichts, und ein schlecht gesicherter Server ist auch nicht schön.

Daten zu verschlüsseln ist zwar ein sehr einfacher weg, aber auch eher die letzte Lösung und schützt eher vor Lesen der Daten bei Arbeiten an der Datenbank. Du solltest dir erstmal überlegen, ob solch sensible Daten wirklich den Weg übers Internet machen sollten (falls es überhaupt um Internet geht). Muss es sein, dann sollten entsprechende Sicherheitsmaßnahmen getroffen werden, d.h. https, Server sicher konfigurieren und eine Hardwarefirewall sollte auch angeschafft werden. Idealerweise sollte der Datenbankserver auch nur diesen Dienst anbieten und keine weiteren.

Gruß Thomas
Thomas ist offline   Mit Zitat antworten
Alt 25.04.2008, 19:53  
Neuer Benutzer
 
Registriert seit: 10.11.2007
Beiträge: 18
t.animal befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von David Beitrag anzeigen
Dann bei Bedarf ein str_pad auf die gewünschte Länge. rijndael-256 hat selbst schon eine Blockgröße von 32 Bytes.
Das heißt, ich muss den String auf ein Vielfaches von 32 bringen? Das wundert mich grade, weil ich davon in der Dokumentation nichts gefunden habe.

Zitat:
Zitat von David Beitrag anzeigen
Nicht zu viel rumbasteln. Was bringt es zum Beispiel den md5 Hash als des Passworted als Passwort zu benutzen?
Korrigier mich: Die Verschlüsselung ist stärker, je länger der Schlüssel ist. Da Passwörter von usern häufig kürzer als 32 Zeichen sind, müsste dadurch nicht die Sicherheit steigen?

EDIT:
Zitat:
Zitat von [B
dinamic at gmail dot com][/b]
13-Nov-2007 12:05 Also it should be pointed that md5() and/or sha1() should not be used while forming your key for the mcrypt. This is so because hex encoding uses a set of only 16 characters [0-9a-f], which is equivalent to 4 bits, and thus halve the strength of your encryption: 4 x 32 = 128-bit.
Verdammt.

Zitat:
Zitat von Thomas
Wenn die Daten auf dem Weg abgefangen werden nützt das nämlich garnichts, und ein schlecht gesicherter Server ist auch nicht schön.
Ich weiß, daher berechne ich z.B. md5-hashes von Passwörtern schon vor dem Absenden per javascript und sende diesen.

Zitat:
Zitat von Thomas
Daten zu verschlüsseln ist zwar ein sehr einfacher weg, aber auch eher die letzte Lösung und schützt eher vor Lesen der Daten bei Arbeiten an der Datenbank.
Ich will ja auch nur vor leaks schützen.

Zitat:
Zitat von Thomas
Muss es sein, dann sollten entsprechende Sicherheitsmaßnahmen getroffen werden, d.h. https, Server sicher konfigurieren und eine Hardwarefirewall sollte auch angeschafft werden. Idealerweise sollte der Datenbankserver auch nur diesen Dienst anbieten und keine weiteren.
Grundsätzlich kann ich mir sowas alles nicht leisten. Leider. Jetzt sagst du natürlich, dann biete den Dienst nicht an. Aber ich sage: Es geht hier nicht um Daten, die die Staatssicherheit gefährden. Die Daten werden recht anonym übertragen und nach der Übertragung verschlüsselt. Ein Man-in-the-middle-Angriff lohnt sich bei Schulnoten mMn eher nicht .
t.animal ist offline   Mit Zitat antworten
Alt 25.04.2008, 20:12  
Erfahrener Benutzer
 
Registriert seit: 29.02.2008
Beiträge: 102
Thomas befindet sich auf einem aufstrebenden Ast
Standard

Hi,

Wenn keine Zuordnung zu Schülern gemacht werden kann, dann würde ich mir das ganze Verschlüsseln sparen, ansonsten lohnt sich ein MITM Angriff vielleicht nicht wegen dem Wert der Daten, aber jemand kann dir damit Schaden, denn du bist für die Sicherheit der Daten verantwortlich.

Wird das sowas wie ein Online-Klassenbuch?

Gruß Thomas
Thomas ist offline   Mit Zitat antworten
Alt 25.04.2008, 20:23  
Neuer Benutzer
 
Registriert seit: 10.11.2007
Beiträge: 18
t.animal befindet sich auf einem aufstrebenden Ast
Standard

Ich hab mir mit Excel so ne Tabelle gemacht, die mir sagt, wie viele Punkte ich hab, was ich einbringen sollte etc. Damit bin ich bald an die Grenzen der nativen Excelfunktionen gestoßen und wollte das halt in php machen. Klar werden die Daten nicht mit Namen sondern höchstens Loginnames verknüpft und ich könnte mir die Verschlüsselung sparen.
Ich mach mir das eher als so ne Art... mhm... Übung - und weil ein ähnlicher Service im Internet bisher scheinbar nicht existiert. Außerdem lässt sich je nachdem wie groß der Nutzerkreis ist auch anhand der Fächerbelegung Rückschlüsse auf den Nutzer ziehen.
t.animal ist offline   Mit Zitat antworten
Alt 25.04.2008, 20:28  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das klingt, als wenn die Schüler ihre eigenen Noten (selbstbestimmt) eintragen.
David ist offline   Mit Zitat antworten
Alt 25.04.2008, 20:35  
Erfahrener Benutzer
 
Registriert seit: 29.02.2008
Beiträge: 102
Thomas befindet sich auf einem aufstrebenden Ast
Standard

Hi,

Ja so klingt es, dachte jetzt eher da würde eine Lehrkraft Noten eintragen.

Gruß Thomas
Thomas ist offline   Mit Zitat antworten
Alt 25.04.2008, 20:37  
Neuer Benutzer
 
Registriert seit: 10.11.2007
Beiträge: 18
t.animal befindet sich auf einem aufstrebenden Ast
Standard

@David: Jap. Stell dir vor, jeder Schüler hat einen Notenbogen, auf dem er eben seine Leistungen immer im Überblick hat. Grundsätzlich will ich so etwas machen. Später eventuell, wenn mich die Muse packt, füge ich noch Warnungen hinzu, wenn Gefahr besteht, nicht zum Abi zugelassen zu werden etc.

Aber was ist denn jetzt mit diesen ominösen 32? Ich hab grad mal 25 Ziffern erfolgreich ver- und entschlüsselt, ohne da was gedreht zu haben?!
t.animal ist offline   Mit Zitat antworten
Alt 25.04.2008, 21:42  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich wollte nur darauf hinweisen, dass ein Padding unterhalb der Blockgröße nichts bringt. Wenn Du zum Beispiel immer auf 25 Zeichen auffüllst, nutzt das nichts, weil mcrypt/der Blockcipher das eh auf 32 Zeichen auffüllen.
David 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
Rijndael ohne mcrypt Jacks Rache PHP-Fortgeschrittene 13 28.04.2008 18:20
[solved] mcrypt frage DonTermi PHP Tipps 2007 19 12.09.2007 19:54
mcrypt notyyy PHP Tipps 2006 1 12.11.2006 22:23
htaccess basiertes bzw ganz sicheres loginsystem phpfortgeschrittener PHP Tipps 2007 21 17.09.2006 14:24
Sicheres Login System? PHP Tipps 2006 11 14.03.2006 15:05
MCRYPT Problem solitaer PHP-Fortgeschrittene 2 17.01.2006 10:58
Sicheres PHP-Script? xXx PHP Tipps 2005-2 17 08.10.2005 13:39
Sicheres Passwort Mano PHP Tipps 2005-2 5 16.09.2005 14:57
[Erledigt] Suche sicheres Login-System PHP-Fortgeschrittene 4 23.08.2005 09:43
sicheres Backup für Kunden Datenbanken 16 18.05.2005 23:02
Entschlüsselung mit mcrypt PHP Tipps 2005 4 08.04.2005 15:52
publickey und secretkey mit mcrypt bitte um hilfe PHP Tipps 2005 0 17.01.2005 13:18
mcrypt win32 PHP Tipps 2004-2 0 30.12.2004 14:07
Sicheres Login-Script DirkHo PHP Tipps 2004-2 4 08.11.2004 22:23
Sicheres Verfahren, um Site zu schützen HTML, Usability und Barrierefreiheit 6 25.09.2004 01:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mcrypt beispiel, was ist mcrypt, php 2 wege verschlüsselung, php zwei wege verschlüsselung, mcrypt sicher, 2 wege verschlüsselung php, php mcrypt aes, php mcrypt beispiel, php mcrypt rijndael, zwei wege verschlüsselung php, php verschlüsselung aes, mcrypt aes php, sicheres verschlüsseln mit mcrypt php, php aes verschlüsselung, mcrypt php, aes verschlüsselung php, wie sicher ist mcrypt, php zweiwege verschlüsselung, http://www.php.de/php-fortgeschrittene/1012-sicheres-verschluesseln-mit-mcrypt.html, php aes mcrypt

Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 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