System and method for protecting computer software from a white box attack
First Claim
1. A method of modifying software algorithms to foil tracing and other static, dynamic, and statistical attacks comprising the steps of:
- encoding said software algorithm; and
widely diffusing sites of information transfer and/or combination and/or loss.
1 Assignment
0 Petitions
Accused Products
Abstract
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.
-
Citations
101 Claims
-
1. A method of modifying software algorithms to foil tracing and other static, dynamic, and statistical attacks comprising the steps of:
-
encoding said software algorithm; and
widely diffusing sites of information transfer and/or combination and/or loss. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 77, 89, 90, 91, 92, 93, 94)
-
-
35. A method of protecting computer software comprising the steps of:
-
identifying functions and transforms substantive to the targeted software program;
generating new functions and transforms which alter the processing activity visible to the attacker; and
replacing those identified functions and transforms with the new functions and transforms in the software program. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 74, 84, 85, 86, 87, 88)
-
-
66. A method of obscuring comprising the steps of:
-
for a given transform;
determining the new, desired output values corresponding to certain input values; and
defining an encoded transformation which provides said new, desired output values corresponding to certain input values; and
replacing said given transform in said software, with said encoded transform.
-
-
75. A method of obscuring computer software comprising the step of:
concatenating functions in said computer software with one another.
-
76. A method of obscuring computer software comprising the step of:
split-path encoding of functions in said computer software.
-
78. A method of obscuring computer software comprising the step of:
output splitting of functions in said computer software.
-
79. A method of obscuring computer software comprising the step of:
replacing functions in said computer software with substitution boxes.
-
80. A method of obscuring computer software comprising the step of:
replacing functions in said computer software with networks of substitution boxes.
-
81. A method comprising:
-
adding redundant transforms into the data path of said software program; and
interchanging definitions between added matrices and existing matrices.
-
-
82. A method of obfuscating software comprising:
-
generating a random function;
composing a random function with an existing function; and
composing a subsequently applied function with an inverse of said random function.
-
-
83. A method of obfuscating software comprising:
-
generating a random matrix;
right multiplying said random matrix by an existing matrix; and
right multiplying a subsequently applied matrix by an inverse of said random matrix.
-
-
95. A method of protecting computer software comprising the steps of:
replacing linear transformations in said computer software, with non-linear transformations, making reduction very difficult.
-
96. A method of protecting computer software comprising the steps of:
reducing visible processing activity, by replacing transforms with new transforms that eliminate data.
-
97. A method of protecting computer software comprising the steps of:
reducing visible processing activity, by replacing transforms with new transforms that eliminate processing steps.
-
98. A method of protecting computer software comprising the steps of:
laying a software algorithm over a Banyan network of mixing or processing nodes.
-
99. A method of protecting computer software comprising the steps of:
generating new, spurious, processing activity, by concatenating random transforms to real transforms, introducing processing activity completely unrelated to the original data.
-
100. A method of protecting computer software comprising the steps of:
generating new, spurious, processing activity, by performing encodings that introduce processing activity completely unrelated to the original data.
-
101. A method of protecting computer software comprising the steps of:
effectively making the input and output unknown to the attacker by prepending and appending random or pseudo-random ciphers.
Specification