CS 395T
Contract Signing Protocols
Real-World Fair Exchange
Immunity
deal
General Setting
how to exchange information fairly on an
asynchronous network?
Both parties succeed or both fail
Why is Fair Exchange
Difficult?
Focus on Contract Signing
Protocols
Contract is known in advance to both parties.
We00l look at protocols for exchanging signatures, not for contract negotiation (e.g., auctions) Multi-party signing is more complicated The attacker could be another party on the network or the person you think you want to sign a contract with In key establishment protocols, usually assume that both parties are honestExample: Stock Trading
Willing
to sell stock at price X
Ok, willing
to buy at price X
stock
broker
customer
Signed contracts are essential as proofs of agreement in case market price changes
Many Types of Protocols
Contract Signing with
Online TTP
A
B
TTP
signature
signature
contract
contract
Problem: TTP is the communication bottleneck
Can it be removed?
Fundamental Limitation
Partial Intuition for
FLP Result
The asynchronous commit protocols in current use all seem to have a 00indow of vulnerability00 an interval of time during the execution of the algorithm in which the delay or inaccessibility of a single process can cause the entire algorithm to wait indefinitely. It follows from our impossibility result that every commit protocol has such a 00indow,00confirming a widely believed tenet in the folklore.
Optimistic Contract
Signing
A
B
I am
going to sign the contract
I am
going to sign the contract
Here
is my signature
Here is my signature
Crypto Magic: Signature
Escrows
Private contract signature PCSX(m,Y,T)
is an implementation of verifiable signature escrow
Non-interactive zero-knowledge designated-verifier proof of convertible commitment to a signature with a designated converter Can be created only by X, but Y can simulate it Therefore, Y cannot use it as proof of X00 participation T can convert PCS into a universallyverifiable signature sigX(m)
Y can verify that PCS sent by X can indeed be converted by T into X00 signatureOutsider can00 distinguish
X00 private contract signature
from Y00 simulation
Private Contract
Signatures
[Garay et al.]
A
B
PCSA(text,B,T)
PCSB(text,A,T)
sigA(text)
sigB(text)
[Garay,
Jakobsson, MacKenzie]
Abuse-Free Contract Signing
Role of Trusted Third
Party
B
A
T
r1
= PCSA(text,B,T), sigB(text)
aborted?
Yes: r2 = sigT(a1)
No: resolved := true
r2 = sigA(text)
store sigB(text)
r2
PCSA(text,B,T)
???
PCSB(text,A,T)
sigT(a1)
sigA(text)
or
Resolve Subprotocol
If A stops communicating,
B asks T to convert A00 PCS,
but must reveal his own sig
A
???
B
T
a1=sigA(m1,abort)
a2
resolved?
Yes: a2 = sigB(text)
No: aborted := true
a2 = sigT(a1)
m1 = PCSA(text,B,T)
sigB(text)
sigT(a1)
OR
Abort Subprotocol
A (but not B!) can ask T to abort
the protocol (i.e., to promise that
T won00 convert A00 PCS in future)
This is not a guarantee that A won00 be able to obtain B00 signature by
executing the protocol
Desirable Properties
Fairness and Timeliness
If A cannot obtain B00 signature, then
B should not be able
to obtain A00 signature
and vice
versa
Fairness
One player cannot force the other to wait --
a fair and timely termination can always be
forced by contacting
TTP
Timeliness
No Advantage (Balance)
No party should be able to unilaterally
determine the outcome
of the protocol
Stock sale example: there is a point in the protocol where
the broker can unilaterally choose
whether the sale happens or not
This property can fail
even if basic fairness is satisfied!
Can a timely, optimistic protocol be fair AND balanced?
Example of Advantage
Willing
to sell stock at price X
Ok, willing
to buy at price X
stock
broker
customer
Must be able to ask TTP to 00bort00 this
instance of protocol, or will be stuck
indefinitely if customer does not respond
Can go ahead and complete the sale, OR
can still ask TTP to 00bort00/font>
(TTP doesn00 know customer has responded)
Optimistically waits
for broker to respond00/font>
Chooses whether deal will happen:
does not have to commit stock for sale,
can cancel
if sale looks unprofitable
Cannot back out of the deal:
must commit
money for stock
FLP 00indow of vulnerability00again!
Game-Theoretic Model
Protocol as a Game Tree
...
...
...
...
(Y,N)
(Y,Y)
(Y,Y)
(N,Y)
(N,Y)
(N,N)
Define Properties on
Game Trees
No leaf node is labeled
(Y,N)
or (N,Y)
Fairness
B never has a strategy to reach (Y,Y)
AND a strategy to reach
(N,N)
No advantage (for B)
B cannot PROVE that
it has advantage
No provable advantage
(for B)
...
...
...
...
(Y,N)
(Y,Y)
(Y,Y)
(N,Y)
(N,Y)
(N,N)
Key Idea (omitting many subtleties)
if A can get contract by reading a message already in network or doing internal computation
if A can get contract by communicating with TTP, assuming B does nothing
otherwise
PowerA(s)
=
2
1
0
Advantage is Unavoidable
(Intuition)
Impossibility Result
00buse-Free00 As
Good as It Gets
No party should be able to unilaterally
determine
the outcome of the protocol
No advantage
No party should be able to prove that
it can unilaterally determine
the outcome
of the protocol
Abuse-Free
(No Provable Advantage)
impossible 00/font>
Achieved by Garay-Jakobsson-MacKenzie protocol
A
B
PCSA(text,B,T)
PCSB(text,A,T)
sigA(text)
sigB(text)
[Garay,
Jakobsson, MacKenzie]
Abuse-Free Contract
Signing
A has advantage here, but he can00 use B00 PCS to prove that B is participating
(e.g., to solicit another bid)
B
A
T
r1
= PCSA(text,B,T), sigB(text)
aborted?
Yes: r2 = sigT(a1)
No: resolved := true
r2 = sigA(text)
store sigB(text)
r2
PCSA(text,B,T)
???
PCSB(text,A,T)
sigT(a1)
sigA(text)
or
Resolve Subprotocol
If A stops communicating,
B asks T to convert A00 PCS,
but must reveal his own sig
A
???
B
T
a1=sigA(m1,abort)
a2
resolved?
Yes: a2 = sigB(text)
No: aborted := true
a2 = sigT(a1)
m1 = PCSA(text,B,T)
sigB(text)
sigT(a1)
OR
Abort Subprotocol
A (but not B!) can ask T to abort
the protocol (i.e., promise that he
won00 convert A00 PCS in future)
B
PCSA(text,B,T),
sigB(text)
sigT(abort)
PCSA(text,B,T)
PCSB(text,A,T)
T
sigA(abort)
sigT(abort)
Leaked by T
sigT(abort) AND
sigB(text)
only sigT(abort)
Attack on Accountability
B
PCSA(text,B,T),
PCSB(text,A,T)
PCSA(text,B,T)
PCSB(text,A,T)
T
If T converts PCS into a
conventional signature,
T can be held
accountable
Repairing the Protocol
