How does a public key infrastructure work?