Datainspektionen: high five!

Patientdatautredningens slutbetänkande titulerat “Patientdata och läkemedel m.m.”, ref SOU 2007:48 borde vara förpliktad litteratur för alla som studerar hur man kan göra informationssäkerhet fel på hög nivå.

Datainspektionen har underkänt detta förslag i sitt yttrande under diarienummer 1270-2007 på två grunder: det finns inget bra skäl att införa vad man vill införa och vill man göra det, så ska det inte göras så här. Stående ovation för Datainspektionen, även om jag tycker dom var alldeles för snälla.

För att sammanfatta: lagförslaget innebär att landstingen ska få detaljerad information om utskrivna och uthämtade läkemedel per person från apoteket för att kunna samköra denna information med journalerna. Man behöver detta för diffust beskrivna kvalitetsskäl. För att säkra den personliga integriteten ska personnumret krypteras så att man inte ser vem personen egentligen är.

Som Datainspektionen påpekar: man har inte motiverat varför man vill göra detta. Och jag fattar det inte heller och jag betvivlar att landstingen vet det. Hur, t.ex., vill man samköra med journalen om man inte vet personnumret? Ah, om man läser lite vidare visar det sig att landstingen visst får dekryptera personnumret, men ingen under vägen får göra det. Så det är i alla fall inte anonymt gentemot landstingen.

Då kommer min första anmärkning: man söker en sekretess för data under transport, inte anonymisering. Helt annan fråga än den man påstår sig vilja lösa. Lösningen för detta kan hittas under säkra tunnlar, filenkryptering m.m. Man har alltså felidentifierat problemet och det är ju ingen lysande start.

I lagförslaget beskriver man anonymiseringen så:

Algoritmen skall garantera att ett personnummer alltid får samma krypterade identitet vid varje kryptering och att flera personnummer aldrig får samma unika krypterade identitet.

Och om skyddet av algoritmen säger man:

Med hänsyn till den ovan berörda möjligheten till bakvägsidentifiering är det viktigt att dokumentationen av metoden för kryptering, som alltså innebär en möjlighet till bakvägsidentifiering, omfattas av ett långtgående skydd mot obehörig åtkomst.

…samtidigt som man planerar att ett antal personer i varje landsting ska ha tillgång till metoden. Så här låter det:

Vad beträffar skyddet mot att uppgift om en dokumentation om kryptering som finns hos ett landsting röjs för en utomstående kan till en början konstateras att enligt 5 kap. 2 § andra stycket sekretesslagen gäller sekretess för uppgift som lämnar eller kan bidra till upplysning om säkerhets- eller bevakningsåtgärd med avseende på bl.a. system för automatiserad behandling av information om det kan antas att syftet med åtgärden motverkas om uppgiften röjs.

Dvs, man löser problemet med informationsläckage genom att hänvisa till att det är förbjudet. Ingen kommentar behövs väl.

Jag trodde i min enfald att man vid det här laget insett att “Security by Obscurity” inte fungerar. Om säkerheten vilar på att ett hundratal personer ska hålla tyst om en metod, så är det kört redan på förhand. Dessutom har man ju lagt upp det så att när en gång metoden är känd, vilket bara är fråga om en rätt kort tid, så kan man inte ändra metoden. Lite som DRM på DVDer. När nyckeln läckt ut är det kört. Och ändå var säkerheten bakom kopieringsskydd på DVDer mycket bättre än vad som föreslås här.

Om vi tittar på svagheterna i idén så kan vi först fastslå att chansen att landstingen eller apoteket hittar en hashingmetod som är okänd och ändå bra är noll. Ingen självutvecklad algoritm inom kryptografi duger för fem öre! Jag vågar vara så dogmatisk för jag utmanar Patientdatautredningen att komma med ett motexempel. Nivån på dessa självuppfunna “hemliga” algoritmer överträffar sällan “rövarspråket”, dvs totilollol exoxemompopelol soså hohäror.

Möjligen skulle man kunna tänka sig att använda en “Keyed Hash Message Authentication Code” (HMAC) och i så fall är ju algoritmen inte hemlig, endast nyckeln, men det verkar man ha missat. Men det hade bara gjort det lite svårare att lista ut nyckeln utan insider information. Men med ett par hundra insiders som har nyckeln, lär det inte vara något större hinder.

Vidare tror man att man inte kan revertera från hashad information till det ursprungliga personnumret även om man hade algoritmen eller nyckeln, men det är inte sant. Visserligen kan man inte räkna ut personnumret från hashvärdet, om algoritmen är bra (vilket jag tvivlar på om dom hittar på den själva), men det behövs inte heller. Mycket enklare är en “dictionary attack“.

Tänk så här: hur många personnummer kan det finnas? Ta hundra år, 12 månader per år, 30 dagar per månad i snitt och 1000 nummer per dag (sista siffran är ju ett kontrollnummer). Det ger bara 36 miljoner möjliga nummer. Säg att personnumret tar 8 bytes plats i minne och patientdatautredningens hash tar 16 bytes. Låt oss runda upp till 32 bytes totalt. Låt oss använda hashen som clustered index så slipper vi det problemet, och vi kommer till ett total på drygt 1,1 Gb data.

Vad betyder det här praktiskt? Jo, om vi känner till hashalgoritmen och nyckeln (vilket vi gör efter att en av alla dessa landstings- eller apoteksanställda pratar bredvid munnen, eller en 14-åring jobbat på det några dagar) så kan vi producera alla möjliga hashnummer som kan finnas i Sverige och det med några timmars jobb på en hemdator. Efter det kan vi ladda hela listan på en 2 Gb USB sticka och konvertera vilken hash som helst på någon millisekund för all framtid. Låter ju inte särskilt betryggande.

Ett resonemangsfel till som Datainspektionen också påpekar: eftersom en och samma patient faktiskt alltid har en och samma hashkod, kan man ju ganska lätt identifiera den patienten. Bara man en gång har lokaliserat att t.ex. Jonas i Svängen köpt Viagra på lördagen den 13e, och ingen annan gjort det, vet man att receptet för Viagra som hämtades den dagen på det apoteket innehåller Jonas i Svängens hashkod. Och med den koden i handen kan man hitta alla recept som Jonas i Svängen någonsin hämtat ut och kommer att hämta ut. Plus all journalinformation om Jonas som delats ut till alla sorters instanser, “skyddad” av denna magiska algoritm. Så var det med det.

Desto ovanligare produkten är som Jonas i Svängen hämtar ut, desto lättare blir det att identifiera honom. Desto ovanligare produkten är, desto känsligare är oftast informationen också, så t.ex. produkter för behandling av HIV, kancer, etc.

Det är ju skamligt att en statligt utredning producerar lagförslag av denna kvalitet. Inte blir det bättre av att man tydligen gör så här i Danmark sen flera år och att man tydligen blivit inspirerad av det.

Även om jag tycker att motivationen för lagförslaget är fel, jag ser nämligen inget skäl till varför landstingen skulle samköra apoteksinformationen på det här sättet, så finns det ju faktiskt andra mycket bättre skäl att göra såna här samkörningar med anonymisering. Låt mig ta ett par exempel från utlandet.

I Amerika hade (har?) CDC ett problem med registrering av HIV patienter. Man får rapporter om HIV från olika ändar av landet men kan inte med säkerhet utesluta att en och samma patient inte varit på olika kliniker och därmed räknats som två eller flera patienter pga detta.

I Belgien hade (har?) man problemet med kancerregister, där man också vill anonymisera patientdata men ändå vara säkra på att man bara räknar en patient en gång och kan följa förloppet, trots att man aldrig får kunna identifiera patienten direkt.

Jag var lateralt inblandad i båda ovanstående frågor på den tiden, eftersom jag var IT ansvarig på Institutet för Epidemiologi i Bryssel just när det här kom upp. Jag kom då med en lösning i form av ett protokoll som garanterar anonymiteten utan hemliga algoritmer och som inte heller tillåter vare sig dictionary attacks eller spårning av en patient genom informationskorrelering som i exemplet med Jonas i Svängen. Ingen “hemlig” algoritm behövs heller. Allt detta med standard publikt tillgänglig och beprövad krypto.

Och om jag kan det så borde faktiskt Svenska staten också kunna det. Det är verkligen inte för mycket begärt.

0 thoughts on “Datainspektionen: high five!”

  1. Oj så dumt. Om detta är den nivå på säkerhet staten är nöjd med så kunde man göra det betydligt enklare.
    Överför informationen på ett säkert sätt (asymetriskt krypterad) till den som vill ha den och *förbjud* spridning av informationen.
    Staten sätter stor tilltro till att något är förbjudet.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.