Skip to content

Commit b6908e7

Browse files
authored
Merge pull request #62 from anhu/sphincs
Chage pq instructions: see wolfssl INSTALL ; move cert gen scripts to osp
2 parents dda9006 + 3897fff commit b6908e7

File tree

1 file changed

+32
-43
lines changed

1 file changed

+32
-43
lines changed

wolfSSL/src/appendix07.md

Lines changed: 32 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -44,51 +44,19 @@ One solution is to not put our full faith into these new algorithms. For now, we
4444

4545
The following instructions will get you started from a clean Linux development environment and lead you step by step to performing a quantum-safe TLS 1.3 connection.
4646

47-
### Building Open Quantum Safe
47+
### Build Instructions
4848

49-
In order be able to use liboqs, you must have it built and installed on your system. We support the `0.7.0` release of liboqs. You can download it from the following link:
49+
Please see the wolfSSL repo's INSTALL file (https://github.com/wolfSSL/wolfssl/blob/master/INSTALL). Item 15 (Building with liboqs for TLS 1.3 [EXPERIMENTAL]) has instructions on how to configure and build:
5050

51-
<https://github.com/open-quantum-safe/liboqs/archive/refs/tags/0.7.0.tar.gz>
51+
- liboqs
52+
- wolfssl
53+
- patched OQS's OpenSSL fork
5254

53-
Once unpacked, this would be sufficient:
54-
55-
```sh
56-
cd liboqs-0.7.0
57-
mkdir build
58-
cd build
59-
cmake -DOQS_USE_OPENSSL=0 ..
60-
make all
61-
sudo make install
62-
```
63-
64-
For authentication, you can generate a certificate chain using the Open Quantum Safe project's fork of OpenSSL. We support Dilithium and FALCON certificates and keys generated by the `2021-08 snapshot` of the `OQS-OpenSSL_1_1_1-stable` branch of the fork. You can download it from the following link:
65-
66-
<https://github.com/open-quantum-safe/openssl/archive/refs/tags/OQS-OpenSSL_1_1_1-stable-snapshot-2021-08.tar.gz>
67-
68-
Once unpacked, this would be sufficient for building it:
69-
70-
```sh
71-
cd openssl-OQS-OpenSSL_1_1_1-stable-snapshot-2021-08/
72-
./config no-shared
73-
make all
74-
```
75-
76-
**Note**: installation is NOT required.
77-
78-
There is a script for generating a FALCON NIST Level 1 and FALCON NIST Level 5 certificate chain which can be found in the `wolfssl-examples` github repo at `pq/generate_falcon_chains.sh.` Please find detailed instructions on how to generate and verify the keys and certificates in `pq/README.md`. As a quick-start, simply copy `generate_falcon_chains.sh` into the `openssl-OQS-OpenSSL_1_1_1-stable-snapshot-2021-08` directory and execute the script. Similarly, we have `pq/generate_dilithum_chains.sh.` which generates Dilithium chains; one chain for each supported variant.
79-
80-
Once the certificates and keys are generated, copy them from the `openssl-OQS-OpenSSL_1_1_1-stable-snapshot-2021-08` directory to the `certs` directory of wolfssl.
81-
82-
### Building wolfSSL
83-
84-
Follow these steps to build wolfSSL with liboqs integration:
85-
86-
```sh
87-
cd wolfssl
88-
./autogen.sh (Not necessary if configure script is already present)
89-
./configure --with-liboqs
90-
make all
91-
```
55+
You will need the patched OQS OpenSSL fork in order to generate X.509
56+
certificates with post-quantum cryptographic keys and signatures. Instructions
57+
can be found at https://github.com/wolfSSL/osp/tree/master/oqs/README.md. If you
58+
do not want to use post-quantum signature schemes, you can skip the step of
59+
building OpenSSL.
9260

9361
### Making a Quantum Safe TLS Connection
9462

@@ -112,6 +80,10 @@ examples/client/client -v 4 -l TLS_AES_256_GCM_SHA384 \
11280

11381
You have just achieved a fully quantum-safe TLS 1.3 connection using AES-256 for symmetric encryption, the FALCON signature scheme for authentication and ECDHE hybridized with KYBER KEM for key establishment.
11482

83+
Further information about other post-quantum examples can be found at
84+
https://github.com/wolfSSL/wolfssl-examples/blob/master/pq/README.md.
85+
86+
11587
## Naming Convention Mappings Between wolfSSL and OQS's fork of OpenSSL
11688

11789
All the teams that made submission to the NIST PQC competition supported multiple levels of security as defined by NIST here: <https://csrc.nist.gov/projects/post-quantum-cryptography/post-quantum-cryptography-standardization/evaluation-criteria/security-(evaluation-criteria)>
@@ -130,6 +102,12 @@ DILITHIUM_LEVEL5 | DILITHIUM5
130102
DILITHIUM_AES_LEVEL2 | DILITHIUM2_AES
131103
DILITHIUM_AES_LEVEL3 | DILITHIUM3_AES
132104
DILITHIUM_AES_LEVEL5 | DILITHIUM5_AES
105+
SPHINCS_FAST_LEVEL1 | SPHINCS+-SHAKE256-128f-simple
106+
SPHINCS_FAST_LEVEL3 | SPHINCS+-SHAKE256-192f-simple
107+
SPHINCS_FAST_LEVEL5 | SPHINCS+-SHAKE256-256f-simple
108+
SPHINCS_SMALL_LEVEL1 | SPHINCS+-SHAKE256-128s-simple
109+
SPHINCS_SMALL_LEVEL3 | SPHINCS+-SHAKE256-192s-simple
110+
SPHINCS_SMALL_LEVEL5 | SPHINCS+-SHAKE256-256s-simple
133111

134112
Post-Quantum KEM Naming Convention:
135113

@@ -222,6 +200,12 @@ DILITHIUM_LEVEL5 | 1.3.6.1.4.1.2.267.7.8.7
222200
DILITHIUM_AES_LEVEL2 | 1.3.6.1.4.1.2.267.11.4.4
223201
DILITHIUM_AES_LEVEL3 | 1.3.6.1.4.1.2.267.11.6.5
224202
DILITHIUM_AES_LEVEL5 | 1.3.6.1.4.1.2.267.11.8.7
203+
SPHINCS_FAST_LEVEL1 | 1.3.9999.6.7.4
204+
SPHINCS_FAST_LEVEL3 | 1.3.9999.6.8.3
205+
SPHINCS_FAST_LEVEL5 | 1.3.9999.6.9.3
206+
SPHINCS_SMALL_LEVEL1 | 1.3.9999.6.7.10
207+
SPHINCS_SMALL_LEVEL3 | 1.3.9999.6.8.7
208+
SPHINCS_SMALL_LEVEL5 | 1.3.9999.6.9.7
225209

226210
## Cryptographic Artifact Sizes
227211

@@ -239,7 +223,12 @@ DILITHIUM_LEVEL5 | 2592 | 4864 | 4595
239223
DILITHIUM_AES_LEVEL2 | 1312 | 2528 | 2420
240224
DILITHIUM_AES_LEVEL3 | 1952 | 4000 | 3293
241225
DILITHIUM_AES_LEVEL5 | 2592 | 4864 | 4595
242-
226+
SPHINCS_FAST_LEVEL1 | 32 | 64 | 17088
227+
SPHINCS_FAST_LEVEL3 | 48 | 96 | 35664
228+
SPHINCS_FAST_LEVEL5 | 64 | 128 | 49856
229+
SPHINCS_SMALL_LEVEL1 | 32 | 64 | 7856
230+
SPHINCS_SMALL_LEVEL3 | 48 | 96 | 16224
231+
SPHINCS_SMALL_LEVEL5 | 64 | 128 | 29792
243232

244233
**Note**: FALCON has variable signature sizes.
245234

0 commit comments

Comments
 (0)