Foundations of Cryptography (Spring 2008)
Error correcting codes are combinatorial objects that allow sending and
recovering messages transmitted through noisy channels. Error correcting codes
have many applications in both theory and practice in computer science. This
class gives an
A key idea in modern cryptography is to try and design protocols that are
secure against polynomial time adversaries (rather than all adversaries). This
relaxed notion of security allows to implement many amazing tasks. (To give just
one example we can consider two players playing poker over the phone without the
help of a trusted party). In the course we will develop the basic machinery that
allows such protocols with emphasis on precise definitions and rigorous proofs.
This course complements the course "introduction to cryptography" and
students are allowed (and encouraged) to take both courses.
Requirements:
In the end of the semester there will be a home assignment. Following the
home assignment, I may decide to conduct an oral exam (to make sure that
students indeed prepared the solutions).
In addition during the semester I will give 2-3 exercises. The exercises are
not mandatory and their purpose is for students to check that they follow the
material.
Course material:
The material in the course is mostly covered in the following book (that is
available in several copies in the library)
FOUNDATION OF CRYPTOGRAPHY by ODED GOLDREICH.
Some of the material can be found in lecture notes of a
course by
Yehuda Lindell from Bar-Ilan University.
Every week I will upload a (very brief) summary of the subjects that were
covered.
Lecture 1 : Introduction
- The purpose of this lecture is to give a flavor of the ideas and
methodology that will be used in the course.
- Playing poker over the phone (coin tossing protocols).
- Impossibility of coin tossing protocols.
- Idea: Design protocols that are secure against adversaries that run in
polynomial time. (This means that in the very least we need to assume that
NP is not equal to P).
- Bit commitment: A description of a physical implementation with boxes,
locks and keys.
- The protocol has two phases:
- In commit phase the sender puts a bit b inside a box locks the
box and sends the box to the receiver.
- In Reveal phase the sender sends the key to the receiver who can
see whether the key unlocks the box and what bit is inside.
- Security guarantees:
- Hiding: The receiver cannot know what is inside the box if he
doesn't have the key.
- Binding: The sender cannot affect the bit in the box after it
was sent. (He cannot send different keys that will lead to different
bits).
- Challenge: Implement bit commitment in the digital world.
- More preliminary challenge: Have a meaningful and not-contradictory
formal definition of digital implementation of a bit commitment that is
secure against efficient adversaries.
- The definition introduces several ideas:
- Injecting randomness: It is not good to have the digital
implementation m of the box to be a fixed function of the bit b. Instead
the sender randomly picks a string r of length n and computes a function
commit(r,b) which gives him the "box" m and the "key" k. (This is needed
as otherwise the receiver can open the box by computing commitments of
both zero and one, and only one of them can be m by the binding
property). (This also means that a brute force attack that tries all r
breaks the commitment, but we cannot hope to avoid this).
- The uncertainty of the receiver about the value in the box is
defined over the probability space of choosing r: We require that every
efficient machine R that gets m and tries to compute b can only succeed
with probability at most 1/2+\epsilon (where the probability is over r).
- The binding property makes sense even against unlimited adversaries:
We require that there do not exist k1,k2 such that reveal(m,k1)=0 and
reveal (m,k2)=1.
- The reveal function gets a "box" m and a "key" k and answers one of
three values:
- "1" meaning that the bit in the box is 1.
- "0" meaning that the bit in the box is 0.
- "?" meaning that the key does not open the box.
- This avoids the attack of running reveal(m,arbitrary key) and using
the hiding property.
- In the end we developed a formal definition that seems meaningful and
not contradictory.
Lecture 2 : One-way functions
- Formal definition of bit-commitment schemes.
- Observation: No such schemes exist if P=NP.
- Hope: construct such schemes based on the assumption P<>NP (major open
problem).
- We do not know how to approach this problem because of two issues:
- Average-case complexity: Maybe it is easy to solve NP problems "on
average".
- Generating witnesses: Even if it is hard to solve NP problems on
average, can we generate hard inputs on which we have a witness.
- The notion of one-way functions: A function on f is one way if |f(x)|=|x|
(that is f is length preserving) and:
- Efficiency: There is a polynomial time algorithm which computes f.
- Hardness: It is hard to invert f. For every poly-time prob. machine
A and for every constant c we consider the experiment in which a randomx
of length n is chosen and we check whether A(f(x)) is an input x' such
that f(x')=f(x). It is requires that the probability of this event is
smaller than n^{-c} for any sufficiently large n.
- Candidates: multiplication.
- The notion of weak one-way function.
- Theorem: Weak one-way functions imply strong one-way functions (we did
not give a proof).
Lecture 3 : Hard core bits and the Goldreich-Levin
theorem
- Even if f is one way it may be possible to compute the first bit of x
when given f(x).
- Example: define g(x,r)=f(x),r.
- Claim: if f is one way then g is one way.
- Technique: proof by reduction: If g is not one-way then f is not one
way.
- Conclusion: It may be easy to predict many of the bits of the input.
- Definition of hard-core bit.
- Theorem [Goldreich-Levin]: If f is one-way then the function b(x,r)=<x,r>mod
2 is a hard-core bit for g.
- High level idea of the proof.
- We assume b is not good and get a machine A' that predicts b(x,r)
when given f(x),r.
- Things are simple if A' succeeds with prob 1. In that case A'(f(x),r)
is always b(x,r). In particular setting e^i to be the vector with a
single 1 at the i'th index we have that A'(f(x),e^i)=b(x,e^i)=x_i and we
can indeed find x.
- Things are still not too problematic if A' succeeds with prob
3/4+1/n^c. In that case we define G to be the set of x's for which A'
succeeds with probability at least 3/4+1/2n^c (where the probability is
over the choice of r and random coins). We first show that G is not tiny
(that is that the probability that x lands in x is noticeable and at
least 1/2n^c). For a fixed i we consider the algorithm that given f(x)
chooses at random a string a and runs A'(f(x),r) and A'(f(x),r^i) where
r^i is the string inb which the i'th bit is flipped. We showed that for
an x in G, the probability that A'(f(x),r)=b(x,r) is at least 1/2+1/2n^c
and we have the same probability for A'(f(x),r^i)=b(x,r^i). It is
important to note that the two events are not independent. Still, by a
union bound over the complements of the events we can deduce that both
events happen simultaneously with prob 1/2+1/n^c and if we xor the
outputs we get x_i. By repeating this procedure many times with
independent random choices we can improve the probability to 1-1/2n. If
we repeat this for all i we invert with probability at least 1/2n^c
times 1-1/n which is noticeable.
Lecture 4 : Hard core bits and the Goldreich-Levin
theorem (continued)
- We finished up the proof. The details can be found both at Oded
Goldreich's book and at Yehuda Lindell's lecture notes.
Lecture 5 : Statistical Indistinguishability,
Computational Indistinguishability and Pseudorandomness
- The notion of an ensemble.
- Definitions of statistical and computational indistinguishability.
- Pseudorandom ensembles and pseudorandom generators.
- Pseudorandom generators imply OWFs
- Prediction tests and the hybrid argument.
Lecture 6 : A construction of PRGs from any
OWP.
- Details can be found in the references.
Lecture 7 : Interactive proof systems and ZK
- Definitions of a proof system and transcript (P,V)(x)
- Randomized proof systems
- Completenss and soundness
- Example: Graph Isomorphism
- The idea of ZK and the simulation paradigm
Lecture 8 : A ZK proof for every language in
NP
- The simulation paradigm. Precise definition of ZK.
- Meaning of ZK.
- Thm: assuming Bit-commitment and language in NP has a zero knowledge
protocol
- Proof using Graph Hamiltonicity.
- Is ZK sufficient for authentication? The need for POK.
Lecture 9 : More on ZK
- Auxiliary input ZK. What is it? Why is it necessary? Constructions from
OWP that is secure against circuis/adversaries with advice.
- Sequential repetition and parallel repletion of ZK.
- The notion of POK.
- Application: authentication schemes.
Lecture 10 : Misc.
- Summary of course.
- Bit commitment from PRGs.
- The notion of secure function evaluation.
- The simulation paradigm: real vs. ideal. (we did not gave precise
definitions as they are complicated).
- Malicious adversaries and honest but curious adversaries.
- Why ZK can be used to compile protocols secure against adversaries into
protocols against malicious adversaries.(sketch)
Home assignment
The home assignment can be downloaded here. Any
updates will appear below.
Updates: