Skip to content

security: make CSPRNG wake and reboot reseeding non-repeating #873

Description

@forkwright

Finding

Phase-08 planning proposed a passphrase-derived stable thumos-csprng-v1 key as a deterministic wake reseed. Reinitializing a stream generator from the same key/counter can repeat output across wakes or reboots. The kernel currently derives/stores that key but does not feed it into the CSPRNG, so the dangerous contract is planned rather than yet wired.

Evidence

Why this matters

Repeated DRBG state can repeat nonces, ephemeral keys, randomized identities, and secrets across power cycles. A stable secret may be one extractor input, but it cannot by itself make a reset state fresh.

Done when

  • Define a versioned DRBG instantiate/reseed design with domain separation, fresh credited entropy and/or an authenticated non-repeating persisted epoch, and explicit crash/rollback behavior.
  • Never restart a stream at a repeated key/counter state; persist or derive state atomically and fail closed when freshness cannot be established for key/nonce generation.
  • Separate prediction resistance, backtracking resistance, readiness, and availability claims.
  • Tests cover repeated wake/reboot, identical master keys, rollback/clone, interrupted state update, unavailable entropy/storage, counter exhaustion, and output non-repetition.
  • Integrate with Jitter-band entropy crediting counts the deterministic tick increment, so a constant-delta timer can satisfy the seed gate #840's corrected entropy-credit mechanism and Phase-08 audit/rollback policy before any M7 qualification.

Metadata

Metadata

Assignees

No one assigned

    Labels

    securitySecurity vulnerability or hardening

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions