| Week 12 (rev. 3) |
| Professor M. J. Fischer | April 12 & 14, 2005 |
| Alice | Bob | ||
| 1. | Choose random bit bA ∈ {0,1} | → bA. | |
| 2. | ← bB | Choose random bit bB ∈ {0,1}. | |
| 3. | Coin outcome is b = bA ⊕bB. | Coin outcome is b = bA ⊕bB. |
| Alice | Bob | ||
| 1. | Choose random bit bA ∈ {0,1}. | Choose random bit bB ∈ {0,1}. | |
| 2. | commit(bA). | ↔ | commit(bB). |
| 3. | open(cA). | ↔ | open(cB). |
| 4. | Coin outcome is b = bA ⊕bB. | Coin outcome is b = bA ⊕bB. |
| Alice | Bob | ||
| 1. | Choose RSA key pair A with modulus n=pq. | Choose RSA key pair B with modulus n=pq. | |
| 2. | Choose random r ∈ Z(n−1)/2. | ||
| Let mi = 2r+i, for i ∈ {0,1}. | |||
| Let ci = EA(mi) for i ∈ {0,1}. | |||
| Let C = {c0, c1}. | → C | Choose ca ∈ C. | |
| 3. | ← cab | Let cab = EB(ca). | |
| 4. | Let cb = DA(cab). | → cb | |
| 5. | Let m = DB(cb). | ||
| Let i = m mod 2. | |||
| Let r = (m−i)/2. | |||
| If i=0 outcome is "tails". | |||
| If i=1 outcome is "heads". | |||
| ← B | |||
| 6. | Let m = DB(cb). | ||
| Check m ∈ {m0, m1}. | |||
| If m=m0 outcome is "tails". | |||
| If m=m1 outcome is "heads". | |||
| → A | |||
| 7. | Let c′a = C − { ca }. | ||
| Let m′ = DA( c′a ). | |||
| Let i′ = m′ mod 2. | |||
| Let r′ = (m′−i′)/2. | |||
| Check that i′ ≠ i and r′ = r. |
| Alice | Bob | ||
| 1. | Secret s. | ||
| Choose primes p, q, and let n = pq. | |||
| Generate RSA public key (e, n). | |||
| Compute c = E(e,n)(s). | |||
| → (e, n, c) | |||
| 2. | Choose random x ∈ Z∗n. | ||
| ← a | Compute a = x2 mod n. | ||
| 3. | Check a ∈ QRn. | ||
| Choose y at random from among the 4 square roots of a mod n. | |||
| → y | |||
| 4. | Check y2 ≡ a mod n. | ||
| If y \not ≡ ±x mod n, use x, y to factor n and decrypt c to obtain s. |
| Alice | Bob | ||
| 1. | Choose two PKS key pairs (e0, d0) and (e1, d1). | ||
| → e0, e1 | |||
| 2. | Generate random key k for a symmetric cryptosystem ([^(E)], [^(D)]). | ||
| Choose e ∈ {e0,e1}. | |||
| ← c | Compute c = Ee(k). | ||
| 3. | Compute ki = Ddi(c) for i=0, 1. | ||
| Compute ci = [^(E)]ki(si) for i=0, 1. | → c0, c1 | ||
| 4. | Compute si = [^(D)]k(ci) for i=0, 1. | ||
| One of the si is correct and the other is garbage. |
|
|
|
|
|
|
|
|
|
| To Q(x): | |
| 1. | Let s2 = x2 mod n. |
| 2. | Let si = si−12 mod n, for i=3, …, k. |
| 3. | Let b1 = lsb(x). |
| 4. | Let bi = lsb(si), for i=2, …, k. |
| 5. | Let c = A(b2, …, bk). |
| 6. | If c = b1 then output 1; else output 0. |
|
|
|