<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.multimediaexpo.cz/mmecz/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
		<id>http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=SYN-cookies</id>
		<title>SYN-cookies - Historie editací</title>
		<link rel="self" type="application/atom+xml" href="http://www.multimediaexpo.cz/mmecz/index.php?action=history&amp;feed=atom&amp;title=SYN-cookies"/>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=SYN-cookies&amp;action=history"/>
		<updated>2026-07-28T07:50:27Z</updated>
		<subtitle>Historie editací této stránky</subtitle>
		<generator>MediaWiki 1.16.5</generator>

	<entry>
		<id>http://www.multimediaexpo.cz/mmecz/index.php?title=SYN-cookies&amp;diff=2847044&amp;oldid=prev</id>
		<title>Sysop: + Naše Encyklopedie dnes čelí DDOS útoku !</title>
		<link rel="alternate" type="text/html" href="http://www.multimediaexpo.cz/mmecz/index.php?title=SYN-cookies&amp;diff=2847044&amp;oldid=prev"/>
				<updated>2024-05-16T12:23:15Z</updated>
		
		<summary type="html">&lt;p&gt;+ Naše Encyklopedie dnes čelí DDOS útoku !&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''SYN cookies''' je klíčový prvek obrany proti útoku záplavou paketů protokolu [[Transmission Control Protocol|TCP]] s příznakem SYN, pro který se používá anglické označení [[SYN flood]]. Útok spočívá v zaslání velkého množství žádostí o navázání spojení, které je nutno jistou dobu uchovávat (ve&amp;amp;nbsp;frontě). Tyto žádosti však nebudou dovedeny do konce, čímž dojde k zaplnění oné fronty a odmítání dalších, i korektních žádostí.&lt;br /&gt;
&lt;br /&gt;
Hlavním tvůrcem technologie SYN-cookies je [[Daniel J. Bernstein]], který ji definoval jako „částečný výběr počátečního čísla sekvence paketu [[Transmission Control Protocol|TCP]]“.&lt;br /&gt;
&lt;br /&gt;
V případě použití SYN-cookies server po obdržení žádosti o navázání spojení (paketu s příznakem SYN) pošle klientovi odpověď a onu žádost ihned odstraní z fronty. Do odpovědi přitom nevložil sekvenční číslo zcela náhodné, ale vygenerované podle daných pravidel. Obdrží-li server od klienta potvrzení odpovědi (paket s příznaky SYN a ACK), je podle čísla sekvence schopen zpětně odvodit, zda se jedná o korektní paket, a pokud ano, je spojení navázáno.&lt;br /&gt;
&lt;br /&gt;
== Implementace ==&lt;br /&gt;
Při navazování TCP-spojení klient pošle serveru TCP-paket s příznakem SYN. Jako odpověď server pošle klientovi TCP-paket s příznaky SYN a ACK. Jak je možné se dočíst u [[Transmission Control Protocol|TCP protokolu]], jedna z částí paketu se nazývá sekvenční číslo (''sequence number''), kterého se v protokolu TCP užívá k seřazení paketů po průchodu sítí. Podle specifikace TCP může jedna ze stran určit číslo první sekvence, což druhá strana musí respektovat. Takže SYN-cookies jsou počáteční čísla sekvencí '''n''', která jsou pečlivě vybírána podle následujících pravidel:&lt;br /&gt;
&lt;br /&gt;
* Nechť '''t''' je čítač zvyšující se každých 64 sekund.&lt;br /&gt;
* Nechť '''m''' je maximální velikost segmentu, kterou by měl server uchovávat v jednom záznamu fronty SYN.&lt;br /&gt;
* Nechť '''s''' je čtyřiadvacetibitový výsledek tajné, kryptografické funkce počítaný přes [[IP adresa|IP adresu]] serveru i klienta, číslo portu a hodnotu čítače '''t'''.&lt;br /&gt;
&lt;br /&gt;
Takže počáteční TCP sekvence neboli SYN-cookie se počítá například takto:&lt;br /&gt;
* Prvních 5 bitů: '''t''' [[Zbytek po dělení|mod]] 32.&lt;br /&gt;
* Další 3 bity: zakódovaná hodnota reprezentující číslo '''m'''.&lt;br /&gt;
* Zbývajících 24 bitů: '''s'''.&lt;br /&gt;
&lt;br /&gt;
''(Poznámka: Protože '''m''' se kóduje na tři bity, server může použít jen 8 jedinečných hodnot '''m'''.)''&lt;br /&gt;
&lt;br /&gt;
Server zvolil počáteční číslo TCP-sekvence a klient je povinen podle specifikace protokolu TCP toto respektovat. Paket s příznaky SYN a ACK přijde od klienta s číslem sekvence ''n+1''. Server tedy odečte jedničku a má číslo ''sušenky'', kterou poslal klientovi. Pak provede tyto operace:&lt;br /&gt;
* Zkontroluje hodnotu '''t''', aby zjistil, zda již nevypršel časový limit.&lt;br /&gt;
* Přepočítá '''s''', aby zjistil, zda je SYN-cookie platná.&lt;br /&gt;
* Zjistí hodnotu '''m''' z tříbitového kódu v SYN-cookie, což mu pomůže rekonstruovat záznam ve frontě SYN.&lt;br /&gt;
&lt;br /&gt;
Pokud je vše v pořádku, pokračuje se v navazování podle obvyklého scénáře: pošle klientovi TCP paket s příznakem ACK.&lt;br /&gt;
&lt;br /&gt;
== Výhody ==&lt;br /&gt;
Využití metody SYN-cookies neporušuje specifikace a je kompatibilní se všemi implementacemi [[Transmission Control Protocol|TCP protokolu]].&lt;br /&gt;
&lt;br /&gt;
== Nevýhody ==&lt;br /&gt;
Při používání SYN-cookies je třeba mít na paměti tyto dvě věci:&lt;br /&gt;
* Číslo '''m''' je jen tříbitové, tedy jde o celé číslo 0 ÷ 7 (takže se skýtá jen osm možností)&lt;br /&gt;
* Paket SYN specifikuje též nastavení spojení (například větší datová okna), ale tato nastavení jsou zapomenuta, neboť pakety se neukládají&lt;br /&gt;
&lt;br /&gt;
Tato omezení je třeba brát jako jistou míru sub-optimality. Jejich efekt je klienty postřehnut jen vzácně. Ale je-li server bez technologie SYN-cookies vystaven útoku, další pokusy o spojení jsou zamítnuty a to je dosti protivné. Zachování dosažitelnosti služby za&amp;amp;nbsp;cenu ztráty ''pár tajemných vychytávek'' je tedy rozumný kompromis.&lt;br /&gt;
&lt;br /&gt;
== Historie ==&lt;br /&gt;
Techniku vytvořil Daniel J. Bernstein a [[Eric Schenk]] v září roku 1996. První implementaci provedl o měsíc později [[Jeff Weisberg]] na operačním systém [[Solaris (operační systém)|SunOS]]. &lt;br /&gt;
&lt;br /&gt;
Eric Schenk uvolnil implementaci pro [[Linux (jádro)|jádro Linuxu]] v únoru 1997 (současná implementace je řízena pomocí &amp;lt;code&amp;gt;net.ipv4.tcp_syncookies&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Článek z Wikipedie}}&lt;br /&gt;
[[Kategorie:Počítačová bezpečnost]]&lt;br /&gt;
[[Kategorie:Internetové protokoly]]&lt;/div&gt;</summary>
		<author><name>Sysop</name></author>	</entry>

	</feed>