Projekt Ägypten: Technologie

Startseite | Technologie | Beteiligte | Zeitplan | Entwicklung | In der Öffentlichkeit | Glossar

Diese Seite vermittelt einen Überblick. Im CVS befinden sich technische Details (englisch).

Starke Bindung: bidirektionale Kommunikation. Realisiert über direkte Verlinkung oder KDE Plug-In
Client/Server Kommunikation: Client (A) fordert einen Dienst von Server (B) an. Realisiert über Unix Domain Sockets, Shared Memory oder eine Hardware-Verbindung.
KDE-abhängiges Modul

Plug-In Container/Plug-Ins * GpgSM * GpgAgent * DirMngr * PinEntry

Schlüsselerzeugung * Signieren * Signaturprüfung * Verschlüsselung * Entschlüsselung

Plug-In Container/Plug-Ins

Die Plug-Ins für S/MIME und OpenPGP umfassen jeweils eine vereinfachte API zur Durchführung der gewünschten Krypto-Funktionen. Für die Aufrufe der Basis-API (mit GpgME bereitgestellt) werden die in den Plug-Ins gehaltenen Konfigurationseinstellungen berücksichtigt (z.B. sende komplette Zertifikatskette: ja/nein). Das jeweilige Mail-Programm stellt alle Benutzerdialoge für diese Einstellungen zur Verfügung und läd/speichert sie aus den für das jeweilige Mail-Programm spezifischen Konfigurationsdateien.

Der Plug-In Container stellt die API der Plug-Ins innerhalb des Mail-Programms zur Verfügung. Er ist spezifische für jedes Programm und umfasst die Benutzerdialoge für Konfiguration.

GpgSM

Dieses Modul übernimmt die Kodierung sowie die Schlüsselverwaltung. Es ist entsprechend GnuPG aufgebaut und implementiert und bietet unter anderem eine Datenbank für Zertifikate. Diese Datenbank benutzt ein Format, welches auch von GnuPG benutzt werden kann, so dass alle öffentlichen Schlüssel in lediglich einer Datei gespeichert werden können.

Private Schlüssel werden durch GpgSM nicht benutzt; es delegiert vielmehr die Signier- und Entschlüsselungsoperation an den GpgAgent. Diese Delegation bezieht sich bei Entschlüsselung lediglich auf den Session-Key, die symmetrische Entschlüsselung wird hier durchgeführt. Das Modul ist in der Lage Datenströme beliebiger Länge zu verschlüsseln und bietet ein Kommandozeilenschnittstelle, die der von GnuPG weitgehend entspricht.

GpgSM ist auch zur Generierung von Schlüsseln und verwandter Nachrichten zuständig. Die Schlüsselgenerierung selbst wird wie üblich an GpgAgent delegiert, so daß dieser den privaten Schlüssel direkt in seiner PSE speichern kann.

Neben den geforderten Algorithmen wird auch AES implementiert werden. Da er in der Spezifikation noch nicht aufgeführt ist, wird seine Verwendung allerdings erst durch eine besondere Konfigurationsoption freigeschaltet.

GpgAgent

Dieses Modul übernimmt mehrere Aufgaben:
  • Es führt alle kryptographischen Operationen die eines privaten Schlüssels bedürfen durch.
  • Es verwaltet sowohl die Soft-PSE als auch die Token-PSE.
  • Es speichert den Fingerprint der Wurzelzertifikate.
  • Es delegiert Operationen an ein Krypto Token, hierzu werden die Standards PKCS11, PKCS12 und PKCS15 verwendet.
  • Es ist optional in der Lage die Integrität des Systems (d.h. aller Module und bestimmeter Dateien) zu sichern. Es benuzt hierzu einen MAC dessen Schlüssel aus einer PIN abgeleitet wird.
  • Es bietet Import und Export Funktionen für die privaten Schlüssel.
  • Es erstellt neue Schlüsselpaare.
Zur Abfrage der PIN bedient sich GpgAgent des PIN Entry-Moduls. Besondere Vorkehrung zum Schutz der sensitiven Informationen werde hier implementiert (z.B. Schutz vor Auslagerung der Informationen in den Swap Bereich der Festplatte).

Die Schnittstelle dieses Moduls ist so ausgelegt, dass dieses Modul vollständig in ein Hardware Modul ausgegliedert werden kann.

DirMngr

Dieses Modul kontrolliert alle Directory-Zugriffe und führt die Suchoperationen aus. Es bedient sich hierzu direkt OpenLDAP. Sperrlisten werden durch dieses Modul lokal gecached und deren Gültigkeit wird hier direkt überprüft. Es ist gegen die dafür notwendigen Bibliotheken gelinkt.

PIN Entry

Dieses ist ein sehr einfaches Modul, welches lediglich ein modales Fenster öffnet und nach der PIN fragt. Es arbeitet über ein spezielles Protokoll direkt mit GpgAgent zusammen. Diese Funktionalität ist nicht in GpgAgent direkt eingebaut um nicht gegen den komplexen GUI Code linken zu müssen. Auch kann dieses Modul leicht an das vorhanden grafische Fenster-System angepasst werden.

Im Rahmen des Projektes wird PIN Entry als qt-, gtk- und Text-Variante implementiert. Eventuell wird es in Zukunft duch eine einfachere Version, die direkt auf dem benutzten grafischen Fenster-System (X11) aufsetzt, ergänzt. Dies würde eine Code-überprüfung vereinfachen.

Funktionsweise und Datenfluß

Schlüsselerzeugung

Neue Schlüssel werden über das Konfigurationsmodul von KMail erzeugt, welches hierzu GpgSM mit der Schlüsselerzeugung beauftragt. GpgSM gibt dies an GpgAgent weiter, der die sicherheitskritischen Operationen durchführt und den privaten Schlüssel in der PSE abstellt. Über einen weiteren Dialog kann eine Zertifizierungsanfrage erstellt sowie weitere Schlüsselverwaltungsfunktionen durchgeführt werden.

Signieren

Die zu signierende Nachricht (bzw. das MIME-Objekt) wird zusammen mit der Identifikation des zur aktuellen Rolle gehörenden Zertifikats an GpgSM gegeben, welches die Signatur berechnet. Da zur Erzeugung der Signatur der private Schlüssel notwendig ist, wird die grundlegende Signaturoperation nicht direkt von GpgSM durchgeführt sondern an GpgAgent delegiert. Hierbei werden allerdings lediglich die absolut notwendigen Parameter sowie der Hash der Nachricht weitergegeben (optional kann auch der Hash von GpgAgent berechnet werden und die Nachricht durch einen speziellen Viewer angezeigt werden; dies ist aber nicht sinnvoll, solange GpgAgent nicht auf externer Hardware ausgeführt wird).

GpgAgent wird in seiner PSE nach dem privaten Key suchen, eine PIN von dem PIN-Entry Modul erfragen und dann die Signatur erzeugen. Der PKCS-1 Wert wird dann an GpgSM weitergegeben der dann die signierte Nachricht aufbaut.

Nach Rückgabe an das MUA-Plug-in wird dieses entscheiden, ob die Nachricht verschlüsselt werde soll und dies entsprechend dem oben geschilderten Verfahren durchführen. Soll es nicht verschlüsselt werden, so wird die signierte Nachricht direkt versendet, wobei je nach Konfiguration Zertifikate mitgesendet werden.

Signaturprüfung

Der MUA-Plug-in zerteilt die Nachricht in ihre Bestandteile und gibt den Plaintext sowie die Signatur zur Überprüfung an GpgSM weiter. Enthält die Nachricht auch ein Zertifikat, so wird dieses vorher an GpgSM gegeben, so daß es über das Zertifikat verfügen kann; ist kein Zertifikat vorhanden, so wird GpgSM den DirMngr beauftragen die entsprechenden Zertifikate zu besorgen. Hierzu wird der DirMngr auf das LDAP-Service-Modul zurückgreifen. Nach erfolgreicher Signaturprüfung wird GpgSM sich wiederum an den DirMngr wenden, um festzustellen, ob eines der verwendeten Zertifikate in einer CRL vorkommt; sollte dies der Fall sein, so wird dieser Status direkt im zu GpgSM gehörenden Zertifikatspeicher vermerkt, um so weitere Signatur-Verifikationen direkt scheitern zu lassen.

Der Signatur-Status sowie alle verfügbaren Metainformationen werden an das MUA-Plug-in zurückgegeben, welches den Status der Signatur entsprechend anzeigt.

Verschlüsselung

Das MUA Plug-in stellt anhand der Adressaten eine Liste von Zertifikaten zusammen. Hierbei bedient es sich sowohl der internen Datenbank von GpgSM als auch des DirMngr. Jedes ermittelte Zertifikat wird durch das PKI Modul gegen die CRLs getestet und nur die gültigen Zertifikate werden angezeigt. Dies erspart eine spätere Prüfung in GpgSM und eine damit verbundene Rückweisung.

Es wird dafür gesorgt, dass alle notwendigen Zertifikate in der durch GpgSM gepflegten Datenbank vorhanden sind. Die zu verschlüsselnde Nachricht (bzw. das Attachment) wird zusammen mit den internen Identifikationsnummern (fingerprints) der Zertifikate an GpgSM weitergegeben, welches dann die Verschlüsselung vornimmt und das verschlüsselte Objekt zurückgibt. Das neue Objekt wird nun wieder in einen MIME Kontext eingebunden und versendet.

Entschlüsselung

Ist eine empfangene Nachricht verschlüsselt, so wird diese an GpgSM weitergeleitet, die dann GpgAgent beauftragt den Session-Key zu entschlüsseln. GpgAgent bedient sich hierzu entweder den eigenen Funktionen und der Soft-PSE oder delegiert die Aufgabe an eine Smartcard.

->Français ->English

Verweise

Ägypten2 Projekt
KMail
Mutt
GnuPG
Sphinx

Intevation
g10 Code
Klarälvdalens Datakonsult
Bundesamt für Sicherheit in der Informationstechnik

Kontakt

Das Projekt-Team kann über diverse Mailing-Listen erreicht werden:
gpa-dev (technische Koordination)
 
kmail (KMail)
gnupg-devel (GnuPG Entwicklung)
 
Projekt-Koordination:
<bernhard@intevation.de>
<jan@intevation.de>

Seite zuletzt geändert: $Date: 2004-04-06 18:26:43 $
(C) Intevation, Zitat und Verteilung des vollständigen Seiteninhaltes ist über jedes Medium gestattet, solange dieser Hinweis erhalten bleibt.