Sequences of Games: A Tool for Taming Complexity in Security Proofs
How to construct random functions