57 lines
2.2 KiB
Markdown
57 lines
2.2 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 implementations, namely ``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%
|
|
```
|