Courseiva
Software Development SecurityhardMultiple ChoiceObjective-mapped

CISSP Software Development Security Practice Question

A development team is implementing cryptographic functions for a new application. They need to store passwords securely. Which of the following is the most appropriate approach?

Answer choices

Why each option matters

Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.

Correct answer & explanation

Use a key derivation function (e.g., bcrypt) with a per-user salt

Passwords should be salted and hashed using a strong, slow hash function like bcrypt, scrypt, or PBKDF2. Salting prevents rainbow table attacks.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • Use a key derivation function (e.g., bcrypt) with a per-user salt

    Why this is correct

    Using a key derivation function (KDF) like bcrypt with a per-user salt is the most secure method for storing passwords. Bcrypt is specifically designed to be computationally intensive and slow, making brute-force attacks economically infeasible by requiring significant processing power for each guess. The unique, randomly generated per-user salt ensures that even identical passwords produce different hashes, effectively neutralizing precomputed rainbow table attacks and dictionary attacks across multiple user accounts.

  • Encrypt passwords using AES-256 with a static key

    Why it's wrong here

    Encrypting passwords using AES-256 with a static key is fundamentally insecure for password storage because encryption is a reversible process. If the single static encryption key is ever compromised, all stored passwords can be immediately decrypted and exposed in plaintext. This method offers no protection against an attacker who gains access to both the encrypted data and the key, making it unsuitable for safeguarding sensitive user credentials.

  • Store passwords in plaintext but in a protected database

    Why it's wrong here

    Storing passwords in plaintext, even within a supposedly protected database, is an unacceptable security practice. While database protections like access controls and firewalls are important, they are not infallible. Any successful breach of the database's perimeter defenses, whether through SQL injection, insider threat, or zero-day exploit, would instantly expose all user passwords without any cryptographic barrier, leading to widespread account compromise and potential identity theft.

  • Hash passwords with SHA-256 without salt

    Why it's wrong here

    Hashing passwords with SHA-256 without a salt is highly vulnerable to various attacks, primarily rainbow tables and dictionary attacks. Without a unique salt, identical passwords will always produce the exact same hash value. Attackers can precompute a vast database of common password hashes (a rainbow table) and quickly match stolen hashes to their corresponding plaintext passwords, bypassing the need for individual brute-force attempts and compromising user accounts efficiently.

About these practice questions

This CISSP question is part of Courseiva's 747-question bank — original exam-style content with full explanations and wrong-answer analysis, never real exam questions or exam dumps. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

JA

Written by Johnson Ajibi, MSc IT Security

Senior Network & Security Engineer · founder of Courseiva

This CISSP practice question is part of Courseiva's free ISC2 certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the CISSP exam.