summaryrefslogtreecommitdiff
path: root/content/vortraege/bis2018/gnupg.html
blob: e89dd35bfd2458c3ea46ea53d79a6549db9876fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>GNU Privacy Guard - Eine freie Alternative zu PGP</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
</head>
<body>
<!-- BEGIN Content //-->
<div id="content">
<h1 align="CENTER">GNU Privacy Guard
<br>- Eine freie Alternative zu PGP -
<br>
<br><table width="263" summary="">
<tr><td>
<br><i>Das Briefgeheimnis sowie das Post- und Fernmeldegeheimnis sind
unverletzlich.</i>
<br>
<div align="RIGHT"><font size="-1"><font size="-1">Grundgesetz, Artikel 10, Abs 1.
</font></font></div></td></tr>
</table></h1>
<p align="CENTER"><strong>Achim D. Brucker
<br><tt>brucker@freiburg.linux.de</tt></strong></p>
<p align="CENTER"><strong>19. November 1999</strong></p>
<h2><a name="SECTION00010000000000000000">
Inhalt</a>
</h2>
<!--Table of Contents-->
<ul>
<li><a name="tex2html30"
  href="gnupg.html#SECTION00020000000000000000">Einf&uuml;hrung</a>
<ul>
<li><a name="tex2html31"
  href="gnupg.html#SECTION00021000000000000000">Was ist der GNU Privacy Guard - <tt>gnupg</tt></a>
<li><a name="tex2html32"
  href="gnupg.html#SECTION00022000000000000000">Warum Verschl&uuml;sseln</a>
</ul>
<li><a name="tex2html33"
  href="gnupg.html#SECTION00030000000000000000">Private Key Verfahren - Symmetrische Verfahren</a>
<li><a name="tex2html34"
  href="gnupg.html#SECTION00040000000000000000">Verschl&uuml;sselungs- und Authentifizierungsverfahren</a>
<ul>
<li><a name="tex2html35"
  href="gnupg.html#SECTION00041000000000000000">Public Key Verfahren - Asymmetrische Verfahren</a>
<li><a name="tex2html36"
  href="gnupg.html#SECTION00042000000000000000">Hybride Verfahren</a>
<li><a name="tex2html37"
  href="gnupg.html#SECTION00043000000000000000">Hash Verfahren - Fingerprints und Signaturen</a>
</ul>
<li><a name="tex2html38"
  href="gnupg.html#SECTION00050000000000000000">Warum braucht die Welt GnuPG</a>
<ul>
<li><a name="tex2html39"
  href="gnupg.html#SECTION00051000000000000000">Warum eine <i>freie</i> OpenPGP notwendig ist</a>
<li><a name="tex2html40"
  href="gnupg.html#SECTION00052000000000000000">Ausflug: Softwarepatente</a>
<li><a name="tex2html41"
  href="gnupg.html#SECTION00053000000000000000">Aktuell: 1999-11-15</a>
</ul>
<li><a name="tex2html42"
  href="gnupg.html#SECTION00060000000000000000">GnuPG im Alltag</a>
<ul>
<li><a name="tex2html43"
  href="gnupg.html#SECTION00061000000000000000">Verf&uuml;gbarkeit und Anwendung</a>
<li><a name="tex2html44"
  href="gnupg.html#SECTION00062000000000000000">Die wichtigsten Merkmale</a>
<li><a name="tex2html45"
  href="gnupg.html#SECTION00063000000000000000">GnuPG f&uuml;r PGP 2.x Anwender</a>
</ul>
<li><a name="tex2html46"
  href="gnupg.html#SECTION00070000000000000000">Ausblick</a>
<li><a name="tex2html47"
  href="gnupg.html#SECTION00080000000000000000">Referenzen</a>
<li><a name="tex2html48"
  href="gnupg.html#SECTION00090000000000000000">&Uuml;ber dieses Dokument ...</a>
</ul>
<!--End of Table of Contents-->
<h1><a name="SECTION00020000000000000000">
Einf&uuml;hrung</a>
</h1>
<h2><a name="SECTION00021000000000000000">
Was ist der GNU Privacy Guard - <tt>gnupg</tt></a>
</h2>
<blockquote>
<div align="CENTER">
GnuPG ist ein Programm zur sicheren offline Kommunikation. Es kann als freier
Ersatz f&uuml;r das urspr&uuml;nglich von Phil Zimmermann entwickelte Pretty Good
Privacy (PGP) dienen.
</div>
</blockquote>
<h2><a name="SECTION00022000000000000000">
Warum Verschl&uuml;sseln</a>
</h2>
<blockquote>
<div align="CENTER">
Das Verschl&uuml;sseln von Nachrichten ist ein im Grundgesetz verb&uuml;rgtes
Recht.
</div>
</blockquote>
<ul>
<li>Emails sind wie Postkarten, jeder kann sie lesen. Trotzdem werden oft
private Daten unverschl&uuml;&szlig;elt als Email versendet.
</li>
<li>Signaturen und Verschl&uuml;sselung dienen der Authentifizierung der Absender
      und Empf&auml;nger. Sie ersetzen die Unterschrift.
</li>
<li>Nur die Datenverschl&uuml;sselung kann die Rechten und Pflichten, die sich
aus dem Datenschutz ergeben, umsetzen.
</li>
</ul>
<h1><a name="SECTION00030000000000000000">
Private Key Verfahren - Symmetrische Verfahren</a>
</h1>
<ul>
<li>Symmetrische Verfahren verwenden denselben Schl&uuml;ssel zum ver- und
entschl&uuml;sseln.
</li>
<li>Sender und Empf&auml;nger m&uuml;ssen den Schl&uuml;ssel kennen und ihn geheim halten.
</li>
<li>einfaches Beispiel, die XOR-Verschl&uuml;sselung:
<div align="CENTER">
<table cellpadding="3" border="1" summary="">
<tr><td align="LEFT">Daten:</td>
<td align="CENTER">10100111001</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
</tr>
<tr><td align="LEFT">Schl&uuml;ssel:</td>
<td align="CENTER">10101001010</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
</tr>
<tr><td align="LEFT">verschl&uuml;sselte Daten:</td>
<td align="CENTER">00001110011</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
<td align="CENTER">&nbsp;</td>
</tr>
</table>
</div>
</li>
</ul>
<ul>
<li>Der Suchraum w&auml;chst exponentiell mit der Schl&uuml;ssell&auml;nge. DES verwendet
z.B. 56 Bit Schl&uuml;ssel. Mit einer Brute Force Attacke m&uuml;ssten
<br><p></p>
<div align="CENTER">
<!-- MATH
 \begin{displaymath}
2^{56}=72.057.594.037.927.936\approx 72\cdot 10^{15}
\end{displaymath}
 -->
1#1
</div>
<br clear="ALL">
<p></p>
Schl&uuml;ssel ausprobiert werden.
</li>
<li>Schl&uuml;ssell&auml;ngen unter 64 Bit gelten heute nicht mehr als sicher,
empfohlen werden L&auml;ngen von 128 Bit:
<p></p>
<div align="CENTER">
<!-- MATH
 \begin{eqnarray*}
&&2^{128}\
&=&340.282.366.920.938.463.463.374.607.431.768.211.456\
&\approx& 34\cdot 10^{37}
\end{eqnarray*}
 -->
2#2
<br clear="ALL"></div><p></p>
<br clear="ALL"><p></p>
<br clear="ALL"><p></p>
</li>
</ul>
<ul>
<li>Verfahren: Enigma, DES, 3DES, Blowfish, Twofish, IDEA
</li>
<li>PGP verwendet IDEA f&uuml;r die Datenverschl&uuml;sselung.
</li>
<li>Nachteile symmetrischer Verfahren:
<ul>
<li>Der Schl&uuml;sselaustausch ist schwierig.
</li>
<li>Wenn 3#3 Personen privat untereinander kommunizieren wollen,
	sind <!-- MATH
 $\frac{n(n-1)}{2}$
 -->
4#4 Schl&uuml;sselpaare notwendig.
</li>
</ul>
</li>
</ul>
<h1><a name="SECTION00040000000000000000">
Verschl&uuml;sselungs- und Authentifizierungsverfahren</a>
</h1>
<h2><a name="SECTION00041000000000000000">
Public Key Verfahren - Asymmetrische Verfahren</a>
</h2>
<ul>
<li>Jeder Teilnehmer hat einen privaten und einen &ouml;ffentlichen Schl&uuml;ssel:
<ul>
<li>Mit dem &ouml;ffentliche Schl&uuml;ssel werden Nachrichten an den Besitzer
verschl&uuml;sselt.
</li>
<li>Mit dem privaten Schl&uuml;ssel kann der Besitzer an ihn gesendete
Nachrichten entschl&uuml;sseln.
</li>
<li>Verfahren: RSA, ElGamal, Rabin
</li>
<li>PGP verwendet RSA, GnuPGP ElGamal
</li>
<li>Die Verschl&uuml;sselung basiert auf ,,trapdoor``-Funktionen.
</li>
</ul>
</li>
</ul>
<ul>
<li>Eine ,,trapdoor``-Funktion ist eine one-way``-Funktionen
mit einer ,,Hintert&uuml;re``.
<br>
Meist basiert die Funktion auf der Primfaktorzerlegung. Ist eine gro&szlig;e Zahl gegeben, die das
Produkt zweier Primzahlen darstellt ist es sehr schwer die beiden Primfaktoren
zu bestimmen. Kennt man allerdings die Hintert&uuml;re (einen Primfaktor) ist es sehr
leicht m&ouml;glich, den zweiten Faktor zu berechnen.
</li>
<li>Die Schl&uuml;ssell&auml;nge von symmetrischen und asymmetrischen Verfahren kann
nicht direkt verglichen werden. Bei einem asymmetrischen Verfahren mit einer
512 Bit Schl&uuml;ssell&auml;nge mu&szlig; ein Angreifer eine Bin&auml;rzahl mit 512 Bit
(entsprechend einer Dezimalzahl bis 155 Stellen) in ihre Primzahlen zerlegen.
</li>
<li>Es wird eine Schl&uuml;ssell&auml;nge von 1024 Bit empfohlen.
</li>
</ul>
<h2><a name="SECTION00042000000000000000">
Hybride Verfahren</a>
</h2>
<ul>
<li>Leider sind asymmetrische Verfahren kein Allheilmittel.
</li>
<li>Meistens sind symmetrische Verfahren sicherer als asymmetrische Verfahren.
</li>
<li>Hybride Verfahren verwenden sowohl ein symmetrisches als auch ein
asymmetrisches Verfahren (wie GnuPG und PGP es verwenden):
<ul>
<li>Der Schl&uuml;ssel f&uuml;r das symmetrische Verfahren wird mit
		dem asymmetrischen Verfahren verschl&uuml;sselt.
</li>
<li>Die Nachricht wird mit dem symmetrischen Verfahren
		verschl&uuml;sselt.
</li>
<li>Der Emfp&auml;nger entschl&uuml;sselt mit seinem privaten
		Schl&uuml;ssel den ,,session key``, mit dem die Nachricht
		entschl&uuml;sselt werden kann.
</li>
</ul>
</li>
<li>Ein hyprides Verfahren ist <i>nicht</i> st&auml;rker als das verwendete
symmetrische oder asymmetrische Verfahren. <i>Aber:</i> Wenn ein Angreifer
einen ,,session key`` entschl&uuml;sselt, so kann er nur eine Nachricht
lesen.
</li>
</ul>
<h2><a name="SECTION00043000000000000000">
Hash Verfahren - Fingerprints und Signaturen</a>
</h2>
<ul>
<li>Eine Hash-Funktionen zerlegt den Urbildraum in Teilmengen, die auf
dasselbe Element im Zielraum abgebildet werden, z.B.:
<br><p></p>
<div align="CENTER">
<!-- MATH
 \begin{displaymath}
f(x)= x mod 37
\end{displaymath}
 -->
5#5
</div>
<br clear="ALL">
<p></p>
</li>
<li>Eine digitale Signatur ist das Ergebnis des Anwenden einer Hashfunktion
auf ein Dokument.
</li>
<li>Hash-Funktionen f&#252;r Signaturen m&#252;ssen zwei Bedingen erf&#252;llen:
<ul>
<li>Es muss <i>schwer</i> sein, zwei Dokumente mit demselben Hash-Wert zu
finden
</li>
<li>Es muss <i>schwer</i> sein, aus dem Hash-Wert das Dokument zu
rekonstruieren.
</li>
</ul>
</li>
<li>Um die Echtheit zu garantieren, wird der Hash-Wert mit dem privaten
Schl&#252;ssel des signierenden verschl&uuml;sselt. Somit kann jeder mit dem
&#246;ffentlichen Schl&#252;ssel die Echtheit &#252;berpr&#252;fen.
</li>
<li>Verwendet werden z.B. SHA oder MD5
</li>
</ul>
<h1><a name="SECTION00050000000000000000">
Warum braucht die Welt GnuPG</a>
</h1>
<h2><a name="SECTION00051000000000000000">
Warum eine <i>freie</i> OpenPGP notwendig ist</a>
</h2>
<ul>
<li>Freie Software (public domain, GPL) unterliegt nicht dem Waasenar
Abkommen
</li>
<li>RSA und IDEA sind patentiert und damit f&#252;r freie Software nicht
einsetzbar.
</li>
<li>,,no security by obscurity``
</li>
<li>PGP 5.x und 6.x erf&#252;llen nicht den OpenPGP Standard
</li>
<li>PGP 5.x konnte ,,pl&ouml;tzlich`` Message Recovery
</li>
</ul>
<h2><a name="SECTION00052000000000000000">
Ausflug: Softwarepatente</a>
</h2>
<ul>
<li>RSA:
<ul>
<li>patentiert in den USA, au&#223;erhalb kann RSA uneingeschr&#228;nkt genutzt
werden
</li>
<li>In den USA nur als (langsame) Referenzimplementierung vom MIT ohne
Lizenz m&#246;glich. Genauer Status unklar.
</li>
<li>Patent l&#228;uft im September 2000 aus
</li>
</ul>
</li>
<li>IDEA:
<ul>
<li>Weltweit (soweit m&#246;glich) patentiert.
</li>
<li>f&#252;r nichtkomerzielle Nutzung frei
</li>
<li>Patent l&#228;uft am im Jahr 2011 aus.
</li>
</ul>
</li>
</ul>
<h2><a name="SECTION00053000000000000000">
Aktuell: 1999-11-15</a>
</h2>
<blockquote>
<div align="CENTER">
Mit dem Konzept von GPG k&ouml;nnte ein
                                Werkzeug geschaffen werden, das als 'public
domain'-Software ohne Einschr&auml;nkungen f&uuml;r alle
                                Benutzerschichten - Beh&ouml;rden, kommerzielle
Nutzer und Privatbenutzer eingeschlossen - frei und
                                unentgeltlich verf&uuml;gbar ist.
</div>
Hubertus Soquat, Referent f&uuml;r IT-Sicherheit im BMWi.
</blockquote>
Die Entwickler von GnuPG unter Leitung Werner Koch werden vom
Bundesministeriums f&uuml;r Wirtschaft und Technologie (BMWi) mit 250.000 DM
unterst&#252;tzt. N&#228;chstes Jahr sollen weitere Gelder folgen.
<h1><a name="SECTION00060000000000000000">
GnuPG im Alltag</a>
</h1>
<h2><a name="SECTION00061000000000000000">
Verf&uuml;gbarkeit und Anwendung</a>
</h2>
<ul>
<li>Verf&#252;gbar unter Linux und den meisten Unixen, sowie Windows
</li>
<li>Integration in diverse Mailer (z.B. mutt, xfmail, Mailcrypt)
</li>
<li>durch Wrapper auf der Kommandozeile zu PGP 2.x kompatibel
</li>
<li>Frontends f&uuml;r Gnome (GnomePGP) und KDE (Geheimniss) verf&uuml;gbar
</li>
</ul>
<h2><a name="SECTION00062000000000000000">
Die wichtigsten Merkmale</a>
</h2>
<ul>
<li>verwendet keine patentierten Algorithmen
</li>
<li>verwendet GPL, komplett neu geschrieben
</li>
<li>implementiert die OpenPGP-Spezifikation
</li>
<li>kompatibel zu PGP 5.x
</li>
<li>mit Erweiterung kompatibel zu PGP 2.x
</li>
<li>Unterst&uuml;tzt: DSA, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1,
RIPE-MD-160 und TIGER
</li>
<li>Schl&uuml;ssel k&ouml;nnen ablaufen
</li>
<li>unterst&uuml;tzt Key-Server
</li>
</ul>
<h2><a name="SECTION00063000000000000000">
GnuPG f&uuml;r PGP 2.x Anwender</a>
</h2>
<ul>
<li>PGP 2.x verwendet die patentierten Verfahren RSA und IDEA.
</li>
<li>Um zu PGP 2.x kompatibel zu sein, m&uuml;ssen die Referenzimplementierungen
von IDEA und RSA als Modul zur verf&uuml;gung gestellt werden.
</li>
<li>Nachdem die Module RSA und IDEA GnuPG zur verf&uuml;gung stehen, kann es
problemlos als PGP 2.x Ersatz genutzt werden.
</li>
<li>Obwohl der alte PGP 2.x Key benutzt werden kann, sollte man sich einen
neuen GnuPG Key generieren.
</li>
<li>F&uuml;r Debian gibt es entsprechende Pakete.
</li>
</ul>
<h1><a name="SECTION00070000000000000000">
Ausblick</a>
</h1>
<blockquote>
<div align="CENTER">
Mit GnuPG 1.0 steht dem Anwender ein ausgereiftes freies
Verschl&uuml;sselungsprogramm zur Verf&uuml;gung, dessen Weiterentwicklung sogar durch
Steuergelder gesichert ist. GnuPG ist ein vollwertiger Ersatz f&uuml;r das
kommerzielle PGP.
</div>
</blockquote>
Weiter Vortr&auml;ge:
<ul>
<li>Verschl&uuml;sselte Dateisysteme unter Linux.
</li>
<li>Betrachtung von Verschl&uuml;sselungsalgorithmen mit ihren St&auml;rken und
Schw&auml;chen.
</li>
<li>GnuPG step by step mit Key-signing Party.
</li>
<li>Anekdoten &uuml;ber Enigma, DES und RSA.
</li>
</ul>
<h1><a name="SECTION00080000000000000000">
Referenzen</a>
</h1>
<ul>
<li>GnuPG: <tt><a name="tex2html1"
  href="http://www.gnupg.org">http://www.gnupg.org</a></tt>
</li>
<li>PGP: <tt><a name="tex2html2"
  href="http://www.pgpi.com">http://www.pgpi.com</a></tt>
</li>
<li>GnuPG Dokumentation: <tt><a name="tex2html3"
  href="http://http://www.gnupg.org/gph/en/manual/book1.html">http://http://www.gnupg.org/gph/en/manual/book1.html</a></tt>
</li>
<li>GnuPG Mini Howto (deutsch): <tt><a name="tex2html4"
  href="http://www.stud.uni-goettingen.de/~s070674/GnuPGMiniHowto/GPGMiniHowto.html">http://www.stud.uni-goettingen.de/~s070674/GnuPGMiniHowto/GPGMiniHowto.html</a></tt>
</li>
<li>PGP2x nach GnuPG <tt><a name="tex2html5"
  href="http://www.gnupg.org/gph/en/pgp2x/t1.html">http://www.gnupg.org/gph/en/pgp2x/t1.html</a></tt>
</li>
<li>PGP5x nach GnuPG <tt><a name="tex2html6"
  href="http://technocage.com/~caskey/gpg/pgp2gnupg.html">http://technocage.com/~caskey/gpg/pgp2gnupg.html</a></tt>
</li>
<li>Krypto Links: <tt><a name="tex2html7"
  href="http://www.informatik.uni-freiburg.de/~luca/securitylinks.html">http://www.informatik.uni-freiburg.de/~luca/securitylinks.html</a></tt>
</li>
<li>RFC 2440: <tt><a name="tex2html8"
  href="http://www.gnupg.org/rfc2440.html">http://www.gnupg.org/rfc2440.html</a></tt>
</li>
</ul>
</div>
<!-- END Content //-->
<hr style="display:none">
<!-- BEGIN Footer //-->
<div id="footer" align="right">
  Seite erstellt/aktualisiert: 2000-04-30
    durch <em>&lt;<acronym title='Ersetze ":at:" durch "@"'>br&#x0075;ck&#x0065;r:&#x0061;t:fr&#x0065;&#x0069;b&#x0075;rg&#46;l&#x0069;n&#x0075;x&#46;d&#x0065;</acronym>&gt;</em>
  <br>
Seite zuletzt generiert:
2010-05-16
</div>
<!-- END Footer //-->
</body>
</html>