Both sides previous revisionPrevious revisionNext revision | Previous revision |
pfs [2023/09/25 10:29] – done katarina | pfs [2023/11/27 10:57] (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**, odnosno **perfect forward secrecy (PFS)**, je enkripcijsko svojstvo nekih protokola za razmjenu ključeva koje osigurava kratkotrajnu privatnu razmjenu ključeva među klijentima i poslužiteljima. PFS štiti podatke na transportnom sloju (SSL/TLS) i štiti podatke prethodnih sesija od buduće ranjivosti ključeva ili lozinki. | **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. Ključevi ne koriste prethodne podatke, što eliminira potrebu za dugotrajnim čuvanjem ključeva i uklanja ranjivost trenutnih podataka u slučaju da su prethodni ključevi kompromitirani. |
| |
Kako bi se postigla takva sigurnost, PFS koristi ključeve sesije automatski generirane pri svakom povezivanju, odnosno pri svakoj novoj poslanoj poruci. Ključevi ne koriste prethodne podatke, što eliminira potrebu za dugotrajnim čuvanjem ključeva i uklanja ranjivost trenutnih podataka u slučaju da su prethodni ključevi kompromitirani. | 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 |
| 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. |
PFS u potpunosti štiti od pasivnih napadača koji samo prikupljaju podatke ili kradu ključeve sa servera, ali ne i od aktivnih napadača koji napadaju kriptosustav u pozadini razmjene ključeva ili koriste klasični napad čovjeka u sredini (man-in-the-middle attack). PFS u pravilu koristi **Diffie-Hellman algoritam razmjene ključeva** kako bi spriječio čitanje prošlih podataka. 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 pomoću 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]}} | {{ ::signal_double_ratchet_dh.png?nolink&600 | Double Ratchet algoritam aplikacije Signal[2]}} |
| |
| |
===Izvori=== | ===Izvori=== |
[2] https://signal.org/docs/specifications/doubleratchet/\\ | [2] https://signal.org/docs/specifications/doubleratchet/\\ |
[3] Kriptografija i kriptoanaliza, predavanja, FER\\ | [3] Kriptografija i kriptoanaliza, predavanja, FER\\ |
[4] https://www.sectigo.com/resource-library/perfect-forward-secrecy | [4] https://www.sectigo.com/resource-library/perfect-forward-secrecy\\ |
| [5] https://www.cert.hr/wp-content/uploads/2019/04/NCERT-PUBDOC-2009-12-284.pdf |
| |