[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
The Internet Code Ring
THE INTERNET CODE RING!
An Interview with Phil Zimmerman, creator of PGP
We were sitting in a circle on the floor at the Computers, Freedom,
and Privacy conference, March '93 in San Francisco, St. Jude and I
with Tom Jennings, Fen La Balme, et al, discussing encryption and
other neophiliac rants when a dapper fellow wandered by with a
beard on his face and a tie hanging from his neck. He picked up
Jude's copy of bOING-bOING number 10 and glanced through it,
clearly interested. I later learned that this was Phil Zimmerman,
creator of PGP ("Pretty Good Privacy"), so I tracked him down and
we talked for the record.
Jon: I'm fairly nontechnical, and I'm also new to encryption. I spent
some time recently on the cypherpunks' list, and I have a pretty
good sense of what's going on, but maybe you can tell me in your
own words how you came to write PGP, and what your philosophy
is, especially with distribution.
Phil: Well, okay. PGP, which means "Pretty Good Privacy" is a
public key encryption program, it uses a public key encryption
algorithm, which means that you can encrypt messages and you can
send them to people that you've never met, that you've never had a
chance to exchange keys with over a secure channel. With regular
encryption, the kind that everybody has heard about, you encrypt a
message, it scrambles it up, renders it unintelligible, and then you
send it to someone else, and they can descramble it, decrypting it.
They have to use the same key to decrypt it as you used to encrypt
it. Well, this is a problem, this is inconvenient, because how are you
going to tell them what that key is, what're you going to do, tell
them over the telephone? If someone can intercept the message, they
can intercept the key. So this has been the central problem in
cryptography for the past couple of millenia. There's been a lots of
different ways of encrypting information, but they all have this
problem.
If you had a secure channel for exchanging keys, why do you
need any cryptography at all? So, in the late 1970s, somebody came
up with an idea for encrypting information with two keys. The two
keys are mathematically related. You use one of the keys to encrypt
the message, and use the other key to decrpyt the message. As a
matter of fact, the keys have a kind of yin-yang relationship, so that
either one of them can decrypt what the other one can encrypt. So
everybody randomly generates a pair of these keys, the keys are
mathematically related, and they can be split apart like cracking a
coin in half, and the jagged edges stick together just right. They can
publish one of the keys, and keep the other one secret. Now, unlike
cracking the coin in half, you can't look at the jagged edge, and
figure out what the other jagged edge is going to look like. In fact,
you can't look at the published key and figure out what the secret
key is without spending centuries of supercomputer time to do it.
This means that any time anybody wants to send you a message,
they can encrypt that message with your public key, and then you
can decrypt the message with your secret key. If you want to send
them a message, then you can encrypt the message with their public
key, and then they can decrypt it with their secret key. Everybody
who wants to participate in this system can generate a pair of these
keys, publish one of them, and keep the other one secret.
Everybody's published key can end up in a big public key directory,
like a phone book, or an electronic bulletin board, or something like
that. You can look up somebody's public key, encrypt a message to
them, and send it to them. They're the only ones that can read it,
because they're the only ones that have the corresponding secret
key.
J: Are there any such directories now?
P: Well, actually, there are starting to be directories like that. For
PGP, there are some public key directories on Internet. You can just
send an electronic inquiry saying "Give me the key for
[somebody]," and it'll send you their key back, their public key.
J: The convention I've seen has been the inclusion of the public key
in an email message posted to a mailing list.
P: You can do that, you can include your own public key when you
send a message to someone, so that when they send you a reply,
they'll know what public key to use to send the reply. But the
problem...there is an achilles heel with public key cryptography, and
I'll get to that in a minute. But first, let me explain authentication. If
I want to send you a message, and prove that it came from me, I can
do that by encrypting it with my own secret key, and then I can
send you the message, and you can decrypt it with my public key.
Remember I said that the keys are in this yin-yang relationship, so
that either one can decrypt what the other one encrypts. If I don't
care about secrecy, if I only cared about authentication, if I only
wanted to prove to you that the message came from me, I could
encrypt the message with my own secret key and send it to you, and
you could decrypt it with your public key. Well, anyone else could
decrypt it to, because everyone has my public key. If I want to
combine the features of secrecy and authentication, I can do both
steps: I can encrypt the message first with my own secret key,
thereby creating a signature, and then encrypt it again with your
public key. I then send you the message. You reverse those steps:
first you decrypt it with your own secret key, and then you decrypt
that with my public key. That's a message that only you can read
and only I could have sent. We have secrecy and authentication. So
you get authentication by using your own secret key to decrypt a
message, thereby signing the message. You can also convince third
parties like a judge that the message came from me. That means that
I could send you a financial instrument, a legal contract or some
kind of binding agreement. The judge will believe that the message
did come from me, because I am the only person with the secret key,
that could have created that message.
Now, public key cryptography has an achilles heel, and that
achilles heel is that, suppose you want to send a message to someone,
and you look up their public key, on a bulletin board, for example.
You take their public key and you encrypt the message and then
send it to them, and presumably only they can read it. Well, what if
Ollie North broke into that BBS system? And he subsituted his own
public key for the public key of your friend. And left your friend's
name on it, so that it would look like it belonged to your friend. But
it really wasn't your friend's public key, it was Ollie's public key that
he had created just for this purpose. You send a message, you get the
bulletin board to tell you your friend's public key, but it isn't your
friend's public key, it's Ollie's public key. You encrypt a message
with that. You send it, possibly through the same bulletin board, to
your friend. Ollie intercepts it, and he can read it because he knows
the secret key that goes with it. If you were particularly clever,
which Ollie North isn't because we all know that he forgot to get
those White House backup tapes deleted...but suppose he were
clever, he would then re-encrypt the decrypted message, using the
stolen key of your friend, and send it to your friend so that he
wouldn't suspect that anything was amiss. This is the achilles' heel of
public key cryptography, and all public key encryption packages
that are worth anything invest a tremendous amount of effort in
solving this one problem. Probably half the lines of code in the
program are dedicated to solving this one problem. PGP solves this
problem by allowing third parties, mutually trusted friends, to sign
keys. That proves that they came from who they said they came
from. Suppose you wanted to send me a message, and you didn't
know my public key, but you know George's public key over here,
because George have you his public key on a floppy disk. I publish
my public key on a bulletin board, but before I do, I have George
sign it, just like he signs any other message. I have him sign my
public key, and I put that on a bulletin board. If you download my
key, and it has George's signature on it, that constitutes a promise
by George that that key really belongs to me. He says that my name
and my key got together. He signs the whole shootin' match. If you
get that, you can check his signature, because you have his public
key to check. If you trust him not to lie, you can believe that really is
my public key, and if Ollie North breaks into the bulletin board, he
can't make it look like his key is my key, because he doesn't know
how to forge a signature from George. This is how public key
encryption solves the problem, and in particular, PGP solves it by
allowing you to designate anyone as a trusted introducer. In this
case, this third party is a trusted introducer, you trust him to
introduce my key to you.
There are public key encryption packages currently being
promoted by the U.S. Government based on a standard called
Privacy Enhanced Mail, or PEM. PEM's architecture has a central
certification authority that signs everybody's public key. If everyone
trusts the central authority to sign everyone's key, and not to lie,
then everyone can trust that they key they have is a good key. The
key actually belongs to the name that's attached to it. But a lot of
people, especially people who are libertarian-minded, would not feel
comfortable with an approach that requires them to trust a central
authority. PGP allows grassroots distributed trust, where you get to
choose who you trust. It more closely follows the social structures
that people are used to. You tend to believe your friends.
J: Did you make a conscious decision up front, before you started
programming PGP, that you were going to create something that
would be distributed in this grassroots way, free through the
Internet.
P: Well, there were some software parts of PGP that I developed
some years ago, as far back as 1986, that I developed with the
intention of developing commercial products with it someday. Over
the years that followed, I developed a few more pieces that I hoped
someday to turn into a commercial product. But, when it finally
came down to it, I realized that it would be more politically effective
to distribute PGP this way. Besides that, there is a patent on the
RSA public key encryption algorithm that PGP is based on. I wrote
all of the software from scratch. I didn't steal any software from the
RSA patent holders. But patent law is different from copyright law.
While I didn't steal any software from them, I did use the algorithm,
the mathematical formulas that were published in academic journals,
describing how to do public key cryptography. I turned those
mathematical formulas into lines of computer code, and developed it
independently.
J: Did you originally intend to license that?
P: When I first wrote the parts of it back in 1986, I did. But I began
in earnest on PGP in December of 1990. At that time, I had decided
that I was going to go ahead and publish it for free. I thought that it
was politically a useful thing to do, considering the war on drugs
and the government's attitude toward privacy. Shortly after I stared
on the development, I learned of Senate Bill 266, which was the
Omnibus Anticrime Bill. It had a provision tucked away in it, a sense
of Congress provision, that would, if it had become real hard law,
have required manufacturers of secure communications gear, and
presumably cryptographic software, to put back doors in their
products to allow the government to obtain the plain text contents
of the traffic. I felt that it would be a good idea to try to get PGP out
before this became law. As it turned out, it never did pass. It was
defeated after a lot of protest from civil liberties groups and industry
groups.
J: But if they could get away with passing it, they would still take the
initiative and try.
P: Well, yeah, actually...it started out as a sense of Congress bill,
which means that it wasn't binding law. But those things are usually
set to deploy the political groundwork to make it possible later to
make it into hard law. Within a week or so after publishing PGP,
Senate Bill 266 went down in defeat, at least that provision was
taken out, and that was entirely due to the efforts of others, I had
nothing to do with that. PGP didn't have any impact, it turned out,
at all. So that's why I published PGP.
J: Several of my friends are involved in cypherpunks, and I've been
on their mailing list...are you affiliated in any way with
cypherpunks? Are you getting their mailing list?
P: I was on their mailing list for a couple of days, but I found that
the density of traffic was high enough that I couldn't get any work
done, so I had them take me off the list.
J: The reason I bring cypherpunks up is that they seem to have
almost a religious fervor about encryption <laughs>. I was
wondering if you share that.
P: I don't think of my own interest in cryptography as a religious
fervor. I did miss some mortgage payments while I was working on
PGP. In fact, I missed five mortgage payments during the
development of PGP, so I came pretty close to losing my house. So I
must have enough fervor to stay with the project long enough to
miss five mortgage payments <laughter>. But I don't think it's a
religious fervor.
J: I'm impressed with the way encryption in general and PGP in
particular have caught on with the press, how it's become within the
last year.
P: Well, PGP 1.0 was released in June of '91. It only ran on MS
DOS, and it didn't have a lot of the features necessary to do really
good key certification, which is that achilles' heel that I told you
about. Theoretically, you could use it in a manual mode to do that,
but it wasn't automatic like it is in PGP 2.0 and above. The current
release of PGP is 2.2. It's a lot smoother and more polished that 2.0
was. 2.0 was tremendously different than 1.0, and the reason the
popularity has taken off so much since September, when it was
released, is because it ran on a lot of UNIX platforms, beginning
with 2.0. Since the main vehicle for Internet nodes is UNIX
platforms, that made it more popular in the UNIX/Internet world.
Since Internet seems to be the fertile soil of discourse on
cryptography, the fact that PGP 2.0 began running on UNIX
platforms has a lot to do with it's popularity since that version was
released...Tthat was in September of '92.
J: The easiest way to get PGP is through FTP from various sites?
P: Yeah. Most of them European sites. PGP 2.0 and above was
released in Europe. The people that were working on it were out of
reach of U.S. patent law...and not only are they out of reach of patent
law, but it also defuses the export control issues, because we're
importing it into the U.S., instead of exporting it. Also PGP 1.0 was
exported, presumably by somebody, any one of thousands of people
could have done it...but it was published in the public domain. It's
hard to see how something like that could be published, and
thousands of people could have it, and it could not leak overseas. It's
like saying that the New York Times shouldn't be exported, how can
you prevent that when a million people have a copy? It's blowing in
the wind, you can't embargo the wind.
J: And by beginning in Europe, you sort of fanned the flame that
much better.
P: Yeah.
J: It seems to have spread globally, and I'm sure that you're hearing a
lot about it, getting a lot of response.
P: Particularly at this conference (CFP93), yes.
J: Do you plan to do more development of PGP, or are you satisfied
with where it is....
P: PGP will be developed further. My personal involvement is more
in providing design direction and making sure that the architecture
stays sound. The actual coding is taking place overseas, or at least
most of it is. We do get patches sent in by people in the U.S. who
find bugs, and who say, "I found this bug, here's a patch to fix it."
But the bulk of the work is taking place outside the U.S. borders.
J: Is there a Mac version as well as a DOS version now?
P: Yeah, there is a Mac version...there was a Mac version released
shortly after PGP 2.0 came out. Somebody did that independently,
and I only found out about it after it was released. People have
written me about it, and it did seem to have some problems. The
same guy who did that version is doing a much improved version,
Mac PGP version 2.2, which I believe should be out in a few
days...that was the last I heard before I came to the conference. The
second Mac development group, that's working on a very "Mac"-ish
GUI, is being managed by a guy named Blair Weiss. That takes
longer, it's difficult to write a good Mac application, so it's probably
going to be a couple of months before that hits the streets.
J: Were you involved in the UNIX version, too?
P: I did the first MS-DOS version entirely by myself, but it's not
that big a distance between MS-DOS and UNIX, so most of it was
the same. The UNIX board took place soon after PGP 1.0 was
released. After that, many other enhancements were added, and
major architectural changes took place to the code, and that's what
finally made its way out as version 2.0.
J: You're doing consulting now?
P: That's how I make my living, by consulting. I don't make
anything from PGP.
J: Do you think you'll just let PGP take a life of its own, let other
people work on it from here out?
P: Other people are contributing their code, and other people are
adding enhancements, with my design direction. Perhaps someday
I'll find a way to make money from PGP, but if I do, it will be done
in such a way that there will always be a free version of PGP
available.
J: I was thinking of the UNIX thing, where everybody's modified
their versions of the UNIX Operating System so that some
[customized versions] weren't even interoperable. I was wondering
if there was a chance that PGP would mutate, whether you're going
to keep some sort of control over it, or whether people will start
doing their onw versions of it....
P: Well, I don't know, that could happen. There are so many people
interested in the product now, it's hard to keep track of everybody's
changes. When they send in suggested changes, we have to look at it
carefully to see that the changes are good changes.
J: But you don't have some sort of structure in place where you do
some kind of approval if somebody wants to make some kind of
mutant version of PGP....
P: There is a kind of de facto influence that I have over the product,
because it's still my product, in a kind of psychological sense. In the
user population, they associate my name with the product in such a
way that, if I say that this product is good, that I have looked at this
and that I believe the changes made sense the last version are good
changes, that people will believe that. So I can determine the
direction, not by some iron law, not by having people work for me
that I can hire and fire, but more by my opinion guiding the product.
It would not be easy for a person to make a different version of PGP
that went in a different direction than how I wanted it to go, because
everybody still uses the version that I approved, so to be
compatible...this has a kind of intertia to it, a de facto standard. PGP
currently, I believe, is the world's most popular public key
encryption program, so that has potential to become a de facto
standard. I don't know what that means in comparison to the PEM
standard. PEM is for a different environment than PGP, perhaps,
although the PGP method of certifying keys can be collapsed into a
special case that mimics in many respects the PEM model for
certifying keys.