<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Jul 9, 2015 at 5:50 PM, Ralf Senderek <span dir="ltr"><<a href="mailto:crypto@senderek.ie" target="_blank">crypto@senderek.ie</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">On Thu, 9 Jul 2015 15:12:25 Phillip Hallam-Baker wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
The mesh is designed be an untrusted service that can support secure<br>
exchange of any sort of data through end to end encryption.<br>
</blockquote>
<br></span>
If the mesh is designed to ease a user's eminent pain ("remembering the<br>
user names at all the 100s of Web sites they use") how does it work?<br>
Is there any pointer you can give us? And how do you solve the<br>
key management problem, practically?<span class=""><font color="#888888"><br>
<br>
   --ralf<br>
</font></span></blockquote></div><br></div><div class="gmail_extra">It is currently a 'work in progress' which means that currently I have three parts that all work on their own that I am trying to bash into one. This is down from six modules three weeks ago.</div><div class="gmail_extra"><br></div><div class="gmail_extra">The basic idea is that every user has their own personal pki. At the moment I am using X.509 but it could just as easily use JSON, XML or whatever.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Each user has a personal profile which contains exactly one personal master signing key which serves as a permanent root of trust. Every cert in the user's personal PKI will ultimately chain to this root. The root has a UDF fingerprint, for example: <span style="color:rgb(0,0,0);font-size:13.3333330154419px">MB2GK-6DUF5-YGYYL-JNY5E-RWSHZ-SV75J</span></div><div class="gmail_extra"><br></div><div class="gmail_extra">[<a href="https://tools.ietf.org/html/draft-hallambaker-udf-00">https://tools.ietf.org/html/draft-hallambaker-udf-00</a> has the details of UDF, its basically just a generalization of PGP fingerprints using base32 encoding with some features to prevent data type substitution attacks]</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">So the key point of this scheme is that when a device tells the user that its root of trust is <span style="color:rgb(0,0,0);font-size:13.3333330154419px">MB2GK-6DUF5-YGYYL-JNY5E-RWSHZ-SV75J, they know that either that device is lying (i.e. the device is compromised) or it is under the user's trust profile.</span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px"><br></span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px"><br></span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px">Every device also has a device profile that contains a device signing key, a device encryption key and a device authentication key. These would typically last the lifetime of the device.</span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px"><br></span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px">So to join a device to a personal profile what the user sees is:</span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px"><br></span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px">* They run the profile manager on the new device, they give their mesh account id.</span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px">* The device gives the UDF fingerprint of the profile, they check it is </span><span style="color:rgb(0,0,0);font-size:13.3333330154419px">MB2GK-6DUF5-YGYYL-JNY5E-RWSHZ-SV75J</span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px">* The user then goes to a </span><span style="color:rgb(0,0,0);font-size:13.3333330154419px">device they</span><span style="color:rgb(0,0,0);font-size:13.3333330154419px"> authorized as an administration device for their profile, there will be a message waiting telling them that such and such a device is trying to connect. If they approve the connection, they can then select the applications they want to enable for that device.</span></div><div class="gmail_extra"><span style="color:rgb(0,0,0);font-size:13.3333330154419px">* They go back to their device, it is now working with the specified applications.</span></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">The mesh does not do any cryptography at all, it is just a dropbox for exchanging small quantities of crypto info. So in the above example, the admin machine pulls the S/MIME and OpenPGP decryption keys that the device is going to need to read emails and encrypts them under the device key and uploads the profile to the mesh.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">Note that this is not just configuring crypto. It can configure account network connections as well.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Lets say someone is using mail on their admin device. And for the sake of demonstration, lets say it is Windows Live Mail. The current code will slurp up the configuration info from the app. Then it will ask which account the user wants to enable (if there is more than one).</div><div class="gmail_extra"><br></div><div class="gmail_extra">The tool will then automatically pull the network connectivity info from Livemail, create S/MIME signing and encryption certs and configure LiveMail to use them. And the user does not need to do anything.</div><div class="gmail_extra"><br></div><div class="gmail_extra">OK so now the user buys an Apple Ring (oh you know thats what is next after the watch), they connect it to their profile, include mail in the apps it is enabled for and it is now configured to do email. The SMTP, IMAP, servers are set up, S/MIME, everything.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra">So don't think of this just as a way to manage crypto. It can be used to share any sort of application profile. Though its a pretty poor profile that doesn't have crypto. You can have a network profile with your DNS resolvers and protocols, VPN info, etc. You can have a Jabber profile, password manager, SSH, pretty much anything you like.</div><div class="gmail_extra"><br></div><div class="gmail_extra">There are proprietary schemes that do something of the sort of course. But they are intentionally non-interoperable. I can't easily exchange my Chrome bookmarks with Firefox for example. Chrome does not support the bookmarks of the Google toolbar.</div></div>