NEW
A CSPRNG design emphasizing entropy pools and reseeding to mitigate state compromise risks.
DESCRIPTION
Yarrow is a family of CSPRNGs designed by Kelsey, Schneier, and Ferguson to collect entropy from multiple sources into pools with thresholds that trigger reseeding. Its goal is robust recovery after compromise and reliable operation under varying entropy conditions. Yarrow influenced later designs and deployments in operating systems. However, practical feedback led to Fortuna as a successor with simplified and improved entropy management. Today, Yarrow is mostly of historical interest, with Fortuna and NIST DRBGs preferred.
ALTERNATIVE DEFINITIONS
Wikipedia
Yarrow is a family of cryptographic pseudorandom number generators (PRNGs) devised by Bruce Schneier, John Kelsey and Niels Ferguson.
Identifies authorship and class as CSPRNGs.
Schneier.com
Yarrow-160 is a PRNG based on a combination of entropy accumulation, reseeding, and cryptographic primitives to ensure robustness after compromise.
Stresses entropy accumulation and post-compromise recovery.
RELATED TERMS
Cryptographically Secure Pseudorandom Number Generator Entropy Source Reseeding NIST SP 800-90A Hash Function Pool-based PRNG
COMPETING TERMS
KNOWLEDGE AREAS
Data Security Testing & Validation
TARGET AUDIENCE
Cybersecurity Engineer Security Architect Chief Information Security Officer Software Developer
EXTERNAL SOURCES
- Wikipedia - Yarrow algorithm
- Schneier.com - Original Yarrow-160 design paper
- Apple Developer - Historical use of Yarrow in OS X
TOP QUESTIONS
What problem did Yarrow aim to solve?
Robustness after PRNG state compromise via entropy pooling and controlled reseeding thresholds.
Category: Concept
Why was Yarrow superseded by Fortuna?
Operational complexity and feedback informed a simpler, more robust Fortuna design.
Category: Relevancy
How does Yarrow handle entropy?
It uses multiple pools and reseeding thresholds to manage variable-quality entropy sources.
Category: Requirements
Is Yarrow still recommended?
No. Prefer Fortuna or NIST SP 800-90A DRBGs in modern systems.
Category: BestPractice
Where was Yarrow deployed?
Historically in some operating system RNGs, later replaced by improved designs.
Category: Example
What are Yarrow’s main components?
Entropy pools, reseeding logic, and cryptographic primitives like hashes and ciphers.
Category: Concept
What is a common misunderstanding about Yarrow?
That any entropy pool design suffices; details of thresholds and mixing are crucial.
Category: Misunderstanding
What risks exist if reseeding is misconfigured in Yarrow?
Insufficient reseeding can leave the PRNG predictable; excessive reseeding may waste entropy.
Category: Risk
How should teams migrate from Yarrow?
Adopt a modern CSPRNG (Fortuna or SP 800-90A DRBG), ensure secure seeding, and validate outputs.
Category: BestPractice