Zero-Knowledge Proofs: Security and Privacy