** 2 page feature / 1770 words ** Stop reading my mail! ** Unabridged version on Reader Disk logo here ** Have you ever thought about how many people may be able to read your electronic mail? Thomas Binder takes a look at "Pretty Good Privacy", a public key encryption utility, which aims to keeps your private mail private, and a lot more besides... If you need to send confidential text or sensitive data via email, you should consider encrypting your mail, so only the intended recipient can read it. There are a many cryptographic algorithms but the most common are symmetric ciphers, which use the same key to encrypt and decrypt data (not recommended for email) and asymmetric or public key algorithms which use different keys for encryption and decryption. ** BL off ** "Pretty Good Privacy" (PGP) is a popular public key algorithm which uses the "International Data Encryption Algorithm" (IDEA), developed in Zurich. IDEA uses keys with a length of 128 bits (compared to the alternative "Data Encryption Standard" (DES) which uses 56 bits) and is considered very secure. IDEA keys do not have to be exchanged; instead, PGP creates a truly random session key, encrypts the message using IDEA with this key, and then uses the public key scheme RSA (see boxout) to encrypt the session key. After that, the crypted message and the crypted key are put together and can be passed to the recipient. For example, when A sends a message to B, PGP does the following: ** BL start ** * Creates a random 128-bit session key * Packs the message using the ZIP algorithm (which makes it shorter and less vulnerable to crypto-analysis) * IDEA-encrypts the message with the session key * RSA-encrypts the session key with B's public key * Concatenates both the crypted message and the crypted key into an output file ** BL end ** When B receives the message, PGP performs the following steps to recover the data: ** BL start ** * Separates the crypted message and session key * Restores the original session key using RSA with B's secret key * Decrypts the message using the original session key * Unpacks the message ** BL end ** If you have more than one intended recipient, PGP does not create multiple session keys, instead it puts RSA-encrypted "versions" of the session key for each recipient into the output file. Thus, if you send the same message to ten people, the PGP output file would contain the IDEA-encrypted message once and ten session keys, each RSA-encrypted with the public key of the individual recipient. PGP also enables messages to be "digitally signed" which makes it possible to be sure a message written by you has not been altered by anyone. To do this a "digest" is created which contains a sequence of numbers which exactly matches the message. No other message could have the same digest. This digest is then encrypted with the secret key of the writer, resulting in the signature. To check it, PGP simply uses the public key of the author to decrypt the digest, then compares it to the digest of the message which the signature belongs to. As only the owner of the secret key is able to create a correct signature, a match is proof that the message is unaltered and was written by him. The nice thing about digital signatures is that PGP supports both plain text and binary data which means it's possible to digitally sign file archives so anybody with access to the author's public key can check whether their copy is an original! Key management If you want to exchange email with someone using PGP, you must first exchange your public keys. PGP offers lots of useful key management functions. It manages two keyrings, one contains your secret key/s and should never be accessible to others, the other contains all public keys, including the counterpart to your own secret key. You should maintain backups of both keyrings, because the loss of your own keys could be very embarrassing! The only thing worse than losing your secret keyring is if someone else gets hold of your private key so PGP insists this is password protected - make sure you don't choose an obvious one! Unless you obtain a public key directly from the owner (which means s/he is physically present) how can you be sure it's not someone else's? PGP offers a couple of possibilities: ** BL on ** * Every key has a "fingerprint", which could be checked by phone. * Keys could be digitally signed. When you're absolutely sure a key belongs to the person you think it does, you can sign the key, using your secret key, and send it back to the owner. ** BL end ** If you subsequently receive a new key, you can check if it has the signature of someone you trust (and naturally whose public keys you already have), before deciding whether the new key is likely to be genuine. Risks Even though PGP offers excellent security it still needs to be used responsibly: ** BL start ** * Don't trust public keys without at least checking their fingerprint - and don't check them by email. * Never ever sign a key unless you are absolutely sure it belongs to the person you think it does because once you sign a key, you signal to others the key is genuine. ** BL end ** Of course, it's also possible someone will try to crack PGP-encrypted messages but the effort needed to calculate the secret key to a public key or break the IDEA cipher is so high it would take years to do so, even using very powerful computer networks - they're more likely to get results using "conventional" extortion or violence. Why use PGP? Having read the last paragraph, you may wonder whether to bother using PGP at all, especially if you don't have any confidential stuff to send. You're not alone, some experts suggest sending encrypted data simply attracts the attention of hackers. On the other hand if more people use PGP (or other cryptographic tools) it wouldn't attract the same degree of attention, a typical chicken and egg scenario! Another reason to use PGP is simply prevent casual intrusion. Think of PGP as envelope for your email. When you send a postcard you accept anyone can read its content, email is much the same so it makes sense to pop it in a PGP "envelope". PGP and Atari ** CMDLINE.GIF here ** ** Caption ** PGP is command line tool which is controlled by entering parameters ** End caption ** PGP is a command line utility written with portability in mind which has the advantage that versions are available for most platforms, including ours. Unfortunately these are not very user friendly but happily there are various GEM shells which provide a convenient graphical user interface to use PGP. One of the best known is Easy PGP, programmed by Manfred Ssykor, which is multitasking aware and offers access to nearly all PGP features. ** EASYPGP.GIF here ** ** Caption ** Easy PGP, a GEM shell for convenient access to PGP ** End caption ** Of course, it is still inconvenient when you receive an encrypted email, to have to call call PGP (or shell) to read it and the same applies for sending PGP encrypted mail). However there are mail readers, such as Okami, which offer built-in PGP support or allows the use of PGP as an external filter. This means, you can optionally encrypt/sign email before sending it, and incoming encrypted mail can be automatically decrypted when you want to read it. Getting PGP Almost every BBS or ftp server carrying Atari software will carry a copy of PGP. The URL below is an excellent jumping off point because it allows you to select your platform then displays a list of hosts in various countries: ** BC on ** URL: http://www.pgpi.com/download/#2.6.3i ** BC off ** The current Atari version is 2.6.3i - the international release. After unpacking the archive do take the time to read the documentation. It's not a good idea to use PGP without reading them and be wary of any PGP version which came without documentation! Finally, here's the fingerprint of my public key, which you can verify when you get it. Naturally if you use this you're already assuming the editor, publisher and everyone else involved in the production process haven't tampered with the fingerprint! ** NP on ** 92 6D 22 37 8F 8D 76 FC 2F FB DD 33 50 2C ED 21 ** NP off ** If you'd like my public key my email address is: ** BC on ** gryf@hrzpub.tu-darmstadt.de ** BC off ** ** Images/Captions ** ** Boxout ** RSA RSA is a public key cryptography scheme named by its developers Rivest, Shamir, and Adleman, uses prime numbers. Today, only one way is known to break a non-trivial RSA-key: the factorisation of the product of the two primes used to create the key. In other words: The product is known and you have to search for the two primes used to create it. The security of RSA is based on the fact that there's currently no easy, or more accurately, no fast, way to do this for large primes. Consequently the larger the primes, the more secure the resulting key. Experts reckon it is safe to use keys with 768 bits and onwards bearing in mind the speed of today's computers and the known factorisation algorithms. That means, a key with 768 bits will be safe for years, provided no one comes up with much faster algorithm to factorise large numbers or an alternative strategy to break RSA. I'd recommend opting for at least 1024 bits - more if you need to protect data for ten years or more. ** End boxout ** ** Boxout ** Recognising PGP messages As PGP encrypted text is no longer readable and can't be sent via email as it is, PGP offers "ASCII armour". This means the resulting cipher text is converted so it consists of characters which can transmitted by email - similar to the uuencode process you may already be familiar with. To inform the recipient (or mailing program used) the email contains a PGP message surrounded by the following two lines: ** NP on ** -----BEGIN PGP MESSAGE----- -----END PGP MESSAGE----- ** NP off ** In discussion forums such as UseNet you'll also often spot messages beginning with: ** NP on ** -----BEGIN PGP SIGNED MESSAGE----- ** NP off ** This means the following text has been signed by its author, the signature is attached at the end of the text, in the section marked with: ** NP on ** -----BEGIN PGP SIGNATURE----- ** NP off ** Sometimes, people also send or post their public keys surrounded by these two lines: ** NP on ** -----BEGIN PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK----- ** NP off ** In all cases, you can simply drag the file containing the message on the PGP executable. PGP automatically detects the type of the message and takes the appropriate action. ** End boxout **