Go to file
2019-11-21 11:22:57 +00:00
p434 Code formatting 2019-06-28 14:27:44 +01:00
p503 Code formatting 2019-06-28 14:27:44 +01:00
tools Add sage script for generating parameters 2019-06-28 12:13:58 +01:00
go.mod Implementation of P434 2019-06-28 12:01:19 +01:00
go.sum Implementation of P434 2019-06-28 12:01:19 +01:00
README.md Update readme 2019-11-21 11:22:57 +00:00

Supersingular Isogeny Key Encapsulation

go-sike is a Golang implementation of (SIKE)[http://sike.org] - isogeny-based key encryption mechanism. SIKE is a candidate for (standarization)[https://csrc.nist.gov/Projects/Post-Quantum-Cryptography] by NIST as quantum-safe key exchange algorithm.

Implementation

This code guarantees correctness of implementation and portability. It is fully compatible with version 3.2 of an algorithm. Implementation currently contains 2 finite fields p434 and p503.

Speed - for reference

P503

> go test -run=. -bench=. -benchmem
goos: linux
goarch: amd64
pkg: github.com/henrydcase/go-sike-p503/p503
BenchmarkKeygen-4            100      10448291 ns/op           0 B/op          0 allocs/op
BenchmarkEncaps-4            100      17250470 ns/op        1344 B/op          3 allocs/op
BenchmarkDecaps-4            100      18755075 ns/op        1358 B/op          3 allocs/op
PASS
ok      github.com/henrydcase/go-sike-p503/p503 12.676s

P434

> go test -run=. -bench=. -benchmem
goos: linux
goarch: amd64
pkg: github.com/henrydcase/go-sike-p503/p434
BenchmarkKeygen-4            200       7298860 ns/op           0 B/op          0 allocs/op
BenchmarkEncaps-4            100      12008715 ns/op        1344 B/op          3 allocs/op
BenchmarkDecaps-4            100      12950648 ns/op        1358 B/op          3 allocs/op
PASS
ok      github.com/henrydcase/go-sike-p503/p434 9.880s

p434 vs p503

benchmark             old ns/op     new ns/op     delta
BenchmarkKeygen-4     10552847      7471517       -29.20%
BenchmarkEncaps-4     17375489      11897130      -31.53%
BenchmarkDecaps-4     18927683      12991795      -31.36%

benchmark             old allocs     new allocs     delta
BenchmarkKeygen-4     0              0              +0.00%
BenchmarkEncaps-4     3              3              +0.00%
BenchmarkDecaps-4     3              3              +0.00%

benchmark             old bytes     new bytes     delta
BenchmarkKeygen-4     0             0             +0.00%
BenchmarkEncaps-4     1344          1344          +0.00%
BenchmarkDecaps-4     1358          1358          +0.00%