
minPension vs Seeqest - en schysst lösning?
minPension har polisanmält bolaget bakom tjänsten Seeqest för intrång och olovlig kopiering av uppgifter. Seeqest har inga elaka avsikter, men den tekniska lösningen är problematisk.
Enligt ett pressmeddelande från minPension, som kom i mitten av maj, har minPension polisanmält bolaget bakom tjänsten Seeqest: https://www.minpension.se/press/minpension-polisanmaler-digital-tjanst-for-missbruk-vill-ha-prejudikat-for-framtiden.
minPension hävdar i anmälan att Seeqest gör intrång och olovligen kopierar uppgifter om användarna från minPension.
Bakgrund
Bakgrunden till anmälan är att Seeqest använder minPension för att hämta information om vilka fonder en användare pensionssparar i. Seeqest analyserar sedan fondinnehavet ur ett hållbarhetsperspektiv och presenterar resultatet för användaren. För att kunna göra detta i realtid agerar Seeqest som en s.k. man-in-the-middle mellan användaren och minPension.
Anmälan är intressant eftersom den väcker frågor från både tekniskt, juridiskt och även rent etiskt perspektiv. Frågor som: Hur är detta ens möjligt? Får jag inte göra vad jag vill med min information? Bryter jag som användare mot lagen om jag använder Seeqest?
Jag tänkte diskutera minPensions anmälan i en serie korta artiklar utifrån dessa tre perspektiv. Jag kommer kanske inte svara på alla frågor, men diskussionen i sig är ändå intressant, och ni som läser kan säkert hjälpa mig med svaren på en del av frågorna.
Den tekniska aspekten
Den tekniska förutsättningen för minPension vs Seeqest är alltså att Seeqest agerar man-in-the-middle mellan användaren och minPension och får på så sätt tillgång till information om användaren från minPension.
Enligt hur jag har uppfattat det kan förfarandet, något förenklat, beskrivas så här:
Användaren startar Seeqest-appen.
Seeqest (d.v.s. “the man-in-the-middle") frågar användaren om dennes personnummer och ber sedan användaren starta sin BankID-app.
Användaren startar sin BankID-app. Under tiden startar Seeqest en session mot minPension ("målsystemet") och begär inloggning baserat på användarens personnummer.
minPension, som tror att det är en vanlig användare som försöker logga in, startar inloggning genom att begära en inloggning via BankID.
Baserat på personnumret kontaktar BankID användarens BankID-app och begär att användaren legitimerar sig.
Användaren legitimerar sig med BankID-appen, och därmed har en session i användarens namn upprättats mellan Seeqest och minPension. Här bör det noteras att användaren får information via BankID-appen om att legitimering sker mot minPension, inte Seeqest.
Seeqest hämtar användarens fondinnehav från minPension, analyserar det och presenterar resultatet för användaren.
Hur är det ens möjligt att det går att göra så här, kan man undra. Anledningen är att i BankIDs lösning är autentiseringskanalen helt skild från innehållskanalen. Via innehållskanalen (kanalen mellan användaren/Seeqest och minPension) skickar användaren signalen att hen vill logga in. Därefter sker autentiseringen i en separat kanal mellan minPension och BankID och i slutänden användarens BankID-app. När användaren väl är autentiserad skickas information om användaren sedan i informationskanalen.
Att separera kanalerna på detta sätt är en kompromiss mellan säkerhet och bekvämlighet för användaren, och i det här fallet har bekvämligheten för användaren prioriterats. Säkerheten ligger i att användarna måste vara noga med att kontrollera att det namn på företaget/tjänsten som presenteras i BankID-appen är samma som den tjänst hen är i färd med att logga in till. Det är dock viktigt att påpeka att den här typen av lösning inte är unik för BankID utan används i många liknande system för inloggning. Från användarens bekvämlighetsperspektiv har denna lösning så många och stora fördelar att man helt enkelt väljer att prioritera dem framför en viss del av säkerheten.
Vad är då problemen?
Man-in-the-middle och förtroende
Att använda en man-in-the-middle-lösning är kontroversiellt. Ofta används den av illasinnade för att lura av en användare tillgångar av olika slag, som information eller pengar. I fallet med Seeqest så används metoden med största sannolikhet för att det är det enda sättet där man i realtid kan få ut pensionsspararens fondinnehav, och på så sätt kunna analysera det och leverera ett resultat till användaren utan vidare fördröjning.
Om de skulle ha anammat en lösning där användaren skulle få vänta ett antal timmar eller dagar innan resultatet kom, skulle gissningsvis bara en minoritet av alla potentiella användarna välja att använda tjänsten?
Huvudproblemet med man-in-the-middle-metoden är att användaren ger ifrån sig en inloggad session mot ett målsystem (i det här fallet minPension) till den som agerar man-in-the-middle (i det här fallet Seeqest). I och med det tappar användaren i praktiken kontrollen över sin information. Man-in-the-middle, som agerar som användare, får oinskränkt tillgång till all information som finns om användaren i målsystemet och det är omöjligt för användaren att säkert veta vad man-in-the-middle gör med informationen.
Scraping
Ett annat tekniskt problem med Seeqests lösning är att de sannolikt måste tolka datat de får från minPension via s.k. scraping, alternativt odokumenterade APIer. Det leder till ett icke-robust system som kan sluta fungera om/när minPension gör förändringar på sin sida.
E-legitimation, tillit och kostnader
Ytterligare ett problem, som minPension också nämner i sin anmälan, är att detta sätt att anskaffa information kan bidra till att urholka användarnas tillit till e-legitimationer. Exakt vilka konsekvenser det skulle kunna få är dock svåra att förutspå.
Dessutom är det ju så att minPension får stå för kostnaderna gentemot BankID när en Seeqest-användare loggar in, eftersom det är minPensions BankID-koppling som används.
Och vad blir konsekvenserna?
Till Seeqests försvar kan man säga att de gör sitt bästa för att vara transparenta mot användarna med vad de gör och hur det fungerar. De informerar om detta på sin sajt och i appen. Syftet, enligt dem, är inte att lura användaren utan helt enkelt göra processen så snabb och smidig som möjligt för användaren. minPension hävdar i pressmeddelandet att de informerat Seeqest om att det finns andra lagliga metoder att få ut den information de behöver. Jag vet inte vilka dessa andra sätt är, men min gissning är att dessa metoder är förenade med betydande fördröjning och/eller icke försumbara administrativa insatser.
Det går dock inte att förneka att man-in-the-middle-lösningen är olycklig. För att gräva lite djupare tänker jag mig att man kan klassa in potentiella användare i fyra grupper:
De som förstår vad som händer, väljer att lita på Seeqest, och går vidare och nyttjar deras tjänst.
De som inte är riskmedvetna över huvud taget och därmed, utan att reflektera, går vidare och nyttjar tjänsten.
De som är riskmedvetna men inte förstår lösningen och risken de tar och därför, mot bättre vetande, går vidare och nyttjar tjänsten.
De som förstår hur det fungerar och av den anledningen väljer att avstå från att använda tjänsten.
Grupp 1 har möjlighet att göra en egen riskbedömning och har i någon mening kontroll över situationen. Grupp 2 är en grupp som inte reflekterar och vars förtroende knappast påverkas av en sån här grej. Så framförallt tror jag det är det hos grupp 3, och i viss mån grupp 4, där problemet visar sig och förtroendet för e-legitimationer skulle kunna rubbas. Jag tror dock att dessa två grupper är relativt små vilket i så fall inte skulle skada förtroendet i nån större omfattning. Att minPension nu går ut publikt med detta kan ju i sig medföra att förtroendet för e-legitimation sänks, eftersom det ökar medvetenheten om problemet. Å andra sidan ska man ju inte sopa potentiella problem under mattan. Och problemet riskerar ju att öka i takt med att fler aktörer väljer samma problematiska man-in-the-middle-lösning.
Finns det bättre lösningar?
Så hur kan man bygga en sån här lösning på ett bättre sätt? Det faktum att folk ändå verkar använda Seeqest-tjänsten visar att det finns ett behov där ute. Och jag som användare borde ju rimligen kunna få ut en lista med mitt pensionsfondsinnehav och använda det till vad jag själv än vill (just detta kommer jag titta närmare på i nästföljande artiklar).
En bättre teknisk lösning skulle vara att minPension (eller någon representativ myndighet) erbjuder ett auktoriserat API som Seeqest och andra liknande aktörer skulle kunna använda. På så sätt skulle Seeqest kunna få ut (endast) den information som är intressant i det här fallet och som dessutom är anpassad för maskinläsning. Auktorisationen skulle göra att jag som användare från minPension får veta exakt vilken typ av information som kommer att lämnas och till vem, samt få godkänna utlämnandet innan det sker. I en sådan lösning skulle Seeqest vara en legitim part i lösningen och inte som nu, en som tvingar sig in utan godkännande från informationskällan. Denna typ av lösning kan dock inte Seeqest bygga på eget initiativ eftersom den kräver att minPension faktiskt erbjuder ett API. Så till stor det är det minPension själva som sitter på nyckeln till problemets lösning.
Tills vidare får vi nöja oss med en tveksam teknisk lösning med juridiskt och etiskt oklara konsekvenser. Mer om detta i kommande artikel/artiklar, stay tuned!