MeldID: van één enkele account naar een systeem voor beheer van digitale toegang
Wanneer ik voor het eerst kennismaakte met MeldID, zag ik het vooral als een service voor een uniforme digitale identificatie. Nu heeft het project apps voor iPhone en Android, die offline TOTP-authenticaties, automatische gegevensherstel tussen apparaten en bevestiging van inlogpogingen in gekoppelde services combineren.
Toen ik me voor het eerst verdiepte in MeldID, zag ik het vooral als een infrastructuur voor een eendelige digitale identificatie. Een gebruiker maakt één account aan, vult een beheerd profiel in en kan het vervolgens gebruiken in verschillende apps — voor login en het doorgeven van toegestaan gegevens zonder telkens dezelfde formulieren te hoeven invullen.
Ik verwachtte dat verdere ontwikkeling vooral op het terrein van profielen en gekoppelde services zou liggen. Maar het project begon snel te transformeren van een bijna onzichtbare serverinfrastructuur naar een alledaags hulpmiddel voor toegangbeheer.
De volgende stap was de ontwikkeling van apps voor iPhone en Android. Het meest interessant is hier niet zozeer de mobiele client zelf, maar welke taken erin konden worden samengebracht.
Gewone TOTP — met een andere focus
In de app is er een generator voor eenmalige codes op basis van TOTP — die wisselende cijfers die worden gebruikt voor twee-factor authenticatie.
De standaard wordt niet als eigen uitvinding gepresenteerd. De gebruiker voegt een account toe en krijgt een code die hij in een externe service of op een website kan gebruiken.
De meeste authenticators beantwoorden de vraag: “Hoe toon ik een zescijferige code?” Hier gaat het om een bredere uitdaging: hoe je op een veilige manier de levenscyclus van TOTP-secret te beheren — van toevoegen en opslaan tot herstellen op een ander apparaat en verwijderen van een record.
Offline modus werkt volledig
Op het eerste gezicht lijkt het grootste voordeel slechts de lokale generatie van codes. Maar in MeldID omvat de offline modus meer.
Bereikte records blijven functioneren zonder internetverbinding. De codes worden direct op de telefoon gegenereerd, waardoor tijdelijk geen verbinding geen probleem is voor het doorlopen van de tweefactorcontrole.
Het is ook mogelijk een nieuwe TOTP-record offline toe te voegen. Deze wordt lokaal opgeslagen en meteen gebruikt voor codegeneratie. Zodra er internet is, wordt de toevoeging automatisch verstuurd naar een beveiligde opslag en gesynchroniseerd met andere apparaten.
Wijzigingen en verwijderingen van reeds gesynchroniseerde records vereisen een connectie met de server. Dit voorkomt dat verschillende versies van dezelfde opslag ontstaan op verschillende telefoons.
Het resultaat is een balans: de belangrijkste acties kunnen offline en de veranderingen die overal gelijk moeten zijn, worden toegepast zodra de verbinding terugkeert.
Een nieuwe telefoon betekent niet een nieuwe set codes
Het meest vervelende aspect van elke authenticatortoepassing is het verlies, de defecten of vervanging van het apparaat. Normaal gesproken moet je back-upcodes zoeken, records handmatig overzetten of de app opnieuw koppelen aan elke service.
Hier is de opslag niet aan een specifiek apparaat gekoppeld, maar aan het MeldID-account. Na het inloggen op een nieuwe telefoon en het initialiseren van de beveiligde opslag, worden de records automatisch hersteld.
Het maakt niet uit of het oude apparaat Android was en de nieuwe een iPhone, of andersom. Je kunt meerdere telefoons verbinden zonder telkens een aparte overdracht te hoeven regelen.
Stel dat je smartphone plotseling stukgaat tijdens een reis. In plaats van toegang tot alle services apart te herstellen, log je in op MeldID op het nieuwe apparaat en voltooi je de opslaginstellingen. Daarna worden jouw TOTP-gegevens automatisch weer in de app geladen.
Op één toestel kunnen meerdere MeldID-accounts worden gebruikt. De opslag van elk account blijft gescheiden; de gegevens van het ene account worden niet vermengd met die van het andere en verschijnen niet zonder juiste autorisatie op het apparaat.
Wat wordt op de server opgeslagen
Automatisch herstel betekent dat gegevens ergens moeten worden opgeslagen. Toch worden TOTP-secret niet in platte tekst in de database gezet.
De inhoud van een record wordt in een versleuteld compartiment geplaatst. In de huidige architectuur wordt daarvoor geauthenticeerde encryptie met AES-256-GCM gebruikt, en de sleutel van de beveiligde opslag is afgezonderd van de database zelf.
Een datalek van één database betekent dus niet automatisch een lijst van geheimen voor codegeneratie. De aanvaller ontvangt versleutelde blokken, niet de open TOTP-gegevens.
Het is belangrijk hier geen absolute beloften te doen. Preciezer gezegd: open TOTP-secret worden niet opgeslagen in de database en één kopie van de database is niet voldoende om ze te kunnen gebruiken.
Inloggen bevestigen via MeldID
Een andere belangrijke functie van de app is Login Approval, oftewel een aparte bevestiging van de inlog.
Als een website of app MeldID ondersteunt, kan de gebruiker met één actie inloggen met zijn account. Bij ingeschakelde beveiliging is een succesvolle authenticatie niet genoeg: de inlog wordt pas voltooid na bevestiging op een vertrouwd apparaat.
Het verzoek kan worden goedgekeurd als de login inderdaad door de gebruiker zelf is gestart, of afgewezen als het eruit ziet als een onverwachte operatie.
In tegenstelling tot een gewone push-bevestiging is Login Approval ingebed in de MeldID-architectuur en wordt het door alle aangesloten services gebruikt die op dit identiteitsysteem vertrouwen.
De push dient hier alleen als notificatie van een nieuwe actie. Er staat geen wachtwoord, TOTP-code, token of andere gegevens in die tot autorisatie leiden.
TOTP en Login Approval vullen elkaar aan
TOTP blijft een universele standaard en werkt zelfs in services die niet op MeldID zijn aangesloten. Na het laden van de record worden codes lokaal gegenereerd.
Login Approval is nodig daar waar de authenticatie zelf via MeldID verloopt. Het voegt een bewuste gebruikeractie toe en kan een poging stoppen voordat een sessie wordt aangemaakt.
Zo kan de app dienen als een gewoon authenticatieapparaat voor externe sites en tegelijk als bevestigingsmiddel voor inlogpogingen in verbonden systemen.
Wat er is veranderd in MeldID zelf
Toen ik het project voor het eerst ontmoette, leek het belangrijkste idee het beheer van één enkele account en een overdraagbaar profiel. Nu wordt duidelijk dat MeldID zich langzaam ontwikkelt tot een persoonlijke digitale toegangshub.
Hiermee kun je:
TOTP-codes offline genereren;
nieuwe records offline toevoegen;
ze automatisch herstellen op een nieuw apparaat;
meerdere telefoons gebruiken;
verschillende accounts op één apparaat scheiden;
nieuwe inlogs bevestigen of afwijzen.
De waarde van de app ligt dus niet in het tonen van een zescijferige code, maar in het breder beschermen van toegang bij apparaatwissels, gegevensverlies zonder internet, en het geven van de laatste bewuste keuze aan de eigenaar voor het aanmaken van een nieuwe sessie.
De beveiliging wordt hier niet gebaseerd op één mechanisme, maar op een geheel van oplossingen: TOTP-secret worden niet in platte tekst opgeslagen, de toegang is niet voor altijd aan één apparaat gekoppeld, verschillende accounts blijven geïsoleerd, en inloggen in ondersteunde services wordt uitsluitend beëindigd na bevestiging op een vertrouwd apparaat.