11.2 Hashing, Salting, Symmetric, Asymmetric, and ECC
Key Takeaways
- A cryptographic hash is a one-way, fixed-length digest. SHA-256 (and other SHA-2/SHA-3 members) is the current integrity workhorse. MD5 and SHA-1 are broken for collision resistance and must not be used where an attacker benefits from two inputs with the same digest.
- Salting stores a unique random value with each password hash so identical passwords do not produce identical hashes and rainbow tables do not amortize. Pair the salt with a slow password-based KDF (PBKDF2, bcrypt, scrypt, or Argon2), not a single fast SHA-256 of the password.
- AES is the standard symmetric cipher, with FIPS 197 key sizes 128, 192, and 256 bits. It is the bulk-data tool. RSA and ECC are asymmetric: public encrypt / private decrypt for confidentiality toward a recipient, private sign / public verify for signatures.
- RSA-2048 is the common modern minimum; 1024-bit RSA is retired for new protection. ECC (for example NIST P-256) reaches comparable strength with much smaller keys than RSA-3072, which is why constrained devices and modern TLS prefer curves.
- Hash for integrity or one-way storage. Encrypt for confidentiality. HMAC for integrity plus authenticity with a shared secret. Do not encrypt ordinary login passwords, and do not hash a 40 GB backup and call it confidential.
Apply cryptography concepts: start with the primitive, not the product name
Knowledge area 5.2 is Apply cryptography concepts. The first cluster on the October 2025 outline is hashing, salting, and symmetric / asymmetric encryption / elliptic curve cryptography (ECC). Product marketing will say "the VPN is encrypted" or "the database is hashed." The CAT item will ask whether that sentence is even using the right primitive.
This section stays on those primitives and on the operations choice among them. Digital signatures, HMAC as a non-repudiation cousin, algorithm strength, and cryptanalysis continue in 11.3. Public key infrastructure and protocol use cases are Domain 5.3–5.4.
Hashing
A cryptographic hash function maps arbitrary input to a fixed-length digest. Properties you must be able to name in operations language:
- One-way (preimage resistance): given the digest, you cannot recover the original file or password in feasible time.
- Deterministic: the same input always yields the same digest, which is why hashes work as integrity fingerprints — and why unsalted password hashes leak equality.
- Avalanche: a one-bit change in the file changes the digest beyond recognition.
- Collision resistance: it should be infeasible to find two different inputs with the same digest. This is the property MD5 and SHA-1 lost.
- Second-preimage resistance: given this firmware image, it should be infeasible to craft a different image with the same digest.
Hashing is not encryption. There is no hash key that "decrypts" SHA-256(payroll.csv) back into the spreadsheet. If the exam stem wants confidentiality of that spreadsheet, hash is the wrong answer.
SHA-256 versus MD5 and SHA-1
| Algorithm | Digest size | Collision resistance in 2026 practice | SSCP use |
|---|---|---|---|
| MD5 | 128 bits | Broken. Chosen-prefix collisions are practical. | Checksum of non-adversarial downloads at most; never signatures, certificates, or password storage. |
| SHA-1 | 160 bits | Broken for collision resistance. Google's SHAttered (2017) produced two different PDFs with the same SHA-1. NIST disallowed SHA-1 for new digital signatures years ago and is retiring remaining SHA-1 uses by 31 December 2030. | Verify old signatures if you must; do not generate new protection with SHA-1. |
| SHA-256 (SHA-2 family; also SHA-384 / SHA-512) | 256 bits (SHA-256) | Currently accepted for integrity, HMAC, and signatures when used as specified. | Default hash in runbooks, code signing (as the digest being signed), TLS, and file verification. |
| SHA-3 (FIPS 202) | Variable (SHA3-256 common) | Approved alternative to SHA-2. | Fine when the platform offers it; not a reason to keep MD5. |
A still-common operations failure is using MD5 to fingerprint firmware "because it is fast." Speed is the opposite of what you want against an attacker who will grind collisions. For password storage, even SHA-256 is the wrong construction if you hash the password once with no salt and no work factor — that is the next heading.
Scenario. Imaging laptops from win11-gold.iso. You publish the SHA-256 on an internal page that is itself TLS-protected and editable only by the build team. Before every imaging job, Get-FileHash must match. If someone swaps the ISO on the file server and you only compare MD5 printed on the same share, a collision-capable attacker (or a simple "edit both files" intern) can make a backdoored image verify. SHA-256 does not fix a digest stored next to the malware; it does stop cheap accidental and many adversarial collisions. Pair the hash with a trusted channel or a signature (11.3).
Salting and password storage
A salt is a unique, per-credential random value mixed into a password before (or as part of) hashing and then stored next to the hash. Salting is on the outline because password files are the hash use SSCP candidates most often get backward.
What salt does:
- Two users with
Winter2026!no longer share a hash, so you cannot see reused passwords at a glance. - Precomputed rainbow tables no longer apply to the whole database; the attacker must recompute per salt.
- A global company-wide salt (one value for every row) is a weak substitute. The outline's idea is per-password uniqueness.
What salt does not do:
- It is not a secret key. You store it in the clear beside the hash. Secrecy of the password file still matters, but the salt's job is uniqueness, not confidentiality.
- It does not slow a modern GPU much if you still use a single round of SHA-256. That is why production verifiers use a password-based key derivation function (KDF) with a work factor: PBKDF2, bcrypt, scrypt, or Argon2. Those constructions include salt. "Salted MD5" is still the wrong algorithm.
A pepper (a secret value stored outside the database, for example in an HSM) is extra defense in depth. It is not named on the SSCP outline. Do not spend a CAT item inventing peppers if the stem only asked for salt.
Scenario: password storage with salt. You inherit a Linux web app whose users table has password_hash char(32) filled with unsalted MD5. A dump from a SQL injection is instantly cracked. The SSCP remediation is not AES-encrypting the passwords so support can decrypt them on the phone. Login needs verification, not recovery. For each new or reset password: generate a unique cryptographically random salt, run Argon2id (or bcrypt / scrypt / PBKDF2 with a current iteration count), store algorithm, salt, hash, parameters. On login, repeat the same KDF and compare in constant time. Migrate old MD5 rows on next successful password entry. That is hashing plus salting as 5.2 means it.
Never roll a custom "hash then reverse the string" scheme. Never store the password encrypted under a single application key "so we can email it back." Those designs turn a hash problem into a key-management incident.
Symmetric encryption and AES
Symmetric encryption uses the same secret key to encrypt and decrypt. It is fast and is how you protect bulk data: disks, backups, TLS record payload, file shares.
AES (FIPS 197) is the algorithm the outline names later under strength, and it is the symmetric cipher you should expect in stems. AES is a 128-bit block cipher with three key sizes: 128, 192, and 256 bits. Those three numbers are standard practitioner facts, not an unpublished "SSCP exam length." All three key sizes remain acceptable in NIST guidance; many shops default to AES-256 for long-lived data or quantum-aware policy (Grover's algorithm effectively squares the cost of brute force, which is why 256-bit keys are the conservative choice for archives). Do not claim the exam requires AES-256 exclusively, and do not claim AES-128 is already broken.
Operational AES notes the SSCP actually hits:
- Mode matters. GCM (and other AEAD modes) provide confidentiality and integrity together. CBC needs a separate MAC. ECB leaks patterns (the classic penguin image) and is not an operations mode.
- Key distribution is the hard part. If every branch office needs the backup key, you now have an identity-and-key-management problem. That is why hybrid designs exist (below).
- Retired symmetric ciphers (DES, 3DES, RC4) are not AES. Seeing them in a packet capture is a finding.
Asymmetric encryption, RSA, and ECC
Asymmetric cryptography uses a key pair. The public key can be distributed. The private key stays in an HSM, TPM, smart card, or carefully permissioned file. Two directions matter:
- Encrypt with the recipient's public key → only the recipient's private key decrypts. Confidentiality toward that recipient.
- Sign with the sender's private key → anyone with the public key can verify. Authenticity and, with a well-managed key, non-repudiation (11.3).
RSA (Rivest–Shamir–Adleman) is the classic integer-factorization public-key scheme. Practitioner facts, not invented SSCP magic numbers:
- 1024-bit RSA is below modern 112-bit security strength and is not used for new protection.
- 2048-bit RSA is the common minimum (NIST SP 800-131A: modulus 2048 bits or more for the 112-bit security floor).
- 3072-bit RSA is the usual comparison point when you want about 128-bit classical strength, matching AES-128's security strength — at a painful performance cost.
- 4096-bit RSA shows up in some certificate authorities and SSH keys; it is slower still.
Elliptic-curve cryptography (ECC) does the same jobs (key agreement, signatures, and, less often, encryption via ECIES-style constructions) on elliptic-curve groups. Comparable classical strength arrives at much smaller keys: NIST P-256 is commonly treated as roughly 128-bit strength, in the same band as AES-128 and RSA-3072, at a fraction of the RSA key size and with faster operations. P-384 tracks a higher strength band. Modern TLS, JWT signing, and mobile devices prefer ECDHE and ECDSA or Ed25519-style curves for this reason. ECC is not a bulk file-encryption algorithm for a 40 GB database dump.
RSA and ECC are both in scope for Shor's algorithm if a cryptographically relevant quantum computer arrives. That is a migration-to-PQC issue (5.1), not a reason to encrypt 40 GB with RSA-4096 "because bigger is safer."
AES versus RSA versus ECC
| AES | RSA | ECC | |
|---|---|---|---|
| Type | Symmetric | Asymmetric | Asymmetric |
| Keys | One secret; 128/192/256-bit | Public/private; commonly 2048-bit or larger | Public/private; e.g. P-256 / P-384 |
| Strength intuition | 128-bit AES ≈ 128-bit security; 256-bit AES for extra margin / quantum-aware bulk | 2048-bit ≈ 112-bit; 3072-bit ≈ 128-bit (NIST comparable-strength tables) | P-256 ≈ 128-bit with a 256-bit key, far smaller than RSA-3072 |
| Best SSCP job | Bulk confidentiality (disks, backups, TLS payload) | Key wrap, signatures, older TLS handshakes, some VPNs | Key agreement and signatures on constrained or high-volume systems |
| Poor SSCP job | Proving who authored a firmware file (no non-repudiation by itself) | Encrypting a 40 GB backup directly | Encrypting that same 40 GB in place |
| Quantum note | Grover: prefer longer keys for long-lived data | Shor: migrate key agreement and signatures | Shor: same as RSA for the public-key part |
Hybrid cryptography: AES for bulk, RSA or ECC for key wrap
Scenario: AES for bulk versus RSA for key wrap. You must protect a 40 GB database backup before it goes to object storage. Encrypting the entire blob with a 2048-bit RSA public key is the wrong design: RSA (and ECC) are slow on bulk data, size-limited in raw form, and a nightmare to rotate. The SSCP pattern is the same one TLS uses:
- Generate a random AES-256 data-encrypting key (high-entropy CSPRNG).
- Encrypt the 40 GB with AES-GCM using that key.
- Wrap (encrypt) the AES key with the backup recipient's RSA public key, or agree the AES key with ECDH.
- Store ciphertext + wrapped key + nonce. Destroy the plaintext AES key in memory.
- On restore, unwrap with the private key (HSM) and decrypt the blob.
That is symmetric plus asymmetric, not a religious choice of one algorithm for every byte.
When to hash versus encrypt versus HMAC
| Need | Use | Do not use |
|---|---|---|
| Hide the contents of a file, disk, or field | Encrypt (AES for bulk; wrap the AES key with RSA/ECC) | Hashing (digests are not confidential if the input space is guessable, and they are not reversible when you need the file back) |
| Detect whether a vendor ISO changed, given a trusted digest | Hash (SHA-256) | Encryption (ciphertext changing does not tell you the plaintext is authentic) |
| Store passwords for login | Hash + unique salt + slow KDF | Reversible AES "so we can tell the user what they typed" |
| Prove a message came from someone who knows a shared API secret, and that it did not change | HMAC | Bare hash (forgeable) or encryption-only (malleable without a MAC) |
| Prove a vendor signed firmware so the vendor cannot later deny it, and customers cannot forge it | Digital signature (11.3) | HMAC with a key published to every customer |
HMAC is a keyed hash. It sits conceptually between "hash" and "signature" and is on the outline under non-repudiation examples — with an important caveat the next section drills: both ends have the key, so HMAC authenticates a group, not a single non-repudiable actor.
Exam traps for this cluster
- Calling MD5 or SHA-1 "fine if we also encrypt." Collision resistance is a separate property.
- Unsalted SHA-256 of passwords because "SHA-256 is strong."
- RSA-1024 as a modern default, or claiming the SSCP publishes a secret required RSA length other than ordinary practitioner minima (2048+).
- Using ECC or RSA as a 40 GB backup cipher.
- Hashing a backup and claiming the data is confidential.
- Encrypting passwords so they can be decrypted for support calls.
Name the property, then pick the primitive. If the stem says bulk data, hear AES. If it says key wrap or identity, hear RSA or ECC. If it says password file, hear salted slow hash. If it says detect change of a known file, hear SHA-256 — not MD5.
An operations team still fingerprints firewall firmware images with MD5 because the digest is fast to compute on the jump host. They ask whether SSCP 5.2 still treats that as collision-resistant integrity. What is correct?
You are remediating a Linux web application whose users table stores unsalted MD5 password hashes. Support wants to keep the ability to decrypt a password and read it back over the phone. What should the SSCP implement?
A sysadmin must protect a 40 GB database backup in object storage and later restore it with a private key held in an HSM. Which design matches SSCP practice for symmetric versus asymmetric cryptography?