Replaced remaining references to http:///www.gnupg.org by https:
[gnupg-doc.git] / web / aegypten / tech.org
1 #+TITLE: GnuPG - Project Ägypten - Technology
2 #+STARTUP: showall
3 #+SETUPFILE: "../share/setup.inc"
4
5 * Project Ägypten: Technology
6
7 [[file:index.org][Home]] | Technology | [[file:who.org][Who]] | [[file:time.org][Schedule]] | [[file:development.org][Development]] |
8 [[file:pr.org][Public Relations]] | [[file:glossary.org][Glossary]]
9
10
11 This page provides an overview. The CVS repository contains [[http://cvs.gnupg.org/cgi-bin/viewcvs.cgi/aegypten-specs/?cvsroot=Project+Aegypten][technical
12 details]].  Note that some of parts of this page have not been
13 translated from German.
14
15  [[file:images/module-overview.png]]
16
17  [[file:images/module-legend-1.png]] Strong connection: with two-way
18  communication accomplished by direct linking or KDE plug-in methods
19
20  [[file:images/module-legend-2.png]] Client/Server communication: Client (A)
21  requests a service from Service provider (B). This is either
22  accomplished by using Unix Domain sockets, shared memory or hardware
23  connection.
24
25  [[file:images/module-legend-kde.png]] KDE-dependent module
26                                                                                                                                                                                                                      |
27
28 ** Plug-In Container/Plug-Ins                                            :de:
29
30 Die Plug-Ins für S/MIME und OpenPGP umfassen jeweils eine vereinfachte
31 API zur Durchführung der gewünschten Krypto-Funktionen. Für die Aufrufe
32 der Basis-API (mit GpgME bereitgestellt) werden die in den Plug-Ins
33 gehaltenen Konfigurationseinstellungen berücksichtigt (z.B. sende
34 komplette Zertifikatskette: ja/nein). Das jeweilige Mail-Programm stellt
35 alle Benutzerdialoge für diese Einstellungen zur Verfügung und
36 läd/speichert sie aus den für das jeweilige Mail-Programm spezifischen
37 Konfigurationsdateien.
38
39 Der Plug-In Container stellt die API der Plug-Ins innerhalb des
40 Mail-Programms zur Verfügung. Er ist spezifische für jedes Programm und
41 umfasst die Benutzerdialoge für Konfiguration.
42
43 ** GpgSM
44
45 This module is responsible for encryption and key-management. It has
46 been designed and implemented according to GnuPG and offers among other
47 features a database for certificates. The format of this database can
48 also be used by GnuPG, so all public keys can be saved in a single file.
49
50 Private keys are not handled by GpgSM; it delegates the operations of
51 signing and decryption to the GpgAgent. When decrypting, this delegation
52 only concerns the decryption of the Session-Key; the symmetric
53 decryption however is done here. The module is capable of encrypting
54 data streams of arbitrary length. It offers a command line interface
55 widely corresponding to the interface of GnuPG.
56
57 GpgSM is also responsible for the generation of keys and related
58 messages. The key generation itself will be delegated as usual to the
59 GpgAgent, enabling it to save the private key directly in it's PSE.
60
61 Apart from the mandatory algorithms, AES will be also implemented.
62 Because it is not yet mentioned in the specification, it's use will be
63 made available by a certain option in the configuration.
64
65 ** GpgAgent
66
67 This module takes over multiple tasks:
68
69 -  It takes over all cryptographic operations requiering a private key.
70 -  It manages both the Soft-PSEs and the Token PSE.
71 -  It saves the fingerprint of the root certificate.
72 -  It delegates operations to a krypto token, using the standards
73    PKCS11, PKCS12 and PKCS15.
74 -  Optionally, it is capable of assuring the integrity of the system
75    (i.e. it's modules and certain keys). To assure this, it uses a MAC,
76    whose key is derived from a PIN.
77 -  It offers functionality for both import and export of the private
78    keys.
79 -  It generates new key-pairs.
80
81 For querying the PIN, the GpgAgent uses the PIN Entry-module. Special
82 measures to protect the sensitive information are implemented here (e.g.
83 to protect information from being swapped to the harddrive).
84
85 The design of this modules interface enables the module to be completely
86 implemented on a seperate hardware module.
87
88 ** DirMngr
89
90 This module controls all directory accesses and performs search
91 operations. To accomplish this, it also uses OpenLDAP directly.
92 Certificate Revocation Lists (CRLs) are kept in a local cache by this
93 module and their validity is directly checked here. It is linked against
94 the hereby required libraries.
95
96 ** PIN Entry
97
98 This is a very simple module, it only opens a modal dialog and asks for
99 the PIN. Using a special protocol, it cooperates directly with the
100 GpgAgent. This functionality is not built into the GpgAgent directly to
101 avoid linking against the complex GUI code. Furthermore, the module can
102 be adopted to existing graphical user interfaces easily.
103
104 Within the project the PIN Entry will be implemented as a qt-, gtk- and
105 text-version. Possibly an even simpler version using the basic grapical
106 user interface (X11) will be added in the future This would simplify
107 code-validation.
108
109 ** Funktionsweise und Datenfluß                                          :de:
110
111 *** Schlüsselerzeugung
112
113 Neue Schlüssel werden über das Konfigurationsmodul von KMail erzeugt,
114 welches hierzu GpgSM mit der Schlüsselerzeugung beauftragt. GpgSM gibt
115 dies an GpgAgent weiter, der die sicherheitskritischen Operationen
116 durchführt und den privaten Schlüssel in der PSE abstellt. Über einen
117 weiteren Dialog kann eine Zertifizierungsanfrage erstellt sowie weitere
118 Schlüsselverwaltungsfunktionen durchgeführt werden.
119
120 *** Signieren
121
122 Die zu signierende Nachricht (bzw. das MIME-Objekt) wird zusammen mit
123 der Identifikation des zur aktuellen Rolle gehörenden Zertifikats an
124 GpgSM gegeben, welches die Signatur berechnet. Da zur Erzeugung der
125 Signatur der private Schlüssel notwendig ist, wird die grundlegende
126 Signaturoperation nicht direkt von GpgSM durchgeführt sondern an
127 GpgAgent delegiert. Hierbei werden allerdings lediglich die absolut
128 notwendigen Parameter sowie der Hash der Nachricht weitergegeben
129 (optional kann auch der Hash von GpgAgent berechnet werden und die
130 Nachricht durch einen speziellen Viewer angezeigt werden; dies ist aber
131 nicht sinnvoll, solange GpgAgent nicht auf externer Hardware ausgeführt
132 wird).
133
134 GpgAgent wird in seiner PSE nach dem privaten Key suchen, eine PIN von
135 dem PIN-Entry Modul erfragen und dann die Signatur erzeugen. Der PKCS-1
136 Wert wird dann an GpgSM weitergegeben der dann die signierte Nachricht
137 aufbaut.
138
139 Nach Rückgabe an das MUA-Plug-in wird dieses entscheiden, ob die
140 Nachricht verschlüsselt werde soll und dies entsprechend dem oben
141 geschilderten Verfahren durchführen. Soll es nicht verschlüsselt werden,
142 so wird die signierte Nachricht direkt versendet, wobei je nach
143 Konfiguration Zertifikate mitgesendet werden.
144
145 *** Signaturprüfung
146
147 Der MUA-Plug-in zerteilt die Nachricht in ihre Bestandteile und gibt den
148 Plaintext sowie die Signatur zur Überprüfung an GpgSM weiter. Enthält
149 die Nachricht auch ein Zertifikat, so wird dieses vorher an GpgSM
150 gegeben, so daß es über das Zertifikat verfügen kann; ist kein
151 Zertifikat vorhanden, so wird GpgSM den DirMngr beauftragen die
152 entsprechenden Zertifikate zu besorgen. Hierzu wird der DirMngr auf das
153 LDAP-Service-Modul zurückgreifen. Nach erfolgreicher Signaturprüfung
154 wird GpgSM sich wiederum an den DirMngr wenden, um festzustellen, ob
155 eines der verwendeten Zertifikate in einer CRL vorkommt; sollte dies der
156 Fall sein, so wird dieser Status direkt im zu GpgSM gehörenden
157 Zertifikatspeicher vermerkt, um so weitere Signatur-Verifikationen
158 direkt scheitern zu lassen.
159
160 Der Signatur-Status sowie alle verfügbaren Metainformationen werden an
161 das MUA-Plug-in zurückgegeben, welches den Status der Signatur
162 entsprechend anzeigt.
163
164 *** Verschlüsselung
165
166 Das MUA Plug-in stellt anhand der Adressaten eine Liste von Zertifikaten
167 zusammen. Hierbei bedient es sich sowohl der internen Datenbank von
168 GpgSM als auch des DirMngr. Jedes ermittelte Zertifikat wird durch das
169 PKI Modul gegen die CRLs getestet und nur die gültigen Zertifikate
170 werden angezeigt. Dies erspart eine spätere Prüfung in GpgSM und eine
171 damit verbundene Rückweisung.
172
173 Es wird dafür gesorgt, dass alle notwendigen Zertifikate in der durch
174 GpgSM gepflegten Datenbank vorhanden sind. Die zu verschlüsselnde
175 Nachricht (bzw. das Attachment) wird zusammen mit den internen
176 Identifikationsnummern (fingerprints) der Zertifikate an GpgSM
177 weitergegeben, welches dann die Verschlüsselung vornimmt und das
178 verschlüsselte Objekt zurückgibt. Das neue Objekt wird nun wieder in
179 einen MIME Kontext eingebunden und versendet.
180
181 *** Entschlüsselung
182
183 Ist eine empfangene Nachricht verschlüsselt, so wird diese an GpgSM
184 weitergeleitet, die dann GpgAgent beauftragt den Session-Key zu
185 entschlüsseln. GpgAgent bedient sich hierzu entweder den eigenen
186 Funktionen und der Soft-PSE oder delegiert die Aufgabe an eine
187 Smartcard.
188
189  (C) Intevation, Verbatim copying and distribution of this entire page
190 is permitted in any medium, provided this notice is preserved.
191 #+HTML:<!--disable-copyright-footer-->