Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
private-membership — Cryptographic protocol library enabling privacy-preserving set membership queries where the server learns neither the client's identifier nor the query result, using homomorphic encryption and commutative ciphers. | Kitploit
Tools/GitHubGitHub/google/private-membership
Encryption/Decryption ToolsCryptographyPrivacy
GitHubgoogle/private-membership

private-membership

Cryptographic protocol library enabling privacy-preserving set membership queries where the server learns neither the client's identifier nor the query result, using homomorphic encryption and commutative ciphers.

View Repository
67171 month agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Private Set Membership (PSM)

Problem Statement

Private Set Membership (PSM) is a cryptographic protocol that allows clients to privately query whether the client's identifier is a member of a set of identifiers held by a server in a privacy-preserving manner.

At a high level, PSM provides the following privacy guarantees:

  • The server does not learn the client's queried identifier in the plaintext.
  • The server does not learn whether the client's query results in a membership or non-membership determination.
  • The querying client does not learn any information about the set of identifiers that are stored by the server beyond whether the querying client's identifier is a member or not of the server-held set of identifiers. In other words, the querying client learns the bare minimum amount of information which is only the answer of the membership query.

Dependencies

The Private Set Membership library requires the following dependencies:

  • Abseil for C++ common libraries.

  • Bazel for building the library.

  • BoringSSL for underlying cryptographic operations.

  • GFlag for flags. Needed to use glog.

  • GLog for logging.

  • Google Test for unit testing the library.

  • Protocol Buffers for data serialization.

  • Private Join and Compute for cryptographic operations and commutative ciphers.

  • Shell for fully homomorphic encryption.

  • Tink for cryptographic PRNGs.

How to build

In order to run this library, you need to install Bazel, if you don't have it already. Follow the instructions for your platform on the Bazel website. Make sure you are installing version 9.1.0 or above.

You also need to install Git, if you don't have it already. Follow the instructions for your platform on the Git website.

Once you've installed Bazel and Git, open a Terminal and clone the repository into a local folder.

Navigate into the private-membership folder you just created, and build the library and dependencies using Bazel. Note, the library must be built using C++17.

root@kitploit:~
cd private-membership
bazel build ... --cxxopt='-std=c++17'

You may also run all tests (recursively) using the following command:

root@kitploit:~
bazel test ... --cxxopt='-std=c++17'

Building with Bazelisk

Alternatively, you can build and test this repository using Bazelisk to automatically download and use the version of Bazel against which this code was tested and verified.

root@kitploit:~
cd private-membership
bazelisk build ... --cxxopt='-std=c++17'
bazelisk test ... --cxxopt='-std=c++17'

Disclaimers

This is not an officially supported Google product. The software is provided as-is without any guarantees or warranties, express or implied.

Download Tool