Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi...

54
Modern Keysigning

Transcript of Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi...

Page 1: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Modern Keysigning

Page 2: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

The WoT

- oldest social network

- 50k keys in the strong set

Page 3: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

How to Keysign:

- Verify Fingerprint - Verify Identity - Obtain authentic copy of key - many traps to be avoided - Sign and send key - currently needs MTA

Page 4: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

- O(n) - O(n²) This is a typical keysigning protocol It is hard to set up

Page 5: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

@FOSDEM 2011

Page 6: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

242 registered participants

Page 7: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Keysigning "parties" suck

Page 8: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

A party without beeronly to obtain fingerprints

Page 9: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Keysigning "Parties" are not fun people miss them They don't print anything Single point of failure

Page 10: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Base2

0110000100001100101100100101001000110111101100110111000011101001111010110010000100001000111010001001110011101110000110110110101100000101100110110101100110001110

Page 11: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Pros: Very accurate, hard to misread Cons: Very long

Page 12: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode
Page 13: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Base16

610CB25237B370E9EB2108E89CEE1B6B059B598E

Page 14: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Pros: looks familiar to nerds Cons: Hard to distinguish characters

Page 15: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode
Page 16: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Verifying fingerprints is hard

Page 17: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Base64

YQyyUjezcOnrIQjonO4bawWbWY4=

Page 18: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Pros: Shorter than other things Cons: Probably too big of an alphabet

Page 19: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Base58Check

9r9knGannSDvoJyUoGbgyWDUeWGdx7rUC

Page 20: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Keyart

+-------------------+| . || : ? ||. . ? i ||.. . . ^ : ||^ ^ ^ ^ . || l ^ . ^ S ||. ( ^ . || E ^ . ||... || ^^ ||.^. |+-------------------+

Page 21: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Pros: Probably simpler to compare Cons: Easy to have collisions

Page 22: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Eventually, you've verified the fingerprintand the identity.You try to obtain an authentic copy of the key.

Page 23: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

short key idsevil32.com

Page 24: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Of course you don't use short key ids. Do you..?

Page 25: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Nobody uses short keyids.Except Debian

Page 26: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

I don't always use short key ids

Page 27: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

And Ubuntu

Page 28: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

And pretty much everybody else

Page 29: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

on the Internet

Page 30: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

issue1579: GnuPG ignores the fingerprint

Also: v3 keys still accepted

Page 31: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

So you use the fingerprint instead of short key ids however, currently shipped gnupg version do not check for the fingerprint of the key to be imported

Page 32: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Let's not use Keyservers

- leaks data (plain HTTP)

- trivial MITM attacks (issue1579)

- packet forgery - drop UIDs - signatures - revocations

- OCaml... srsly.

Page 33: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

http://bugs.gnupg.org/gnupg/issue1579

Page 34: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode
Page 35: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Let's define our target users. It's my mom!

Page 36: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

The Gold Standard:

Page 37: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

CAFF... PERL... srsly..?

Page 38: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

That's the pinnacle, the gold-standard of contemporary keysigning

Page 39: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode
Page 40: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode
Page 41: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Fast forward 20 years

Page 42: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

We see the fire burning We need to do something about the situation

Page 43: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Two decades later:

- mobile computing - WiFi - QRCodes

Page 44: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Yet, our machines cannot talk to each other

Page 45: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Introducing: GNOME Keysign

Page 46: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Leveraging 2000s technologies

Page 47: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Demo

Page 48: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode
Page 49: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

GNOME Keysign

- Directly transfers keys - Sends encrypted email - No MTA needed

Page 50: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

https://wiki.gnome.org/GnomeKeysign

Page 51: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Still waiting for patches

Page 52: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

virtualenv /tmp/gnome-keysign

/tmp/gnome-keysign/bin/pip install 'git+https://github.com/ muelli/geysigning.git #egg=gnome-keysign'

Page 53: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode gir1.2-gstreamer-1.0 gir1.2-gst-plugins-base-1.0 gstreamer1.0-plugins-bad

Page 54: Modern Keysigning · sudo apt-get install python avahi-daemon python-avahi python-gi gir1.2-glib-2.0 gir1.2-gtk-3.0 python-dbus python-requests monkeysign python-qrcode

Thank you