from jeffhykin@lemm.ee to privacy@lemmy.ml on 08 Jul 2024 17:36
https://lemm.ee/post/36576299
I’m asking for existing tools/systems that let me programmatically say: “here is my public key, BUT if each of these 5 other public keys all send a signed message saying that my public key has been compromised, then you should mark my public key as compromised, and use the new one they provide”. (This is not for a particular task, I’m just curious if any existing auth systems are capable of this)
I call the idea “guardian keys” because it could be friends’ public keys or or just more-securely-stored less-frequently-used keys that you control.
NOTE: I know this would not work for data encryption. Encrypted data is simply gone if a key is lost. But, for proving an identity, like a login, there could be a system like this but I don’t know of any
#privacy
threaded - newest
Sounds like you want GPG and the web of trust.
Your public key is public. It’s in the name. There’s no way it can be compromised, because it’s meant to be disseminated publicly.
Am I missing something?
You’re missing the most obvious thing the OP might have meant.
I took it to mean the case when the public-private key pair has been compromised. Systems been hacked, someone looked over his shoulder when authorising himself etc etc.
So OP is just asking what happens if someone steals my private key, and I need to tell the rest of the world my Identity cannot be verified using this key pair anymore.
Nailed it
Yeah, but that wasn’t the post. Could have confused on what a public key was. Same question still applies though. If you know your private key was blown, you still need to manually clean up after it.
Yeah, sorry I incrementally edited the title before posting and accidentally made it make no sense. I meant publicly announce that a private key was compromised
Got it. Well, mostly the same situation, in which you would only know if your key was compromised by finding it somewhere.
What you’re looking for is a revocation key. You can generate one in GPG at the same time that you generate your identity key. The method of securing it is up to you. In your example, a simple way would be to encrypt it with the 5 sequential keys. Or you could break the revocation key up into K parts with Shamir’s secret sharing algorithm.
This example assumes that you’re using existing Web of Trust PKI to manage your public keys: stackoverflow.com/…/how-the-correct-way-to-revoke…
You could generate a revocation key and then encrypt for multiple people using Shamir’s secret sharing.
en.wikipedia.org/wiki/Shamir's_secret_sharing
Look into ssss and gfshare, the latter explicitly discusses this use of the algorithm.
manpages.ubuntu.com/manpages/…/gfshare.7.html
Cool, this is exactly what I was hoping to learn but couldn’t find. It sounds like its still a pretty manual process, but thats okay. If thats how it is righ now, then thats exactly what I want to know.
I’m considering making tools (GUI local app, but also website AUTH frontend/backend tooling) to try and make systems like this more commonplace and standardized. I didn’t know about revocation keys, so I’m glad I heard about that before trying to build my own.
Yes this exists. Multi-sig is also worth mentioning though it doesn’t solve this problem in the way you’re asking but it does eliminate the risk of total loss of security if a single key is compromised.