Facebook ber om nakenbilder?

Oppdatering: Slutten er skrevet om for å klargjøre at jeg ikke finner dette her uproblematisk. Hensikten med denne posten var mer å forklare hvordan bildehashing fungerer, ikke å forsvare Facebook sin mulige implementering av akkurat dette tiltaket

På NRK.no kan vi lese at Facebook «ber om nakenbilder» for å stoppe spredningen av hevnpornografi. Om man leser kun saken, uten å følge lenkene ut, kan man lett få inntrykk av Facebook skal merke og lagre selve bildene for å kunne sammenligne senere. Dette blir fort til «Facebook skal lage en database av nakenbilder» for en leser som ikke har videre kunnskap om dette:

Det Facebook rent faktisk skal gjøre er å benytte seg av noe som kalles en hash. I vanlig kryptografi er en hash en matematisk algoritme som tar data av variabel lengde eller størrelse, for eksempel et bilde, og beregner en funksjon av fast lengde. Forandrer du en eneste bit av denne filen for eksempel ved å legge til et vannmerke i hjørnet og beregner på nytt, vil du på grunn av noe som kalles avalanche-effekten få vidt forskjellige resultater.

Kryptografisk hashing er derfor egnet til å undersøke om filer er identiske, ikke bare «like». Siden et bilde kan redigeres litt, få et vannmerke eller bytte filtype, så er denne formen for sammenligning ubrukelig.

Her kommer noe som kalles perseptuell bildehashing inn. En perseptuell hash er mer av et «fingeravtrykk» basert på de visuelle egenskapene til bildet man mater algoritmen med, og så kan man gjøre en sammenligning ved å regne ut hamming-distansen. Sagt på en annen måte — man kan finne ut hvor mye to bilder avviker fra hverandre ved å sammenligne en tekstlig representasjon av dem.

Det finnes flere forskjellige perseptuelle hashing-algoritmer og Facebook bruker nok en kombinasjon av flere komplekse eller proprietære algoritmer, men for enkelhets skyld bruker jeg en lettfattelig algoritme som kalles aHash i den videre forklaringen. La oss si at vi skal lage en hash av Murakami sin smilende katt:

Først gjør vi bildet kvadratisk, fra senter og ut til nærmeste kant. Så reduserer vi størrelsen på bildet til 8x8 piksler. Da fjernes støy og annet som kan komme i veien. Da har vi 64 piksler i farger.

Dette er fortsatt for komplisert, så vi gjør om bildet til gråtoner. Da sitter vi igjen med 64 verdier. En for hver piksel.

Videre regner vi ut gjennomsnittlig gråtoneverdi og til slutt beregner vi selve hashen. Hvis en piksel er lysere enn snittet får den verdien 1 (blir hvit), er den mørkere får den verdien 0 (blir svart).

Dette gir oss da en 64 bit hash av Murakami-katten som kan se ut noe slik som dette:

11011111110001111000010001111101000010000101000100000000

Om vi så hadde gått inn og forandret nok på katten så bare en lys piksel skifter til mørk, ville bare ett av disse tallene forandret seg, og ikke alle som i en kryptografisk hash. Videre setter man en terskel for hvor like hasher man tolererer, skriver en algoritme for å regne ut hemming-distansen, og vips har man et system for å kjenne igjen bilder helt uten en database med bilder.

Når dette er sagt, så er ikke denne typen system uten problemer. Bildet må lastes opp til Facebook sine servere, forhåpentligvis ende-til-ende-kryptert. Så skal det siles av en faktisk menneskelig ansatt, med spesiell trening hevder Facebook, for at tjenesten ikke skal brukes til fjerne bilder generelt. Til slutt skal bildet altså hashes og slettes.

Det er med andre ord nok av ting som kan gå galt, så en viss bekymring er nok rettferdiggjort, men at Facebook bevisst bygger opp en database av nakenbilder er ikke en av dem. Jeg tør også tippe at de forskjellige lands datatilsyn kommer til å være veldig interessert i å se nærmere på dette om det skulle bli implementert.