2

When one desires to share their public key openly, besides sharing just the key itself:

  • How does one verify that the key belongs to who it claims to be owned by?
  • What is the use case of the key's fingerprint?
  • Is there a benefit to create a detached signature of the key to verify it was signed by the same person who created it? Is there a trust advantage to this?

The process for example:

# sender exports their public key
gpg -o key.asc -a --export USER-ID

# sender creates detached signature of public key
gpg -o key.sig.asc -b -a key.asc

# recipient verifies signature of sender's public key
gpg --verify key.sig.asc key.asc

Are there any other things that can be done to verify the public key wasn't made with an ill intent?

1 Answer 1

3

Authentication of public keys sent over an insecure network is generally done through one of the following methods

  1. Public Key Infrastructure (PKI). We rely on certificate authorities (CA's) to authenticate certificates, and we trust the CA's to do their job properly. This is the method generally used on the World Wide Web to authenticate certificates used by secure web sites.

  2. Web of Trust (WOT). If you trust Carol, and Carol trusts Bob, and Bob trusts Sue, and Sue says she authenticated Joe's public key and Joe's public key is xyz - then you can rely on this chain of trust to assume that Joe's public key is in fact xyz. WOT is often used with PGP.

  3. Trust on First Use (TOFU). Alice connects with Bob for the first time, and Bob sends Alice his public key through the network. Alice stores Bob's public key (this is sometimes referred to as 'public key pinning'). Then, each subsequent time that Alice connects with Bob and she receives Bob's public key through the network, she verifies that the key that she recieves from Bob is the same as the one that she has pinned for him. This method is often used with SSH.

  4. Out of band authentication. Alice connects with Bob. Bob sends his public key through the network to Alice. Then, Alice calls Bob, and verifies that the public key that she received for Bob is true and correct. This method is used by Signal.

2

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .