Skip to content
forked from pq-crystals/kyber

Compiled-Kyber Group Authenticated Group Key Exchange (GAKE)

License

Notifications You must be signed in to change notification settings

jiep/kyber-gake

 
 

Repository files navigation

Compiled-Kyber Group Authenticated Group Key Exchange (GAKE)

Build

This repository contains the implementation of "Compiled Constructions towards Post-Quantum Group Key Exchange: A Design from Kyber".

What is Kyber?

Kyber is a key encapsulation mechanism (KEM) and a finalist in round 3 of the NIST PQC standardization project.

Binaries

Download the latest version from Releases.

How to build

bash build.sh

Prerequisites

  • CMake
  • OpenSSL

How to build with Docker

  1. Install Docker

  2. Build image

docker build -t kyber-gake .
  1. Run container
docker run -it kyber-gake bash

Test programs

Code contains two implementations of the GAKE: ref and avx2. Test programs are located in these folders. Each test program contains a _qrom version.

Available test programs

.
|-- avx2
|   |-- test_gake1024_avx2
|   |-- test_gake512_avx2
|   |-- test_gake768_avx2
|   |-- test_gake_qrom1024_avx2
|   |-- test_gake_qrom512_avx2
|   |-- test_gake_qrom768_avx2
|   |-- test_gake_qrom_speed1024_avx2
|   |-- test_gake_qrom_speed512_avx2
|   |-- test_gake_qrom_speed768_avx2
|   |-- test_gake_speed1024_avx2
|   |-- test_gake_speed512_avx2
|   `-- test_gake_speed768_avx2
`-- ref
    |-- test_gake1024_ref
    |-- test_gake512_ref
    |-- test_gake768_ref
    |-- test_gake_qrom1024_ref
    |-- test_gake_qrom512_ref
    |-- test_gake_qrom768_ref
    |-- test_gake_qrom_speed1024_ref
    |-- test_gake_qrom_speed512_ref
    |-- test_gake_qrom_speed768_ref
    |-- test_gake_speed1024_ref
    |-- test_gake_speed512_ref
    `-- test_gake_speed768_ref

Performance results

Latest performance results can be found on Releases under folder results.

KEM

ref

KEM ref

avx2

KEM avx2

Commitment

ref

Commitment ref

avx2

Commitment ref

2-AKE

ref

2-AKE ref

avx2

2-AKE avx2

GAKE performance

Time per number of parties

ref

GAKE parties ref

avx2

GAKE parties avx2

Time per round

ref

GAKE round ref

avx2

GAKE round avx2

References

  • Escribano Pablos, J.I.; González Vasco, M.I.; Marriaga, M.E.; Pérez del Pozo, Á.L. "Compiled Constructions towards Post-Quantum Group Key Exchange: A Design from Kyber," 2020 Mathematics, 8, 1853, doi: 10.3390/math8101853
  • Bos, J. et al., "CRYSTALS - Kyber: A CCA-Secure Module-Lattice-Based KEM," 2018 IEEE European Symposium on Security and Privacy (EuroS&P), 2018, pp. 353-367, doi: 10.1109/EuroSP.2018.00032.

Languages

  • C 86.6%
  • Assembly 4.4%
  • CMake 3.3%
  • Python 3.1%
  • Makefile 2.2%
  • Pawn 0.3%
  • Other 0.1%