CS 70
Discrete Mathematics for CS
Spring 2008
David Wagner
Note 12
Fingerprinting
Suppose we just finished transmitting an enormous file to the Moon. We’d like to verify that our file got
there correctly, without any errors. We could of course resend the file a second time, but bandwidth to the
Moon is hard to come by, so this would take a long time. It’d be nice to have a better solution.
So, the problem is this: if we have a
n
bit bitstring
s
on Earth, and a
n
bit bitstring
s
′
on the Moon, how can
we efficiently verify that
s
=
s
′
? We will measure the efficiency of a solution by the number of bits that need
to be sent between the Earth and Moon to finish this task. We will assume that the Earth and Moon have a
reliable but lowbandwidth channel that they can use to communicate.
The approach
The gist of our idea is for the Earthlings to compute a short
fingerprint
of their data, and then send that
fingerprint to the Moon. The Moon can compute the fingerprint of their own copy of the data and check that
it matches the fingerprint received from the Earth. We will denote the fingerprint of data
s
by
F
(
s
)
, so the
Earth computes
F
(
s
)
and sends
F
(
s
)
to the Moon; the Moon computes
F
(
s
′
)
; and then the Moon checks
whether
F
(
s
) =
F
(
s
′
)
. If there is a mismatch in the fingerprints (
F
(
s
)
negationslash
=
F
(
s
′
)
), then we can conclude that
the two endpoints do not have the same data (
s
negationslash
=
s
′
).
If the two fingerprints
do
match (
F
(
s
) =
F
(
s
′
)
), what can we conclude? In this case, there is no guarantee
that the two endpoints definitely have the same data.
Since we want the fingerprint
F
(
s
)
to be shorter
than the data
s
, the function
F
(
·
)
cannot possibly be onetoone (injective), so it is possible that
s
negationslash
=
s
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
This is the end of the preview.
Sign up
to
access the rest of the document.
 Spring '08
 PAPADIMITROU
 s′

Click to edit the document details