24
Move Things From One Computer to Another, Safely Brian Warner magic-wormhole.io PyCon 2016 #magicwormhole @lotharrr

Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Move Things From One Computer to Another, Safely

Brian Warner

magic-wormhole.io

PyCon 2016 #magicwormhole@lotharrr

Page 2: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

File (or directory or string) Transfer Program

• Securely moves a file from one computer to another

• Claim: easier than all other secure tools

• Especially for moving to an unrelated computer

Page 3: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

What It Looks Like

pip install magic-wormhole

Page 4: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

What It Looks Like

pip install magic-wormhole

Page 5: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

What It Looks Like

pip install magic-wormhole

Page 6: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Solved Problem?

• What's wrong with the tools we currently use?

Page 7: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

"easily". "safely".dictate string

to senderdictate string

to receiverneeds

proximity eavesdroppers

send email ~30 chars ISPs, CAs, internet

upload to FTP/HTTP ~60 chars server, ISPs,

CAs, internet

dropbox ~60 chars Dropbox, CAs

+ URL shortener ~20 chars

Shortening Service, lucky guessers, Dropbox, CAs

USB drive X eww cooties

SSH/scp ~740 char pubkey none

magic wormhole ~20 chars none

Page 8: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

How Does It Work?• Rendezvous Message Exchange

• PAKE, Key Agreement

• IP Address Exchange

• Transit Connection

• Data Transfer

Page 9: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Rendezvous Server

typical code: 1-liberty-assume

Channel ID

Page 10: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

PAKE-based Security

P assword A uthenticated K ey E xchange

1992: EKE 1997: SRP 2005: SPAKE2

Page 11: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

SPAKE2

diagram credit: Dan Boneh

Alice Bob

pw pw

pip install python-spake2

Page 12: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Security of PAKE• Weak Secret + Interaction == Strong Secret

• Passive eavesdropper gets zero information

• Active MitM gets one guess per protocol run

• failed guess == zero information

• failed guesses are visible to users

Page 13: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Security of PAKE

• Wormhole codes are single-use, forward-secure

• Default code is 2 words (256-word list) == 16 bits

• User must retry 655 times before attacker has 1% chance of success

Page 14: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Laziness Improves Security

Page 15: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

IP Address Exchange• Find addresses with ifconfig

• Listen on TCP ports

• Exchange addresses+ports

• Try to connect, trade encrypted handshakes

• First successful connection wins

Page 16: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Data Relay Server

Page 17: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Encrypted Transit• Provides encrypted record pipe

• Uses NaCl SecretBox (Salsa20/Poly1305)

• Keys are HKDF(masterkey, purpose)

• Data is hashed (SHA256) during transit

• Final ACK confirms the hash

Page 18: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Library APIw = wormhole(AppID, relay_url)

w.set_code("1-peachy-seabird")

w.send(b"hello")

answer = w.get()

Page 19: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Future Work• GUI, pre-packaged installers, browser extension

• Negotiate better transports:

• WebRTC, ICE/STUN, libutp

• Tor Onion Services

• Add SPAKE2 to libsodium

• Port to other languages: JavaScript, Go, Rust

Page 20: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Beyond File Transfer

• Use this anywhere you need to deliver a credential

• Provisioning new client devices

• Pairing client devices to each other

• Populating addressbook entries in communication/messaging systems

Page 21: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Provisioning ClientsOld New

Type password into server

Type password into client

Get Wormhole code from server

Type code into client

Page 22: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Messaging AppsOld New

Alice sends public key to server

Bob asks server for Alice's key

Alice shows Wormhole code to Bob

Bob gets Alice's key from Alice (via wormhole)

Page 23: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Add PAKE to your Toolbox

• Cryptographic tools disseminate too slowly

• We need good examples, compelling use cases, helpful libraries

• File transfer is a foot in the door. PAKE is the rest.

Page 24: Safely magic-wormholewarner/MagicWormhole-PyCon2016.pdfFile (or directory or string) Transfer Program • Securely moves a file from one computer to another • Claim: easier than

Magic-WormholeMove Things From One Computer to Another,

Safely

Brian Warner

https://github.com/warner/magic-wormhole

[email protected]

Thanks To: Rackspace, Twisted, Glyph, djb, 2255-19

@lotharrr

magic-wormhole.io