A System for Handling 1 Compromised Key
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

wildbus8979@sh.itjust.works on 08 Jul 2024 17:55 next collapse

Sounds like you want GPG and the web of trust.

just_another_person@lemmy.world on 08 Jul 2024 18:44 next collapse

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?

Tangent5280@lemmy.world on 09 Jul 2024 16:33 next collapse

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.

jeffhykin@lemm.ee on 09 Jul 2024 17:10 next collapse

Nailed it

just_another_person@lemmy.world on 09 Jul 2024 17:23 collapse

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.

jeffhykin@lemm.ee on 09 Jul 2024 17:09 collapse

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

just_another_person@lemmy.world on 09 Jul 2024 17:21 collapse

Got it. Well, mostly the same situation, in which you would only know if your key was compromised by finding it somewhere.

OneCardboardBox@lemmy.sdf.org on 08 Jul 2024 19:16 next collapse

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…

rezifon@lemmy.world on 09 Jul 2024 05:27 next collapse

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

jeffhykin@lemm.ee on 09 Jul 2024 17:17 collapse

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.

makeasnek@lemmy.ml on 09 Jul 2024 04:20 collapse

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.