This shows you the differences between two versions of the page.
uso:laboratoare:new:10-sec:concepts [2018/12/09 00:26] liza_elena.babu |
uso:laboratoare:new:10-sec:concepts [2019/12/18 19:15] (current) octavian.guzu [Prezentarea și securizarea datelor (encodare, criptare, hashing)] |
||
---|---|---|---|
Line 33: | Line 33: | ||
</note> | </note> | ||
- | {{ :uso:laboratoare:new:10-sec:image_md5.jpg?500 |}} | + | {{ :uso:laboratoare:new:10-sec:lab10_hash1.png?500 |}} |
- | ==== SSH și chile publice/private ==== | + | ==== SSH și cheile publice/private ==== |
- | În laboratoarele trecute, când foloseam SSH, era mereu nevoie să introducem parola utilizatorului pe care ne conectăm. Pentru a evită acest lucru (și a și securiza mașina virtuală de Linux) putem folosi o **pereche de chei** publice și private. Aceste chei sunt folosite de un algoritm de criptare asimetric (folosește 2 chei). Numim **E(m, k)** encriptarea unui mesaj cu cheia p și **D(m, k)** decriptarea unui mesaj cu cheia k, p = cheia publică, iar s = cheia secretă. Nu intrăm în concepte de matematică, ci doar vom explica simbolic cum funcționează un algoritm de criptare asimetric: | + | În laboratoarele trecute, când foloseam SSH, era mereu nevoie să introducem parola utilizatorului pe care ne conectăm. Pentru a evită acest lucru (și a și securiza mașina virtuală de Linux) putem folosi o **pereche de chei** publice și private. Aceste chei sunt folosite de un algoritm de criptare asimetric (folosește 2 chei). Numim **E(m, p)** criptarea unui mesaj cu cheia p și **D(m, s)** decriptarea unui mesaj cu cheia s, p = cheia publică, iar s = cheia secretă. Nu intrăm în concepte de matematică, ci doar vom explica simbolic cum funcționează un algoritm de criptare asimetric: |
1. Orice mesaj criptat cu cheia **publică** poate fi decriptat doar cu cheia **privată**: **D(E(m, p), s) = m** | 1. Orice mesaj criptat cu cheia **publică** poate fi decriptat doar cu cheia **privată**: **D(E(m, p), s) = m** | ||
Line 42: | Line 42: | ||
2. Orice mesaj criptat cu cheia **privată** poate fi decriptat doar cu cheia **publică**. **D(E(m, s), p) = m** | 2. Orice mesaj criptat cu cheia **privată** poate fi decriptat doar cu cheia **publică**. **D(E(m, s), p) = m** | ||
- | Revenind la **SSH**, userul **student** își generează o pereche de chei publice/private pe mașina sa locală și copiază **cheia publică** pe mașina virtuală. Când se autentifică pe aceasta cu userul student, primește un **challenge**: criptează-mi cu cheia privată a userului student mesajul ''Salut sunt student!''. Mașina locală criptează mesajul cu cheia privată și o trimite la server. Serverul decriptează mesajul și obține un mesaj valid. Trudy nu poate encripta același mesaj deoarece nu cunoaște cheia privată, și deci serverul va obține o decriptare invalida și nu îi va permite accesul. | + | Revenind la **SSH**, userul **student** își generează o pereche de chei publice/private pe mașina sa locală și copiază **cheia publică** pe mașina virtuală. Când se autentifică pe aceasta cu userul student, primește un **challenge**: criptează-mi cu cheia privată a userului student mesajul ''Salut sunt student!''. Mașina locală criptează mesajul cu cheia privată și o trimite la server. Serverul decriptează mesajul și obține un mesaj valid. Trudy nu poate cripta același mesaj deoarece nu cunoaște cheia privată, și deci serverul va obține o decriptare invalida și nu îi va permite accesul. |
| | ||
Line 67: | Line 67: | ||
Pentru baza de date de mai sus, parola lui Mihai a putut fi spartă, dar cea a lui Andrei nu. Andrei a avut o parola mai lungă, dar acest lucru nu asigură neapărat siguranța ei. | Pentru baza de date de mai sus, parola lui Mihai a putut fi spartă, dar cea a lui Andrei nu. Andrei a avut o parola mai lungă, dar acest lucru nu asigură neapărat siguranța ei. | ||
- | 3. O abordare finală ar fi să folosim un salt pentru hash-uirea parolei. Salt-ul este un string random de câteva caractere random ce se folosește în felul următor la construirea unui hash: Hash(salt | parolă), unde "|" înseamnă concatenare. Astfel, salt-ul previne atacul cu dicționar de mai sus deoarece este foarte puțin probabil ca hash-ul respectiv să existe într-un dicționar. Salt-ul se stochează în clar de date. | + | 3. O abordare finală ar fi să folosim un salt pentru hash-uirea parolei. Salt-ul este un string random de câteva caractere random ce se folosește în felul următor la construirea unui hash: Hash(salt | parolă), unde "|" înseamnă concatenare. Astfel, salt-ul previne atacul cu dicționar de mai sus deoarece este foarte puțin probabil ca hash-ul respectiv să existe într-un dicționar. Salt-ul se stochează în clar în baza de date. |
^ ^ Salt ^ Password ^ | ^ ^ Salt ^ Password ^ | ||
- | | Mihai | 3*6as0':+ | f98ad20d2f42dcd4e53a4d1f40f9c1a5 | | + | | Mihai | dfd454ddf | f98ad20d2f42dcd4e53a4d1f40f9c1a5 | |
- | Pentru Mihai, este: Hash(3*6as0':+mereverzi). | + | Pentru Mihai, este: Hash(dfd454ddfmereverzi). |
{{ :uso:laboratoare:new:10-sec:image_crack_2.png?900 |}} | {{ :uso:laboratoare:new:10-sec:image_crack_2.png?900 |}} | ||
Line 78: | Line 78: | ||
==== Password manager ==== | ==== Password manager ==== | ||
- | tot este recomandat avem parole lungi complexe. Diferite parole diferite tot așa. Pentru folosirea de parole sigure diferite este folosirea unui password manager precum [[https://www.lastpass.com/business-password-manager|acesta]]. Un password manager aduce următoarele avantaje: | + | Oriunde ne-am crea un nou cont, ne este recomandat să ne setăm o parolă cât mai lungă și mai complexă. Totodată este bine să avem câte o parolă diferită pentru fiecare cont pe care îl avem. Refolosirea unei parole nu înseamnă decât creșterea riscului de a ni se fura datele. Pentru folosirea de parole sigure și diferite este recomandată folosirea unui password manager precum [[https://www.lastpass.com/business-password-manager|acesta]]. Un password manager aduce următoarele avantaje: |
- | -Stochează el parolele pentru fiecare site, astfel nu vor trebui memorate vor fi folosite parole complexe | + | - Stochează el parolele pentru fiecare website, astfel utilizatorul nu trebuie să mai rețină parole complicate |
- | -Se share-ui anumite parole cu utilizatori | + | - Se pot partaja anumite parole cu alți utilizatori |
==== HTTP vs HTTPS ==== | ==== HTTP vs HTTPS ==== | ||
- | Protocolul de rețea **HTTP** aduce beneficii din multe puncte de vedere. Unul din dezavantajele lui este faptul că toate datele sunt trimise în clar. Astfel, un atacator precum Trudy va putea intercepta și înțelege un pachet HTTP. | + | Protocolul de rețea **HTTP** aduce beneficii din multe puncte de vedere. Unul dintre dezavantajele lui este faptul că toate datele sunt trimise în clar. Astfel, un atacator precum Trudy va putea intercepta și înțelege un pachet HTTP. |
- | Acest start suplimentar necesar de criptare este aduc de **HTTPS**, detaliat mai pe larg [[https://ro.wikipedia.org/wiki/HTTPS|aici]]. Funcționarea lui este asemănătoare cu ce am descris mai sus la SSH. | + | Acest start suplimentar necesar de criptare este adus de **HTTPS**, detaliat mai pe larg [[https://ro.wikipedia.org/wiki/HTTPS|aici]]. Funcționarea lui este asemănătoare cu ce am descris mai sus la SSH. |
- | {{:uso:laboratoare:new:10-sec:image_https.png?nolink&500|}} | + | {{ :uso:laboratoare:new:10-sec:image_https.png?500 |}} |