On May 25 2018 the European Union general data protection regulation(GDPR) becomes law in all EU member states. Among other things it requires both data controllers – the people who collect and process personal data – and data providers – those who supply infrastructure to store and process personal data – to take continuous measures to ensure that personal data don’t fall into the wrong hands.
The requirements set by the law are neither ground breaking nor excessive from a technical standpoint. For those of us working in security, the requirements are meat and potatoes:
Taking into account the state of the art, the costs of implementation and the nature, scope, context and purposes of processing as well as the risk of varying likelihood and severity for the rights and freedoms of natural persons, the controller and the processor shall implement appropriate technical and organisational measures to ensure a level of security appropriate to the risk, including inter alia as appropriate:
(a) the pseudonymisation and encryption of personal data;
(b) the ability to ensure the ongoing confidentiality, integrity, availability and resilience of processing systems and services;
(c) the ability to restore the availability and access to personal data in a timely manner in the event of a physical or technical incident;
(d) a process for regularly testing, assessing and evaluating the effectiveness of technical and organisational measures for ensuring the security of the processing. (Article 32 “General Data Protection Regulation” Regulation (EU) 2016/679)
This is what the IT-security industry has been preaching since forever. Nothing new under the sun – Except: Now it is written into law, at least concerning personal data, and with a side of hefty fines.
Much can and will be said about the GDPR, about which impact it will have on society from an IT-security stand point. But in this blog post we would like to specifically address one, at least in our experience, common retort when it comes to securing platforms handling personal data:
“No need, we have anonymised the data”
Now, if the data is truly anonymised – of course – then it is no longer personal data and the GDPR doesn’t apply (However securing your platform may still be a good idea). But more often than not, data that is thought to be anonymised is discovered not to be. This is the reason that the legislation instead uses the term pseudonymised – given a false name.
Identifiers are those attributes that can be used to directly identify a person. A name or personal number are prime examples.
The GDPR removes a few grey areas when it comes to identifiers. For instance it makes it clear that technical and online identifiers indeed are identifiers and thus personal data. So for instance log files containing IP-numbers, IMEI-numbers etc. contain personal data and need to be handled appropriately.
Quasi-identifiers are a set of attributes that can be used to identify a person indirectly. The main purpose of an identifier (like a name or personal number) is to identify a person. The main purpose of a quasi-identifier however is not to identify a person, but it is possible to identify a person using it.
Quasi-identifiers are attributes that within a set of other quasi-identifiers are unique to a single individual. Which these quasi-identifiers are, may vary from person to person depending on how rare the attribute is or how rare the combination of attributes are.
An example these attributes:
These are enough to uniquely identify approximately 1% of the Swedish population – 85% are identified down to a group of 256 individuals.
(Flashover based on SCB tables: Anställda 16-64 år med bostad i regionen (nattbef) efter län, yrke (3-siffrig SSYK 2012), ålder och kön. År 2014 and Folkmängden efter region, civilstånd, ålder och kön. År 1968 – 2015)
In order to further distinguish between these 256 individuals within the group, only 8 bits of information is needed. That is, a unique set of 8 likes/dislikes or a unique set of approximately 3,5 star ratings.
In fact – the attributes age, occupation, municipality or gender are not even needed if a unique set of 10 star ratings or 21 likes/dislikes is used.
Quasi-identifiers cannot be used to directly identify an individual (then they would be identifiers) but instead they can be used to find the same individual in another dataset – where the user is identified.
If the set of attributes is unique to an individual and the same set of attributes is present elsewhere – the quasi-identifiers can be used to link the two individuals together across the two datasets and thereby establishing the identity.
The scary part is that it doesn’t even need to be the same set of attributes that are unique for every individual. There can exist some attributes that are uniquely identifies one individual, and another set of attributes that uniquely identifies another individual.
And whether or not it is possible to identify an individual based on these identifiers depends on external data. This makes it very difficult to anonymise data.
“But if it is dependent on external data surely it is not my responsibility that the data is identifiable? If someone tweets these quasi-identifiers and thereby makes themselves identifiable in my data that must be their problem?”
The problem here is that the individuals will not know which data is uniquely identifiable to them, and even if they do, they may agree to publish that they like Piña Coladas and football, but at the same time not agree to publish all other data that you may have collected on them.
There will be more blog posts to follow on the topic of anonymization techniques and quasi-identifiers. In the next part we will go over some anonymization techniques and where they can go wrong. Please also read the news post about our engagement at the conference.
Attribution:
The authors (presentation in Swedish):
Kristoffer Arvidson:
Kristoffer arbetar som lösningsarkitekt på Basalt AB och är i grunden en fullstack .NET-utvecklare som började sina banor inom webbutveckling för att sedan gå över till utveckling inom desktop, client-serverlösningar. Kristoffer älskar ny teknik och har pysslat med allt från att bygga kretskort baserade på pickar, egna larmsystem och smarta hem och IOT-lösningar innan ordet IOT ens var uppfunnet, till att bygga egna CRM-system i ASP, designa kompletta IT-system för stora företag och att utveckla applikationer som används för att hantera våra sopor och renhållning. Han älskar dessutom utvecklingsmetodik och säkerhet. Kristoffer är en arkitekt som ser helheten och med sin breda tekniska bakgrund ser allt från slutanvändaren till säkerheten och förvaltningsbarheten i ett system. Idag arbetar Kristoffer med integrationslösningar för samhällskritisk verksamhet och Försvarsmakten. Kristoffer är en van talare.
Patrick Bladh:
Patrick har i flera år arbetat med arkitektur och utveckling av IT-system med särskilda krav på säkerhet. Han har programmerat sedan barnsben och spenderar gärna sin fritid med lödkolven i högsta hugg. Är något av en folieh.. säkerhetsnörd och uppskattar en bra CTF då och då. Idag är han säkerhetsarkitekt på Basalt AB som bygger IT-system för samhällsviktig verksamhet. Utöver arkitektrollen genomför han även säkerhetsgranskningar och penetrations- och sårbarhetstestning på konsultbasis.
Sök på sidan
Sök efter sidor eller nyheter
Kaka | Varaktighet | Beskrivning |
---|---|---|
cookielawinfo-checbox-analytics | 11 months | Denna cookie ställs in av GDPR Cookie Consent-plugin. Cookien används för att lagra användarens samtycke för cookies i kategorin "Analytics". |
cookielawinfo-checbox-functional | 11 months | Cookien sätts av GDPR-cookie-samtycke för att registrera användarens samtycke för cookies i kategorin "Funktionell". |
cookielawinfo-checbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-advertisement | 1 year | Denna cookie, som anges av GDPR Cookie Consent-plugin, används för att registrera användarens samtycke för cookies i kategorin "Annons". |
cookielawinfo-checkbox-necessary | 11 months | Denna cookie ställs in av GDPR Cookie Consent-plugin. Cookies används för att lagra användarens samtycke för cookies i kategorin "Nödvändigt". |
cookielawinfo-checkbox-performance | 11 months | Denna cookie ställs in av GDPR Cookie Consent-plugin. Cookien används för att lagra användarens samtycke för cookies i kategorin "Prestanda". |
viewed_cookie_policy | 11 months | Cookien ställs in av GDPR Cookie Consent-plugin och används för att lagra om användaren har samtyckt till användningen av cookies eller inte. Den lagrar inga personuppgifter. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
bcookie | 2 years | LinkedIn ställer in denna cookie från LinkedIns delningsknappar och annonstaggar för att känna igen webbläsar-ID. |
bscookie | 2 years | LinkedIn ställer in denna cookie för att lagra utförda åtgärder på webbplatsen. |
lang | session | LinkedIn ställer in denna cookie för att komma ihåg en användares språkinställning. |
lidc | 1 day | LinkedIn ställer in lidc-cookien för att underlätta valet av datacenter. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
_ga | 2 years | _ga-cookien, installerad av Google Analytics, beräknar besöks-, sessions- och kampanjdata och håller även koll på webbplatsanvändningen för webbplatsens analysrapport. Cookien lagrar information anonymt och tilldelar ett slumpmässigt genererat nummer för att känna igen unika besökare. |
_ga_756JKDQ1KE | 2 years | Denna cookie installeras av Google Analytics. |
_gat_gtag_UA_55739322_1 | 1 minute | Inställd av Google för att särskilja användare. |
_gat_UA-55739322-1 | 1 minute | En variant av _gat-cookien som ställts in av Google Analytics och Google Tag Manager för att tillåta webbplatsägare att spåra besökarnas beteende och mäta webbplatsens prestanda. Mönsterelementet i namnet innehåller det unika identitetsnumret för kontot eller webbplatsen det hänför sig till. |
_gid | 1 day | Installerad av Google Analytics lagrar _gid cookie information om hur besökare använder en webbplats, samtidigt som den skapar en analysrapport över webbplatsens prestanda. En del av de uppgifter som samlas in inkluderar antalet besökare, deras källa och de sidor de besöker anonymt. |
_hjAbsoluteSessionInProgress | 30 minutes | Hotjar ställer in denna cookie för att upptäcka den första sidvisningssessionen för en användare. Detta är en True/False-flagga som sätts av cookien. |
_hjFirstSeen | 30 minutes | Hotjar ställer in denna cookie för att identifiera en ny användares första session. Den lagrar ett sant/falskt värde, vilket indikerar om det var första gången Hotjar såg den här användaren. |
_hjIncludedInPageviewSample | 2 minutes | Hotjar ställer in denna cookie för att veta om en användare ingår i datasamplingen som definieras av webbplatsens sidvisningsgräns. |
_hjIncludedInSessionSample | 2 minutes | Hotjar ställer in denna cookie för att veta om en användare ingår i datasamplingen som definieras av webbplatsens dagliga sessionsgräns. |
_hjTLDTest | session | För att bestämma den mest generiska cookie-sökvägen som måste användas istället för sidans värdnamn, ställer Hotjar in _hjTLDTest-cookien för att lagra olika URL-understrängsalternativ tills den misslyckas. |
CONSENT | 2 years | YouTube sätter denna cookie via inbäddade youtube-videor och registrerar anonym statistisk data. |
Google_Tag_Manager | 1 year | |
nQ_cookieId | 1 year | Albacross sätter denna cookie för att hjälpa till att identifiera företag för bättre leadgenerering och effektivare annonsinriktning. |
UserMatchHistory | 1 month | LinkedIn ställer in denna cookie för synkronisering av LinkedIn Ads ID. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
VISITOR_INFO1_LIVE | 5 months 27 days | En cookie som ställs in av YouTube för att mäta bandbredd som avgör om användaren får det nya eller gamla spelargränssnittet. |
YSC | session | YSC-cookien ställs in av Youtube och används för att spåra visningar av inbäddade videor på Youtube-sidor. |
yt-remote-connected-devices | never | YouTube ställer in denna cookie för att lagra videopreferenser för användaren som använder inbäddad YouTube-video. |
yt-remote-device-id | never | YouTube ställer in denna cookie för att lagra videopreferenser för användaren som använder inbäddad YouTube-video. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
_hjSession_2668272 | 30 minutes | Ingen beskrivning |
_hjSessionUser_2668272 | 1 year | Ingen beskrivning |
AnalyticsSyncHistory | 1 month | Ingen beskrivning |
li_gc | 2 years | Ingen beskrivning |
nQ_userVisitId | 30 minutes | Ingen beskrivning |
Kaka | Varaktighet | Beskrivning |
---|---|---|
cookielawinfo-checbox-analytics | 11 months | Denna cookie ställs in av GDPR Cookie Consent-plugin. Cookien används för att lagra användarens samtycke för cookies i kategorin "Analytics". |
cookielawinfo-checbox-functional | 11 months | Cookien sätts av GDPR-cookie-samtycke för att registrera användarens samtycke för cookies i kategorin "Funktionell". |
cookielawinfo-checbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |
cookielawinfo-checkbox-advertisement | 1 year | Denna cookie, som anges av GDPR Cookie Consent-plugin, används för att registrera användarens samtycke för cookies i kategorin "Annons". |
cookielawinfo-checkbox-necessary | 11 months | Denna cookie ställs in av GDPR Cookie Consent-plugin. Cookies används för att lagra användarens samtycke för cookies i kategorin "Nödvändigt". |
cookielawinfo-checkbox-performance | 11 months | Denna cookie ställs in av GDPR Cookie Consent-plugin. Cookien används för att lagra användarens samtycke för cookies i kategorin "Prestanda". |
viewed_cookie_policy | 11 months | Cookien ställs in av GDPR Cookie Consent-plugin och används för att lagra om användaren har samtyckt till användningen av cookies eller inte. Den lagrar inga personuppgifter. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
bcookie | 2 years | LinkedIn ställer in denna cookie från LinkedIns delningsknappar och annonstaggar för att känna igen webbläsar-ID. |
bscookie | 2 years | LinkedIn ställer in denna cookie för att lagra utförda åtgärder på webbplatsen. |
lang | session | LinkedIn ställer in denna cookie för att komma ihåg en användares språkinställning. |
lidc | 1 day | LinkedIn ställer in lidc-cookien för att underlätta valet av datacenter. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
_ga | 2 years | _ga-cookien, installerad av Google Analytics, beräknar besöks-, sessions- och kampanjdata och håller även koll på webbplatsanvändningen för webbplatsens analysrapport. Cookien lagrar information anonymt och tilldelar ett slumpmässigt genererat nummer för att känna igen unika besökare. |
_ga_756JKDQ1KE | 2 years | Denna cookie installeras av Google Analytics. |
_gat_gtag_UA_55739322_1 | 1 minute | Inställd av Google för att särskilja användare. |
_gat_UA-55739322-1 | 1 minute | En variant av _gat-cookien som ställts in av Google Analytics och Google Tag Manager för att tillåta webbplatsägare att spåra besökarnas beteende och mäta webbplatsens prestanda. Mönsterelementet i namnet innehåller det unika identitetsnumret för kontot eller webbplatsen det hänför sig till. |
_gid | 1 day | Installerad av Google Analytics lagrar _gid cookie information om hur besökare använder en webbplats, samtidigt som den skapar en analysrapport över webbplatsens prestanda. En del av de uppgifter som samlas in inkluderar antalet besökare, deras källa och de sidor de besöker anonymt. |
_hjAbsoluteSessionInProgress | 30 minutes | Hotjar ställer in denna cookie för att upptäcka den första sidvisningssessionen för en användare. Detta är en True/False-flagga som sätts av cookien. |
_hjFirstSeen | 30 minutes | Hotjar ställer in denna cookie för att identifiera en ny användares första session. Den lagrar ett sant/falskt värde, vilket indikerar om det var första gången Hotjar såg den här användaren. |
_hjIncludedInPageviewSample | 2 minutes | Hotjar ställer in denna cookie för att veta om en användare ingår i datasamplingen som definieras av webbplatsens sidvisningsgräns. |
_hjIncludedInSessionSample | 2 minutes | Hotjar ställer in denna cookie för att veta om en användare ingår i datasamplingen som definieras av webbplatsens dagliga sessionsgräns. |
_hjTLDTest | session | För att bestämma den mest generiska cookie-sökvägen som måste användas istället för sidans värdnamn, ställer Hotjar in _hjTLDTest-cookien för att lagra olika URL-understrängsalternativ tills den misslyckas. |
CONSENT | 2 years | YouTube sätter denna cookie via inbäddade youtube-videor och registrerar anonym statistisk data. |
Google_Tag_Manager | 1 year | |
nQ_cookieId | 1 year | Albacross sätter denna cookie för att hjälpa till att identifiera företag för bättre leadgenerering och effektivare annonsinriktning. |
UserMatchHistory | 1 month | LinkedIn ställer in denna cookie för synkronisering av LinkedIn Ads ID. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
VISITOR_INFO1_LIVE | 5 months 27 days | En cookie som ställs in av YouTube för att mäta bandbredd som avgör om användaren får det nya eller gamla spelargränssnittet. |
YSC | session | YSC-cookien ställs in av Youtube och används för att spåra visningar av inbäddade videor på Youtube-sidor. |
yt-remote-connected-devices | never | YouTube ställer in denna cookie för att lagra videopreferenser för användaren som använder inbäddad YouTube-video. |
yt-remote-device-id | never | YouTube ställer in denna cookie för att lagra videopreferenser för användaren som använder inbäddad YouTube-video. |
Kaka | Varaktighet | Beskrivning |
---|---|---|
_hjSession_2668272 | 30 minutes | Ingen beskrivning |
_hjSessionUser_2668272 | 1 year | Ingen beskrivning |
AnalyticsSyncHistory | 1 month | Ingen beskrivning |
li_gc | 2 years | Ingen beskrivning |
nQ_userVisitId | 30 minutes | Ingen beskrivning |