In cryptography and the theory of computation, Yao's test is a test defined by Andrew Chi-Chih Yao in 1982,[1] against pseudo-random sequences. A sequence of words passes Yao's test if an attacker with reasonable computational power cannot distinguish it from a sequence generated uniformly at random.
Let
P
S=\{Sk\}k
Sk
P(k)
k
\muk
Sk
PC
C=\{Ck\}
PC(k)
C | |
p | |
k,S |
s
Sk
\mu(s)
Ck(s)=1
C={lP}[C | |
p | |
k(s)=1 |
|s\inSkwithprobability\muk(s)]
Moreover, let
C | |
p | |
k,U |
Ck(s)=1
s
P(k)
\{0,1\}P(k)
S
C
k
Q
| ||||
|p | ||||
k,U |
As in the case of the next-bit test, the predicting collection used in the above definition can be replaced by a probabilistic Turing machine, working in polynomial time. This also yields a strictly stronger definition of Yao's test (see Adleman's theorem). Indeed, One could decide undecidable properties of the pseudo-random sequence with the non-uniform circuits described above, whereas BPP machines can always be simulated by exponential-time deterministic Turing machines.