Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Hash Range Queries
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
luke crouch
December 18, 2018
Technology
0
120
Hash Range Queries
For simple, privacy-preserving data-sharing.
luke crouch
December 18, 2018
Tweet
Share
More Decks by luke crouch
See All by luke crouch
Mr. Brokebot: Lethal language attacks against AI agents
groovecoder
0
22
Pigeons to Padlocks: 5000 years of Network Security
groovecoder
0
86
cryptory-up-to-https-atlas-2024.pdf
groovecoder
0
67
Cryptography: 500 BC to https
groovecoder
0
180
Mozilla Observatory First Draft
groovecoder
0
140
VPNs
groovecoder
0
140
Digital Privacy & Security
groovecoder
0
270
Cryptography: 500 BC to Quantum Computing
groovecoder
0
970
Just enough bitcoing to go cryptojacking with JavaScript
groovecoder
0
110
Other Decks in Technology
See All in Technology
re:Inventで見つけた「運用を捨てる」技術。
ezaki
1
130
かわいい身体と声を持つ そういうものに私はなりたい
yoshimura_datam
0
340
ドキュメントからはじめる未来のソフトウェア
pkshadeck
1
570
Agentic Coding 実践ワークショップ
watany
36
25k
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
200
AI アクセラレータチップ AWS Trainium/Inferentia に 今こそ入門
yoshimi0227
1
310
スクラムを一度諦めたチームにアジャイルコーチが入ってどう変化したか / A Team's Second Try at Scrum with an Agile Coach
kaonavi
0
280
持続可能な開発のためのミニマリズム
sansantech
PRO
3
520
人はいかにして 確率的な挙動を 受け入れていくのか
vaaaaanquish
4
2.3k
【Oracle Cloud ウェビナー】ランサムウェアが突く「侵入の隙」とバックアップの「死角」 ~ 過去の教訓に学ぶ — 侵入前提の防御とデータ保護 ~
oracle4engineer
PRO
2
190
Git Training GitHub
yuhattor
1
260
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
64k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
100
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
The SEO identity crisis: Don't let AI make you average
varn
0
55
Optimizing for Happiness
mojombo
379
71k
The Curious Case for Waylosing
cassininazir
0
220
Side Projects
sachag
455
43k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
GraphQLとの向き合い方2022年版
quramy
50
14k
Scaling GitHub
holman
464
140k
WCS-LA-2024
lcolladotor
0
420
Transcript
Hash Range Queries For simple, privacy-preserving data-sharing
https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/ https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/ Not my original idea
https://api.pwnedpasswords.com/pwnedpassword/password A request for a single password reveals who is
interested in this password. Maybe not that interesting for a widely-used value …
https://api.pwnedpasswords.com/pwnedpassword/p1nkyp13 But how many people would use their favorite my
little pony character with vowels replaced with numbers?
Do you trust the person operating the service? • Are
they doing something else with the data? • Are they securing the data?
None
How can a client get a single record from a
server without revealing the record identifier to the server?
The Easiest Way: Hashed Identifiers
None
None
But rainbow tables exist
None
The Hard Way: Private Set Intersection
None
None
The Middle Way: k-Anonymity
https://en.wikipedia.org/wiki/K-anonymity Every record is unique
https://en.wikipedia.org/wiki/K-anonymity k-Anonymity: 2 for any combination of Age + Gender
+ State found in any row of the table there are always at least 2 rows with those exact attributes Suppression Suppression Generalization
https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/ By using this property, we are able to seperate
hashes into anonymized "buckets".
https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/ A client is able to anonymize the user-supplied hash
…
https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/ … and then download all hashes in the same
anonymized "bucket" as that hash … {
https://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/ { 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 5baa61f4c0b12f0a6691121c7de9420c8ff12c1f 5baa61aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5baa61bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 5baa61cccccccccccccccccccccccccccccccccc 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 5baa61f4c0b12f0a6691121c7de9420c8ff12c1f 5baa61aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5baa61bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 5baa61cccccccccccccccccccccccccccccccccc … then do an offline check to see if the user- supplied hash is in that breached bucket.