Patent ID: 6189095
Filing Date: 2001-02-13
Classification: H04L

Abstract:
A method of encrypting an input file comprising a plurality of blocks using a symmetric key block cipher by performing a modified Type-3 Feistel network process on each block of the input file, wherein the modified Type-3 Feistel network process comprises a Type-3 Feistel network process which is augmented to modify a block used as input to an expansion function, further comprising the steps of:dividing each input block from the input file into a set of input words of equal length, the set having a cardinality greater than 2; andperforming 3 or more transformation stages on each set of input words to transform the input words into output words, wherein each of the transformation stages comprises a plurality of rounds, further comprising the steps of:arithmetically combining a round-specific subkey for a current transformation round of the modified Type-3 Feistel network process with a selected output word from a next-prior transformation round of the modified Type-3 Feistel network process, or with a selected one of the input words for an initial transformation round, yielding an expansion box input word;invoking an expansion function using the expansion box input word as an input parameter, where the expansion function comprises a modified Type-1 unbalanced Feistel network process, wherein the modified Type-1 unbalanced Feistel network process comprises an unbalanced Type-1 Feistel network process which is modified to transform segments of the input parameter in a manner that is not limited to transforming a particular segment using only its next-prior segment, further comprising the steps of:expanding the input parameter using a plurality of simple transformations;dividing the expanded input parameter into a number of input segments of equal length, the number being greater than 2;performing 3 or more expansion function rounds on the input segments, where each expansion function round transforms a particular one of the input segments using a substitution-box (S-box) lookup result which is arithmetically combined with a segment value created by a next-prior expansion function round, or with one of the input segments for an initial expansion function round; andreturning an expansion box output value to the invoking modified Type-3 Feistel network process, where the expansion box output value results from performing the expansion function rounds;dividing the expansion box output value into a number of parts, where the number of parts is identical to the number of input segments created from the expanded input parameter and is 1 less than the cardinality of the set of input words;arithmetically combining each of the parts with a particular one of the input words for the initial transformation round, or with a particular one of the output words from a next-prior transformation round otherwise;in selected ones of the transformation rounds, applying a feedback operation to a remaining one of the input words which is not thus arithmetically combined, and leaving the remaining one unchanged in remaining transformation rounds, wherein the arithmetically combining and the selectively applying feedback or leaving unchanged yields the output words of the transformation round; andperforming a bitwise rotation on the output words after particular ones of the transformation rounds to further transform the output words.