RK - 2021/22 - LDN10¶
Naloga na eucilnici | ucilnica.fri.uni-lj.si |
Navodila | rkvaje.lrk.si |
V tej nalogi boste naredili varnostno nadgradnjo pogovornega strežnika in odjemalca iz LDN7.
Odločili smo se, da bomo za višjo stopnjo varnosti poskrbeli s pomočjo protokola TLS in z uporabo samopodpisanih digitalnih certifikatov (seveda pa vse deluje tudi s "pravimi" certifikati):
- strežnik se mora odjemalcu predstaviti z digitalnim certifikatom;
- V polju Common Name strežnikovega certifikata naj se nahaja vrednost localhost
- tudi odjemalci se morajo predstaviti strežniku z digitalnim certifikatom
- Zgenerirajte digitalne certifikate za vsaj 3 odjemalce - uporabite različne vrednosti za Common Name.
- Vrednost Common Name naj se uporablja na strežniku za identifikacijo odjemalca.
Strežnik naj odjemalca identificira na podlagi vrednosti v polju Common Name.
Strežnik naj dovoli priklop le z uporabo protokola TLS 1.2 in kombinacijo naslednjih algoritmov ter dolžin ključev:
- ECDHE za izmenjavo ključev
- RSA
- AES z 128 bitnim ključem in uporabo GCM
- SHA256 za računanje HMAC
Takšen kandidat je le eden - ciphersuite.info
V jeziku Python (uporablja knjižnico OpenSSL) se za isti nabor uporablja niz "ECDHE-RSA-AES128-GCM-SHA256"
Za Python3 uporabite metodo na SSL kontekstu ctx.set_ciphers()
.
Oddaja naloge¶
Oddati morate datoteko ZIP (ne uporabljajte drugih kompresij!), ki vsebuje vašo implementacijo pogovornega strežnika in odjemalca. Oddana datoteka naj vsebuje tudi vse zgenerirane ključe.
Za pozitivno oceno: - mora delovati pošiljanje sporočil (vsaj javnih); - med odjemalci in strežnikom se morajo podatki prenašati po kriptirani povezavi; - za identifikacijo uporabnika se mora uporabiti vrednost polja Common Name iz njegovega digitalnega certifikata.