mirror of
https://github.com/open-quantum-safe/liboqs.git
synced 2025-12-16 00:03:39 -05:00
* Fix an issue where run_tests tried to run tests from upstream. Fix by @DStebila * No longer checking spdx on files copied from upstream * Added compiler checking for gcc. Must be at least 9.4.0. * Added pqclean's aarch64 optimized kyber implementation to liboqs * stripping asimd flag for ARM64_V8 as it isn't needed and will cause errors when trying to specify it during compilation * Updated kyber docs * Updated kyber markdown so that no-secret-dependent-branching-checked-by-valgrind correctly says false for the new aarch64 implementation * Added automated updating of legacy yaml format, and added some yaml files which don't get automatically updated * Fixed a bug where optimized upstreams would use the primary upstream's supported platform * Fixed a bug with copy_from_upstream.py's verify function where it would always use the default upstream location when comparing with diff * Added reporting for implementations that are in upstream but aren't yet integrated into liboqs * Added support to ignore implementations from upstream in copy_from_upstream.yml. This is to prevent implementations that haven't been integrated into LIBOQS yet from being pulled in by copy_from_upstream.py. It also silences the warning when verifying. * Adding updated ymls and md files for docs * copy_from_upstream.py now also calls update_docs_from_yaml.py
222 lines
33 KiB
Markdown
222 lines
33 KiB
Markdown
# SIKE
|
|
|
|
- **Algorithm type**: Key encapsulation mechanism.
|
|
- **Main cryptographic assumption**: (supersingular) isogeny walk problem.
|
|
- **Principal submitters**: David Jao, Reza Azarderakhsh, Matthew Campagna, Craig Costello, Luca De Feo, Basil Hess, Amir Jalali, Brian Koziel, Brian LaMacchia, Patrick Longa, Michael Naehrig, Joost Renes, Vladimir Soukharev, David Urbanik.
|
|
- **Authors' website**: https://sike.org
|
|
- **Specification version**: NIST Round 3 submission.
|
|
- **Primary Source**<a name="primary-source"></a>:
|
|
- **Source**: https://github.com/microsoft/PQCrypto-SIDH/commit/effa607f244768cdd38f930887076373604eaa78
|
|
- **Implementation license (SPDX-Identifier)**: MIT
|
|
|
|
|
|
## Parameter set summary
|
|
|
|
| Parameter set | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) |
|
|
|:--------------------:|:-----------------|---------------------:|--------------------------:|--------------------------:|--------------------------:|-----------------------------:|
|
|
| SIDH-p434 | IND-CPA | 1 | 330 | 28 | 330 | 110 |
|
|
| SIDH-p434-compressed | IND-CPA | 1 | 197 | 28 | 197 | 110 |
|
|
| SIDH-p503 | IND-CPA | 2 | 378 | 32 | 378 | 126 |
|
|
| SIDH-p503-compressed | IND-CPA | 2 | 225 | 32 | 225 | 126 |
|
|
| SIDH-p610 | IND-CPA | 3 | 462 | 39 | 462 | 154 |
|
|
| SIDH-p610-compressed | IND-CPA | 3 | 274 | 39 | 274 | 154 |
|
|
| SIDH-p751 | IND-CPA | 5 | 564 | 48 | 564 | 188 |
|
|
| SIDH-p751-compressed | IND-CPA | 5 | 335 | 48 | 335 | 188 |
|
|
| SIKE-p434 | IND-CCA2 | 1 | 330 | 374 | 346 | 16 |
|
|
| SIKE-p434-compressed | IND-CCA2 | 1 | 197 | 350 | 236 | 16 |
|
|
| SIKE-p503 | IND-CCA2 | 2 | 378 | 434 | 402 | 24 |
|
|
| SIKE-p503-compressed | IND-CCA2 | 2 | 225 | 407 | 280 | 24 |
|
|
| SIKE-p610 | IND-CCA2 | 3 | 462 | 524 | 486 | 24 |
|
|
| SIKE-p610-compressed | IND-CCA2 | 3 | 274 | 491 | 336 | 24 |
|
|
| SIKE-p751 | IND-CCA2 | 5 | 564 | 644 | 596 | 32 |
|
|
| SIKE-p751-compressed | IND-CCA2 | 5 | 335 | 602 | 410 | 32 |
|
|
|
|
## SIDH-p434 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage?‡ |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:----------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file.
|
|
|
|
## SIDH-p434-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIDH-p503 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIDH-p503-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIDH-p610 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIDH-p610-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIDH-p751 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIDH-p751-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p434 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p434-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p503 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p503-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p610 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p610-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p751 implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## SIKE-p751-compressed implementation characteristics
|
|
|
|
| Implementation source | Identifier in upstream | Supported architecture(s) | Supported operating system(s) | CPU extension(s) used | No branching-on-secrets claimed? | No branching-on-secrets checked by valgrind? | Large stack usage? |
|
|
|:---------------------------------:|:-------------------------|:----------------------------|:--------------------------------|:------------------------|:-----------------------------------|:-----------------------------------------------|:---------------------|
|
|
| [Primary Source](#primary-source) | optimized | All | All | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64 | x86\_64 | Linux,Darwin | None | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_bmi2 | x86\_64 | Linux,Darwin | BMI2 | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_amd64\_adx | x86\_64 | Linux,Darwin | BMI2,ADX | True | True | False |
|
|
| [Primary Source](#primary-source) | additional\_arm64 | arm64v8 | Linux,Darwin | None | True | True | False |
|
|
|
|
Are implementations chosen based on runtime CPU feature detection? **No**.
|
|
|
|
## Explanation of Terms
|
|
|
|
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments. |