TimingAnomaly

Enum TimingAnomaly 

Source
pub enum TimingAnomaly {
    Timeout {
        actual: Duration,
        limit: Duration,
    },
    Deviation {
        deviation: f64,
        threshold: f64,
    },
    HighVariation {
        variation_percent: f64,
        max_allowed: f64,
    },
}
Expand description

Detected timing anomaly in a cryptographic operation.

Represents different types of timing irregularities that may indicate security issues, performance problems, or environmental changes affecting cryptographic operation timing.

§Anomaly Types

  • Timeout: Operation exceeded maximum allowed duration
  • Deviation: Statistical deviation from expected timing baseline
  • HighVariation: Excessive timing jitter/variation detected

§Security Implications

Timing anomalies can indicate:

  • Side-channel vulnerabilities (timing leaks)
  • Performance degradation affecting security margins
  • Environmental changes (CPU frequency, memory pressure)
  • Resource contention in shared environments

§Response Actions

Different anomaly types suggest different responses:

  • Timeout: Immediate investigation (possible DoS or hanging operation)
  • Deviation: Statistical monitoring (may indicate side-channel)
  • HighVariation: System health check (environmental factors)

Variants§

§

Timeout

Operation exceeded the configured timeout duration.

The operation took longer than the maximum allowed time, which could indicate a performance issue, resource exhaustion, or security problem. This is the most serious anomaly type requiring immediate attention.

Fields

§actual: Duration

Actual measured duration of the operation

§limit: Duration

Maximum allowed duration before timeout

§

Deviation

Operation timing deviated significantly from statistical baseline.

The operation’s execution time differed from the expected duration by more than the configured threshold (measured in standard deviations). This could indicate timing-based side-channel vulnerabilities.

Fields

§deviation: f64

Statistical deviation from baseline in standard deviations (e.g., 3.5 means 3.5 standard deviations from mean)

§threshold: f64

Maximum allowed deviation threshold

§

HighVariation

Operation exhibited excessive timing variation.

The operation’s timing showed higher variation than allowed, indicating inconsistent performance that could mask timing attacks or indicate system instability.

Fields

§variation_percent: f64

Measured timing variation as percentage of mean duration

§max_allowed: f64

Maximum allowed variation percentage

Trait Implementations§

Source§

impl Clone for TimingAnomaly

Source§

fn clone(&self) -> TimingAnomaly

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TimingAnomaly

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.