Thanks! The problem I was facing is a user experience problem while adding
end-to-end encryption to a simple email-like system.

The systems is simply 'log in, receive messages from people, send messages
to people'. The goal is to add end-to-end encryption to it without
compromising the user experience. Our goal is that the system should be
exactly as easy to use with e2ee as without e2ee.

The user experience is however quite awkward, for two reasons:
- everytime you install the software on a new device, you need to move your
private key from the previous device to the new one (this one still stands
unsolved).
- everytime you want to send a message to a new contact, you need to enter
not only his guid ("email address"), but also his public key. (this is the
one we try to address).

When you send a first message to a new contact, you need to look up his
public key. That's when you would do the traversal from your guid to their
guid, checking all the signatures along the path. Since you traverse by
flipping bits one-by-one, the length of the path is limited to length of the
guid hashes. You check all signatures along the way. You signed the public
key of your neighbour,... [... who signed the public key of his
neighbour,...]* ...who signed the public key publicly presented by your
intended recipient. Then it's safe to send the message.

if however the recipient's account has been hacked, then it will try to
present a different public key (one generated by the attacker, who is trying
to lure you into thinking that your message is safe when encrypted against
it). This will be detected instantly by the traversal:

You signed the public key of your neighbour,... [... who signed the public
key of his neighbour,...]* ...who /incorrectly/ signed the supposed public
key publicly presented by [the attacker of] your intended recipient.

If an attacker would manage to own an entire region of neighbours, then it
would still be obvious, because the signatures-chain would be broken at an
even earlier step.

Only if you hacked all accounts, would you, effectively, have hacked all
accounts.

Do you think this could work?

Many thanks!
Michiel.

On Mon, Dec 13, 2010 at 4:22 AM, David Barrett <dbarr...@quinthar.com>wrote:

> I think this is a really interesting idea, but I'll admit, I don't quite
> understand the problem.  Can you give a real-world scenario of how this
> would be used, and how it would reject a simple attack?
>
> -david
>
> On 12/11/2010 07:09 PM, Michiel de Jong wrote:
> > Hi,
> >
> > I hope it's ok for me to post this here, I need some feedback on a
> > public key infrastructure. In return, you might enjoy reading it.
> >
> > My goal here is *only* to link public keys to guids, and like spki/sdsi,
> > I assume you already know that the guid as such is bonafide, and I am
> > not trying to link the guid to "Walton's Mountain assumptions" about a
> > real-world person or entity.
> >
> > The only reason I don't use the public key itself directly as the guid,
> > is that I want the guid to be human-memorable (Zooko's triangle); let's
> > say they are email addresses.
> >
> > The problem with using web-of-trust for this is that many times you will
> > want to give someone your email address and start communicating from
> > scratch, without an introducer. Even if a connection exists, it would
> > require search to find it, and search is difficult without
> > centralization. Also my list of "friend-of-a-friend"s (FOAFs), through
> > which i have a chain-of-trust with you, may contain private information
> > about who i hang out with. So the whole web-of-trust approach is a
> > hassle, and also privacy-sensitive. The CA-approach is out of the
> > question from the start, because it's too centralized.
> >
> > So what I came up with was to define a "fabric"-approach. We define a
> > multi-dimensional space in which all guids represent a fixed position.
> > Your coordinates in the fabric are determined not by you, nor by who you
> > interact with, but simply by the ASCII bits in your guid string. And
> > then it's simple: everybody sign the keys of their neighbours and vice
> > versa to form the fabric. Now to know your public key, I just walk from
> > my position in the fabric to yours, following the chain of neighbours
> > that are all 'holding hands', and so everyone's connected with everyone.
> >
> > The idea is that the fabric sums up all the security of everybody, and
> > links it together to make it strong. If you would want to compromise one
> > guid, the neighbourhood watch would notice and refuse to interact with
> > the conflicting public key. If you compromise a whole area, the
> > neighbours of that area would notice. Etcetera.
> >
> > I tried different ways to define the "neighbour" relationship, and in
> > the end I ended up defining a combination of additive and Hamming
> > distance, on bitstrings obtained from the original guid string with
> > non-reversible hashing. I think I sort of got it working, and it seems
> > pretty efficient. But the details of that are not what I wanted to
> > bother you with right now.
> >
> > The non-reversible hashing is there so it's not trivial to 'embush'
> > someone by registering a ring of email addresses around him. It makes it
> > hard to guess a given email address's neighbours, and thus hard to stage
> > an embush. You could still attack the system by flooding it with guids
> > until you are the owner of 99% of the guids. So all guid-providers
> > should put up a captcha to avoid that sort of attack.
> >
> > Also, you would need to define what needs to be done if a tear in the
> > fabric is detected. if there are 2 conflicting public keys being
> > announced, how do you decide what is the right one? you need to make it
> > hard to 'topple the system' into an auto-immune defense against itself.
> > also DDoS and vandalism attacks need some attention. But i think in
> > general, the pki could sort of work.
> >
> > My question is: does my fabric-based approach make any sense? or am i
> > maybe trying to solve a non-existing problem? There must be a flaw
> > somewhere that prevents other people from doing this already, I just
> > don't see it.
> >
> > Many thanks for your time!
> >
> >
> > Kind regards,
> > Michiel de Jong
> > www.unhosted.org/unhosted.html <http://www.unhosted.org/unhosted.html>
> >
> >
> >
> > _______________________________________________
> > p2p-hackers mailing list
> > p2p-hackers@lists.zooko.com
> > http://lists.zooko.com/mailman/listinfo/p2p-hackers
> _______________________________________________
> p2p-hackers mailing list
> p2p-hackers@lists.zooko.com
> http://lists.zooko.com/mailman/listinfo/p2p-hackers
>
_______________________________________________
p2p-hackers mailing list
p2p-hackers@lists.zooko.com
http://lists.zooko.com/mailman/listinfo/p2p-hackers

Reply via email to