ADAPTIVE MODEL INFORMATION FLOW ANALYSIS
Methods, systems, and apparatus, including computer programs encoded on computer storage media for performing information flow analysis on hardware designs to identify vulnerabilities. One of the methods includes performing an information flow tracking process by feeding a different value through a duplicate input of a duplicate module in a modified hardware design whenever a value is provided to an original module in the modified hardware design having a particular security label. The outputs of the duplicate module and the original module are evaluated using combination logic to determine whether the value can flow through the module.
1 . A computer-implemented method comprising:
receiving an initial hardware design having an original module with a plurality of original inputs for tracking a value through the initial hardware design;
generating a modified hardware design including:
adding a duplicate module for the original module, the duplicate module having a plurality of duplicate inputs corresponding respectively to the plurality of inputs of the original module, and
adding combination logic that combines one or more outputs of the original module with one or more outputs of the duplicate module to generate a final output;
performing an information flow tracking process including feeding a value through the modified hardware design, including providing a different value to a duplicate input whenever the value is provided to the module having a particular security label; and
determining whether the value can flow through the module based on the final output of the combination logic.
2 . The method of claim 1 , wherein the duplicate module performs the same internal function as the original module.
3 . The method of claim 1 , wherein the original module is a module that is not synthesizable in the hardware design.
4 . The method of claim 3 , wherein functionality of the original module in the hardware design is implemented by a software program.
5 . The method of claim 1 , wherein the combination logic comprises logic that performs an exclusive OR between a first output of the original module and a second output of the duplicate module.
6 . The method of claim 1 , wherein the combination logic performs a pairwise comparison between a outputs of the original module and outputs of the duplicate module.
7 . The method of claim 1 , wherein providing different values to the duplicate module when the duplicate inputs have a particular security label.
8 . The method of claim 1 , further comprising providing the original value to the duplicate input whenever the value does not have the particular security label.
9 . The method of claim 1 , further comprising:
determining that the value can flow through the module based on the final output of the combination logic; and
in response, generating a notification that the value can flow through the module.
10 . The method of claim 1 , further comprising automatically reporting a security violation in the initial hardware design.
11 . The method of claim 1 , wherein the security label is an information flow tracking label.
12 . The method of claim 1 , further comprising:
adding a second duplicate module for the original module, wherein performing the information flow tracking process includes providing a second different value to the second duplicate module.
13 . The method of claim 12 , wherein the duplicate module and the second duplicate module have different respective functions for generating the different values based on the value provided to the original module, and wherein the combination logic is configured to combine one or more outputs from the duplicate module and the second duplicate module.
14 . The method of claim 13 , wherein the combination logic is configured to combine outputs from one or more duplicate modules and the original module.
15 . The method of claim 1 , wherein providing the different value comprises providing an inversion of the value provided to the original module.
16 . The method of claim 1 , wherein performing the information flow tracking process comprises performing the information flow tracking process during a simulation process, a formal verification process, or a hardware emulation process.
17 . A system comprising: one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:
receiving an initial hardware design having an original module with a plurality of original inputs for tracking a value through the initial hardware design;
generating a modified hardware design including:
adding a duplicate module for the original module, the duplicate module having a plurality of duplicate inputs corresponding respectively to the plurality of inputs of the original module, and adding combination logic that combines one or more outputs of the original module with one or more outputs of the duplicate module to generate a final output;
performing an information flow tracking process including feeding a value through the modified hardware design, including providing a different value to a duplicate input whenever the value is provided to the module having a particular security label; and
determining whether the value can flow through the module based on the final output of the combination logic.
18 . The system of claim 17 , wherein the duplicate module performs the same internal function as the original module.
19 . The system of claim 17 , wherein the original module is a module that is not synthesizable in the hardware design.
20 . One or more non-transitory computer storage media encoded with computer program instructions that when executed by one or more computers cause the one or more computers to perform operations comprising:
receiving an initial hardware design having an original module with a plurality of original inputs for tracking a value through the initial hardware design;
generating a modified hardware design including:
adding a duplicate module for the original module, the duplicate module having a plurality of duplicate inputs corresponding respectively to the plurality of inputs of the original module, and
adding combination logic that combines one or more outputs of the original module with one or more outputs of the duplicate module to generate a final output;
performing an information flow tracking process including feeding a value through the modified hardware design, including providing a different value to a duplicate input whenever the value is provided to the module having a particular security label; and
determining whether the value can flow through the module based on the final output of the combination logic.