1 of 183

Catena: Efficient Non-equivocation via Bitcoin

Wednesday, December 13th, 2017

Alin Tomescu

alinush@mit.edu

Srinivas Devadas

devadas@mit.edu

Cambridge Blockchain Meetup,

Cambridge, MA

2 of 183

Acknowledgements

Neha Narula, MIT DCI

Albert Kwon

Ilia Lebedev

Ling Ren

Chris Fletcher

Charles Herder

3 of 183

Overview

  1. What?
  2. How?
  3. Why?

4 of 183

Overview

  • What?
  • How?
  • Why?

5 of 183

The equivocation problem

6 of 183

The equivocation problem

Non-equivocation: "Saying the same thing to everybody."

7 of 183

The equivocation problem

Non-equivocation: "Saying the same thing to everybody."

Malicious service

Bob

Alice

8 of 183

The equivocation problem

Non-equivocation: "Saying the same thing to everybody."

Malicious service

Bob

Alice

S1

9 of 183

The equivocation problem

Non-equivocation: "Saying the same thing to everybody."

Malicious service

Bob

Alice

S1

S2

10 of 183

The equivocation problem

Non-equivocation: "Saying the same thing to everybody."

Malicious service

Bob

Alice

S1

S2

S3

11 of 183

The equivocation problem

Non-equivocation: "Saying the same thing to everybody."

Malicious service

Bob

Alice

S1

S2

S3

Might be false, but everybody sees it.

12 of 183

The equivocation problem

Equivocation: "Saying different things to different people."

Malicious service

Bob

Alice

S1

S2

S3

S4

S'4

13 of 183

The equivocation problem

Equivocation: "Saying different things to different people."

Jimmy

Dad

Mom

S1

S2

S3

S4

S'4

14 of 183

The equivocation problem

Equivocation: "Saying different things to different people."

Jimmy

Dad

Mom

S1

S2

S3

S4

S'4

"Mom said I can go outside…"

15 of 183

The equivocation problem

Equivocation: "Saying different things to different people."

Jimmy

Dad

Mom

S1

S2

S3

S4

S'4

"Mom said I can go outside…"

"Dad said I can go outside…"

16 of 183

Catena prevents equivocation!

17 of 183

Catena prevents equivocation!

Malicious service with Catena

Bob

Alice

S1

S2

S3

Damn.

18 of 183

Catena prevents equivocation!

Malicious service with Catena

Bob

Alice

S1

S2

S3

I gotta show Alice and Bob the same S4...

S4

19 of 183

So what?

20 of 183

So what?

Secure software update

21 of 183

So what?

Secure software update

  • Attacks on Bitcoin binaries

22 of 183

So what?

Secure software update

  • Attacks on Bitcoin binaries

Secure messaging

  • HTTPS
  • "We assume a PKI."

23 of 183

So what?

Secure software update

  • Attacks on Bitcoin binaries

Secure messaging

  • HTTPS
  • "We assume a PKI."

"Blockchain" for X

24 of 183

Contributions

25 of 183

Contributions

  • Bitcoin-based append-only log,

26 of 183

Contributions

  • Bitcoin-based append-only log,
    • Generalizes to other cryptocurrencies

27 of 183

Contributions

  • Bitcoin-based append-only log,
    • Generalizes to other cryptocurrencies
  • ...as hard-to-fork as the Bitcoin blockchain
    • Want to fork? Do some work!

28 of 183

Contributions

  • Bitcoin-based append-only log,
    • Generalizes to other cryptocurrencies
  • ...as hard-to-fork as the Bitcoin blockchain
    • Want to fork? Do some work!
  • ...but efficiently auditable

29 of 183

Contributions

  • Bitcoin-based append-only log,
    • Generalizes to other cryptocurrencies
  • ...as hard-to-fork as the Bitcoin blockchain
    • Want to fork? Do some work!
  • ...but efficiently auditable
    • 600 bytes / statement
    • 80 bytes / Bitcoin block

30 of 183

Contributions

  • Bitcoin-based append-only log,
    • Generalizes to other cryptocurrencies
  • ...as hard-to-fork as the Bitcoin blockchain
    • Want to fork? Do some work!
  • ...but efficiently auditable
    • 600 bytes / statement
    • 80 bytes / Bitcoin block
  • Java implementation (3500 SLOC)

31 of 183

Overview

  • What?
  • How?
    1. Bitcoin background
  • Why?

32 of 183

Bitcoin blockchain

Block n

Block i

Block j

33 of 183

Bitcoin blockchain

Block n

Block i

Block j

  • Hash chain of blocks

34 of 183

Bitcoin blockchain

Block n

Block i

Block j

  • Hash chain of blocks
    • Arrows are hash pointers

35 of 183

Bitcoin blockchain

Block n

Block i

Block j

  • Hash chain of blocks
    • Arrows are hash pointers
  • Merkle tree of TXNs in each block

36 of 183

Bitcoin blockchain

Block n

Block i

Block j

  • Hash chain of blocks
    • Arrows are hash pointers
  • Merkle tree of TXNs in each block
  • Proof-of-work (PoW) consensus

37 of 183

Bitcoin blockchain

Block n

Block i

Block j

txa

  • Transactions mint coins

38 of 183

Bitcoin blockchain

Block n

Block i

Block j

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

txa

PKA minted 4Ƀ

39 of 183

Bitcoin blockchain

Block n

Block i

Block j

txa

PKA minted 4Ƀ

txb

PKB has 3Ƀ

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

40 of 183

Bitcoin blockchain

Block n

Block i

Block j

txb

txa

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

41 of 183

Bitcoin blockchain

Block n

Block i

Block j

txb

txa

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

txb "spends" txa's first output

42 of 183

Bitcoin blockchain

Block n

Block i

Block j

txb

txa

s1

PKA minted 4Ƀ

from SKA

Arbitrary statement s1

PKB has 3Ƀ

Data can be embedded in TXNs.

43 of 183

Bitcoin blockchain

Block n

Block i

Block j

txb

txa

PKA minted 4Ƀ

from SKA

PKB has 3Ƀ

Alice gives Bob 3Ƀ,

Bitcoin miners collected 1Ƀ as a fee.

s1

44 of 183

Bitcoin blockchain

Block n

Block i

Block j

txb

txc

s1

PKB has 3Ƀ

from SKB

PKC has 2Ƀ

Bob gives Carol 2Ƀ,

Bitcoin miners collected another Ƀ as a fee.

45 of 183

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.

46 of 183

Moral of the story

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

Either TX2 or TX2' but not both!

TX1

TX2'

TX2

47 of 183

Moral of the story

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

Either s2 or s2'

but not both!

TX1

TX2'

TX2

s1

s2

s'2

48 of 183

Overview

  • What?
  • How?
    • Bitcoin background
    • Previous work
  • Why?

49 of 183

Previous work

Block i

Block j

Block n

s1

s2

TX

TX

TX

s3

50 of 183

Previous work

Block i

Block j

Block n

Need to download

full blocks to find inconsistent s'3

s1

s2

TX

TX

TX

s3

TX

s'3

51 of 183

Previous work

Block i

Block j

Block n

...or trust majority of nodes to not hide statements.

s1

s2

TX

TX

TX

s3

TX

s'3

52 of 183

Our work

Block i

Block j

Block n

s1

s2

TX

TX

TX

s3

TX

s'3

No inconsistent s'3 as it would require a double-spend!

53 of 183

Previous work

Block i

Block j

Block n

s1

s2

TX

TX

TX

s3

TX

s'3

54 of 183

Our work

Block i

Block j

Block n

s1

s2

TX

TX

TX

s3

TX

s'3

55 of 183

Overview

  • What?
  • How?
    • Bitcoin background
    • Previous work
    • Design
  • Why?

56 of 183

Starting a Catena log

Catena

log server

Server's funds

57 of 183

Starting a Catena log

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

GTX

Block i

Genesis TXN

Catena

log server

58 of 183

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

s1

GTX

Block i

Block j

Catena

log server

TX1

59 of 183

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

s1

GTX

TX1

Block i

Block j

s2

TX2

Block n

Catena

log server

60 of 183

Appending to a Catena log

  • Server is compromised, still cannot equivocate.

s1

GTX

Block i

Block j

Catena

log server

s2

Block n

Next, unique s3

TX1

TX2

61 of 183

Appending to a Catena log

Advantages:

(1) Hard to fork

(2) Efficient to verify

s1

GTX

Block i

Block j

Catena

log server

s2

Block n

Next, unique s3

TX1

TX2

62 of 183

Appending to a Catena log

Advantages:

(1) Hard to fork

(2) Efficient to verify

Disadvantages:

(1) 6-block confirmation delay

s1

GTX

Block i

Block j

Catena

log server

s2

Block n

TX1

TX2

Next, unique s3

63 of 183

Appending to a Catena log

Advantages:

(1) Hard to fork

(2) Efficient to verify

Disadvantages:

(1) 6-block confirmation delay

(2) 1 statement every 10 minutes

s1

GTX

Block i

Block j

Catena

log server

s2

Block n

TX1

TX2

Next, unique s3

64 of 183

Appending to a Catena log

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

s1

GTX

Block i

Block j

Catena

log server

s2

Block n

TX1

TX2

Next, unique s3

65 of 183

Appending to a Catena log

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

(4) No freshness guarantee

s1

GTX

Block i

Block j

Catena

log server

s2

Block n

TX1

TX2

Next, unique s3

66 of 183

Overview

  • Catena: What?
  • Catena: How?
    • Bitcoin background
    • Previous work
    • Design
    • Efficient auditing
  • Potentially-interesting applications

67 of 183

Efficient auditing

68 of 183

Efficient auditing

Catena

log server

Catena

client

69 of 183

Efficient auditing

Catena

log server

Catena

client

Bitcoin P2P

(11,500 nodes)

70 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

GTX

Bitcoin P2P

(11,500 nodes)

71 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

GTX

Bitcoin P2P

(11,500 nodes)

Q: Next block header(s)?

72 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

GTX

Bitcoin P2P

(11,500 nodes)

Header i+1

Header j

80 bytes each

73 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

GTX

Bitcoin P2P

(11,500 nodes)

74 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

GTX

Bitcoin P2P

(11,500 nodes)

Q: What is s1 in the log?

75 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

GTX

Bitcoin P2P

(11,500 nodes)

TX1

s1

600 bytes

76 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

TX1

s1

GTX

Bitcoin P2P

(11,500 nodes)

77 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

TX1

s1

GTX

Q: Next block header(s)?

Bitcoin P2P

(11,500 nodes)

78 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

TX1

s1

GTX

Header j+1

Header n

Bitcoin P2P

(11,500 nodes)

79 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

Header n

TX1

s1

GTX

Bitcoin P2P

(11,500 nodes)

80 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

Header n

TX1

s1

GTX

Q: What is s2 in the log?

Bitcoin P2P

(11,500 nodes)

81 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

Header n

TX1

s1

GTX

TX2

s2

Bitcoin P2P

(11,500 nodes)

82 of 183

Efficient auditing

Catena

log server

Catena

client

Header i

Header j

Header n

TX1

s1

GTX

TX2

s2

Bitcoin P2P

(11,500 nodes)

83 of 183

Auditing bandwidth

e.g., 500K block headers + 10K statements = ~46 MB

(80 bytes each)

(around 600 bytes each)

84 of 183

Overview

  • What?
  • How?
    • Bitcoin background
    • Previous work
    • Design
    • Efficient auditing
    • Scalability
  • Why?

85 of 183

Catena scalability

Catena client 2

Catena client 1

Catena client 200,000?

...

P2P

>11,500 full nodes

Supports up to ~1,345,500 incoming connections

86 of 183

Catena scalability

Catena client 2

Catena client 1

Catena client 200,000?

Q: Next block header(s)?

...

Q: Next block header(s)?

Q: Next block header(s)?

P2P

>11,500 full nodes

Supports up to ~1,345,500 incoming connections

87 of 183

Catena scalability

Q: Next block header(s)?

Catena client 2

Catena client 1

Catena client 200,000?

Q: Next block header(s)?

Q: Next block header(s)?

...

200,000 Catena clients ⇒ "Accidental" DDoS attack on Bitcoin.

P2P

>11,500 full nodes

Supports up to ~1,345,500 incoming connections

88 of 183

Catena scalability

Header Relay Network (HRN)

Volunteer nodes

Blockchain explorers

Facebook, Twitter, GitHub, etc.

...

P2P

Header 1

Header n

Catena client 2

Catena client 1

Catena client 200,000

89 of 183

Catena scalability

Header Relay Network (HRN)

Volunteer nodes

Blockchain explorers

Facebook, Twitter, GitHub, etc.

Q: Next block header(s)?

...

P2P

Header 1

Header n

Catena client 2

Catena client 1

Catena client 200,000

Q: Next block header(s)?

Q: Next block header(s)?

90 of 183

Catena scalability

Q: Next block header(s)?

Q: Next block header(s)?

Q: Next block header(s)?

Header Relay Network (HRN)

Volunteer nodes

Blockchain explorers

Facebook, Twitter, GitHub, etc.

...

P2P

Header 1

Header n

Catena client 2

Catena client 1

Catena client 200,000

91 of 183

The cost of a statement

92 of 183

The cost of a statement

To append a statement, must issue TXN and pay fee.

93 of 183

The cost of a statement

To append a statement, must issue TXN and pay fee.

TXN size: 235-byte

94 of 183

The cost of a statement

To append a statement, must issue TXN and pay fee.

TXN size: 235-byte

Fee (as of Dec 13th, 2017): $16.24 (10 mins)

95 of 183

The cost of a statement

To append a statement, must issue TXN and pay fee.

TXN size: 235-byte

Fee (as of Dec 13th, 2017): $16.24 (10 mins)

PS: Statements can be "batched" using Merkle trees.

96 of 183

Overview

  • What?
  • How?
  • Why?
    • Secure software update

97 of 183

Secure software update

98 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

99 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

100 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

(3) Wait for people to install your malicious Bitcoin binary

101 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

(3) Wait for people to install your malicious Bitcoin binary

(4) Steal their coins, steal their data, etc.

102 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

(3) Wait for people to install your malicious Bitcoin binary

(4) Steal their coins, steal their data, etc.

Example: bitcoin.org, "0.13.0 Binary Safety Warning," August 17th, 2016

103 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

(3) Wait for people to install your malicious Bitcoin binary

(4) Steal their coins, steal their data, etc.

Example: bitcoin.org, "0.13.0 Binary Safety Warning," August 17th, 2016

Typical defense: Sign your binaries with SK and protect SK.

104 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

(3) Wait for people to install your malicious Bitcoin binary

(4) Steal their coins, steal their data, etc.

Example: bitcoin.org, "0.13.0 Binary Safety Warning," August 17th, 2016

Typical defense: Sign your binaries with SK and protect SK.

Problem: (1) Not everyone checks sig. (2) Hard to detect stolen SK.

105 of 183

Secure software update

Example attack:

(1) Compromise bitcoin.org (or the network)

(2) Change the Bitcoin binary to your malicious binary

(3) Wait for people to install your malicious Bitcoin binary

(4) Steal their coins, steal their data, etc.

Example: bitcoin.org, "0.13.0 Binary Safety Warning," August 17th, 2016

Typical defense: Sign your binaries with SK and protect SK.

Problem: (1) Not everyone checks sig. (2) Hard to detect stolen SK.

Solution: Publish signatures in a Catena log ⇒ Can at least detect.

106 of 183

Software transparency to the rescue

h1

GTX

Block i

Block j

Catena log for Bitcoin binaries

h1 = SHA256(bitcoin-0.0.1.tar.gz)

107 of 183

Software transparency to the rescue

h1

GTX

Block i

Block j

h2'

Block n

h1 = SHA256(bitcoin-0.0.1.tar.gz)

h2' = SHA256(evilcoin-0.0.2.tar.gz)

Catena log for Bitcoin binaries

108 of 183

Software transparency to the rescue

h1

GTX

Block i

Block j

h2'

Block n

Catena log for Bitcoin binaries

h1 = SHA256(bitcoin-0.0.1.tar.gz)

h2' = SHA256(evilcoin-0.0.2.tar.gz)

h2 = SHA256(bitcoin-0.0.2.tar.gz)

h2

109 of 183

Software transparency to the rescue

h1

GTX

Block i

Block j

h2'

Block n

Catena log for Bitcoin binaries

h1 = SHA256(bitcoin-0.0.1.tar.gz)

h2' = SHA256(evilcoin-0.0.2.tar.gz)

h2 = SHA256(bitcoin-0.0.2.tar.gz)

h2

Must double-spend to equivocate!

110 of 183

Overview

  • What?
  • How?
  • Why?
    • Secure software update
    • Secure messaging

111 of 183

KeyChat: Secure messaging via Bitcoin

Keybase.io + Bitcoin + Catena.

112 of 183

KeyChat: Secure messaging via Bitcoin

Keybase.io + Bitcoin + Catena.

Impersonation attack as hard as forking Bitcoin.

113 of 183

KeyChat: Secure messaging via Bitcoin

Keybase.io + Bitcoin + Catena.

Impersonation attack as hard as forking Bitcoin.

MIT PRIMES high schoolers:

Yiming Zheng, John Kuszmaul, Robert Chen

114 of 183

Public-key distribution

115 of 183

Public-key distribution

PKM, SKM

PKA, SKA

PKB, SKB

116 of 183

Public-key distribution

PKA

PKM, SKM

PKA, SKA

PKB, SKB

117 of 183

Public-key distribution

PKA

PKM

PKM, SKM

Alice's PKM

PKA, SKA

PKB, SKB

118 of 183

Public-key distribution

PKB

PKM, SKM

Alice's PKM

PKA, SKA

PKB, SKB

119 of 183

Public-key distribution

PKM

PKB

PKM, SKM

Alice's PKM

Bob's PKM

PKA, SKA

PKB, SKB

120 of 183

Public-key distribution

PKM, SKM

Alice's PKM

Bob's PKM

PKA, SKA

PKB, SKB

121 of 183

Public-key distribution

EncM(msg)

PKM, SKM

Alice's PKM

Bob's PKM

PKA, SKA

PKB, SKB

122 of 183

Public-key distribution

EncM(msg)

Alice's PKM

Bob's PKM

PKA, SKA

PKB, SKB

PKM, SKM

I know their message 'msg'!

123 of 183

Public-key distribution

EncM(msg)

EncB(msg)

Alice's PKM

Bob's PKM

PKA, SKA

PKB, SKB

PKM, SKM

124 of 183

Public-key distribution

EncA(msg')

EncM(msg')

PKM, SKM

Alice's PKM

Bob's PKM

PKA, SKA

PKB, SKB

Ha! Another message 'msg'!

125 of 183

Public-key distribution

Using Certificate Authorities (CAs) does not help much: Mallory compromises or coerces CA instead.

PKM, SKM

Alice's PKM

Bob's PKM

EncA(msg')

EncM(msg')

PKA, SKA

PKB, SKB

126 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

B

A

t1

127 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

t2

128 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

t2

129 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

t2

130 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

t2

B'

A'

t3

131 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

t2

B'

A'

t3

I've been impersonated!

132 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

t2

B'

A'

t3

I've been impersonated!

I've been impersonated!

133 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

B'

A

t3

t2

I'm not impersonated.

134 of 183

Public-key distribution

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

B'

A

t3

B

A'

t3'

t2

I'm not impersonated.

I'm not impersonated.

135 of 183

Public-key distribution

EncA'(msg)

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

B'

A

t3

B

A'

t3'

t2

Great, gotta say something to Alice...

136 of 183

Public-key distribution

EncA'(msg)

A = {Alice, PKA}, SKA

B = {Bob, PKB}, SKB

C

B

E

D

A

B

A

t1

A' = {Alice, PKM}, SKM

B' = {Bob, PKM}, SKM

B'

A

t3

B

A'

t3'

t2

Great, gotta say something to Alice...

137 of 183

KeyChat

Idea: Store t1, t2, ..., tn in a Catena log.

138 of 183

KeyChat

Idea: Store t1, t2, ..., tn in a Catena log.

C

B

E

D

A

B

A

t1

B'

A

t3

B

A'

t3'

t2

139 of 183

KeyChat

Idea: Store t1, t2, ..., tn in a Catena log.

C

B

E

D

A

B

A

t1

B'

A

t3

B

A'

t3'

t2

Block i

Block j

Block n

t1

t2

t3

t'3

Publishing t'3 and t3 would require a double-spend!

140 of 183

Overview

  • What?
  • How?
  • Why?
    • Secure software update
    • Secure messaging
    • "Blockchain" for X

141 of 183

I need a "blockchain" for ...

142 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

143 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR)

144 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops

145 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

146 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

147 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

Permissioned "blockchain:"

  • Your favorite Byzantine SMR algorithm

148 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

Permissioned "blockchain:"

  • Your favorite Byzantine SMR algorithm
  • Ethereum Smart Contract (pay fees per op)

149 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

Permissioned "blockchain:"

  • Your favorite Byzantine SMR algorithm
  • Ethereum Smart Contract (pay fees per op)
  • Catena + 2f+1 replicas (pay fees per op batch)

150 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

Permissioned "blockchain:"

  • Your favorite Byzantine SMR algorithm
  • Ethereum Smart Contract (pay fees per op)
  • Catena + 2f+1 replicas (pay fees per op batch)
  • Don't need execution? Use Catena directly.

151 of 183

I need a "blockchain" for ...

IoT? Self-driving cars? Digital identity? Issue diplomas? Health care? Voting?

"Blockchain" = Byzantine State Machine Replication (SMR) =

= Agree on log of ops + Execute ops = Agree on final state.

Permissioned "blockchain:"

  • Your favorite Byzantine SMR algorithm
  • Ethereum Smart Contract (pay fees per op)
  • Catena + 2f+1 replicas (pay fees per op batch)
  • Don't need execution? Use Catena directly.

Permissionless "blockchain:" Roll your own. But proceed with caution?

152 of 183

Conclusions

153 of 183

Conclusions

What we did:

  • Enabled applications to efficiently leverage Bitcoin's publicly-verifiable consensus
    • Download transactions selectively rather than full blockchain
    • ~46 MB instead of gigabytes of bandwidth

154 of 183

Conclusions

What we did:

  • Enabled applications to efficiently leverage Bitcoin's publicly-verifiable consensus
    • Download transactions selectively rather than full blockchain
    • ~46 MB instead of gigabytes of bandwidth

Why it matters:

  • Secure software update schemes
  • Public-key directories for HTTPS and secure messaging
  • "Blockchain" for X

For more, read our paper!

155 of 183

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

Previous work

Catena

156 of 183

Extra slides

157 of 183

What is non-equivocation?

Public-key directory

  • At time i, publishes digest si

158 of 183

What is non-equivocation?

Public-key directory

  • At time i, publishes a single digest si

159 of 183

What is non-equivocation?

Public-key directory

PKA

PKB

t1

Bob

Alice

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

s1 = SHA256(t1)

160 of 183

What is non-equivocation?

Public-key directory

Bob

Alice

t2

PKA

PKB

t1

PKA

PKB

s1 = SHA256(t1)

s2 = SHA256(t2)

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

161 of 183

What is non-equivocation?

Public-key directory

Bob

Alice

t2

PKA

PKB

t1

PKA

PKB

s1 = SHA256(t1)

s2 = SHA256(t2)

  • Alice and Bob can "monitor" own PKs

162 of 183

What is non-equivocation?

Public-key directory

Bob

Alice

t2

PKA

PKB

t1

PKA

PKB

s1 = SHA256(t1)

s2 = SHA256(t2)

  • Alice and Bob can "monitor" own PKs

163 of 183

What is non-equivocation?

Bob

Alice

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

164 of 183

What is non-equivocation?

Bob

Alice

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

165 of 183

What is non-equivocation?

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

Bob

Alice

t2

PKA

PKB

t1

PKA

PKB

PKA'

s1 = SHA256(t1)

s2 = SHA256(t2)

Public-key directory

166 of 183

What is non-equivocation?

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

Bob

Alice

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

167 of 183

What is equivocation?

S1

PKA

PKB

t1

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

Public-key directory

168 of 183

What is equivocation?

Alice

t2

PKA

PKB

PKB'

PKA

PKB

t1

Public-key directory

S1

S2

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

169 of 183

What is equivocation?

Bob

Alice

t2'

PKA

PKB

PKA'

t2

PKA

PKB

PKB'

PKA

PKB

t1

Public-key directory

S1

S2

S2'

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

170 of 183

What is equivocation?

Bob

Alice

t2'

PKA

PKB

PKA'

t2

PKA

PKB

PKB'

PKA

PKB

t1

Public-key directory

S1

S2

S2'

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

171 of 183

What is equivocation?

Bob

Alice

t2'

PKA

PKB

PKA'

t2

PKA

PKB

PKB'

PKA

PKB

t1

Public-key directory

S1

S2

S2'

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

172 of 183

What is equivocation?

MITM

Bob

Alice

t2'

PKA

PKB

PKA'

t2

PKA

PKB

PKB'

PKA

PKB

t1

Public-key directory

S1

S2

S2'

  • Obtain fake keys for each other ⇒ MITM

173 of 183

What is equivocation?

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

MITM

Bob

Alice

t2'

PKA

PKB

PKA'

t2

PKA

PKB

PKB'

PKA

PKB

t1

Public-key directory

S1

S2

S2'

174 of 183

Bitcoin: The full picture

Payment TXs

blocki

A ➝ ,

95K

A ➝ ,

95K

B ➝ A, $100K

Peer-to-peer network

Miners

A

Customers

Merchants

Payment verification

A ➝ , $95K

blockj

A ➝ , $95K

175 of 183

Catena transaction format

A single spendable output ⇒ No forks

txi

"Change" coins back to server

(public key)

Unspendable OP_RETURN output with arbitrary data

Coins from server for paying TX fees

(digital signature)

txj

txi

txk

<data>

176 of 183

BKD: A Bitcoin-backed PKD

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

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

A

B

A'

B'

E

D

A"

B"

D'

C

TX

TX

TX

t1

t3

t2

177 of 183

Bitcoin blockchain

Block n'

Block i

Block j

Blockchain forks ⇔ Double-spent coins

Block n

s1

txb

txc

txc'

178 of 183

Previous work

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

179 of 183

Previous work

tx1

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

tx1[0] = (2Ƀ, PK)

SK, PK

180 of 183

Previous work

tx1

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

tx1[0] = (2Ƀ, PK)

SK, PK

signSK(i, s)

signSK(i, s')

181 of 183

Previous work

tx1

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

SK, PK

signSK(i, s)

signSK(i, s')

extractSK()

secret key SK

182 of 183

Previous work

tx2

tx1

"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')

183 of 183

Previous work

tx2

tx1

"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)