A máme tady další kuloární bojůvku o webovou svobodu, kterou by prý mohl omezit prohlížeč Chrome. Naplno propukla o víkendu a krátce poté, co skupina inženýrů z Googlu aktualizovala svoji vizi ověřování kvality surfařů. Říkají tomu Web Environment Integrity.
Kontroverzní technologie záhy získala poněkud přiléhavější přezdívku webové DRM, hned na začátku je ale třeba připomenout, že se zatím jedná opravdu pouze o nápad. Veškerá dokumentace je výhradně na soukromém GitHubu jednoho z vývojářů Chromia a samotný Google to v tuto chvíli nijak nepropaguje a nekomentuje.
Na jednom z webů projektu Chromium, ze kterého vychází jak Chrome, tak Microsoft Edge, nicméně už od května visí žádost o vývoj prvního prototypu.
Podobné ověřování jako na iPhonu a Androidu
No dobrá, tolik tedy k formalitám a teď konečně k odpovědi na otázku, co to vlastně je a proč to v posledním týdnu vyvolalo takovou nevoli v komunitě zastánců co nejméně regulovaného webu. Ostatně, stačí se podívat do sekce issues na GitHubu, kde se sešly desítky hodně peprných komentářů, ať na něco podobného vývojáři z Googlu co nejrychleji zapomenou.
Sekce issues na GitHubu, kde vývojáři publikovali svůj nápad, je docela vypovídající
Web Environment Integrity chce do dialogu mezi webovým prohlížečem a webovým serverem vnést podobný prvek, který už známe z mobilních telefonů (Apple App Attest, Google Play Integrity) i novějších počítačů především s operačním systémem Windows (UEFI Secure Boot).
Stručně řečeno, cílem WEI je test integrity systému, ze kterého se snažíme navštívit nějakou stránku. Webový server se pak na základě výsledku rozhodne, jestli pošle kód stránky, anebo klienta přesměruje třeba na chybové hlášení.
Co je to integrita systému?
Co si vlastně představit pod integritou systému? Nápovědou budiž zmíněné a už existující technologie z mobilního světa. Dejme tomu, že provedete třeba root telefonu (plné odemknutí práv systému) a nainstalujete si nějakou aplikaci s velmi vysokými požadavky na bezpečnost – třeba mobilní bankovnictví.
Pokud bude aplikace používat vrstvu Play Integrity, operační systém ji při startu řekne, že na tomto zařízení je kvůli rootu snížená míra zabezpečení, no a mobilní bankovnictví může zobrazit chybové hlášení. Root totiž sice může přinést hromadu zajímavých výhod, stejně tak by ale mohl poskytnout ohromnou moc nějakému malwaru. Stručně řečeno narušil integritu OS.
Snímek obrazovky mé bankovní aplikace by narušil bezpečnostní integritu – mohl by jej zkusit vytvořit třeba malware běžící na pozadí –, a tak vidím jen černé pixely
Stejně tak by mohlo snížit míru zabezpečení, kdybychom se k pixelům takto citlivé aplikace dostali i jiným způsobem než prostým pohledem na displej. Proto správce bezpečnostní integrity zakáže pořizování snímků obrazovky a její vysílání.
Server se dozví o důvěryhodnosti klienta
Pokud by se z nápadu Web Environment Integrity stala skutečná technologie, která bude časem běžnou součástí Chromu, MS Edge a dalších prohlížečů na bázi Chromia, podobné schopnosti by získaly i webové servery, které by si mohly před odesláním stránky ověřit, jestli je koncové zařízení důvěryhodné.
Pojďme si ukázat, jak by to vypadalo v praxi. Dejme tomu, že si chce pan Švestka přehrát nový díl pořadu Týden Živě, nicméně je červenec roku 2026 a naši programátoři už implementovali Web Environment Integrity.
Chceš pokračovat? Nejprve si tě chci ověřit
Pan Švestka (vlevo) tedy vyťuká do adresního řádku adresu www.zive.cz a prohlížeč Chrome se pomocí protokolu HTTP spojí s webovým serverem Živě.cz (vpravo).
Web Environment Integrity a 1. krok
Než ale server odpoví kompletním kódem stránky, chce si nejprve ověřit, jestli je na druhé straně vše v pořádku. Tedy jestli pan Švestka není ve skutečnosti třeba program určený ke stahování videí na webových stránkách.
Atestační autorito, žádám tě o atestační token
Server proto prohlížeči vrátí nejprve javascriptový kód, který se po zpracování spojí s nějakou atestační autoritou a bude po ní požadovat skóre integrity ve formě zašifrované datové struktury – tokenu.
Web Environment Integrity a 2. krok
Atestační autoritou může být cokoliv. Mohl by to být samotný operační systém (jako v případě zmíněných analogií na iOS a Androidu), ale stejně tak by to mohla být nějaká respektovaná internetová autorita na webu, aby se zamezilo podvrhu na straně klienta.
Autorita by mohla provést atestaci klienta třeba kontrolním součtem toho, že se Švestka pokouší navštívit Živě.cz pomocí standardního Chromu pro koncové uživatele a nikoliv něčeho jiného – třeba balíku pro webovou automatizaci Selenium ve spojení s ChromeDriver.
Co přesně by se při atestaci měřilo, nicméně zatím nevědí ani autoři technologie. V dokumentaci je zatím definice termínu web environment prázdná. Pokud by se jednalo opravdu o externí autoritu bez podpory přímo v OS, pak by ji tyto údaje musel odeslat přímo prohlížeč a v takovém případě se nabízí se otázka, jak by technologie zajistila, aby nepodváděl a neposílal ji fiktivní kontrolní součet zcela legitimního Chromu.
Haló, servere, tady máš ten token
Autorita ze všech těchto informací vytvoří již zmíněný token a předá jej zpět webovému prohlížeči, který jej konečně pošle serveru na Živě.cz.
Trošku technikálií: Tokenem je v tomto případě změť bajtů, ve kterých je zakódovaná datová struktura ve formátu CBOR (binární analogie JSON). Struktura obsahuje informaci, jestli webové rozhraní klienta prošlo atestací, nebo ne. Zároveň obsahuje údaje o autoritě. Hlavně ale digitální podpis ve formátu COSE. Pomocí něho si server ověří, že do struktury po cestě nikdo nezasahoval a vyrobila jej opravdu autorita, kterou sám uznává.
Vlastně to celé tak trochu připomíná třeba práci s běžnými webovými certifikáty.
Server token dekóduje a rozhodne se, co dál. Pokud dostane informaci, že je druhá strana důvěryhodná (používá normální prohlížeč a asi to bude člověk), přičemž tento verdikt pochází od autority, kterou sám uznává, může mu konečně poslat kompletní kód stránky s přehrávačem pořadu Týden Živě jako na obrázku níže.
Web Environment Integrity a schválení ze strany serveru
Švestko, žádný Týden Živě nebude!
Pokud ale bude token obsahovat sdělení, že je druhá strana podezřelá (není to běžný počítač? je to bot–automatizovaná aplikace?), server může předat klientovi alternativní HTML kód s chybovým hlášením, jak to známe i z jiných scénářů.
Web Environment Integrity a zamítnutí ze strany serveru
Oproti dosavadním metodám, jak ověřovat prostředí prohlížeče, by proti něčemu takovému nebyla obrana. Pokud prostě server nedostane správnou odpověď, jejíž autenticita je chráněná digitálním podpisem, má surfař smůlu.
Odpůrci: Je to prostě celé už z principu špatně
Pokud něco podobného funguje na mobilech a záleží jen na webech, jestli to nasadí, v čem je tedy problém? Odpověď má hned několik úrovní.
Na té nejnižší a nejobecnější drtivé většině kritiků vadí už jen samotný pokus o jakoukoliv formu auditu a z něj plynoucí rizika porušení ochrany soukromí.
Opravdu to bude anonymní? Nebudou nás případné autority sledovat? Nebude atestační token přes veškerou snahu dostatečně unikátní k tomu, aby nás mohl fingerprintovat – jedinečně popsat a ostatní nás skrze něj budou sledovat?
Odpůrci: Projde atestací AdBlock?
Pokud se posuneme o patro výše na úroveň Chromu, je na místě otázka, jaký zásah do prohlížeče už naruší jeho integritu, abychom dostali špatné skóre. Mnozí se již jistě dovtípili, o co by mohlo jít v prvé řadě.
Webové prostředí klienta – pana Švestky – neprošlo atestací
Ano správně, nabízí se zejména doplňky filtrující příchozí obsah. Poruší integritu třeba nainstalovaný AdBlock a jemu podobná kontroverzní rozšíření, takže jakmile začnete blokovat reklamu, webový server na to okamžitě přijde a zablokuje vás?
Nutno podotknout, že (mimo jiné) validním zobrazováním reklamy hájí technologii i její tvůrci a s tím, že zcela legitimní reklamní systémy a zadavatelé reklam musejí mít jistotu, že skutečně dochází k reálné (reklamní) impresi, a nikoliv jen k podvodnému stažení nějakého toho banneru robotem, který pak falešně navyšuje čísla.
Ukázka, jak by mohl vypadat atestační dialog v Javascriptu podle tvůrců technologie:
// Takhle by mohl podle autoru vypadat javascriptovy kod,
// ktery zada autoritu o atestaci a vysledek posle webovemu serveru
// Atestace klienta se muze tykat treba jen urcite (citlive) casti webu
// Zadame proto o atestaci prohlizece pristupujiciho k adrese /tydenzive.aspx?video=58967
// K URL je doplnena domena a prohlizec vse zahesuje (SHA256),
// takze autorita se nedozvi presne zneni URL
// Zminka o URL slouzi jen k tomu, aby pripadny podvodnik neupravil Javascript a nezmenil URL
// na adresu, ke ktere budeme pri kontrole na serveru mene prisni
// Vice zde: https://rupertbenwiser.github.io/Web-Environment-Integrity/#examples
const zadostProUrl = "/tydenzive.aspx?video=58967";
// Povel k provedeni atestace
// Odpovedi je objekt atestace, ktery obsahuje skore (prosel/neprosel),
// udaje o atestacni autorite a vse je chrane proti podvrhu
// digitalnim podpisem autority
const atestace = await navigator.getEnvironmentIntegrity(zadostProUrl);
// Vypsani atestace do konzole prohlizece ve forme
// zakodovaneho shluku znaku Base64
console.log(atestace.encode());
// Vypsani atestace do konzole prohlizece ve forme JSON
console.log(atestace.toJSON());
// Predame vysledek atestace jako zpet serveru, at se rozhodne,
// no a podle toho budeme pokracovat. Pokud atestaci nepredame,
// server nas proste nepusti dal a nezobrazi stranku s Tydnem Zive
const odpoved = await fetch("/tydenzive.aspx?video=58967&atestace=" + atestace.encode());
Má nás to chránit před boty na X aj.
Autoři zároveň upozorňují, že ačkoliv se celá komunita chytla AdBlocku, cílem WEI je i ochrana před boty na sociálních sítích. Ty by atestací prostě neměly vůbec projít, většinou totiž používají jen základní techniky snadno odhalitelné automatizace prohlížeče někde na serveru.
Čili když bude chtít nějaký falešný Luboš z Petrohradu iksovat na X (omlouvám se, ale chtěl jsem si to prostě vyzkoušet černé na bílém), k iksování použije webový klient X v prohlížeči a X zavede WEI, bota by mělo prozradit jeho speciální webové rozhraní, které neprojde atestací.
Stále jen na papíře
Web Environment Integrity prozatím zůstává na papíře a veškerá debata (včetně kritiky) probíhá spíše ve specifických kuloárech internetu. Ještě se z toho nestalo velké téma titulních stran, a tak zůstává otázkou, jaká je jeho budoucnost. V každém případě, Google je dnes díky tržnímu postavení Chromu v pozici, ve které levou zadní prosadí v podstatě jakoukoliv technologii, která se mu zamane.
Web Environment Integrity má svá racionální opodstatnění – jak už jsme si řekli – na jiných platformách jeho obdobu nevědomky používáme celé roky, web si nicméně nadále drží auru široké otevřenosti a punku, jakákoliv podobná akce proto vyvolá velmi hlasitou reakci.