IP Library › Granted Patent US 12,407,497
Granted Patent B2
US 12,407,497 · App. 18/405,738 · Granted Sep 2, 2025

Secure multi-party reach and frequency estimation

Inventors: Craig Wright (Louisville, CO); Benjamin R. Kreuter (Jersey City, NJ); James Robert Koehler (Boulder, CO); Evgeny Skvortsov (Kirkland, WA); Arthur Asuncion (Mountain View, CA); Laura Grace Book (Mountain View, CA); Sheng Ma (Belmont, CA); Jiayu Peng (Sunnyvale, CA); Xichen Huang (Sunnyvale, CA)
Assignee: GOOGLE LLC
H04L9/0825G06F16/2237G06F16/2379G06F21/6254G06N7/01H04L9/008H04L9/0643H04L9/085H04L9/0869H04L2209/08H04L2209/46
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,407,497
App. No.
18/405,738
Granted
Sep 2, 2025
Kind
B2
Abstract

Systems and methods for generating min-increment counting bloom filters to determine count and frequency of device identifiers and attributes in a networking environment are disclosed. The system can maintain a set of data records including device identifiers and attributes associated with device in a network. The system can generate a vector comprising coordinates corresponding to counter registers. The system can identify hash functions to update a counting bloom filter. The system can hash the data records to extract index values pointing to a set of counter registers. The system can increment the positions in the min-increment counting bloom filter corresponding to the minimum values of the counter registers. The system can obtain an aggregated public key comprising a public key. The system can encrypt the counter registers using the aggregated shared key to generate an encrypted vector. The system can transmit the encrypted vector to a networked worker computing device.

Claims (69)

1. A method of generating an encrypted data structure representative of a set of identifiers having attributes that satisfy target criteria for secure and computationally efficient transmission, comprising:

maintaining, by a data processing system comprising one or more processors and a memory, in a database, a set of identifiers, each of the set of identifiers comprising an attribute;

generating, by the data processing system, a vector data structure comprising a plurality of coordinates each corresponding to a respective one of a plurality of counter registers;

accessing, by the data processing system, each of the plurality of counter registers that correspond to a plurality of register identifiers to identify a set of counter registers that satisfy a minimum value threshold, wherein identifying the set of counter registers that satisfy the minimum value threshold comprises:

determining a value for each respective counter register of the plurality of counter registers to determine a minimum value;

comparing the value for each respective counter register of the plurality of counter registers;

identifying one or more counter registers of the plurality of counter registers as satisfying the minimum value threshold if the value of the respective counter register is equal to the minimum value; and

identifying one or more counter registers of the plurality of counter registers as not satisfying the minimum value threshold if the value of the respective counter register is not equal to the minimum value;

incrementing, by the data processing system, each of the set of counter registers that satisfy the minimum value threshold;

not incrementing, by the data processing system, each of the set of counter registers that do not satisfy the minimum value threshold;

encrypting, by the data processing system, the vector data structure to create an encrypted data structure, such that the encrypted data structure can be combined with a second encrypted data structure; and

transmitting, by the data processing system, the encrypted data structure to a worker computing device.

2. The method of claim 1 , further comprising:

receiving, by the data processing system, a first identifier comprising a first device attribute; and

storing, by the data processing system, the first identifier comprising the first device attribute as a member of the set of identifiers.

3. The method of claim 1 , further comprising:

hashing, by the data processing system, a identifier of the set of identifiers using each of a plurality of hash functions to generate a plurality of hashed data record values;

extracting, by the data processing system, a plurality of register identifiers from the plurality of hashed data record values, each of the plurality of register identifiers corresponding to a respective counter register of the plurality of counter registers; and

identifying, by the data processing system, a uniformly distributed hash function as one of the plurality of hash functions, wherein the uniformly distributed hash function outputs uniformly distributed values.

4. The method of claim 3 , wherein hashing the identifier of the set of identifiers further comprises storing, by the data processing system, in the database, each of the plurality of hashed data record values in association with the identifier.

5. The method of claim 4 , wherein extracting the plurality of register identifiers further comprises performing a modulus operation on each of the plurality of hashed data record values using a number of the plurality of counter registers.

6. The method of claim 3 , wherein the vector data structure is first vector in a matrix data structure comprising the first vector and a second vector, and wherein generating the vector data structure further comprises:

selecting, by the data processing system, a selected vector using a hash function of the plurality of hash functions and the identifier of the set of identifiers, wherein the selected vector is one of the first vector or the second vector; and

updating, by the data processing system, a coordinate of the selected vector of the matrix data structure using the hash function and the identifier of the set of identifiers.

7. The method of claim 6 , wherein selecting the selected vector further comprises:

hashing, by the data processing system, the identifier of the set of identifiers to generate a hashed identifier;

determining, by the data processing system, a number of least significant bits of the hashed identifier that satisfy a predetermined bit value; and

selecting, by the data processing system, the first vector as the selected vector or the second vector as the selected vector, based on the number of least significant bits of the hashed identifier that satisfy the predetermined bit value.

8. The method of claim 7 , wherein updating the coordinate of the selected vector of the matrix data structure further comprises:

performing, by the data processing system, a modulus operation on the hashed identifier to calculate a counter register index value;

selecting, by the data processing system, the coordinate using the counter register index value; and

incrementing, by the data processing system, the coordinate selected using the counter register index value.

9. The method of claim 1 , comprising:

hashing, by the data processing system, a identifier of the set of identifiers using each of a plurality of hash functions to generate a plurality of hashed data record values; and

extracting, by the data processing system, a plurality of register identifiers from the plurality of hashed data record values, each of the plurality of register identifiers corresponding to a respective counter register of the plurality of counter registers.

10. A system for generating an encrypted data structure representative of a set of identifiers having attributes that satisfy target criteria for secure and computationally efficient transmission, comprising:

a data processing system comprising one or more processors and a memory, the data processing system configured to:

maintain, by a data processing system comprising one or more processors and a memory, in a database, a set of identifiers, each of the set of identifiers comprising an attribute;

generate, by the data processing system, a vector data structure comprising a plurality of coordinates each corresponding to a respective one of a plurality of counter registers;

access, by the data processing system, each of the plurality of counter registers that correspond to a plurality of register identifiers to identify a set of counter registers that satisfy a minimum value threshold, wherein identifying the set of counter registers that satisfy the minimum value threshold comprises:

determine a value for each respective counter register of the plurality of counter registers to determine a minimum value;

compare the value for each respective counter register of the plurality of counter registers;

identify one or more counter registers of the plurality of counter registers as satisfying the minimum value threshold if the value of the respective counter register is equal to the minimum value; and

identifying one or more counter registers of the plurality of counter registers as not satisfying the minimum value threshold if the value of the respective counter register is not equal to the minimum value;

increment, by the data processing system, each of the set of counter registers that satisfy the minimum value threshold;

not increment, by the data processing system, each of the set of counter registers that do not satisfy the minimum value threshold;

encrypt, by the data processing system, the vector data structure to create an encrypted data structure, such that the encrypted data structure can be combined with a second encrypted data structure; and

transmit, by the data processing system, the encrypted data structure to a worker computing device.

11. The system of claim 10 , wherein the data processing system is further configured to:

receive a first identifier comprising a first device attribute; and

store the first identifier comprising the first device attribute as a member of the set of identifiers.

12. The system of claim 10 , wherein the data processing system is further configured to:

hash, by the data processing system, a identifier of the set of identifiers using each of a plurality of hash functions to generate a plurality of hashed data record values;

extract, by the data processing system, a plurality of register identifiers from the plurality of hashed data record values, each of the plurality of register identifiers corresponding to a respective counter register of the plurality of counter registers; and

identify, by the data processing system, a uniformly distributed hash function as one of the plurality of hash functions, wherein the uniformly distributed hash function outputs uniformly distributed values.

13. The system of claim 12 , wherein the data processing system is further configured to store, in the database, each of the plurality of hashed data record values in association with the identifier.

14. The system of claim 12 , wherein the data processing system is further configured to perform a modulus operation on each of the plurality of hashed data record values using a number of the plurality of counter registers.

15. The system of claim 12 , wherein the vector data structure is a first vector in a matrix data structure comprising the first vector and a second vector, and wherein the data processing system is further configured to:

select a selected vector using a hash function of the plurality of hash functions and the identifier of the set of identifiers, wherein the selected vector is one of the first vector or the second vector; and

update a coordinate of the selected vector of the matrix data structure using the hash function and the identifier of the set of identifiers.

16. The system of claim 15 , wherein the data processing system is further configured to:

hash the identifier of the set of identifiers to generate a hashed identifier; determine a number of least significant bits of the hashed identifier that satisfy a predetermined bit value; and

select the first vector as the selected vector or the second vector as the selected vector, based on the number of least significant bits of the hashed identifier that satisfy the predetermined bit value.

17. The system of claim 16 , wherein the data processing system is further configured to:

perform a modulus operation on the hashed identifier to calculate a counter register index value;

select the coordinate using the counter register index value; and increment the coordinate selected using the counter register index value.

18. The system of claim 10 , wherein the data processing system is further configured to:

hash, by the data processing system, a identifier of the set of identifiers using each of a plurality of hash functions to generate a plurality of hashed data record values; and

extract, by the data processing system, a plurality of register identifiers from the plurality of hashed data record values, each of the plurality of register identifiers corresponding to a respective counter register of the plurality of counter registers.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2024
From: WRIGHT, CRAIG; KREUTER, BENJAMIN R.; ASUNCION, ARTHUR; SKVORTSOV, EVGENY; BOOK, LAURA GRACE; MA, SHENG; PENG, JIAYU; HUANG, XICHEN; KOEHLER, JAMES ROBET
To: GOOGLE LLC
Reel/Frame 066494/0939 →
Continuity (6)
Continuation 17276643
Provisional Application 63002138 · Mar 30, 2020
Provisional Application 62987645 · Mar 10, 2020
Provisional Application 62981960 · Feb 26, 2020
Provisional Application 62977141 · Feb 14, 2020
Related Publication 20240204988A1 · Jun 20, 2024
References Cited (59)
US 8815905B2 · Wolf et al. · 2014 [cited by applicant]
US 9049011B1 · Agrawal · 2015 [cited by applicant]
US 9306738B2 · Loftus et al. · 2016 [cited by applicant]
US 9652512B2 · Litherland et al. · 2017 [cited by applicant]
US 10970629B1 · Dirac · 2021 [cited by examiner]
US 11138170B2 · Crossley et al. · 2021 [cited by applicant]
US 11232216B1 · Ghetti et al. · 2022 [cited by applicant]
US 11347808B1 · Plenderleith · 2022 [cited by examiner]
US 20050002532A1 · Zhou et al. · 2005 [cited by applicant]
US 20070140479A1 · Wang et al. · 2007 [cited by applicant]
US 20130010950A1 · Kerschbaum · 2013 [cited by examiner]
US 20130150072A1 · Kapoor et al. · 2013 [cited by applicant]
US 20130226972A1 · Kosuru · 2013 [cited by examiner]
US 20140149433A1 · Lakshminarayan · 2014 [cited by examiner]
US 20150089574A1 · Mattsson et al. · 2015 [cited by applicant]
US 20150220625A1 · Cartmell et al. · 2015 [cited by applicant]
US 20160127128A1 · Chen et al. · 2016 [cited by applicant]
US 20160378465A1 · Venkatesh et al. · 2016 [cited by applicant]
US 20170155628A1 · Rohloff et al. · 2017 [cited by applicant]
US 20170272246A1 · Rane et al. · 2017 [cited by applicant]
US 20170310643A1 · Hardy et al. · 2017 [cited by applicant]
US 20180285596A1 · Jones et al. · 2018 [cited by applicant]
US 20180357434A1 · Roy · 2018 [cited by examiner]
US 20190121742A1 · Bhimani · 2019 [cited by examiner]
US 20190237176A1 · O'Brien et al. · 2019 [cited by applicant]
US 20200022814A1 · Frederick et al. · 2020 [cited by applicant]
US 20200064446A1 · Chan et al. · 2020 [cited by applicant]
US 20200250193A1 · Pham et al. · 2020 [cited by applicant]
US 20220075878A1 · Begg et al. · 2022 [cited by applicant]
CN 102693378 · 2012 [cited by applicant]
CN 103095453 · 2013 [cited by applicant]
CN 106534313 · 2017 [cited by applicant]
CN 107968708 · 2018 [cited by applicant]
CN 110622165 · 2019 [cited by applicant]
CN 111680041 · 2020 [cited by applicant]
CN 113157778 · 2021 [cited by applicant]
EP 2547003 · 2013 [cited by applicant]
EP 3220570 · 2017 [cited by applicant]
EP 3419211 · 2018 [cited by applicant]
EP 3525388 · 2019 [cited by applicant]
JP 2002237810 · 2002 [cited by applicant]
JP 2014157264 · 2014 [cited by applicant]
JP 2015204111 · 2015 [cited by applicant]
JP 2015228611 · 2015 [cited by applicant]
JP 2017507387 · 2017 [cited by applicant]
WO WO2005071640 · 2005 [cited by applicant]
WO WO2018124104 · 2018 [cited by applicant]
WO WO2019030409 · 2019 [cited by applicant]
Luo, Lailong & Guo, Deke & Ma, Richard & Rottenstreich, Ori & Luo, Xueshan. (2018). Optimizing Bloom Filter: Challenges, Solutions, and Comparisons. IEEE Communications Surveys & Tutorials. pp. 10.1109/COMST.2018.288932… [cited by examiner]
Vatsalan, Dinusha, and Peter Christen. “Multi-party privacy-preserving record linkage using bloom filters.” arXiv preprint arXiv: 1612.08835 (Year: 2016). [cited by examiner]
Chinese Search Report Corresponding to Application No. 2020800054594 on Nov. 10, 2023. [cited by applicant]
International Preliminary Report on Patentability for Application No. PCT/US2020/043894, mailed Aug. 25, 2022, 8 pages. [cited by applicant]
International Preliminary Report on Patentability for PCT/US2020/041020, mailed Aug. 25, 2022, 11 pages. [cited by applicant]
International Preliminary Report on Patentability for PCT/US2020/041025, mailed Aug. 25, 2022, 11 pages. [cited by applicant]
Japanese Translation of Saho et al., “Proposal of Search Scheme Applying Bloom Filter in Searchable Encryption”, Research Report Computer Security (CSEC), Japan, May 14, 2015, vol. CSEC-69, No. 8, pp. 1-7. [cited by applicant]
Machine Translated Chinese Search Report Corresponding to Application No. 2020800054522 on Jul. 12, 2022. [cited by applicant]
Machine Translated Chinese Search Report Corresponding to Application No. 202080005460.7 on Jul. 7, 2020. [cited by applicant]
Wang et al., “Personalized Privacy-Preserving Data Aggregation for Histogram Estimation”, 2015 Institute of Electrical and Electronics Engineers Global Communications Conference, San Diego, California, United States, De… [cited by applicant]
Yao et al., “Efficient Histogram Estimation for Smart Grid Data Processing with the Loglog-Bloom-Filter”, Institute of Electrical and Electronics Engineers Transactions on Smart Grid, vol. 6, Issue 1, Jan. 2015, 10 page… [cited by applicant]