GPG key migration and application compatibility testing

This page documents the results of the investigations performed for the GPG migration blueprint.

Migration Checklist

This list is based on the excellent instructions from Debian.

Results of testing with SHA2 GPG keys

gmail/firegpg

GMail has no built in gpg support, though it's a requested feature.

The Firefox plugin FireGPG at one time supported GMail; however, it frequently broke and so the author decided to discontinue support for the plugin, due to frequent breakage by GMail. Experiments done in the past confirmed this breakage, though when FireGPG could identify a gpg-signed message, it did not seem to have any trouble verifying messages using SHA512 HMAC.

mutt

The MUA mutt makes direct use of gpg to perform its signatures, encryption, and verification, so as long as the version of gpg that mutt invokes supports SHA2, then it works within mutt. Experimentally, after I migrated my key, I continued to have no difficulty verifying, signing and encrypting emails with mutt, which is my default day-to-day email client.

KMail

Maverick (4:4.4.6-0ubuntu1)

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

ok

ok

ok

ok

alerts on bad signed-only

ok

ok

ok

ok

generates signed-only

ok

ok

ok

ok

decrypts/validates AES256 with signature

ok

ok

ok

ok

encrypts/generates AES256 with signature

ok

ok

ok

ok

inline

PGP/MIME

decrypts AES256 without signature

ok

ok

encrypts AES256 without signature

ok

ok

Lucid (4:4.4.2-0ubuntu5)

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

ok

ok

ok

ok

alerts on bad signed-only

ok

ok

ok

ok

generates signed-only

ok

ok

ok

ok

decrypts/validates AES256 with signature

ok

ok

ok

ok

encrypts/generates AES256 with signature

ok

ok

ok

ok

inline

PGP/MIME

decrypts AES256 without signature

ok

ok

encrypts AES256 without signature

ok

ok

KMail 4.4 (in Lucid and Maverick) is known to work with GnuPG2 and uses Kleopatra and the libkleo4 libraries to perform its signatures, encryption, and verification. KMail is confirmed to work with the strong defaults as recommended by Debian2.

  1. http://lists.gnupg.org/pipermail/gnupg-announce/2009q3/000294.html

  2. http://www.debian-administration.org/users/dkg/weblog/48

Kmail Setup

Since running Kmail on a non-Kubuntu install is not necessarily straightforward, here are the steps to test:

  1. sudo apt-get install kmail kleopatra

  2. start kmail, but skip creating an account
  3. stop kmail
  4. [maverick] at this point kmail will fail to start. Need to disable the Nepomuk desktop:
    • left click on the Akonadi icon in the tray
    • Configure it to disable the desktop and file indexing
  5. create a new gpg key with the above. Eg:
    • mkdir -m 0700 ~/.gnupg
    • create ~/.gnupg/gpg.conf (as above), adding use-agent to the bottom

    • generate a 4096 bit RSA/RSA key (gpg --gen-key)
    • verify the strong preferences with 'gpg --edit-key <NEWID>' and 'showpref'

  6. import any keys needed for verification. Eg:

    $ gpg --keyserver keyserver.ubuntu.com --recv-keys 0xDC6DC026 # kees' test email (new key)
    $ gpg --keyserver keyserver.ubuntu.com --recv-keys 0x17063E6D # kees' test email (old key)
    $ gpg --keyserver keyserver.ubuntu.com --recv-keys 0x005E81F4 # sbeattie's USN (new key)
    $ gpg --keyserver keyserver.ubuntu.com --recv-keys 0x174BF01A # jdstrand's USN (old key)
  7. restart your session (to make sure gpg-agent starts)

  8. start kmail (if it dies, just try again), and update the Identity. Under the Cryptography tab:
    • set the OpenPGP signing and encrypting key to your new key
    • start the Certificate Manager (kleopatra)
      • verify the new key is listed in 'Trusted Certificates'. If not, right click on it and select 'Certify this certificate'.
      • verify the imported keys are listed in 'Other Certificates'. Right click on each and 'Change Owner Trust' to be 'marginal'
      • right click on each imported key and 'Certify Certificate' for all email addresses, being sure to 'Certify only for myself'
  9. add a new email account for whatever is appropriate for your environment
    • when KWallet comes up, use 'Basic settings' but leave 'Yes, I wish to use KDE wallet to store my personal information' unchecked. Then click, 'Do not store password'.

PGP8 compatibility

PGP 8 compatibility is likely desirable for interacting with users of PGP8 or GnuPG users who use the --pgp8 flag. From the gpg man page:

       --pgp8 Set up all options to be as PGP 8 compliant as possible. PGP 8
              is a lot closer to the OpenPGP standard than previous versions
              of PGP, so all this does is disable --throw-keyids and set
              --escape-from-lines. All algorithms are allowed except for the
              SHA224, SHA384, and SHA512 digests.

Therefore using the recommended options1 should be fine since SHA256 is listed as one of our allowed digests:

Command> setpref SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
Set preference list to:
     Cipher: AES256, AES192, AES, CAST5, 3DES
     Digest: SHA512, SHA384, SHA256, SHA224, SHA1
     Compression: ZLIB, BZIP2, ZIP, Uncompressed
     Features: MDC, Keyserver no-modify
Really update the preferences? (y/N) y
  1. http://www.debian-administration.org/users/dkg/weblog/48

Evolution

Maverick

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

yes

yes

yes

yes

alerts on bad signed-only

yes

yes

yes

yes

generates signed-only

N/A

N/A

yes

broken1

decrypts/validates AES256 with signature

TBD

TBD

yes

yes

encrypts/generates AES256 with signature

N/A

N/A

yes

yes

inline

PGP/MIME

decrypts AES256 without signature

TBD

yes

encrypts AES256 without signature

N/A

yes

Lucid

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

yes

yes

yes

yes

alerts on bad signed-only

yes

yes

yes

yes

generates signed-only

N/A

N/A

yes

broken1

decrypts/validates AES256 with signature

TBD

TBD

yes

yes

encrypts/generates AES256 with signature

N/A

N/A

yes

yes

inline

PGP/MIME

decrypts AES256 without signature

TBD

yes

encrypts AES256 without signature

N/A

yes

Bugs

  1. Signing a new message will use SHA1, with no possibility of changing the default algorithm. This has been fixed in the upstream 2.31 branch, but there are no plans to backport to 2.30, as it will change API.

Thunderbird/Enigmail

Maverick (thunderbird 3.1.4+build2+nobinonly-0ubuntu3, enigmail 2:1.1.2-0ubuntu1)

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

ok

ok

ok

ok

alerts on bad signed-only

ok

ok

ok

ok

generates signed-only

ok

ok

ok

ok

decrypts/validates AES256 with signature

ok

ok

ok

ok

encrypts/generates AES256 with signature

ok

ok

ok

ok

inline

PGP/MIME

decrypts AES256 without signature

ok

ok

encrypts AES256 without signature

ok

ok

Lucid (thunderbird 3.0.8+build2+nobinonly-0ubuntu0.10.04.1, enigmail 2:1.0.1-0ubuntu1)

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

ok

ok

FAIL: ignores sig

FAIL: ignores sig

alerts on bad signed-only

ok

ok

FAIL: ignores sig

FAIL: ignores sig

decrypts/validates AES256 with signature

ok

ok

ok

ok

encrypts/generates AES256 with signature

ok

ok

ok

ok

inline

PGP/MIME

decrypts AES256 without signature

ok

ok

encrypts AES256 without signature

ok

ok

Application Review Template

For sig checking, see this test mbox.

Maverick (VERSION)

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

alerts on bad signed-only

generates signed-only

decrypts/validates AES256 with signature

encrypts/generates AES256 with signature

inline

PGP/MIME

decrypts AES256 without signature

encrypts AES256 without signature

Lucid (VERSION)

sha1 inline

sha512 inline

sha1 PGP/MIME w/ header

sha512 PGP/MIME w/ header

validates good signed-only

alerts on bad signed-only

decrypts/validates AES256 with signature

encrypts/generates AES256 with signature

inline

PGP/MIME

decrypts AES256 without signature

encrypts AES256 without signature

SecurityTeam/GPGMigration (last edited 2023-05-01 12:51:32 by iosifache)