Protocols for Checking Compromised Credentials
Lucy Li
Cornell Tech
Bijeeta Pal
Cornell Tech
Thomas Ristenpart
Cornell Tech
Rahul Chatterjee
University of Wisconsin—Madison Cornell Tech
Junade Ali
Cloudflare Inc.
Nick Sullivan
Cloudflare Inc.
Protocols for Checking Compromised Credentials Lucy Li Bijeeta Pal - - PowerPoint PPT Presentation
Protocols for Checking Compromised Credentials Lucy Li Bijeeta Pal Junade Ali Nick Sullivan Cornell Tech Cloudflare Inc. Cornell Tech Cloudflare Inc. Rahul Chatterjee Thomas Ristenpart University of WisconsinMadison Cornell Tech
Cornell Tech
Cornell Tech
Cornell Tech
University of Wisconsin—Madison Cornell Tech
Cloudflare Inc.
Cloudflare Inc.
2
Have I Been Pwned: 406 breaches
…and many more
Breach compilation from 2018: 1.4 billion user-password pairs
Leaked Credentials Username Passwords … … lucy@email.com myPassword123 alice@yahoo.com Star246, p4ssw0rd1 … …
3
lucy@email.com myPassword123
website.com
Leaked Credentials Username Passwords … … lucy@email.com myPassword123 alice@yahoo.com Star246, p4ssw0rd1 … …
Around 40% of users reuse passwords across different websites!
[Das et al. 2014, Pearman et al. 2017]
Credential stuffing is the largest source of account takeover and automated fraud
[Shape Security]
4
lucy@email.com myPassword123
website.com
reset password newPassword789 lucy@email.com myPassword123 EXISTS lucy@email.com myPassword123 Leaked Credentials Username Passwords … … lucy@email.com myPassword123 alice@yahoo.com Star246, p4ssw0rd1 … … Leaked Credentials Username Passwords … … lucyli@email.com myPassword123 alice@yahoo.com Star246, p4ssw0rd1 … …
Li Limitations:
to-date copy of credential leaks
leaked credentials everywhere
Can we use a third party checker and still preserve privacy of user credentials? Two big initial deployments:
5 website.com
lucy@email.com myPassword123 Leaked Credentials Username Passwords … … lucy@email.com myPassword123 alice@yahoo.com Star246, p4ssw0rd1 … …
Third party
EXISTS lucy@email.com myPassword123
Don’t send credentials in the clear to a third party
and threat model
passwords
6
7
Leaked Credentials Username Passwords … … lucy@email.com myPassword123 alice@yahoo.com Star246, p4ssw0rd1 … …
website.com
Cl Client C3 C3 Server pw pw OR (u (u, pw) OR
Credential Entity
Client finds out if their credential is in the server’s database
8 Passwords … dog456 abc123 1password23 …
Passwords … dog456 abc123 1password23 …
1. 1. Pr Protect leaked credential database from malicious client
1. Protect leaked credential database from malicious client
2. 2. Pr Protect client’s password against malicious server
9
myPassword123
myPassword123
alice@email.com
********
website.com
alice@email.com passwordGuess1
Ideally, no information about password leaked Partial information speeds up online guessing attacks
…
alice@email.com passwordGuessQ
10
C3 server Client myPassword123
Passwords … dog456 abc123 1password23 …
Private set membership? Doesn’t scale to sets containing hundreds of millions of elements Need to preserve privacy for both client credentials and server database
11
C3 server Client
myPassword123
Passwords … dog456 myPassword123 …
Combine bucketization with some private set membership protocol
12
C3 server
Have I Been Pwned and Google Password Checkup use a hash prefix as a bucket identifier Ke Key y secu curity y question: How much does knowing the bucket queried help an adversary guess a client’s password?
Client
myPassword123 Combine bucketization with some private set membership protocol
13
14
password123
Hash of password123 = 15a56bd4dd…
15a56
15a56
Have I Been Pwned
Contains all password hashes with the same prefix 20-bit hash prefix
15a56
Bu Bucket 15a56 password123 enrique24 lilone55 pourmixl …
More popular Less popular
An attacker with access to the bucket and Q guesses has about the same success rate as an attacker with Q*B guesses! (B is the total number of buckets)
15
Attacker’s guess order of passwords
16
Password Probability Easy to guess the password if you know the bucket
Buckets
Colors in buckets correspond to probabilities of passwords given the bucket
17
Password Probability Go Goal: : Given a bucket, the probability of each password in the bucket is the same
Buckets
We propose FSB as a more secure bucketization algorithm
18
Password Probability
B: # buckets
Start bucket: H(◼) Proportional to probability of password Range for password ◼ [ H(◼) , H(◼) + f(Pr(◼)) ] To check a password with the server: Client computes range, picks a bucket randomly
19
20
Password Probability
Q = 1
21
Q = 2
Password Probability
22
identifiers?
password
23
github.com/lucy7li/compromised-credential-checking
10 20 30 40 50 60 70 80 1 10 100 1000
Attacker success rate (%)
Number of queries given to the attacker Baseline Hash Prefix (20 bits) Frequency-smoothing (Q=100)
24
HIBP FSB (Q=100)
Baseline
25
server
uses the prefix of H(user || pw) as the bucket identifier
if username is is known
26
27
10 20 30 40 50 60 70 80 1 10 100 1000
Attacker success rate (%) Number of queries given to the attacker
Baseline Hash Prefix (20 bits) Hash Prefix (16 bits) Frequency-smoothing (q'=100)
HIBP FSB
Baseline
GPC
IDB)
future modification to their initial design [Thomas et al. 2019]
no advantage in guessing a user’s password (over baseline guessing)!
28
29
Setting Protocol Bandwidth (KB) Total time (ms) Password-
HIBP 32 220 FSB 558 527 ID-password GPC 1,066 489 IDB 1,066 517
To Total tal ti time includes client-server communication and client- and server-side computations github.com/lucy7li/compromised-credential-checking
30
github.com/lucy7li/compromised-credential-checking