Beta

Create a tenant

A new tenant starts with its own users, OAuth settings, audit history and logs. You are its first Tenant Admin.

BTL Admin

Passwords and PINs

A familiar secret

Avery opens the staff portal for Cedar Inc. and enters a password. The service checks it against the password set for Avery's account. A match shows that the person signing in knows the password. It cannot show whether anyone else knows it too.

Avery can use that password on a different device without bringing anything along. But the password can also be copied, reused on another site, or typed into a page that only looks like the staff portal.

Checking a password

A password is one of the shared secrets described in Secrets and key pairs, but the service does not need to keep the shared value itself. Avery sends the password at each sign-in, so the service only has to recognize it.

When Avery sets a password, the service creates a random value called a salt for that password record. It gives both the password and the salt to a password-hashing function designed to be slow. The service stores the resulting hash, the salt, and the settings needed to check the password later. It does not keep a readable copy of the password.

If Avery and another employee choose the same password, each record gets a different salt, so their stored hashes differ. The salt can be stored alongside the hash because its job is to make each record's calculation different, not to serve as another secret. The slow hashing function makes each guess more expensive if someone steals the records.

At sign-in, the service repeats the calculation. It runs the password Avery entered through the same function, with the stored salt and settings, and compares the result with the stored hash. Hashing works in one direction only, so nothing is decrypted and the original password is never recovered.

Avery supplies a password through the browser over HTTPS. Cedar Inc. verifies it against a stored salted password hash and creates a session after acceptance. Avery supplies a password through the browser over HTTPS. Cedar Inc. verifies it against a stored salted password hash and creates a session after acceptance.
Avery's password reaches the service for verification. It checks the password against the stored hash and creates a session if the sign-in succeeds.

In simplified pseudocode, the check looks like this:

record = load_account_password_record(account_id)
accepted = password_library.verify(record, supplied_password)
if accepted and account_is_allowed_to_sign_in:
    establish_session()
else:
    reject_sign_in()

Where passwords fail

Someone can try passwords repeatedly at the staff portal's sign-in page. The service can limit those online attempts. If its password database is stolen, guesses can instead be tested against the copied hashes without visiting the sign-in page. Slow, salted hashing raises the cost of those guesses, but a weak password may still be found.

Reuse creates another path into Avery's account. If Avery chose the same password for work and a shopping site, a breach at the shopping site could expose a working password for the staff portal. Trying exposed account names and passwords at other services is called credential stuffing.

Phishing does not require guessing or a stolen password database. Someone makes a page that looks like the staff portal's sign-in page and persuades Avery to enter the password there. The person running that page receives the password, even if Avery chose a strong one.

A unique work password keeps a shopping-site breach from revealing the same secret, and a password manager helps Avery keep every password distinct.

Cedar Inc. might be tempted to add familiar rules: at least one capital letter, digit, and symbol, and a new password every 90 days. Those rules do little against these attacks. They tend to produce predictable patterns such as Summer2026!, and scheduled changes push people toward small, guessable edits of the old password.

Current NIST guidance, SP 800-63B-4, asks for length instead: at least 15 characters when a password is the only factor, or at least 8 when it is combined with another factor. It tells services to accept long passphrases, allow pasting so password managers work, and reject new passwords that appear on lists of breached or commonly used values. A password should be changed when there is evidence it has been exposed, not on a schedule.

A PIN on your device

Now Avery signs in with a security key. Avery inserts it and enters a PIN when prompted. The security key checks the PIN locally before using its cryptographic key to produce a signed response. Cedar Inc. verifies that response; it never receives the PIN.

The security key can limit repeated PIN guesses because it controls the check. A short code that a website receives and checks itself works differently, even if the form also calls it a PIN.

Those website-checked codes are the subject of the next lesson, Codes, links, and approval prompts, along with sign-in links and app approvals. Each adds something a password cannot provide, and each has its own way of failing.

Try it in the Lab

PUT IT INTO PRACTICE

Check your understanding

Try these questions before moving on. If an answer isn't right, use the feedback and try again.

0 of 2 answered correctly

Enable JavaScript to answer these questions and save progress in this browser.

QUESTION 1 OF 2An attacker steals a database containing salted password hashes. What remains possible?

QUESTION 2 OF 2Avery enters the PIN for a security key. The key produces a signed response. What does the website receive?

We value your privacy

We use cookies and similar technologies to enhance your browsing experience, and analytics to understand our traffic. By clicking "Allow All", you consent to optional analytics. Cookie Policy

Learn identity