class: center, middle # Dětský ilustrovaný průvodce světem
TCP handshake --- # Agenda 1. Client Server Handshake 2. TCP Full Proxy 3. SYN Flood útoky 3. The End. --- class: center, middle # 1. Client Server Handshake --- # TCP Handshake jako posílání obálek .lc[ TCP handshake je jako když si chceš být jistý, že tvůj kamarád ví, že mu chceš poslat dopis a že on je připraven ti odpovědět. ] .rc[ .full[  ] ] --- # SYN Packet .lc[ Nejprve napíšeš zprávu, že chceš začít posílat dopisy, a pošleš ji v obálce kamarádovi. To je jako když počítač A pošle synchronizační signál (SYN) počítači B. ] .rc[ .full[  ] ] --- # SYN-ACK .lc[ Tvůj kamarád obálku otevře, přečte si tvou zprávu a vloží do obálky nový papírek, kde napíše
"Dobře, jsem připraven dostávat tvé dopisy."
A přidá ještě malý lístek, kde je napsáno:
"Také bych ti chtěl posílat dopisy, souhlasíš?"
Tuto obálku ti pošle zpět. To je jako když počítač B odpoví s potvrzovacím signálem (ACK) a zároveň pošle svůj vlastní synchronizační signál (SYN) zpět počítači A. ] .rc[ .full[  ] ] --- # ACK .lc[ Když dostaneš obálku zpět, vložíš do ní nový lístek, kde je napsáno:
"Dobře, dostal jsem tvůj lístek a souhlasím, že si budeme posílat dopisy."
Tento lístek pošleš zpět kamarádovi. To znamená, že jsi potvrdil jeho synchronizační signál (SYN) a oba nyní víte, že jste připraveni a můžete si bezpečně posílat dopisy. ] .rc[ .full[  ] ] --- class: center, middle # SYN - SYN-ACK - ACK
*"Tento proces zajišťuje, že oba, ty i tvůj kamarád, víte, že jste připraveni komunikovat a že vaše zprávy dorazí správně tam, kam mají."* .right[ Dalajláma ] --- class: center, middle # 2. TCP Full Proxy --- class: center, middle # Teď to bude trochu náročnější --- # Client - Proxy, krok 1 .lc[ Použití TCP Full proxy je jako kdybys používal ke komunikaci speciální poštovní schránku:
Napíšeš zprávu a vložíš ji do obálky. Na obálku napíšeš "Pro moji zvláštní schránku" (to je SYN packet od počítače A) a hodíš ji do své poštovní schránky. ] .rc[ .full[  ] ] --- # Client - Proxy, krok 2 .lc[ Pošťák, který reprezentuje full TCP proxy, vezme obálku a místo toho, aby ji poslal přímo tvému kamarádovi, rozhodne se nejdřív ověřit, že jsi opravdu ty, kdo posílá zprávu, a že schránka je připravená přijímat tvoje dopisy. To udělá tak, že ti pošle zpět obálku s potvrzením a žádostí o potvrzení (to je SYN-ACK packet z proxy zpět k počítači A).
Ty obálku otevřeš, vidíš potvrzení, a pošleš zpět další obálku, která říká "Ano, to jsem já, a jsem připraven posílat další zprávy." (to je ACK packet od počítače A). Tím je handshake s proxy kompletní. ] .rc[ .full[  ] ] --- # Proxy - server , krok 1 .lc[ Pošťák (proxy) nyní ví, že jsi ty a že jsi připraven. Poté, co si proxy ověří toto spojení s tebou, začne s procesem navázání spojení s tvým kamarádem. Vytvoří novou obálku s tvojí původní zprávou a adresou tvého kamaráda (to je SYN packet od proxy k počítači B) a pošle ji. ] .rc[ .full[  ] ] --- # Proxy - server , krok 2 .lc[ Tvůj kamarád obálku otevře, zjistí, že jsi to ty, kdo chce komunikovat, a pošle zpět obálku s potvrzením a žádostí o potvrzení (SYN-ACK packet od počítače B).
Pošťák (proxy) tuto obálku přijme, potvrdí, že komunikace s tvým kamarádem je nyní také ověřená a bezpečná, můžete si prostřednictvím proxy vyměňovat data. ] .rc[ .full[  ] ] --- # Rainbows and Unicorns .lc[ Teď, když jsou obě spojení – jedno mezi tebou a proxy a druhé mezi proxy a tvým kamarádem – navázána a potvrzena, můžete bezpečně začít posílat zprávy tam a zpět. Full TCP proxy tedy nejdříve zajistí, že je spojení mezi tebou a schránkou stabilní, a teprve pak začne proces, aby se ujistila, že je stabilní i spojení mezi schránkou a tvým retardovaným kamarádem. ] .rc[ .full[  ] ] --- class: center, middle # 3. SYN Flood --- class: center, middle # Pojedeme rychle, ať je nám všem špatně. --- # SYN Flood .lc[ Při útoku zvaném SYN flood si představ, že zlobivý kluk z ulice chce způsobit zmatek. Takže posílá hromady prázdných obálek do tvé schránky, ale na každé z nich je jiná adresa, nebo dokonce žádná adresa vůbec. Tvá poštovní schránka se snaží odpovědět na všechny tyto obálky, aby zjistila, kdo je poslal a jestli chtějí opravdu poslat dopis. Protože chce být milá a věnovat pozornost každému, kdo chce komunikovat, začne se velmi snažit odpovídat na všechny tyto falešné obálky. ] .rc[ .full[  ] ] --- # SYN Flood .lc[ A protože je schránka tak zaneprázdněná odpovídáním na všechny tyto obálky, když ty přijdeš a chceš poslat skutečný dopis svému kamarádovi, schránka už nemá čas ani prostor, aby se tobě věnovala. Takže tvůj opravdový dopis se nikdy nedostane k tvému kamarádovi, a ty se divíš, proč ti nikdy neodpovídá.
Při tomto útoku zlobivý kluk nikdy opravdu nechtěl poslat skutečné dopisy, chtěl jen zabrat schránku, aby nemohla pracovat jako má. Tvá schránka (proxy) je tak zaneprázdněná, že se nemůže starat o skutečné dopisy, a tvůj kamarád (počítač B) se ani nedozví, že jsi chtěl komunikovat. ] .rc[ .full[  ] ] --- # SYN Cookies .lc[ Když teď přijde obálka adresovaná "Pro moji zvláštní schránku", schránka do ní nevkládá odpověď jako obvykle, ale místo toho dá do obálky kouzelnou sušenku. Každá sušenka má speciální kouzelné číslo, které si pošťák pamatuje. Tohle číslo je zároveň kódem, který říká, jak najít cestu zpět k poštovní schránce, pokud ten, kdo poslal obálku, je opravdový kamarád a ne zlobivý kluk. ] .rc[ .full[  ] ] --- # SYN Cookies .lc[ Když ti přijde dopis s kouzelnou sušenkou tak pošleš zpět odpověd, do které zase vložíš kouzelnou sušenky. Možná si trošičku ukousneš, ale ne moc. Schránka pak vidí kouzelnou sušenku, rozpozná speciální kouzelné číslo a ví, že tvou zprávu může předat tvému retardovanému kamarádovi.
Pokud ale obálka pochází od zlobivého kluka, nikdy se sušenka nevrátí, protože zlobivý kluk neví, jak kouzelné číslo správně použít.
Díky kouzelným sušenkám schránka nemusí plýtvat časem a může se soustředit na doručování skutečných dopisů od opravdových kamarádů, jako jsi ty. ] .rc[ .full[  ] ] --- # Shrnutí .center[
## SYN, SYN-ACK, ACK packety jsou vždy jen mezi jedním z kamarádů a kouzelnou schránkou.
Schránka NIKDY nepropouští SYN packety rovnou k tvému kamarádovi.
SYN Flood útoky končí na proxy. ] --- class: center, middle # THE END.