Er wordt niets verstuurd, en dat is na te gaan
Klarword vraagt u niet het te geloven. De verwerking gebeurt in uw browser, de browser verbiedt de pagina om ergens anders verbinding mee te maken, en u kunt het in dertig seconden zelf vaststellen.
Zelf nagaan
- Verbreek de netwerkverbinding. Laad een model en zet dan de wifi uit of trek de kabel eruit. Sleep een bestand erin en transcribeer: alles werkt. Herlaad zelfs de pagina: ze komt terug.
- Open het tabblad “Netwerk”. Sleep in de ontwikkelaarsgereedschappen (F12), tabblad “Netwerk”, een bestand erin en start de transcriptie. Tijdens het werk gaat er geen enkel verzoek uit; de eerste keer komen alleen de bestanden van het model binnen, van deze site.
- Lees het beveiligingsbeleid voor inhoud. Het staat in de header van elke pagina en is hieronder overgenomen. De regel connect-src 'self' verbiedt de browser elke verbinding met een ander domein. Het is de browser die dat afdwingt, niet wij.
- Vergelijk de vingerafdrukken. Elk modelbestand heeft een SHA-256-vingerafdruk, gepubliceerd op de pagina met vingerafdrukken. Het gereedschap controleert haar voordat het het bestand gebruikt, en u kunt haar zelf opnieuw berekenen op het gedownloade bestand.
De architectuur
De site is een verzameling statische bestanden: pagina's, code, een rekenmotor en modellen. De server levert ze en doet verder niets. Er is geen toepassing aan de serverkant, geen database, geen account, en geen adres waarnaar een opname gestuurd zou kunnen worden.
Een architectuur in plaats van een belofte
Een onlinedienst kan beloven uw opname te wissen; u hebt geen enkele manier om dat vast te stellen. Een architectuur kunt u wel vaststellen.
| Een online transcriptiedienst | Klarword | |
|---|---|---|
| Waar de audio verwerkt wordt | Op de servers van de aanbieder, of bij zijn leverancier van modellen | In uw browser, op uw computer |
| Wat u moet geloven | Zijn bewaarbeleid en zijn voorwaarden | Niets: verbreek de netwerkverbinding en kijk |
| Verwerkers | Hostingprovider, leverancier van modellen, soms buiten de Europese Unie | Geen: er is geen verwerking om uit te besteden |
| Bewaartermijn | Die van zijn voorwaarden, te onderhandelen | Niet van toepassing: er wordt niets ontvangen |
| Hergebruik om een model te trainen | Volgens zijn voorwaarden | Onmogelijk: wij ontvangen niets |
| Afhankelijkheid | Van de dienst, zijn tarieven, het recht van zijn land | Geen: het pakket om zelf te hosten draait op uw netwerk, zonder verbinding |
| Account, cookies | Vaak verplicht | Geen |
Wat er gedownload wordt, en vanwaar
Bij het openen van het gereedschap downloadt de browser de pagina, haar code en haar stijlblad. De eerste keer dat een model draait, downloadt hij de rekenmotor en daarna de bestanden van het gekozen model. Wanneer u erom vraagt, downloadt hij ook het voorbeeld (een opname van een minuut en de tekst ervan) en de lettertypen van de ingebrande ondertitels. Alles komt van deze site, en er wordt niets anders opgevraagd: geen lettertype van een externe dienst, geen script van derden, geen bezoekersstatistiek.
De bibliotheek die het model laat draaien (transformers.js) kan haar bestanden bij Hugging Face ophalen en haar motor bij een contentleveringsnetwerk. In Klarword mag ze dat niet: haar downloadfunctie is vervangen door een functie die weigert, en ze leest alleen de gecontroleerde bestanden die op uw computer staan. Een onvoorzien verzoek mislukt met een melding, in plaats van te vertrekken.
Wat dat betekent voor de AVG
Wij ontvangen geen enkele opname, dus verwerken wij geen enkel gegeven dat erin staat. Concreet, voor een organisatie:
- Geen doorgifte van gegevens aan een derde: de opname verlaat de computer van de persoon die transcribeert niet. De vraag van doorgifte buiten de Europese Unie speelt niet, want er is geen doorgifte.
- Geen verwerker te kwalificeren voor de inhoud van de opnamen, dus geen verwerkersovereenkomst te tekenen voor de transcriptie zelf.
- Geen bewaartermijn vast te stellen en geen wissing aan te vragen: er bestaat nergens anders een kopie. Wat op de computer blijft, een werk dat u hebt gevraagd te bewaren, verwijdert u met één klik.
- Geen enkele leverancier van kunstmatige intelligentie ziet uw gesprekken voorbijkomen: de modellen zijn gepubliceerd onder een vrije licentie (MIT, Apache 2.0), vastgezet, gecontroleerd en door deze site geleverd, en draaien daarna op uw computer.
- Geen cookie, geen tracker, geen derde partij: geen toestemmingsbanner, want er valt niets toe te stemmen. De enige meting van de site is de teller die hieronder beschreven wordt.
- De site wordt in Frankrijk gehost, door OVH, en levert alleen bestanden. Om van niemand afhankelijk te zijn, draait het pakket om zelf te hosten op uw interne netwerk, zonder toegang tot internet.
Wat uw verantwoordelijkheid blijft
Twee dingen doet Klarword niet in uw plaats: de opgenomen personen informeren en, afhankelijk van het kader, hun toestemming vragen; de transcriptie opnemen in uw register van verwerkingsactiviteiten. De gebruiksvoorwaarden herinneren daaraan.
Wat er nooit verstuurd wordt
Niet de audio, niet de video, niet de getranscribeerde of vertaalde tekst, niet het verslag, niet uw verbeteringen, niet de namen van uw bestanden. Geen bezoekersstatistiek, geen cookie, geen telemetrie.
De server van deze site houdt geen toegangslogboek bij. De hostingprovider bewaart zijn eigen technische logboeken op machineniveau, volgens zijn beveiligingsregels.
Het enige dat vertrekt: een teller
Wanneer een transcriptie klaar is, stuurt uw browser deze site één verzoek, en maar één: POST /compte?m=precis&d=10-60. Het zegt welk model gebruikt werd en in welke klasse de duur van de opname valt (minder dan 10 minuten, 10 tot 60, meer dan een uur). Verder niets: geen woord van de tekst, geen bestandsnaam, geen identificatiecode.
De server schrijft één regel: de datum, het model, de klasse. Geen IP-adres, geen browser, geen verwijzende pagina: twee transcripties van dezelfde persoon zijn niet te onderscheiden van twee transcripties van onbekenden. Het totaal wordt ongewijzigd gepubliceerd op de pagina met statistieken.
Een browser die vraagt niet gevolgd te worden (Do Not Track, Global Privacy Control) stuurt niets. Offline vertrekt er niets, en er wordt niets voor later bewaard: het verzoek wordt nooit opnieuw verstuurd. Het pakket om zelf te hosten wordt zonder teller gebouwd. In alle gevallen werkt het gereedschap precies hetzelfde.
Laten we er niet omheen draaien: wij registreren het aantal voltooide transcripties, met het gebruikte model en een duurklasse. Wij weten dus, dag na dag, hoeveel transcripties er met elk model gemaakt zijn, en dat is precies wat de pagina met statistieken toont. Niets in die regels zegt wie ze gemaakt heeft, vanwaar, of wat erin stond.
Wat er op uw computer wordt opgeslagen
De modellen en de motor worden opgeslagen in de privéruimte die de browser voor deze site reserveert (Origin Private File System), nadat hun vingerafdruk is gecontroleerd. Zo hoeven ze niet opnieuw gedownload te worden, en kunt u offline werken. Het scherm “Op deze computer” van het gereedschap toont ze en laat u ze verwijderen.
Uw opname wordt daar niet opgeslagen, tenzij u daarom vraagt. Standaard wordt ze in het geheugen gelezen, in het tabblad, en vergeten wanneer het tabblad sluit; de transcriptie ook. Daarom vraagt het gereedschap u haar op te slaan.
Vinkt u “Dit werk op deze computer bewaren” aan, dan worden de opname en haar transcriptie in diezelfde privéruimte opgeslagen, op deze schijf, en bij elke verbetering bijgewerkt, zodat u ze bij het volgende bezoek terugvindt. Ze worden nergens heen gestuurd, en zijn met één klik te verwijderen, vanaf het beginscherm of vanuit “Op deze computer”. Zonder het vakje wordt er niets bewaard.
Twee instellingen worden van het ene bezoek tot het volgende bewaard, in de lokale opslag van de browser, op deze computer: de woordenlijst die u hebt geschreven, en de gekozen stijl voor de ingebrande ondertitels. Ze verlaten de computer niet; u exporteert de woordenlijst zelf als tekstbestand om haar te delen.
Opnemen met de microfoon
Het gereedschap kan rechtstreeks opnemen met de microfoon van de computer. De browser vraagt eerst uw toestemming; het geluid wordt daarna in het geheugen van het tabblad gehouden, precies zoals een bestand dat u erin had gesleept, en op dezelfde manier getranscribeerd. Het wordt nergens heen gestuurd. Wilt u het bewaren, dan biedt het gereedschap aan het op uw computer op te slaan; anders verdwijnt het wanneer het tabblad sluit.
De Permissions-Policy-header van de site staat de microfoon alleen voor deze site zelf toe, en verbiedt de camera, de geolocatie en de rest.
Overzetten vanaf een telefoon
Om een opname van de telefoon naar de computer over te zetten, toont het gereedschap een QR-code. Het bestand gaat daarna rechtstreeks van het ene apparaat naar het andere, over een versleuteld WebRTC-kanaal, op uw lokale netwerk: het gaat via geen enkele server, niet de onze en geen andere.
Om de twee apparaten elkaar te laten vinden, dient de server van de site enkele seconden als brievenbus: elk apparaat legt er een verbindingsbeschrijving neer (zijn adressen op het lokale netwerk en de vingerafdruk van zijn versleutelingssleutel), het andere leest haar. Deze beschrijvingen zijn ondertekend met een geheim dat alleen de QR-code bevat, in het deel van het adres dat de browser nooit naar een server stuurt: de relay kan zich dus niet voordoen als een van beide. Hij houdt ze hoogstens tien minuten in het geheugen, zonder logboek, en weigert elk bericht van meer dan 16 KB.
Er wordt geen STUN- of TURN-server gebruikt: een openbare STUN zou een verzoek aan een derde zijn, een TURN een server waar het bestand uiteindelijk doorheen zou gaan. De keerzijde staat op het scherm: beide apparaten moeten elkaar op hetzelfde netwerk kunnen zien.
Losgekoppeld werkt het gereedschap nog steeds
Een service worker bewaart een kopie van de pagina's en de code van het gereedschap, zodat het ook zonder netwerk opnieuw laadt; de modellen worden apart opgeslagen, nadat hun vingerafdruk is gecontroleerd. Dat is de demonstratie die een dienst die uploadt niet kan nadoen: die heeft zijn server nodig om te werken.
Een service worker is een programma dat zich tussen de pagina en het netwerk nestelt: precies de plek vanwaar iemand uw opnamen naar buiten zou halen. Dit is wat de onze doet, en wat hij niet doet.
- Hij opent geen enkele verbinding. Zijn werk is antwoorden met wat hij al heeft. Hij praat met geen enkel ander domein: het beveiligingsbeleid voor inhoud zou het hem sowieso verbieden.
- Er gaat geen opname door hem heen. Uw bestand gaat van uw schijf naar het geheugen van het tabblad; wat hij bewaart zijn de pagina's en de code van deze site, verder niets.
- Hij raakt de teller niet aan, en speelt hem nooit opnieuw af. Een service worker kan een verzending vasthouden en herhalen zodra het netwerk terug is: dat zou betekenen dat er een spoor van uw werk bewaard blijft, wachtend om naar ons verstuurd te worden. Offline telt de teller niet.
- Hij leegt zichzelf bij elke nieuwe versie van de site, en de pagina's gaan eerst langs het netwerk wanneer dat er is: u leest altijd het geldende beveiligingsbeleid.
- Hij is te lezen. Het is het bestand /sw.js, in de wortel van het domein, met commentaar, dat in een tabblad opengaat.
Wilt u hem liever verwijderen: ontwikkelhulpmiddelen (F12), tabblad Application, Service workers, Unregister. Het gereedschap werkt daarna zoals voorheen, online.
De spellingcontrole
De spellingcontrole van de browser staat in de editor standaard uit. De basiscontrole van Chrome, Edge en Firefox werkt op de computer; maar de “verbeterde spellingcontrole” van Chrome stuurt de ingetypte tekst naar Google. Zet u haar aan in Klarword, controleer dan eerst de instelling van uw browser.
Wat deze architectuur niet garandeert
- Een extensie die in uw browser is geïnstalleerd, kan de pagina lezen en haar eigen verzoeken doen. Gebruik voor gevoelig werk een profiel zonder extensies.
- Een gecompromitteerde computer blijft gecompromitteerd: Klarword beschermt niet tegen spyware die op de machine is geïnstalleerd.
- De browser zelf stuurt informatie naar zijn uitgever (updates, crashrapporten), volgens zijn eigen instellingen.
- De lijst met verzoeken die het gereedschap toont, wordt door de pagina bijgehouden. Het tabblad “Netwerk” van de browser is de controle die telt.
Het volledig in bezit hebben
De site is een map met statische bestanden, de modellen inbegrepen. Er is geen applicatie, geen database en geen dienst die draait. Hij kan dus ergens anders worden neergezet:
- op het intranet van uw organisatie, zonder toegang tot internet;
- op een webserver in uw netwerk, hoe klein ook;
- bij uw eigen hosting, als u liever van niemand afhankelijk bent.
Dat is de tweede betekenis van het woord “soeverein”: niet afhankelijk zijn van een domein, een abonnement, een leverancier van modellen of de financiële gezondheid van een dienstverlener. Als deze site morgen verdween, zou een kopie bij u precies hetzelfde blijven werken. Het pakket om zelf te hosten is die map, met zijn vingerafdrukken.
Hoe het gemaakt is, in drie zinnen
De opname wordt door uw browser gedecodeerd en daarna getranscribeerd door een Whisper-model dat in het tabblad draait, op de grafische kaart wanneer die er is (WebGPU), anders op de processor (WebAssembly). De sprekers, het verslag en de vertaling worden op dezelfde manier gemaakt, door andere open modellen, op dezelfde computer. Alles wat de browser downloadt komt van deze site, is vastgezet op een precieze versie en wordt aan de hand van zijn vingerafdruk gecontroleerd voordat het gebruikt wordt.
Een onafhankelijke audit
De geleverde code is leesbaar in de browser, en het pakket om zelf te hosten is identiek aan dat van de site, met zijn vingerafdruk. Een organisatie kan het dus laten auditen door de partij van haar keuze, of haar beveiligingsverantwoordelijke vragen het na te lezen voordat ze het toestaat. Schrijf ons om het pakket voor een audit te ontvangen.
Het beveiligingsbeleid voor inhoud
Door de server met elke pagina meegestuurd, en in de pagina zelf herhaald voor het geval ze op een andere server wordt gezet:
default-src 'self'; script-src 'self' 'wasm-unsafe-eval' blob:; worker-src 'self' blob:; style-src 'self' 'unsafe-inline'; img-src 'self' blob: data:; media-src 'self' blob:; font-src 'self'; connect-src 'self' blob:; object-src 'none'; frame-src 'none'; base-uri 'none'; form-action 'none'
De vingerafdrukken van de bestanden
Van elk bestand dat het gereedschap kan downloaden, de motor zowel als de modellen, staan de grootte en de SHA-256-vingerafdruk op een aparte pagina: de vingerafdrukken van de bestanden.