Pseudorandom functions take inputs x\in\{0,1\}^*, where {}^* is the
Kleene star. Both the input size I=|x| and output size \lambda depend only on the index size n:=|s|. A family of functions,f_s: \left\{0, 1\right\}^{I(n)} \rightarrow \left\{0,1\right\}^{\lambda(n)}is
pseudorandom if the following conditions are satisfied: • There exists a polynomial-time algorithm that computes f_s(x) given any s and x. • Let F_n be the distribution of functions f_s where s is uniformly distributed over \{0, 1\}^n, and let RF_n denote the uniform distribution over the set of all functions from \{0, 1\}^{I(n)} to \{0, 1\}^{\lambda(n)}. Then we require F_n and
RF_n are computationally indistinguishable, where
n is the
security parameter. That is, for any adversary that can query the oracle of a function sampled from either F_n or
RF_n, the advantage that she can tell apart which kind of oracle is given to her is negligible in n. ==Oblivious pseudorandom functions==