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

Dogwash (sorry if this isn't the proper procedure...



for posting anouncements...but...
                         ********************************
                         *Post-Preliminary Announcement:*
                         ********************************
 
 Inspiration:  Dogwash was inspired by (some might say stolen from) 
               Bruce Schneier's Blowfish.
 
     DogWash:  A 128 bit block encryption algorithm/fiestal cipher,
               product encryption algorithm....
 
      Rounds:  The number of rounds can be defined at runtime.  
               The range for the number of rounds is from 0 to 6140.  
               The speed of the algorithm is correlated to the number 
               of rounds used, with 16 rounds being reasonably fast.
 
   Keylength:  The maximum keylength is determined by the number 
               of rounds.  For rounds=0, the maximum keylength
               is 16 bytes, or 128 bits.  For rounds=6140, the
               maximum keylength is a ridiculous 49136 bytes, 
               or 393088 bits long.  For a standard 16 rounds,
               the maximum keylength is 144 bytes, or 1152 bits.
 
  Subkeydata:  64k bytes of high entropy (7.95 bits/char) subkey
               data are included in a header file.  The subkey
               data is mutated with the key, and the result is
               used for encryption/decryption.  Note that the 
               actual amount of subkey data used is a function 
               of the number of rounds requested.
 
               The subkey data is not fixed and may be changed
               so long as your correspondent is using the same
               subkey data.  (Note:  subkey data is later
               mutated with the session key.  I only point out
               that the subkey data may be changed for those
               who might want to do that, for whatever reason.)
 
  Sourcecode:  The program is written in c++.  Currently, it
               requires a compilier that allows a 64 bit unsigned
               integer addition, %(1<<63).  The use of destructors 
               helps ensure that mutated subkey data is automatically 
               destroyed after an encryption or decryption session.  
               However, other risks exist, such as memory being 
               swapped to disk, or the final programmer forgetting
               to protect his/her key.  It should be very easy to
               convert it to standard C.
 
 Description:  A PostScript file containing block diagrams and
               a well written (well, probably better than this)
               description may become available within the next 
               few months.
 
    Security:  I believe that DogWash is practically uncrackable,
               but I haven't the credentials to make such a 
               pronouncement.  (The only code I have cracked is
               the Sunday paper's Cryptogram.)  But, unlike blowfish,
               this is not a fast encryption algorithm.