Bureau Online Kindermisbruik: false positive hashdatabase was menselijke fout

Volgens het Expertisebureau Online Kindermisbruik zijn door een menselijke fout afbeeldingen door de HashCheckService foutief als kinderporno aangemerkt. De organisatie overweegt met externe audits en een soort toegang op maat te gaan werken.

Door een menselijke fout was er een verkeerde lijst aangezet bij HashCheckService, zegt directeur Gerkens van het Expertisebureau Online Kindermisbruik tegen Tweakers. Daardoor kon het gebeuren dat hashes van onschuldige standaardafbeeldingen van WordPress-installaties in de database kwamen en hostingbedrijven die aangesloten zijn op de HashCheckService onterecht waarschuwingen kregen. TransIP stopt tijdelijk met de dienst vanwege het voorval.

Gerkens: "We kregen in april een nieuwe toeleverancier van hashes, de Canadese politie. Die werken met vier categorieën: baseline, strafbaar, onderzoeksmateriaal en overige materiaal. Bij 'overig' is het fout gegaan, die had bij ons niet aangevinkt mogen worden." Volgens de directeur is het in de twee jaar dat de dienst bestaat, vier keer voorgekomen dat er een false positive aan het licht kwam. "Dan ging het bijvoorbeeld om een auto die in een onderzoek voorkwam, of een logo van een website met illegaal materiaal."

Volgens Gerkens komen er extra checks op de lijsten, maar ze erkent ook dat het systeem nooit 100 procent waterdicht wordt. Daarom zet de EOKM erop in om met audits te gaan werken, zodat een externe partij de werkwijze met toeleveranciers en lijsten van hashes onder de loep kan nemen. Dit zou een onderdeel worden van een project met PwC om te onderzoek of meer hashdatabases in te zetten zijn bij het opsporen van afbeeldingen van seksueel kindermisbruik. Dit project loopt tot augustus 2022.

"Het zou ook goed zijn als de klant kan kiezen 'ik wil alleen op de baselinecategorie checken', terwijl een andere kan bepalen 'ik wil alles'. We zijn bezig om dat aan te kunnen bieden." Baseline is de categorie van hashes die op onmiskenbare kinderporno betrekking hebben.

De HashCheckService krijgt de lijsten van hashes aangeleverd van de Nederlandse politie, Interpol, de Canadese politie en het Amerikaanse meldpunt voor online kinderporno. Providers kunnen zich via een api aansluiten en waarschuwingen ontvangen als de dienst een match met hashes van opgeslagen bestanden maakt, om deze te kunnen verwijderen. Er zijn 26 bedrijven aangesloten, zoals imagehosters.

Volgens Gerkens zijn de beperkingen van het werken met md5- en sha1-hashes bekend bij de politiediensten en werken de partijen aan verbeteringen. De EOKM zelf werkt daarom aan de inzet van PhotoDNA van Microsoft. Deze technologie werkt op basis van machinelearning en kan kinderporno ook als zodanig herkennen als afbeeldingen aangepast worden. De organisatie nam daarvoor begin deze maand een speciale server in gebruik. Volgens Gerkens dient een bepaalde foutmarge geaccepteerd te worden bij het flaggen van de afbeeldingen, maar is die marge wel in te stellen.

Vorig jaar heeft de hashcheckdienst 18,2 miljard afbeeldingen gecheckt, wat bijna 7,4 miljoen hits opleverde, staat in het jaarverslag van de EOKM. De aantallen zijn volgens de organisatie hoog doordat veel aangesloten bedrijven in het begin al hun materiaal in één keer lieten checken op illegale afbeeldingen. De verwachting is dat het aantal hits in de toekomst daalt.

Door Olaf van Miltenburg

Nieuwscoördinator

09-06-2021 • 16:07

26 Linkedin

Reacties (26)

26
26
20
2
0
6
Wijzig sortering
Wat ik me altijd afvraag bij dit soort hash checks, hoe goed werkt dit? Ik kan als programmeur best een hash maken van een afbeelding, maar als je er vervolgens een kleine aanpassing aan maakt is het een hele andere hash. Wat zijn de methodes die daartegen toepassen of is dat niet van toepassing?

Wat weerhoudt mij er van om gewoon ergens in een hoekje een px te veranderen. Of op een willkeurige plek een paar pixels 1/255e donkerder/lichter te maken? Of crop er 1 lijntje pixels af. Of ...

[Reactie gewijzigd door Martijn.C.V op 9 juni 2021 16:34]

De technische term hiervoor is dan ook niet hash maar fingerprint. Een hash gebruik je om een digitale representatie exact te matchen. Een fingerprint om inhoud zoals een mens die ervaart te matchen.

Fingerprinting bestaat al lang, voor audio, foto's, video's, etc.
Ja klopt, maar men gebruikt echt hashes geen fingerprinting
In de huidige set up wordt een digitale vingerafdruk van de foto’s gemaakt; die afdruk (hash) wordt vergeleken met afdrukken in een database. Nadeel van het gebruikte algoritme is echter dat alleen 100% identieke foto’s herkend worden. Foto’s waarbij 1 of meer pixels afwijken – bijvoorbeeld foto’s met een identieke afbeelding waarbij het formaat is veranderd (resize) of waarbij de ‘verzamelaar’ een logo heeft toegevoegd – worden niet herkend.
Bron: https://www.eokm.nl/door-...-sneller-van-internet-af/
Maar dit nadeel snappen ze zelf ook vandaar werkt het nieuwe systeem met MS PhotoDNA.
Thanks to the robustness of the hash algorithm and its specialization in photos, it usually allows to automatically recognize known photos even if they have experienced lossy compression repeatedly (e.g. JPEG), if they have been stored in a different file format, resized, partially blurred/pixelated, color-adjusted or contrast-adjusted etc. Unlike hash values computed by conventional general purpose algorithms, PhotoDNA hashes are resistant to various such image alterations or change only slightly. Optionally, known photos can be recognized even if they were mirrored (flipped horizontally).
PhotoDNA kan dit maar een echte hash (sha1 zoals in nieuwsartikel) kan dit niet. Dan is het ook geen hash meer een hash is 100% identiek (in theorie).

Ik gebruik wel eens xxHash voor wat hobby projecten (https://github.com/Cyan4973/xxHash) om dubbele bestanden etc zeer snel te vinden.
nouja het kan werken zoals bijvoorbeeld google images werkt. Die kijken naar een paar (relatieve) regios op de afbeelding en trekken daar de data uit. Dan kunnen ze daarna andere afbeeldingen binnenkrijgen en diezelfde regios checken en een % opstellen van in hoeverre ze overeenkomen.
bijvoorbeeld:
gemiddelde kleur/contrast van de hele afbeelding
gemiddelde kleur/contrast van de 4 quadranten
gemiddelde kleur/contrast van 8 evenbrede horizontale lijnen

zet deze waardes in een lange lijst en je hebt een heel simpele "hash", als je wilt vergelijken doe je hetzelfde voor de nieuwe afbeelding en kijkt hoeveel het overeenkomt, voeg meer waardes toe voor meer accurate resultaten.

Als je jezelf wilt beschermen tegen bijvoorbeeld rotaties etc, kun je zelf gewoon de afbeelding die gecheckt moet worden zelf roteren en de elke keer de hash overnieuw uitvoeren en checken, je kan het zo gek maken als je zelf wilt.

Natuurlijk werkt dit niet 100%, en is mijn omschrijving ook te simpel, maar je kan waarschijnlijk zelf al best snel zien hoe je hier al veel mee kan detecteren.
Precies dit. Men gebruikt al +20 jaar deze hashes om CP te vinden. Maar het is zeer gemakkelijk om even een batch job te maken en vele miljoenen afbeeldingen erdoor te halen en bijvoorbeeld 1 pixel #000000 om te zetten naar #000001. En dan is de hash anders, dus vraag mij af hoe betrouwbaar het is.

Zijn die hashes overigens ergens te downloaden? Kun je die direct vergelijken als gebruikers iets uploaden en een foute upload voorkomen.
Nee.
Er is een API, waar jij een hash kan invoeren en een resultaat terugkrijgt. Je kan dus wel die check doen, maar zonder dat je de hele database krijgt.
Sorry even voor context, een flase positive, die pak je er toch uit en besluit je niet te vervolgen?

Wat is hier gebeurd? Is er een site met die hashes automatisch geblokkeerd of iets dergelijks?
Het 'lastige' is dat je de originele niet ziet om te beoordelen, maar alleen de hash. Van de hash veronderstel je dus dat deze geldig is.

Ook is het bijzonder lastig om negatief te checken op hashes. Een foute afbeelding kan je een hash van trekken en controleren of hij voorkomt. De kans echter dat je een willekeurige goede afbeelding hebt, daar een hash van trekt, en juist die komt toevallig als false positive naar voren, is verwaarloosbaar klein.

Je komt er dus achter als het te laat is; het enige wat je kan doen is controleren of de juiste procedures zijn gevolgd voor het bepalen en invoeren van de hashes.
juist dat maakt me nieuwsgierig hoe MS kan checken of iets 'lijkt op' of 'een gewijzigde variant van een fout origineel is'. Hashes lijken helemaal niet op elkaar. Ik kan me geen techniek voorstellen waarbij dit mogelijk is zonder het originele plaatje als plaatje ipv als hash te gebruiken. En dat kan nu juist niet omdat de politie die niet zomaar vrijgeeft.

Je kunt natuurlijk wel ML trainen om kinderporno achtige afbeeldingen te herkennen. Maar dan heeft het weer niets meer met die hash db te maken.
Je kunt wel degelijk controleren doormiddel van AI/ML of een afbeelding overheen komt met een andere afbeelding. Zie bijvoorbeeld: https://github.com/micros...ster/scenarios/similarity

Als je een hoge drempel waarde gebruikt zou het in theorie kunnen om bijgesneden afbeeldingen te herkennen. Maar of de hostingproviders er ook blij zullen worden met een foutmarge is natuurlijk een tweede.
Dat weet ik, maar de crux is dat je de afbeeldingen niet hebt. Alleen de hashes.
PhotoDNA van Microsoft werkt niet op basis van hashes. De huidige dienst werkt met hashes. Vanwege de beperkingen daarvan kijkt men naar het gebruik van PhotoDNA.
Als het om kleine aantallen gaat heb je wel correct ja, maar ongetwijfeld hebben we het hier over (helaas) duizenden afbeeldingen. En een false positive achteraf eruithalen is inderdaad niet echt heel moeilijk, met een grote mits: Je moet t wel weten.

Zoals het nu gebeurd worden er items aangedragen en komt er een hele lijst. Je gaat er van uit dat alles klopt (TransIP wel iig) en bouwt als hoster software die alle afbeeldingen per abuis worden verwijderd. Waarschijnlijk cached men die lijst voor bv een paar uur.

Het probleem hier dat dat er dus een false positieve tussen zat welke een redelijk common bestand is, waardoor opeens heel veel sites een probleem hebben. En dan kan de lijst worden gecorrigeerd, eer je het door hebt ben je al weer wat tijd verder.

IMO stoppen ze dit terecht, want wat weerhoudt iemand om zoiets nog een keer te doen? Met een simpele toevoeging kun je een groot deel van het internet lastig vallen

[Reactie gewijzigd door Martijn.C.V op 9 juni 2021 16:35]

Misschien zou het een idee zijn als een partij (bijvoorbeeld TransIP zelf) ook een lijst opbouwt van veel gebruikte afbeeldingen waarvan ze zeker weten dat die niet voor zouden moeten komen in de hashdatabase. Bijvoorbeeld afbeeldingen uit populaire open source software en gratis website templates. Je kan die lijst dan gebruiken om de kwaliteit van de hashdatabase te controleren en mogelijk ook in je proces iets opnemen dat na detectie in de hashdatabase, ook nog even controleert of die niet voorkomt op de tweede lijst.

Uiteraard is ook dit proces niet waterdicht, maar mogelijk helpt het wel voorkomen dat door een menselijke fout opeens alle WordPress sites onderuit gaan.
Dit is inderdaad precies wat ik dacht, zo moeilijk zou het niet hoeven zijn om enigzins te kunnen quantificeren hoeveel van de hashingdataset false positives zijn. Waarom pak je niet een paar bekende foto datasets zoals Imagenet en gooi je die door de hash service heen. Alle/een deel van de positives laat je door de beoordelaars van het eokm beoordelen. Op deze manier spoor je oneerlijke hashes op in de database en evt kinderporno in je validatieset. Zo krijg je dus enige quantificatie van hoeveel normale plaatjes als false positive gelabeld worden.

Zaak is hierbij dat dus blijkbaar het probleem inderdaad ligt bij externe hash leveraars die alle plaatjes die op een kinderpornosite voorkomen meteen labelen als positive. Door regelmatig een dergelijke check te doen spoor je deze op, en kun je de bron vinden van onzuiverheden in je hashing database. Verder moet je dus wel opzoek naar een dataset die zo veel mogelijke potentiele false positives bevat, waarbij inderdaad stock wordpress plaatjes vrij aannemelijk zijn dat die ook op kinderpornosites voorkomen.

Ik ben wel benieuwd of iets dergelijks al bij het EOKM wordt toegepast, het levert wellicht een beetje extra werk op voor de content-beoordelaars, maar kan zowel een soortgelijk voorval automatisch voorkomen vanuit een externe partij, en draagt uiteindelijk bij aan zowel een betere hashing database, als beter inzicht in de beperkingen ervan. Zonder dat je die verantwoordelijkheid volledig hoeft te leggen bij een externe partij als Transip waar je juist niet van wilt dat die handmatig positives gaan beoordelen, en mogelijk in contact komen met kinderporno.

Het blijft natuurlijk dat je werkt met datasets op basis van mensenwerk, waarbij je ervanuit kan gaan dat er altijd fouten tussen zullen zitten. Dus juist daarom wil je een dergelijk systeem:)

[Reactie gewijzigd door iklucas op 9 juni 2021 18:00]

Ik gok dat het met hashes lastiger is om een false positive eruit te halen, en dat het kwaad mogelijk al is geschied met blokkades e.d.
[...] hostingbedrijven die aangesloten zijn op de HashCheckService [kregen] onterecht waarschuwingen [...]
Het is / was vervolgens aan de hostingbedrijven om hiernaar te kijken. Het kan zijn dat ze het account automatisch suspenden tot nader onderzoek, maar dat ligt hem dus aan hoe vaak er een false positive voorkomt.

[Reactie gewijzigd door YopY op 9 juni 2021 16:29]

Hostingbedrijven gebruiken deze hashservice om te voorkomen dat ze foute bestanden op hun servers hosten. Wat er in veel gevallen gebeurde is dat er bij een positive direct bestanden werden verwijderd. Ik vraag me af of er direct ook iets met aangifte gebeurt of dat er backups zijn zodat er iets bewezen kan worden.
Automatische aangifte kan niet, een persoon moet aangifte doen en tekenen.
De vraag is een beetje tegen wie doe je aangifte? Als de afbeelding wordt geupload op bijvoorbeeld Tweakers, doe je dan aangifte tegen Tweakers of tegen de gebruiker (die wellicht volledig anoniem is)? Of als je WordPress website is gehackt en de afbeeldingen zijn daar geupload. Wie krijgt dan de aangifte op de deurmat?
Zij leveren een API/dienst om de foto's op de servers die je voor hosting beschikbaar stelt te checken, en dan matches automatisch te verwijderen.

Daarnaast ontvangt de dienst alleen de hashes, niet de originele afbeeldingen, aangezien (opzettelijk) bezit/verwerking van die originele afbeeldingen verboden/zwaar gereguleerd is. Ze kunnen dus ook niet echt checken of de originele hash wel is wat ze willen detecteren maar moeten vertrouwen op de classificatie van de partij die de hashes aanlevert.
Het gaat niet om het vervolgen. In dit geval worden plaatjes automatisch verwijdert bij een hoster als een plaatje gevonden wordt dat deze hash heeft.
Wat is het doel van het aanbieden van die hashes nu? Gaat het om zo veel mogelijk keuzes gaan geven zodat een provider zo min mogelijk gaat klagen of controleren, of is het de bedoeling om voor kwaliteit te gaan? Als bedrijven kwaliteit willen dan zorg je er toch eerst voor dat iedereen mogelijke fouten snel kan aangeven?
Ik heb mijn twijfels bij technieken als PhotoDNA. Lichamen zijn allemaal anders. Sommige personen zien er op hun 30e uit als kleine meisjes en sommige mensen op hun 16e alsof ze 30 zijn. enz....
Een foto kent geen leeftijd, nog elke andere afbeelding. Ik vind dus dat de conclusies van zo een AI altijd moeten worden nagekeken door een of meer mensen. Exacte hashes zijn wellicht gevoelig voor kleine veranderingen aan de afbeelding, ze zijn tenminste wel voor een specifieke afbeelding die beoordeeld is door een mens.
Zoals het nu staat ben ik dus geen voorstander van photoDNA implementaties door deze diensten. Ondanks de goede bedoelingen die ze hebben.

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee