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
- Operation
Benchmark - Benchmark for measuring operation timing
- Timing
Statistics - Statistical summary of timing measurements
Enums§
- CtAudit
Error - 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§
- CtAudit
Result - Result type for constant-time audit operations