CPC H04L 63/0428 (2013.01) [G06F 16/134 (2019.01); G06F 16/152 (2019.01); G06F 16/2255 (2019.01); G06F 16/325 (2019.01); G06F 16/9014 (2019.01); G06F 21/602 (2013.01); H04L 9/008 (2013.01); H04L 9/0643 (2013.01); H04L 9/14 (2013.01); H04L 9/3236 (2013.01); H04L 9/3239 (2013.01); H04L 9/3242 (2013.01)] | 20 Claims |
1. A server comprising:
processing hardware that provides functionality of a communications application; and
a memory, the memory storing a first set of contacts of users of the communications application and instructions which, upon execution by the processing hardware, cause the processing hardware to perform operations comprising:
receive a homomorphic encryption of a client hash table for a second set of contacts, the second set of contacts smaller than the first set of contacts;
split each batch of batches of a server hash table into a plurality of splits by separating batched server hash tables into multiple tables to generate split batched server hash tables;
generate, based on the split batched server hash tables and the homomorphic encryption of the client hash table, a homomorphically encrypted number indicating which contact is in both of the first and second sets of contacts; and
provide the homomorphically encrypted number to the client device.
|