Ziemlich gute Privatsphäre
Kommentare

Nächster Versuch der Verschlüsselung
Wenn man nun, nachdem der öffentliche Schlüssel des Empfängers hoffentlich im Schlüsselbund liegt, das obige PHP-Skript nochmals ausführt, wird die E-Mail versandt,

Nächster Versuch der Verschlüsselung

Wenn man nun, nachdem der öffentliche Schlüssel des Empfängers hoffentlich im Schlüsselbund liegt, das obige PHP-Skript nochmals ausführt, wird die E-Mail versandt, und der Empfänger erhält eine E-Mail wie in Listing 5.

Listing 5
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.9 (Darwin)

hQQOA6lMHD9rDztCEBAAhAJkCrq6w362xKSvp2lvZWJrnUGyD82oaK2pxIn6Y5Mp
qfSJaytodD/8nhvZ8wA8UYLcc5P3oQ8QdXQ5+Abdio61eKtkGU0ZA8CLU18uqJWH
rrKiTMC82fuzUoaPtxHHNgpNqayJnTWvU8WUR4PsyA+2Au2tS5sDR7wG5RF5cXWn
yMXJctfTk+IlxBch/NHAgmcI7g2FTehj5/HgCbP7KinQ5F/PYBVwCEgFqoZsNA/V
rQ8Pc9Ie1+BKeZ5h1PJYlQfRuwdcVnzjkYrMv97XdB8ujD0aXV+4YwOrNuUKaTbU
FVH/+6cFNhr82QLO5ifjWmmaNwqscEmjdy43PDtK4LE1LsUBX0j2sBdSj/yobNRj
vf2YB16Uvcknmiiqbqx++zrElcaKG0vLIDCmCWy9kdB08GKWcU9QX/amgViS+24k
6ykNFsDBwu1/3hct7f2tbfFAdBdysqA6aq93aBkdg6SI0l8B55qh6Qwycd0UGCPO
m8Fu2hoIJqITKcGZBtwzB7IbsVJ8jVDP2eafK4WS7P1GAeYLhvK3Uc3eYcxHs/t5
hHkMBurMuxth7xknfGRxqIHETxMY561V6cF+AViD2MNSCw==
=m6I+
-----END PGP MESSAGE-----

Diese kann der Empfänger nun mit PGP und seinem privaten Schlüssel entschlüsseln. Idealerweise ist im E-Mail-Programm eine entsprechende Software eingebaut die das erledigen kann. Möchte man selbst eine E-Mail, die man verschickt hat, später noch lesen können oder sie an mehrere Empfänger schicken, übergibt man dem gpg-Aufruf einfach mehrere —recipient-Parameter.

Entschlüsseln

Hat man eine Datei erhalten, die mit einem öffentlichen Schlüssel verschlüsselt wurden (zum Beispiel der oben stehende E-Mail-Inhalt), kann man sie wie folgt entschlüsseln, vorausgesetzt man besitzt den passenden privaten Schlüssel in seinem Schlüsselbund:

gpg --homedir /var/www/project/.gnupg --decrypt --output entschluesselt.txt verschluesselte_email.asc 

Nach der Eingabe der Passphrase enthält die Datei entschluesselt.txt den Originaltext. Möchte man diesen Befehl aus PHP heraus auf einem Webserver ausführen, muss man die Passphrase übergeben. Das geht sowohl direkt als Parameter oder auch aus einer Datei. Ersteres sollte vermieden werden, denn dann steht die Passphrase in der Prozessliste des Betriebssystems. Zu bevorzugen ist da der Parameter –passphrase-file, dem man einen Dateipfad übergibt, der die erste Zeile der Passphrase enthält. Diese Datei gilt es natürlich vor neugierigen Augen zu schützen.

Signieren

Zu einer Datei kann eine Signatur erstellt werden, mit der nachher geprüft werden kann ob die Datei verändert wurde. Außerdem ist es möglich zu überprüfen von wem die Signatur kommt. Eine Signatur kann man entweder als einzelne Datei erstellen lassen oder direkt zusammen mit dem Original in einer Datei:

gpg --homedir /var/www/project/.gnupg --detach-sign -a entschluesselt.txt
gpg --homedir /var/www/project/.gnupg --sign -a entschluesselt.txt

Der erste Befehl generiert die folgende Datei mit einer Signatur:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Darwin)

iEYEABECAAYFAk558LMACgkQMZu21oMVMYvajwCbBCiFWQ1/XTGZ1joUn7rV1puz
Mw0AoIowmYFYGWDHxnpl3qD7rKmSBpNv
=JD7r
-----END PGP SIGNATURE-----

Dabei wird der Standardschlüssel verwendet. Hat man mehrere private Schlüssel, kann mit dem Parameter –local-user der richtige Schlüssel ausgewählt werden. Übrigens ist es auch möglich eine Datei gleichzeitig zu verschlüsseln und zu signieren.

Signatur verifizieren

Hat man eine Signatur erhalten und möchte sie verifizieren, wird der öffentliche Schlüssel des Absenders benötigt gegen den geprüft werden soll. Die Verifizierung geht dann wie folgt:

$ gpg --homedir /var/www/project/.gnupg --verify verschl.asc.asc 
gpg: Signature made Wed Sep 21 16:13:30 2011 CEST using DSA key ID 8315318B
gpg: Good signature from "Michael Kliewe (PHPGangsta) "

Alle diese gpg-Befehle kann man natürlich auch aus PHP heraus ausführen.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -