Implementation of algorithms from the paper Fuzzy Extractors: How to Generate Strong Keys from Biometrics and Other Noisy Data

PinSketch (the BCH-based secure sketch) has been implemented in C++ by Kevin Harmon and Leonid Reyzin using Victor Shoup's NTL. The implementation includes, in particular, sublinear-time syndrome encoding and decoding of BCH codes, as described in this excerpt from the fuzzy extractors paper called bch-excerpt.pdf. It provides an efficient way to find differences between two sets without having to communicate the sets, and with minimum information leakage.

Gergely Ács added Perl interface to our code and has kindly made it available on-line.

An optimizied self-contained implementation by Pieter Wuille, Greg Maxwell, Gleb Naumenko is available here.


The improved Juels-Sudan secure sketch has been implemented by Soren Johnson and Leonid Reyzin, also using NTL. It also provides a way (though less efficient, at least as currently implemented) to find differences between two sets without having to communicate the sets. The implementation includes, in particular, Welch-Berlekamp decoding for Reed-Solomon codes, which may be useful for other purposes.


If you find a use for this code, or bugs in it, I'd love to hear about it.


This material is based upon work supported by the National Science Foundation un der Grants CCR-0311485, CCF-0515100 and CNS-0202067. Any opinions, findings and conclusions or recomendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation (NSF).