Module ct_audit

Module ct_audit 

Source
Expand description

Constant-time operation auditing and verification.

This module provides utilities for detecting timing variations in cryptographic operations to help identify potential timing side-channels.

§Features

  • Timing measurement: High-resolution timing for individual operations
  • Statistical analysis: Detect non-constant-time behavior via statistical tests
  • Benchmarking: Compare timing across different inputs
  • Leak detection: Identify potential timing leaks in cryptographic code

§Example

use chie_crypto::ct_audit::{CtAuditor, OperationBenchmark};

// Create an auditor
let auditor = CtAuditor::new("constant_time_eq", 1000);

// Measure an operation multiple times
let mut bench = OperationBenchmark::new("comparison", 1000);
for _ in 0..1000 {
    bench.measure(|| {
        // Your constant-time operation here
        let a = [1u8; 32];
        let b = [1u8; 32];
        let _ = a == b;
    });
}

// Analyze results
let stats = bench.statistics().unwrap();
println!("Mean: {}ns, StdDev: {}ns", stats.mean_ns, stats.std_dev_ns);

§Warning

Timing measurements can be affected by:

  • CPU frequency scaling
  • OS scheduler
  • Cache effects
  • Branch prediction

Always run audits on a quiet system and interpret results carefully.

Structs§

CtAuditor
Auditor for constant-time operations
OperationBenchmark
Benchmark for measuring operation timing
TimingStatistics
Statistical summary of timing measurements

Enums§

CtAuditError
Constant-time audit errors

Functions§

measure_average
Quick helper to measure average timing over N runs
measure_once
Quick helper to measure operation timing

Type Aliases§

CtAuditResult
Result type for constant-time audit operations