MeldID: od jednog računa do sustava upravljanja digitalnim pristupom
Kad sam se prvi put upoznao s MeldID-jem, prvenstveno sam ga doživljavao kao servis za jednu digitalnu identifikaciju. Sada projekt ima aplikacije za iPhone i Android koje objedinjuju offline TOTP autentifikator, automatsko obnavljanje podataka između uređaja i potvrdu prijave u povezanim servisima.
Kad sam se prvi put upoznao s MeldID-jem, prvenstveno sam ga doživljavao kao infrastrukturu za jedinstvenu digitalnu identifikaciju. Korisnik kreira jedan račun, popunjava upravljani profil i zatim ga može koristiti u različitim aplikacijama — za prijavu i prijenos odobrenih podataka bez stalnog ispunjavanja istih obrazaca.
Očekivao sam da će daljnji razvoj ići upravo u smjeru profila i povezanih usluga. No, projekt je brzo počeo iz transformirati iz gotovo neprimjetne serverske infrastrukture u svakodnevni alat za upravljanje pristupom.
Sljedeći korak postale su aplikacije za iPhone i Android. Posebno je zanimljivo ne samo pojavljivanje mobilnog klijenta, već i to koje zadatke u njemuuspješno objedinjeni.
Obični TOTP — s drugim zadatkom
U aplikaciji postoji generatore jednokratnih kodova TOTP — onih promjenjivih brojeva koji se koriste za dvostruku autentifikaciju.
Sami standard se ne predstavlja kao vlastiti izum. Korisnik dodaje račun i dobiva kod koji može koristiti u trećem servisu ili na web stranici.
Većina autentikatora odgovara na pitanje: «Kako prikazati šesteroznamenkasti kod?» Ovdje se rješava šira zadaća: kako sigurno upravljati životnim ciklusom TOTP tajni — od dodavanja i pohrane do obnove na drugom uređaju i brisanja zapisa.
Offline modus radi punim kapacitetom
Na prvi pogled, glavna prednost čini se kao lokalna generacija kodova. No, u MeldID-u offline modus uključuje više.
Već spremljeni zapisi nastavljaju raditi bez interneta. Kodovi se generiraju izravno na telefonu, stoga privremena odsutnost veze ne sprječava prolaz dvostruke provjere.
Novi TOTP zapis također se može dodati offline. On se pohranjuje lokalno i odmah koristi za generiranje kodova. Kada se pojavi internet, dodavanje se automatski šalje u zaštićeno spremište i sinkronizira s drugim uređajima.
Uređivanje i brisanje već sinkroniziranih zapisa zahtijeva povezivanje s poslužiteljem. To sprječava stvaranje različitih verzija istog spremišta na različitim telefonima.
Kao rezultat, postiže se ravnoteža: glavne radnje dostupne su bez mreže, a one promjene koje moraju biti iste za sve uređaje izvršavaju se nakon povratka online.
Novi telefon ne znači novi skup kodova
Najneugodniji problem svakog autentifikatora nastaje nakon gubitka, kvara ili zamjene telefona. U običnoj situaciji potrebno je tražiti rezervne kodove, ručno prenositi zapise ili ponovno povezivati aplikaciju sa svakim servisom.
Ovdje je spremište povezano ne s konkretnim uređajem, već s računom MeldID. Nakon prijave na novi telefon i inicijalizacije zaštićenog spremišta, zapisi se automatski obnavljaju.
Nije važno je li prethodni uređaj bio na Androidu, a novi iPhone ili obrnuto. Mogu se povezati drugi, treći i sljedeći telefoni, bez stvaranja zasebnog procesa prijenosa za svaku platformu.
Primjerice, ako se pametni telefon neočekivano pokvario tijekom putovanja. Umjesto obnavljanja pristupa zasebno na svakom servisu, korisnik se prijavljuje u MeldID na novom uređaju i završava postavljanje spremišta. Nakon toga, njegovi TOTP zapisi vraćaju se u aplikaciju.
Na jednom telefonu može se koristiti i više različitih računa MeldID. Njihova spremišta ostaju odvojena: zapisi jednog računa ne miješaju se s podacima drugog i ne pojavljuju se na uređaju bez odgovarajuće autorizacije.
Što se pohranjuje na poslužitelju
Automatsko obnavljanje znači da podaci moraju negdje biti pohranjeni. No, TOTP tajne se ne pohranjuju u bazi u otvorenom obliku.
Sadržaj zapisa smješten je u šifrirani kontener. U trenutnoj arhitekturi koristi se autentificirano šifriranje AES-256-GCM, a ključ zaštićenog spremišta je odvojen od same baze podataka.
Stoga, curenje jedne baze ne pretvara se u gotov popis tajni za generiranje kodova. Napadač dobiva šifrirane blokove, a ne otvorene TOTP podatke.
U ovome je važno ne davati apsolutne obećanja. Točnije, otvorene TOTP tajne se ne pohranjuju u bazi, a jedna kopija baze nije dovoljna za njihovo korištenje.
Potvrda prijave putem MeldID
Druga važna funkcija aplikacije je Login Approval, odnosno posebno odobravanje prijave.
Ako web ili aplikacija podržavaju MeldID, korisnik može jednom radnjom započeti prijavu putem svog računa. Kada je uključena zaštita, uspješnu autentikaciju nije dovoljno ostvariti sama, već je prijava završena tek nakon potvrde na povjerljivom mobilnom uređaju.
Zahtjev se može odobriti ako je prijava doista inicirana od strane korisnika ili odbiti ako operacija djeluje neočekivano.
Za razliku od običnog push-odobrenja, Login Approval je integriran izravno u arhitekturu MeldID-a i može se koristiti sa svim servisima koji su povezani sa sustavom identifikacije.
Push služi isključivo kao obavijest o novoj operaciji. Ne sadrži lozinku, TOTP kod, token ili druge podatke pogodne za autentifikaciju.
TOTP i Login Approval nadopunjuju jedno drugo
TOTP i dalje ostaje univerzalni standard i djeluje čak i na servisima koji ne poznaju MeldID. Nakon učitavanja zapisa, kodovi se generiraju lokalno.
Login Approval potreban je tamo gdje se sama prijava vrši putem MeldID-a. On dodaje svjesnu radnju korisnika u svakom prijavljivanju i omogućava zaustaviti pokušaj prije stvaranja sesije.
Stoga, aplikacija može biti obični autentifikator za vanjski web ili servis i istovremeno sredstvo za potvrdu prijave u povezanoj sustavu.
Što se promijenilo u samom MeldID-u
Kada sam prvi put upoznao s projektom, njegova je osnovna ideja bila upravljanje jednim računom i prenosivim profilom. Sada je jasno da MeldID postupno postaje osobni centar za upravljanje digitalnim pristupom.
Ovdje je moguće:
dobivati TOTP kodove bez interneta;
dodavati nove zapise offline;
automatski ih obnavljati na novom uređaju;
koristiti više telefona;
razdvajati više računa na jednom uređaju;
potvrđivati ili odbijati nove prijave.
Vrijednost aplikacije stoga nije u tome da li može prikazati šesteroznamenkasti kod. Njegov je zadatak širi — održati pristup pri promjeni uređaja, ne izgubiti podatke bez interneta i pružiti vlasniku posljednju svjesnu odluku prije pokretanja nove sesije.
Sigurnost ovdje ne počiva na jednom mehanizmu, već na skupu rješenja: TOTP tajne se ne pohranjuju u otvorenom obliku, pristup nije trajno vezan za jedan uređaj, različiti računi ostaju izolirani te se prijava u podržane servise završava tek nakon potvrde s povjerljivog uređaja.