Hallo,
ich suche im Moment nach einer sicheren/einfachen/praktischen Möglichkeit, die Kommunikation zwischen einem Client-Programm (in C++) und dem Webserver (in PHP) zu verschlüsseln.
Im Grunde ruft das Client-Programm ein PHP-Script auf dem Webserver auf und übergibt per GET/POST verschiedene Daten. Der Webserver mach dann - abhängig von den GET/POST-Parametern - eine echo-Ausgabe. In dieser echo-Ausgabe stehen dann die Daten für das Client-Programm.
Zur Zeit werden alle Daten unverschlüsselt gesendet - das soll sich nur ändern, es ist nur noch nicht ganz klar, wie.
Eine Idee ist, https zu benutzen. Damit habe ich mich noch nicht groß beschäftigt. So wie ich das verstanden habe, muss ich an den PHP-Scripten nichts ändern, wenn ich auf https umsteige, alles (Auslesen von GET/POST-Paramtern etc.) funktioniert genau so, wie ohne Verschlüsselung (mit http) - ist das so richtig? Man müsste wahrscheinlich "nur" am Client-Programm etwas ändern!?
Wenn das so stimmt, währe das IMHO eine gute Lösung, allerdings müssten wir und um Zertifikate etc. kümmern, und meines Wissens ist das nicht ganz billig. Auch ist noch nicht klar, wie groß die Änderungen am Client-Programm wären, bzw. wie weit das überhaupt geht.
Eine andere Möglichkeit, welche ich mir überlegt habe, ist dass die Übertragung nicht verschlüsselt wird, sondern die Daten selber.
Ich habe an eine asymmetrische Verschlüsselung, mit Public/Private-Key, gedacht. Der Server und das Client-Programm haben einen Public-Key, welcher dem jeweils anderen bekannt ist. Damit werden die Daten verschlüsselt bevor sie gesendet/ausgegeben werden.
Vorteil wäre, dass man kein Zertifikat brächte und hier Kosten sparen könnte.
Nachteil wäre, dass auf jeden auch am Webserver geändert werden müsste, wenn die openssl-Funktionen überhaupt auf dem Webserver vorhanden sind.
Und jetzt eure Meinung, habe ich irgendetwas grob falsch verstanden und das was ich mir oben gedachte habe ist Blödsinn/nicht machbar? Gibt es vll. noch eine viel bessere Möglichkeit oder "Fallen" auf die man achten muss?
Wenn beide Verschlüsselungen möglich wären, welche sollte man wählen?
Währen beide Möglichkeiten "gleich sicher"? (Bei https wäre doch z.B. MITM möglich, beim Public/Private-Key-Verfahren nicht, oder!?)
Es gibt noch ein Zusatzproblem:
Es müssen zum Teil auch Dateien (Bilder, Ton, etc.) übertragen werden - per POST. Wenn man die Verbindung per https geschützt, werden dann auch diese Dateien verschlüsselt? Und, es sollte doch Möglich sein, mit den PHP-openSSL-Funktionen auch Dateien verschlüsseln!?
mfg
d0ne
ich suche im Moment nach einer sicheren/einfachen/praktischen Möglichkeit, die Kommunikation zwischen einem Client-Programm (in C++) und dem Webserver (in PHP) zu verschlüsseln.
Im Grunde ruft das Client-Programm ein PHP-Script auf dem Webserver auf und übergibt per GET/POST verschiedene Daten. Der Webserver mach dann - abhängig von den GET/POST-Parametern - eine echo-Ausgabe. In dieser echo-Ausgabe stehen dann die Daten für das Client-Programm.
Zur Zeit werden alle Daten unverschlüsselt gesendet - das soll sich nur ändern, es ist nur noch nicht ganz klar, wie.
Eine Idee ist, https zu benutzen. Damit habe ich mich noch nicht groß beschäftigt. So wie ich das verstanden habe, muss ich an den PHP-Scripten nichts ändern, wenn ich auf https umsteige, alles (Auslesen von GET/POST-Paramtern etc.) funktioniert genau so, wie ohne Verschlüsselung (mit http) - ist das so richtig? Man müsste wahrscheinlich "nur" am Client-Programm etwas ändern!?
Wenn das so stimmt, währe das IMHO eine gute Lösung, allerdings müssten wir und um Zertifikate etc. kümmern, und meines Wissens ist das nicht ganz billig. Auch ist noch nicht klar, wie groß die Änderungen am Client-Programm wären, bzw. wie weit das überhaupt geht.
Eine andere Möglichkeit, welche ich mir überlegt habe, ist dass die Übertragung nicht verschlüsselt wird, sondern die Daten selber.
Ich habe an eine asymmetrische Verschlüsselung, mit Public/Private-Key, gedacht. Der Server und das Client-Programm haben einen Public-Key, welcher dem jeweils anderen bekannt ist. Damit werden die Daten verschlüsselt bevor sie gesendet/ausgegeben werden.
Vorteil wäre, dass man kein Zertifikat brächte und hier Kosten sparen könnte.
Nachteil wäre, dass auf jeden auch am Webserver geändert werden müsste, wenn die openssl-Funktionen überhaupt auf dem Webserver vorhanden sind.
Und jetzt eure Meinung, habe ich irgendetwas grob falsch verstanden und das was ich mir oben gedachte habe ist Blödsinn/nicht machbar? Gibt es vll. noch eine viel bessere Möglichkeit oder "Fallen" auf die man achten muss?
Wenn beide Verschlüsselungen möglich wären, welche sollte man wählen?
Währen beide Möglichkeiten "gleich sicher"? (Bei https wäre doch z.B. MITM möglich, beim Public/Private-Key-Verfahren nicht, oder!?)
Es gibt noch ein Zusatzproblem:
Es müssen zum Teil auch Dateien (Bilder, Ton, etc.) übertragen werden - per POST. Wenn man die Verbindung per https geschützt, werden dann auch diese Dateien verschlüsselt? Und, es sollte doch Möglich sein, mit den PHP-openSSL-Funktionen auch Dateien verschlüsseln!?
mfg
d0ne
Kommentar