7.9 KiB
OpenSSL & liboqs & oqsprovider
About
Tento priečinok obsahuje detailný postup inštalácie potrebných knižníc na sprístupnenie PQ algoritmov v OpenSSL 3.2 a vzorové aplikácie klienta a serveru, ktoré využívajú PQ algoritmy pri štandardnej TCP/IP komunikácii s využitím protokolu TLS 1.3.
Building
Inštalované a testované na:
Platform | OS | compiler | cmake | ninja |
---|---|---|---|---|
Linux | Ubuntu 22.04.3 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64) |
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04) |
version 1.10.1 | version 3.22.1 |
Windows | Windows 10.0.22631 | gcc version 13.2.0 20240107 (MinGW-W64 x86_64-msvcrt-posix-seh) |
version 1.11.1 | version 3.28.1 |
Verzie testovaných knižníc:
OpenSSL | liboqs | oqs-provider |
---|---|---|
3.3.0 | 0.10.0 | 0.6.0* |
- experimentálne testované na Windows platforme, na Linuxe sa nám to nepodarilo otestovať (posledná funkčná verzia 0.5.4-dev)
❗ OpenSSL 3.2 je minimálna verzia OpenSSL, ktorá umožňuje využívať PQ algoritmy pri komunikácii ❗
LINUX
1. Inštalácia a konfigurácia OpenSSL 3.3
sudo apt install build-essential checkinstall -y
wget https://github.com/openssl/openssl/releases/download/openssl-3.3.0/openssl-3.3.0.tar.gz
tar -xvf openssl-3.3.0.tar.gz
cd openssl-3.3.0
./Configure
make
sudo make install
export PATH="/usr/local:$PATH"
export LD_LIBRARY_PATH="/usr/local/lib64:$PATH"
cd /etc/ld.so.conf.d/
sudo touch openssl-3.3.0.conf
echo "/usr/local/lib64" | sudo tee -a openssl-3.3.0.conf
sudo ldconfig -v
sudo apt install --reinstall ca-certificates
sudo update-ca-certificates -f
nano ~/.wgetrc
ca_certificate=/etc/ssl/certs/ca-certificates.crt
LIBOQS
sudo apt install astyle cmake ninja-build libssl-dev python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz python3-yaml valgrind -y
wget https://github.com/open-quantum-safe/liboqs/archive/refs/tags/0.10.0.tar.gz
tar -xvf 0.10.0.tar.gz
cd cd liboqs-0.10.0
mkdir build && cd build
cmake -GNinja .. -DOPENSSL_ROOT_DIR=/usr/local/lib64 -DOQS_ALGS_ENABLED=ALL
ninja
sudo ninja install
cd /etc/ld.so.conf.d/
sudo touch liboqs.conf
echo "/usr/local/lib" | sudo tee -a liboqs.conf
sudo ldconfig -v
OQS PROVIDER
wget https://github.com/open-quantum-safe/oqs-provider/archive/refs/tags/0.6.0.tar.gz
tar -xvf 0.6.0.tar.gz
cd oqs-provider-0.6.0
cmake -S . -B _build -DOPENSSL_ROOT_DIR=/usr/local/lib64 -Dliboqs_DIR=/usr/local -DBUILD_SHARED_LIBS=ON
cmake --build _build
sudo cmake --install _build
cd /usr/local/ssl/
sudo nano openssl.cnf
- po inštalácii pridáme do konfiguračného súboru openssl.cnf modul, ktorý permanentne aktivuje OQS provider a jeho funkcie pri používani OpenSSL
Note: Be sure to always activate the "default" provider
- v prípade potreby je možné konfiguračný súbor nahradiť súborom z tohto priečinku
[provider_sect]
default = default_sect
oqsprovider = oqsprovider_sect
[oqsprovider_sect]
activate = 1
- overiť funkčnosť knižníc môžeme príkazom
openssl list -providers
, ktorý by nám mal vrátiť výsledok:
Providers:
default
name: OpenSSL Default Provider
version: 3.2.0
status: active
oqsprovider
name: OpenSSL OQS Provider
version: 0.5.4-dev
status: active
WINDOWS
WinLibs gcc
- zo stránky WinLibs GCC stiahneme .zip archív, rozbalíme ho a skopírujeme celú zložku na nami určené miesto
- prejdeme do Settings-System-Advanced system settings-Environment Variables-System variables-Path-Edit a pridáme cestu k priečinku s prekladačom, napríklad:
C:\mingw64\bin\
- nastaviť cestu k prekladaču môžeme aj úpravou premennej v príkazovom riadku príkazom
SET PATH=\path\;%PATH%
, napríkladSET PATH=C:\mingw64\bin\;%PATH%
- v priečinku /bin/ sa nachádza aplikácia mingw32-make.exe, z ktorej si urobíme kópiu a premenujeme ju na make.exe
CMake
- ak z nejakého dôvodu nemôžeme použiť cmake priamo z WinLibs knižnice, tak ho môžeme stiahnuť z oficiálnej stránky - https://cmake.org/download/
OpenSSL (FireDaemon OpenSSL)
- v našom prípade sme využívali predkompilovanú verziu OpenSSL zo stránky FireDaemon OpenSSL
- stiahneme .zip archív, rozbalíme ho a všetky priečinky z priečinku x64 spolu s priečinkom ssl skopírujeme na nami vybrané miesto
- nastavíme cestu k aplikácii OpenSSL a konfiguračnému súboru prostredníctvom konzolových príkazov:
set OPENSSL_CONF=C:\openssl\ssl\openssl.cnf
set PATH=C:\openssl\bin;%PATH%
- z priečinku /bin/ skopírujeme súbory libssl.lib a libcrypto.lib do /lib/ priečinku nášho prekladača, v našom prípade teda do
C:\mingw64\lib\
LIBOQS
- stiahneme .zip súbor knižnice liboqs z oficiálneho GITu - liboqs
- stiahnutý súbor rozbalíme na nami zvolené miesto
- následne knižnicu nainštalujeme týmito príkazmi:
cd liboqs-main
mkdir build
cd build
cmake -GNinja .. -DOQS_ALGS_ENABLED=ALL
ninja
ninja install
- po dokončení inštalácie skopírujeme vygenerované priečinky include a lib do zložky s našim gcc prekladačom, teda do *D:\mingw64*
Poznámka: podľa nastavení systému môžu byť potrebné na vykonanie príkazu ninja install
administrátorské práva
OQS-PROVIDER
- stiahneme .zip súbor knižnice oqs-provider z oficiálneho GITu - oqsprovider
- stiahnutý súbor rozbalíme na nami vybrané miesto
- v súbore CMakeLists.txt pridáme na riadok 90 a 91 pred funkcie enable_testing() a add_subdirectory(test) symbol
#
, ktorým zakomentujeme a nezrealizujeme kompiláciu testov - pri kompilácii testu oqs_test_tlssig.c by nám vyskočila chyba, ktorá by spôsobila, že by celá kompilácia knižnice spadla
cmake -GNinja -DOPENSSL_ROOT_DIR=C:\openssl -S . -B _build
cd _build
ninja
ninja install
Poznámka: chybu v teste oqs_test_tlssig.c môžeme opraviť aj doplnením podmienenej kompilácie pre MINGW64 kompilátor a úpravou problematickej definície funkcie mkdir, z ktorej odstránime druhý argument
-
nastavíme cestu k vygenerovanému .DLL súboru:
Powershell -[Environment]::SetEnvironmentVariable("OPENSSL_MODULES", "C:\openssl\lib\ossl-modules\", "Machine")
cmd -setx OPENSSL_MODULES "C:\openssl\lib\ossl-modules\"
-
po inštalácii všetkých knižníc pridáme do konfiguračného súboru openssl.cnf modul, ktorý permanentne aktivuje OQS provider a jeho funkcie pri používani OpenSSL
-
Note: Be sure to always activate the "default" provider
-
v prípade potreby je možné konfiguračný súbor nahradiť súborom z tohto priečinku
[provider_sect]
default = default_sect
oqsprovider = oqsprovider_sect
[oqsprovider_sect]
activate = 1
- overiť funkčnosť knižníc môžeme príkazom
openssl list -providers
, ktorý by nám mal vrátiť výsledok:
Providers:
default
name: OpenSSL Default Provider
version: 3.2.0
status: active
oqsprovider
name: OpenSSL OQS Provider
version: 0.6.0
status: active