Portrait of Michael Naehrig

Michael Naehrig



I am a researcher in the Security and Cryptography team at Microsoft Research in Redmond.


Lattice Cryptography Library

Established: April 19, 2016

LatticeCrypto is a high-performance and portable software library that implements lattice-based cryptographic algorithms. The first release of the library provides an implementation of lattice-based key exchange with security based on the Ring Learning With Errors (R-LWE) problem using new algorithms for the underlying Number Theoretic Transform (NTT) [1]. The chosen parameters provide at least 128 bits of security against attackers running classical and quantum computers. LatticeCrypto implements the key exchange protocol proposed by Alkim, Ducas,…

SIDH Library

Established: April 16, 2016

SIDH Library is a fast and portable software library that implements a new suite of algorithms for supersingular isogeny Diffie-Hellman key exchange [1]. The chosen parameters aim to provide 128 bits of security against attackers running a large-scale quantum computer, and 192 bits of security against classical algorithms. SIDH has the option of a hybrid key exchange that combines supersingular isogeny Diffie-Hellman with a high-security classical elliptic curve Diffie-Hellman key exchange at a small overhead. SIDH is…

MSR Elliptic Curve Cryptography Library

Established: June 27, 2014

MSR ECCLib is an efficient cryptography library that provides functions for computing essential elliptic curve operations on a new set of high-security curves.  All computations on secret data exhibit regular, constant-time execution, providing protection against timing and cache attacks.  The library is available for download below. Library Features MSR ECCLib supports six high-security elliptic curves proposed in [2], which cover three security levels (128-, 192-, and 256-bit security) and two curve models. The curves have a…

Verifiable Computing

Established: August 24, 2011

Verifiable computation schemes enable a client to outsource the computation of a function F on various inputs to an untrusted worker, and then verify the correctness of the returned results. Critically, the outsourcing and verification procedures must be more efficient than performing the computation itself. In more detail, we introduce and formalize the notion of Verifiable Computation, which enables a computationally weak client to "outsource" the computation of an arbitrary function F on various dynamically-chosen…













Recent Talks