-
Notifications
You must be signed in to change notification settings - Fork 469
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add MAYO signature scheme from NIST onramp (#1707)
Add MAYO signature scheme from NIST onramp, C and AVX2 versions Add AES128CTR to common code Signed-off-by: Basil Hess <[email protected]>
- Loading branch information
Showing
202 changed files
with
30,461 additions
and
79 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -112,6 +112,11 @@ jobs: | |
container: openquantumsafe/ci-ubuntu-focal-x86_64:latest | ||
CMAKE_ARGS: -DOQS_STRICT_WARNINGS=ON -DOQS_ALGS_ENABLED=NIST_R4 | ||
PYTEST_ARGS: --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py | ||
- name: focal-nistonramp-openssl | ||
runner: ubuntu-latest | ||
container: openquantumsafe/ci-ubuntu-focal-x86_64:latest | ||
CMAKE_ARGS: -DOQS_STRICT_WARNINGS=ON -DOQS_ALGS_ENABLED=NIST_SIG_ONRAMP | ||
PYTEST_ARGS: --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py | ||
- name: jammy-std-openssl3 | ||
runner: ubuntu-latest | ||
container: openquantumsafe/ci-ubuntu-jammy:latest | ||
|
@@ -256,7 +261,7 @@ jobs: | |
- name: Install dependencies | ||
run: env HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja && pip3 install --require-hashes --break-system-packages -r .github/workflows/requirements.txt | ||
- name: Patch GCC | ||
run: env HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --ignore-dependencies gcc@13 && wget https://raw.githubusercontent.com/Homebrew/homebrew-core/eb6dd225d093b66054e18e07d56509cf670793b1/Formula/g/gcc%4013.rb && env HOMEBREW_NO_AUTO_UPDATE=1 brew install --ignore-dependencies [email protected] | ||
run: env HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --ignore-dependencies gcc@13 && wget https://raw.githubusercontent.com/Homebrew/homebrew-core/eb6dd225d093b66054e18e07d56509cf670793b1/Formula/g/gcc%4013.rb && env HOMEBREW_NO_AUTO_UPDATE=1 brew install --ignore-dependencies --formula [email protected] | ||
- name: Get system information | ||
run: sysctl -a | grep machdep.cpu | ||
- name: Configure | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# MAYO | ||
|
||
- **Algorithm type**: Digital signature scheme. | ||
- **Main cryptographic assumption**: multivariable quadratic equations, oil and vinegar. | ||
- **Principal submitters**: Ward Beullens, Fabio Campos, Sofía Celi, Basil Hess, Matthias J. Kannwischer. | ||
- **Authors' website**: https://pqmayo.org | ||
- **Specification version**: https://doi.org/10.46586/tches.v2024.i2.252-275. | ||
- **Primary Source**<a name="primary-source"></a>: | ||
- **Source**: https://github.com/PQCMayo/MAYO-C/commit/cde2675ff404b0ae070e7dbc3d962ea0b026a81e with copy_from_upstream patches | ||
- **Implementation license (SPDX-Identifier)**: Apache-2.0 | ||
|
||
|
||
## Parameter set summary | ||
|
||
| Parameter set | Parameter set alias | Security model | Claimed NIST Level | Public key size (bytes) | Secret key size (bytes) | Signature size (bytes) | | ||
|:---------------:|:----------------------|:-----------------|---------------------:|--------------------------:|--------------------------:|-------------------------:| | ||
| MAYO-1 | NA | EUF-CMA | 1 | 1168 | 24 | 321 | | ||
| MAYO-2 | NA | EUF-CMA | 1 | 5488 | 24 | 180 | | ||
| MAYO-3 | NA | EUF-CMA | 3 | 2656 | 32 | 577 | | ||
| MAYO-5 | NA | EUF-CMA | 5 | 5008 | 40 | 838 | | ||
|
||
## MAYO-1 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) | opt | All | All | None | True | True | False | | ||
| [Primary Source](#primary-source) | avx2 | x86\_64 | Darwin,Linux | AVX2 | True | True | False | | ||
|
||
Are implementations chosen based on runtime CPU feature detection? **Yes**. | ||
|
||
‡For an explanation of what this denotes, consult the [Explanation of Terms](#explanation-of-terms) section at the end of this file. | ||
|
||
## MAYO-2 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) | opt | All | All | None | True | True | False | | ||
| [Primary Source](#primary-source) | avx2 | x86\_64 | Darwin,Linux | AVX2 | True | True | False | | ||
|
||
Are implementations chosen based on runtime CPU feature detection? **Yes**. | ||
|
||
## MAYO-3 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) | opt | All | All | None | True | True | False | | ||
| [Primary Source](#primary-source) | avx2 | x86\_64 | Darwin,Linux | AVX2 | True | True | False | | ||
|
||
Are implementations chosen based on runtime CPU feature detection? **Yes**. | ||
|
||
## MAYO-5 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) | opt | All | All | None | True | True | False | | ||
| [Primary Source](#primary-source) | avx2 | x86\_64 | Darwin,Linux | AVX2 | True | True | True | | ||
|
||
Are implementations chosen based on runtime CPU feature detection? **Yes**. | ||
|
||
## Explanation of Terms | ||
|
||
- **Large Stack Usage**: Implementations identified as having such may cause failures when running in threads or in constrained environments. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
name: MAYO | ||
type: signature | ||
principal-submitters: | ||
- Ward Beullens | ||
- Fabio Campos | ||
- Sofía Celi | ||
- Basil Hess | ||
- Matthias J. Kannwischer | ||
crypto-assumption: multivariable quadratic equations, oil and vinegar | ||
website: https://pqmayo.org | ||
nist-round: 1 | ||
spec-version: https://doi.org/10.46586/tches.v2024.i2.252-275 | ||
primary-upstream: | ||
source: https://github.com/PQCMayo/MAYO-C/commit/cde2675ff404b0ae070e7dbc3d962ea0b026a81e | ||
with copy_from_upstream patches | ||
spdx-license-identifier: Apache-2.0 | ||
parameter-sets: | ||
- name: MAYO-1 | ||
claimed-nist-level: 1 | ||
claimed-security: EUF-CMA | ||
length-public-key: 1168 | ||
length-secret-key: 24 | ||
length-signature: 321 | ||
implementations-switch-on-runtime-cpu-features: true | ||
implementations: | ||
- upstream: primary-upstream | ||
upstream-id: opt | ||
supported-platforms: all | ||
common-crypto: | ||
- SHA3: liboqs | ||
- AES: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- upstream: primary-upstream | ||
upstream-id: avx2 | ||
supported-platforms: | ||
- architecture: x86_64 | ||
operating_systems: | ||
- Darwin | ||
- Linux | ||
required_flags: | ||
- avx2 | ||
common-crypto: | ||
- SHA3: liboqs | ||
- AES: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- name: MAYO-2 | ||
claimed-nist-level: 1 | ||
claimed-security: EUF-CMA | ||
length-public-key: 5488 | ||
length-secret-key: 24 | ||
length-signature: 180 | ||
implementations-switch-on-runtime-cpu-features: true | ||
implementations: | ||
- upstream: primary-upstream | ||
upstream-id: opt | ||
supported-platforms: all | ||
common-crypto: | ||
- SHA3: liboqs | ||
- AES: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- upstream: primary-upstream | ||
upstream-id: avx2 | ||
supported-platforms: | ||
- architecture: x86_64 | ||
operating_systems: | ||
- Darwin | ||
- Linux | ||
required_flags: | ||
- avx2 | ||
common-crypto: | ||
- SHA3: liboqs | ||
- AES: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- name: MAYO-3 | ||
claimed-nist-level: 3 | ||
claimed-security: EUF-CMA | ||
length-public-key: 2656 | ||
length-secret-key: 32 | ||
length-signature: 577 | ||
implementations-switch-on-runtime-cpu-features: true | ||
implementations: | ||
- upstream: primary-upstream | ||
upstream-id: opt | ||
supported-platforms: all | ||
common-crypto: | ||
- SHA3: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- upstream: primary-upstream | ||
upstream-id: avx2 | ||
supported-platforms: | ||
- architecture: x86_64 | ||
operating_systems: | ||
- Darwin | ||
- Linux | ||
required_flags: | ||
- avx2 | ||
common-crypto: | ||
- SHA3: liboqs | ||
- AES: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- name: MAYO-5 | ||
claimed-nist-level: 5 | ||
claimed-security: EUF-CMA | ||
length-public-key: 5008 | ||
length-secret-key: 40 | ||
length-signature: 838 | ||
implementations-switch-on-runtime-cpu-features: true | ||
implementations: | ||
- upstream: primary-upstream | ||
upstream-id: opt | ||
supported-platforms: all | ||
common-crypto: | ||
- SHA3: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: false | ||
- upstream: primary-upstream | ||
upstream-id: avx2 | ||
supported-platforms: | ||
- architecture: x86_64 | ||
operating_systems: | ||
- Darwin | ||
- Linux | ||
required_flags: | ||
- avx2 | ||
common-crypto: | ||
- SHA3: liboqs | ||
- AES: liboqs | ||
no-secret-dependent-branching-claimed: true | ||
no-secret-dependent-branching-checked-by-valgrind: true | ||
large-stack-usage: true |
Oops, something went wrong.