1
0
mirror of https://github.com/henrydcase/nobs.git synced 2024-11-25 08:31:21 +00:00
nobs/kem/mkem/README.md

1.9 KiB

mKEM for cSIDH/p512

Implementation of multi-KEM for SIKE and multi-PKE for cSIDH.

Implementation

The implementation is done in Go. Compilation requires go 1.12 or newer to compile with GO111MODULE=on. Implementation is based on cSIDH and SIDH from NOBS NOBS library.

Running and benchmarking

To run all benchmarks use following command

make run

It is possible to run only subset of benchmarks. The command make run-cycles will calculate CPU cycles for encryption/encapsulation to N users. The command make run-ns will produce results in nanoseconds.

Results

Benchmarks has been run on i7-8665U (Whiskey Lake) @ 1.90GHz

  • CPU cycle count
Test name:                | Cycle count:
--------------------------|--------------
bench_SIKEp434_KEM        | 1720710678
bench_SIKEp503_KEM        | 2411750152
bench_SIKEp751_KEM        | 7225841287
bench_SIKEp434_mKEM       | 783353356
bench_SIKEp503_mKEM       | 1100170053
bench_SIKEp751_mKEM       | 3304027422
bench_CSIDH_PKE           | 38200232832
bench_CSIDH_mPKE          | 19203013803
  • Time in ns
./mkem.test -test.run="notest" -test.bench=BenchmarkMultiEncaps -test.cpu=1

BenchmarkMultiEncaps_100keys/P-434         	       3	 357838360 ns/op
BenchmarkMultiEncaps_100keys/P-503         	       2	 503749852 ns/op
BenchmarkMultiEncaps_100keys/P-751         	       1	1514791804 ns/op


./mkem.test -test.run="notest" -test.bench=BenchmarkEncaps -test.cpu=1
BenchmarkEncaps/P-434         	     151	   7888643 ns/op
BenchmarkEncaps/P-503         	     100	  11150691 ns/op
BenchmarkEncaps/P-751         	      36	  34494941 ns/op

./mkem.test -test.run="notest" -test.bench=BenchmarkEncrypt_CSIDH_p512 -test.cpu=1
BenchmarkEncrypt_CSIDH_p512 	       7	 185828599 ns/op

./mkem.test -test.run="notest" -test.bench=BenchmarkMultiEncrypt_CSIDH_100keys -test.cpu=1
BenchmarkMultiEncrypt_CSIDH_100keys 	       1	1025902914 ns/op