| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| pfs [2023/11/29 10:42] – lss | pfs [2025/12/01 11:40] (current) – external edit 127.0.0.1 |
|---|
| ====Perfect Forward Secrecy (Savršena unaprijedna sigurnost)==== | ====Perfect Forward Secrecy (Savršena unaprijedna sigurnost)==== |
| **Savršena unaprijedna sigurnost** (//Perfect Forward Secrecy//, PFS) enkripcijsko je svojstvo nekih protokola za razmjenu ključeva koje osigurava razmjenu kratkotrajnih privatnih ključeva među klijentima i poslužiteljima. Osim što im je kratak rok trajanja, ključevi se automatski generiraju pri svakom povezivanju klijenta i poslužitelja. Ako se PFS koristi pri slanju poruka, može se generirati novi ključ za svaku poslanu poruku. Na taj način, čak i ako netko dospije do jednog od korištenih ključeva, ima vrlo malo podataka koje može dekriptirati. | **Savršena unaprijedna sigurnost** (//Perfect Forward Secrecy//, PFS) enkripcijsko je svojstvo nekih protokola za razmjenu ključeva koje osigurava razmjenu kratkotrajnih ključeva među klijentima i poslužiteljima. Osim što im je kratak rok trajanja, ključevi se automatski generiraju pri svakom povezivanju klijenta i poslužitelja. Ako se PFS koristi pri slanju poruka, može se generirati novi ključ za svaku poslanu poruku. Tako, čak i ako dođe do kompromitacije privatnog ključa na poslužitelju, napadač neće moći dešifrirati prošle poruke. |
| |
| Zamislimo da napadač dugo vremena presreće mrežni promet. Nakon toga uspije i kompromitirati server i dođe do enkripcijskog ključa. Takav napadač potencijalno može izvesti napad čovjeka u sredini (engl. man-in-the-middle attack) i dešifrirati budući promet, ali ako se koristio protokol sa svojstvom PFS-a neće moći | Zamislimo da napadač dugo vremena presreće mrežni promet između korisnika i web aplikacije. Nakon toga uspije i kompromitirati poslužitelj na kojem se web aplikacija nalazi i dođe do enkripcijskog ključa. Takav napadač potencijalno može izvesti napad čovjeka u sredini (engl. man-in-the-middle attack) i dešifrirati budući promet, ali ako se koristio protokol sa svojstvom PFS-a neće moći |
| dešifrirati promet koji je presreo prije nego što je došao do enkripcijskog ključa. PFS u pravilu koristi **Diffie-Hellman algoritam razmjene ključeva** kako bi spriječio čitanje prošlih podataka. [[https://www.cert.hr/wp-content/uploads/2019/04/NCERT-PUBDOC-2009-12-284.pdf|Diffie-Hellman]] za potpis najčešće koristi statični potpisni ključ. Ako napadač uspješno dođe do ključa, može impersonirati server u komunikaciji s klijentom (i obrnuto) te izvesti klasični napad čovjeka u sredini. | dešifrirati promet koji je presreo prije nego što je došao do enkripcijskog ključa. PFS u pravilu koristi **Diffie-Hellman algoritam razmjene ključeva** kako bi spriječio čitanje prošlih podataka. [[https://www.cert.hr/wp-content/uploads/2019/04/NCERT-PUBDOC-2009-12-284.pdf|Diffie-Hellman]] za potpis najčešće koristi statični potpisni ključ. Ako napadač uspješno dođe do ključa, može impersonirati server u komunikaciji s klijentom (i obrnuto) te izvesti klasični napad čovjeka u sredini. |
| {{ ::dh_mitm_attack.png?nolink&600 | Napad čovjeka u sredini na Diffie-Hellman razmjenu ključeva}} | {{ ::dh_mitm_attack.png?nolink&600 | Napad čovjeka u sredini na Diffie-Hellman razmjenu ključeva}} |
| |
| PFS je prisutan u implementacijama mnogih protokola, kao npr. u SSL protokolu, OMEMO ekstenziji XMPP protokola ili u određenim postavkama IPSec-a. OpenSSL PFS postiže pomoću eliptičnog Diffie-Hellman algoritma, a protokol aplikacije za razmjenu poruka Signal koristi **Double Ratchet algoritam** kako bi postigao PFS. | PFS je prisutan u implementacijama mnogih protokola, kao npr. u SSL protokolu, OMEMO ekstenziji XMPP protokola ili u određenim postavkama IPSec-a. OpenSSL PFS postiže uz pomoć eliptičnog Diffie-Hellman algoritma, a protokol aplikacije za razmjenu poruka Signal koristi **Double Ratchet algoritam** kako bi postigao PFS. |
| {{ ::signal_double_ratchet_dh.png?nolink&600 | Double Ratchet algoritam aplikacije Signal[2]}} | |
| |
| | |