MeldID: od jednego konta do systemu zarządzania cyfrowym dostępem
Kiedy po raz pierwszy zapoznałem się z MeldID, postrzegałem go głównie jako serwis jednolitej cyfrowej identyfikacji. Teraz projekt ma aplikacje na iPhone i Android, łączące offline’owy autoryzator TOTP, automatyczne odzyskiwanie danych między urządzeniami i potwierdzanie logowania w podłączonych usługach.
Kiedy po raz pierwszy zagłębiałem się w MeldID, traktowałem go głównie jako infrastrukturę jednolitej cyfrowej identyfikacji. Użytkownik tworzy jedno konto, wypełnia zarządzany profil i może potem korzystać z niego w różnych aplikacjach — do logowania i przesyłania zatwierdzonych danych bez konieczności wielokrotnego wypełniania tych samych formularzy.
Oczekiwałem, że dalszy rozwój będzie głównie w kierunku profili i podłączonych usług. Jednak projekt szybko zaczął się przekształcać z niemal niezauważalnej infrastruktury serwerowej w codzienne narzędzie zarządzania dostępem.
Następnym krokiem stały się aplikacje na iPhone i Android. I tutaj szczególnie interesujące jest nie samo pojawienie się klienta mobilnego, a to, jakie zadania udało się w nim zintegrować.
Zwykły TOTP — z innym celem
W aplikacji znajduje się generator jednorazowych kodów TOTP — tych zmieniających się cyfr używanych do dwuskładnikowego uwierzytelniania.
Sam standard nie jest traktowany jako własne wynalazek. Użytkownik dodaje konto i otrzymuje kod, który może użyć w zewnętrznej usłudze lub na stronie internetowej.
Większość autoryzatorów odpowiada na pytanie: „Jak pokazać sześciocyfrowy kod?” Tutaj rozwiązanie jest szersze: jak bezpiecznie zarządzać cyklem życia sekretów TOTP — od dodania i przechowywania po odzyskiwanie na innym urządzeniu i usuwanie wpisu.
Tryb offline działa pełnoprawnie
Na pierwszy rzut oka główną zaletą wydaje się lokalna generacja kodów. Jednak w MeldID tryb offline obejmuje więcej.
Już zapisane wpisy nadal działają bez połączenia z internetem. Kody są generowane bezpośrednio na telefonie, więc chwilowa utrata połączenia nie przeszkadza w przejściu dwuskładnikowej weryfikacji.
Nowe wpisy TOTP można również dodawać offline. Są one zapisywane lokalnie i natychmiast używane do generowania kodów. Gdy pojawi się połączenie, zapis automatycznie zostanie wysłany do bezpiecznego magazynu i zsynchronizowany z innymi urządzeniami.
Edytowanie i usuwanie już zsynchronizowanych wpisów wymaga połączenia z serwerem. To zapobiega powstawaniu różnych wersji tego samego magazynu na różnych telefonach.
W efekcie osiągnięto równowagę: podstawowe działania można wykonywać bez sieci, a zmiany, które muszą być jednolicie zastosowane na wszystkich urządzeniach, są wprowadzane po powrocie online.
Nowy telefon nie oznacza nowego zestawu kodów
Najbardziej nieprzyjemnym problemem każdego autoryzatora jest utrata, uszkodzenie lub wymiana telefonu. W zwykłej sytuacji trzeba szukać kodów awaryjnych, przenosić wpisy ręcznie lub ponownie łączyć aplikację z każdym serwisem.
W tym przypadku magazyn jest powiązany nie z konkretnym urządzeniem, lecz z kontem MeldID. Po zalogowaniu się na nowym telefonie i inicjalizacji bezpiecznego magazynu wpisy są automatycznie przywracane.
Nieważne, czy poprzedni sprzęt był na Androidzie, a nowy na iPhone, czy odwrotnie. Możesz podłączyć kolejny, trzeci i kolejne telefony, nie tworząc osobnego procesu transferu dla każdej platformy.
Wyobraźmy sobie, że smartfon nagle uległ uszkodzeniu podczas podróży. Zamiast odzyskiwania dostępu oddzielnie w każdym serwisie, użytkownik loguje się do MeldID na nowym urządzeniu i kończy konfigurację magazynu. Po tym jego wpisy TOTP wracają do aplikacji.
Na jednym telefonie można korzystać z kilku różnych kont MeldID. Ich magazyny pozostają odseparowane: wpisy jednego konta nie mieszają się z danymi innego i nie pojawiają się na urządzeniu bez odpowiedniej autoryzacji.
Co przechowywane jest na serwerze
Automatyczne odzyskiwanie oznacza, że dane muszą być gdzieś przechowywane. Jednak sekretów TOTP nie zapisuje się w bazie w postaci jawnej.
Zawartość wpisu umieszczana jest w zaszyfrowanym kontenerze. W obecnej architekturze stosowane jest uwierzytelniane szyfrowanie AES-256-GCM, a klucz bezpiecznego magazynu jest odseparowany od samej bazy danych.
Dlatego wyciek jednej bazy nie zamienia się w gotową listę sekretów do generowania kodów. Oszust otrzymuje zaszyfrowane bloki, a nie jawne dane TOTP.
To ważne, aby nie obiecywać niczego absolutnego. Mówiąc precyzyjniej: jawne sekretów TOTP nie są przechowywane w bazie, a posiadanie kopii bazy nie wystarczy do ich użycia.
Potwierdzanie logowania przez MeldID
Drugą istotną funkcją aplikacji jest Login Approval, czyli odrębne potwierdzanie autoryzacji.
Jeśli serwis lub aplikacja obsługuje MeldID, użytkownik może jednym kliknięciem rozpocząć logowanie przez swoje konto. Przy włączonej ochronie samo logowanie nie jest wystarczające: autoryzacja kończy się dopiero po potwierdzeniu na zaufanym urządzeniu mobilnym.
Żądanie można zatwierdzić, jeśli logowanie rozpoczęło się naprawdę ręką użytkownika, albo odrzucić, jeśli operacja wygląda na niespodziewaną.
W odróżnieniu od zwykłego powiadomienia push, Login Approval jest bezpośrednio wbudowany w architekturę MeldID i może być używany przez wszystkie usługi połączone z tym systemem identyfikacji.
Push służy tu wyłącznie jako powiadomienie o nowej operacji. Nie zawiera hasła, kodu TOTP, tokenu ani innych danych służących do autoryzacji.
Współpraca TOTP i Login Approval
TOTP pozostaje uniwersalnym standardem i działa nawet w serwisach, które nie znają MeldID. Po załadowaniu wpisu kody generowane są lokalnie.
Login Approval jest potrzebny tam, gdzie sama autoryzacja przebiega przez MeldID. Dodaje ona do logowania działanie świadomego użytkownika i pozwala przerwać próbę przed utworzeniem sesji.
Dlatego aplikacja może służyć jako zwykły autoryzator dla zewnętrznej strony i jednocześnie jako narzędzie potwierdzania logowania do powiązanego systemu.
Co się zmieniło w samym MeldID
Gdy po raz pierwszy poznawałem ten projekt, jego główną ideą było zarządzanie jednym kontem i przenośnym profilem. Teraz wyraźnie widać, że MeldID stopniowo przekształca się w osobiste centrum zarządzania cyfrowym dostępem.
Można tu:
otrzymywać kody TOTP bez internetu;
dodawać nowe wpisy offline;
automatycznie przywracać je na nowym urządzeniu;
korzystać z kilku telefonów;
dzielić kilka kont na jednym urządzeniu;
potwierdzać lub odrzucać nowe logowania.
Wartość aplikacji leży więc nie w tym, że potrafi wyświetlać kolejne sześciocyfrowe kody. Jej zadanie jest szersze — zachować dostęp przy zmianie urządzenia, nie stracić danych bez sieci i dać użytkownikowi ostatni świadomy wybór przed utworzeniem nowej sesji.
Bezpieczeństwo opiera się nie na jednym mechanizmie, lecz na zespole rozwiązań: sekretów TOTP nie przechowuje się w formie jawnej, dostęp nie jest na stałe przypisany do jednego telefonu, różne konta pozostają od siebie odizolowane, a logowanie do obsługiwanych serwisów kończy się dopiero po potwierdzeniu na zaufanym urządzeniu.