I want to verify a public key like this:
- Alice generates a public/private key pair for encryption
- Alice generates a public/private key pair for signing
- Alice signs a random 4-letter word + the public encryption key using her private signing key
- Alice sends her public keys (both) and the signature to Bob
- Alice sends the 4-letter word to Bob using a secure and trusted way
- Bob verifies the public encryption key of Alice by verifying that the signature is created with the 4-letter word in the way described above.
This is what I am not sure about:
- Is a 4 letter word enough?
- Does verifying the signature verify that the public key is the original key and has not been altered by a "man in the middle", when the original message is the secret?
Background: I want to archive save exchange of public keys between too parties. But there is no trusted third party authority I could rely on.
But instead the two parties will meet in person at the beginning. At that moment they trust each other completely. One party can give the other a secret (for example on a sheet of paper).
Of course in theory the other party could give something back. But for reasons of user-friendliness I want to avoid this.
Of course the fingerprint of the public key could be the secret. But again, to make it user friendly, I want to make the secret as short as possible.