Pairing-based cryptography is a relatively young area of cryptography that revolves around a certain function with special properties.
The PBC (Pairing-Based Cryptography) library is a free C library (released under the GNU Public License) built on the GMP library that performs the mathematical operations underlying pairing-based cryptosystem.
The PBC library is designed to be the backbone of implementations of pairing-based cryptosystems, thus speed and portability are important goals. It provides routines such as elliptic curve generation, elliptic curve arithmetic and pairing computation.
The API is abstract enough that the PBC library can be used even if the programmer possesses only an elementary understanding of pairings. There is no need to learn about elliptic curves or much of number theory. (The minimum requirement is some knowledge of cyclic groups and properties of the pairing.)
This tutorial shows how to implement a pairing-based cryptosystem in a few lines using the PBC library.
The PBC library can also be used to build conventional cryptosystems.
In the example directory, there are demonstrations of many cryptosystems. More work would be needed to turn them into practical applications, but they show how to build pairing-based cryptosystems using the PBC library. Examples include:
- Boneh-Franklin identity-based encryption
- Boneh-Lynn-Shacham short signatures
- Hess identity-based signatures
- Joux tripartite Diffie-Hellman
- Paterson identity-based signatures
- Yuan-Li identity-based authenticated key agreement
- Zhang-Kim identity-based blind/ring signatures
- Zhang-Safavi-Naini-Susilo signatures
Thanks to Dmitry Kosolapov for many of these programs.
Please send PBC related messages to the PBC developers' mailing list.
The main author of the PBC library is Ben Lynn who is still developing and maintaining it.