A user's credential for an application is stored in a relational database. Which control protects the confidentiality of the credential while it is stored?
A.
Use a salted cryptographic hash of the password.
B.
Validate passwords using a stored procedure.
C.
Allow only the application to have access to the password field in order to verify user authentication.
D.
Encrypt the entire database and embed an encryption key in the application.
Answer is A
"Hashes cannot be used to discover the contents of the original message, or any of its other characteristics, but can be used to determine whether the message has changed. In this way, hashes provide confidentiality, but not integrity."
https://www.sciencedirect.com/topics/computer-science/hash-function
its disturbing the amount of people persuing a security certification and think D is the correct answer. Would you really embed aka hard code the encryption key inside of the application software? You might as well hard code the password too!
Going with A.
Hashed password are not reversible (or extremely hard to reverse it) back to the original form (strong hashing algorithms).
Encryption do provide extra layer of protection, however, ciphertexts can be reverted back to their original form with a decryption key. Just in case both the key and the DB records are leaked, the DB records in cleartext would be leaked. Example of such incident includes the Adobe breach at 2013: https://www.csoonline.com/article/540070/network-security-adobe-confirms-stolen-passwords-were-encrypted-not-hashed.html
A is correct because option "D" proposes to encrypt the entire database and embed an encryption key in the application. While this measure provides a level of protection, it is not best suited to protect the confidentiality of specific user credentials in the database. Using a single encryption key for the entire database and embedding it in your application can compromise security if that key is compromised or accessed.
I see people saying hash is for integrity which is correct. But at the same time it’s a one way process like you can’t extract the password from the hash.
I see A and D are valid. I wonder if the exam would have such similar answers. I would be doomed
Option D, encrypting the entire database and embedding an encryption key in the application, can indeed be an effective control to protect the confidentiality of the credential while stored.
By encrypting the entire database, including the stored credentials, unauthorized access to the database would not reveal the plaintext passwords. The encryption key, which is embedded in the application, is required to decrypt the database and access the stored credentials. This provides an additional layer of protection against unauthorized access to the sensitive information.
Encrypting the database ensures that even if an attacker gains access to the stored data, they would not be able to read the credentials without the encryption key. It adds an extra level of security beyond just hashing and salting the passwords.
Therefore, option D, encrypting the entire database and embedding an encryption key in the application, is a valid control to protect the confidentiality of the credential while stored in a relational database.
D sounds wrong but A is hashing, which provides integrity only:
"Integrity ensures that data is maintained and that no unauthorized changes have been made to the data. One example of this is signature hashing, such as an MD5 or SHA256 checksum."
D talks about encryption, which is confidentiality.
D is the right one.
Credentials comprises of user id AND authentication token (password).
This is why answer A is wrong as it covers only the password part.
Second the question was what provides confidentiality to the credentials.
Hashing does not provide confidentiality but it provides integrity only.
agreed! They are taking about credential and not only password. Also, They are looking for protection while password is stored in the database. Salt helps to ensure attacker can't crack but we also need to protect hashed password to ensure It never reaches in the hand of attacker. Answer should be D.
Option C is the correct answer because it addresses the access control aspect of the question. By allowing only the application to have access to the password field in order to verify user authentication, it ensures that only authorized entities can access the credential. Access controls are a critical security control to prevent unauthorized access to sensitive information.
A
What is password salting? Password salting is a technique to protect passwords stored in databases by adding a string of 32 or more characters and then hashing them. Salting prevents hackers who breach an enterprise environment from reverse-engineering passwords and stealing them from the database.
D --- is the right answer to me.
Encrypting the entire database and embedding an encryption key in the application protects the confidentiality of the user's credentials while they are stored in the relational database. This means that even if an attacker gains access to the database, they will not be able to read the user's credentials as they will be in an encrypted form.
A voting comment increases the vote count for the chosen answer by one.
Upvoting a comment with a selected answer will also increase the vote count towards that answer by one.
So if you see a comment that you already agree with, you can upvote it instead of posting a new comment.
izaman2022
Highly Voted 2 years, 1 month agoAz900500
4 months, 2 weeks agoJAckThePip
Highly Voted 2 years, 1 month agodmo_d
1 year, 6 months agoKJ44
Most Recent 2 weeks, 5 days agonerdo9
2 months, 2 weeks agoDtony66
6 months, 3 weeks agoeboehm
7 months, 2 weeks agosplash2357
10 months agoRifandy
10 months, 1 week ago629f731
10 months, 2 weeks agohomeysl
1 year, 1 month agoMShaaban
1 year, 3 months agoBach1968
1 year, 4 months agoHughJassole
1 year, 5 months agodmo_d
1 year, 6 months agoDeepCyber
1 year, 5 months agoTygrond87
1 year, 6 months agojackdryan
1 year, 6 months agoCg007
1 year, 7 months agoDee83
1 year, 10 months ago