— summary, paper, cryptography, security — 4 min read
Authors: David L. Chaum
Date: 1981
Link: PDF
A technique based on public key cryptography is presented that allows an electronic mail system to hide who a participant communicates with as well as the content of the communication--in spite of an unsecured underlying telecommunication system.
The technique does not require a universally trusted authority. One correspondent can remain anonymous to a second, while allowing the second to respond via an untraceble return address.
K
and K⁻¹
is created from a suitable randomly generated seed:K
= Public key.K⁻¹
= Private key.K(X)
= The encryption of X
with key K
— It's just the image of X
under the mapping implemented by the cryptographic algorithm using key K
.K⁻¹(K(X)) = K(K⁻¹(X)) = X
X
is sealed with a public key K
so that only the holder of the private key K⁻¹
can discover its content.X
is simply encrypted with K
, then anyone could verify a guess that Y = X
by checking whether K(Y) = K(X)
:R
to X
before encrypting.X
with K
is then denoted by K(R, X)
.R
or private key K⁻¹
.Kₙ
represent a mix's public key; Where ₙ
is an integer denoting the position of a mix.Kₐ
represent a recipient's (named A
) public key.M
for delivery to a participant at address A
by sealing it with the public key of A
(Kₐ
), appending the address A
, and then sealing the result with the mix's public key (K₁
).Sender
-> Packet { K₁(R₁, Kₐ(R₀, M), A) } -> Mix₁
R₁
, and outputs the remainder:Mix₁
peels off one layer of encryption and discovers a forwarding address.Mix₁
is malicious, it can't read Kₐ(R₀, M)
because it's encrypted with A
public key.Mix₁
-> Packet { Kₐ(R₀, M) } -> A
A
decrypts its input with its private key and obtains the message M
.Sender
-> Packet { Kₙ(Rₙ, Kₙ₋₁(Rₙ₋₂, ..., K₁(R₁, Kₐ(R₀, M), A) ... Aₙ₋₂), Aₙ₋₁) } -> Mixₙ
Mixₙ
-> Pakcet { Kₙ₋₁(Rₙ₋₂, ..., K₁(R₁, Kₐ(R₀, M), A) ... Aₙ₋₂) } -> Mixₙ₋₁
Mix₂
-> Packet { K₁(R₁, Kₐ(R₀, M), A) } -> Mix₁
Mix₁
-> Packet { Kₐ(R₀, M) } -> A
recipient
(named x
) to respond to the sender
(named y
) while keeping the identity of the x
a secret from the y
:K₁(R₁, Aₓ), Kₓ
; where:Aₓ
is its own real address,Kₓ
is a public key chosen for the occasion, andR₁
is a key that will also act as a random string for purposes of sealing.x
can send this return address to y
as part of a message sent by the techniques already described.y
uses this untraceable return address to form a response to x
, via a new kind of mix:R₁
that it finds after decrypting the address part K₁(R₁, Aₓ) as a key to re-encrypt the message part Kₓ(R₀, M).x
can decrypt the resulting output because x created both R₁
and Kₓ
.x
must supply y
with a return address for each item of mail x
wishes to receive.A digital pseudonym is a public key used to verify signatures made by the anonymous holder of the corresponding private key. A roster, or list of pseudonyms, is created by an authority that decides which applications for pseudonyms to accept, but is unable to trace the pseudonyms in the completed roster.\ The applications may be sent to the authority anonymously, by untraceable mail, for example, or they may be provided in some other way.