8.8
E-Mail Security
When an e-mail message is sent
between two distant sites, it will generally transit dozens of machines on the
way. Any of these can read and record the message for future use. In practice,
privacy is nonexistent, despite what many people think. Nevertheless, many
people would like to be able to send e-mail that can be read by the intended
recipient and no one else: not their boss and not even their government. This
desire has stimulated several people and groups to apply the cryptographic
principles we studied earlier to e-mail to produce secure e-mail. In the
following sections we will study a widely-used secure e-mail system, PGP, and
then briefly mention two others, PEM and S/MIME. For additional information
about secure e-mail, see (Kaufman et al., 2002; and Schneier, 1995).
Our first example, PGP (Pretty Good
Privacy) is essentially the brainchild of one person, Phil Zimmermann
(Zimmermann, 1995a, 1995b). Zimmermann is a privacy advocate whose motto is: If
privacy is outlawed, only outlaws will have privacy. Released in 1991, PGP is a
complete e-mail security package that provides privacy, authentication, digital
signatures, and compression, all in an easy-to-use form. Furthermore, the
complete package, including all the source code, is distributed free of charge
via the Internet. Due to its quality, price (zero), and easy availability on
UNIX, Linux, Windows, and Mac OS platforms, it is widely used today.
PGP encrypts data by using a block
cipher called IDEA (International Data Encryption Algorithm), which uses
128-bit keys. It was devised in Switzerland at a time when DES was seen as
tainted and AES had not yet been invented. Conceptually, IDEA is similar to DES
and AES: it mixes up the bits in a series of rounds, but the details of the
mixing functions are different from DES and AES. Key management uses RSA and
data integrity uses MD5, topics that we have already discussed.
PGP has also been embroiled in
controversy since day 1 (Levy, 1993). Because Zimmermann did nothing to stop
other people from placing PGP on the Internet, where people all over the world
could get it, the U.S. Government claimed that Zimmermann had violated U.S.
laws prohibiting the export of munitions. The U.S. Government's investigation
of Zimmermann went on for 5 years, but was eventually dropped, probably for two
reasons. First, Zimmermann did not place PGP on the Internet himself, so his lawyer
claimed that he never exported anything (and then there is the little matter of
whether creating a Web site constitutes export at all). Second, the government
eventually came to realize that winning a trial meant convincing a jury that a
Web site containing a downloadable privacy program was covered by the
arms-trafficking law prohibiting the export of war materiel such as tanks,
submarines, military aircraft, and nuclear weapons. Years of negative publicity
probably did not help much, either.
As an aside, the export rules are
bizarre, to put it mildly. The government considered putting code on a Web site
to be an illegal export and harassed Zimmermann for 5 years about it. On the
other hand, when someone published the complete PGP source code, in C, as a
book (in a large font with a checksum on each page to make scanning it in easy)
and then exported the book, that was fine with the government because books are
not classified as munitions. The sword is mightier than the pen, at least for
Uncle Sam.
Another problem PGP ran into
involved patent infringement. The company holding the RSA patent, RSA Security,
Inc., alleged that PGP's use of the RSA algorithm infringed on its patent, but
that problem was settled with releases starting at 2.6. Furthermore, PGP uses
another patented encryption algorithm, IDEA, whose use caused some problems at
first.
Since PGP is open source, various
people and groups have modified it and produced a number of versions. Some of
these were designed to get around the munitions laws, others were focused on
avoiding the use of patented algorithms, and still others wanted to turn it
into a closed-source commercial product. Although the munitions laws have now
been slightly liberalized (otherwise products using AES would not have been exportable
from the U.S.), and the RSA patent expired in September 2000, the legacy of all
these problems is that several incompatible versions of PGP are in circulation,
under various names. The discussion below focuses on classic PGP, which is the
oldest and simplest version. Another popular version, Open PGP, is described in
RFC 2440. Yet another is the GNU Privacy Guard.
PGP intentionally uses existing
cryptographic algorithms rather than inventing new ones. It is largely based on
algorithms that have withstood extensive peer review and were not designed or
influenced by any government agency trying to weaken them. For people who tend
to distrust government, this property is a big plus.
PGP supports text compression,
secrecy, and digital signatures and also provides extensive key management
facilities, but oddly enough, not e-mail facilities. It is more of a
preprocessor that takes plaintext as input and produces signed ciphertext in
base64 as output. This output can then be e-mailed, of course. Some PGP implementations
call a user agent as the final step to actually send the message.
To see how PGP works, let us
consider the example of Fig. 8-44. Here, Alice wants to send a signed
plaintext message, P, to Bob in a secure way. Both Alice and Bob have private (DX)
and public (EX) RSA keys. Let us assume that each one knows the
other's public key; we will cover PGP key management shortly.
Alice starts out by invoking the PGP
program on her computer. PGP first hashes her message, P, using MD5, and then
encrypts the resulting hash using her private RSA key, DA. When Bob
eventually gets the message, he can decrypt the hash with Alice's public key
and verify that the hash is correct. Even if someone else (e.g., Trudy) could
acquire the hash at this stage and decrypt it with Alice's known public key,
the strength of MD5 guarantees that it would be computationally infeasible to
produce another message with the same MD5 hash.
The encrypted hash and the original
message are now concatenated into a single message, P1, and compressed using
the ZIP program, which uses the Ziv-Lempel algorithm (Ziv and Lempel, 1977).
Call the output of this step P1.Z.
Next, PGP prompts Alice for some
random input. Both the content and the typing speed are used to generate a
128-bit IDEA message key, KM (called a session key in the PGP
literature, but this is really a misnomer since there is no session). KM
is now used to encrypt P1.Z with IDEA in cipher feedback mode. In addition, KM
is encrypted with Bob's public key, EB. These two components are
then concatenated and converted to base64, The resulting message then contains
only letters, digits, and the symbols +, /, and =, which means it can be put
into an RFC 822 body and be expected to arrive unmodified.
When Bob gets the message, he
reverses the base64 encoding and decrypts the IDEA key using his private RSA
key. Using this key, he decrypts the message to get P1.Z. After decompressing
it, Bob separates the plaintext from the encrypted hash and decrypts the hash
using Alice's public key. If the plaintext hash agrees with his own MD5
computation, he knows that P is the correct message and that it came from
Alice.
It is worth noting that RSA is only
used in two places here: to encrypt the 128-bit MD5 hash and to encrypt the
128-bit IDEA key. Although RSA is slow, it has to encrypt only 256 bits, not a
large volume of data. Furthermore, all 256 plaintext bits are exceedingly
random, so a considerable amount of work will be required on Trudy's part just
to determine if a guessed key is correct. The heavyduty encryption is done by
IDEA, which is orders of magnitude faster than RSA. Thus, PGP provides
security, compression, and a digital signature and does so in a much more
efficient way than the scheme illustrated in Fig. 8-19.
PGP supports four RSA key lengths.
It is up to the user to select the one that is most appropriate. The lengths
are
- Casual (384 bits): can be broken easily today.
- Commercial (512 bits): breakable by three-letter organizations.
- Military (1024 bits): Not breakable by anyone on earth.
- Alien (2048 bits): Not breakable by anyone on other planets, either.
Since RSA is only used for two small
computations, everyone should use alien strength keys all the time.
The format of a classic PGP message
is shown in Fig. 8-45. Numerous other formats are also in
use. The message has three parts, containing the IDEA key, the signature, and
the message, respectively. The key part contains not only the key, but also a
key identifier, since users are permitted to have multiple public keys.
The signature part contains a
header, which will not concern us here. The header is followed by a timestamp,
the identifier for the sender's public key that can be used to decrypt the
signature hash, some type information that identifies the algorithms used (to
allow MD6 and RSA2 to be used when they are invented), and the encrypted hash
itself.
The message part also contains a
header, the default name of the file to be used if the receiver writes the file
to the disk, a message creation timestamp, and, finally, the message itself.
Key management has received a large
amount of attention in PGP as it is the Achilles heel of all security systems.
Key management works as follows. Each user maintains two data structures
locally: a private key ring and a public key ring. The private key ring
contains one or more personal private-public key pairs. The reason for
supporting multiple pairs per user is to permit users to change their public
keys periodically or when one is thought to have been compromised, without
invalidating messages currently in preparation or in transit. Each pair has an
identifier associated with it so that a message sender can tell the recipient
which public key was used to encrypt it. Message identifiers consist of the
low-order 64 bits of the public key. Users are responsible for avoiding
conflicts in their public key identifiers. The private keys on disk are
encrypted using a special (arbitrarily long) password to protect them against
sneak attacks.
The public key ring contains public
keys of the user's correspondents. These are needed to encrypt the message keys
associated with each message. Each entry on the public key ring contains not
only the public key, but also its 64-bit identifier and an indication of how
strongly the user trusts the key.
The problem being tackled here is
the following. Suppose that public keys are maintained on bulletin boards. One
way for Trudy to read Bob's secret e-mail is to attack the bulletin board and
replace Bob's public key with one of her choice. When Alice later fetches the
key allegedly belonging to Bob, Trudy can mount a bucket brigade attack on Bob.
To prevent such attacks, or at least
minimize the consequences of them, Alice needs to know how much to trust the
item called ''Bob's key'' on her public key ring. If she knows that Bob
personally handed her a floppy disk containing the key, she can set the trust
value to the highest value. It is this decentralized, user-controlled approach
to public-key management that sets PGP apart from centralized PKI schemes.
Nevertheless, people do sometimes
obtain public keys by querying a trusted key server. For this reason, after
X.509 was standardized, PGP supported these certificates as well as the
traditional PGP public key ring mechanism. All current versions of PGP have
X.509 support.
In contrast to PGP, which was
initially a one-man show, our second example, PEM (Privacy Enhanced Mail),
developed in the late 1980s, is an official Internet standard and described in
four RFCs: RFC 1421 through RFC 1424. Very roughly, PEM covers the same
territory as PGP: privacy and authentication for RFC 822-based e-mail systems.
Nevertheless, it also has some differences from PGP in approach and technology.
Messages sent using PEM are first
converted to a canonical form so they all have the same conventions about white
space (e.g., tabs, trailing spaces). Next, a message hash is computed using MD2
or MD5. Then the concatenation of the hash and the message is encrypted using
DES. In light of the known weakness of a 56-bit key, this choice is certainly
suspect. The encrypted message can then be encoded with base64 coding and
transmitted to the recipient.
As in PGP, each message is encrypted
with a one-time key that is enclosed along with the message. The key can be
protected either with RSA or with triple DES using EDE.
Key management is more structured
than in PGP. Keys are certified by X.509 certificates issued by CAs, which are
arranged in a rigid hierarchy starting at a single root. The advantage of this
scheme is that certificate revocation is possible by having the root issue CRLs
periodically.
The only problem with PEM is that
nobody ever used it and it has long-since gone to that big bit bin in the sky.
The problem was largely political: who would operate the root and under what
conditions? There was no shortage of candidates, but many people were afraid to
trust any one company with the security of the whole system. The most serious
candidate, RSA Security, Inc., wanted to charge per certificate issued.
However, some organizations balked at this idea. In particular, the U.S.
Government is allowed to use all U.S. patents for free, and companies outside
the U.S. had become accustomed to using the RSA algorithm for free (the company
forgot to patent it outside the U.S.). Neither was enthusiastic about suddenly
having to pay RSA Security, Inc., for doing something that they had always done
for free. In the end, no root could be found and PEM collapsed.
IETF's next venture into e-mail
security, called S/MIME (Secure/MIME), is described in RFCs 2632 through 2643.
Like PEM, it provides authentication, data integrity, secrecy, and
nonrepudiation. It also is quite flexible, supporting a variety of
cryptographic algorithms. Not surprisingly, given the name, S/MIME integrates
well with MIME, allowing all kinds of messages to be protected. A variety of
new MIME headers are defined, for example, for holding digital signatures.
IETF definitely learned something
from the PEM experience. S/MIME does not have a rigid certificate hierarchy
beginning at a single root. Instead, users can have multiple trust anchors. As
long as a certificate can be traced back to some trust anchor the user believes
in, it is considered valid. S/MIME uses the standard algorithms and protocols
we have been examining so far, so we will not discuss it any further here. For
the details, please consult the RFCs.
No comments:
Post a Comment
silahkan membaca dan berkomentar