Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Mit PGP verschlüsselte e-Mails senden

Geschrieben von: Christian Koller
Kategorie: ASP Tricks

This printed page brought to you by AlphaSierraPapa

Um von ASP aus eine PGP (Pretty Good Privacy) verschlüsselte e-Mail versenden zu können, benötigen Sie auf Ihrem Webserver 2 Dinge:

Kenner der computergestützten Kryptographie wissen, was PGP ist und wie man damit arbeitet. Nichtsdestotrotz gebe ich hier einen kleinen Einführungskurs:

PGP steht für Pretty Good Privacy, was auf Deutsch soviel wie "ziemlich gute Geheimhaltung" heißt. Worauf baut nun PGP auf, und wie benutzt man es?

PGP ist primär eine Software, die Verschlüsselung auf Basis des "public Key" Prinzips erlaubt. Ohne auf den dahinterstehenden Algorithmus, der auf der Multiplikation sehr großer Primzahlen basiert eingehen zu wollen, gibt es für eine Verschlüsselung mittels PGP immer 2 "Keys" oder Schlüssel.

Sie generieren mit der PGP Software ein Schlüsselpaar, wobei sie den "öffentlichen Schlüssel" über allgemein zugängliche PGP Server jedermann zur Verfügung stellen können. Den "privaten Schlüssel" halten Sie geheim.

Jeder der Ihnen verschlüsselte Daten (oder e-Mails) senden will, benutzt nun Ihren "öffentlichen Schlüssel" um die Daten zu verschlüsseln. Diese verschlüsselten Daten lassen sich nun nur mehr mit Hilfe der PGP Software und dem "privaten Schlüssel" (oder der Rechenleisung vom Pentagon oder der NSA) wieder entschlüsseln.

Eine gute FAQ (Frequently Asked Questions) in deutscher Sprache zum Thema PGP gibt es auf der Website von PGPi.com unter der Adresse http://www.pgpi.org/doc/faq/pgpi/de/.

Noch ein rechtlicher Hinweis (muß leider sein): Wenn Sie PGP oder die internationale Version PGPi für gewerbliche Zwecke nutzen wollen, so müssen Sie eine kommerzielle Userlizenz von Network Associates Inc. oder seinen bevollmächtigten Vertretern erwerben. Wenn Sie in den den USA oder Kanada leben so gehen Sie zu http://www.nai.com/. Leben Sie außerhalb der USA oder Kanada, so gehen Sie zu http://www.pgpinternational.com/ um sich zu informieren.

Genug der Theorie, nun zur Verwendung von PGP auf einem Webserver.

Installation von PGP auf einem Webserver

Zu Testzwecken können Sie die Freeware PGPi Version für Windows NT/2000 unter der Adresse http://www.pgpi.org/products/pgp/versions/freeware/ downloaden.

Installieren Sie die Software auf dem Webserver (auf eigene Gefahr, nur daß nachher niemand sagt, ich bin verantwortlich wenn wieder etwas nicht funktioniert). Schließen Sie dazu alle Anwendungen auf dem Webserver (vor allem Mailprogramme) und führen Sie die Setup.exe Datei aus. Vorher sollten Sie das downgeloadete ZIP File aber noch entzippen, mit WinZip zum Beispiel. Sie müssen nur das PGP Key Management installieren.

Nachdem das PGPi Setup erfolgreich ausgeführt wurde, finden Sie die neue Programm Gruppe PGP im Start Menü vor.


Bild 1: PGP Programm Gruppe

Um ein neues Schlüsselpaar zu generieren, starten Sie das Programm PGPkeys aus der PGP Programm Gruppe. Geben Sie im Key Generation Wizard Ihren Namen und Ihre e-Mail Adresse ein. Wählen Sie im nächsten Fenster "Diffie-Hellman/DSS", benutzen Sie eine Schlüssellänge von 2048 bits, wählen Sie "Key pair never expires" (Schlüsselpaar wird niemals ungültig). Im nachfolgenden Fenster müssen Sie nun die "Verschlüsselungsphrase" (Passphrase) eingeben, mit der Sie Zugang zu Ihrem privaten Schlüssel erlangen.


Bild 2: Fenster der Key Generation Wizard

Benutzen Sie zur Demonstration die Passphrase "Dies ist nur ein Test!" (ohne Anführungszeichen). Danach generiert Ihnen der Key Generation Wizard Ihr PGP Schlüsselpaar. Da dies nur eine Demo ist, müssen Sie den Schlüssel nicht zum "Rootserver" schicken. Der Rootserver dient zur Verwaltung aller öffentlichen PGP Schlüssel, die man allgemein zugänglich gemacht hat.

Nachdem der Wizard beendet ist öffnet sich das PGP Keys Fenster (siehe Bild 3).


Bild 3: PGPKeys

Sie können das PGP Keys Fenster jederzeit wieder über das Programm PGPKeys in der Programmgruppe PGP öffnen.

Nachdem Sie nun Ihr ganz persönliches Schlüsselpaar generiert (und sich die Verschlüsselungsphrase gut gemerkt, aber nicht mittels Zettel zum Bildschirm gehängt haben), können wir nun daran gehen, die Schlüssel zum Verschlüsseln unserer Mails zu benutzen.

PGP-Verschlüsselung mittels e-Mail Komponente unter ASP

Ich habe hier als e-Mail Komponente zur Benutzung unter ASP die w3 JMail Komponente der Firma Dimac nicht ohne Grund gewählt. Sie bietet nicht nur die Funktionalität um e-Mails sowohl zu senden als auch von jedem beliebigen POP3 Account auszulesen, sie unterstützt auch PGP!

Die w3 JMail Komponente ist in der Personal Version gratis als Download verfügbar. Die hier vorgestellte Verschlüsselungsfunktionalität ist aber nur in der Professional Version enthalten, die mit USD 49,- aber auch für jede Firma leistbar ist.

Installation der JMail Professional 4.0 Mail Komponente

Für die Installation der JMail Komponente auf dem Webserver müssen Sie nur das Setup Programm ausführen. Während des Setups sollten Sie sich für die "Custom Installation" entscheiden, denn nur so können Sie auch die JMail Dokumentation als PDF Dokument installieren (siehe Bild 4).


Bild 4: Installation von JMail

Nachdem die Komponente auf dem Server installiert ist, müßen Sie noch für den IUSR_ComputerName Account (unter dem ASP Dateien ausgeführt werden) des Webservers die Lese- und Schreibrechte für die PGP-relevanten Verzeichnisse und Dateien setzen. Ausserdem müßen Sie noch Installationsdateien, die auf die Verzeichnisse der PGP-Schlüssel verweisen, für den IUSR_ComputerName Account zugänglich machen (Diese Prozeduren sind auch in der JMail Dokumentation w3jmail4.pdf nachzulesen, die standardmäßig im Verzeichnis C:\Program Files\Dimac\w3JMail4 installiert ist).

Setzen der Schreib-/Leserechte für den IUSR_Machine Account

Kopieren Sie zuerst auf einem Windows 2000 Server die Dateien aus dem Verzeichnis C:\Documents and Settings\Administrator\Application Data\PGP\ ins Verzeichnis C:\Documents and Settings\Default User\Application Data\PGP. Wenn Sie unter Windows NT 4.0 arbeiten, so kopieren Sie die Dateien aus dem Verzeichnis C:\Winnt\Profiles\Administrator\Application Data\PGP\ ins Verzeichnis C:\Winnt\Profiles\Administrator\Default User\Application Data\PGP\.

Danach sollten Sie für folgende Verzeichnisse und alle darin liegenden Dateien und Verzeichnisse Schreib- und Leserechte (Read-, Write-Permission) für alle Benutzer (Everyone) und den IUSR_MachineName Account einrichten:

Einsatz von JMail mit PGP unter ASP

Um also ins kalte Wasser zu tauchen, hier gleich ein ASP Beispiel, wie man von einer ASP Seite aus eine PGP verschlüsselte e-Mail generiert und verschickt. Die Erklärung des Skripts finden Sie im Anschluß an den Sourcecode.

<% @LANGUAGE="VBScript" %>
<HTML>
<BODY>
<%
' Message Objekt generieren
Set msg = Server.CreateObject( "JMail.Message" )

' Nachrichten Eigenschaften festlegen
msg.From = "redaktion@aspheute.com"     ' Absender
msg.Subject = "Nur fuer Ihre Augen"     ' Betreff
msg.Body = "Streng geheime Nachricht!"  ' Nachricht

' Weitere Parameter um die Fehlerbehandlung zu erleichtern
msg.Logging = True
' msg.Silent = True  ' Komponente faengt intern Fehler ab

' PGP Verschluesselung aktivieren fuer Nachricht
msg.PGPEncrypt = True

' Empfaenger fuer die Nachricht angeben,
' dritter Parameter enthaelt den die PGP-Key ID 
' oder die Email Adresse des PGP-Keys
msg.AddRecipient "redaktion@aspheute.com", "Redaktion", "redaktion@aspheute.com"

If Not msg.Send("mail.domain.com") Then
    Response.write "<pre>" & msg.log & "</pre>"
Else
    Response.write "Nachricht wurde erfolgreich verschluesselt und versendet!"
End if
%>
</BODY>
</HTML>

Das Message Objekt der w3 JMail Komponente wird mittles CreateObject erstellt. Das Message Objekt stellt eine e-Mail Nachricht dar, die an verschiedene Empfänger verschickt wird.

Set msg = Server.CreateObject("JMail.Message")

Ganz gewöhnliche e-Mail Daten, wie Absender, Betreff oder Nachricht werden mittels From, Subject und Body Eigenschaften gesetzt:

msg.From = "redaktion@aspheute.com"
msg.Subject = "Nur fuer Ihre Augen"
msg.Body = "Streng geheime Nachricht!"

Um anzugeben, daß die Nachricht mittels PGP verschlüsselt werden soll, muß man die PGPEncrypt Eigenschaft des Message Objektes auf True setzen:

msg.PGPEncrypt = true

Der oder die Empfänger werden dabei mittels AddRecipient Methode zur Nachricht (dem Message Objekt) hinzugefügt. Die AddRecipient Methode hat 3 Parameter:

msg.AddRecipient emailAdresse, Empfängername, PGPSchlüssel

Der PGPSchlüssel Parameter ist dabei eine Zeichenkette, die entweder die hexadezimale Schlüssel-ID des PGP-Schlüssels oder die zugeordnete Emailadresse des Schlüssels enthält. Der "öffentliche Schlüssel" wird dann verwendet um die Email zu verschlüsseln bevor sie an den Empfänger verschickt wird.

Um im PGP Keys Programm die Schlüssel ID (Key ID) für die Schlüssel anzeigen zu lassen, wählen Sie im Menü View, KeyID. Die Key ID für Christian Koller in meinem generierten Schlüssel ist zum Beispiel 0x90EB3CA5 (siehe Bild 5).


Bild 5: Schlüssel ID für Christian Koller (Redaktion@AspHeute.com).

Wenn Sie nun die Send Methode des Message Objektes ausführen, benutzt die w3 JMail Komponente die PGP-Keys, die am Webserver installiert sind, um die abgehenden Nachrichten zu verschlüsseln.

Die Send Methode hat als Eingangsparameter die Domain des Mailservers, über den die e-Mail geschickt werden soll.

Zur Erinnerung: Um abgehende Nachrichten zu verschlüsseln benötigen Sie nur den sogenannten "Public Key", also den öffentlichen Schlüssel des Empfängers. Dieser muß vom Empfänger erstellt und Ihnen übermittelt werden.

Schlußbemerkung

Um e-Mails verschlüsselt und damit halbwegs sicher zum Empfänger zu schicken, ist eine Verwendung von PGP zusammen mit einer PGP-fähigen e-Mail Komponente möglich. Die in diesem Artikel vorgestellte w3 JMail Komponente enthält bereits eine eingebaute PGP Funktionalität zu einem leistbaren Preis.

Um nun eine überschaubare Menge von e-Mails verschlüsselt zu versenden, so ist eine kombinierte ASP-PGP Lösung vor allem für kleine und mittlere Firmen interessant.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20000912.zip

Verwandte Artikel

ACT MetaMailer - Mails verschicken leicht gemacht
http:/www.aspheute.com/artikel/20021028.htm
Allgemeine MailParser-Klasse mit ASPMail
http:/www.aspheute.com/artikel/20000602.htm
Auslesen von Emails aus einem POP3 Account
http:/www.aspheute.com/artikel/20000810.htm
Downloads per Email verschicken
http:/www.aspheute.com/artikel/20000330.htm
Email versenden mit AspMail
http:/www.aspheute.com/artikel/19990809.htm
Emails senden mit CDONTS
http:/www.aspheute.com/artikel/20000515.htm
Html Emails mit Dundas Mailer verschicken
http:/www.aspheute.com/artikel/20010625.htm
PGP-Verschlüsselung bei Dateien
http:/www.aspheute.com/artikel/20000920.htm

Links zu anderen Sites

FAQ zu PGP
http://www.pgpi.org/doc/faq/pgpi/de/
PGP Security
http://www.pgpinternational.com
The International PGP Home Page
http://www.pgpi.org
US PGP Website
http://www.pgp.com
w3 JMail Komponente
http://tech.dimac.net

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.