← Terug naar de blog

Wat is een AudioContext-fingerprint en hoe herkent het je browser?

Kern in één zin: Audio-fingerprinting raakt je microfoon niet en speelt geen geluid. De browser rendert in plaats daarvan stilletjes een vast geluidsfragment in het geheugen, en de minieme afwijkingen in de berekening worden het kenmerk van je apparaat. De techniek hoort thuis in dezelfde familie als Canvas en WebGL: vingerprints op basis van rendererresultaten. Van IP wisselen helpt niet, je cache legen helpt niet, en de waarde wordt bepaald door hardware en browser-engine. Voor wie meerdere accounts beheert, gelden slechts twee criteria: de waarde moet binnen één omgeving langdurig gelijk blijven, en verschillende omgevingen moeten van elkaar verschillen. MostMate biedt voor AudioContext twee modi, Realistisch en Willekeurig, en precies die twee criteria wijzen je de keuze.

Geluid uit, microfoontoegang geweigerd, en de audiotruc van een website is tandeloos — die misvatting hoor je vaak. In werkelijkheid gebeurt het omgekeerde: er verlaat op geen enkel moment een golfje geluid je toestel. In 2016 nam een onderzoeksteam van Princeton de techniek officieel op in een meting over een miljoen websites; sindsdien is het een vast onderdeel van gangbare detectiescripts — geen toestemming nodig, binnen milliseconden klaar, en ook in de incognitomodus gewoon actief. MostMate is een fingerprintbrowser die elk account een eigen browseromgeving geeft, en de audiofingerprint is een van de parameters die zo'n product moet regelen. In dit artikel staan vier vragen centraal: wat ziet de website, waarom blijft dat ene getal zo stabiel, hoe sluit het aan op de andere parameters en hoe stel je het in binnen een fingerprintbrowser?

Wat de website ziet: een fragment dat nooit klinkt, met een getal als antwoord

Het eindresultaat voor het script is één kommagetal: geen klank, geen apparaatmodel. Gangbare scripts (met FingerprintJS als bekendste vertegenwoordiger, gevolgd door tal van open-sourcebibliotheken) doorlopen altijd dezelfde vijf stappen:

  • Er wordt een offline-audiocontext aangemaakt (OfflineAudioContext, zie de MDN-documentatie): één kanaal, een samplefrequentie van 44100 Hz, zo'n 5000 samples — goed voor ongeveer 113 milliseconde audio — zonder dat de luidsprekers er ooit bij betrokken zijn.
  • Een oscillator wekt een vaste driehoeksgolf van 10000 Hz op als identiek ingangssignaal.
  • Het signaal gaat naar een DynamicsCompressorNode met bewust agressieve instellingen (drempel -50 dB, knie 40, compressieverhouding 12); zo wordt de berekening expres in het niet-lineaire gebied geduwd om de kleine verschillen tussen apparaten te vergroten.
  • startRendering rendert het resultaat geruisloos in het geheugen; hierbij klinkt geen enkel hoorbaar geluid.
  • Van de laatste zo'n 500 samples van de uitvoerbuffer tel je de absolute waarden op, en daar komt een getal als 124.0434 uit.

Dat getal is de audiofingerprint. Er wordt gerekend vóór het afspelen, dus een gedempt systeem of ontbrekende boxen maken geen verschil; opnameapparatuur wordt niet aangesproken, dus microfoontoestemming komt helemaal niet ter sprake. In overzichten van browserfingerprints krijgt deze parameter doorgaans één zin — een eigen artikel is terecht, want de herkomst is bijzonder: de waarde ontstaat uit rekenfouten, en die fouten zijn precies stabiel. Daar gaat de volgende sectie over.

De audiofingerprint op de resultatenpagina van Iphey

Testsites tonen meestal een hexadecimale reeks die uit deze ruwe waarde is gehasht, en de lengte verschilt per site; bij vergelijken volstaat de vraag of de reeks binnen één omgeving gelijk blijft en tussen omgevingen verschilt — het formaat van de reeks hoeft je niet te storen.

Waarom één getal volstaat als vingerprint: de fout is toevallig stabiel

De kern van de zaak: audioberekeningen leveren op verschillende apparaten niet bitgewijs hetzelfde resultaat, en dat verschil is reproduceerbaar. De Web Audio-specificatie legt de verwerkingsketen vast, maar eist niet dat elke implementatie bitgewijs identieke uitkomsten vindt; de zwevendekomma-nauwkeurigheid verschilt per cpu, en browser-engines bouwen de audiostack met net andere afronding en volgorde. Eén bewerking verschild nauwelijks, maar het signaal passeert meermaals de niet-lineaire compressor en wordt daarna over honderden samples opgeteld — zo groeien minieme afwijkingen uit tot een herkenbaar getal.

De Princeton-studie gaf ook de schaal aan: over ruim 18.000 apparaten leverde de audiofingerprint ruim 700 verschillende waarden op, zo'n 5,4 bits aan onderscheid — een ondergrens, gezien de omvang van het onderzoek. Voor koppelingsdetectie is dat ruim voldoende, want de echte kracht zit niet in hoe uniek de waarde is, maar in hoe vasthoudend: honderd keer verversen op hetzelfde toestel en er verandert niets; ander apparaat of andere engine, en de waarde wijzigt onmiddellijk. Een signaal zonder toestemming, niet weg te wissen en onveranderd bij elke verversing — precies de grondstof waar platforms van houden bij het opbouwen van apparaatprofielen.

Hoe het past bij de andere parameters: drie consistentieregels

Met je IP heeft de audiofingerprint niets te maken; het is een zuiver signaal van het toestel zelf. Net als Canvas en WebGL is het een parameter op basis van een rendererresultaat — de site dient een vaste rekensom in en het echte toestel rekent die ter plekke uit. Of een omgeving goed in elkaar zit, toets je aan drie punten:

  • Stabiel binnen één omgeving: dezelfde omgeving moet bij elke render hetzelfde resultaat geven; dat is de voorwaarde voor "dit is een normaal apparaat". Een waarde die opeens springt verraadt alleen dat iemand aan de parameters heeft gezeten, en wekt daardoor juist argwaan.
  • Verschillend tussen omgevingen: tien omgevingen met dezelfde audiowaarde tekenen zelf een kring op het koppelingsplaatje. Andersom geldt hetzelfde: "elke parameter op het maximum" is ook een verkeerde koers — de risico's van randomisatie zijn uitgebreid besproken in waarom fingerprintrandomisatie onveilig is.
  • Passend bij de browser-engine: de audiostack zit in de browser-engine, dus de waarde volgt de engine en diens versie. De UA en het besturingssysteem die een omgeving claimt, moeten kloppen met de engine die er echt draait; na een grote browserupdate schuift de waarde vanzelf bij — handmatig ingrijpen is niet nodig.

De drie regels samengevat: een audiofingerprint moet klinken als wat een echt apparaat zou opleveren, niet als het "beste" resultaat. MostMate heeft deze logica vastgelegd in vier ontwerpprincipes; het artikel de vier ontwerpprincipes schetst het geheel, hier gaat het alleen om het audio-onderdeel.

Zo controleer je je eigen audiofingerprint: twee vergelijkingen volstaan

Voor de check heb je geen plug-in nodig — één testsite en een paar keer verversen is genoeg.

Stap 1: kies een willekeurige testsite en zoek het punt audiofingerprint. BrowserScan en Iphey zetten het er apart neer; hoe je de vertrouwingsscore van Iphey leest, beschrijft de praktijkgids stap voor stap — gebruik die samen met het artikel de Iphey-test in de praktijk.

Stap 2: ververs dezelfde omgeving twee of drie keer en houd het getal in de gaten. Een constante waarde is het minimum. Verandert hij bij elke verversing, dan staat de audioparameter van die omgeving op elke keer opnieuw berekenen — en dat kondigt het aan bij het platform: met dit apparaat wordt geknoeid.

Stap 3: test een andere omgeving en leg de twee waarden naast elkaar. De audiowaarden van twee omgevingen horen te verschillen; zijn ze identiek, dan ga je na of hetzelfde fingerprinttemplate is hergebruikt — hergebruik van templates is de stealth-bron van koppeling tussen accounts.

Vergelijking van testresultaten uit twee omgevingen

Instellen in MostMate: Realistisch of Willekeurig?

In het aanmaakformulier van MostMate staat AudioContext als apart punt in de fingerprintinstellingen, met twee modi: Realistisch en Willekeurig; het voorbeeldpaneel rechts toont de huidige waarde direct, dus je ziet het resultaat nog vóór het opslaan. De keuze is simpel: voor je dagelijkse hoofdomgeving kies je Realistisch — de waarde komt uit de berekening van je eigen machine, is van nature stabiel en sluit naadloos aan op "stabiel binnen één omgeving"; bij het aanmaken van een reeks nieuwe omgevingen kies je Willekeurig — elke omgeving krijgt een eigen, intern stabiele waarde, precies wat "verschillend tussen omgevingen" vraagt.

Een eigen modus om zelf een waarde in te vullen bestaat voor audio niet, en dat ontwerp is bewust: de kracht van een audiofingerprint zit in de stabiliteit — met de hand een vaste waarde samenstellen haalt die juist weg. Bij de keuze tussen Realistisch en Willekeurig telt dus hoe de omgevingen zijn ontstaan, niet het bijschaven van losse parameters; Canvas, WebGL-afbeeldingen en ClientRects beoordeel je met dezelfde bril — de totale verdeling van taken staat uitgelegd op de pagina Wat is MostMate.

Fingerprintinstellingen in de MostMate fingerprintbrowser

Veelgestelde vragen

Heeft de audiofingerprint toestemming voor microfoon of luidsprekers nodig?

Nee. Het hele fragment wordt offline in het geheugen gerenderd: de luidsprekers blijven uit en opnameapparatuur wordt niet aangeroepen. Ook een gedempt systeem of een machine zonder audiohardware wordt op dezelfde manier geregistreerd.

Helpt cookies wissen of de incognitomodus tegen de audiofingerprint?

Nee. Cookies staan lokaal opgeslagen en zijn te wissen; de audiofingerprint wordt ter plekke door het toestel berekend. Het zijn twee totaal verschillende mechanismen, en een geleegde cache laat hem onaangetast.

Is het niet veiliger om AudioContext uit te schakelen of op één vaste waarde te zetten?

Precies omgekeerd. Vrijwel elke normale browser kan audioberekeningen uitvoeren, dus "uitgeschakeld" en "bij iedereen gelijk" worden zelf de opvallende kenmerken — makkelijker eruit te pikken dan een gewone waarde.

Wanneer verandert de audiofingerprint?

Bij een ander apparaat, een andere engine of na een grote browserupdate — de normale gang van zaken bij échte apparaten. Binnen dezelfde omgeving hoort hij in het dagelijkse gebruik langdurig gelijk te blijven; veelvuldige wisselingen zijn het abnormale signaal.

Tot slot

De logica van de audiofingerprint past in één zin: een site meet je toestel zonder ook maar één geluidje, omdat elke machine rekenend zijn eigen kleine, constante eigenaardigheden laat zien. Vanuit dat gezichtspunt verklaart veel vanzelf: waarom dempen niets helpt, waarom perfecte parameters juist gevaarlijk zijn en waarom omgevingen uit een batch nooit dezelfde waarde mogen hebben. MostMate bundelt dit soort parameters in de modi Realistisch en Willekeurig, en het voorbeeldpaneel laat het resultaat meteen zien. Wil je de audiofingerprint van je eigen omgevingen zelf eens meten? Download MostMate, maak in de gratis versie twee omgevingen aan en leg de waarden naast elkaar — de meeste blinde vlekken verdwijnen in één keer.

MOSTMATE

Veilig meerdere accounts beheren, heel eenvoudig

Begin met je eerste account en bouw met MostMate aan veiligere, slimmere en efficiëntere multiaccountactiviteiten.

  • Onafhankelijke profielen. Consistente identiteiten.
  • AI-automatisering · Accountgezondheid · Teamwerk
MostMate downloaden