-
Notifications
You must be signed in to change notification settings - Fork 28
Structure
PROLEAD's structure consists of two directories.
- The
inc
folder contains all header files (.hpp
) encompassing the function declarations. - The
src
folder contains all source files (.cpp
) encompassing the function definitions.
All files related to the evaluation of hardware circuits are stored in the Hardware
subdirectories (inc/Hardware
and src/Hardware
) while
all files related to the evaluation of arm binaries are stored in the Software
subdirectories (inc/Software
and src/Software
).
The Util
subdirectory stores all files that declare and define generic functions used for hardware and software.
The PROLEAD file (src/PROLEAD.cpp
) defines the main function of PROLEAD.
The Definitions files (inc/Hardware/Definitions.hpp
and src/Hardware/Definitions.cpp
) define all structures of PROLEAD. We list all structures below:
OperationStruct - Defines one operation of the circuit.
CellTypeStruct - Defines the type of a hardware cell.
LibraryStruct - Defines the cell library.
CellStruct - Defines a hardware cell.
SignalStruct - Defines a signal.
CircuitStruct - Defines the full hardware circuit.
SettingsStruct - Defines the evaluation settings.
ProbesStruct - Defines a standard probe.
GlitchExtendedProbesStruct - Defines a glitch extension.
SharedDataStruct - Defines the shared data.
SimulationStruct - Defines the simulation parameters.
TableEntryStruct - Defines a distribution in form of a contingency table.
ProbePositionStruct - Defines a probe with timing.
ProbingSetStruct - Defines a probing set.
UniqueProbeStruct - Defines a unique probe for the compact mode.
TestStruct - Defines the test parameters.
The Execute files (inc/Hardware/Execute.hpp
and src/Hardware/Execute.cpp
) define the execution of PROLEAD based on a given set of command line parameters. These files implement the following functions:
Executes PROLEAD based on a given set of command line parameters.
CommandLineParameterStruct& Parameter - The command line parameters.
(none)
The Prepare files (inc/Hardware/Prepare.hpp
and src/Hardware/Prepare.cpp
) define all functions for preparation before the actual evaluation takes place. These files implement the following functions:
Prepares everything for the evaluation.
CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct*& SharedData - The shared data.
(none)
Computes the combinational depth (number of subsequent combaintionl gates) of all cells and signals.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
(none)
Places standard probes on all considered register inputs and primary outputs of the circuit.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
(none)
Extends a standard probe to a glitch-extended probe.
Hardware::CircuitStruct* Circuit - The hardware circuit.
Hardware::LibraryStruct* Library - The circuit library.
Hardware::SettingsStruct* Settings - The evaluation settings.
int MainSignalIndex - The signal index of the standard probe.
int SignalIndex - The signal index of the current probe extension.
int* Buffer_int - The list of glitch-extensions.
(none)
Prepares the simulation settings.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
char* EvaluationResultFolderName - The name of the result directory.
(none)
Prepares the shared data.
Hardware::CircuitStruct* Circuit - The hardware circuit.
Hardware::SettingsStruct* Settings - The evaluation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
(none)
The Read files (inc/Hardware/Read.hpp
and src/Hardware/Read.cpp
) define all functions for reading files. These files implement the following functions:
Read from file by ignoring comments.
FILE *FileHeader - The file to read.
char *Str - The parsed string.
const char *CommentSyntax - The comment syntax.
(none)
Creates formula for a cell.
CellTypeStruct *CellType - The cell.
int - 0 = Passed, 1 = Failed.
Read in the library file.
char *LibraryFileName - The name of the library file.
char *LibraryName - The name of the library.
Hardware::LibraryStruct* Library - The parsed library.
(none)
Read in the design file.
char *InputVerilogFileName - The name of the design file.
char *MainModuleName - The name of the top module.
LibraryStruct* Library - The library.
CircuitStruct* Circuit - The parsed circuit.
(none)
Read in the settings file.
char *InputSettingsFileName - The name of the settings file.
Hardware::SettingsStruct& Settings - The evaluation settings.
CircuitStruct* Circuit - The parsed circuit.
(none)
The GenerateProbingSets files (inc/Hardware/GenerateProbingSets.hpp
and src/Hardware/GenerateProbingSets.cpp
) define all functions for generating the probing sets for evaluation. These files implement the following functions:
Does the generation of all required probing sets.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Generates a list of all considered standard probes and a second list with all considered glitch extensions.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Prepares the combination of probes to multivariate probing sets.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
std::vector& Combination - The combination of probes.
std::vector& CombinationBitmask - The combination of probes as bitmask.
(none)
Prepares the combination of probes to univariate probing sets.
Hardware::SimulationStruct& Simulation - The simulation settings.
std::vector& Combination - The combination of probes.
std::vector& CombinationBitmask - The combination of probes as bitmask.
(none)
Checks whether a probing set satisfies the distance bounds.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::TestStruct& Test - The evaluation details.
std::vector& ProbingSet - A single probing set.
(none)
Extend probing sets to glitch-extended probing sets.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Removes all duplicates (probes that occur twice or more) from the probing sets.
Hardware::TestStruct& Test - The evaluation details.
(none)
Removes a set of probing sets with one probing set.
Hardware::TestStruct& Test - The evaluation details.
unsigned int SetIndex - The index of the probing set for removing.
unsigned int Start - The index of the first probing set to remove.
unsigned int End - The index of the last probing set to remove.
(none)
Removes a set of probing sets with another set of probing sets.
Hardware::TestStruct& Test - The evaluation details.
unsigned int Start - The index of the first probing set to remove.
unsigned int End - The index of the last probing set to remove.
(none)
Removes all probing sets which are fully covered by another probing set.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Decides whether a probing set must be removed.
ProbingSetStruct& ProbingSet - The probing set.
(none)
Initialize (pre-allocate) the distributions of all probing set in compact mode.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
The Simulate files (inc/Hardware/Simulate.hpp
and src/Hardware/Simulate.cpp
) define all functions for the simulation procedure. These files implement the following functions:
Simulates the result of a single operation.
Hardware::OperationStruct Operation - The operation to evaluate.
uint64_t *Values - The input state.
char Intermediate - The intermediate state index.
(none)
Simulates the whole circuit.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
int SimulationIndex - The simulation index.
boost::mt19937& ThreadRng - The PRNG.
(none)
The Analyze files (inc/Hardware/Analyze.hpp
and src/Hardware/Analyze.cpp
) define the main functions for the leakage detection. These files implement the following functions:
Does the whole leakage detecttion.
CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.
(none)
Evaluates the robust probing security of the circuit.
CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.
(none)
Evaluates multivariate robust probing security.
CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.
timespec& StartTime - The starting time.
(none)
Evaluates univariate robust probing security.
CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.
timespec& StartTime - The starting time.
(none)
Evaluates the robust probing security based on a subset of probing sets.
CommandLineParameterStruct& Parameter - The command line parameters.
Hardware::CircuitStruct& Circuit - The hardware circuit.
Hardware::LibraryStruct& Library - The circuit library.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::ProbesStruct& Probes - The probes.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::SharedDataStruct* SharedData - The shared data.
Hardware::TestStruct& Test - The evaluation details.
timespec& StartTime - The starting time.
unsigned int ProbeStepIndex - The index of the subset of probing sets.
(none)
The Test files (inc/Hardware/Test.hpp
and src/Hardware/Test.cpp
) define the main functions for the statistical testing procedure. These files implement the following functions:
Performes the statistical test procedure.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
char CompactDistributions - Compact/Normal Test.
unsigned int ProbeStepSize - Number of probing sets to consider.
(none)
Performs the test procedure in compact mode.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Updates the distributions in compact mode.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
unsigned int SimulationIndex - The current simulation index.
std::vector& TempProbeValue - The temporary probe values.
(none)
Performs the test procedure in normal mode.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
unsigned int ProbeStepSize - Number of probing sets to consider.
(none)
Updates the distributions in normal mode.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
Hardware::ProbingSetStruct& ProbingSet - The probing set.
std::vectorHardware::TableEntryStruct& TableEntries - One contingency table entry.
(none)
Search for a specific value in a contingency table.
std::vector<std::vector>& Table - The contingency table.
std::vector& Entry - The value to search.
unsigned int IgnoredEntries - The number of ignored entries.
int Position - The position of the value in the table or (-1) if the value does not exist in the table.
Computes the g-test.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::ProbingSetStruct& ProbingSet - The probing set.
std::vector Frequency - Precomputed frequencies of the distribution.
(none)
Computes the g-value.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::ProbingSetStruct& ProbingSet - The probing set.
std::vector Frequency - Precomputed frequencies of the distribution.
unsigned int TableSize - The number of entries in the table.
unsigned int& Df - The degree of freedom.
(none)
Computes the required number of traces to achieve a particular effect size.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::ProbingSetStruct& ProbingSet - The probing set.
(none)
The Print files (inc/Hardware/Print.hpp
and src/Hardware/Print.cpp
) define the all functions for printing results. These files implement the following functions:
Prints the manual.
(none)
(none)
Prints the command line settings.
CommandLineParameterStruct& Parameter - The command line parameters.
(none)
Prints initial information before the actual evaluation takes place.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Prints the header for evaluation results.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
(none)
Prints the current memory consumption.
(none)
(none)
Prints the results of the evaluation.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
double& DeletedAlpha - The maximum p-value of an already deleted probing set.
std::string& DeletedProbingSet - The deleted probing set.
double ElapsedTimePeriod - The elapsed time up to now.
unsigned int ProbeStepSize - The number of probing sets to evaluate.
unsigned int Space - The space to print the table.
(none)
Prints all reports.
Hardware::SettingsStruct& Settings - The evaluation settings.
Hardware::SimulationStruct& Simulation - The simulation settings.
Hardware::TestStruct& Test - The evaluation details.
unsigned int ProbeStepIndex - Number of the probing set block.
unsigned int ProbeStepSize - Number of considered probing sets.
unsigned int TableWidth - The width of the table.
(none)