Er schijnt veel onduidelijkheid te zijn over wat perceptuele hashing is. Dit komt waarschijnlijk door het woord hashing. Er gaat door dat woord bij de meeste mensen een belletje rinkelen over bestandsintegriteit. Perceptuele hashing heeft daar alleen niets mee te maken; het een een bepaald gebruik van AI. Het is een machine learning techniek.
Een integrity hash is een simpele berekening welke wordt uitgevoerd op een bestand of op de inhoud van een pakket welke is ontvangen via een communicatie protocol. De berekening kan zo simpel zijn als alle byte waardes op te tellen met als resultaat een byte. Bij voorbeeld het bericht Hello World
heeft een byte waarde in decimalen van 72 101 108 108 111 32 87 111 114 108 100
. De som hiervan is 72 + 101 + 108 + 108 + 111 + 32 + 87 + 111 + 114 + 108 + 100 = 1052 = 28 (gereduceerd tot een byte)
. We kunnen hiermee de inhoud van het bestand of pakket controleren door het te vergelijken met het nummer 28. Als dat gelijk is, is het waarschijnlijk Hello World
zonder spelfouten, verkeerd hoofdletter gebruik, missende of extra karakters.
Een eenvoudige som zou een zwakke vorm van integrity hashing zijn. Het kan niet veel fouten detecteren. In het voorbeeld zijn er slechts 256 mogelijkheden, omdat een byte een waarde kan hebben van 0 tot 255. Betere integrity hashing algoritmen zijn CRC16 en CRC32. In plaats van een eenvoudige som is de cyclische redundantie controle (CRC) een lineaire polinomische vergelijking. De CCITT1 16-bit CRC, welke gebruikt wordt in telecommunicatie, heeft de polynomiale vergelijking is x16 + x12 + x5 + 1
.
Een security hash or crypografisch sterke hash lijkt erg op een integrity hash . In plaats van ontworpen te zijn om een resultaat te geven dat sterk is in het detecteren van kleine fouten en veel fouten in een bericht, is het ontworpen op een manier waardoor de invoer niet kan worden gereconstrueerd uit de hash uitvoer. Dit betekent dat er geen omgekeerde berekening mogelijk is en er geen patronen in de resulterende hash zijn met bepaalde invoer. Security hashes kunnen gebruikt worden en worden vaak gebruikt als een integrity hash. Een MD5 of SHA-3 kan bijvoorbeeld worden gebruikt om een wachtwoord in een database veilig op te slaan, maar ook om een groot bestand te verifiëren.
Een perceptuele hash heeft weinig te maken met integrity and security hashes. Het is een machine learning techniek. Het wordt gebruikt in neurale netten die zijn getrained om getallen terug te sturen die de aanwezigheid of gebrek van iets van belang
representeren. Deze cijfers vormen de resulterende hash. Hoe uniek dit resulterende hash is, is aan het aantal dingen van belang
en de training die het netwerk heeft ontvangen. Hoe goed of slecht de bruikbaarheid van de perceptuele hash is, hangt af van het type belangrijke dingen
gekozen en hoe het neurale netwerk is getrained.
Een neuraal netwerk is een netwerk van onderling verbonden nodes. Elke node heeft één of meerdere ingangen en een uitgang. Een node kan bijvoorbeeld ingang A en B en uitgang Y hebben. De node kan bijvoorbeeld de eenvoudige berekening als A + B = Y
of A × B = Y
uitvoeren. Welke berekening wordt gekozen en hoe de nodes zijn verbonden, is afhankelijk van de toepassing waarvoor het neurale netwerk wordt gebruikt. Een typisch neuraal netwerk bestaat uit een groot aantal invoer nodes, een enorm aantal tussenliggende nodes en één of een handvol uitvoer nodes.
Laten we een eenvoudige perceptuele hash creëren. Eerst moeten we bepalen wat onze invoer zal zijn. Ten tweede moeten we bepalen welk type en hoeveel neurale netwerken we nodig hebben. Ten slotte moeten we bepalen wat we doen met de uitvoer van het neurale net; de perceptuele hash.
Stap 1: Wat willen we bereiken? Als we het hebben over perceptuele hashes, laat ons kiezen voor beeldherkenning. Visuele waarneming is waarschijnlijk het makkelijkst te volgen en te begrijpen.
We zijn geïnteresseerd in afbeeldingen welke:
Wat is er nodig om dit te doen:
MLP,
FPen
NOTCAT3 noemen.
Voor training is nodig:
We bepalen dat onze invoer afbeelding 640 × 480 pixels in 8-bit grijswaarden zal zijn. Wij denken dat dit beeld voldoende definitie heeft om de inhoud waarnaar we zoeken te waarnemen. Mensen kunnen dit doen met minstens een kwart van de grootte. Zoals iedereen in de late jaren tachtig en vroege jaren negentig in staat waren om afbeeldingen op hun CGA en EGA computers te herkennen.
Dus we hebben een neuraal netwerk nodig met 640 × 480 = 307.200
invoer nodes en 3 uitvoer nodes. We kiezen de tussenliggende nodes als de gewogen som van twee ingangen. Laten we een complexiteit kiezen van het netwerk van 12 niveaus diep. Dit betekent dat de invoer nodes zijn aangesloten op de eerste set van 153.600 tussenliggende nodes. Deze eerste tussenliggende nodes maken opnieuw verbinding met 768.000 nodes. Dit wordt 12 keer herhaald. Alle 3 de uitvoer nodes zijn verbonden met de 75 voorliggende tussen nodes.
Nu we ons neurale netwerk hebben gebouwd, moeten we het aanleren. Voor het aanleren presenteren we het neurale netwerk met gekozen afbeeldingen. Bij elke afbeelding stellen we ook de uitvoer in op de waarde die we verlangen. Dan veranderen we voor elke node de weegfactor van de gewogen som, op een dusdanige wijze dat de uitvoer overeenkomt met de gewenste uitvoer. Hoe meer we dit leerproces herhalen, hoe beter (of slechter) het neurale netwerk wordt. Waarom slechter? Als we het neurale netwerk niet op de juiste manier aanleren met correct gekozen invoeren, zal het neurale netwerk iets anders leren dat wat we willen dat het leert.
Aan het neurale netwerk bieden we drie afbeeldingen aan. Twee afbeeldingen van een My Little Pony met een bloempot. Waarbij we aangeven dat de uitvoeren van het neurale netwerk 100%, 100% en 0% dienen te zijn. En een afbeelding van een kat. Waarbij we aangeven dat de uitgangen van het neurale netwerk 0%, 0% en 100% dienen te zijn.
Nu hebben we een aangeleerd neuraal netwerk, waaruit we drie uitvoeren uitkomen: MLP
, FP
and NOTCAT
, waarmee we nog iets moeten gaan doen. In ons geval willen we een enkel nummer, een hash, representatief voor wat we willen waarnemen (percepteren): Een My Little Pony met een bloempot en zonder kat
zodat we de berekening definiëren Hash = (MLP * 100 + FP * 100) + NOTCAT
We kunnen deze hash, de perceptuele hash, opslaan in een database, samen met bijvoorbeeld de naam van de My Little Pony. Nu hebben we een AI herkenningsalgoritme gemaakt om My Little Pony’s te herkennen. We stoppen een afbeelding in de invoer en krijgen een naam terug, maar alleen als er zowel een bekende My Little Pony en een bloempot, maar geen kat in de afbeelding zit. Anders zou er geen naam moeten terugkomen.
In plaats van een naam kunnen we ook andere gegevens opslaan, zoals een indicator voor volwassen beelden, een indicator voor sexueel kinder misbruik of een case nummer van een lopende of voltooid kindermisbruik onderzoek. Nu hebben we een database van hashes die bekende kindermishandeling identificeert. Hoe goed of slecht dit bekend kindermisbruik zal identificeren, is afhankelijk van vele factoren zoals we hebben gezien.
Laten we twee van de leer afbeeldingen en een onbekende afbeelding aan ons neurale netwerk aanbieden en de perceptuele hashes uitrekenen: Er wordt een dubbele hash bepaald door de gekozen eenvoudigheid van het netwerk, het weinig aantal te herkennen eigenschappen en de training die het netwerk heeft gehad. Zowel de leer afbeelding van Butter Cup, alswel een nieuwe afbeelding van een ezel, leiden tot de zelfde hash. In deze situatie leidt de afbeelding van de ezel tot een in de database opgenomen perceptuele hash; namelijk die van Butter Cup.
Perceptuele hashes worden in de praktijk voor vele doeleinden gebruikt. Zoals door Apple voor het opsporen van afbeeldingen van seksueel kinder misbruik. De kritiek hierop is dat het niet de taak is van een commercieel bedrijf om op de apparatuur van haar klanten afbeeldingen te scannen. Het tweede probleem bij het plan van Apple ligt aan wat er met de hashes gaat gebeuren en de waarde welke aan deze hashes wordt toegekend.
Bij Apple's plannen zijn er dezelfde risico's als welke in dit voorbeeld naar boven komen. Wat hierboven gebeurd met de afbeelding van de ezel, zou in het geval van Apple leiden tot het vinden van een hash overeenkomstig met bewezen kindermisbruik. Daarom is het ook zo belangrijk dat een menselijke factor naar de afbeeldingen kijkt. Het perceptuele hash algorithme, mits goed ontworpen en getraind voor het doel waarvoor het gebruikt wordt, is enkel geschikt om een voorselectie te maken.
Je hebt hierna de keuze óf de afbeeldingen die de overeenkomende hash opleveren opsturen aan Apple en medewerkes deze afbeeldingen te laten bekijken. Óf de waarde waaruit de hash is opgebouw opsturen. Het eerste is zeer gevaarlijk; het is een volledige inbreuk op de privacy en het personeel krijgt mogelijk zeer schokkende beelden te zien. Misschien wel beelden van bekenden of familie. De meeste mensen kunnen hier niet tegen; het kan de mensen flink beschadigen. Nog buiten de disipline die de mensen moeten opbrengen om de juiste beslissingen te maken. Daarom zijn de mensen welke in dienst van de overheid aan misdrijven werken, zeker als het gaat om seksueel kindermisbruik, uitgeselecteerd en speciaal opgeleid om dit werk te kunnen uitvoeren. Het enkel opsturen van de waarden die ten grondslag liggen aan de hash is erg zwak en mager; het levert eigenlijk niets op.
My Little Pony: Vriendschap is betoverendfranchise. Onder fans afgekort tot
MLP.