K-Anonymity Explained
The privacy technique behind breach checking
Outcome
Understand k-anonymity well enough to use breach-check style tools without revealing the full secret.
Your progress
Mark each step as you complete it. This is saved only in this browser.
0 / 3 steps complete
Before you start
Visual frame
Review asset
K-anonymity explained storyboard
Synthetic k-anonymity frame only. It explains the concept as a privacy model and avoids claiming automatic anonymity.
Synthetic frame
Group size
K means how many similar records exist.
Partial-match privacy frame
A concept frame showing full secret, partial prefix, remote lookup boundary, and local comparison as separate steps.
Guided steps
Follow the task, then check the result.
Read the boundary before acting
Start with what the article says is available, measured, preview-only, or not a product claim. Do not treat reference material as permission to send raw private content to support or external tools.
Apply the concept to a safe checker workflow
Use the article to understand why only partial data should be compared in breach-style checks. If you are checking a real credential, use the relevant tool workflow and never send the secret to support.
Prepare safe support context if something disagrees
If the article and product screen do not match, describe the route, step, browser, and symptom. Do not paste raw original document text, secrets, restoration material, or private files by default.
Branch questions
Are you trying to complete a redaction or sharing task right now?
Does the product screen disagree with this article?
Completion check
Support boundary
Support can use by default
- Tool name and route.
- Concept question or error category.
- No full password, token, or secret by default.
- Intent ID
- Article slug
- App route
- Browser and viewport
Requires your consent
- User-written description
- Email address
- Explicit attachment
- Redacted sample
- Support bundle previewed to the user
Not collected by default
- Raw original document text
- Full local file paths
- Pasted private content
- Unmasked screenshots
- Replay capture
Safe support summary
Copy a scrubbed handoff.
Redactorr KB support summary Article: /knowledge-base/k-anonymity Selected issue: A user is unsure whether a checker sends full secrets. Playbook progress: 0/3 steps marked complete Safe context to include: - Tool name and route. - Concept question or error category. - No full password, token, or secret by default. - Intent ID - Article slug - App route - Browser and viewport Requires explicit consent: - User-written description - Email address - Explicit attachment - Redacted sample - Support bundle previewed to the user Do not include by default: - Raw original document text - Full local file paths - Pasted private content - Unmasked screenshots - Replay capture User note: - Describe the step and symptom without pasting raw document text, secrets, files, or restoration material.
Article details
K-Anonymity: Privacy Through Ambiguity
How do you check if a password has been breached without revealing the password itself? This is the paradox that k-anonymity solves.
The Problem
Naive Approach: Send your password to a server, server checks its database of breached passwords, returns yes/no.
Why This Fails: You just sent your password over the internet to a third party. Even if you trust them, what if their server is compromised? What if they log your request?
You've exposed the very thing you were trying to protect.
The K-Anonymity Solution
K-anonymity uses a clever trick: partial matching.
Instead of sending your full password, you send only a small part of a cryptographic hash. The server responds with all passwords that match that partial hash, and your browser checks locally for an exact match.
The Process (Simple)
Hash your password locally:
The browser turns the password into a SHA-1 hash.
Send only the first 5 characters:
The browser sends the hash prefix, not the original password.
Server responds with matching hash suffixes
The response contains candidate suffixes for that prefix.
Your browser checks for an exact match locally
The browser compares the returned suffixes with the full hash without sending the full hash back.
What the server learns: Someone is checking a password with a particular hash prefix.
What the server doesn't learn: Which specific password, or even which of the 800+ possibilities.
Why "K-Anonymity"?
The "k" in k-anonymity represents the size of the anonymity set - how many other possibilities you're hiding among.
In breach-check workflows, the anonymity set is usually hundreds of possible hash suffixes for the same prefix.
Each 5-character hash prefix can match many different entries in the breach database. Your browser receives the candidate suffixes and checks locally for an exact match.
The larger k is, the more anonymous you are.
Real-World Analogy
Bad Approach (No Anonymity): Walking into a police station and asking, "Do you have a warrant for John Smith at 123 Main St, DOB 1/15/1990?"
K-Anonymity Approach: Asking, "Do you have any warrants for someone with initials J.S.?" The officer hands you a list of 800 people with those initials, and you check privately if your full name is on the list.
The officer learns: Someone is checking for initials J.S. The officer doesn't learn: Which specific person you're inquiring about.
Practical Use: Breach Checker
When you use Redactorr's Breach Checker:
Your password is hashed in your browser (never sent in plaintext)
Only the first 5 characters of the hash are sent to HaveIBeenPwned (HIBP)
HIBP returns ~800 hash suffixes that match that prefix
Your browser compares these locally to find a match
HIBP never sees your actual password or even the full hash
Privacy preserved. Breach checked.
Privacy Benefit
With SHA-1 hashes (40 hex characters) and 5-character prefixes:
- Total possible hashes: 16^40 (astronomically large)
- Total possible 5-char prefixes: 16^5 = 1,048,576
- Returned candidate set: Many suffixes can share the same prefix
Conclusion: The breach-check service sees a prefix, not the full password or full hash. This reduces exposure, but it is not full anonymity.
Limitations
K-anonymity is not perfect:
Frequency attacks: If your password is extremely common (e.g., "password123"), the attacker might guess you're checking it because it appears in almost every prefix query.
Correlation attacks: If an attacker monitors multiple queries from the same IP and sees overlapping prefixes, they could narrow down possibilities.
Not full anonymity: The server still knows you checked something. For truly sensitive passwords (e.g., master passwords for password managers), consider offline breach databases.
For most breach-check use cases, k-anonymity is a strong improvement over sending the original password or full hash to a server.
Why Redactorr Uses K-Anonymity
K-anonymity principle: The breach check sends only a hash prefix, not the full password, API key, or credential.
Widely used pattern: K-anonymity for password breach checking is a well-known pattern used by HaveIBeenPwned.
Auditable: The protocol is simple and auditable. Open your browser's DevTools, watch the network requests, and verify that only hash prefixes are transmitted.
Still stuck?
Copy a safe article handoff.
Start support with the article, the issue, and safe context. Raw document text, files, restoration material, and unredacted screenshots stay out unless you explicitly choose otherwise.
- Article slug
- Selected issue
- Screen name
- Action name
Redactorr support case Source: Article playbook: k-anonymity Route: /knowledge-base/k-anonymity Selected issue: A user is unsure whether a checker sends full secrets. Safe context: - Tool name and route. - Concept question or error category. - No full password, token, or secret by default. - Article slug - Selected issue - Screen name or article section - Action name - Browser and viewport Only include with explicit consent: - User-written description - Email address - Explicit attachment - Redacted sample - Support bundle previewed to the user Do not include by default: - Raw original document text - Full local file paths - Pasted private content - Unmasked screenshots - Replay capture - Hidden diagnostic uploads User note: - Describe what you tried and what happened. Do not paste raw document text, secrets, files, restoration material, or unredacted screenshots.
Support case builder
One case format, wherever you start.
This is the same support case shape used by diagnostics and article handoffs.
- Tool name and route.
- Concept question or error category.
- No full password, token, or secret by default.
- Article slug
- Selected issue
- Screen name or article section
Private material belongs behind an explicit consent step, not in the initial case.
6 default exclusions