Go to file
2020-03-19 13:55:34 +01:00
certifikaty .. 2020-03-19 13:55:34 +01:00
kniznica .. 2020-03-19 13:55:34 +01:00
rs232_kanal .. 2020-03-19 13:55:34 +01:00
tcpip_kanal .. 2020-03-19 13:55:34 +01:00
wolfssl_hlavickove_subory/wolfssl .. 2020-03-19 13:55:34 +01:00
readme.txt - 2020-03-12 17:22:08 +01:00

Bakalarska praca                             
Meno studenta: Tomas Lukac                   
Veduci BP: prof. Ing. Milos Drutarovsky CSc. 
Skola: KEMT FEI TUKE                         
Datum poslednej upravy: 12.3.2020
----------------------------
Zoznam zdrojovych suborov
  certifikaty
    |__autorita_ecc.pem
    |__autorita_ecc.key
    |__autorita_rsa.pem
    |__autorita_rsa.key 
    |__server_ecc.pem
    |__server_ecc.key 
    |__server_rsa.pem
    |__server_rsa.key 
    |__klient_ecc.pem
    |__klient_ecc.key
    |__klient_rsa.pem
    |__klient_rsa.key 
  kniznica
    |__komunikacia.h
    |__komunikacia.c
    |__kryptografia.h
    |__kryptografia.c
    |__vstup.h
    |__vstup.c
  tcpip_kanal
    |__klient.c
    |__server.c
    |__Makefile
  rs232_kanal
    |__klient.c
    |__server.c
    |__Makefile

Opis aplikacie
  Realizuje zabezpecenu vymenu sprav medzi klientom a serverom a autentizaciu servera klientom vyuzitim kniznice WolfSSL. Ako prvu je 
  potrebne spustit aplikaciu na strane servera s prepinacom port s hodnotou, ktora urcuje ake bude cislo portu, na ktorom bude server
  cakar na prichadzajucu komunikaciu. Dalsim potrebnym prepinacom je bud -n (nacitanie certifikatov z adresaru /certifikaty) alebo 
  -g (vygenerovanie a podpis certifikatov pomocou certifikatu a kluca autority, ktore sa nachadzaju taktiez v adresari /certifikaty).
  Sukromne kluce a certifikaty su ulozene vo formate Privacy-Enhanced Mail (PEM). Nasledne je potrebne spustit aplikaciu na strane 
  klienta, ktora okrem predchadzajucich parametrov vyzaduje parameter pre ip adresu: -ip adresa. Po vytvoreni zabezpeceneho prenosoveho
  kanalu sa klient pokusi odoslat subor, ktoreho lokacia mu bola predana pri spusteni pomocou parametru -s subor. Pred samotnym poslanim
  klient najprv vyhotovi kontrolny sucet suboru, ktory odosle po zabezpecenom kanali serveru. Ten po prijati suboru overi ci sa zhoduje
  prijaty kontrolny sucet s jeho, ktory vyhotovil po prijati suboru. Ak pri prijati suboru nenastala chyba a kontrolne sucty sa zhoduju
  server oznami ze prijem bol uspesny a dalej caka na komunikaciu. Klientsky program po odoslani suboru ukonci svoju cinnost. 

Generovanie certifikatov RSA (OpenSSL)
  openssl genrsa -out autorita_rsa.key 2048
  openssl req -x509 -new -nodes -key autorita_rsa.key -sha256 -days 1825 -out autorita_rsa.pem
  openssl x509 -outform pem -in autorita_rsa.pem -out autorita_rsa.crt
  openssl genrsa -out server_rsa.key 2048
  openssl req -new -key server_rsa.key -out server_rsa.csr
  openssl x509 -req -in server_rsa.csr -CA autorita_rsa.pem -CAkey autorita_rsa.key -CAcreateserial -out server_rsa.pem -days 1825 -sha256 
  openssl x509 -outform pem -in server_rsa.pem -out server_rsa.crt
  openssl genrsa -out klient_rsa.key 2048
  openssl req -new -key klient_rsa.key -out klient_rsa.csr
  openssl x509 -req -in klient_rsa.csr -CA autorita_rsa.pem -CAkey autorita_rsa.key -CAcreateserial -out klient_rsa.pem -days 1825 -sha256 
  openssl pkcs12 -inkey klient_rsa.key -in klient_rsa.pem -export -out klient_rsa.pfx

Generovanie certifikatov ECC (OpenSSL)
  openssl ecparam -genkey -name prime256v1 -out autorita_ecc.key
  openssl req -x509 -new -nodes -key autorita_ecc.key -sha256 -days 1825 -out autorita_ecc.pem
  openssl x509 -outform pem -in autorita_ecc.pem -out autorita_ecc.crt
  openssl ecparam -genkey -name prime256v1 -out server_ecc.key
  openssl req -new -key server_ecc.key -out server_ecc.csr
  openssl x509 -req -in server_ecc.csr -CA autorita_ecc.pem -CAkey autorita_ecc.key -CAcreateserial -out server_ecc.pem -days 1825 -sha256 
  openssl x509 -outform pem -in server_ecc.pem -out server_ecc.crt
  openssl ecparam -genkey -name prime256v1 -out klient_ecc.key
  openssl req -new -key klient_ecc.key -out klient_ecc.csr
  openssl x509 -req -in klient_ecc.csr -CA autorita_ecc.pem -CAkey autorita_ecc.key -CAcreateserial -out klient_ecc.pem -days 1825 -sha256 
  openssl pkcs12 -inkey klient_ecc.key -in klient_ecc.pem -export -out klient_ecc.pfx


Navod na prelozenie a spustenie (Linux)
  1. prelozenie kniznice wolfssl s podporou OpenSSL (v adresari s kniznicou)
    ./configure --enable-opensslextra --enable-certgen --enable-keygen
    make
    sudo make install
  2. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
    make all
  3. spustenie
    ./server -port port -n rsa|ecc
    ./server -port port -g rsa|ecc
    ./klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
    ./klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor

Navod na prelozenie a spustenie (Windows)
  1. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
    mingw32-make all
  2. spustenie
    server -port port -n rsa|ecc
    server -port port -g rsa|ecc
    klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
    klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor

Zoznam DLL suborov potrebnych pre spustenie (Windows)
  1. vcruntime140.dll
  2. wolfssl.dll
  3. ws2_32.dll
  Poznamka:
    pre preklad na 64bit architekturach je nutne premennovat subory s koncovkami *_64.dll na nazvy DLLiek uvedenych vyssie
    a povodne DLLka premenovat na ine nazvy, najlepsie *_32.dll