The Pairing-Based Cryptography Library

About

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.

Examples

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

  • Zhang-Safavi-Naini-Susilo signatures

Mailing List

Please send PBC related messages to the PBC developers' mailing list.

Acknowledgements

The main author of the PBC library is Ben Lynn who is still developing and maintaining it.

Thanks to the many others who have contributed, including Hovav Shacham, Matt Steiner, Joe Cooley, Rob Figueiredo, Roger Khazan, Dmitry Kosolapov, John Bethencourt, Paul Miller, Michael Cheng, Ian Goldberg, Adam Aviv, Adam McLaurin, and Michael Adjedj.