ATProto and the ownership of identity
anirudh.fi
anirudh.fi
I thought that people generally understood that domain names are owned and that their provenance can be independently verified (which is why they're valuable for identity) but there's a fairly large and vocal contingent of Bluesky users that are frustrated by domain names, so much so there are multiple efforts to establish a private verification system on Bluesky like verified.quest[2].
A lot of people do not want to look at and understand domain names, instead they want to see a name and a check mark. They want a central authority to tell them who is trustworthy and who is not. Domain names are a great solution for technology-adjacent people and I hope that they become more widely accepted, but I'm not too optimistic.
I am optimistic and hopeful that AT has a bright future ahead of it. I think AT has a lot going for it... but I do not think that identity will be a part of that. I suspect many apps built on AT will not bother with handles and will just use local display names.
I see having independent, from Bluesky, and multiple methods of verification as a strength of the network and architecture.
Every service with handles is just another microcosm of the DNS system’s same problem, just usually with even fewer affordances for disambiguating (the DNS’s country codes and things like .org vs .com offer a single crude sorting system, but we’ve seen it solve very little since the move is to “buy ‘em all” if you’re big, witness how WWF the charity couldn’t peaceably coexist with WWF, now WWE just by using .org and .com)
Nobody cares if I'm ethbr1 or ethbr2. Uniqueness and stability suffices for me.
People do care if {famous person} is {famous person}. Therefore there should be some attestation process for mapping who the current official domain is for {famous person}.
What I like about ATProto is that it is decoupled like this, even if it still has weak points in terms of decentralization. We can build and extend outside of the choices and governance of Bluesky. It is a true platform in the sense that will make the participants more money than the originators in the long run
That's also why domain verification systems need to have continuous re-validation with more frequent re-validation for new identities. For example, if '@goog1e.com' is a new identity, it should be re-validated after 1h, 4h, 8h, 16h (up to a maximum). Additionally, you could let other validated users with aged accounts trigger a re-validation (with shared rate limits for a target domain).
The great thing about domains is that those of us that are good faith participants can build a ton of value on them and that value can be used as a signal for trustworthiness. The hard part is conveying that value to regular users in a way that's simple to understand.
We could also have systems that use some type of collateral attestation. For example, if I donate $1000 to the EFF, maybe I could attribute that donation to my domain 'example.com' and the EFF could attest to the fact that I've spent $1000 in the name of 'example.com'.
You probably have to gate that though some type of authority, but I can imagine a system where domain registrars could do that. I would love to buy reputation from my registrar by donating money to charity.
And if the EFF turns bad in the future you can't get a verification badge without supporting bad guys.
You also create a lot of problems and break trust, see the recent US election for an example
One-size-fits-all solutions are always inferior to a system that enables multiple solutions to co-exist and which are forced to compete
With social media handles, it's the eternal game of finding something that's available everywhere, or doing the awkward dance of "i'm @foo (except for platforms B and C, where i'm @_foo)".
I wonder if there is a future for a service mapping domains to human-interpretable names, though?
ATProto specifically advises against shortening domains into some "human readable" format. For example, @foo.bar.com and @foo.baz.com could easily look the same. The full path is unique. What Bluesky provides is a "display name" in addition to your handle. Multiple people can have the same display name, but it always appears next to the full handle
https://atproto.com/specs/handle#usage-and-implementation-gu...
How does… Movie Star get an authoritative domain that people can trust?
But one of them I can receive email on and it also hosts my blog, and if I wanted to, I could reference it here in my bio, just like how people do it for "non-self-custodial" social media identities.
It's not perfect, but at least it works across services for regular people without any risk of "handle sniping" once a new service becomes popular. (I suspect that for regular social networks, different rules apply to celebrities than to regular people.)
And for companies, there's always trademark law, which is already heavily integrated into the domain registry framework: Also not perfect, but definitely better than replicating the same solution to n services/sites.
For now, I think wider adoption of things like DomainConnect [1] would make a difference. It works really well to set up an MS365 account with DNS hosted at Cloudflare, but it would need a workflow that supports sending requests to your DNS admin rather than assuming everyone is a DNS admin.
> A lot of people do not want to look at and understand domain names, instead they want to see a name and a check mark. They want a central authority to tell them who is trustworthy and who is not.
I think 'trustworthy' is a key word there and would add that I think a lot of regular people conflate identity verification with moderation. It's important to keep those separate because as soon as an identity system becomes a moderation system, it's worthless.
That's what makes domains so great for identity, especially with the way the AT protocol works. It helps to create a clear separation between identity verification and moderation. Moderation is much harder than identity verification, so having a clear line between the two should make it easier to develop technical systems that perform identity verification.
For pure identity verification, I think BIMI [2] is sitting on a solution they don't even realize they have. They're too tunnel visioned on email verification, but the system they've built with VMC (verified mark certificates) works as a decentralized system of logo verification. For example, I can tell you this logo [3] is trademarked and owned by 'cnn.com' and I can do it via technical means starting with the domain name:
dig default._bimi.cnn.com TXT
Seeing a 3rd party URL in the TXT value makes me think the implementation is weak since that would be better as a CNAME pointing to a TXT record managed by a 3rd party, but I've never looked into the details enough to know if it'll follow CNAMEs (like ACME or DKIM do).Also, the VMCs are only good for high value brands because CNN is paying DigiCert $1600 / year for the certificate, but, since it's just PKI, it allows anyone to put up that logo with a verified badge on the @cnn.com identity. A more accurate badge would be the registered trademark symbol [4].
Even though that only works for high value brands that own a logomark, it works extremely well and would be a great start to a system that's easier for the average person to understand because logos are a simpler concept than something abstract like domains and no one is spending the time and effort needed to get a fake VMC (if it's even possible).
The Bluesky implementation for domain verification has a long way to go though. It's very naive at the moment and doesn't even do a proper job of dealing with changes in domain ownership. In fact, almost everyone doing domain validation is doing it wrong because very few implementation do re-validation from what I've seen.
1. https://www.domainconnect.org/
3. https://amplify.valimail.com/bimi/time-warner/I0vDrJpkRnB-ca...
4. https://en.wikipedia.org/wiki/Registered_trademark_symbol
How is that remotely surprising?
Most famous people are not known by domain names. Most are known by their real names. Some are known by usernames on particular services, like MrBeast on YouTube or dril on Twitter.
Maybe, if Bluesky stays popular, a new crop of Internet-famous people will be known by their domain names. But even then, you're probably not going to remember whether they're foo.com or foo.io or foo.bsky.social.
Some people, mostly in tech, do have well-known personal websites hosted at their own domains – but I for one rarely remember the specific domains, because I'm used to finding websites through search. (Off the top of my head I can only think of cr.yp.to.)
Companies are more likely to have websites and well-known domains, so there's that, but most social media users are individuals.
Besides, domain names are not more owned than Twitter handles or any other kind of username. If anything, they're less owned. When Elon Musk stole some people's Twitter handles, it was (tech) news. The expectation with most services is that you can register a name and hold onto it forever for free; at worst it might be lost if you're totally inactive for a long time. Meanwhile, domains require yearly payment. Once they expire, they're often instantly snapped up by a bot with no way for the original owner to get them back.
So in practice, people lose their personal domains all the time. Less common for companies, but companies do tend to let their names expire when they go out of business. Just the other day there was a front-page post about using this to hijack people's identities. [1]
Domain names can also be taken away for trademark infringement (UDRP) or by a court for other legal reasons (e.g. pirate sites often have their domains seized). Domains can be lost for political reasons, as with .af domains suspended last year [2] following the change of government in Afghanistan (originally thought to be caused by the message expressed by the names, in reality caused by payment issues resulting from economic sanctions, but either way happening for political reasons). You even have situations like .io where millions of domains might disappear in one stroke (though it probably won't actually happen).
[1] https://trufflesecurity.com/blog/millions-at-risk-due-to-goo...
[2] https://www.reuters.com/technology/brokeaf-goes-offline-afgh...
But yeah I was disappointed with the lack of adoption there. The CEO of the onion is a prolific poster and has to deal with scambots but can't be bothered to use onion.com in his handle
A parallel might be not necessarily a Public persona, but still identity verified
I suspect the average person believes "paying for services" = "slavery" and "free as in beer" = "freedom" and would, if pressed, would rather give their life than change that belief.
As with most things of moderate import or more, the vibes matter.
Setting up your own domain is pretty simple, but it is also daunting for people their first time.
Even with all the hand holding in the world, without 1:1 human interaction most people won't make that jump.
Are they really owned? I’ve always thought they’re [f]actually merely temporarily leased from a registry, and the ownership is just a legal fiction.
Unlike cryptographic keys, I don’t think domain names really pass the “can they be taken away without owner’s consent?” test. On paper maybe they should, but that’s certainly not how it is in reality.
Attaching digital identity to something that comes from a third party (a registry) rather than individual themselves is a fundamentally wrong idea.
https://www.rfc-editor.org/rfc/rfc4198.html
urn:fdc:domain-i-controlled-in-2022.com:202212:resource:fredThat feels like a turtles-all-the-way-dowm problem.
Ultimately, you either have to tie to something suitable that can be obtained by everyone or a unique characteristic of everyone.
And given the blatant privacy issues [0] with uniquely fingerprinting users, I'd much prefer the former alternative.
[0] https://hudoc.echr.coe.int/eng#%7B%22itemid%22:%5B%22001-826...
[1] https://fra.europa.eu/en/eu-charter/article/17-right-propert...
EDIT: I will concede there is likely some kind of peering/pubsub architecture that would allow for connecting to people you know via QR codes of their DIDs and then using nicknames you distribute to those followers or whathaveyou, I for one am enamored by the design of KERI [0], but I guess you have to decide whether you want people to open a connection to you without any prior negotiation with any of your peers. But if you're OK with people having to be "in-network" or part of a gossiping p2p setup, maybe we can get by without paying third parties for identities.
In the meatspace, I'm sure I don't have any single global handle. Here I have an online handle, my wife has a nickname for me, my friends use various names and nicknames too, one country's government had issued me a passport for one legal name, another country's government - for a different one, and so on. So I wonder if thinking of choosing a global namespace is actually a design mistake, as it doesn't match how the world works.
This said, KERI looks interesting - I like the idea that there's no single global ledger, as it matches my own thoughts on the matter. Thank you for the link, I'll save it to my reading list.
Third party attestations/endorsements can be based on any conditions, such as payments, behaviors, or whatever - that's up to third parties to decide. But those mustn't be my identity (because that way my identity becomes something a third party controls, and that's not how things are), they must only refer to it.
It's basically Web-of-Trust again (and I realize any attempts to build a digital one had failed so far)
What I'd want is:
1. register with some trustworthy third party (be it Google, Bluesky, or whoever), get an identity (can be a domain, but an entry in a database is fine)
2. have the option to craft an identity from thin air (by generating a key pair on my laptop)
3. have the option to move between 1. and 2. or between multiple instances of 1. (identity takeout)
4. (bonus) have the option to create sub-identities: I can register a completely new pseudonymous account, but have some (cryptographic) proof that this identity has certain properties: it is tied to a Google employee, to a woman, to someone with > 10.000 Stackexchange score ... without anybody being able to link that account to the person.
I think 1 and 2 are solved, 3 is quite tricky from a UX perspective, and 4 is going to be really hard (but would enable a lot of cool scenarios).
This isn't currently a reality with ATProto, though they're making important progress over the status quo.
Your identity in atproto is your DID. Your domain (if you use one) is just a handle. Currently all DID resolution goes through https://plc.directory, which is completely controlled by Bluesky. Their plan is to eventually have this run more like the DNS by something like a nonprofit, but AFAIK that process hasn't started.
The question is if Bluesky turned completely evil today, what recourse would users and app developers have?
All the other apps could form a coop for a new DID directory and switch their users over. That might work, but I would like to see something like this in place running alongside Bluesky's directory since the logistics of running such a thing are not obvious.
Also, it's not entirely clear to me that running an alternative pseudo-DNS is really better than just using DNS like the fediverse does.
One really nice thing about it is that DIDs are opaque values, so squatting should essentially go away. And there's not really any good reason for DIDs to expire like domains do. This is nice for account recovert, since in the worst case if you couldn't prove your identity to the DID registrar your account would just go stale, rather than potentially being taken over by a bad actor[0].
almost all. You can use did:web if you want to be more independent (but since 99.99% of people don't it's almost completely irrelevant in the big picture).
> The question is if Bluesky turned completely evil today, what recourse would users and app developers have?
With sufficient developer consensus, we could all agree to switch to "plc2.directory". It'd be a shitshow, but hopefully not completely fatal.
> One really nice thing about it is that DIDs are opaque values, so squatting should essentially go away
Zooko's triangle strikes again! https://en.wikipedia.org/wiki/Zooko%27s_triangle (often expressed as a problem, but in this context it's mostly an advantage)
I'm not sure there is documentation on how to do this yourself though, if that was what you are asking.
Navigating to my profile here: https://pdsls.dev/at/did:plc:i3gjwozl32eq3j3ejyw44hh4
I clicked a link and my DID document is stored here: https://plc.directory/did:plc:i3gjwozl32eq3j3ejyw44hh4
Not sure how you'd store it in other places, though that'd be pretty decentralized if you could.
For example, here's `did:web:retr0.id` : https://retr0.id/.well-known/did.json
(.well-known/atproto-did is for handle resolution, not did:web)
If I was to upload a document like yours at https://retr0.id/.well-known/did.json
How do I configure Bluesky's social application to reference my did document at https://evbogue.com/.well-known/did.json (which doesn't exist yet) and have that be how people find my posts on Bluesky? Even if my selfhosted did document points to "https://shimeji.us-east.host.bsky.network" as my PDS?
Could I use this to host my stuff at many PDSes?
Sorry if I seemed confused. I listened the whole podcast and didn't realize alsoKnownAs is different than did:web.
(It's no longer possible to create new accounts with a did:web on Bluesky PBC's hosted PDSes, mine is old and "grandfathered" in)
What happens if I set my handle on my selfhosted PDS as "alsoKnownAs: [evbogue.com]" and leave my handle at Bluesky PBC's PDS as "alsoKnownAs: [evbogue.com]".
If that's the case, what is the (very well hidden) "choose your account provider" button on Bluesky's registration page ("You are creating an account on [[Bluesky Social]]") used for? Self-hosted PDS? If so, if it's possible to spin up a temporary PDS with TryCloudflare for the initial set up and keep the did.json hosted on static site instead?
Yes, or some other commercial PDS hosting service.
> If so, if it's possible to spin up a temporary PDS with TryCloudflare for the initial set up and keep the did.json hosted on static site instead?
Not sure why you'd want to do that, but it sounds possible.
I wonder if when your PDS was online if you had some kind of local sync for messages from the people you follow? You wouldn't follow many people, so you could quickly build a local Appview that organizes the posts into a chronological feed. Then you could browse your messages later without an Internet connection.
You can't see most of this information in the Bluesky app, so I find it helpful to use this other program to look up my information: https://pdsls.dev/at/did:plc:i3gjwozl32eq3j3ejyw44hh4
For those of you who have time to listen to an hour podcast, pfrazee explains in depth how the Bluesky DID system works here: https://www.softwaresessions.com/episodes/atproto/
I really liked the idea of KeyBase. I found the idea of a cross-platform cross-system identity elegant.
Probably the worst feature is the "nuclear block" which allows a single user to completely disrupt a conversation: if one user blocks any other user in the thread, this removes the blocked user's replies for everyone else reading the thread, and severs the connection between posts so that even if you go directly to a post from the blocked user you can't see what post they were replying to or any of the rest of the thread above that.
There are partial workarounds to this with third-party websites that attempt to piece together the thread from various other API calls, but these aren't perfect and it's annoying to have to do this to understand the context of a conversation full of blocked posts.
Worst of all this was all opaque to the user on both ends, manifesting as merely glitchy behavior, but I was causal in blocking people who annoyed me because I didn’t think there were any consequences besides not being able to follow/DM me, and this guy I didn’t know ended up contacting a mutual friend begging me to unblock them because I had suddenly excluded them from all the rooms that we were both spending time in!
Maybe there needs to be more nuance in the block button, like, what kind of restraining order are you looking for here, don’t call me? Or don’t ever interact with me or my friends ever again? Platform needs to make consequences of hitting that button clear tho.
Basically, it allows OP to be a dang, or reddit-style mod of their own thread.
Negative: If OP is not interested in opposing views, they can shut that down.
Plus: the option to kill trolls, dead.
These types of design decisions all have plusses and minuses, but I am in favor of killing trolls given that if someone is militantly not into hearing opposing views, I can just not follow them.
I think replies should be owned by the one posting them, not the one they’re replying to.
I think you can understand the point I'm trying to make if you keep in mind that Bsky is essentially a microblog. (For the dinosaurs, a newspaper)
Each profile gets the right and the burden/responsibility of moderating/editorializing their page as they see fit. It's _totally normal_ that you can't force a newspaper or a blog to publish content that they don't want to publish. And in the meatspace, if you want to get your voice/reply/commentary heard, you make your own blog/newspaper.
People have the right to make their voice/opinion/commentary heard, but you can't force other people to associate/publish/republish your message to their readers. You have the right to your own opinion, but only on your own personal forum, otherwise it's open to the court of public opinion and can be restricted if on someone else's forum.
They could've made something much more like Nostr be at the core of it all, so that the barrier to entry is small for people wanting to write their own implementations, but the developers/designers of atproto put very little value in simplicity. They wanted everything to be as powerful as possible at every single layer, which means far too many levels of abstraction, super heavy-weight implementations, and stacks upon stacks of specs that are hard to unravel, etc.
Anyone can learn Nostr in minutes. To learn atproto you need weeks.
With Nostr, for example (or even RSS), you can fully understand it from end to end, in minutes. As a former IPFS deloper myself I can assure you in just 2 days you didn't even understand the CAR format of a repo, unless you had prior experience.
I looked at nostr but lost interest when I noticed there was no provision for key rollover. I guess that’s fine but ephemeral identities. Is there a concept of using a domain name as a handle like bluesky? It’s been a few years so maybe it’s worth a second look.
Key rotation is an unnecessary complexity, imo. I never heard of anyone wanting to use a domain name as identity in Nostr, but there's probably a NIP for that where a domain can prove it owns the private key, and be used as an identity.
I mainly quit Nostr development because it was all essentially controlled by 'fiatjaf', and he was making bad decisions, and a childish intolerable arrogant person in general whenever people asked him to justify those decisions.
https://en.wikipedia.org/wiki/File:Survivorship-bias.svg
The one thing that completely turned me off nostr is the idea that my identity is tied to my private key and that it can not be recovered. I'd guess that the reason you don't hear from people like me is that we simply don't bother to work with such a boneheaded design.
Nostr is so far ahead it's not funny, in part because of this, in part because it's actually decentralised, in part because of already existing features built in to almost every client, like zaps.
I don't understand why anyone would invest their time in ATProto over Nostr, and don't know anyone who has studied both and has.
Also it's distasteful to do any sort of content addressing on json data. One would think they'd learn and use CBOR after seeing secure scuttlebutt, but no? Now you have to worry about only sending text payloads, escaping some characters, avoiding whitespace when printing the json... Guaranteed to be a source of bugs...
2) One of the things Nostr did get [slightly] wrong was the hashing of the JSON. It's pretty straight-forward to sort properties, and remove spaces, to create canonical JSON that can easily be hashed, but (and I forgot the specific reason) Nostr made it where you can't directly store Nostr in IPFS (for example) and have the post hash/ID be identical to the IPFS CID of the canonical JSON. They missed that opportunity because fiatjaf was not well enough versed in IPFS, so he got that a bit wrong.
All that being said I am still a fan of Nostr. It is far better than other Social Media protocols imo.
The reason Social Media protocols need to be kept simple is precisely for this reason. Getting developers to all agree on things is next to impossible. So the way to combat that is by removing all those "things", and go with the simplest design that's workable. It's almost like politics in that it's "The Art of the Possible". And to be "possible" in this context means universal acceptance.
For example, if you just wanted DIDs for verification, I reckon you could go the route of having DIDs be represented as [DID]@[ActivityPub service domain] and treat each ActivityPub service as a different type of PDS.
I don't think AT Proto/Bluesky will wind up killing the Fediverse, at least not any time soon, so I think it would make sense to try to figure out ways to take some of the more interesting applicable ideas and try to figure out how they could work.
I think it might just, if the Fediverse can't find a way to detach identities from instances/servers.
It's baffling to me how people have been flocking away from Twitter, to at least some extent because they are unhappy about how the new owner runs things, to a system that gives exactly the same power to the people running each individual instance.
That said, I also expect that some people will remain on Mastodon.social using it basically as a Twitter alternative, too, for the same reason that some people will basically never leave Twitter either, until it goes offline.
Or on Bluesky.
If your instance isn't bad but you want to move, there's a migration mechanism. And nobody is stopping you from having multiple accounts. The whole internet used to work that way, where you'd have a separate account for every niche-topic forum.
> The whole internet used to work that way, where you'd have a separate account for every niche-topic forum.
True, and I'm personally happy it's not like that anymore. And you can still create a new identity per topic/interest if you want to, so arguably federated identities are the best of both worlds.
Sure you lose the content you posted. And it’s an important point. But your identity, is migrated.
Similar if we want something akin to FB groups with private membership, events, and content
Once they solve that it will really take off beyond just a better Twitter.
https://github.com/lexicon-community/lexicon
Calendar, locations, and events is one of the first they are considering
Also, there is a whole spec for client-to-server ActivityPub which has been largely unexplored by developers and would allow end-users to be in full control of their whole experience (i.e, no "instance" between you and the rest of the social web.
To clarify, the alternative (and default) is to use did:plc, which utilizes Bluesky (the company’s) centralized identity server. It isn’t possible to use other plc servers with any of the Bluesky clients either. Therefore, if you use did:plc it’s simple to get kicked off of.
If you verify your domain: @yourdomain.tld
In-depth article: https://dustycloud.org/blog/how-decentralized-is-bluesky/
One thing to consider is that you do not have to reimplement the entire spec if you are only interested in building a feed or recommendation system. ATproto makes the core components plug-n-play, so users can use the Bluesky app while picking 3rd party providers for moderation and algo feeds
There is also an independent group with their own governance working to define a number of common lexicons for shared usage across applications
It is unclear where the handle query goes
However, you don't need a document per day. It can be dynamically generated by a handler or server less function on that route. This is important as employees at an org change, this information could be obtained from a database
You can for example: `curl https://verdverm.bsky.social/.well-known/atproto-did`
So for an organization, one might have a single handler responding to `*.atproto.company.com/.well-known/atproto-did` with the subdomain becoming the primary input variable
`curl -s "https://plc.directory/$(curl -s https://verdverm.bsky.social/.well-known/atproto-did)" | jq .`
I have also been long pondering what puts me off social media and how I could fix it. Often times it is the ease by which anyone can create new anonymous accounts, those accounts can be used to easily brew up a Firestorm of Falsehood[2]. Identity is a strong part of this and domain name verification isn't enough to solve this.
One potentially radical idea I've had is to form a social network of verified humans. Where each human is only allowed a single account. This is possible, while remaining anonymous to other users. I think the only way in which this can be done is by relying on passport (and other government IDs) verification. I have actually built a prototype of this (still very much a WIP)[3]. Of course, the barrier to entry is tough, if anyone has thoughts/concerns and suggestions on how I can make this happen I'd love to hear them.
Edit: To those downvoting I'd love to hear why, please :)
1 - https://listifications.app
> I think the only way in which this can be done is by relying on passport (and other government IDs) verification.
Given that most national IDs currently can't anonymously certify personhood to third parties, this seems like it puts unreasonable trust into the "identity broker" preserving both anonymity and not certifying sockpuppets. I don't see a scenario in which any even moderately successful solution would not eventually crumble under these two types of pressure.
By using a third party service to read your passport's NFC chip, we then generate a strong crypto hash of the concatenation of your name, DoB, and last 4 digits of your passport and we also encrypt that hash for good measure.
I agree that it sounds invasive, but there is no better way to verify uniqueness of a passport (and by proxy a human's uniqueness).
And yes, I am aware that a single human can have more than one passport. It's certainly not perfect. But it reduces the possibility of sock puppet accounts significantly.
If you register (just with your email and password), you'll get a little explanation of all the data collected (and don't have to move forward if you don't want to).
> this seems like it puts unreasonable trust into the "identity broker" preserving both anonymity and not certifying sockpuppets
True, but with enough resources onlyhumanhub itself can become the identity broker, no need for a third party.
So unfortunately it's back to a centrally trusted verifier even with chip-enabled passwords for this use case.
> True, but with enough resources onlyhumanhub itself can become the identity broker, no need for a third party.
That doesn't address my concern at all: Why should I trust that service with something as sensitive as the mapping of my real identity to any number of pseudonyms? What's the economic incentive to not eventually offer a de-anonymization service to the highest bidder?
[1] https://crypto.stackexchange.com/questions/75058/using-epass...
> Why should I trust that service with something as sensitive as the mapping of my real identity to any number of pseudonyms? What's the economic incentive to not eventually offer a de-anonymization service to the highest bidder?
Do you trust banks? Hotels? They all take a copy of your passport and likely store it insecurely.
The information that I store for the passports is irreversible. It's hashed. So even if I wanted to sell it I couldn't. I mean, sure, in the future if this becomes big and there is a company around it, it could become evil at any moment and then start selling this data but then you could easily sue the company for this.
That's even worse then for older passports (and inevitable for newer ones): Everybody will have to trust the service to be honest about not issuing sockpuppet identities. How would you prove that you aren't?
> Do you trust banks? Hotels? They all take a copy of your passport and likely store it insecurely.
That's not a concern I have at all. Every company providing service upon "identity verification" through a scan/copy of somebody's passport deserves everything bad fraudsters can throw at them. It's a non-verification method. And by the same token, the hotel could try to leak the fact that I've stayed there, and everybody taking passport copies seriously as evidence might believe them. I'm fine with that risk too.
Conversely, a private proof-of-humanity service will, by its nature, attract users that want to prove their humanity, well, privately.
> The information that I store for the passports is irreversible. It's hashed.
But that hash is ultimately calculated over somebody's passport data, isn't it? This means that anybody stealing your database will be able to deanonymize any user they have passport data for (which is not exactly secret information, as you've illustrated yourself with the hotel example).
Because that is the whole point of my service? It really feels like you're just trying to come up with ways that this won't work in very special and rare circumstances, where those really don't matter in practice for a social network (which let's face it, isn't a life or death service). It's all about upping the barrier to entry for casual users that would create hundreds of alt accounts to troll/spam people with.
And if that happens, what do you do? Deny service to that country's citizens?
And "putting a banner on impacted accounts" both partially deanonymizes and effectively bans legitimate users for no fault of their own.
Travel documents are not a digital identity scheme, and using the ICAO biometric travel document scheme contrary to its explicit design goals is just asking for trouble.
Also, someone with a lot of money can still get around this requirement.
Bribing a government to get fake passports is possible, but many orders of magnitude more difficult.
Maybe you could require biometric login, something that requires a Google, Apple, or Yubikey issued secure enclave that authenticates on physical touch / face ID, and require that touch for every post.
For me as a person participating in online communities, I'd rather just stay in my private group chats where I have met the people I'm interacting with.
That's the thing about reusing existing services and protocols for "proof of x": Quite often, such proofs being possible are often adjacent to or explicitly an anti-goal.
Apple does indeed offer an API that allows uniquely identifying a given device in a privacy-preserving way, though: There's an API that allows apps to store two bits of information about a given device, such as "this device was involved in fraudulent activity on our platform" or "this device has already redeemed a free trial at one point". Not sure if Google has an equivalent.
have you looked into world.org? They're scanning eyes and giving robust human identities. Before immediately dismissing, I'd check out the video -- https://www.youtube.com/watch?v=SXnwoMxKHV8
I think atproto + worldid can one day be very interesting
on edit: some things just bring out my cynical side.