Paper 2014/167
How to Eat Your Entropy and Have it Too -- Optimal Recovery Strategies for Compromised RNGs
Yevgeniy Dodis, Adi Shamir, Noah Stephens-Davidowitz, and Daniel Wichs
Abstract
Random number generators (RNGs) play a crucial role in many cryptographic schemes and protocols, but their security proof usually assumes that their internal state is initialized with truly random seeds and remains secret at all times. However, in many practical situations these are unrealistic assumptions: The seed is often gathered after a reset/reboot from low entropy external events such as the timing of manual key presses, and the state can be compromised at unknown points in time via side channels or penetration attacks. The usual remedy (used by all the major operating systems, including Windows, Linux, FreeBSD, MacOS, iOS, etc.) is to periodically replenish the internal state through an auxiliary input with additional randomness harvested from the environment. However, recovering from such attacks in a provably correct and computationally optimal way had remained an unsolved challenge so far. In this paper we formalize the problem of designing an efficient recovery mechanism from state compromise, by considering it as an online optimization problem. If we knew the timing of the last compromise and the amount of entropy gathered since then, we could stop producing any outputs until the state becomes truly random again. However, our challenge is to recover within a time proportional to this optimal solution even in the hardest (and most realistic) case in which (a) we know nothing about the timing of the last state compromise, and the amount of new entropy injected since then into the state, and (b) any premature production of outputs leads to the total loss of all the added entropy {\em used by the RNG}, since the attacker can use brute force to enumerate all the possible low-entropy states. In other words, the challenge is to develop recovery mechanisms which are guaranteed to save the day as quickly as possible after a compromise we are not even aware of. The dilemma that we face is that any entropy used prematurely will be lost, and any entropy which is kept unused will delay the recovery. After developing our formal definitional framework for RNGs with inputs, we show how to construct a nearly optimal RNG which is secure in our model. Our technique is inspired by the design of the Fortuna RNG (which is a heuristic RNG construction that is currently used by Windows and comes without any formal analysis), but we non-trivially adapt it to our much stronger adversarial setting. Along the way, our formal treatment of Fortuna enables us to improve its entropy efficiency by almost a factor of two, and to show that our improved construction is essentially tight, by proving a rigorous lower bound on the possible efficiency of any recovery mechanism in our very general model of the problem.
Note: Fixed minor typos.
Metadata
- Available format(s)
- Publication info
- A major revision of an IACR publication in CRYPTO 2014
- Keywords
- RNG with inputentropy accumulationPRG
- Contact author(s)
- noahsd @ gmail com
- History
- 2014-06-07: last of 4 revisions
- 2014-03-03: received
- See all versions
- Short URL
- https://ia.cr/2014/167
- License
-
CC BY
BibTeX
@misc{cryptoeprint:2014/167, author = {Yevgeniy Dodis and Adi Shamir and Noah Stephens-Davidowitz and Daniel Wichs}, title = {How to Eat Your Entropy and Have it Too -- Optimal Recovery Strategies for Compromised {RNGs}}, howpublished = {Cryptology {ePrint} Archive, Paper 2014/167}, year = {2014}, url = {https://eprint.iacr.org/2014/167} }