catena: efficient non-equivocation via bitcoin · 2 pk a pk b t 1 pk a pk b s 1 = sha256(t 1) s 2...

98
Catena: Efficient Non-equivocation via Bitcoin Tuesday, May 23rd, 2017 Alin Tomescu alinush @mit.edu Srinivas Devadas devadas @mit.edu IEEE Security & Privacy 2017, San Jose, CA

Upload: others

Post on 22-Jul-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena: Efficient Non-equivocation via Bitcoin

Tuesday, May 23rd, 2017

Alin [email protected]

Srinivas [email protected]

IEEE Security & Privacy 2017, San Jose, CA

Page 2: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

What is non-equivocation?

Page 3: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key directory

What is non-equivocation?

● At time i, publishes digest si

Page 4: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key directory

What is non-equivocation?

● At time i, publishes a single digest si

Page 5: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key directory

What is non-equivocation?

PKA PKB

t1Bob

Alice

● At time i, publishes a single digest si● At time 1, Alice, Bob and others "see" s1

s1 = SHA256(t1)

Page 6: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key directory

Bob

Alice

What is non-equivocation?

t2

PKA PKB

t1

PKA PKB

s1 = SHA256(t1) s2 = SHA256(t2)

●● At time 2, Alice, Bob and others "see" s1 , s2 , ...

Page 7: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key directory

Bob

Alice

What is non-equivocation?

t2

PKA PKB

t1

PKA PKB

s1 = SHA256(t1) s2 = SHA256(t2)

● Alice and Bob can "monitor" own PKs

Page 8: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key directory

Bob

Alice

What is non-equivocation?

t2

PKA PKB

t1

PKA PKB

s1 = SHA256(t1) s2 = SHA256(t2)

● Alice and Bob can "monitor" own PKs

Page 9: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Bob

Alice

What is non-equivocation?

t2

PKA PKB

t1

PKA PKB PKA'

s1 = SHA256(t1) s2 = SHA256(t2)

● Alice and Bob can "monitor" own PKs● ...and server has to impersonate in plain sight

Public-key directory

Page 10: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Bob

Alice

What is non-equivocation?

t2

PKA PKB

t1

PKA PKB PKA'

s1 = SHA256(t1) s2 = SHA256(t2)

Public-key directory

● Alice and Bob can "monitor" own PKs● ...and server has to impersonate in plain sight

Page 11: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Good: "Stating the same thing to all people."

Bob

Alice

What is non-equivocation?

t2

PKA PKB

t1

PKA PKB PKA'

s1 = SHA256(t1) s2 = SHA256(t2)

Public-key directory

Page 12: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Good: "Stating the same thing to all people."

Bob

Alice

What is non-equivocation?

t2

s1 = SHA256(t1) s2 = SHA256(t2)

PKA PKB

t1

PKA PKB PKA'

Including statements that are

incorrect at the application-layer

Public-key directory

Page 13: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

What is equivocation?

S1

PKA PKB

t1

● At time 2, malicious server publishes s2 and s2'

Public-key directory

Page 14: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Alice

t2

PKA PKB PKB'

What is equivocation?

PKA PKB

t1

Public-key directory

S1

S2

● s2: Leave Alice's key intact, add fake PKB' for Bob

Page 15: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Bob

Alice

t2'

PKA PKB PKA'

t2

PKA PKB PKB'

What is equivocation?

PKA PKB

t1

Public-key directory

S1

S2

S2'

● s2': Leave Bob's key intact, add fake PKA' for Alice

Page 16: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Bob

Alice

t2'

PKA PKB PKA'

t2

PKA PKB PKB'

What is equivocation?

PKA PKB

t1

Public-key directory

S1

S2

S2'

● Alice not impersonated in her view, but Bob is.

Page 17: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Bob

Alice

t2'

PKA PKB PKA'

t2

PKA PKB PKB'

What is equivocation?

PKA PKB

t1

Public-key directory

S1

S2

S2'

● Bob not impersonated in his view, but Alice is.

Page 18: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

MITM

Bob

Alice

t2'

PKA PKB PKA'

t2

PKA PKB PKB'

What is equivocation?

PKA PKB

t1

Public-key directory

S1

S2

S2'

● Obtain fake keys for each other ⇒ MITM

Page 19: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

MITM

Bob

Alice

t2'

PKA PKB PKA'

t2

PKA PKB PKB'

Bad: "Stating different things to different people.'"

What is equivocation?

PKA PKB

t1

Public-key directory

S1

S2

S2'

Page 20: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Where is non-equivocation necessary?

Public-key distribution (PKD)- HTTPS- Secure messaging- "We assume a PKI."

Page 21: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key distribution (PKD)- HTTPS- Secure messaging- "We assume a PKI."

Tor Directory Servers

Where is non-equivocation necessary?

Page 22: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Public-key distribution (PKD)- HTTPS- Secure messaging- "We assume a PKI."

Tor Directory Servers

Software transparency schemes- Attacks on Bitcoin binaries

Where is non-equivocation necessary?

Page 23: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Contributions

Page 24: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Contributions● Bitcoin-based append-only log,

Page 25: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Contributions● Bitcoin-based append-only log,

● ...as hard-to-fork as the Bitcoin blockchain

○ Want to fork? Do some work!

Page 26: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Contributions● Bitcoin-based append-only log,

● ...as hard-to-fork as the Bitcoin blockchain

○ Want to fork? Do some work!

● ...but efficiently auditable

Page 27: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Contributions● Bitcoin-based append-only log,

● ...as hard-to-fork as the Bitcoin blockchain

○ Want to fork? Do some work!

● ...but efficiently auditable

○ 600 bytes / statement (e.g., PKD digests)

○ 80 bytes / Bitcoin block

Page 28: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Contributions● Bitcoin-based append-only log,

● ...as hard-to-fork as the Bitcoin blockchain

○ Want to fork? Do some work!

● ...but efficiently auditable

○ 600 bytes / statement (e.g., PKD digests)

○ 80 bytes / Bitcoin block

● Java implementation (3500 SLOC)

Page 29: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Outline

1. Bitcoin background2. Previous work3. Catena design4. Catena scalability

Page 30: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

Bitcoin blockchain

Page 31: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

Bitcoin blockchain

● Hash chain of blocks

Page 32: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

Bitcoin blockchain

● Hash chain of blocks○ Arrows are hash pointers

Page 33: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

Bitcoin blockchain

● Hash chain of blocks○ Arrows are hash pointers

● Merkle tree of TXNs in each block

Page 34: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

Bitcoin blockchain

● Hash chain of blocks○ Arrows are hash pointers

● Merkle tree of TXNs in each block● Proof-of-work (PoW) consensus

Page 35: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

txa

Bitcoin blockchain

● Transactions mint coins

Page 36: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

Bitcoin blockchain

● Transactions mint coins● Output = # of coins and owner's PK

txa

PKA minted 4Ƀ

Page 37: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

txa

Bitcoin blockchain

PKA minted 4Ƀ

txb

PKB has 3Ƀ

● Transactions mint coins● Output = # of coins and owner's PK● Transactions transfer coins (and pay fees)

Page 38: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

txb

txa

Bitcoin blockchain

PKA minted 4Ƀ from SKA PKB has 3Ƀ

● Transactions mint coins● Output = # of coins and owner's PK● Transactions transfer coins (and pay fees)● Input = hash pointer to output & digital signature

Page 39: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

txb

txa

s1

Bitcoin blockchain

PKA minted 4Ƀ from SKA

Arbitrary statement s1

PKB has 3Ƀ

Data can be embedded in TXNs.

Page 40: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

txb

txa

Bitcoin blockchain

PKA minted 4Ƀ from SKA PKB has 3Ƀ

Alice gives Bob 3Ƀ,Bitcoin miners collected 1Ƀ as a fee.

s1

Page 41: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block nBlock i Block j

txb

txc

s1

Bitcoin blockchain

PKB has 3Ƀ from SKB PKC has 2Ƀ

Bob gives Carol 2Ƀ,Bitcoin miners collected another Ƀ as a fee.

Page 42: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Bitcoin blockchain

Block i Block j Block n

s1

txb

txc

txc'

No double-spent coins: A TXN output can only be referred to by a single TXN input.

Page 43: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Moral of the story

TX1

TX2'

TX2

Proof-of-work (PoW) consensus ⇒ No double spends

Either TX2 or TX2' but not both!

Page 44: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Moral of the story

TX1

TX2'

TX2

Proof-of-work (PoW) consensus ⇒ No double spends

Either s2 or s2' but not both!s1

s2

s'2

Page 45: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Outline

1. Bitcoin background2. Previous work3. Catena design4. Catena scalability

Page 46: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Previous work

Block i Block j Block n

s1 s2TX TX

TX s3

Page 47: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Previous work

Block i Block j Block n

Need to download full blocks to find

inconsistent s'3

s1 s2TX TX

TX s3

TX s'3

Page 48: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Our work

Block i Block j Block n

s1 s2TX TX

TX s3

TX s'3

No inconsistent s'3 as it would require a

double-spend!

Page 49: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Previous work

Block i Block j Block n

s1 s2TX TX

TX s3

TX s'3

Page 50: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Our work

Block i Block j Block n

s1 s2TX TX

TX s3

TX s'3

Page 51: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Outline

1. Bitcoin background2. Previous work3. Catena design4. Catena scalability

Page 52: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Server's funds

Starting a Catena log

Page 53: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

GTX

Block i

Genesis TXNCatena

log server

Starting a Catena log

● Genesis TXN (GTX) = log's "public key"● Coins from server back to server (minus fees)

Page 54: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

s1GTX

Block i Block j

Catena log server

TX1

Appending to a Catena log

● TX1 "spends" GTX's output, publishes s1● Coins from server back to server (minus fees)● Inconsistent s1' would require a double-spend

Page 55: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

s1GTX TX1

Block i Block j

s2TX2

Block n

Catena log server

Appending to a Catena log

● TX2 "spends" TX1's output, publishes s2● Coins from server back to server (minus fees)● Inconsistent s2' would require a double-spend

Page 56: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

s1GTX

Block i Block j

Catena log server

s2

Block n

Next,

unique s3

TX1 TX2

Appending to a Catena log

● Server is compromised, still cannot equivocate.

Page 57: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

s1GTX

Block i Block j

Catena log server

s2

Block n

Next,

unique s3

Advantages: (1) Hard to fork (2) Efficient to verify

TX1 TX2

Appending to a Catena log

Page 58: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

s1GTX

Block i Block j

Catena log server

s2

Block n

Advantages: (1) Hard to fork (2) Efficient to verify

Disadvantages: (1) 6-block confirmation delay(2) 1 statement every 10 minutes(3) Must pay Bitcoin TXN fees

TX1 TX2

Next,

unique s3

Appending to a Catena log

Page 59: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Efficient auditing

Page 60: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Efficient auditing

Catena log server

Catena client

Page 61: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Efficient auditing

Catena log server

Catena client

Bitcoin P2P(7000 nodes)

Page 62: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Efficient auditing

Catena log server

Catena client

Header i

GTX

Bitcoin P2P(7000 nodes)

Page 63: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i

GTX

Bitcoin P2P(7000 nodes)

Q: Next block header(s)?

Efficient auditing

Page 64: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i

GTX

Bitcoin P2P(7000 nodes)

Header i+1 Header j

Efficient auditing

80 bytes each

Page 65: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j

GTX

Bitcoin P2P(7000 nodes)

Efficient auditing

Page 66: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j

GTX

Bitcoin P2P(7000 nodes)

Q: What is s1 in the log?

Efficient auditing

Page 67: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j

GTX

Bitcoin P2P(7000 nodes)

TX1 s1

Efficient auditing

600 bytes

Page 68: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j

TX1 s1GTX

Bitcoin P2P(7000 nodes)

Efficient auditing

Page 69: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j

TX1 s1GTX

Bitcoin P2P(7000 nodes)

Q: Next block header(s)?

Efficient auditing

Page 70: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j

TX1 s1GTX

Bitcoin P2P(7000 nodes)

Header j+1 Header n

Efficient auditing

Page 71: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j Header n

TX1 s1GTX

Bitcoin P2P(7000 nodes)

Efficient auditing

Page 72: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j Header n

TX1 s1GTX

Bitcoin P2P(7000 nodes)

Q: What is s2 in the log?

Efficient auditing

Page 73: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j Header n

TX1 s1GTX

Bitcoin P2P(7000 nodes) TX2 s2

Efficient auditing

Page 74: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena log server

Catena client

Header i Header j Header n

TX1 s1GTX TX2 s2

Bitcoin P2P(7000 nodes)

Efficient auditing

Page 75: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Auditing bandwidth

e.g., 460K block headers + 10K statements = ~41 MB (80 bytes each) (around 600 bytes each)

Page 76: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Outline

1. Bitcoin background2. Previous work3. Catena design4. Catena scalability

Page 77: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena scalability

Catena client 2

Catena client 1

Catena client 100,000?

...

P2P~7000 full nodes

Supports up to ~819,000 incoming connections

Page 78: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

P2P~7000 full nodes

Supports up to ~819,000 incoming connections

Catena scalability

Catena client 2

Catena client 1

Catena client 100,000?

Q: Next block header(s)?

...

Q: Next block header(s)?

Q: Next block header(s)?

Page 79: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena scalability

P2P~7000 full nodes

Supports up to ~819,000 incoming connections

Q: Next block header(s)?

Catena client 2

Catena client 1

Catena client 100,000?

Q: Next block header(s)?

Q: Next block header(s)?

...

100,000 Catena clients ⇒ "Unintended" DDoS

attack on Bitcoin.

Page 80: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena scalability

Header Relay Network (HRN)Volunteer nodes

Blockchain explorersFacebook, Twitter, GitHub,

etc.

...

P2P

Header 1 Header n

Catena client 2

Catena client 1

Catena client 100,000

Page 81: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena scalability

Header Relay Network (HRN)Volunteer nodes

Blockchain explorersFacebook, Twitter, GitHub,

etc.

Q: Next block header(s)?

...

P2P

Header 1 Header n

Catena client 2

Catena client 1

Catena client 100,000

Q: Next block header(s)?

Q: Next block header(s)?

Page 82: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Q: Next block header(s)?

Q: Next block header(s)?

Q: Next block header(s)?

Catena scalability

Header Relay Network (HRN)Volunteer nodes

Blockchain explorersFacebook, Twitter, GitHub,

etc.

...

P2P

Header 1 Header n

Catena client 2

Catena client 1

Catena client 100,000

Page 83: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Conclusions

Page 84: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Conclusions

What we did: - Enabled applications to efficiently leverage Bitcoin's

publicly-verifiable consensus- Download transactions selectively rather than full blockchain- ~41 MB instead of gigabytes of bandwidth

Page 85: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Conclusions

What we did: - Enabled applications to efficiently leverage Bitcoin's

publicly-verifiable consensus- Download transactions selectively rather than full blockchain- ~41 MB instead of gigabytes of bandwidth

Why it matters:- Public-key directories for HTTPS and secure messaging- Tor Consensus Transparency- Software transparency schemes- Turn fork consistency into full consistency

Page 86: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Conclusions

What we did: - Enabled applications to efficiently leverage Bitcoin's

publicly-verifiable consensus- Download transactions selectively rather than full blockchain- ~41 MB instead of gigabytes of bandwidth

Why it matters:- Public-key directories for HTTPS and secure messaging- Tor Consensus Transparency- Software transparency schemes- Turn fork consistency into full consistency

For more, read our paper!

Page 87: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Ask me questions!

Block j Block n

s1 s2

s'3

Block i Block j Block n

s1 s2

s3

s'3

s3

Block i

No inconsistent s'3 as it would require

a double-spend!

Need to download full blocks to find

inconsistent s'3

Prev

ious

wor

kC

aten

ahttps://github.com/alinush/catena-java

Page 88: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Extra slides

Page 89: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Payment T

Xs

Bitcoin: The full picture

blocki

A ➝ ,95K

A ➝ ,95K

B ➝ A, $100K

Peer-to-peer network

Miners

A

Customers Merchants

Payment

verificationA ➝ , $95K

blockj

A ➝ , $95K

Page 90: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Catena transaction format

txi"Change" coins back to server(public key)

Unspendable OP_RETURN output with arbitrary data

Coins from server for paying TX fees(digital signature)

A single spendable output ⇒ No forks txjtxi

txk

<data>

Page 91: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

BKD: A Bitcoin-backed PKD

Catena: Hard-to-fork, append-only log (Bitcoin-backed)

A B

A' B'

E D

A" B" D'C

TX TXTX

t1t3t2

BKD: Hard-to-fork public-key directory (Catena-backed)

Page 92: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Block n'

Bitcoin blockchain

Block i Block j

Blockchain forks ⇔ Double-spent coins

Block n

s1

txb

txc

txc'

Page 93: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

Previous work"Liar, liar, coins on fire!" (CCS '15)

Page 94: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

tx1

Previous work"Liar, liar, coins on fire!" (CCS '15)

tx1[0] = (2Ƀ, PK)

SK, PK

Page 95: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

tx1

Previous work"Liar, liar, coins on fire!" (CCS '15)

tx1[0] = (2Ƀ, PK)

SK, PK

signSK(i, s)

signSK(i, s')

Page 96: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

tx1

Previous work"Liar, liar, coins on fire!" (CCS '15)

SK, PK

signSK(i, s)

signSK(i, s')

extractSK()secret key SK

Page 97: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

tx2tx1

Previous work"Liar, liar, coins on fire!" (CCS '15)

SIGSK(tx1[0], tx2) tx2[0] = (2Ƀ, PK')

SK, PK

extractSK()secret key SK

signSK(i, s)

signSK(i, s')

Page 98: Catena: Efficient Non-equivocation via Bitcoin · 2 PK A PK B t 1 PK A PK B s 1 = SHA256(t 1) s 2 ... Must pay Bitcoin TXN fees TX 1 TX 2 Next, unique s 3 Appending to a Catena log

tx2tx1

Previous work"Liar, liar, coins on fire!" (CCS '15)

SK, PK

Disincentivizes equivocation by locking Bitcoin funds under SK.Does not prevent equivocation by malicious outsiders!

tx2[0] = (2Ƀ, PK')SIGSK(tx1[0], tx2)