DOI: 10.1145/6490.6503 ISSN:

How to construct random functions

Oded Goldreich, Shafi Goldwasser, Silvio Micali
  • Artificial Intelligence
  • Hardware and Architecture
  • Information Systems
  • Control and Systems Engineering
  • Software

A constructive theory of randomness for functions, based on computational complexity, is developed, and a pseudorandom function generator is presented. This generator is a deterministic polynomial-time algorithm that transforms pairs ( g , r ), where g is any one-way function and r is a random k -bit string, to polynomial-time computable functions ƒ r : {1, … , 2 k } → {1, … , 2 k }. These ƒ r 's cannot be distinguished from random functions by any probabilistic polynomial-time algorithm that asks and receives the value of a function at arguments of its choice. The result has applications in cryptography, random constructions, and complexity theory.