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.


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).