requirements for public-key cryptography public key cryptography notes