skopio
Skopio/Glossary/K-Anonymity

What is K-Anonymity? Privacy-Preserving Lookups

K-anonymity is a data-privacy protocol where queries are batched with k-1 other indistinguishable records, ensuring the specific query value cannot be identified by the server.

Definition

When you check a password against a breach corpus, you face a privacy paradox: to know whether your password is leaked, the server needs your password — but if the server gets your password, it could log it. K-anonymity solves this. Originally an academic concept (Latanya Sweeney, 2002), it was applied to password-breach checks by Have I Been Pwned: instead of sending your full password hash, you send only the first 5 hex characters. The server returns all hashes that share that 5-char prefix (typically ~500 candidates). Your client compares locally and finds the match — without the server ever seeing your full hash.

Skopio implements the same protocol for password-breach checks. Practical implication: when you use Skopio to check a password, the plaintext password never leaves your device, the full hash never leaves your device, only the first 5 hash characters travel — and those alone don't identify your password. The server returns 500-ish hashes, your client picks the match. K-anonymity has uses beyond password breach checks (location privacy, medical data, etc.) but the password use case is its most widely deployed.

Real-world examples

  • 1

    Have I Been Pwned's password-search API uses k-anonymity (sends first 5 chars of SHA-1 hash)

  • 2

    Skopio's password-breach category implements the same k-anonymity protocol

  • 3

    Apple's Password Monitoring uses a related but different cryptographic protocol (PSI) for the same goal

  • 4

    Medical research datasets are sometimes k-anonymized so individual records can't be re-identified

  • 5

    Some location-based services use k-anonymity to provide nearby points-of-interest without revealing the user's exact location

Related Skopio categories

Lookup categories where this term applies.

Frequently asked questions

Why first 5 characters specifically?+

It's a practical balance. 5 hex characters = 1,048,576 possible prefixes. Each prefix typically returns ~500 candidate hashes — small enough to download quickly, large enough to provide meaningful k-anonymity (the server cannot identify which of 500 your specific password is).

Is k-anonymity perfectly secure?+

Strong but not absolute. The server learns 'someone in your IP / session checked a password starting with these 5 hash chars'. Combined with timing and side-channel data, sophisticated attackers might narrow the search. But for the standard threat model (the server logs queries), k-anonymity provides solid protection.

How does this differ from hashing my password locally?+

Hashing locally produces the full hash — but you still need to ask the server 'is this hash in your DB?'. The server learns which hashes are queried. K-anonymity adds plausible deniability by sending only a partial hash.

Does Skopio use k-anonymity for email/phone lookups too?+

Different protocol. We hash query values (SHA-256) before storage so we can't recover the plaintext later — but for the lookup itself we need the value to actually search the corpus. K-anonymity is specifically for the password use case where the query value is itself sensitive.

Can I check k-anonymity on Skopio for free?+

Password-breach check is always free on Skopio (privacy-critical category). Send your password and we run the k-anonymity check; you never leave the protected protocol.

K-Anonymity iş akışları için Skopio'yu dene

Her gün ilk sorgu ücretsiz. Kart yok. Taahhüt yok.