ENCRYPTION: A MIXED BLESSING?
by Eugene Volokh, VESOFT
Published by HP PROFESSIONAL Magazine, May 1988.
At first glance, encryption programs (several are available on the
Contributed Library) seem to be powerful security tools. Encryption
is the only fairly foolproof way of protecting data against
unauthorized reading, both by outsiders and insiders. Even the
system manager, to whom MPE gives unlimited access rights to any file
in the system, can't read a personal document that you've encrypted
with your own secret key.
In fact, whenever any of our customers called and asked us about
read-protecting files, we recommended one of the contributed
encryption programs. Actually, we first advised them to protect
their files with MPE's file security, which worked quite admirably as
a defense against anybody except a console operator or system
manager; however, if they didn't want even their system manager to be
able to read the files (or were afraid that some operator might pick
them up off a backup tape), encryption seemed to be the way to go.
Then, in spring of 1987, we got a call from one of our users.
They had just fired one of their programmers and two days later found
that their system was aborting! Sure enough, there was a time bomb
in their software (I had to find it in the object code since they had
lost the source code!) and I had to defuse it by patching the program
file. In fact, I had to come back six months later to defuse yet
another time bomb in the same program, and at that time found a third
bomb that was set to "explode" a month later.
Shortly after I got rid of the first time bomb, they called us
again. Apparently, some months before being fired, the saboteur had
encrypted the source code of another of their systems! Tens of
thousands of dollars worth of software was now completely
inaccessible, the key known only to the departed programmer.
This, of course, is the "mixed blessing" that I allude to in the
title of the paper. This company actually had NO NEED for any kind
of source code encryption. Although some sites may have a use for
encryption (mostly of their data and, say, management memos, letters,
etc.), this site did not; certainly, it derived no benefit from being
able to encrypt its source code, since it wasn't in any way secret.
In any event, somebody must have pulled the encryption program off
a contributed library tape, and our hero decided to "protect" the
company's source code. He may have done this maliciously, or perhaps
he may have been the kind of person who impulsively protects things
even though they really require no protection. (Naturally, being the
vendors of a security package, we encourage people to "think
security" -- however, encrypting source files is usually going a bit
too far; much better to be concerned with things like logon security,
embedded passwords, periodic password changes, etc.). What matters
is that he was gone and the source code was unreadable -- which
meant, as I mentioned, a loss of tens of thousands of dollars worth
of software investment.
When our customer first mentioned this to us, our first suggestion
was, of course, to ask the culprit. Bribe him, threaten him with
lawsuit, threaten him with criminal prosecution (the time bomb itself
was almost certainly a crime, perhaps a felony) -- even if you
couldn't get a conviction, you should be able to frighten him into
giving you the key, which, after all, would be the easiest thing in
the world for him.
Unfortunately (I say "unfortunately" because I think the guy
should have had the book thrown at him -- he's a menace), the company
wanted nothing whatsoever to do with the man again. They are a large
enterprise, with a large enterprise's distaste for negative
publicity; management would rather lose thousands than get involved
in a "Goliath vs. David" sort of case where they (although they are
in reality the innocent party) might be portrayed as big bad guys
trying to "get" a poor helpless ex-employee.
Instead, they asked me whether there was anything I could do. At
first glance, I thought that this was impossible -- after all, any
good encryption system that uses an encryption key is (theoretically)
almost unbreakable; you can try to decrypt the encrypted file, but
unless you stumble across the right key, all you'll get is garbage.
I'm sure that some National Security Agency cryptographers armed with
Crays could do it in a jiffy, but I have neither their hardware nor
their sophisticated algorithms (in fact, much advanced cryptography
is classified as government secret).
Fortunately, I got an idea. If
SOURCE FILE + KEY yields ENCRYPTED FILE (encryption)
and
ENCRYPTED FILE + KEY yields SOURCE FILE (decryption)
then it stands to reason that
SOURCE FILE + ENCRYPTED FILE yields KEY
In other words, if they had an unencrypted copy of one of the
encrypted files, then with luck I might be able to deduce the key
with which the file was encrypted, and then decrypt the rest of the
files with that key (if they were all encrypted with the same key).
I asked the author of the encryption program for its source code
and got to work. A couple of days later (and a couple of thousand
dollars later for our client), I worked out a solution. Essentially,
I reduced the problem to a system of 64 equations with 64 unknowns,
where the operators were Circular Shift and Exclusive OR.
Unfortunately, I knew of no way to solve it algorithmically; instead,
I wrote a PASCAL program. This program made assumptions about each
unknown (each unknown's value could be 0 or 1, and it made each
assumption in turn) until it got enough data to start making
deductions. Then it would deduce as many values as possible until it
either figured every value out (a solution), got a contradiction (in
which case it would forget the last assumption it made and assume the
opposite), or found that it could make no more deductions (and thus
had to make some more assumptions).
Finally, after about an hour's computer time, I got 256 possible
solutions. It turns out that because of the nature of the algorithm,
any of them would work to decrypt the files, but only one actually
represented a sequence of printable ASCII characters -- this turned
out to be the key that the culprit actually used.
Curiously enough, the key was the name of the group in which the
files were stored. If the customer (or, for that matter, I myself)
tried it in the first place, we'd have saved a lot of time.
Thus, this case turned out better than expected -- the company got
their source code back (although they had to pay some consulting fees
to do this).
At first, we thought that this was an isolated incident. Then, a
few months later, I was scanning through a bulletin board when I ran
into a message from somebody else complaining of exactly the same
thing! A programmer had encrypted some files and then left on bad
terms. In this case, the company wasn't so lucky (I believe they
didn't have any unencrypted source code to work out the key from).
Three months later, we got a call from another person -- exactly the
same thing had happened again (again, we couldn't do anything to save
their files). Fortunately, this last person was going to do
something about it -- threaten some sort of civil or criminal
prosecution of the wrongdoer.
Thus, it appears that misuse of encryption software is not such a
rare circumstance at all. In fact, I suspect that ABUSE of
encryption is more frequent than PROPER USE (especially if you
include the accidental cases, where some over-zealous programmer
encrypts his sources and forgets his key!). By and large, there's
very little data -- especially data stored in non-database files --
that really needs encrypting; an adequate file security system is
usually quite sufficient. Certainly nobody except software suppliers
really needs to encrypt source code.
Thus, our recommendation to HP users is:
* DON'T PUT FILE ENCRYPTION PROGRAMS ON YOUR SYSTEM UNLESS YOU'RE
CONVINCED THAT YOU HAVE SOME FILES THAT YOU *REALLY NEED TO
ENCRYPT*.
In other words, don't encrypt just for "general principles" --
think whether you really need to (especially in light of the
fact that most valuable data is usually stored in IMAGE
databases, which most encryption programs don't handle).
As sometimes happens, what at first glance seems to be a great
idea can actually do more harm than good. Security is a very
important issue, and you should think about it seriously; however, as
you see, you could face serious problems if you choose the wrong
security solution.
What if you've already fallen guilty to a cryptographic saboteur?
Trying to decrypt your programs with a method like the one I
mentioned should be your last try, not your first -- it's quite
expensive, time-consuming, and uncertain (since if you don't have the
EXACT original source code, you're in trouble).
As in all cases of computer crime (or of crime in general), the
best solution is to bring in the law. Though I'm certainly not a
lawyer, as I see it, you have two possible approaches: the civil and
the criminal. You can sue (or, more to the point, threaten to sue if
he doesn't give you the key) for damages, alleging that his
intentional act (or even his negligence) has deprived you of the use
of your software, in which you've invested a great deal of money.
Or, you may try to prosecute on some sort of criminal sabotage
charge, again alleging that the person intentionally acted to deprive
you of what was rightfully yours.
I've heard different opinions on the criminal matter -- one person
(a policeman experienced in computer crime investigation) mentioned
that it may be impossible to prosecute unless you can prove that the
initial encryption was malicious; if the person claims that he
encrypted the software legitimately, out of a desire to "secure" his
employer's system, it may be very hard to prove otherwise, even if he
refuses to decrypt the software after he's fired. On the other hand,
a computer lawyer I talked to said that prosecution may not be that
difficult; you probably want to get in touch with your police
department to find out (many big police departments by now have a lot
of experience in computer crime investigation).
In any case, the mere threat of criminal or even civil prosecution
can make the culprit come around -- after all, all he needs to do is
tell you the key (unless he's forgotten it!), and then he's off the
hook. Even if he thinks he'd win in a legal case in the long run, I
strongly doubt that he'd be willing to chance it.
What's more, by taking stern action against this sort of computer
crime (and in all three cases I mentioned, and in several other ones
that I know of, crime is EXACTLY what's involved), you'll be
preventing such things in the future, both on the part of the
particular wrongdoer involved and by any of your other employees.
Just like drunk driving and shoplifting a decade or two ago, many
people see computer crime (especially sabotage) as nothing really
serious, just a "harmless prank" or a test of programmer skill --
it's time that this attitude was changed, and changed radically.
Go to Adager's index of technical papers