Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How does Keybase verify the ownership of the PGP keys? #3735

Open
gh67uyyghj opened this issue Dec 5, 2019 · 5 comments
Open

How does Keybase verify the ownership of the PGP keys? #3735

gh67uyyghj opened this issue Dec 5, 2019 · 5 comments

Comments

@gh67uyyghj
Copy link

I am new to keybase and I found the client codebase pretty huge to get the answer of my question, but how does keybase verify that the client-generated PGP keys are actually owned by the client? does the server sends some challenge encrypted by the claimed public key and waits for the unencrypted version or what exactly?

@Brianetta
Copy link

keybase pgp select
It actually runs GnuPG to sign a proof onto your sigchain.

It can, at the same time, import the secret key if desired, locally, for use with just that one device.

keybase pgp import
If you're using some other implementation of PGP, then Keybase can read the secret key file and generate the signatures itself. The secret key will be imported locally, but can be dropped later with keybase pgp purge.

@gh67uyyghj
Copy link
Author

@Brianetta Thank you so much for the quick answer, so the idea to self-sign the public-key with its private-key and push the signature to the server and the server then verifies the signature with the publci-key, am I right? is there a detailed example of this in some docs or the piece of code in the go client repo which does this? I'd be totally grateful since I am barely exploring of how keybase works

@Brianetta
Copy link

Like any proof, the signed statement ends up appended to your sigchain. I've no idea what the server does, but the onus is on the client to verify all proofs. So, some other Keybase user wanting your PGP pubkey will be able to get it from your sigchain, and at the same time verify a message signed by that key and your Keybase key.

I have several PGP keys. Here's my most recent proof of one:
https://keybase.io/brianetta/sigchain#6f1e2a37335df0ca349bf42edf46fcacc800dcb2884e36d8c0a09614d27536b60f
You can see there's a JSON payload, signed by one of my devices. Embedded in that payload is a PGP signed message. Using those two signatures, you can be certain that the PGP key is controlled by me.

@gh67uyyghj
Copy link
Author

gh67uyyghj commented Dec 18, 2019

@Brianetta thanks! but my question is really about how can I or the server can verifiy that YOU really own that PGP key? you only signed with your device secret key that you have that public key. But you didn't prove that this public key is owned by you if I am getting the sigchain correctly. I mean at least the server needs to check self-signing the PGP public key to verify that you really own it. Right?

@Brianetta
Copy link

Brianetta commented Dec 19, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants