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

https://aka.ms/kkane/
kk...@microsoft.com<mailto:kk...@microsoft.com>

[MSFT_logo_Gray DE sized SIG1.png]





Reply via email to