325 lines
12 KiB
Plaintext
325 lines
12 KiB
Plaintext
|
|
|
|
|
|
|
|
|
|
|
|
F A S T E N C R Y P T
|
|
|
|
Version 1.2
|
|
Copyright (c) 1994 by Michael J. Harris
|
|
|
|
|
|
|
|
|
|
OVERVIEW:
|
|
|
|
Fast Encrypt is a state-of-the-art Encryption/Decryption
|
|
program. It is orders of magnitude more secure than DES,
|
|
very fast, can use any 16 byte string as a key, and is very
|
|
simple to use. It was written entirely in 386 Assembler
|
|
(for speed) and makes full use of the 386's capabilities.
|
|
It won't run on XT/PC/AT (8088/8086/80286) systems.
|
|
|
|
|
|
SHAREWARE NOTICE:
|
|
|
|
Fast Encrypt is SHAREWARE: This means that if you want to
|
|
continue to use product, you are expected to support the
|
|
author for all his time spent developing/writing/debugging
|
|
the program. To register the program, simply print the
|
|
file ORDER.FRM and send it in, or just write out the
|
|
information by hand if you don't have a printer. Fast
|
|
Encrypt is not "cripple-ware". There are no features
|
|
disabled and the program will not "self-destruct" after a
|
|
certain period of time. I ask that you register it after
|
|
14 days of use. This should be more than enough time to
|
|
test it and see it's capabilities. Registration is only
|
|
$15. Site licenses are also available; write for
|
|
information.
|
|
|
|
|
|
|
|
HOW TO USE IT
|
|
|
|
|
|
The Key:
|
|
~~~ ~~~
|
|
|
|
When you first run Fast Encrypt you will be asked for a 16
|
|
character key. You then must enter 16 characters of your
|
|
choice. You may use symbols or any other ASCII character,
|
|
remember that it is CASE SENSITIVE. DO NOT FORGET YOUR
|
|
KEY! You will not be able to unencrypt your file without
|
|
the key. There are no "backdoors" or "magic-keys", so if
|
|
you to forget your key I won't be able to help you.
|
|
|
|
Examples of valid keys are:
|
|
|
|
BarbersAre Neat!
|
|
$#)'[p0p9ovm,d.a
|
|
|
|
Anything will work, but remember you must type EXACTLY the
|
|
same thing when you want to decrypt. That means:
|
|
|
|
BarbersAre Neat! and
|
|
Barbersare neat! are *NOT* the same
|
|
|
|
|
|
Tips for key selection:
|
|
~~~~ ~~~ ~~~ ~~~~~~~~~
|
|
|
|
Use keys that are totally unrelated to anything (don't use
|
|
phone numbers, Social Securtity number, etc). Include both
|
|
upper AND lower case letters. You should also have at
|
|
least one symbol in your key (!@#$%^&*)_=+-/.,;' and the
|
|
like. Using weird characters increases the difficulty of a
|
|
brute force cracking your key since more character
|
|
combinations have to be tried instead of just the alphabet.
|
|
|
|
|
|
The Substitution Boxes:
|
|
~~~ ~~~~~~~~~~~~ ~~~~~
|
|
|
|
After you type in your key, it will fill the substitution
|
|
boxes. This may take several seconds (on slower 386s).
|
|
Substitution is one of the main ways that Fast Encrypt
|
|
encrypts your data (see below for a more technical
|
|
explanation). After it fills the substitution boxes it
|
|
will ask you if you want to save the substitution boxes to
|
|
disk. Saving the substitution boxes to disk will allow you
|
|
to encrypt/decrypt as much as you want with the same Key,
|
|
without having to build the substitution boxes every time
|
|
you run the program (it can save LOTS of time). HOWEVER -
|
|
anyone that has access to the substitution boxes saved to
|
|
your disk can decrypt your data. So never save the
|
|
substitution box on a computer or diskette that somebody
|
|
can get access to. Fast Encrypt will automatically find
|
|
your saved substitution boxes and ask you if you want to
|
|
use them. If you answer no you will be prompted to enter a
|
|
new key. The substitution boxes are stored on disk in a
|
|
file called: EXTERNAL.KEY
|
|
|
|
|
|
Encrypt/Decrypt:
|
|
~~~~~~~~~~~~~~~
|
|
|
|
After the subsitution boxes have been created/loaded from
|
|
disk, it will ask you if you want to Encrypt or Decrypt.
|
|
Encrypt scrambles up your files; Decrypt unscrambles them.
|
|
|
|
|
|
The Files:
|
|
~~~ ~~~~~
|
|
|
|
You must then enter two file names. The first one is the
|
|
file that will be processed (encrypted or decrypted) the
|
|
second file is where the output will be placed.
|
|
|
|
Example:
|
|
|
|
Encrypt or Decrypt E/D: e
|
|
Enter the name of the file: WHATEVER.XXX
|
|
|
|
Enter the name of the output file; it
|
|
MUST be different than the input file: WHATEVER.CPT
|
|
|
|
|
|
In the above example, WHATEVER.XXX is being encrypted, and
|
|
the encrypted version of it is placed in WHATEVER.CPT. Any
|
|
valid DOS names/extentions are valid. Use of paths is also
|
|
OK, so C:\DOS\WHATEVER.XXX is allowed for either input or
|
|
output.
|
|
|
|
Encryption/Decryption:
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
After all of the above is entered, the data is encrypted or
|
|
decrypted. This goes very quickly (except for really big
|
|
files, of course). You may find that your encrypted files
|
|
are slightly larger than the originals; they are never more
|
|
than 16 bytes larger, so it shouldn't matter much. When
|
|
the files are decrypted the files return to their original
|
|
size (the reason why is discussed in the technical
|
|
section at the end of the documentation).
|
|
|
|
|
|
|
|
COMMAND LINE SUPPORT:
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
If desired, Fast Encrypt can be run completely from the
|
|
command line. The structure of the command line is very
|
|
simple. The first thing entered on the command line is the
|
|
Encrypt/Decrypt selector. This also indicates whether to
|
|
process the files with a key on the command line, or to
|
|
load EXTERNAL.KEY. If a capital letter ( 'E' or 'D' ) is
|
|
entered, a key will be loaded from the command line. If a
|
|
lower case letter ( 'e' or 'd' ) is entered, EXTERNAL.KEY
|
|
will be used.
|
|
|
|
The next information entered is the input file. This is the
|
|
file that will be processed.
|
|
|
|
After that is the output file. This is where the output
|
|
will be put.
|
|
|
|
If command line key was selected, then the key is the final
|
|
thing entered on the command line. If MORE than 16
|
|
characters are entered, only the first 16 will be used. If
|
|
LESS than 16 characters are entered then the unused spaces
|
|
will be assigned a zero value.
|
|
|
|
|
|
EXAMPLES:
|
|
|
|
fe E whatever.in whatever.out HereIsMyKeyOK:-)
|
|
|
|
Encrypts WHATEVER.IN and places the out put in WHATEVER.OUT
|
|
Uses HereIsMyKeyOK:-) as the key.
|
|
|
|
fe d myfile.in myfile.out
|
|
|
|
Decrypt MYFILE.IN and places the decrypted copy in
|
|
MYFILE.OUT, uses the external file EXTERNAL.KEY as the key.
|
|
|
|
fe D c:\dos\command.com c:\whatever\it.out ThisIsTheBestKey?
|
|
|
|
Decrypts c:\dos\command.com and places the unencrypted file
|
|
in c:\whatever\it.out using ThisIsTheBestKey? as the key.
|
|
|
|
|
|
|
|
CONTACTING THE AUTHOR:
|
|
|
|
|
|
If you still have problems getting the program to work or
|
|
have suggestions/comments, you may feel free to contact the
|
|
author (even if you haven't registered yet). There are no
|
|
known bugs in Fast Encrypt, but I'd be very greatfull if
|
|
you would let me know if you do find one. E-Mail/U.S.
|
|
Mail is the perfered method of contact, however phone
|
|
service is provided for registered users. Be sure to
|
|
include ALL necessary details in any mail sent to me. Fast
|
|
Encrypt has been tested under DOS, OS/2 2.0, OS/2 2.1 (in
|
|
fact, it was developed mostly under OS/2-DOS), OS/2 HPFS
|
|
drives, and on several 386 and 486 systems running various
|
|
DOS and OS/2 configurations. No problems were encountered.
|
|
|
|
|
|
INTERNET: mharris@clovis.felton.ca.us
|
|
|
|
U.S. Mail: Michael Harris
|
|
125 Blueberry Dr.
|
|
Scotts Valley, CA 95066
|
|
|
|
|
|
TECHNICAL INFO:
|
|
|
|
The Encryption Method:
|
|
~~~ ~~~~~~~~~~ ~~~~~~
|
|
|
|
The method that Fast Encrypt uses to encrypt data is
|
|
basically a much improved version of DES. While there is
|
|
nothing known to be wrong with the DES algorithm itself,
|
|
many (including the author) feel that the key size that DES
|
|
uses is too small to adequetly protect data. The key size
|
|
that Fast Encrypt uses is 128 bits. (16 characters at 8
|
|
bits each make up the 128 bits). The total number of
|
|
possible keys if some massive number with over 20 digits. I
|
|
haven't taken the time to calculate it exactly.
|
|
|
|
|
|
There are two methods that Fast Encrypt uses to encrypt:
|
|
Substitution and Permutation. Substitution does what the
|
|
name implies: it takes a group of bytes out and places a
|
|
different group of bytes in its place. You can think of it
|
|
like one of those puzzles where each letter has been
|
|
switched with a different letter and you have to figure out
|
|
what it says. This is essentially what Fast Encrypt is
|
|
doing, but on a much larger scale. It is substituting 16
|
|
byte blocks (2^128 (2 to the 128th power) possible values)
|
|
where in the puzzle example there are only 26 letters in
|
|
the alphabet. Fast Encrypt goes through this substitution
|
|
process 10 times, each time with a different substitution
|
|
box. The substitution boxes are functionally dependant on
|
|
the key. In between each substitution is a permutation.
|
|
The permutations switch the order in which the bits occur.
|
|
The combination of these makes it virtually impossible to
|
|
break the encryption even with multiple arrays of the
|
|
fastest supercomputers working for literally hundreds (if
|
|
not thousands) of years.
|
|
|
|
|
|
Of course, there is no practical encryption program that is
|
|
100% secure (Fast-Encrypt isn't 100% secure, and doesn't
|
|
claim to be. No other methods can truthfully claim to be
|
|
totally safe either, because they aren't). The only
|
|
encryption method that can be mathmatically proven
|
|
un-crackable is the "one-time-tape" method. However, this
|
|
method requires that the key is longer than what is being
|
|
encrypted and the key must contain totally random numbers
|
|
and the key must never be repeated. For example, if you
|
|
wanted to encrypt a 1 megabyte file, you would have to have
|
|
a key that was greater than 1 megabyte in size. This makes
|
|
it totally useless for daily use.
|
|
|
|
|
|
Why files grow slightly when encrypted:
|
|
~~~ ~~~~~ ~~~~ ~~~~~~~~ ~~~~ ~~~~~~~~~
|
|
|
|
As stated above, Fast Encrypt works on blocks of 16 bytes.
|
|
This means that it is impossible for it to encrypt a group
|
|
of bytes that is smaller than 16 bytes. However, not all
|
|
files in this world will divide evenly into 16 byte blocks.
|
|
This means that Fast Encrypt must "fill in" the needed
|
|
bytes before encrypting the last block. It also must save
|
|
a byte that indicates how many bytes in the last block are
|
|
"original" ones so that when it decrypts the file it can
|
|
return it to the correct size.
|
|
|
|
|
|
About the program:
|
|
~~~~~ ~~~ ~~~~~~~
|
|
|
|
Fast Encrypt was written entirely in 386 assembler. This
|
|
was done because most good encryption programs are
|
|
painfully slow. It makes full use of the 386's 32-bit
|
|
processing abilities. In a lot of areas the programming
|
|
was easier and the program ran much faster because of the
|
|
larger registers. It was built with Borland(tm) Turbo
|
|
Assembler Version 2.0 on a 386-40 with 8 megs of RAM
|
|
running OS/2 version 2.1 (HPFS on one drive, FAT on the
|
|
other one. Fast Encrypt runs fine on both drives).
|
|
|
|
|
|
DISCLAIMER:
|
|
|
|
Use of this software and/or documentation for any purpose
|
|
whatsoever constitutes your unqualified acceptance of the
|
|
following statements.
|
|
|
|
No encryption program is totally secure. The author makes
|
|
no warranty that this software will protect your data in
|
|
any way whatsoever.
|
|
|
|
The author makes no warranty that this
|
|
software/documentation will be error free. The author
|
|
disclaims any warranties, either express or implied,
|
|
including but not limited to any implied warranty of
|
|
merchantability or fitness for any particular purpose.
|
|
|
|
The user agrees to take full responsibility for any
|
|
selection of and any use whatsoever made of the software
|
|
and documentation.
|
|
|
|
In no event will the author be liable for any damages
|
|
whatsoever (including without limitation damages for loss
|
|
of business profits, business interruption, loss of
|
|
business information or the like) arising out of the use,
|
|
interruption in the use of, or inability to use this
|
|
software, even if the author has been advised of any
|
|
possibility or likelihood of such damages.
|
|
|
|
END OF DOCUMENTATION Feb. 4, 1994
|