





                    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
