Encrypting E-mail with GnuPG, Thunderbird and Enigmail

Bob Jonkman

SOBAC Microcomputer Services Monday, 2 December 2013
  1. Intro to Crypto
    • Crypto Theory
    (break)
  2. Demonstration
    (break)
  3. Keysigning
    • Formal
    • Informal

Intro to Crypto

Intro to Crypto

Why use Encrypted E-mail?

Why use Encrypted E-mail?

  • Security

Why use Encrypted E-mail?

  • Security
    - Encrypted mail cannot be read by a Man In The Middle (MITM)

Why use Encrypted E-mail?

  • Security
    - Encrypted mail cannot be read by a Man In The Middle (MITM)
  • Authenticity (Integrity)

Why use Encrypted E-mail?

  • Security
    - Encrypted mail cannot be read by a Man In The Middle (MITM)
  • Authenticity (Integrity)
    - Signed mail cannot be modified in transit, accidentally by mis-configured servers, or maliciously by a MITM

Why use Encrypted E-mail?

  • Security
    - Encrypted mail cannot be read by a Man In The Middle (MITM)
  • Authenticity (Integrity)
    - Signed mail cannot be modified in transit, accidentally by mis-configured servers, or maliciously by a MITM
  • Non-Repudiability

Why use Encrypted E-mail?

  • Security
    - Encrypted mail cannot be read by a Man In The Middle (MITM)
  • Authenticity (Integrity)
    - Signed mail cannot be modified in transit, accidentally by mis-configured servers, or maliciously by a MITM
  • Non-Repudiability
    - Signed mail can only come from the sender

Why NOT use Encrypted E-mail?

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format
    - Lose your secret key, lose your mail

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format
    - Lose your secret key, lose your mail
    - Need to keep revoked keys to read old mail

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format
    - Lose your secret key, lose your mail
    - Need to keep revoked keys to read old mail
    - If your key is compromised, so is all your mail (no forward secrecy)

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format: Lose key, lose mail; keep revoked keys; compromise key, compromise mail
  •  

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format: Lose key, lose mail; keep revoked keys; compromise key, compromise mail
  • Non-repudiability

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format: Lose key, lose mail; keep revoked keys; compromise key, compromise mail
  • Non-repudiability
    - Politicians? CEOs?

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format: Lose key, lose mail; keep revoked keys; compromise key, compromise mail
  • Non-repudiability: Politicians? CEOs?
  • Rubber Hose Cryptanalysis
$5 Wrench Cryptanalysis

Rubber Hose Cryptanalysis (using a $5 wrench)

CC-BY-NC Randall Monroe, XKCD

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format
  • Non-repudiability
  • Rubber Hose Cryptanalysis

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format
  • Non-repudiability
  • Rubber Hose Cryptanalysis
  • It's hard!

Why NOT use Encrypted E-mail?

  • Need the other party to use the same encryption
  • Locked-in format
  • Non-repudiability
  • Rubber Hose Cryptanalysis
  • It's hard!
    - and looks geeky

Unencrypted, unsigned message

Date: Mon, 25 Nov 2013 18:27:22 -0500
From: Crypto Guy <cryptoguy@sobac.com>
Subject: Hello!

Hello World!

Unencrypted, signed message

Date: Mon, 25 Nov 2013 18:27:22 -0500
From: Crypto Guy <cryptoguy@sobac.com>
Subject: Hello!

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello World!


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.14 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJSk9zaAAoJENrSxFs55fZVAAgIAK2BKzV/qUTXCu0gEWJq2U3z
mZ6nsfzjs8aXJe8CT/c7kr7HSgSV57kvukIbvcUP5sCGwpIfwK04qA0Af4J9jXp7
Wq1/k0wjA1WzhCWUEEjdBs/05bAbQ78ulTbhFlII2ywLgH6BYxgjceZa9abgF8Di
xHkRWEAI6q+scoEhi0rCGlCX3UX/pkiZ1GlaxxxMBu1J5DbFaAJZ1MiPUDOLQN9w
5LzIqi4rKTtnCQo6G3WWRg5HvPMHHmUJoaZfZpnPrszf4ttG0vrFLxJKUqZszDyr
V5Lx/IjKAZBwoRRjfpRZILFHWoveaw5MG8487jM76W7LiVTEsX2AFGI3R6uy+KA=
=0p58
-----END PGP SIGNATURE-----

Encrypted, signed message

Date: Date: Mon, 25 Nov 2013 18:27:22 -0500
From: Crypto Guy <cryptoguy@sobac.com>
To: Crypto Guy <cryptoguy@sobac.com>
Subject: Hello!

-----BEGIN PGP MESSAGE-----
Charset: ISO-8859-1
Version: GnuPG v1.4.14 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

hQEMA7bHREkg/1GxAQf/dmPoG27m33QGlUEZ0F9rlndQJFgeAyPBpXVEV2uCgaGw
rCzeBOkcE7FMmo2MjiozS64QaynPAGuHYoKwRIYS06Aa3ll2FwFO4O2tGiC1jsGQ
EUgjIE8h4iqIG4D5uzsv/iQ14QWJm4vaACxLCEtSaIRYcNB6Kxvy0phydltc3cp1
Ri1OlYPV799yiT7bcdT3ntTew5UF853mUrEIPt3NRfEDrC/m8ScTCT9SD2VRzlfA
qMviBt20XgApQscLBOWCAHv+1u2eUQ8AM3OsAZ/K4mw+s/jcWNNqLG9DRrrHJzMK
YXiZtLuE02eqpXjxrgfKmUloWAu7p9uQHMRwJjIy89LAugFdmW8HY1eZbpu7kUQU
9PvGydWd0QUPjkG7CXEeh63hmmbJgmJdjqOVjDuXhuHI1xU9+psmLPEszAY1TP9f
V4WR7SAIIVtE5r2S3YRwgyXWsPF+VgesBiUtQ7mroSGeVJ6GRR/rn0IdnLabrJsb
WXiCAtNajDx/x1QGcxFDIQjNsnqvzraSHwcpX6XelRCIz3jyS3SKDdR0T/x5YkmA
mkmXDZlLUntyjbJjZF0LmB96PTAi8JT/OG4QCxTsPMIpkLJZOcQ4SnHsaxfVgLqg
gOt5bxT9ybGt17xrw/j/mKpcq9cbyXFVJoRr73OVE8Wg2IYBye4TPu/HfXIGUh70
s4dE1Jc+iqdVLqJ2w3qGo4v8B2pg6bPLde7TT/7NrrvEWg0Zxlr+SFr+60xiyPGu
8eJHtQYSXe4OOc2FZev9mb0M2IIr0zpd7q5MvUqE+4b/VUtmadUFcExuUdaayS0P
rgLVNx3285jGXzelaFB2/+Gzx/m7MMXsKMBX7Q==
=jfdJ
-----END PGP MESSAGE-----

Traffic Analysis

Always keep in mind that an encryption mode only provides confidentiality. That is, the attacker cannot find any information about the data you are communicating, other than the fact that you are communicating, when you are communicating, how much you are communicating, and whom you are communicating with. Analyzing these sorts of external information is called traffic analysis.

Crypto Theory

Crypto Theory

Symmetric Key Encryption

Crypto Theory

Symmetric Key Encryption

Substitution cipher, Caesar cipher

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = -1

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = -1
  • Encrypt: IBM-1 = HAL

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = -1
  • Encrypt: IBM-1 = HAL
  • Decrypt: Khmtw Trdq Fqnto+1 =

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = -1
  • Encrypt: IBM-1 = HAL
  • Decrypt: Khmtw Trdq Fqnto+1 = Linux User Group

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = 13 (ROT13)

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = 13 (ROT13)
  • Encrypt: Linux User Group+13 = Yvahk Hfre Tebhc

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = 13 (ROT13)
  • Encrypt: Linux User Group+13 = Yvahk Hfre Tebhc
  • Decrypt: Yvahk Hfre Tebhc+13 = Linux User Group

Symmetric Key Encryption

Substitution cipher, Caesar cipher

  • Key = 13 (ROT13)
  • Encrypt: Linux User Group+13 = Yvahk Hfre Tebhc
  • Decrypt: Yvahk Hfre Tebhc+13 = Linux User Group

Need a secure way to share the key

Public/Private Key Encryption

Public/Private Key Encryption

The Math: Based on a One-way function: Easy to do, hard to reverse

Public/Private Key Encryption

The Math: Based on a One-way function: Easy to do, hard to reverse

59 × 61 = ????

Public/Private Key Encryption

The Math: Based on a One-way function: Easy to do, hard to reverse

59 × 61 = 3599

Public/Private Key Encryption

The Math: Based on a One-way function: Easy to do, hard to reverse

3551 = ?? × ??

Public/Private Key Encryption

The Math: Based on a One-way function: Easy to do, hard to reverse

3551 = 53 × 67

Public/Private Key Encryption

The Theory: Generate a key pair

Public/Private Key Encryption

The Theory: Generate a key pair

Cryptoparty logo

A Key Pair

Public/Private Key Encryption

The Theory: Generate a key pair

Cryptoparty logo

A Key Pair

Public Key, Private (Secret) Key

Public/Private Key Encryption

The Theory: Generate a key pair

Cryptoparty logo

A Key Pair

Public Key, Private (Secret) Key

  • Anything encrypted by one key is decrypted by the other

Public Key, Private (Secret) Key

Anything encrypted by one key is decrypted by the other

Public Key, Private (Secret) Key

Anything encrypted by one key is decrypted by the other

  • Encrypt: Hello WorldPublic Key = |-|3110 '//0|21|)

Public Key, Private (Secret) Key

Anything encrypted by one key is decrypted by the other

  • Encrypt: Hello WorldPublic Key = |-|3110 '//0|21|)
  • Decrypt: |-|3110 '//0|21|)Secret Key = Hello World

Public Key, Private (Secret) Key

Anything encrypted by one key is decrypted by the other

  • Encrypt: Hello WorldPublic Key = |-|3110 '//0|21|)
  • Decrypt: |-|3110 '//0|21|)Secret Key = Hello World
     
  • Encrypt: Linux Is CoolSecret Key = 1!/\/|_|>< !5 (001

Public Key, Private (Secret) Key

Anything encrypted by one key is decrypted by the other

  • Encrypt: Hello WorldPublic Key = |-|3110 '//0|21|)
  • Decrypt: |-|3110 '//0|21|)Secret Key = Hello World
     
  • Encrypt: Linux Is CoolSecret Key = 1!/\/|_|>< !5 (001
  • Decrypt: 1!/\/|_|>< !5 (001Public Key = Linux Is Cool

GnuPG/PGP in Practice

GnuPG/PGP in Practice

  • GnuPG/PGP uses a symmetric key, not Public/Secret keys to encrypt a message

GnuPG/PGP in Practice

  • GnuPG/PGP uses a symmetric key, not Public/Secret keys to encrypt a message
  • Symmetric Key generated by Pseudo Random Number Generator (PRNG)

GnuPG/PGP in Practice

  • GnuPG/PGP uses a symmetric key, not Public/Secret keys to encrypt a message
  • Symmetric Key generated by Pseudo Random Number Generator (PRNG)
  • Symmetric Key is encrypted with recipient's Public Key

GnuPG/PGP in Practice

  • GnuPG/PGP uses a symmetric key, not Public/Secret keys to encrypt a message
  • Symmetric Key generated by Pseudo Random Number Generator (PRNG)
  • Symmetric Key is encrypted with recipient's Public Key
  • Recipient uses Secret Key to decrypt Symmetric Key
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob encrypts a message to Alice

Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob encrypts a message to Alice

  • GnuPG/PGP generates a random Symmetric Key
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob encrypts a message to Alice

  • GnuPG/PGP generates a random Symmetric Key
  • MessageSymmetric Key = |\/|355463
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob encrypts a message to Alice

  • GnuPG/PGP generates a random Symmetric Key
  • MessageSymmetric Key = |\/|355463
  • Symmetric KeyAlice's Public Key = 5`/|\/||\/|37|2!( |<3`/
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob encrypts a message to Alice

  • GnuPG/PGP generates a random Symmetric Key
  • MessageSymmetric Key = |\/|355463
  • Symmetric KeyAlice's Public Key = 5`/|\/||\/|37|2!( |<3`/
  • Bob sends |\/|355463 5`/|\/||\/|37|2!( |<3`/ to Alice
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice decrypts a message from Bob

Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice decrypts a message from Bob

  • Alice receives |\/|355463 5`/|\/||\/|37|2!( |<3`/ from Bob
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice decrypts a message from Bob

  • Alice receives |\/|355463 5`/|\/||\/|37|2!( |<3`/ from Bob
  • 5`/|\/||\/|37|2!( |<3`/Alice's Secret Key = Symmetric Key
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice decrypts a message from Bob

  • Alice receives |\/|355463 5`/|\/||\/|37|2!( |<3`/ from Bob
  • 5`/|\/||\/|37|2!( |<3`/Alice's Secret Key = Symmetric Key
  • |\/|355463Symmetric Key = Message
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob signs a message

Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob signs a message

  • MessageSHA-256 = ABC
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Bob signs a message

  • MessageSHA-256 = ABC
  • ABCBob's Secret Key = 4|>(
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice verifies Bob's signature

Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice verifies Bob's signature

  • 4|>(Bob's Public Key = ABC
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice verifies Bob's signature

  • 4|>(Bob's Public Key = ABC
  • MessageSHA-256 = ABC
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Alice verifies Bob's signature

  • 4|>(Bob's Public Key = ABC
  • MessageSHA-256 = ABC
  • Same result? Message is unaltered and verifies Bob as sender!
Alice, Evelyn, Robert (he hates being called Bob), Mallory, Trent

The Players by @0xABad1Dea

Putting it all together …

Bob encrypts and signs a message to Alice

  • GnuPG/PGP generates a random Symmetric Key
  • MessageSymmetric Key = |\/|355463
  • Symmetric KeyAlice's Public Key = 5`/|\/||\/|37|2!( |<3`/
  • MessageSHA-256 = ABC
  • ABCBob's Secret Key = 4|>(
  • Bob sends |\/|355463 5`/|\/||\/|37|2!( |<3`/ 4|>( to Alice

Alice decrypts the message from Bob and verifies signature

  • Alice receives |\/|355463 5`/|\/||\/|37|2!( |<3`/ 4|>( from Bob
  • 5`/|\/||\/|37|2!( |<3`/Alice's Secret Key = Symmetric Key
  • |\/|355463Symmetric Key = Message
  • 4|>(Bob's Public Key = ABC
  • MessageSHA-256 = ABC
  • Same result? Message is unaltered and verifies Bob as sender!

Practical GnuPG/PGP

Practical GnuPG/PGP

  • Keep your Secret Key secret!

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • But you can distribute your Public Key widely

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • But you can distribute your Public Key widely
    - Upload your Public Key to keyservers

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • But you can distribute your Public Key widely
    - Upload your Public Key to keyservers
    - Send your Public Key by e-mail

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
    - Only that person's Secret Key can decrypt it

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
    - Only that person's Secret Key can decrypt it
    - You can only encrypt a message to someone whose Public Key you have

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message
    - Anyone can use your Public Key to verify the signature

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message
    - Anyone can use your Public Key to verify the signature
    - You can sign messages for everyone!

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message
    - Anyone can use your Public Key to verify the signature
    - You can sign messages for everyone!
    - But only people who have your Public Key can verify the signature

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message
    - Anyone can use your Public Key to verify the signature
    - You can sign messages for everyone!
    - But only people who have your Public Key can verify the signature
    - Shows others that encryption is not such a weird thing

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message
  • If I download your Public Key, how do I know it's really yours?

Practical GnuPG/PGP

  • Keep your Secret Key secret!
  • Distribute your Public Key widely
  • Use a Public Key to encrypt a message
  • Use your Secret Key to sign a message
  • If I download your Public Key, how do I know it's really yours?
    - Keysigning!

Practical GnuPG/PGP

Keysigning

Practical GnuPG/PGP

Keysigning

  • You tell me what your Key Fingerprint is.

Practical GnuPG/PGP

Keysigning

  • You tell me what your Key Fingerprint is.
  • I verify that's the same Key Fingerprint on your Public Key I download

Practical GnuPG/PGP

Keysigning

  • You tell me what your Key Fingerprint is.
  • I verify that's the same Key Fingerprint on your Public Key I download
  • If I believe that's your Public Key, I sign it.

Practical GnuPG/PGP

Keysigning: Bob signs Alice's Public Key

  • Alice's Public KeyBob's Secret Key = 5!6|>0|>

Practical GnuPG/PGP

Keysigning: Bob signs Alice's Public Key

  • Alice's Public KeyBob's Secret Key = 5!6|>0|>
  • Alice's Public Key + 5!6|>0|> = Alice's Public Key5!6|>0|>

Practical GnuPG/PGP

Keysigning: Bob signs Alice's Public Key

  • Alice's Public KeyBob's Secret Key = 5!6|>0|>
  • Alice's Public Key + 5!6|>0|> = Alice's Public Key5!6|>0|>
  • Alice is popular:
    Alice's Public Key5!6|>0|>5!6(4|2015!6|\/|41(01|\/|

Practical GnuPG/PGP

Keysigning: Bob signs Alice's Public Key

  • Alice's Public KeyBob's Secret Key = 5!6|>0|>
  • Alice's Public Key + 5!6|>0|> = Alice's Public Key5!6|>0|>
  • Alice is popular:
    Alice's Public Key5!6|>0|>5!6(4|2015!6|\/|41(01|\/|
    - Alice's Public Key has been signed by Bob, Carol and Malcolm

Practical GnuPG/PGP

Keysigning: Web of Trust

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download your Public Key, how do I know it's really yours?
    - Keysigning!

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download your Public Key, how do I know it's really yours?
    - Keysigning!
  • But what if I've never met you to sign your Public Key?

Practical GnuPG/PGP

Authentication Factors

Practical GnuPG/PGP

Authentication Factors

  • Something you know:

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN
  • Something you have:

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN
  • Something you have: Key fob, pass card

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN
  • Something you have: Key fob, pass card
  • Something you are:

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN
  • Something you have: Key fob, pass card
  • Something you are: Fingerprint, retinal scan

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN
  • Something you have: Key fob, pass card
  • Something you are: Fingerprint, retinal scan
  • Someone who knows you:

Practical GnuPG/PGP

Authentication Factors

  • Something you know: Passphrase, PIN
  • Something you have: Key fob, pass card
  • Something you are: Fingerprint, retinal scan
  • Someone who knows you: Trusted introducer

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key
    - Alice signed Carol's Public Key, ∴ Alice trusts Carol

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key
    - Alice signed Carol's Public Key, ∴ Alice trusts Carol
    - Bob signed Alice's Public Key, ∴ Bob trusts Alice

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key
    - Alice signed Carol's Public Key, ∴ Alice trusts Carol
    - Bob signed Alice's Public Key, ∴ Bob trusts Alice
    - By association, Bob trusts Carol (a little)

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key
    - Alice signed Carol's Public Key, ∴ Alice trusts Carol
    - Bob signed Alice's Public Key, ∴ Bob trusts Alice
    - By association, Bob trusts Carol (a little)
    - Bob also signed Malcolm's Public Key, ∴ Bob trusts Malcolm

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key
    - Alice signed Carol's Public Key, ∴ Alice trusts Carol
    - Bob signed Alice's Public Key, ∴ Bob trusts Alice
    - By association, Bob trusts Carol (a little)
    - Bob also signed Malcolm's Public Key, ∴ Bob trusts Malcolm
    - Both Alice and Malcolm signed Carol's Public Key, so Bob trusts Carol (more than a little)

Practical GnuPG/PGP

Keysigning: Web of Trust

  • If I download Carol's Public Key, how do I know it's really Carol's?
  • Carol's Public Key5!641!(35!6|\/|41(01|\/|
    - Carol's Public Key has been signed by Alice and Malcolm
  • 5!641!(3Alice's Public Key = Carol's Public Key
    - Alice signed Carol's Public Key, ∴ Alice trusts Carol
    - Bob signed Alice's Public Key, ∴ Bob trusts Alice
    - By association, Bob trusts Carol (a little)
    - Bob also signed Malcolm's Public Key, ∴ Bob trusts Malcolm
    - Both Alice and Malcolm signed Carol's Public Key, so Bob trusts Carol (more than a little)
  • Alice and Malcolm are Trusted Introducers for Carol

Break!

Next: Demonstration

Demonstration

Demonstration

Install Enigmail

Addon for Thunderbird

Demonstration

Use Enigmail Wizard

Use the Defaults!

Demonstration

Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

  • Then your Long KeyID is 0xB91289B0D2CCE5EA
Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

  • Then your Long KeyID is 0xB91289B0D2CCE5EA
  • And your Short KeyID is 0xD2CCE5EA
Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

  • Then your Long KeyID is 0xB91289B0D2CCE5EA
  • And your Short KeyID is 0xD2CCE5EA
  • Short KeyID is unique to about 1 in 10 billion (2^32)
Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

  • Then your Long KeyID is 0xB91289B0D2CCE5EA
  • And your Short KeyID is 0xD2CCE5EA
  • Short KeyID is unique to about 1 in 10 billion (2^32)
  • Long KeyID is unique to about in 10^20 (2^64)
Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

  • Then your Long KeyID is 0xB91289B0D2CCE5EA
  • And your Short KeyID is 0xD2CCE5EA
  • Short KeyID is unique to about 1 in 10 billion (2^32)
  • Long KeyID is unique to about in 10^20 (2^64)
  • Key Fingerprint is unique to about 10^48 (2^160)
Cryptoparty logo

Cryptoparty like it's 31 December 1983!

Generate Key Pair

If your Key Fingerprint is
04F7 742B 8F54 C40A E115 26C2 B912 89B0 D2CC E5EA

  • Then your Long KeyID is 0xB91289B0D2CCE5EA
  • And your Short KeyID is 0xD2CCE5EA
  • Short KeyID is unique to about 1 in 10 billion (2^32)
  • Long KeyID is unique to about in 10^20 (2^64)
  • Key Fingerprint is unique to about 10^48 (2^160)
  • Number of atoms in the universe is about 10^80

Configure Enigmail

Configure Enigmail

  • Generally, use the defaults

Configure Enigmail

  • Generally, use the defaults
  • I chose DH/DSS algorithm for my key because of patent restrictions on RSA in 1999

Configure Enigmail

  • Generally, use the defaults
  • I chose DH/DSS algorithm for my key because of patent restrictions on RSA in 1999
    - Diffie-Hellman/Digital Signature Standard (which uses DSA - Digital Signature Algorithm)
    - ElGamal encryption algorithm

Configure Enigmail

  • Generally, use the defaults
  • I chose DH/DSS algorithm for my key because of patent restrictions on RSA in 1999
    - Diffie-Hellman/Digital Signature Standard (which uses DSA - Digital Signature Algorithm)
    - ElGamal encryption algorithm
  • Use PGP/MIME to hide signature blocks

Configure Enigmail

  • Generally, use the defaults
  • I chose DH/DSS algorithm for my key because of patent restrictions on RSA in 1999
    - Diffie-Hellman/Digital Signature Standard (which uses DSA - Digital Signature Algorithm)
    - ElGamal encryption algorithm
  • Use PGP/MIME to hide signature blocks
    - But displaying signature blocks may encourage others to use encryption

Configure Enigmail

  • Generally, use the defaults
  • I chose DH/DSS algorithm for my key because of patent restrictions on RSA in 1999
    - Diffie-Hellman/Digital Signature Standard (which uses DSA - Digital Signature Algorithm)
    - ElGamal encryption algorithm
  • Use PGP/MIME to hide signature blocks
    - But displaying signature blocks may encourage others to use encryption
    - Some mailing lists may remove PGP/MIME signature attachments

Retrieve a Public Key

Retrieve a Public Key

  • E-mail address is convenient, but may return multiple keys

Retrieve a Public Key

  • E-mail address is convenient, but may return multiple keys
  • KeyID search will return one key. Prefix KeyIDs with "0x"

Sending a Message

Sending a Message

  • OpenPGP → Default Composition Options → Signing/Encryption Options

Sending a Message

  • OpenPGP → Default Composition Options → Signing/Encryption Options
  • OpenPGP → Per-Recipient Options

Receiving a Message

Receiving a Message

How to use PGP to verify that an e-mail is authentic: Look for this text at the top "-----BEGIN PGP SIGNED MESSAGE-----"
CC-BY-NC Randall Monroe, XKCD

Receiving a Message

How to use PGP to verify that an e-mail is authentic: Look for this text at the top "-----BEGIN PGP SIGNED MESSAGE-----"
CC-BY-NC Randall Monroe, XKCD
If you want to be extra safe, check that there's a big block of jumbled characters at the bottom.

Receiving a Message

How to use PGP to verify that an e-mail is authentic: Look for this text at the top "-----BEGIN PGP SIGNED MESSAGE-----"
CC-BY-NC Randall Monroe, XKCD
If you want to be extra safe, check that there's a big block of jumbled characters at the bottom.

Fortunately, Enigmail checks a little more thoroughly!

Keysigning with Enigmail

Keysigning with Enigmail

  • OpenPGP → Key Management → Edit → Sign Key
The Crypto Nut: "My data safe behind siz layers of symmetric and public-key algorithms." "What data is it?" "Mostly me emailing with people about cryptograpy."

CC-BY-NC Randall Monroe, XKCD

Resources

What to do with encrypted mail and who to do it with

The Crypto Nut: "My data safe behind siz layers of symmetric and public-key algorithms." "What data is it?" "Mostly me emailing with people about cryptograpy."

CC-BY-NC Randall Monroe, XKCD

Resources

Other Tools

  • Evolution — Built-in support for GnuPG
  • Claws — Plugins PGP/Core, PGP/Inline, PGP/MIME
  • KMail — use gnupg2 package
  • Mutt — Built-in support
  • GMail — Use Chromium and plugin cr-gpg
  • Other Webmail (Yahoo!, Hotmail, &c.)
    — Cut'n'paste with Firefox plugin WebPG
    (doesn't work for me)
The Crypto Nut: "My data safe behind siz layers of symmetric and public-key algorithms." "What data is it?" "Mostly me emailing with people about cryptograpy."

CC-BY-NC Randall Monroe, XKCD

Resources

Support

  • KWCrypto Interest Group: http://sobac.com/kwcrypto
  • PGP-Basics mailing list: http://groups.yahoo.com/neo/groups/PGP-Basics/info
  • KWLUG: http://kwlug.org
      IRC: irc://irc.freenode.net/kwlug
  • This presentation is online at
    http://sobac.com/KWCrypto/kwlug-2013-12-02/
The Crypto Nut: "My data safe behind siz layers of symmetric and public-key algorithms." "What data is it?" "Mostly me emailing with people about cryptograpy."

Bob Jonkman

  • E-mail: bjonkman@sobac.com
  • GnuPG/PGP KeyID: 0xD2CCE5EA
  • Microblog: @bjonkman@sn.jonkman.ca or http://sn.jonkman.ca/bobjonkman
  • Blog: http://bob.jonkman.ca/blogs/
  • Thanx to Randall Monroe for releasing XKCD comics under a CC-BY-NC 2.5 license!
  • The Cryptoparty keypair logo from the Cryptoparty Artwork repository on GitHub is available in the Public Domain.
  • "The Players" by Melissa Beth Elliott (@0xABad1dea on Twitter) is used with permission
  • This rest of this presentation is ©2013 by Bob Jonkman and released under a CC-BY 4.0 license.