diff --git a/.travis/algorithm-datasheets-check.sh b/.travis/algorithm-datasheets-check.sh new file mode 100755 index 000000000..4fd387dbd --- /dev/null +++ b/.travis/algorithm-datasheets-check.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +### +# Checks that all algorithms have an algorithm datasheet in doc/algorithms. +### + +PRINT_GREEN="tput setaf 2" +PRINT_RED="tput setaf 1" +PRINT_RESET="tput sgr 0" + +# get the list of KEMs from the list of algorithm identifiers in enum OQS_KEM_alg_name in src/kem/kem.h +KEMS=`grep 'define OQS_KEM_alg_' src/kem/kem.h | grep -v 'default' | sed -e 's/^[^"]*"//' | sed -e 's/".*$//' | tr -d '[:blank:]'` + +RET=0 +for kem in ${KEMS}; do + FOUND=`grep ${kem} docs/algorithms/*.md` + if [[ -z "${FOUND}" ]]; + then + ${PRINT_RED} + echo "Could not find algorithm datasheet containing '${kem}'." + ${PRINT_RESET} + RET=1 + fi +done + +if [[ "${RET}" == "0" ]]; +then + ${PRINT_GREEN} + echo "Algorithm datasheet present for all KEMs #defined in src/kem/kem.h."; + ${PRINT_RESET} +fi + +exit ${RET} diff --git a/docs/algorithms/kem_sike.md b/docs/algorithms/kem_sike.md new file mode 100644 index 000000000..27c4727d1 --- /dev/null +++ b/docs/algorithms/kem_sike.md @@ -0,0 +1,35 @@ +liboqs master branch algorithm datasheet: `kem_sike` +==================================================== + +Summary +------- + +- **Name**: SIKE +- **Algorithm type**: key encapsulation mechanism +- **Main cryptographic assumption**: (supersingular) isogeny walk problem +- **NIST submission URL**: https://csrc.nist.gov/CSRC/media/Projects/Post-Quantum-Cryptography/documents/round-1/submissions/SIKE.zip +- **Submitters (to NIST competition)**: 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 +- **Submitters' website**: http://sike.org/ +- **Added to liboqs by**: Christian Paquin + +Parameter sets +-------------- + +| Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) | +|-----------------|:--------------:|:---------------------------:|:-----------------------:|:-----------------------:|:-----------------------:|:--------------------------:| +| Sike-p503 | IND-CCA | 1 | 378 | 434 | 402 | 16 | +| Sike-p751 | IND-CCA | 3 | 564 | 644 | 596 | 24 | + +Implementation +-------------- + +- **Source of implementation:** https://github.com/Microsoft/PQCrypto-SIDH +- **License:** MIT License +- **Language:** C +- **Constant-time:** Yes +- **Architectures supported in liboqs master branch**: x86, x64 + +Additional comments +------------------- + +The original Sike implementation includes optimizations that are not currently being built in liboqs. See src/kem/sike/upstream/README for details.