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 Lesser General Public License) built on the GMP library that performs the mathematical operations underlying pairing-based cryptosystems.
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. Thanks to the GMP library, despite being written in C, pairings times are reasonable. On a 1GHz Pentium III:
Fastest pairing: 11ms
Short pairing: 31ms
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-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
Please send PBC related messages to the PBC developers' mailing list.
The main author of the PBC library is Ben Lynn.