Als iemand claimt AVG-compliant te zijn en SEAL-niveau 4 te halen op vrijwel alle soevereiniteitsdoelen, wil je bewijs zien. Daarom hebben we acht checks uitgevoerd op de Jet-Stream Privacy Player, onze backend en onze uitlevering, met de ruwe uitkomsten en met de punten waar we nog niet zijn waar we willen zijn. Elke check kun je zelf herhalen in een terminal. Meer dan dig, whois, curl en de ontwikkelaarstools van een browser heb je niet nodig.
De player
Laad de Privacy Player, open het Netwerk-tabblad en speel een video met ondertitels tot het einde. Met externe diensten uitgeschakeld (no-ext=all) bevat de trace 48 verzoeken naar zes hostnamen, allemaal onder jetstre.am: de player zelf, de load balancer, de origin, de ondertitelservers en de CDN. Geen Google, geen analyticsleverancier, geen fonts van een Amerikaanse CDN, geen pixel. Open dan het Opslag-tabblad. Cookies: geen. Local storage: geen. Session storage: geen. Er wordt niets op het apparaat geschreven en, omdat er geen analyticsscript is, ook niets uitgelezen. Dat is belangrijker dan het woord 'cookieloos': de ePrivacy-regel gaat over opslaan op of uitlezen van het apparaat. Een player die je schermresolutie uitleest en naar een statistiekenserver stuurt is niet toestemmingsvrij omdat hij de cookie oversloeg. De onze leest niets en verstuurt niets.
De backend
Wie antwoordt als je browser onze hostnamen opvraagt? Een dig op player.jetstre.am en een whois op het antwoord levert: netname JETSTREAM-NL, org-name Jet-Stream BV, Groningen, aangemaakt op 7 april 2004. De player, de origin en de ondertitelservers antwoorden vanaf adresruimte die sinds 2004 op naam van Jet-Stream staat, gerouteerd via LeaseWeb Netherlands, een Nederlands bedrijf onder Nederlands recht. Jet-Stream host eigen hardware in racks van LeaseWeb, dus LeaseWeb heeft geen toegang tot de data. In de antwoordheaders van de origin vind je geen via, geen x-amz-*, geen x-cache, geen CDN-vingerafdruk. Elke afspeelsessie krijgt een door de server uitgegeven sessie in het URL-pad. Zo meten we: uit de uitleverlogs, op eigen servers, waar een kijker niet door een contentblokker kan worden verborgen en niet door een script kan worden verzonnen. Kijkstatistieken worden serverzijdig samengesteld en met niemand gedeeld.
De uitlevering: eigen origin eerst, Europese CDN als het nodig is
Standaard wordt een video van ons eigen platform geserveerd, van begin tot eind. Wordt een video populair, dan verplaatst onze load balancer de uitlevering naar een CDN. Drempels, bedrijfsregels en CDN-keuze zijn per klant instelbaar. De standaard-CDN is Bunny, een Sloveens bedrijf. Een eigen hostnaam voor een CDN kan alles verbergen; precies dat vond een casestudy bij een andere leverancier: een 'Europese CDN' die zijn video uit Amazon CloudFront trok, die het weer uit Amazon S3 las. Dus dezelfde check op ons: bn-global.airflow.jetstre.am is een CNAME naar b-cdn.net, en een curl geeft server BunnyCDN-FR1, cdn-requestpullcode 200. Nog eens via een VPN in de Verenigde Staten: server BunnyCDN-IL1, requestcountrycode US, pullcode 200. Een Amerikaanse kijker krijgt de video van een Bunny-edge in Illinois, en die edge haalt hem bij onze eigen Europese origin. Geen via: cloudfront, geen x-amz-headers. De keten is Jet-Stream origin, Jet-Stream edge, kijker; of Jet-Stream origin, Bunny edge, kijker. Twee rechtspersonen, beide Europees. Andere CDN's in onze pool, zoals Fastly en Akamai (Amerikaans), staan uit tenzij een klant er expliciet om vraagt.
Wat de checks ons over onszelf leerden
Zonder no-ext=all laadt de Privacy Player de Chromecast-SDK van www.gstatic.com en de IMA-advertentie-SDK van imasdk.googleapis.com, nog voordat een kijker iets cast of een advertentie ziet. Elk IP-adres bereikt dan Google. De parameter die dat voorkomt is gedocumenteerd en werkt, maar het is een opt-in, en wij vinden dat privacy geen opt-in mag zijn. In de volgende release draaien we dit om: de Chromecast-SDK laadt pas als een kijker op het cast-icoon klikt, de advertentie-SDK alleen als een uitlevering echt een advertentietag heeft, en een Content-Security-Policy op de player maakt van 'geen externe verzoeken' een regel die de browser afdwingt. Ook staat wowza als variabele in de URL: Amerikaanse software, zelf gehost en geïsoleerd als legacy packager, afgeschermd door open source caches, en wordt vervangen door onze eigen JIT-packagers. We publiceren dit omdat het alternatief is wat we te vaak zien in deze markt: een afgeronde toestand claimen die niet bestaat. Een leverancier die zegt dat er niets meer te repareren is, kijkt niet of vertelt het je niet.
Doe het zelf
Voor elk videoplatform, ook het onze: 1. Open de player, open het Netwerk-tabblad, speel een video tot het einde. Noteer elk domein dat niet van de leverancier is en vraag waarvoor het dient. 2. Open het Opslag-tabblad. Noteer elke cookie en elke opslagsleutel en vraag waarom die er is. 3. Dig elke hostnaam in de trace, volg elke CNAME tot het einde, whois het adres waar je uitkomt. 4. Curl een media-URL en lees de server-, via- en x-amz-headers. Doe het nog eens via een VPN buiten Europa. 5. Vraag de leverancier waar zijn kijkstatistieken vandaan komen: uitleverlogs of een script in de browser. Vijf checks, een half uur, geen specialist nodig.
Engels origineel met alle ruwe testresultaten op jet-stream.com