go-sike/README.md
2019-11-21 11:22:57 +00:00

56 lines
2.1 KiB
Markdown

# 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%
```