Generate random bits

Random bit generator is usually a physical device. Usually, Pr(X=1)=p; from this, easily get random generator with Pr(X=1)=1/2: flip every alternate bit. Flippling every t-th bit, get Pr(X = 1) = 1/t.

2-wise independent bits generation

2b1 2-ind bits Yi from b ind bits Xi: For each subset, Yi=Xi. In GF(p), p 2-ind elements from 2 ind elements: Yi=(X1+iX2)modp for every i in GF(p). 2-universal (Pr(h(x)=h(x))n1) hash function family: H has h:UV;|V|=n;a,bGF(p),a0; ha,b(x)=((b+xa)modp)modn. If a can be 0, strongly 2-universal (Pr(h(x)=y,h(x)=y)=n2).

Pseudorandom generator G

Based on operational meaning of randomness: Better than early definitions, which were based on statistical properties of bit string.

G:{0,1}l{0,1}n, computable in time 2O(l), is an (ϵ,s(n)) pseudorandom generator if ckts c of size s(n) [strength parameter], Indistinguishability / unpredictability property holds: Pry{0,1}n[c(y)=1]Prx{0,1}l[c(G(x))=1]ϵ [error parameter].

Distinguishers c usually try to learn from string and guess if G generated it. For example of distinguisher, see colt ref.

Notion similar to PFF: If ye pick y, you’ve picked random functions f; if ye pick x, you’ve picked a subset of pseudorandom functions.

Hard function f

f is (a(n), s(n)) hard if ckts of size s(n), \ Pry{0,1}n[c(y)=f(y)]21+a(n). (a(n), s(n), D) hardness: a generalized notion: take Pr wrt D.

Worst case hardness: a(n)=21+2n: otherwise, c can memorize +ve inputs.

Any pseudorandom generator is also hard. \why

Any hard function is also a pseudorandom generator. \why

Hard core function f

f is (a(n), s(n), M) hard core wrt \ measure M (defining distribution DM) if f is (a(n),s(n),DM) hard.

If f is hard wrt distribution D which is uniform over set S, it is (a(n), s(n), S) hard core. Then S is a (a(n), s(n), f) hard core set. If (a(n), s(n), M) hard, then (a(n), s(n), S) hard for S of a certain size.

(Impagliazzo): If f is (a(n), s(n), U) hard, it is (b(n),b(n)2a(n)2,M) hard core where DM is close to U: if not hard core, could smoothly boost the good guessing ckt to get a ckt which violates hardness.

BBS pseudorandom generator

(Blum, Blum, Shub). Input: N=pq: p, q are primes =2mod4; Initial seed s0 of n bits. Output: A stream of poly(n) bits which look random. si=si12modN=s02imodN; ith bit output: bi:=LSB(si).

If factoring is hard, you cannot distinguish between a truly random m bit string and an m bit string obtained by choosing s0 at random and running BBS gen. \why

Pseudo random function family (PFF)

Function family F

Set of polynomial sized boolean circuits with input length n, of size O(en) with samplable index set I; alg A to input iI, return fiF, simulate its input/ output behavior by accepting x and returning fi(x) in poly time.

Distinguisher D

Any Poly time alg; inputs function f: black box access to it; outputs 1 if it thinks f is random.

Indistinguishability

Let f be truly random function. F is PFF if for every D, Prfrand(Df=1)PriUI(Dfi=1)<O(en).

Existance

Goldwasser, Goldreich, Micali (GGM): If one way functions exist (if factoring is hard), then PFF’s exist.

\tbc