Increase Clock Cycles/Timing

Timing side-channel attacks exploit observable differences in execution time to infer information about secret values, such as cryptographic keys, by correlating measured execution durations with data-dependent branching paths or memory access patterns. This countermeasure reduces timing leakage by ensuring that execution time, control flow, instruction selection, and memory-access behavior do not vary as a function of secret values within the defined implementation and threat model. Additional computation or delay may be used where appropriate, but constant-time behavior should primarily be achieved by eliminating secret-dependent branches, memory accesses, and variable-latency operations. Memory accesses involving secret-dependent values or indices shall be implemented so that observable access patterns and timing do not vary as a function of the protected secret within the defined threat model. Non-secret-dependent memory accesses need not be normalized solely for this countermeasure. Where mission timing requirements permit, access time normalization can be achieved by adding deliberate delays to faster accesses to equalize timing across all operations. Constant-time implementation may increase execution time, code size, memory use, power consumption, or design complexity, depending on the algorithm, implementation technique, processor, and memory architecture. These impacts must be measured for the target platform and evaluated against timing, power, thermal, and throughput mission requirements.

Sources

ID: CM0063
Tier: III
Onboard SV CM 
Created: 2022/10/19
Last Modified: 2026/08/06

Pre-Operations Government

Acquisition requirements should address timing side-channel resistance as a security design requirement for hardware and software executing cryptographic or security-sensitive operations, with timing normalization identified as a candidate countermeasure subject to a documented trade analysis that evaluates protection effectiveness against the SWaP and throughput impact for the specific mission platform. Requirements should specify the target level of timing side-channel resistance, expressed in terms of the maximum permissible timing variance across all execution paths of protected operations, and should require that compliance be validated through timing measurement on production-representative hardware rather than accepted on design assertion alone. Contract language should require that timing normalization design decisions be documented as a controlled deliverable, including the normalization method applied to each protected operation, the clock cycle overhead introduced, and the power consumption impact quantified against the platform's power budget. Evaluation criteria should assess offerors' proposed timing normalization approach, their demonstrated ability to achieve consistent execution timing in resource-constrained embedded environments, and their experience balancing timing security against SWaP requirements in analogous applications. Verification should include timing measurement of protected operations across a representative range of input values, confirming that execution time variance is within the specified tolerance regardless of branching or memory access path taken.

Pre-Operations Developer/Supplier

Constant-time requirements must be addressed at the algorithm, source-code, compiler, binary, and target-processor levels. Compiler transformations, runtime libraries, instruction selection, register allocation, and processor behavior may introduce or reintroduce secret-dependent timing even when the source code appears constant-time. Verification must therefore include generated-code analysis and target-hardware timing evaluation in addition to source review. Secret-dependent branching should be replaced with verified constant-time algorithms, operations, or selection primitives where supported. Branchless source code must not automatically be assumed constant-time, because compiler transformations, variable-latency instructions, memory accesses, and processor behavior may still create secret-dependent timing. Delay-based normalization should be used only when validated for the specific implementation and platform. The implementation must account for caches, translation structures, prefetching, scratchpad memory, shared memory, buses, and other memory-hierarchy behavior that may expose secret-dependent access patterns. Applicable protections may include data-independent memory access, constant-time hardware instructions, cache partitioning or locking, dedicated memory, controlled preloading, or disabling caches for selected operations. Cache flushing alone must not be assumed sufficient, and a cache-oblivious algorithm is not necessarily secret-independent. The power consumption and throughput impact of timing normalization must be quantified through hardware measurement rather than estimation, as the actual overhead depends on the specific processor, clock configuration, and memory subsystem in the target platform and may differ significantly from theoretical predictions. Constant-time protection should be applied to operations that process secrets or whose timing could reveal sensitive state, including applicable key handling, cryptographic computations, authentication comparisons, secret-dependent parsing, and protected decision logic. Selective application must include all supporting operations and transitions whose timing may remain correlated with the protected secret.