[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

For your consideration: post-quantum cryptography support for libssh

Hello libssh community,

I'm from the Security and Cryptography team at Microsoft Research, which is leading Microsoft's efforts in post-quantum cryptography (https://aka.ms/pqcrypto). For those of you unaware of it, post-quantum cryptography is cryptography used by classical computers, but for which no known attack by quantum computers exists. Such attacks are known to exist for classical asymmetric algorithms like RSA and elliptic curve cryptography, which become fatally broken if a large enough quantum computer is ever successfully built. We very much hope to complete a standard and have implementations out and in use before that happens!

Our team has submitted algorithms for consideration to NIST's Post-Quantum Cryptography standardization process (https://csrc.nist.gov/projects/post-quantum-cryptography) and also in collaboration with the Open Quantum Safe project (https://openquantumsafe.org/), have brought together a library that contains the code for most of the candidate algorithms (https://github.com/open-quantum-safe/liboqs) as well as a fork of OpenSSH that uses the algorithms from the library for key exchange, user key authentication, and host key authentication (https://github.com/open-quantum-safe/openssh).

These algorithms are still experimental, though at this point we are in round 3 and the remaining candidates have undergone considerable scrutiny. We hope for a standard from NIST later this year. In advance of that, though, we feel it's important to get them out there into the developer community, so people can start using these algorithms, in preparation for the eventual transition to them.

To provide another implementation of the SSH protocol using post-quantum cryptography, I've extended libssh to provide the same support to use the algorithms in liboqs, and achieve parity and interoperability with the fork of OpenSSH. I'm writing to gauge your interest in this work and get some feedback, and so I've put up a merge request so you can take a look. I've built it so that it's entirely opt-in, and requires particular CMake flags in order to activate, so the regular build is unchanged. This should certainly be considered work-in-progress.

I've squashed all the work into a single commit for the purposes of the merge request, which you can look at here: WIP: Add support for post-quantum and hybrid key exchange and digital signature algorithms (!169) * Merge requests * libssh project / libssh-mirror * GitLab<https://gitlab.com/libssh/libssh-mirror/-/merge_requests/169>

But I've also pushed the branch I was working on as I went, which has about twenty commits, if you want to look at it in smaller chunks: Files * pqcrypto-unsquashed * Kevin Kane / libssh-mirror * GitLab<https://gitlab.com/kevinmkane/libssh-mirror/-/tree/pqcrypto-unsquashed>

There is a README.oqs in the root directory that has build instructions, and is where I recommend starting: https://gitlab.com/kevinmkane/libssh-mirror/-/raw/pqcrypto/README.oqs

Please take a look, and let me know your thoughts and feedback. Thanks!

Kevin M. Kane, Ph.D.
Principal Software Engineer
Security and Cryptography
Microsoft Research


[MSFT_logo_Gray DE sized SIG1.png]

PNG image

Archive administrator: postmaster@lists.cynapses.org