Implementing portable content protection to secure secrets
AssigneeIntel Corporation
InventorGary L. Graunke
Life of this patent
Estimating the term…
Abstract
A source-level compiler may randomly select compilation conventions to implement portable content protection, securing the secrets embedded in a program by shuffling associated data. The program may be developed using a source language that is applicative on the associated data. To obscure the embedded secrets, in one embodiment, pre-compiler software may be deployed for compiling the program in a random-execution-order based on a random seed indication that randomly selects compilation conventions and a shuffling algorithm that moves the associated data across the program during execution.
Claims14
A method executed by a processor based system comprising:
- compiling a program in a random-execution-order to conceal a secret;
- wherein compiling the program in the random-execution-order includes shuffling data across the program during compiling;
- using a source language to identify one or more memory allocation and parallel stream objects of the program;
- and
- enabling said random-execution-order of the program based on said one or more memory allocation and parallel stream objects;
- using an applicative source language in a single-assignment semantics dialect to obtain the source code for the program;
- introducing reference counting for heap-allocated objects to assist with real-time memory recycling for the single-assignment semantics dialect;
- and
- executing the program in the random-execution-order to preserve upon recompilation the single-assignment semantics dialect of the applicative source language.
An article comprising a medium storing instructions that,
- when executed by a processor-based system result in:
- compiling a program in a random-execution-order to conceal a secret;
- wherein compiling the program in the random-execution-order includes shuffling data across the program during execution;
- using a source language to identify one or more memory allocation and parallel stream objects of the program;
- and
- enabling said random-execution-order of the program based on said one or more memory allocation and parallel stream objects;
- using an applicative source language in a single-assignment semantics dialect to obtain the source code for the program;
- introducing reference counting for heap-allocated objects to assist with real-time memory recycling for the single-assignment semantics dialect;
- and
- executing the program in the random-execution-order to preserve upon recompilation the single-assignment semantics dialect of the applicative source language.
Dependencies are inferred from the claim text.