@natecull Well one thing's for sure, we ought to kill the CA cartel. Let's Encrypt is a start, but the entire design is wrong.
So we know the goal... Like DNS, finding a proper solution is still a WIP :)
@natecull We have possible solutions in progress!
So I'm convinced the DID spec (Decentralized Identifiers) is the right general "container" for these, though it's still WIP... see: https://opencreds.github.io/did-spec/
That's a bit general, and can be layered on top of a blockchain or DHT, with differing tradeoffs (basically, should objects be able to be garbage collected / disappear?)
@natecull However, it's not fully enough on its own: we also need a "petnames" type solution to have names be human readable. There are solutions to that, but really, they should be a light mapping to the underlying identifier. Zooko triangle squared: lightweight human readable -> the core of secure / decentralized
@cwebber This looks interesting!
I'd MUCH rather any kind of DHT than any kind of blockchain - I think proof of work is a demonstrably failed mechanism which didn't accomplish any of the goals it set for itself and now is just a barrier to scaling and efficiency and, ironically, distributed hosting.
@natecull I'm wary of the blockchain approach myself (though note that you wouldn't need the kind of boil-the-ocean mining you have in bitcoin for this to work) and also think DHTs are a better route; what we need is a system to incentivize "archivists" to hold on to peoples' lightweight identifier objects.
@natecull I suspect Internet Archive would be super behind supporting that kind of thing
@cwebber Maybe I'm underthinking this, but it seems to me that there shouldn't be a *whole* lot of infrastructure needed to publish a lightweight crypto ID (petname and public ID pair):
like, literally just publish it as a signed update by the 'parent name space provider'.
and then the requester can check that 1, it is correct and 2, that it never changes. Boom, done.
But as I said, maybe I'm underthinking this. Probably the super hard part is deletion/update/cancellation?
@natecull Heh, you hit the nail on the head with your last sentence. You may have seen me writing up my "minimalist storage/identity" system last week, and the response was talking to the DID people (and I'm convinced now they're right) is the challenge is in revocation / migration / etc of keys.
Given that, I think the Decentralized Identifiers structure isn't so large, and does seem very general! You can read it in about 30-45 minutes.
@cwebber basically I'm thinking the ONLY EVER reason you would ever need the permission of a 'parent namespace' is to publish that one name-key pair. That should be absolutely all they ever do, you should be able to verify they did it and didn't lie and don't start lying at any point, and they should not ever be able to repudiate or change that after the fact.
But immutable publishing probably isn't sufficient for human use cases, sadly.
@natecull Yes, my thought was, "use fingerprints as the person's id! so easy!"
It seems that people working on this have tried that in practice, and found out that it doesn't work as well for humans...
@cwebber Namespace resolution seems a really tough problem now that we're in a global/national/corporate social environment where *we literally cannot trust any organisation not to bare-faced lie* when asked for credentials on our behalf.
@cwebber like even DNS still runs on a huge amount of trust. We can check that our DNS records resolve correctly now and here for US but we can't verify that they won't be faked in transit at any point elsewhere on the net or in the future. And we know well-funded adversaries are deliberately doing this.
So I guess the problem for me is 'how can I guarantee a name provider will never remap my human-readable name to a fake public key for some viewers without my knowledge'
@cwebber and of course also 'what happens when I inevitably lose/delete my private key, or it gets stolen/leaked', both of which are going to happen.
@natecull yep the DID spec has some ideas, currently you can say, "here are five identifiers I trust, if 3 of them all agree that I changed my key, then it's true" type thing (so slot in your bank, a family member, a friend, your lawyer, etc and it should be harder to circumvent it while leaving a migration path)
@natecull You mean with petnames with that last sentence? A petnames solution with "localized human readable names" based off your local web of trust should be end-to-end secure because it relies on signatures of your peers
@cwebber mm, I guess requiring multiple signatories might help somewhat. Reduce the possibility of compromise at any one point.
The problem of getting a web of trust seems somewhat similar to the problem of doing basic research to verify facts on the Internet.
@natecull BTW I was semi disappointed to find out that IPFS, which I thought was a cool system that didn't have blockchains which grow forever, is going to add a venture backed blockchain with an initial coin offering soon as its (primary?) "sharing incentive" system soon
@craigmaloney @natecull Well I think you want to design a system where the CA doesn't have to opt-in to it :)
@cwebber @natecull Unfortunately I think it's easier to notarize a business than a person. Businesses have paper-trails and a general covenant with the state and federal governments that they're not up to any shenanigans.
That said, even businesses can be deceitful and the only legal recourse is to dissolve the ability for that business to exist in the legal sense.
The CAs take some of the legal responsibility for determining legitimacy, but ultimately they're just as fallable
@craigmaloney @cwebber Looking at what's happening right now with Snopes - a fact-checking site on the front-line of global politics/war being torn apart over site ownership questions by a divorce between its owners - it's worth realising that today, on the Internet, the personal is commercial is political is military.
And it all revolves around the question of asserting and proving identity and proof of trust paths for knowledge.
Should mak a good movie.
@craigmaloney @natecull I'm not so sure. What's a person in terms of identity? I think we've had enough interactions where I could notarize you. Could identities be forged? Sure, happens in real life too. Identity is messy, but...
@natecull @craigmaloney
Here's another assertion: a person probably shouldn't just have one identity. Identity is association, and inherently many to many. The motivation behind DIDs is partly coming from the refugee crisis, and individuals being disconnected from their state-issued identity.
Compelling user story writeup here: https://github.com/WebOfTrustInfo/rebooting-the-web-of-trust-fall2017/blob/master/topics-and-advance-readings/RWOT-User-Story.md
@cwebber @craigmaloney I skimmed this and I wish I could grasp quite how it works - I get the sense there are two keys for a user, Control Key and Owner Key? Huh?
If I feel confused, and I know a little bit about crypto (never coded, but did use PGP briefly back in the day), is it maybe too complicated?
I know crypto is tricky and trust is very hard to algorithmically define, but can we make this easier somehow?
Will reread and try to grasp what's going on.
Like I think can't we literally start with JUST:
1. 'I am the entity who controls this identity', and
2. 'This piece of information was authored directly by this identity'
where 'entity' may not even be a person, because we need to allow machines to communicate just as much as we need to allow humans.
and then build up from there?
MAYBE there are things a human ID needs that a machine doesn't but we need to start with the core basics.
@cwebber @craigmaloney like right now the thing I'm very much worried about is that:
1. All our communications are stored on devices we don't 100% trust or control
and
2. All our communications are routed through networks we very much do NOT trust or control
and
3. All these devices and networks are going to lie and fake communications from us, if they can
and
4. Hostile humans at all levels of governance from crime to US President are strongly forcing 3
@craigmaloney @cwebber so maybe we need some kind of personal authenticator device and PIN/password combo, and then we need a way of using this to sign key requests and send them over unsafe, untrusted channels which might include 'the very phones we're typing on'
@cwebber @craigmaloney and of course all cloud VMs are COMPLETELY unsafe (with regard to privacy or key material, which can, so I assume WILL, be harvested silently in bulk by natsec-level operators with no awareness by sysadmins - slightly better with regard to hostile changes, as those can be detected by the sysadmin).
Basically only something you physically hold can hold key material, IMO. And it can also be stolen.
@craigmaloney @cwebber But, eg, in the case of Syrian refugees we would NEED to assume that 1) Putin and 2) Trump (+Stormfront, etc) will have the ability and motivation to send national security demands via their militaries and spy infrastructures to telcos, phone operators, app stores, cloud VM hosts, etc. How might people with compassion and some limited tech autonomy be able to work around this?
eg assume the Syrian hacker army is an arm of .ru AND .gov.
@cwebber @craigmaloney also eg:
in the case of 'mobile app development' I don't even understand why verifying Donna's identity should matter at all to Bob.
If the app architecture is so badly designed as to mean that if Donna were a spy her app would have root permissions on any device it ran on.... then something's already gone badly wrong.
And even if we can prove Donna's ID it doesn't mean she isn't an agent of some foreign power, or can code correctly.
@craigmaloney @cwebber Wait I mean Alice gah.
Already confused.
@natecull @craigmaloney There's a lot of other ways aside from just rooting a device that an app can promise to ensure users' safety in this scenario and not do it. Imagine eg if the app promised to do end to end encryption on a messaging platform but actually insecurely exposed stuff over a vanilla HTTP connection? Rooting a device isn't the only consideration you want to consider here.
@natecull @craigmaloney Security isn't the only consideration either. Bob and Alice are agreeing to a large time commitment, and other scenarios involving money, etc could be involved. Lots of reasons to want to show credentials.
@cwebber @craigmaloney I agree that verifying identity - at least to the point of 'this is the same person who initiated a conversation with me and someone else I know can vouch for their ID' is important, yes, and the simpler and more pervasive we can do it the better.
@natecull @cwebber @craigmaloney PGP is in my view one of the best technologies to invest in and try to grow in the coming years as adding to it could have so many benefits with little costs.
@Benjamin @cwebber @craigmaloney I agree, if it can be made radically simpler.
I feel the obsession with 'avoiding man in the middle impersonation on first contact' was a bit of a mistake. Far more important that ID *doesn't change*. Could easily fix with multiple identities per user for each 'channel', eg:
* Nate Cull on Mastodon
* Nate Cull on Twitter
* Nate Cull in person (USB stick)
then it's trivial to check if they're the same or not.
@natecull @cwebber @craigmaloney I think that making it simpler isn't necessarily important as long as we make it impossible to live without learning how to use it or just accept that some people do not care about their privacy.
@Benjamin @cwebber @craigmaloney I think simplicity is important to proofs of correctness.
@natecull @craigmaloney I think what you're getting at is "if users can't actually control their computers, then we're all screwed", and I agree.
@natecull @craigmaloney Those are legit concerns!
@natecull @cwebber sadly unless you learn die design, fab your own chips, write your own BIOS and OS, and write your own software there has to be a level of trust in other folks to not be a bad actor. Look at the recent Intel nonsense where there was a separate computer (with network server) that the CPU couldn't access.
@natecull @cwebber @craigmaloney
For values of entity=keypair, just signing (or using your private key to encrypt) the thing is enough, right?
@cwebber @natecull @craigmaloney I know I have many different identities and I just wanted to state that while it is doable, it is hard to completely separate.
@craigmaloney @natecull Well to be fair, that's the only identity I'd be "notarizing" :)
@cwebber This is where I wish we had a generalised 'key space' of some kind: eg, a namespace like DNS but where registering a name means you have a private key for that name.
But I guess there's a whole huge legal minefield around any kind of human readable names involving trademarks, libel law, hate speech etc, etc. And the problem of assigning 'root of trust' to the namespace root when we have no rational grounds to trust either nation-state or corporate level players.