# MastersThesis ## Building ### LINUX - testované na Ubuntu 20.04.5 **1. Inštalácia potrebných nástrojov** ```sudo apt install cmake gcc libtool libssl-dev make ninja-build git -y``` **2. Stiahnutie Open Quantum Safe OpenSSL repozitáru** ```git clone --branch OQS-OpenSSL_1_1_1-stable https://github.com/open-quantum-safe/openssl.git``` **3. Stiahnutie a inštalácia liboqs** ``` git clone --branch main https://github.com/open-quantum-safe/liboqs.git cd liboqs mkdir build && cd build cmake -GNinja -DCMAKE_INSTALL_PREFIX=../../openssl/oqs .. ninja ninja install ``` **4. Build QS OpenSSL fork** ``` cd ./openssl ./Configure no-shared linux-x86_64 -DOQS_DEFAULT_GROUPS=\"kyber1024:p521_kyber1024:kyber90s1024:p521_kyber90s1024\" -lm make -j 1 sudo make install ``` - prepínač `-DOQS_DEFAULT_GROUPS` umožňuje meniť key exchange algoritmy, ktoré bude server podporovať - zoznam všetkých podporovaných algoritmov - https://github.com/open-quantum-safe/openssl#key-exchange **5. Vytvorenie CA kľúča a certifikátu** - v tomto príklade je *p256_dilithium2* hybridný algoritmus *dilithium2* s použitím P256 ECDH krivkou ``` cd ./openssl/apps ./openssl req -x509 -new -newkey p256_dilithium2 -keyout p256_dilithium2_CA.key -out p256_dilithium2_CA.crt -nodes -subj "/CN=oqstest CA" -days 365 -config ./openssl.cnf ``` **6. Vygenerovanie privátneho kľúča pre server** ``` ./openssl req -new -newkey p256_dilithium2 -keyout p256_dilithium2_srv.key -out p256_dilithium2_srv.csr -nodes -subj "/CN=localhost" -config ./openssl.cnf ``` **7. Vygenerovanie certifikátu s CA podpisom pre server** ``` ./openssl x509 -req -in p256_dilithium2_srv.csr -out p256_dilithium2_srv.crt -CA p256_dilithium2_CA.crt -CAkey p256_dilithium2_CA.key -CAcreateserial -days 365 ``` **8. Spustenie serveru a klienta** - oba programy je potrebné spustiť v samostatných oknách terminálu ``` ./openssl s_server -cert p256_dilithium2_srv.crt -key p256_dilithium2_srv.key -www -tls1_3 ./openssl s_client -groups kyber1024 -CAfile p256_dilithium2_CA.crt -connect localhost ``` ### WINDOWS - testované na Windows 10.0.19043 **1. Príprava prostredia** Perl - stiahnutie Perl-u strawberry-perl-5.32.1.1-64bit zo stránky https://strawberryperl.com/ Cmake - stihnutie CMake-u cmake-3.26.3-windows-x86_64 zo stránky https://cmake.org/download/ NMAKE - stiahnutie a inštalácia nástrojov Build Tools for Visual Studio 2022 zo stránky https://visualstudio.microsoft.com/downloads/ Pridanie premenných prostredia: ``` D:\Strawberry\perl\bin D:\Program Files\CMake\bin D:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.35.32215\bin\Hostx86\x86\nmake.exe ``` pozn. v našom prípade premenná nepomohla a bolo nutné ich nekonfigurovať manuálne v Powershelli príkazmi: ``` $env:path += ";D:\Program Files\cmake\bin" $env:path += ";d:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.35.32215\bin\Hostx86\x86\" ``` Pre správnu funkciu NMAKE je nutné spustiť súbor vcvarsall.bat
V našom prípade sa tento súbor nachádzal na adrese `d:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\` **2. Stiahnutie OpenSSL, Open Quantum Safe OpenSSL repozitáru a liboqs** OpenSSL - stiahnutie OpenSSL 1.1.1t zo stránky - https://www.openssl.org/source/
Stiahnutý súbor sme extrahovali do priečinka ProgramFiles a premenovali sme ho na openssl OpenSSL OQS - stiahnutie OQS OpenSSL repozitáru z GITu - https://github.com/open-quantum-safe/openssl/tree/OQS-OpenSSL_1_1_1-stable
Presun stiahnutých súborov do openssl priečinku Liboqs - stiahnutie súborov z GITu - https://github.com/open-quantum-safe/liboqs **3. Príprava liboqs** - v prípade chyby prístupu pri príkaze cmake alebo ninja je potrebné spustiť PowerShell ako administrátor - v našom prípade sme použili Administrator Developer PowerShell for VS 2022 ``` cd liboqs mkdir build cd build cmake -GNinja -DCMAKE_INSTALL_PREFIX='D:\Program Files\openssl\openssl-OQS-OpenSSL_1_1_1-stable\oqs' .. ninja ninja install ``` **4. Build QS OpenSSL fork** ``` cd ./openssl perl Configure VC-WIN64A no-shared nmake ``` pozn. chyba spôsobená chýbajúcim nalinkovaním Perlu a NMAKE-u ![err-code](https://ctrlv.sk/shots/2023/05/09/QHGf.png) **5. Príprava certifikátu, kľúčov a spustenie programov** Generovanie certifikátu, kľúčov a spustenie programov je rovnaké ako na platforme UNIX - viď. bod 5-8 ![final-result](https://ctrlv.sk/shots/2023/05/10/SzvJ.png) ## References [Open quantum safe OpenSSL 1.1.1t](https://github.com/open-quantum-safe/openssl)