[PDF] Arbeiten mit GnuPG. Wolfgang Stief. Teil 1: Keyhandling und Keysigning sage-muc 1/35 P - Free Download PDF (2024)

Download Arbeiten mit GnuPG. Wolfgang Stief. Teil 1: Keyhandling und Keysigning sage-muc 1/35 P...

Arbeiten mit GnuPG Teil 1: Keyhandling und Keysigning

Wolfgang Stief [emailprotected]

2004-05-10 sage-muc

1/35

?

i

P

Schlu ¨ssel und Tools Begriffe Vor der Party W¨ ahrend der Party Nach der Party

2/35

?

i

P

gpg --fingerprint • GnuPG User seit 2000 • signierter Key (c’t) seit 2001 • GnuPG auf Solaris und Debian GNU/Linux

• Ich bin nicht allwissend. Bitte unterbrechen! • Installation der Tools wird hier und heute nicht behandelt – ihr als Admins mu ¨sst das auch ohne fremde Hilfe hinkriegen :-)

3/35

?

i

P

Schlu ¨ssel und Tools Begriffe Vor der Party W¨ahrend der Party Nach der Party

4/35

?

i

P

--sign vs. --encrypt • Unterscheidung verschlu ¨sseln vs. signieren. • Verschlu ¨sselung: Mailbody incl. Attachments werden verschlu ¨sselt, Mailheader muss unverschlu ¨sselt bleiben (MTAs). Partner brauchen jeweils zwingend Public Key der Gegenstelle. • Signatur: digitale Unterschrift, damit ist prinzipiell sichergestellt, dass der Absender auch der ist, der er vorgibt zu sein. • Achtung! Signatur kann ein Fake sein! • Abhilfe: signierte Schlu ¨ssel, Aufbau eines Web of Trust bzw. Trusted 3rd Party. Partner brauchen sinnvollerweise Public Key der Gegenstelle. • GnuPG nutzt zum Verschlu ¨sseln und Signieren unterschiedliche Keys (ElGamal vs. DSA).

5/35

?

i

P

--sign vs. --encrypt (cont’d) Empfänger

Sender

Mailbody + Attachments

Empfänger

Sender

Mailbody + Attachments

Hash über Body

+

Sender private key

Signatur

Zufallsschlüssel

Empfänger public key

Empfänger

Sender

sdlkfjdsg

aslkdjföalsdjföowieasdkhf

Signatur

Abbildung 1: Unterscheidung: Verschlu ¨sseln und Signieren von Mails

6/35

?

i

P

gpg --cipher-algo • GnuPG kennt mehr Algorithmen als PGP! Das kann zu Problemen fu ¨hren! • evora/home/stief$ gpg --version gpg (GnuPG) 1.2.4 Home: /.gnupg Supported algorithms: Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA, ELG Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH Hash: MD5, SHA1, RIPEMD160, SHA256 Compression: Uncompressed, ZIP, ZLIB, BZIP2 • Default ist 1024bit DSA fu ¨r Signierung (Hauptschu ¨ssel) und 2048bit ElGamal zum Entschlu ¨sseln (Sub-Keys).

7/35

?

i

P

gpg --edit-key • traditionell gpg als Command Line Tool

• Support fu ¨r: FreeBSD (x86), OpenBSD (x86), NetBSD (x86), Windows 95/98/NT/2000/ME PocketConsole (Pocket PC), MacOS X, AIX, BSDI (i386), HP-UX 9-11, Irix, MP-RAS, OSF1, OS/2, SCO UnixWare, SunOS, Solaris (Sparc + x86), USL Unixware • Frontends (GUI): jede Menge, verschiedene OS, Details unter http://www.gnupg.org/ (en)/related_software/frontends.html#gui • Fu ¨r viele Mailclients sind Plugins verfu ¨gbar: http://www.gnupg.org/(en)/related_ software/frontends.html#mua • Vergleich und Stolperfallen: iX 3/2004, S. 126 ff.

8/35

?

i

P

Schlu¨ssel und Tools Begriffe Vor der Party W¨ahrend der Party Nach der Party

9/35

?

i

P

gpg --fingerprint evora/home/stief$ gpg --fingerprint [emailprotected] pub 1024D/96116155 2000-10-30 Wolfgang Stief Key fingerprint = C8ED 91A2 F5BD 7798 3433 DB01 33AD B7D9 9611 6155 uid Wolfgang Stief (Home) uid Wolfgang Stief (GMX) uid Wolfgang Stief (Chaes) sub 2048g/B65230E6 2000-10-30

User-IDs k¨onnen beliebig viele existieren (uid). User-IDs k¨ onnen einzeln ungu ¨ltig erkl¨art und zuru ¨ckgezogen werden (Revocation Key). • User-ID ist der Benutzername, zu dem der Schlu ¨ssel geho ¨rt. • Kann im Prinzip beliebige Zeichenkette sein • Hier: nur natu ¨rliche Personen, die an Hand amtlichem Lichtbildausweis identifiziert werden k¨ onnen!

10/35

?

i

P

gpg --fingerprint (cont’d) evora/home/stief$ gpg --fingerprint [emailprotected] pub 1024D/96116155 2000-10-30 Wolfgang Stief Key fingerprint = C8ED 91A2 F5BD 7798 3433 DB01 33AD B7D9 9611 6155 uid Wolfgang Stief (Home) uid Wolfgang Stief (GMX) uid Wolfgang Stief (Chaes) sub 2048g/B65230E6 2000-10-30

Fingerprint ist ein One-Way-Hash u ¨ber den Schlu ¨ssel. Der Schlu ¨ssel ist u ¨ber Fingerprint und Key-ID eindeutig identifizierbar. Subkeys sind – wie der Name sagt – Unterschlu onnen ¨ssel (sub). Anzahl ist beliebig. Subkeys k¨ einzeln ungu ¨ltig gemacht werden. Key-ID ist hier in Kurzform (4 Byte) dargestellt (pub). Langform (8 Byte) bekommt man mit der zus¨atzlichen Option --with-colons.

11/35

?

i

P

gpg --keyserver

Woher unbekannte Public-Keys nehmen? • tauschen mit Kommunikationspartner (Mail, Speichermedium, Papier, Webseite etc.) • auf Keyservern suchen und von dort importieren • weltweites Netz von Servern, www.pgp.net • Key nur einmal hochspielen, Server replizieren sich automatisch • Abfrage/Suche u oglich ¨ber Webinterface m¨

12/35

?

i

P

gpg --sign-key

Am I am I? • eigener Key muss zun¨achst selbst signiert werden • daru ¨ber Nachweis, dass Eigentu ¨mer den Key selbst erstellt hat • zwingende Voraussetzung fu ¨r Schlu ¨sselzertifizierung durch CAs • zwingende Voraussetzung fu ¨r Keysigning innerhalb Web of Trust • macht GnuPG beim Schlu ¨sselerstellen automatisch

13/35

?

i

P

Schlu¨ssel und Tools Begriffe Vor der Party W¨ahrend der Party Nach der Party

14/35

?

i

P

gpg --gen-key Schlu ¨sseltyp und -l¨ange, Gu ¨ltigkeitsdauer, Mantra (== Passphrase) gpguser@evora:~$ gpg --gen-key gpg: keyring ‘/home/gpguser/.gnupg/secring.gpg’ created gpg: keyring ‘/home/gpguser/.gnupg/pubring.gpg’ created Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (4) RSA (sign only) Your selection? 1 DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024) Requested keysize is 1024 bits

15/35

?

i

P

gpg --gen-key cont’d Please specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct (y/n)? y You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) " Real name: John Doe Email address: [emailprotected] Comment: Blablubb You selected this USER-ID: "John Doe (Blablubb) " Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o

16/35

?

i

P

gpg --gen-key cont’d You need a Passphrase to protect your secret key. Enter passphrase: Repeat passphrase: We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. .++++++++.++++++++++.+++++..++++++++++...........>+++++........+++++ gpg: /home/gpguser/.gnupg/trustdb.gpg: trustdb created public and secret key created and signed. key marked as ultimately trusted. pub sub

1024D/9CB035D0 2004-05-06 John Doe (Blablubb) Key fingerprint = 8558 61FD EECF 271D EBC0 4FE9 4319 4F10 9CB0 35D0 1024g/3ECB438C 2004-05-06

17/35

?

i

P

gpg --sign-key --fingerprint • Key ist nach Erzeugung bereits self-signed: gpguser@evora:~$ gpg --sign-key [emailprotected] gpg: checking the trustdb gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1 pub 1024D/9CB035D0 created: 2004-05-06 expires: never trust: u/u sub 1024g/3ECB438C created: 2004-05-06 expires: never (1). John Doe (Blablubb) "John Doe (Blablubb) " was already signed by key 9CB035D0 Nothing to sign with key 9CB035D0 Key not changed so no update needed.

• Fingerprint: gpguser@evora:~$ gpg --fingerprint 9CB035D0 pub 1024D/9CB035D0 2004-05-06 John Doe (Blablubb) Key fingerprint = 8558 61FD EECF 271D EBC0 4FE9 4319 4F10 9CB0 35D0 sub 1024g/3ECB438C 2004-05-06 18/35

?

i

P

gpg --keyserver --send-key • Vor Keysigning-Party muss der Public Key auf einen Keyserver hochgeladen werden • Hochladen: gpg --keyserver www.de.pgp.net --send-key [emailprotected] • alternativ: exportieren des Schlu ¨ssels in ASCII und hochladen u ¨ber ein Webinterface (aber das ist unsportlich :-) gpguser@evora:~$ gpg --armor --export [emailprotected] -----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.2.4 (GNU/Linux) mQGhBECahywRBACwPQgQx0yX/hEQW9Q4C/eb6BNw77rwg0HJVCuD7oZvkQA3qc70 9ni17BcyrRyMR3lJX36E8ZcPczlfLW7Jts/JpKjFy7TuJbNPQMrI2MQDdwu/8Mjz [...] gf0tpt0M7VKaMIhJBBgRAgAJBQJAmoctAhsMAAoJEEMZTxCcsDXQD8MAoMERe6W/ 6rSMy4FWWELzZgwz8z9oAJ9mRRQR74qHdEe+h3ydum3Q76bsNw== =5Ycq -----END PGP PUBLIC KEY BLOCK-----

• m¨ogliches Webinterface: http://www.pca.dfn.de/pgpkserv/#submit 19/35

?

i

P

Schlu¨ssel und Tools Begriffe Vor der Party W¨ ahrend der Party Nach der Party

20/35

?

i

P

Let’s paaarty. . . Prinzipieller Ablauf: 1. Key-Paar generieren. 2. Public Key an Keyserver schicken. 3. Key-ID + Fingerprint an Koordinator. 4. Zur Party auftauchen. Nicht vergessen: amtlichen Lichtbildausweis (besser zwei), KeyID, Schlu ¨sseltyp, Schlu ¨ssell¨ange, Fingerprint vom eigenen Schlu ¨sselpaar. Alles auf Papier. 5. Eigene Key-Info auf dem Papier des Koordinators u ¨berpru ¨fen. 6. Identit¨at und Key-Info der anderen anhand Ausweis und Fingerprint u ¨berpru ¨fen. 7. Keys der anderen Teilnehmer zuhause vom Server runterladen und signieren. 8. Signierte Keys wieder hochladen. Zur Keysigning-Party ist keine Elektronik notwendig! 21/35

?

i

P

Schlu¨ssel und Tools Begriffe Vor der Party W¨ahrend der Party Nach der Party

22/35

?

i

P

gpg --send-keys --recv-keys --list-sigs Key suchen: gpg --keyserver wwwkeys.eu.pgp.net --search-keys [emailprotected] Key runterladen: gpg --keyserver wwwkeys.eu.pgp.net --recv-keys [emailprotected] Key u ¨berpru ¨fen anhand des Fingerprints und der Key-ID: gpg --fingerprint Key signieren: gpg --sign-key [emailprotected] Signierten Key wieder hochladen: gpg --keyserver wwwkeys.eu.pgp.net --send-keys [emailprotected] Achtung! Ein auf einem Keyserver vorhandener Key heisst nicht automatisch, dass er auch authentisch ist! Vertrauen ist an dieser Stelle gut, Kontrolle mitunter besser. 23/35

?

i

P

Beispiel Command Line (--sign-keys) gpguser@evora:~$ gpg --sign-key 96116155 gpg: checking the trustdb gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1 pub 1024D/96116155 created: 2000-10-30 expires: never trust: -/sub 2048g/B65230E6 created: 2000-10-30 expires: never (1). Wolfgang Stief (Chaes) (2) Wolfgang Stief (GfhR) [...] Really sign all user IDs? y How carefully have you verified the key you are about to sign actually belongs to the person named above? If you don’t know what to answer, enter "0". (0) (1) (2) (3)

I I I I

will have have have

not answer. (default) not checked at all. done casual checking. done very careful checking.

Your selection? (enter ’?’ for more information): 3 24/35

?

i

P

Beispiel Command Line (--sign-keys) (cont’d) Are you really sure that you want to sign this key with your key: "John Doe (Blablubb) " (9CB035D0) I have checked this key very carefully. Really sign? y You need a passphrase to unlock the secret key for user: "John Doe (Blablubb) " 1024-bit DSA key, ID 9CB035D0, created 2004-05-06 Passphrase: gpguser@evora:~$ gpguser@evora:~$ gpg --list-sigs [emailprotected] pub 1024D/96116155 2000-10-30 Wolfgang Stief (Chaes) sig 3 96116155 2003-04-25 Wolfgang Stief (Chaes) sig 3 9CB035D0 2004-05-06 John Doe (Blablubb) [...] sig B3B2A12C 2000-12-20 [User id not found] [...]

25/35

?

i

P

Config-File # GnuPG can import a key from a HKP keyerver if one is missing # for sercain operations. Is you set this option to a keyserver # you will be asked in such a case whether GnuPG should try to # import the key from that server (server do syncronize with each # others and DNS Round-Robin may give you a random server each time). # Use "host -l pgp.net | grep www" to figure out a keyserver. keyserver wwwkeys.eu.pgp.net # The environment variable http_proxy is only used when the # this option is set. honor-http-proxy

• Proxy setzt man ggf. im Environment: gpguser@evora:~$ export http_proxy="http://w3proxy:8080/"

26/35

?

i

P

Keys u ¨ber Webinterface – fu ¨r Commandline Muffel 1. http://www.heise.de/security/dienste/pgp/keyserver.shtml oder http://www. pca.dfn.de/pgpkserv/#extract 2. Stichwort (Nachname, Mailadresse etc.) in Suchfeld eingeben. 3. In Trefferliste auf passende Key-ID klicken. 4. ASCII incl. -----BEGIN PGP... und -----END PGP... in Datei speichern. 5. Key importieren: gpg --armor --import 6. Fingerprint und Key-ID u ¨berpru ¨fen: gpg --fingerprint 7. Key signieren: gpg --sign-key 8. Signierten Key exportieren: gpg --armor --export [ > ] 9. ASCII-Output in Formular am Keyserver pasten: http://www.pca.dfn.de/pgpkserv/ #submit 27/35

?

i

P

gpg --edit-key revkey Wichtig: Keys am Keyserver k¨ onnen nicht gel¨ oscht werden! Was also tun bei falschem, komprommitiertem, ungu ¨ltigem Key? • Keys, Subkeys, User-IDs und Signatures k¨ onnen zuru ¨ckgezogen werden (revoking ). • Fu ¨r Keys gibt es --gen-revoke: generiert ein Revocation Certificate fu ¨r den kompletten Key. Revocation Key am besten gleich beim Erzeugen des Keypaares mit anlegen! • Sollen Subkeys, User-IDs oder Signaturen revoked werden, gibt es Befehle im --edit-key (revkey, revuid und revsig). ¨ • Um Anderung am Keyserver bekannt zu machen, ge¨anderten Key erneut auf Keyserver hochladen.

28/35

?

i

P

Pflegeanleitung • Unbedingt auf Secret Key gut Acht geben! Kommt der in falsche H¨ande, sind alle damit behandelten Keys und Zertifikate ungu ¨ltig und damit quasi unbrauchbar! • Gleiches gilt im Prinzip fu ¨r Revocation Key! • Mo¨glichkeit, einem fremden Key zu vertrauen (Trust), damit ist Secret Key teilweise entbehrlich und kann weggesperrt werden. • Weitere M¨oglichkeit: Secret Key auf Wechselspeicher (USB, CF-Card etc.) und bei Verlassen des Arbeitsplatzes mitnehmen. • Bei befristeten Keys rechtzeitig fu ¨r Update des Ablaufdatums sorgen! Signaturen mit abgelaufenem Key sind von wenig Aussagekraft!

29/35

?

i

P

Was kommt im zweiten Teil (Juni)? • Ver- und Entschlu ¨sseln • Trusts • Schlu ¨sselpflege • Keyrings • Optionen im Config-File

30/35

?

i

P

Literatur • Albrecht Beutelspacher Kryptologie 5. Auflage, Vieweg, 1996 • J¨org Schwenk Sicherheit und Kryptographie im Internet 1. Auflage, Vieweg, 2002 • Simson Garfinkel PGP. Pretty Good Privacy O’Reilly, 1996 • Deutsche Bank, TU Darmstadt, Universit¨at Siegen, Secude, FZI CrypTool – eLearning-Programm fu ¨r Kryptographie http://www.cryptool.de/

31/35

?

i

P

Quellen • GnuPG generell: http://www.gnupg.org/ • HowTo in deutsch: http://www.gnupg.org/(en)/howtos/de/index.html • iX Magazin fu ¨r professionelle Informationstechnik, 3/2004, S. 126 ff. • c’t Kryptokampagne: http://www.heise.de/security/dienste/pgp/ • GNU Privacy Projekt: http://www.gnupp.de/

• GnuPG Keysigning Party HOWTO: http://www.cryptnet.net/fdp/crypto/gpg-party. html

32/35

?

i

P

Fin Danke fu ¨r’s Zuho ¨ren.

Fragen?

Thanks for Review and Input (alphabetical): Stephan Leicht, Stefan Peinkofer, Bernhard Schneck

33/35

?

i

P

Anhang W¨ahrend des Vortrags (2004-05-10) wurden einige Punkte diskutiert, die ich teilweise nicht in Vergessenheit geraten lassen m¨ ochte: • Trennung von beruflichem und privatem Key? Macht Sinn, ja. Weil: wenn man Arbeitgeber wechselt, werden typischerweise Mailadressen ungu ¨ltig. Und man will/muss evtl. Keysigning mit unterschiedlichen Leuten haben. • Zertifizierte Public Keys k¨onnen sehr gross werden. Einige offizielle Stellen (z. B. RIPE) akzeptieren nur Keys bis zu einer bestimmten Maximalgr¨osse. Evtl. sollte man also achtgeben, nicht Hinz und Kunz zu signieren. Abhilfe: Man signiert einen Institutsschlu ¨ssel (den einer CA) und vertraut dem dann. Damit sind alle Keys, die den selben Institutsschlu ¨ssel signiert haben ebenfalls vertrauenswu ¨rdig. • Man kann sich mitunter nicht immer aussuchen, mit wem man Keys signen will bzw. muss. Mitgefangen, mitgehangen. Allerdings: Eine Signatur sagt nur was aus zur gepru ¨ften Identit¨at, nicht zum gepru ¨ften Charakter :-) • Private Key und Revocation Key niemals gemeinsam aufbewahren! Fu ¨r beide gilt: gut 34/35

?

i

P

wegsperren! • Signaturen im Key k¨onnen nicht gel¨ oscht werden! Revoking einzelner Signatures ist m¨oglich. • Revoking Key muss nicht zwingend beim Erzeugen des Keypaares angelegt werden. Allerdings: Man braucht dazu die Passphrase. Wenn man die irgendwann mal vergisst, kann man auch keinen Revoking Key mehr erzeugen! • Beim Erzeugen eines Revoking Keys kann man aus mehreren Gru ¨nden fu ¨r das Revoken w¨ahlen (expired, lost password, compromised, no special reason). Der Grund wird im Key dann auch angezeigt. • Beim Signen nicht nur fremde Angaben auf eigener Keylist kontrollieren, sondern auch eigene Angaben auf fremder Keylist!

35/35

?

i

P

[PDF] Arbeiten mit GnuPG. Wolfgang Stief. Teil 1: Keyhandling und Keysigning sage-muc 1/35 P - Free Download PDF (2024)
Top Articles
Latest Posts
Article information

Author: Gregorio Kreiger

Last Updated:

Views: 6016

Rating: 4.7 / 5 (57 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Gregorio Kreiger

Birthday: 1994-12-18

Address: 89212 Tracey Ramp, Sunside, MT 08453-0951

Phone: +9014805370218

Job: Customer Designer

Hobby: Mountain biking, Orienteering, Hiking, Sewing, Backpacking, Mushroom hunting, Backpacking

Introduction: My name is Gregorio Kreiger, I am a tender, brainy, enthusiastic, combative, agreeable, gentle, gentle person who loves writing and wants to share my knowledge and understanding with you.