Patent ID: 7397916

Claim:
A method of modifying a software algorithm to foil tracing and other static, dynamic, and statistical attacks comprising the steps of: (a) identifying a step in the software algorithm which comprises a simple function representable as a lookup table whereby the simple function is computable by a table lookup; (b) converting the simple function to a lookup table, whereby the lookup table, when indexed by an input to the simple function or by a bit-string concatenation of multiple inputs to the simple function, returns an element which is a corresponding output of the simple function or a bit-string concatenation of multiple outputs of the simple function; (c) replacing the lookup table by one of a new lookup table and a non-looping computation by computing the net final result of the functional composition of the identified simple function itself and one of, or both of, the following: (i) a randomly chosen, nonlinear bijection on the input or the concatenation of multiple inputs of the identified simple function, whereby each input is subjected to a single bijective encoding; and, (ii) a randomly chosen, nonlinear bijection on the output or the concatenation of multiple outputs of the identified simple function, whereby each output subjected to a single bijective encoding; whereby the new lookup table or non-looping computation employs input encoding (i), and/or output encoding (ii), and the original computation no longer exists as a lookup table or non-looping computation and instead, only a modified computation computing a related function employing encoded input(s) and/or encoded output(s) exists, the identified simple function thereby being modified; and, (d) adjusting a context of the modified simple function whereby the context comprises computer code providing input(s) to the simple function and accepting output(s) of the simple function, and the modified simple function is also modified to provide input(s) with the same encoding(s) as employed for input(s) in the input- and/or output-encoded lookup table or non-looping computation of (c) above, and/or to accept a output(s) with the same encoding(s) as employed for output(s) in the input- and/or output-encoded lookup table or non-looping computation of (c) above.