Hlavní navigace

Hlasovací systémy na Internetu

Jiří Lahvička

Hlasovací systémy na Internetu vídáme na každém kroku a přestože jde většinou o nevinné ankety, jejich autoři se obvykle snaží do nich zabudovat určitou míru ochrany před zmanipulováním v podobě vícenásobného hlasování. Různé možnosti a postupy prolamování i kontroly proti němu podrobně popisuje Jiří Lahvička.

Co se stane, když narazí všeprobíjející střela na neprůstřelný pancíř? Logik odpoví, že otázka nemá smysl, protože zadání obsahuje dvě navzájem neslučitelné části. Na Internetu zní tato klasická otázka trošku jinak – co se stane, když narazí všeho schopný podvodník s dobrými znalostmi Internetu na neprůstřelný hlasovací systém (ať už je řeč o anketách na iDnes, hodnocení stránek ve Zlaté zmiji nebo veřejném hlasování pro soutěžící Miss Internet)? Na tuto otázku se bude snažit odpovědět následující článek, který je psán jak z pohledu těch, kdo hlasovací systémy vytvářejí, tak z pohledu těch, kdo se je více či méně úspěšně snaží nabourat.

Základním problémem při tvorbě každého hlasovacího systému je anonymita Internetu – je velmi obtížné od sebe rozlišit jeho jednotlivé uživatele. Přesto má autor hlasovacího systému o hlasujícím k dispozici řadu údajů, které ho více či méně jednoznačně identifikují. K těmto údajům patří především cookies, IP adresa, obsah HTTP hlavičky user-agent a u některých systémů i e-mailová adresa.

Cookies jsou jednoznačně nejspolehlivější nástroj identifikace – v okamžiku, kdy si hlasující stáhne ze serveru první stránku např. s hlasovacím formulářem nebo anketou, server současně s touto stránkou odešle uživateli cookie – kousek informace (např. dlouhé náhodné číslo), které prohlížeč odesílá spolu s jakýmkoliv dalším požadavkem stejnému serveru a které hlasujícího celkem jednoznačně identifikuje (malé problémy mohou být pouze s anonymními uživateli v internetových kavárnách, kde má více návštěvníků stejné cookies apod.). Velkou nevýhodou cookies je však to, že cca 10% uživatelů je má vypnuté (a mezi těmi, kdo se snaží podvádět, je tento podíl výrazně vyšší :-), takže identifikace selhává. Částečným řešením je povolit hlasování pouze těm, kdo mají cookies zapnuté (současně s hlasovacím formulářem se odešle kontrolní cookie a kontroluje se, zda je odeslána současně s požadavkem na skript, který hlasovací formulář zpracovává). Toto zabezpečení se dá obejít tak, že se cookies v prohlížeči nevypínají, ale po každém hlasování smažou (cookies jsou fyzicky uloženy na disku jako textový soubor) a restartuje se prohlížeč.

Další možností, jak identifikovat uživatele, je jeho IP adresa. Problém je ovšem v tom, že na jednu stranu může mít velké množství uživatelů přistupujících přes proxy server společnou IP adresu, na druhou stranu uživatelé připojení z domova dostanou při každém připojení dynamicky přidělenou IP adresu novou. Přes jednoduchost obejití cookies a nejednoznačnost IP adresy je většina hlasovacích systémů v českém Internetu založena právě na těchto dvou kritériích – typický algoritmus vypadá tak, že nepovolí vícenásobné hlasování uživateli se stejným cookie a nepovolí více hlasů z jedné IP adresy v daném časovém intervalu (řekněme 15–60 minut). Jinak řečeno, většinu hlasovacích systémů (včetně např. Zlaté zmije) může i relativní laik nabourat systematickým mazáním cookies a buď vždy čekáním, až uplyne časový interval, ve kterém není povoleno více hlasů z jedné IP adresy, nebo změnou IP adresy v případě připojení z domova.

Dalším rozlišujícím znakem může být obsah HTTP hlavičky user-agent, která udává verzi použitého operačního systému a prohlížeče (např. Mozilla/3.01 (Win16; I)). Spolu s upraveným doménovým jménem (viz předcházející odstavec) už může sloužit k relativně přesné identifikaci. Těžko lze předpokládat, že si někdo bude instalovat velké množství navzájem různých prohlížečů, falšování této hlavičky přitom vyžaduje znalosti, kterými rozhodně nedisponuje běžný uživatel Internetu.

K větší bezpečnosti systému (i když k zdlouhavějšímu hlasování) přispěje i hlasování prostřednictvím e-mailové adresy (příkladem je hlasování v Miss Internet). Funguje zpravidla tak, že hlasující zadá svůj e-mail, na ten mu přijde potvrzující kód, který je poté potřeba zadat do nějakého dalšího formuláře – teprve poté je hlasování potvrzeno. Samozřejmě není možné hlasovat vícekrát z jednoho e-mailu. Obejít toto zabezpečení lze samozřejmě jednoduše – stačí si zakládat nové a nové schránky na některém z mnoha českých a zahraničních freemailů (je to lepší, než když si správce serveru vytvoří řadu schránek pod svou doménou, neboť tato druhá možnost, ač časově méně náročná, neposkytuje zdaleka takovou anonymitu). Část e-mailu za zavináčem se nicméně dá využít tvůrci hlasovacího systému jako další z řady indicií, které hlasujícího identifikují – většina podvodníků povede útok proti systému z maximálně několika freemailů.

Jak by tedy mohl vypadat algoritmus, který by na základě předchozích údajů dokázal s vysokou pravděpodobností určit, zda hlas je podvod či nikoli? Za prvé je dobré používat potvrzení prostřednictvím e-mailu, které podvodníkům značně ztíží práci. O každém hlasu se ukládá cookie hlasujícího, IP adresa, HTTP hlavička user-agent, e-mail, ze kterého hlas přišel a čas hlasování. Vyloučeny jsou pochopitelně hlasy se stejným cookie nebo e-mailem. Nyní je potřeba spočítat, jaké je zastoupení IP adresy, ze které přišel právě zpracovávaný hlas, mezi hlasy pro danou variantu (soutěžící, hodnocenou webovou stránku, anketní odpověď atd.) a mezi hlasy pro všechny ostatní varianty. Čím vyšší je zastoupení dané IP adresy (lze použít i upravené doménové jméno – viz výše) u dané varianty vůči zastoupení u ostatních variant, tím je hlas podezřelejší (předpokládá se, že podvodník bude mít zájem zvýhodnit svým hlasováním jednu variantu vůči ostatním). Podobně lze podezřelost určit i na základě hlavičky user-agent a na základě části e-mailu za zavináčem. Porovnáváme-li právě zpracovávaný hlas se všemi předchozími hlasy pro danou variantu, vždy spočteme celkovou podezřelost tak, že sečteme dříve vypočtené relevantní podezřelosti (tj. shoduje-li se u porovnávaných hlasů IP adresa, přičteme podezřelost na základě IP adresy atd.) a na základě této celkové podezřelosti stanovíme časový rozdíl, který musí mezi hlasy být, aby byl hlas přijat. Hlas je přijat tehdy, když dopadne příznivě porovnávání se všemi předchozími hlasy. Nejsložitější je stanovení vzorce pro časový rozdíl – velmi záleží na tom, kolik je variant, pro které se dá hlasovat, kolik je celkem hlasujících atd.

Spolehlivost zde popsaného systému je podle mých zkušeností (analogický, i když ne zcela totožný, je použit pro Miss Internet) velmi vysoká, samozřejmě ne stoprocentní; pokud má být jakýkoliv větší podvod maximálně ztížen, je dobré algoritmus používat pouze pro vytipování sporných hlasů, které pak projdou manuální kontrolou. Na úvaze tvůrce je pak tvrdost systému, která je ovlivněna způsobem stanovení už akceptovatelného časového rozdílu mezi hlasy.

Podle posledních několika odstavců by to mohlo vypadat, že podvodníci proti dostatečně propracovanému systému nemají šanci, bohužel (nebo bohudík – záleží na úhlu pohledu) opak je pravdou. Proti člověku, který bude obcházet jednotlivé internetové kavárny a své známé připojené díky různým nabídkám Internetu zdarma a hlasovat prostřednictvím e-mailové schránky zřízemé pokaždé na jiném freemailu, nemá sebelepší hlasovací systém šanci. Podvodům nejde nikdy zcela zamezit, je však možné je udělat natolik nákladné (časově, finančně, znalostně), že se nikomu nevyplatí. Odpověď na otázku z úvodu – co se stane, když narazí všeho schopný podvodník s dobrými znalostmi internetu na neprůstřelný hlasovací systém – zní tedy takto: dotyčný podvodník poté, co zjistí, že na oklamání systému by musel vynaložit energii větší než malou, přičemž přínosy z uskutečněného podvodu jsou menší než velké, usoudí, že dokáže svůj volný čas trávit produktivněji a bude se bavit jinak – aspoň v to jako člověk stojící o něco častěji na straně barikády tvůrců takových systémů upřímně doufám :-).

Jiří Lahvička

Našli jste v článku chybu?

12. 6. 2000 10:45

Petr Vostry (neregistrovaný)
Osobne povazuji clanek taktez za velice prinosny, ale chybi mi v nem jedna vec - zamyslel se nekdo nad tim, jak bude reagovat na ankety potvrzovane via mail prosty uzivatel internetu, ktery sedi nekde v kavarne a ma ucet na freemailu bez moznosti POP/IMAP?

8. 6. 2000 22:56

PaJaSoft (neregistrovaný)
Zdravim,

ono je to s tema TAGama jeste trosku jinak, nedalo mi to a podival jsem se do HTML kodu a co nevidim...:

kdyz dam <IRONIE>...</IRONIE>, pak se TAG v NS (4.72) zobrazi, ale kdyz to napisu takto: <ironie>...</ironie>, pak to NS nezobrazi... - HTML TAGy nikdy nemely byt case-sensitive, ale koukam, ze renderery na to asi kaslou...

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Změny v cestovních náhradách 2017

Změny v cestovních náhradách 2017

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Vitalia.cz: Test na HIV je zdarma i za pět set

Test na HIV je zdarma i za pět set

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Měšec.cz: Vklad na cizí účet je draze zpoplatněn (přehled)

Vklad na cizí účet je draze zpoplatněn (přehled)

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

120na80.cz: Popraskané rty? Některé balzámy stav zhoršují

Popraskané rty? Některé balzámy stav zhoršují

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Vitalia.cz: Pravda o přibírání na zimu

Pravda o přibírání na zimu

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: 3, 2, 1..EET startuje. Na co nezapomenout?

3, 2, 1..EET startuje. Na co nezapomenout?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Vitalia.cz: Pamlsková vyhláška bude platit jen na základkách

Pamlsková vyhláška bude platit jen na základkách