Edit: obligatory explanation (thanks mods for squaring me away)…
What you see via the UI isn’t “all that exists”. Unlike Reddit, where everything is a black box, there are a lot more eyeballs who can see “under the hood”. Any instance admin, proper or rogue, gets a ton of information that users won’t normally see. The attached example demonstrates that while users will only see upvote/downvote tallies, admins can see who actually performed those actions.
Edit: To clarify, not just YOUR instance admin gets this info. This is ANY instance admin across the Fediverse.
Wouldn’t it be pretty simple to just encrypt them with the user’s password? Or rather, create a key that’s generated from the password, so you don’t have to store the actual password in cookies, and then just decrypt it on the client side?
There will probably be issues with handling password resets, but other than that it doesn’t sound too hard to implement it, unless I’m missing something, since my knowledge of crypto isn’t anywhere near good. Should be one AES call, the way I see it.
EDIT: Oh, I’ve forgotten that you also have to somehow encrypt the messages that you send to someone, so a asymmetrical encryption is required, and that would be way harder. Or, maybe just store a public key, and encrypt the private key with your password, which is loaded into local storage and decrypted with your password once you log in? Still, that’s not as easy as I thought.
You log yourself into your instance using your password, using code that the instance sends you. Thus it is trivial for a sufficiently motivated instance admin to get your password in plain-text and undo any encryption that might be done on the private key stored on that instance.
To be actually secure you have to store the key separately, not use a webapp, etc. Solutions for that exists but aren’t really in the scope of a link aggregator which is why I think “send a message the recipient’s instance admin can see” is fine, ideally replaced by “send an actually secure message” if the recipient has gone through all the set-up hurdles, e.g. linked an address on an actually secure messaging service.
On encrypting messages, this is a solved e2e problem if users home instances generate public private key pairs for its users on sign-up ( or users can provide their own )
Then the instance admin holds the private key and can still decrypt.
If you cared that much about privacy in DMs, we should have a “profile page”. Post a PGP public key there. Then you can send PGP encrypted messages to anyone who you have a public key for.
Tbh it would be trivial to just salt and hash the usernames (for keying the votes), no need to encrypt or involve the users password. The salting and hashing would be handled by the users home instance ( which presumably the user trusts ) so building a rainbow table would be non trivial for an attacker ( assuming the home instance keeps its salts secret ).
I like this idea. Easily solves the main issue with other instance admins getting access to it, while also being easy to implement.
Another option would be to aggregate votes per instance so programming.dev might only see “42 upvotes from lemmy.world”, but not user details. I don’t think that changes the inter-instance trust equation, at least not notably, and it even works in conjunction with non-aggregated upvotes and displaying everything publicly.