3 ms·
In order to provide subscribers of this service with complete anonymity over the email addresses being searched for, the only data passed to the API is the firs
by rkagerer 2y ago
In order to provide subscribers of this service with complete anonymity over the email addresses being searched for, the only data passed to the API is the first six characters of the SHA-1 hash of the full email address.
I take it the k-anonymity thing essentially "chunks" your database. So rather than returning one (identifying) result for one email address, you instead take the first few characters of its hash, and return a few hundred results corresponding to all the emails whose hashes share the same prefix. (A bit like asking for the "L-N" section of the phone book instead of asking for a single line).
I'd be curious what sort of attack vectors or "side channels" you wargammed out when coming up with the scheme - eg. if a block wound up mostly comprised of email domains (providers) popular in one part of the world, and only a few from another geography, then you might be able to infer identity via timezones based on time of day queries come in.
- ilogik 2y agoIt's essentially a hash map. The API will return all the hashes and the info for each one, and it's up to the client to show the relevant information and ignore the rest
- londons_explore 2y agoIt's the other way round - less than 16M users could lead to privacy leaks. As long as the database contains many more than 16M users, there is (fairly) reasonable privacy.
- rkagerer 2y agoThanks. I'm just replying here to confirm your response made sense to my comment as originally posted (I edited it after I went back and read his linked posts in a bit more detail). I do appreciate how we've found a way to make hash collisions useful :-).