Cryptography Fundamentals Questions

Core concepts and vocabulary of cryptography: confidentiality, integrity, authentication, and non-repudiation; the difference between symmetric and asymmetric primitives; and how standard algorithms, libraries, and protocols fit together. Covers threat models, common standards, and applying primitives and cryptographic libraries correctly to real-world security problems. The entry point for the cryptography track.

MediumTechnical
98 practiced

You're reviewing a colleague's pull request that adds encryption for a new feature. Walk through what you'd look for during review, and for each issue you flag, explain why it's a problem and how you'd fix it.

HardTechnical
91 practiced

Design an efficient cryptographic scheme for group messaging where a sender encrypts a message to multiple recipients. Minimize redundant encryption work while preserving recipient confidentiality and supporting efficient revocation and forward/backward secrecy. Discuss use of key-wrapping, group keys, tree-based key exchange (e.g., MLS-like), and trade-offs.

HardTechnical
80 practiced

Evaluate the security implications of moving random number generation for containerized workloads from the OS CSPRNG to a remote entropy service. Discuss risks to confidentiality, integrity, and availability of entropy; possible attack vectors (man-in-the-middle, compromised service, replay), bootstrapping and DRBG design choices, and propose cryptographic safeguards (authenticated channels, signed entropy, local DRBG reseeding, HSM-sealed seeds) and operational mitigations.

EasyTechnical
70 practiced

Give a high-level walkthrough of a TLS handshake: what happens at each step, which cryptographic primitives are used where (certificates, asymmetric key exchange, symmetric session keys, MAC/AEAD), and what properties TLS is actually trying to guarantee. What's one common way this can fail in practice?

MediumTechnical
90 practiced

Implement PKCS#7 padding and unpadding functions in Python for a block cipher with a given block size. Provide: def pad(data: bytes, block_size: int) -> bytes and def unpad(data: bytes, block_size: int) -> bytes. The unpad function must validate padding and raise an exception for invalid padding, and you should explain how to validate padding without creating an easy padding oracle vulnerability during decryption flows.

Unlock Full Question Bank

Get access to all Cryptography Fundamentals interview questions and detailed answers.

Sign in to Continue

Join thousands of developers preparing for their dream job.