CPC G06F 21/14 (2013.01) [G06F 21/64 (2013.01)] | 18 Claims |
1. A computerized method for securing a set of executable instructions by obfuscation, the method comprising:
receiving a set of non-obfuscated executable instructions corresponding to a program whose input comprises a value in the set {1 , . . . ,N};
using a functional encoding primitive comprising an encoding process, an opening process and a decoding process to compute obfuscated instructions by:
executing the encoding process of the functional encoding primitive to encode the executable instructions;
executing the opening process;
storing outputs of the encoding process and the opening process as a set of obfuscated instructions; and
storing the set of obfuscated executable instructions on a computerized storage device for subsequent execution, wherein the set of obfuscated executable instructions satisfy properties of:
functionality, whereby the set of obfuscated executable instructions and the set of non-obfuscated executable instructions compute the same function and have the same input-output behavior; and
security, whereby for any two sets of non-obfuscated executable instructions with the same input-output behavior of the set of non-obfuscated executable instructions, the corresponding set of obfuscated executable instructions cannot be distinguished by a computationally efficient process;
wherein the functional encoding primitive further comprises a commitment primitive and a sampler primitive;
the commitment primitive further comprises a commit process, an evaluation process, and an open process;
the sampler primitive further comprises an initialize process and a sample process;
commit, evaluation, and open processes of the commitment primitive use a learning with errors sample plus a committed value to generate an opening for an evaluated commitment smaller than the committed value; and
the initialization and sampling processes of the sampler primitive further comprise:
initializing by executing a commitment process on a key k for a pseudorandom function resulting in a commitment c; and
sampling by executing a commitment evaluation process to generate a pseudorandom learning with errors sample from the key k.
|