The (ZKP) authentication protocol is used in cryptography systems to allow a party to prove that he/she knows something (i.e. a credential), without having to transmit this credential. There are two parties involved in ZKP; the prover A and the verifier B. ZKP allows a prover A to show that they have the credential (for example, passport details or a password), without having to give B the exact details of the credential.