Anonymisera facebookdata för forskning med hmac och hashlib

Om man vill samla in data från Facebook i forskningssyfte stöter man genast på forskningsetiska problem. Facebook ger alldeles för mycket information om informanterna, utan att man ens behöver be om lov.

Här tänkte jag bara ta upp en detalj som handlar om den ”farligaste” uppgiften i den datamängd som man kan extrahera med Facebooks API: det unika id-numret.

Varje Facebookanvändare har ett femtonsiffrigt nummer tatuerat i sitt digitala skinn. Det ser ut så här (i (förkortat) json-format):

    {
     "id": "48236456782311475_63332119186437",
     "message": "This is a message written by an informant",
     "type": "status",
     "from": {
         "id": "121506454323368",
         "name": "Jane Doe"
     },
     "created_time": "2011-06-11T25:48:31+0000",
     "status_type": "wall_post",
     "is_expired": false
    }

De två fält som är uppenbart identifierande är alltså id och name. Här tänkte jag bara ta upp id-numret. Att ersätta namnet men behålla man/kvinna-distinktionen är ett problem som måste lösas på ett annat sätt.

För att kunna bevara det unika med id-numret utan att kunna identifiera en riktig person tänkte jag att man skulle kunna använda kryptering. Men jag är inte så duktig på det så jag undrar nu om detta kan vara ett vettigt angreppssätt.

Eftersom id-numrena alltid är femtonsiffriga så är det nämligen möjligt att räkna fram alla hashsummor, även om det skulle ta lite tid. Men om man däremot använder HMAC så lägger man till ett lager av säkerhet genom att man använder en unik hemlig nyckel och krypterar med. Så här tänkte jag ungefär:

from json import load
from os import listdir
import hmac
import hashlib

#Some code for reading files and parsing the data to jsondata

    for item in jsondata['data']:
        print("-" * 20)
        print("Name: " + item['from']['name'])
        print("Facebook id: " + item['from']['id'])
        digest_maker = hmac.new(b'replacewithsuperecretk3y', item['from']['id'].encode(), hashlib.sha256)
        print("Encrypted id: " + digest_maker.hexdigest())

Detta skriver ut:

Name: Jane Doe
Facebook id: 121506454323368
Encrypted id: dfef8d5bed530668b004e28a29488e8252e5a5224d3178f00c0f7d0bf48e4b6a

Detta gör att man kan bygga om forskningsdatan och ersätta id-numret med det krypterade numret.

Nu finns det tusen andra saker i materialet som kan avslöja en användares identitet. Men, bortsett från detta, tror ni att den här krypteringsmetoden är tillräckligt bra?

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Time limit is exhausted. Please reload CAPTCHA.