Kategorien
PHP

GnuPG mit PHP

Also, ich mag RoundCube Webmail. Allerdings fehlt mir (wie eigentlich in jedem Webmailer) eine Moeglichkeit E-Mails zu verschluesseln. Kurz zur Erklaerung: GnuPG ist ein Programm zur Verschluesselung und/oder Signierung von Daten. Dies koennen prinzipiell E-Mails, Dateien oder sonst irgendwas sein, wir befassen uns aber mal nur mit den E-Mails. GnuPG nutzt ein sogenanntes ‚Asymmetrisches Kryptosystem‚, d.h. jeder Benutzer dieser Systeme hat eine privaten und einen oeffentlichen Schluessel. Asymmetrisch bedeutet hier also, das wir nicht denselben Schluessel verwenden um etwas zu verschluesseln und es danach wieder zu entschluesseln.

Der oeffentliche Schluessel ist, wie der Name schon sagt, oeffentlich, d.h. jeder hat Zugriff darauf. Nehmen wir die oft genannten Akteure Alice und Bob. Alice will Bob nun eine geheime Botschaft schicken. Dafuer nimmt Alice den oeffentlichen Schluessel von Bob und verschluesselt damit die Nachricht. Danach wird die an Bob geschickt, der diese dann mit seinem privaten Schluessel entschluesseln kann (und nur Bob kann das tun). Man sollte den privaten Schluessel also gut aufbewahren und nicht oeffentlich (AHA, deswegen also privat :)) liegenlassen.

Den Teil mit der digitalen Signatur lass ich hier mal aus, das kann man in der Wikipedia nachlesen. Gut, jetzt wissen wir also das Bob einen oeffentlichen Schluessel braucht, damit wir ihm verschluesselte Nachrichten schicken koennen. Diese werden dann auf sogenannten Keyservern abgelegt, d.h. eine Art Telefonbuch wird erzeugt. Dieses kann man dann nutzen um den oeffentlichen Schluessel von Bob nachzuschlagen und zu benutzen.

So, jetzt kommt PHP ins Spiel. Hier muss PHP also eine Schnittstelle zu GnuPG anbieten, damit man geschickt auf die Verschluesselungsroutinen zugreifen kann. Gluecklicherweise gibt es eine Erweiterung bei PECL names GnuPG. Auf zend.com ist ein exzellenter Artikel veroeffentlich worden, wie man eine Form schreibt, die verschluesselte und/oder signierte E-Mails versendet. Ich werde mir ernsthaft mal ueberlegen, eine Erweiterung fuer RoundCube zu schreiben, so dass man auch GnuPG nutzen kann. Allerdings muss ich mir noch genau ueberlegen wie ich das mit der Umgebungsvariable GNUPGHOME mache, muss ich mir noch ueberlegen.