From f6eec69d0cae3b2e540a3a85c7105c134d6734b4 Mon Sep 17 00:00:00 2001 From: kwadronaut <kwadronaut@leap.se> Date: Fri, 9 Feb 2018 11:17:27 +0100 Subject: add 2018 fosdem presentation --- 2018fosdem/index.html | 449 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 2018fosdem/index.html (limited to '2018fosdem/index.html') diff --git a/2018fosdem/index.html b/2018fosdem/index.html new file mode 100644 index 0000000..aff19cc --- /dev/null +++ b/2018fosdem/index.html @@ -0,0 +1,449 @@ +<!doctype html> +<html lang="en"> + +<head> + <meta charset="utf-8"> + + <title> + Bitmask: encryption for mere mortals + </title> + + <meta name="description" content="" + <meta name="author" content="kwadronaut"> + + <meta name="apple-mobile-web-app-capable" content="yes"> + <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> + + <link rel="stylesheet" href="css/reveal.css"> + #<link rel="stylesheet" href="css/theme/sky2.css" id="theme"> + #<link rel="stylesheet" href="css/theme/solarized.css" id="theme"> + <link rel="stylesheet" href="css/theme/night.css" id="theme"> + + <!-- Theme used for syntax highlighting of code --> + <link rel="stylesheet" href="lib/css/zenburn.css"> + + <!-- Printing and PDF exports --> + <script> + var link = document.createElement( 'link' ); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = window.location.search.match( /print-pdf/gi ) ? 'css/print/pdf.css' : 'css/print/paper.css'; + document.getElementsByTagName( 'head' )[0].appendChild( link ); + </script> + + <!--[if lt IE 9]> + <script src="lib/js/html5shiv.js"></script> + <![endif]--> +</head> + +<body> +<div class="reveal"> + +<div class="slides"> +<section> + <section data-markdown data-background-size="35%" data-background="images/kid-jumping.svg"> + # BitmasK: encryption for mere mortals + ### FOSDEM 2018 + ### kali - meskio - kwadronaut + <h3><a href="https://leap.se">https://leap.se</a></h3> + </section> +</section> +<section> + <section data-markdown> + ## Problem: encrypted email is ...complicated + </section> + + <section> + <video autoplay="false" width="800" controls="controls" loop src="video/gpgforjournalists.mp4"></video> + </section> + <section> + <img src="images/pgp.png"> + </section> + + <section> + <img src="images/pizarra.jpg"> + </section> + +</section> +<section> + <section data-markdown data-background-size="65%" data-background="images/silos.jpg"> + # Problem: providers + </section> + + <section> + <img src="images/lavabit.png"> + </section> + + <section > + <h2> Peer to peer?</h2><br/> + + <img class="fragment" src="images/peer2peer.jpg" /> + + </section> + + +</section> + +<section> + <h1>Better federation!</h1> + <h3> + <ul> + <li class="fragment">Protect providers from their users</li> + <li class="fragment">Protect users from the provider</li> + </ul> + </h3> + <aside class="notes"> + sysadmins deserve a life too! + </aside> +</section> + +<section> + <h2>What does<br>LEAP do?</h2> + <ul> + <li class="fragment"> + <b>LEAP Platform:</b><br>toolkit to make it easier to run a service provider</li> + <li class="fragment"> + <b>New protocols:</b><br>so no need to trust your connection provider</li> + <li class="fragment"> + <b>Bitmask client:</b><br>smooth working client with compatible providers</li> + </ul> +</section> + +<section> + <section data-markdown> + # leap mail service + * End-to-end encryption + * Backwards compatible with email and current OpenPGP usage + * Service provider has no access to user data + * Automatic key discovery and validation + * Cloud synchronized for high availability on multiple devices + </section> + <section> + <img src="./images/schema.jpg" /> + <aside class="notes"> + smtp imap + </aside> + </section> + <section> + <h2>email service</h2> + + <img src="./images/mail_service.jpg" /> + <aside class="notes"> + smtp imap + </aside> + </section> + + <section> + <h2>soledad</h2> + <img src="./images/soledad.jpg" /> + </section> + + <section> + <h2>mx</h2> + <img src="./images/mx.jpg" /> + </section> + + <section> + <img src="./images/schema.jpg" /> + </section> + +</section> +<section> + <section> + <h2> transitional key validation</h2> + + generic rules for automatic key management, <br />transition from TOFU to more advanced ruleset.<br/> + <ul> + <li> bind key <-> email address </li> + <li> key directory</li> + <li> endorser (provider)</li> + <li> binding info: evidence for "educated guess"</li> + <li> verified key transition (automatic)</li> + </ul> + + <a href="https://leap.se/en/docs/design/transitional-key-validation">[leap.se/en/docs/design/transitional-key-validation]</a> + </section> + + <section> + <h2>TOFU</h2> + With a bunch of exceptions + <aside class="notes"> + current situation + </aside> + </section> + + <section data-markdown> + ## 1. First Contact + + When one or more keys are first discovered for a particular email address, the key with the highest validation level is registered. + </section> + + <section> + <h2>2. Regular Refresh</h2> + + <p>All keys are regularly refreshed to check for modified expirations, or new subkeys, or new keys signed by old keys.</p> + <p><small>This refresh SHOULD happen via some anonymizing mechanism.</small></p> + </section> + + <section> + <h2>3. Key Replacement</h2> + + <p>A registered key MUST be replaced by a new key in one of the following situations, and ONLY these situations:</p> + <ul> + <li class="fragment">Verified key transitions.</li> + <li class="fragment">If the user manually verifies the fingerprint of the new key.</li> + <li class="fragment">If the registered key is expired or revoked and the new key is of equal or higher validation level.</li> + <li class="fragment">If the registered key has never been successfully used and the new key has a higher validation level.</li> + <li class="fragment">If the registered key has no expiration date.</li> + </ul> + + <aside class="notes"> + verified key transtion == signed by the previous + </aside> + </section> +</section> + <section data-markdown> + ## VPN + + * Prevent eavesdropping. + * Circunvent internet censorship. + * Prevent leaks (DNS, IPv6, ...). + </section> + + <section> + <h2>LEAP platform</h2> + <pre class="fragment"><code class="hljs" data-trim contenteditable> +sudo gem install leap_cli +leap new example --domain example.org +cd example +leap add-user --self +leap cert ca +leap cert dh +leap cert csr +leap node add blueberry services:openvpn \ + ip_address:1.1.1.1 openvpn.gateway_address:1.1.1.2 +leap node add raspberry services:couchdb,webapp \ + ip_address:1.1.1.3 +leap init node +leap deploy + </code></pre> + <aside class="notes"> + Usability for sysadmins + </aside> +</section> +<section> + <section data-markdown> + ## sysadmins are human + ### and deserve usability too + + </section> + <section data-markdown> + ## "leap deploy" + </section> + <section> + <img src="images/leap-webapp2.png"> + </section> +</section> +<section> + + <section> + <img src="images/jump.png"> + </section> + + <section data-markdown> + ## show me the code! + <a href="https://0xacab.org/leap/">https://0xacab.org/leap/</a> + * ~10 important repos + * GPL code + </section> +</section> +<section> + <section data-markdown> + # current state + </section> + + <section data-markdown> + ## Email Beta (0.10…) + ### works on Linux + ## Bitmask VPN + ### works on Linux && Android + + </section> + + <section data-markdown> + ## next steps + * OSX and windows + </section> +</section> + +<section> + <img src="images/mycelia.jpg"> + <h2>let a thousand providers bloom</h2> + </section> + + <section> + <h2>🐧 thanks! questions?</h2> + <img src="images/contact-QR.png" alt="QR with info contact for leap" height="35%" width="35%"> + <h3><a href="https://bitmask.net">https://bitmask.net</a></h3> + <h3><a href="https://leap.se">https://leap.se</a></h3> + <h3><a href="https://katzenpost.mixnetworks.org/#">katzenpost.mixnetworks.org </a>😼</h3> + </section> +</section> +<section> +</section> + +<section> + <section> + <img src="images/downloadme.png"> + </section> + + <section> + <img src="images/thunderbird.png"> + </section> + + <section> + <img src="images/tb1.png"> + </section> + + <section> + <img src="images/tb1.png"> + </section> + + <section> + <img src="images/box.png"> + </section> +</section> + +<section> + <section data-markdown> + ## 2. ability to use multiple devices + </section> + + <section data-markdown> + # 🔑 🔄 + ### Synchronization Of + ### Locally Encrypted Data Among Devices + </section> + + <section data-markdown> + # data = 🖂 + 🔑 + </section> +</section> + +<section> + <section data-markdown> + ## bitmask keymanager + ## requires no user interaction + </section> + + <section data-markdown> + ## interoperability is a must + ### many projects converging + #### (Watch AUTOCRYPT: Enigmail, K9, Mailpile, Bitmask) + </section> +</section> + + +<section> + <section data-markdown> + ## SOLEDAD + * Synchronization of Locally Encrypted Data Among Devices + * auth: srp + * kdf: scrypt + * AES-256-GCM + * built on top of canonical's u1db + * vector clocks + * clientside: sqlcipher backend + * serverside: couchdb cluster + </section> + + <section data-markdown> + ## Problem: Attachments + * Syncing blobs in a convoluted store + * Pluggable BlobsIO backend for server (in dev) + * FS as MVP, others welcome! + </section> + +</section> + +<section> + <section data-markdown> + # Validation levels + + low == less trust on the source + </section> + + <section data-markdown> + ## 1. Weak Chain + <sub>sks key servers, email attached key, OpenPGP header, ...</sub> + </section> + + <section data-markdown> + ## 2. Provider Trust + <sub>webfinger, provider mailvelope</sub> + + Note: + * Certified by the provider + * Not auditable + </section> + + <section data-markdown> + ## 3. Provider Endorsement + <sub>NickNym</sub> + + Note: + * auditable + </section> + + <section data-markdown> + ## 4. Historical Auditing + <sub>CONIKS, google's transparent keyserver</sub> + </section> + + <section data-markdown> + ## 5. Known Key + <sub>client pinned keys</sub> + </section> + + <section data-markdown> + ## 6. Fingerprint + <sub>manual verification</sub> + </section> +</section> + +<!-- END OF THE TALK --> + +</div> + <script src="lib/js/head.min.js"></script> + <script src="js/reveal.js"></script> + + <script> + + // More info https://github.com/hakimel/reveal.js#configuration + Reveal.initialize({ + /*parallaxBackgroundImage: 'images/rainforest.jpg', */ + /*parallaxBackgroundSize: '2400px 1758px',*/ + controls: true, + progress: true, + history: true, + center: true, + + transition: 'slide', // none/fade/slide/convex/concave/zoom + + // More info https://github.com/hakimel/reveal.js#dependencies + dependencies: [ + { src: 'lib/js/classList.js', condition: function() { return !document.body.classList; } }, + { src: 'plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, + { src: 'plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } }, + { src: 'plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }, + { src: 'plugin/zoom-js/zoom.js', async: true }, + { src: 'plugin/notes/notes.js', async: true } + ] + }); + + </script> + + </body> +</html> -- cgit v1.2.3