key constantly, so that even if the key of pool information is known to the attacker before the reseed, they will be unknown to the attacker after the reseed. The reseed control component is leveraging between frequent reseeding, which is desirable but might allow iterative guessing attacks, and infrequent reseeding, which compromises more information for an attacker who has the key. Yarrow uses the fast pool to reseed whenever the source passes some threshold values, and uses the slow pool to reseed whenever at least two of its sources pass some other threshold value. The specific threshold values are mentioned in the Yarrow-160 section. Design philosophy Yarrow assumes that enough entropy can be accumulated to ensure that the PRNG is in an unpredictable state. The designers accumulate entropy in the purpose of keeping the ability to recover the PRNG even when the key is compromised. Similar design philosophy is taken by RSAREF, DSA and ANSI X9.17 PRNGs. Yarrow-160 The Yarrow uses two important algorithms: a one-way hash function and a block cipher. The specific description and properties are listed in the table below. Generation Yarrow-160 uses three-key Triple DES in counter mode to generate outputs. is an n-bit counter value; is the key. In order to generate the next output block, Yarrow follows the functions shown here. Yarrow keeps count of the output block, because once the key is compromised, the leak of the old output before the compromised one can be stopped immediately. Once some system security parameter is reached, the algorithm will generate bits of PRNG output and use them as the new key. In Yarrow-160, the system security parameter is set to be 10, which means . The parameter is intentionally set to be low to minimize the number of outputs that can be backtracked. Reseed The reseed mechanism of Yarrow-160 uses SHA-1 and Triple DES as the hash function and block cipher. The details steps are in the original paper. Implementation of Yarrow-160 Yarrow-160 has been implemented in Java, and for FreeBSD. The examples can be found in "An implementation of the Yarrow PRNG for FreeBSD" by Mark R. V. Murray. Pros and cons of Yarrow Pros Yarrow reuses existing building blocks. Compared to previous PRNGs, Yarrow is reasonably efficient. Yarrow can be used by programmers with no cryptography background in a reasonably secure way. Yarrow is portable and precisely defined. The interface is simple and