2.0.1 • Published 3 years ago

uhc-crystals-kyber-javascript v2.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

CRYSTALS-KYBER JavaScript

forked from https://github.com/antontutoveanu/crystals-kyber-javascript

CRYSTALS-KYBER is a post-quantum key exchange protocol.

This protocol is used to securely establish symmetric keys between two parties.

This JavaScript implementation is intended for client-side web browser applications but can be used for any JavaScript based application.

Most of this code was translated from Nadim Kobeissi's Go implementation of Kyber which can be found here.

Code by the original designers (written in C) can be found here.

Kyber's original design comes in 512, 768, 1024 security strengths. This implementation only supports the security strength of 768 at the moment. In the future these strengths will be implemented as well as any updates if changes are made to the original design.

This code is the most up to date version based off the NIST PQC Round 3 Submissions.

Functionality

KYBER-768 will securely distribute a 256 bit symmetric key between two parties. To safely transmit data over a channel using the key, AES-256 along with HMAC-SHA256 are recommended.

The exchange can be visualised below:

npm.io

Further Information

More details about CRYSTALS-KYBER, lattice-based cryptography and a real-life use of this algorithm can be read here Active Implementation of Post-Quantum End-to-End Encryption 17 Mar 2021.

Disclaimer

All effort has been made to ensure this code is functional and operating as intended according to the original CRYSTALS-KYBER design. Any advice can be sent to amt597@uowmail.edu.au.