References:
UPEC: Unique Program Execution Checking.
#test_value
;#test_value
lw x4, 0(x1)
, where x1
is #protected_addr
; ==> this will throw an exception, x4
will not have the secret value (not architectual visible).lw x5, 0(x4)
; ==> this will not be architecturally visible (x5 not updated), but the instruction already in the pipeline and will issue a cache transaction.#test_value
and 0(x4)
in the same cache line, then a RAW hazard will happen, and
Unique Program Execution Checking.
The requirement of unique program execution is formalized as a “property” expressed in a property language which is understood by a (commercially available) tool for property checking.
Challenge: current tools for property checking are build for functional design verification. In order to make property checking applicable to UPEC, we present a tailor-made computational model and formulate a specific property to be proven on this model.
Automatically derived model: This model (in Figure 3) can be derived automatically from the RTL description of the design and only requires the user to provide the protected region.
Two identical instrances: $SoC_1$ and $SoC_2$ are two identical instances of the logic part of the SoC under verification.
Two almost same set of memory: $Memory_1$ and $Memory_2$ hold the same set of values except for the memory location of a defined secret data.
For a system to be secure w.r.t. convert channel attacks, the computational model derived from the design’s RTL description has to fulfill the following property expressed in the CTL property language [c36]:
No Covert Channel Property: $\boldsymbol{AG}$(secret_data_protected $\wedge$ micro_soc_state_1 = micro_soc_state_2 $\rightarrow \boldsymbol{AG}$ soc_state_1 = soc_state_2)
where $\boldsymbol{AG}$: the following condition must be fulfilled at all times and for all possible runs of the system (“A for All paths, G for Globally”). Note: CTL symbols
where micro_soc_state is a a vector of all microarchitecture state variables.
where soc_state is some vector of state variables which includes, as a subset, all architectural state variables.
where secret_data_protected is a constraint specifing that a protection mechanism in the hardware is enabled for the secret data memory location.
The property fails, if and only if, there exists a state, soc_state, such that the transition to the next state, soc_state’, depends on the secret data.
Counterexamples of unique program execution.
$L-alert$, Leakage alert.
$P-alert$, Propagation alert.
Rocketchip, a single-core SoC with in-order pipelined processors and separate data and instruction level-1 cache.
OneSpin 360 DV-Verify, a commercial property checker.
Results:
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?