*** Title: DNA Method: Expand most Feistel Based Ciphers with no impact on Speed. *** Objective: Make a quick and instructive presentation of a method invented in the beginning of the year, and expected to be public only after the BLWCBC freeware program would be prepared to accept the resultant Blowfish+ method (block=512 bits, 128 rounds, Standard Blowfish Speed). Since then, several other researchers have used similar methods to expand other algorithms less powerful then Blowfish. I must reveal the diagrams created back then, since the new BLWCBC is delayed, and give credit to all others that independently have been perceptive enough to recreate it, even if in a different scope, and with or without the notion of the impact of such simple method on an entire class of ciphers and the consequences on security. *** Author: Dutra de Lacerda, *** Summary: This paper describes a method to expand Feistel Networks from any size to any chosen one, limited only by speed concerns to Disk Buffer size. *** Properties: It offers, not only the usual caracteristics of wide block ciphers, but also an important cascade effect on each block. This means that instead of N loop encryptations on a block, we achieve N*Segments encryptations The actual time spent is similar to the original algorithm resulting in a stronger cipher with practically no extra work. Note: Since even week cipher get much stronger with the DNA process the analysis of the cipher MUST be made without envolvement of the DNA method to obtain a accurate evaluation of the basic cipher being evaluated. *** Limitations: This method is limited to Feistel Ciphers of the type Round(i) = F(halfblock) XOR (Values) where F function may be Irreversible. The security achieved is dependent of the parent cipher method. *** Definitions: Atom = Each basic Block, usually a Double Word. Cluster = The basic agrupation of Atoms, usually left and Right Atoms (usually called Block). Buffer = Work Block of Clusters. This means The DNA Method: This method is based on the geometry of the crypting process that reminds a DNA molecule. It may be modified to maintain compatibility with present ciphers from witch they descent. The modification is simple but is less elegant. Using Blowfish as the perfect example: Blowfish processes repeatedly data in Clusters of 2 32bit Words. Blowfish+ uses 2**K Clusters of 32bit Words 2 Rounds Encriptation Diagram Standard Blowfish 4 Atoms Cluster Blowfish+ left right 0 1 2 3 | | | | | | 0-X | 0-X 1-X 2-X 3-X |-------->| | | | | | X-1 Ú----- | ------- | ------- | ------- | ------¿ |<--------| À--->--| | | |--> ---Ù 2-X | | | | | ...|.........|... |-------->| | | | | | | | | |-------->| | |-------->| | | X-3 | | | | |<--------| | | |-------->| 4-X | | | | | ...|.........|... .....|.........|.........|.........|...... | X-5 | | | | | | 4-X 5-X 6-X 7-X | | | | Ú----- | ------- | ------- | ------- | ------¿ À--->--| | | |--> ---Ù | | | | |-------->| | | | | | | | |-------->| | | | | | | | |-------->| | | | | .....|.........|.........|.........|...... | | | | 8-X 9-X 10-X 11-X | | | | 2 Rounds Decryptation Diagram Standard Blowfish 4 Atoms Cluster Blowfish+ (n-1) left right 0 1 2 3 | | | | | | | X-5 8-X 9-X 10-X 11-X |<--------| | | | | 4-X | |-------->| | | |-------->| | | | | | X-3 | |-------->| | ...|.........|... | | | | | | | | |-------->| |<--------| | | | | 2-X | Ú----- | ------- | ------- | ------- | ------¿ |-------->| À--->--| | | |--> ---Ù | X-1 | | | | ...|.........|... .....|.........|.........|.........|...... 0-X | | | | | | | 4-X 5-X 6-X 7-X | | | | |-------->| | | | | | | | |-------->| | | | | | | | |-------->| | | | | Ú----- | ------- | ------- | ------- | ------¿ À--->--| | | |--> ---Ù | | | | .....|.........|.........|.........|...... | | | | 0-X 1-X 2-X 3-X | | | | NOTE - Decryption starts with Last Cluster, however each cluster itself decrypts by the same order used to encrypt. *** Blowfish+ Code: Will presented soon with a functional program. *** Conclusions: | Standard | Same Rounds | | Blowfish | Blowfish+ (Example) | ----------------------+----------------+-------------------------| Atoms per Cluster | 2 Doubles | N ( 16 ) | Bits per Cluster | 64 bits | N*32 ( 512 ) | Rounds per Cluster | 8 Rounds | 8 Rounds ( 8 ) | Each Word WorkLoad | 16 Rounds | N*16 ( 256 ) | Speed | ? * 16 / 1 | ? * 256 / 16 | | | | As we can see, we have an increase on the work done on every Atom resulting in extra dispersion of data allowing us to safely reduce the number of Rounds for increased speed. How much we can reduce may be function of the chosen Cluster size. Only time will tell. This method may be used with other methods, and also give birth to other Multi-Atom ciphers. Compatibility with Blowfish is just a matter of start encrypting from cell 0 instead of n-1. For decrypting start with 1 instead of zero... Of course it is somewhat less elegant but compatibility is achieved if N=2 ( Where N is the Number of Atoms per Cluster) *** Final Note: I'm sorry to to give a proper presentation of the method, but hope the copy of my earlier diagrams can be more easily understood than code itself. This has been a bad year for most of us... Hope this premature presentation of a work that is always in my mind be more useful than the desired one after my Program had been completely revised and adapted. Thanks go to Leslie 'Mack' McBride for is waking me up, or i would still be, silently and slowly, seeking code perfection on my worktable. Best regards to all, Dutra de Lacerda Email: dulac@ip.pt