Teoreticky u asynchronní komunikace bychom PFS mohli dosáhnout pomocí nějakých krátkodobějších klíčů. I když, nevím, jestli bych tomu říkal PFS. A praktické využití je s otazníkem, můžeme být nuceni ten klíč například uložit na disk. Nebo jej uložíme do RAM a v případě restartu budeme po protistraně chtít zprávu poslat znovu, což ale otevírá prostor pro další útoky.
> PFC
Co je PFC? Myslel jsem si, že jde o překlep k „PFS“, ale vidím to tu opakovaně…
> A taky jedno z potenciálních míst útoku, když se útočníkovi podaří některé nabízené algoritmy z komunikace odstranit a donutí tak obě strany, aby se dohodly na nějaké slabé šifře, kterou umí útočník zlomit.
Určitě je dobré slabé ciphersuites pokazazovat, ale mohou znamenat menší riziko, než jak to může vypadat na první pohled. Aby se použila nějaká slabá šifra (přesněji ciphersuite), musí (aspoň při správně implementaci TLS) současně:
1. Klient tuto ciphersuite podporovat (a tedy poslat v seznamu podporovaných ciphersuites client hello).
2. Server tuto šifru podporovat.
3. Server tuto šifru musí vybrat, tedy ji musí upřednostnit před všemi ostatními cuphersuites poslanými prohlížečem.
Nabízí se tu ještě možnost, jak toto obejít. Útočník pozmění komunikaci (nejspíš zúží seznam podporovaných ciphersuites v client hello) a nechá klienta se serverem vyjednat slabší ciphersuite. To by ale mělo být odhaleno, pokud si dobře pamatuju, v závěru handshake při zprávě finished. Takže jediná šance, jak by mohl útočník provést downgrade (bez zneužití implementačních chyb a při podpoře a preferenci lepších ciphersuites) je udělat zásadní průlom již při handshake. To se teoreticky může stát, ale při pohledu na historické zranitelnosti, uspějete možná tak u export-grade ciphersuites.
Pokud je tedy podporována dostatečně velká škála moderních ciphersuites, pak nějaká archaická nemusí být s trochou štěstí rizikem. Tím nepopírám, že je best practice to vypnout, pokud to jde.
> Takže dnes se https používá 3 algoritmy:
Kromě podpisových algoritmů certifikátu (kterých se mimochodem může použít i více při jednom spojení), algoritmu pro výměnu klíčů a algoritmu pro samotné šifrování tu je ještě:
* Typicky mode of operation (pokud to má u dané šifry smysl).
* Autentizační algoritmus. Pomocí něj lze detekovat, že se někdo snaží komunikaci pozměnit. Když budu vědět, že posíláte šifrovaně příkaz k platbě, mám za určitých podmínek určité možnosti to různě upravit – změnit třeba částku nebo příjemce. Tomu ale brání právě autentizace (MAC). MAC je jako digitální podpis, ale symetrický. Někdy je autentizace již součástí mode of operation, což je například u AES-GCM a tuším obecně u všech ciphersuites v TLS 1.3.
* Pseudorandom function – nějaká hashovací funkce. Nechci teď hledat, kde se přesně používá, ani sem psát nějaké tušení.
* A to je snad všechno (lovím to z hlavy).