Existing encryption systems are designed to protect secret keys or other
data under a "black box attack," where the attacker may examine the
algorithm, and various inputs and outputs, but has no visibility into the
execution of the algotitm itself. However, it has been shown that the
black box model is generally unrealistic, and that attack efficiency
rises dramatically if the attacker can observe even minor aspects of the
algorithm's execution. The invention protects software from a "white-box
attack", where the attacker has total visibility into software
implementation and execution. In general, this is done by encoding the
software and widely diffusing sites of information transfer and/or
combination and/or loss. Other embodiments of the invention include: the
introduction of lossy subcomponents, processing inputs and outputs with
random cryptographic functions, and representing algorithmic steps or
components as tables, which permits encoding to be represented with
arbitrary nonlinear bijections.