Back

More on the Proposed Encryption Algorithm

Rowboat Encryption Chip
http://www.owlnet.rice.edu:80/~pickettc/elec422/morealg.html
Frank Alejano
John Cusey
Chris Pickett

I. Purpose

The general algorithmic idea for our proposed chip was presented in a document titled "Description of Encryption Algorithm." This document present some of the gorry details of the algorithm. A general familiarity with the above-mentioned document will be assumed.


II. The Guts

A. The Key

The key will be 14 bits long. The user will enter a 16-bit key (one byte at a time), but every eighth bit will be ignored (it is possible that we will use the ignored bits for parity checking). Upon being entered, the key will be permuted so that the bits will now be in the following order: 15 7 14 6 13 5 12 4 11 3 10 2 9 1 (note the we start numbering the bits with 1; this is not following convention, but this is the method used in the Schneier book cited earlier upon which this is based). This is the base key that we will use to generate the functional keys used for the rounds of encryption.

To generate these functional keys, the base key is split in half and each half is left shifted by a number of bits that is determined by the round we are in: for the first round, each half is shifted left by 1 bit, by 1 in the second, by 2 in the third, by 2 in the fourth, by 2 in the fifth, by 2 in the sixth, by 2 in the seventh, and by 2 in the eighth. Shifting is cumulative; thus, by the end of the 8 rounds of encryption, we will have our original key again.

Once we have our shifted key for a particular round, we must choose 12 bits of it for use in that particular encryption. True-blue DES calls for this to be done by permutation, but the way they do this is not scalable to a 14-bit key, and is not essential in any case; therefore, we will not do the permutation but will rather say that bit 3 and bit 9 will be thrown out and all the other bits will be shifted accordingly.

The same procedure will be followed for the generation of the decryption keys; the only difference is that the decryption keys will be generated in reverse order -- that is, instead of shifting the key left, it will be shifted right, and the amounts by which it is shifted will be a mirror image of the amounts by which they were shifted for the generation of the encryption keys.

B. The Text

The text will be a 16-bit block. After the data has been entered, it will then be permuted into the following order: 15 9 3 13 7 1 11 5 16 10 4 14 8 2 12 6. This will be divided into a right half composed of the 8 leastsignificant bits and a left half composed of the 8 most significant bits. The right half will be expanded to a 12-bit number that looks like this: 8 1 2 2 3 4 4 5 6 6 7 8. This result will be XORed with the 12-bit key produced for each round of encryption as described above. The result of this operation, along with the the 12-bit key, will be fed into a 12-bit ALU which will subtract the former from the latter. The result of this operation will be XORed with the left half, and the result will be stored as the new right half for the next round of encryption. The old right half will become the new left half for the next round.

III. Initial Logic Diagram

Please see the block diagram that we turned in last week, an incomplete version of which is here .

September 19, 1995