PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] OpenSSL und so Zeug!



kris
05.09.2008, 14:39
Hey ho miteinander!

Ich arbeite zurzeit an einen kleinen Shopsystem und stolpere gerade über kleinere Problem, bei denen mir Dr. Google keine zufriedenstellende Antwort liefert.

Nun, Kunden des Shops geben ja sensible Daten an. Z.B. Bankverbindung, Kreditkartennummer, etc.
Nun soll die Übertragung dieser Daten verschlüsselt stattfinden.

Mittlerweile hab ich OpenSSL auf meinem Root installiert. Das Problem an der Geschichte ist blos, das ich nun keine Ahnung hab wie ich weiter vorgehen soll.

So viel ich verstanden habe, lasse ich per PHP einen Schlüssel generieren und speichere diesen irgendwo auf meinem Root ab. Nun werden die Daten, bevor sie per post gesendet werden z.B. mit openssl_private_decrypt verschlüsselt und bevor sie in die Datenbank eingetragen werden wieder mit openssl_private_encrypt entschlüsselt. Liege ich da richtig oder ist diese Vorgehensweise von Grund auf falsch? Wie sieht es code-technisch aus? Wie erzwinge ich die Verschlüsselung vor dem Senden?

Danke für eure Hilfe schonmal,
cheers

Drakes
05.09.2008, 15:15
Sollte es nicht umkegehrt sein? decrypt->entschlüsseln, encrypt ->verschlüsseln

dead_orc
06.09.2008, 15:50
Liege ich da richtig oder ist diese Vorgehensweise von Grund auf falsch? Wie sieht es code-technisch aus? Wie erzwinge ich die Verschlüsselung vor dem Senden?

Letzteres ist das Problem.
Angenommen du willst nicht HTTPS benutzen, was das einfachste, aber auch entweder teuerste oder benutzerunfreundlichste wäre. Dann müsstest du die Daten mit Javascript oder einer anderen Scriptsprache im Browser verschlüsseln. Und das... naja, sagen wir viel Spaß. Wie das dann Code-technisch aussieht, wage ich mir nicht auszumalen.

Davon abgesehen ist diese Vorgehensweise nicht zwangsläufig die beste, da sie nicht gegen MITM Attacken resistent ist (ebensowenig wie unsignierte HTTPS Zertifikate natürlich). Und eben nicht nur ungemein unkonventionell sondern auch unpraktisch. Also willst du wahrscheinlich HTTPS, da möchte ich dich einfach mal auf CAcert (http://www.cacert.org) verweisen (auch wenn die nicht viel besser sind als unsignierte Zertifikate...)

kris
08.09.2008, 15:40
Ist das normal, dass das Cacert Zertifikat als "nicht-trusted" identifiziert wird?

dead_orc
08.09.2008, 16:42
Ja, ist es. CACert hat Mängel was die Sicherheit angeht (deswegen die Anspielung im letzten Post), und wird auch ohne diese von den meisten Vertreibern von Browsern, Betriebssystemen u.Ä. sehr skeptisch betrachtet. Daher ist das Root-CA von CACert in standardmäßig keinem Browser integriert.