Proving the Impossible with Alibi Protocols - Dave Levin - Victoria Lai, Cristian Lumezanu, Neil Spring, Bobby Bhattacharjee, Bo Han

Page created by Herman Patel
 
CONTINUE READING
Proving the Impossible
          with Alibi Protocols
                           Dave Levin

Victoria Lai, Cristian Lumezanu, Neil Spring, Bobby Bhattacharjee, Bo Han,
              John Douceur, Jacob Lorch, Thomas Moscibroda
Uncooperative behavior

                        Cooperation

              Anything and everything for
               the good of the network

    Selfishness                             Malice

Gain at the potential                 Break the system for
 expense of others                     notoriety or profit
Uncooperative behavior

                    Cooperation

           Routing: ARPANet’s global policy

     Selfishness                       Malice

Routing: BGP Local pref        Routing: Prefix hijacking
Uncooperative behavior

                      Cooperation

             Routing: ARPANet’s global policy
           Transport: TCP congestion control

       Selfishness                       Malice

  Routing: BGP Local pref        Routing: Prefix hijacking
Transport: TCP Opt-Ack         Transport: Mitnick attack
Uncooperative behavior

                      Cooperation

             Routing: ARPANet’s global policy
           Transport: TCP congestion control

       Selfishness                       Malice

  Routing: BGP Local pref        Routing: Prefix hijacking
Transport: TCP Opt-Ack         Transport: Mitnick attack
Censorship via DNS injection

Censoring AS                      208.80.152.201

   [Anonymous authors, ACM CCR 2012]
Censorship via DNS injection

www.wikipedia.org

Censoring AS                      208.80.152.201

   [Anonymous authors, ACM CCR 2012]
Censorship via DNS injection

     lemon IP

Censoring AS                      208.80.152.201

   [Anonymous authors, ACM CCR 2012]
Censorship via DNS injection
Censor-free ASes

       lemon IP

 Censoring AS                       208.80.152.201

     [Anonymous authors, ACM CCR 2012]
Censorship via DNS injection
Censor-free ASes

       lemon IP

 Censoring AS                       208.80.152.201

     [Anonymous authors, ACM CCR 2012]
Censorship via DNS injection
Censor-free ASes

         lemon IP

       lemon IP

 Censoring AS                       208.80.152.201

     [Anonymous authors, ACM CCR 2012]
Censorship via DNS injection
Censor-free ASes

       lemon IP

 Censoring AS                       208.80.152.201

     [Anonymous authors, ACM CCR 2012]
Building secure decentralized systems

Make malfeasance   • Allow no progress if incorrect
   impossible      • DNSSEC, Secure BGP, . . .
                   • Heavyweight

Make malfeasance   • Remove the incentive to be incorrect
  unprofitable     • Assumptions not always aligned

Make malfeasance   • Allow incorrect progress
   detectable      • Prove that nothing bad happened
                   • Ideally, lighter-weight
Building secure decentralized systems

Make malfeasance   • Allow no progress if incorrect
   impossible      • DNSSEC, Secure BGP, . . .
                   • Heavyweight

Make malfeasance   • Remove the incentive to be incorrect
  unprofitable     • Assumptions not always aligned

Make malfeasance   • Allow incorrect progress
   detectable      • Prove that nothing bad happened
                   • Ideally, lighter-weight
Building secure decentralized systems

Make malfeasance   • Allow no progress if incorrect
   impossible      • DNSSEC, Secure BGP, . . .
                   • Heavyweight

Make malfeasance   • Remove the incentive to be incorrect
  unprofitable     • Assumptions not always aligned

Make malfeasance   • Allow incorrect progress
   detectable      • Prove that nothing bad happened
                   • Ideally, lighter-weight
Building secure decentralized systems

Make malfeasance    • Allow no progress if incorrect
   impossible       • DNSSEC, Secure BGP, . . .
                    • Heavyweight

Make malfeasance    • Remove the incentive to be incorrect
  unprofitable      • Assumptions not always aligned

Make malfeasance    • Allow incorrect progress
   detectable       • Prove that nothing bad happened
                    • Ideally, lighter-weight

 But how do you prove something did not happen?
One option: Monitor everything
        Watch everything that everyone does

Watch those who watch everything that everyone does

 Simulate the system based on its inputs and outputs

          If it didn’t happen in simulation,
        and if the monitoring was done well,
           then it probably didn’t happen
Proving something didn’t happen

Provide a (small) proof that event A happened

   If events A and B are mutually exclusive

      Then B could not have happened
Proving something didn’t happen

Provide a (small) proof that event A happened

   If events A and B are mutually exclusive

      Then B could not have happened

           A serves as an alibi
Alibi protocols

TrInc: Small,
trusted h/w     Fighting equivocation with trusted counters
   NSDI ‘09

   Alibi
  routing       Provably avoiding regions of the network
   Ongoing
Alibi protocols

TrInc: Small,
trusted h/w     Fighting equivocation with trusted counters
   NSDI ‘09

   Alibi
  routing       Provably avoiding regions of the network
   Ongoing
Trust in distributed systems

  Selfish               Malicious
Participants           Participants
Trust in distributed systems

  Selfish                       Malicious
Participants                   Participants

        Powerful tool: Equivocation

       A participant “equivocates”
by sending conflicting messages to others
Equivocation is versatile and powerful

Byz. Generals
Equivocation is versatile and powerful

Byz. Generals

  “Advance”

   “Retreat”
Equivocation is versatile and powerful

Byz. Generals              Voting              BitTorrent
                         “Counted                 “I have
    “Advance”            your vote”               piece 5”

    “Retreat”             Tally w/o             “I don’t have
                            ’s vote               piece 5”

     Leader election                    Digital cash  Auctions
Trusted logs          Online games
                soBGP           Version control      DHTs
Equivocation is versatile and powerful

Byz. Generals
                   • f malicious users

  “Advance”        • If completely untrusted,
                     3f+1 users needed for consensus
                     [Lamport et al., 1982]

   “Retreat”
Equivocation is versatile and powerful

Byz. Generals
                   • f malicious users

  “Advance”        • If completely untrusted,
                     3f+1 users needed for consensus
                     [Lamport et al., 1982]

   “Retreat”       • If users cannot equivocate, only
                     2f+1 users are needed
                     [Chun et al., 2007]
Enter Trusted Hardware
Equivocation can be rendered impossible
         with trusted hardware

                      • New design space
                        • All participants have a
                          trusted component
Enter Trusted Hardware
Equivocation can be rendered impossible
         with trusted hardware

                      • New design space
                        • All participants have a
                          trusted component
Enter Trusted Hardware
Equivocation can be rendered impossible
         with trusted hardware

                      • New design space
                        • All participants have a
                          trusted component
Enter Trusted Hardware
Equivocation can be rendered impossible
         with trusted hardware

                      • New design space
                        • All participants have a
                          trusted component

                      • To be practical, the hardware
                        must be small
                        • Ubiquity via low cost
                        • Tamper-resilient
                        • Easier to verify a small TCB
Motivating question

What is the minimal abstraction needed
  to make equivocation impossible?
Motivating question

What is the minimal abstraction needed
  to make equivocation impossible?

   A counter and a key are enough
TrInc: Trusted Incrementer
1. Monotonically increasing counter
   2. Key for signing attestations

                34
                     K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
                                        Alibi: Nothing
                                       was bound to 35
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
                                        Alibi: Nothing
                                       was bound to 35

                          36
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
                                        Alibi: Nothing
                                       was bound to 35

Attest(36, non)           36
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
                                        Alibi: Nothing
                                       was bound to 35

Attest(36, non)           36
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
                                        Alibi: Nothing
                                       was bound to 35

Attest(36, non)           36           < 36, 36, non >K
                               K
TrInc: Trusted Incrementer
          1. Monotonically increasing counter
             2. Key for signing attestations

Attest(36, data)          34
                          36           < 34, 36, data >K
                               K
                                        Alibi: Nothing
                                       was bound to 35

Attest(36, non)           36           < 36, 36, non >K
                               K
                                      Status attestation
What can TrInc do?
• Trusted append-only logs

• Prevent under-reporting in BitTorrent

• Reduces communication in PeerReview

• BFT with fewer nodes and messages

• Ensure fresh data in DHTs

• Prevent Sybil attacks
Implementing a trusted log in TrInc
                  Append(data):
                    Bind new data to the
                    end of the log
                  Lookup(sequence num):
                    No equivocating on what
                    is or is not stored
Implementing a trusted log in TrInc
                  Append(data):
                    Bind new data to the
                    end of the log

         10       Lookup(sequence num):
                    No equivocating on what
                    is or is not stored
Implementing a trusted log in TrInc
                    Append(data):
                      Bind new data to the
                      end of the log

             10     Lookup(sequence num):
                      No equivocating on what
                      is or is not stored

  < 3,8,   >
  < 8,9,   >
  
Untrusted storage
Implementing a trusted log in TrInc
                             Append(data):
append                         Bind new data to the
                               end of the log

                      10     Lookup(sequence num):
                               No equivocating on what
                               is or is not stored

           < 3,8,   >
           < 8,9,   >
           
         Untrusted storage
Implementing a trusted log in TrInc
                             Append(data):
attest(11,,    )               Bind new data to the
                               end of the log

                       10    Lookup(sequence num):
                               No equivocating on what
                               is or is not stored

              < 3,8,   >
              < 8,9,   >
              
         Untrusted storage
Implementing a trusted log in TrInc
                    Append(data):
                      Bind new data to the
                      end of the log

             10     Lookup(sequence num):
                      No equivocating on what
                      is or is not stored

  < 3,8,   >
  < 8,9,   >
  
Untrusted storage
Implementing a trusted log in TrInc
                    Append(data):
                      Bind new data to the
                      end of the log

             10
             11     Lookup(sequence num):
                      No equivocating on what
                      is or is not stored

  < 3,8,   >
  < 8,9,   >
  
Untrusted storage
Implementing a trusted log in TrInc
                    Append(data):
                      Bind new data to the
             end of the log

             10
             11     Lookup(sequence num):
                      No equivocating on what
                      is or is not stored

  < 3,8,   >
  < 8,9,   >
  
Untrusted storage
Implementing a trusted log in TrInc
                    Append(data):
                      Bind new data to the
                      end of the log

             10
             11     Lookup(sequence num):
                      No equivocating on what
                      is or is not stored

 < 3,8,    >
 < 8,9,    >
 
Untrusted storage
Implementing a trusted log in TrInc
                          Append(data):
lookup 10                   Bind new data to the
                            end of the log

                   10
                   11     Lookup(sequence num):
                            No equivocating on what
                            is or is not stored

        < 3,8,    >
        < 8,9,    >
        
      Untrusted storage
Implementing a trusted log in TrInc
                          Append(data):
lookup 10                   Bind new data to the
                            end of the log

                   10
                   11     Lookup(sequence num):
                            No equivocating on what
                            is or is not stored

        < 3,8,    >
        < 8,9,    >
        
      Untrusted storage
Implementing a trusted log in TrInc
                    Append(data):
                      Bind new data to the
                      end of the log

             10
             11     Lookup(sequence num):
                      No equivocating on what
                      is or is not stored

 < 3,8,    >
 < 8,9,    >
 
Untrusted storage
Implementing a trusted log in TrInc
                       Append(data):
                         Bind new data to the
                         end of the log

             10
             11        Lookup(sequence num):
                         No equivocating on what
                         is or is not stored

 < 3,8,    >
 < 8,9,    >
         
Untrusted storage
Implementing a trusted log in TrInc
                       Append(data):
                         Bind new data to the
                         end of the log

             10
             11        Lookup(sequence num):
                         No equivocating on what
                         is or is not stored

 < 3,8,    >
 < 8,9,    >
            Fast lookups
                      Few hardware accesses

Untrusted storage
TrInc Summary

• Equivocation is versatile and powerful

• A small amount of trust can secure a large system

• TrInc is
  • Minimal? – A counter and a key
  • Versatile – Applies to a wide range of systems
  • Practical – Uses the familiar components (in unfamiliar ways)
Alibi protocols

TrInc: Small,
trusted h/w     Fighting equivocation with trusted counters
   NSDI ‘09

   Alibi
  routing       Provably avoiding regions of the network
   Ongoing
Alibi protocols

TrInc: Small,
trusted h/w     Fighting equivocation with trusted counters
   NSDI ‘09

   Alibi
  routing       Provably avoiding regions of the network
   Ongoing
Avoiding censors
Censor-free ASes

       lemon IP

 Censoring AS                208.80.152.201
Avoiding censors
Censor-free ASes

       lemon IP

 Censoring AS                208.80.152.201
Avoiding censors
Censor-free ASes
                   www.wikipedia.org
                           but avoid

       lemon IP

 Censoring AS                 208.80.152.201
Alibi routing
Alibi routing
Alibi routing

Solicit participation from a relay
Alibi routing

                           A signature proves
                         the relay forwarded it

Solicit participation from a relay
Alibi routing

                           A signature proves
                         the relay forwarded it

Solicit participation from a relay
Alibi routing
Alibi routing
Alibi routing

  The triangle inequality
mostly holds in the Internet
Alibi routing

      The triangle inequality
    mostly holds in the Internet

Going through the boycotted region would increase latency
Alibi routing
                               The farther away the relay,
                            the greater the latency increase.

      The triangle inequality
    mostly holds in the Internet

Going through the boycotted region would increase latency
Finding relays

                 Embed end hosts and
                    regions into a
                   coordinate space

                 Query regions of the
                  space that are far
                  from the avoidee
Finding relays

                 Embed end hosts and
                    regions into a
                   coordinate space

                 Query regions of the
                  space that are far
                  from the avoidee
Finding relays

                 Embed end hosts and
                    regions into a
                   coordinate space

                 Query regions of the
                  space that are far
                  from the avoidee
Finding relays

                 Embed end hosts and
                    regions into a
                   coordinate space

                 Query regions of the
                  space that are far
                  from the avoidee
Finding relays

                 Embed end hosts and
                    regions into a
                   coordinate space

                 Query regions of the
                  space that are far
                  from the avoidee
Can countries avoid one another?
       1                                                NorthAmerica
                                                          MiddleEast
                                                              Europe
      0.8                                               SouthAmerica
                                                                Asia

      0.6
CDF

      0.4

      0.2

       0
            0        5         10       15         20
                Number of reachable destinations
Can countries avoid one another?
       1
                                          Ideal         NorthAmerica
                                                          MiddleEast
                                                              Europe
      0.8                                               SouthAmerica
                                                                Asia

      0.6
CDF

      0.4

      0.2

       0
            0        5         10       15         20
                Number of reachable destinations
Can countries avoid one another?
       1                                                NorthAmerica
                                                          MiddleEast
                                                              Europe
      0.8                                               SouthAmerica
                                                                Asia

      0.6
CDF

      0.4

      0.2

       0
            0        5         10       15         20
                Number of reachable destinations
Can countries avoid one another?
       1                                                NorthAmerica
                                                          MiddleEast
                                                              Europe
      0.8                                               SouthAmerica
                                                                Asia

      0.6
                                                               Multiple
CDF

      0.4                                                     relays may
                                                             be necessary
      0.2

       0
            0        5         10       15         20
                Number of reachable destinations
Can countries avoid one another?
       1                                                NorthAmerica
                                                          MiddleEast
                                                              Europe
      0.8                                               SouthAmerica
                                                                Asia

      0.6
                                                               Multiple
CDF

      0.4                                                     relays may
                                                             be necessary
      0.2

                                                            A few tens of
       0                                                    milliseconds
            0        5         10       15         20
                Number of reachable destinations
                                                            often suffices
                                                            (not shown)
Alibi routing is not a panacea

• Packets can always be copied

• Provides a small but useful signal to systems:
  • This packet didn’t go somewhere bad
  • Or else it might have

• Systems must decide how to react to that signal
  • Drop the connection?
  • Initiate stronger end-to-end protection?
Proving the impossible with alibis

• Global systems require interactions among self-interested parties

• Alibi protocols prove something untoward did not happen
  • Without having to prove everything that did

• An attractive alternative to traditional accountability systems
  • Lightweight
  • Easy to deploy
  • Easy to incorporate with existing systems
You can also read