CAS-005 practice question 3 of 30

[Security Engineering and Cryptography] A developer needs toimprove the cryptographic strength of a password-storage component in a web application without completely replacing the crypto-module. Which of the following is the most appropriate technique?

Full set: 343 questions
Answer options
A: Key splitting
B: Key escrow
C: Key rotation
D: Key encryption
E: Key stretching Correct answer
Correct Answer:
E. Key stretching
Explanation

Key stretching is a cryptographic technique specifically designed to enhance the security of password-based systems. It increases the computational work required to verify a password by repeatedly applying a cryptographic hash function to the password and a salt. This process, implemented by algorithms like PBKDF2, bcrypt, and scrypt, makes brute-force and dictionary attacks significantly slower and more resource-intensive for an attacker. This directly addresses the developer's need to improve the cryptographic strength of the password-storage component without replacing the entire crypto-module, as it builds upon existing hash functions.

Why Incorrect

A. Key splitting: A key management technique for availability and security by distributing parts of a key, not for strengthening password hashing.
B. Key escrow: A key recovery mechanism involving a trusted third party, which does not enhance the cryptographic strength of password storage.
C. Key rotation: A best practice for periodically changing encryption keys to limit the impact of a key compromise; it is not a technique applied to strengthen individual password hashes.
D. Key encryption: The practice of encrypting a key with another key (key wrapping), used for protecting keys at rest, not for strengthening the password hashing process itself. ---

References

1. National Institute of Standards and Technology (NIST) Special Publication 800-132

Recommendation for Password-Based Key Derivation.

Section 2

Introduction: This document states

"A password-based key derivation function (PBKDF) is used to derive a key from a password or passphrase. It is intended to be computationally intensive in order to discourage brute-force attacks on the password." This computational intensity is the core principle of key stretching.

2. National Institute of Standards and Technology (NIST) Special Publication 800-63B

Digital Identity Guidelines: Authentication and Lifecycle Management.

Section 5.1.1.2

Memorized Secret Verifiers: This section mandates that password verifiers (hashes) "SHALL be derived from the memorized secret using a key derivation function (KDF)

such as PBKDF2... The KDF SHALL include a salt and an iteration count." The iteration count is the mechanism for key stretching.

3. Boneh

D. (2020). CS 255: Introduction to Cryptography

Lecture 10 Notes. Stanford University.

Section on "Slowing down the attacker": The lecture notes explain that to defend against offline dictionary attacks

a slow hash function is needed. It introduces PBKDF2 as a standard that "stretches a short key" by applying a pseudorandom function (like HMAC-SHA256) a configurable number of times (e.g.

c=100

000).

4. Provos

N.

& Mazières

D. (1999). A Future-Adaptable Password Scheme. Proceedings of the 1999 USENIX Annual Technical Conference.

Section 2

"Design Goals": This seminal paper

which introduces the bcrypt algorithm

explicitly states a design goal is to make the hashing process slow and computationally expensive. It notes

"The time to check a password on a fast machine should be non-trivial... making a brute-force attack more difficult." This is the foundational concept of key stretching for password security.

Scroll to Top