[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

The CipherSaber Manifesto




-----BEGIN PGP SIGNED MESSAGE-----

In George Lucas' Star Wars trilogy, Jedi Knights were expected to make
their own Light Sabers. The message was clear: a warrior confronted by
a powerful empire bent on totalitarian control must be self-reliant.
As we face a real threat of a ban on the distribution of strong
cryptography -- in the United States and possibly world-wide -- we
must emulate the Jedi masters by teaching people how to build strong
cryptography programs all by themselves. If this can be done, strong
cryptography will become impossible to suppress.

While cryptographers like to wallow in the complexity of their art,
the basic elements of a strong cryptographic system are quite simple
and well known in the programming community. By choosing a simple but
strong cipher that is already widely published and agreeing on how to
use it, anyone with elementary programming skills will be able to
write their own program without relying on any products that can be
banned.

CipherSaber-1 (CS1) uses Ron Rivest's RC4 algorithm as published in
the second edition of Bruce Schneier's Applied Cryptography. RC4 is
widely respected and used in a number of products, including SSL. With
a long enough key RC4 is considered strong and it is also
extraordinarily easy to explain and to reproduce. As Schneier says,
"The algorithm is so simple that most programmers can quickly code it
from memory." Implementations of RC4 are available on the Internet but
it is actually easier to write your own version.

The legal status of RC4 is the subject of some controversy. The RSA
division of Security Dynamics still considers RC4 confidential and
proprietary. It is not patented and, to the extent that Schneier is
correct (and no one doubts him), it is not confidential. However,
anyone wishing to build a commercial product using CipherSaber might
find it cost-effective, as well as polite, to obtain a license from
RSA. Apologies to Prof. Rivest for suggesting individuals use his
invention without his consent. If there were another strong algorithm
so singularly suitable, CipherSaber would have used it.

CipherSaber-1 is a symmetric-key file encryption system. Messaging
takes place by attaching binary files to e-mail. Because CipherSaber
uses a stream cipher, an initialization vector must be used to prevent
the same cipher key from being used twice. In encrypted CipherSaber-1
files, a ten byte initialization vector precedes the coded data. For
decryption, the initialization vector is read from the file and
appended to the user key before the key setup step.

CipherSaber-1 can be implemented in 16 lines of QBasic (38 individual
Basic statements). The source code is short enough for tee-shirts and
coffee mugs. But there is no need to distribute source code at all.
CipherSaber can be passed on by oral tradition, if necessary.

Soapbox

The U.S. Congress is considering legislation that would ban the
domestic distribution of cryptographic products that do not provide
for immediate government access to the plaintext of messages. This
government access must be possible without the consent or even the
knowledge of the message{s sender or recipient. The stated intent is
to protect us from criminals and terrorists.

The simplicity of CipherSaber should prove once and for all that the
criminals and terrorists of this world will not be deprived of strong
cryptography simply because the distribution of unapproved products is
banned. They can get the necessary technology to make their own from
existing publications whenever they feel they need it.

Another goal of CipherSaber is to demonstrate that strong cryptography
cannot be banned without severe restrictions on freedom of speech.
Banning the sale of a complex computer program or even the
multi-volume printed edition of PGP source code may seem acceptable to
many people. Banning the simple instructions needed for CipherSaber
will require the starkest abridgment of the First Amendment.

Finally, CipherSaber can be a useful pedagogical tool, helping to
educate students by presenting them with a real-world programming
problem that has both technical and ethical dimensions. Teachers of
computer science and authors of books on programming should consider
including CipherSaber as an exercise in their courses and texts.

CipherSaber in some sense parallels the time honored doctrine of jury
nullification, where jurors simply refuse to convict persons of
violating laws that the jurors determine are unreasonable or unjust.
Similarly technologists may take lawful steps as individuals to
prevent their work from being used to build a totalitarian
infrastructure. It is not that the present U.S. Government is evil --
it may well be the most benign government in history. But once the
technology for totalitarian control is in place, this or any
government will inexorably use it more and more. And that technology
is coming together with alarming rapidity. George Orwell{s novel 1984
is not science fiction, it is just one more high tech product plan
that missed its original delivery date.

So what is CipherSaber?

CipherSaber-1 is a  simple use of existing technology:

1. The encryption algorithm is RC4 as published in the beginning of
Chapter 17 of Applied Cryptography, Second Edition, by Bruce Schneier,
 John Wiley & Sons, New York, 1996. RC4 is on page 397 in the English
edition, ISBN 0-471-11709-9.

2. Each encrypted file consists of a ten byte initialization vector
followed by the cipher text.
A new random ten byte initialization vector should be created each
time encryption is performed.

3. The cipher key, the array K(i) in Schneier's notation, consists of
the user key, in the form of an Ascii text string, followed by the
initialization vector.

The above is all a programmer needs to know in order to write a
program that can encipher and decipher CipherSaber-1 files.

Explanation of CipherSaber-1 features

The user key is a text string, rather than a hex value, because humans
are more likely to be able to memorize a text string with sufficient
entropy. To leave room for the initialization vector, the length of
the user key must be less than 246 bytes. A user key with a minimum of
15 random letters or 6 short words selected at random from a
dictionary should be used for medium security (70 bit entropy).  For
higher security use 20 random letters or seven random words. (90 bit
entropy).

Any unique values can be used for initialization vector, but use of
random values makes encrypted files indistinguishable from random
noise. Note that the initialization vector is not kept secret. The
random number generation used to make the initialization vector does
not have to be particularly strong. The "rand" functions in most
programming environments will suffice for a moderate number of
messages, provided the function is seeded in some non-deterministic
way, such as using the system clock.

For file encryption, a user need only memorize one key or passphrase.
For messaging, users need to exchange pairs of keys through some
secure means, most likely in person. Maintaining a list of
correspondent{s keys or passphrases in a master file, preferably
encrypted, is less convenient than public key encryption. But it may
be all that is left in a few years if PGP key servers are banned.

It may even be possible to teach a manual version of the
Diffie-Hellman key exchange, perhaps using large number calculators
(easily built in Java 1.1). The D-H procedure need be carried out just
once per pair of correspondents, since CipherSaber eliminates the need
to exchange keys for every message.

Users can, of course, add features of their own to CipherSaber
programs. For example a secure diary system that stored files in
CipherSaber would be easy to write in Java or Visual Basic. However it
is important to keep CipherSaber itself simple so everyone can write a
program that will read and write CipherSaber files.

CipherSaber programs can be easily written in almost any programming
language. The Basic language, which used to come with all DOS based
computers, is suitable. It can still be found on the Windows {95
CD-ROM in the OTHER\OLDMSDOS directory. Just copy QBASIC.EXE and
QBASIC.HLP to your hard drive{s DOS directory and you can start
programming. Macintosh users can download the free Chipmunk Basic
interpreter from the Internet. Begin by writing a program that can
copy binary files byte by byte and then test it thoroughly before you
add the encryption algorithm.

Become a CipherKnight

To popularize CipherSaber, a "gif" file, encrypted using CipherSaber,
has been posted on the Internet at
http://ciphersaber.gurus.com/cknight.cs1 This file, when decoded, can
be printed as a CipherKnight wall certificate. The certificate may be
displayed by persons who met certain criteria, including writing the
program that decrypted the certificates. Here are the
honor-system-enforced rules:

CipherKnight requirements

1. Write you own CipherSaber program.
2. Write a letter to your political representative expressing your
opinion (whatever it may be) of the proposed ban on the distribution
of strong cryptography within the United States.
3. Download and install PGP,  generate a key pair and post it to a
public key server.
4. Use a CipherSaber to send an secret message to another person.
5. Decrypt and print the CipherSaber wall certificate using the
CipherSaber program you wrote yourself. The key is: "ThomasJefferson"

Any of the eligibility requirements above is waved if it illegal in
the applicant's local jurisdiction or if the applicant reasonably
believes carrying it out would place him or her in danger.

Test Files

The following files are provided on the CipherSaber web site,
http://ciphersaber.gurus.com, to help you check your work.

cstest1.cs1
This is a short text file encrypted with "asdfg" as the user key. Here
are the contents of cstest1.cs1 in hex, in case you cannot download
the file for some reason:
6f 6d 0b ab f3 aa 67 19 03 15 30 ed b6 77 ca 74 e0 08 9d d0
e7 b8 85 43 56 bb 14 48 e3 7c db ef e7 f3 a8 4f 4f 5f b3 fd

cstest2.cs1
This text file was CipherSaber-1 encrypted with the key
"SecretMessageforCongress" Remember that keys are case sensitive.

cknight.cs1
This file is encrypted with the key "ThomasJefferson" It contains your
CipherKnight wall certificate as a .gif file.

chalng.cs1
chalng.cs1 is a text file encrypted with CipherSaber-1 and a secret
key. A reward of $100 will be paid to anyone who can decipher this
file.

Spread the Word

"It is the common fate of the indolent to see their rights become prey
to the active. The condition upon which God hath given liberty to man
is eternal vigilance."
John Philpot Curran, 1790

Even if the proposed ban on strong cryptography does not become law
this year, it is important that CipherSaber be distributed as widely
as possible throughout North America. Please help in any legal way you
can.


Arnold G. Reinhold
Cambridge, Massachusetts
[email protected]
http://ciphersaber.gurus.com
September 23, 1997

- ------------------------------------------
Ascii key+  ||  08d0a5d961603380e2949d682c
10 Byte IV  ||  bfe8da5c1dec3aba9725d4f689
Ron's No.4  ||  40761763d4d38935e8bd8a44bf
All u need ==== 4656a7bd7f9ae5d082a30cdfa7
CipherSaber ||  f21a918d29c5917956d0468eaf
- ------------------------------------------

Legal Notice

CipherSaber programs may be subject to export controls in the United
States, and many other countries and may be illegal altogether in some
countries. Persons within the United States should not give copies of
CipherSaber programs to foreign nationals, except for Canadian
citizens, without a license. Persons traveling to other countries
should familiarize themselves with local regulations. Consult a lawyer
if you need legal advice.

See the CipherSaber web site http://ciphersaber.gurus.com for
additional notices.

-----BEGIN PGP SIGNATURE-----
Version: PGP for Personal Privacy 5.0
Charset: noconv

iQCVAwUBNClrG2truC2sMYShAQE6awQAsejPMAW+qYUZf7JXKXoL1XZl7Ebp7VPN
31yhKDmXFd8Ka9bss+HDwLSvMynigs/JmxzbGfVTc+Z1y5BqaqTqGcLcjHeEBnwb
IVzLg9MsPs1MNytFpbay7m7ZKdGgbN4hIhM6kMF959Wk8oFeGfEDGWaC1/2GEJKt
KHjU43k/A44=
=bIlj
-----END PGP SIGNATURE-----