Skip to content
  • Stephan Mueller's avatar
    Permanent and intermittent health errors · 1911aa07
    Stephan Mueller authored
    
    
    According to SP800-90B, two health failures are allowed: the intermittend
    and the permanent failure. So far, only the intermittent failure was
    implemented.
    
    This patch implements 2 cutoff values for both RCT/APT. This implies that
    the health state is left untouched when an intermittent failure occurs.
    The noise source is reset and a new APT powerup-self test is performed.
    Yet, whith the unchanged health test state, the counting of failures
    continues until a permanent failure is reached.
    
    Any non-failing raw entropy value causes the health tests to reset.
    
    The intermittent error has an unchanged significance level of 2^-30.
    The permanent error has a significance level of 2^-60. Considering that
    this level also indicates a false-positive rate (see SP800-90B section 4.2)
    a false-positive must only be incurred with a low probability when
    considering a fleet of Linux kernels as a whole. Hitting the permanent
    error may cause a panic(), the following calculation applies: Assuming
    that a fleet of 10^9 Linux kernels run concurrently with this patch in
    FIPS mode and on each kernel 2 health tests are performed every minute
    for one year, the chances of a false positive is about 1:1000
    based on the binomial distribution.
    
    In addition, any power-up health test errors triggered with
    jent_entropy_init are treated as permanent errors.
    
    A permanent failure causes the entire entropy source to permanently
    return an error. This implies that a caller can only remedy the situation
    by re-allocating a new instance of the Jitter RNG.
    
    Signed-off-by: default avatarStephan Mueller <smueller@chronox.de>
    1911aa07
To find the state of this project's repository at the time of any of these versions, check out the tags.