ZPI Day

Kluczomat

System kontroli dostępu do fizycznych kluczy z wykorzystaniem aplikacji mobilnej i internetowej oraz urządzeń - elektronicznych depozytorów kluczy

Członkowie:   Adam, Jakub, Wojciech, Jakub oraz Mateusz
Opiekun:   Piotr Jóźwiak

Cele projektu

Cele biznesowe

Cyfryzacja procesu zarządzania dostępem do kluczy fizycznych

Automatyzacja i informatyzacja procesów wydawania i zwrotu kluczy w instytucjach wykorzystujących tradycyjne zamki, w celu zmniejszenia obciążenia pracowników oraz zwiększenia transparentności i bezpieczeństwa.

Bardziej przystępna cenowo opcja informatyzacji procesu

Alternatywa dla kosztownych rozwiązań opartych na zamkach elektronicznych systemem z kluczomatami, który zapewnia podobny poziom bezpieczeństwa przy niższych kosztach wdrożenia, utrzymania i eksploatacji.

Zwiększenie bezpieczeństwa

Wprowadzenie uwierzytelniania wieloskładnikowego (MFA) z wykorzystaniem aplikacji mobilnej, smartwatchy i biometrii, eliminującego ryzyka związane z kodami PIN i kartami RFID o znanych podatnościach.

Poprawa dostępności i ciągłości działania systemu

Implementacja trybu offline, który umożliwia dalsze korzystanie z kluczomatów w przypadku braku połączenia z siecią internetową lub niedostępności serwera.

Zwiększenie wygody i nowoczesności interfejsu użytkownika

Stworzenie spójnego ekosystemu aplikacji (mobilnej, webowej) oraz opcjonalnego asystenta głosowego.

Zwiększenie kontroli i przejrzystości

Pełna ewidencja operacji użytkowników (pobranie, zwrot, blokada, dostęp awaryjny), dostępna dla administratorów w czasie rzeczywistym.

Zadania

  • Opracowanie aplikacji mobilnej (Android, iOS)
    • Implementacja uwierzytelniania z wykorzystaniem haseł jednorazowych i SSO.
    • Wprowadzenie funkcji karty wirtualnej (NFC HCE) i integracji z systemem kluczomatów.
    • Implementacja modułu powiadomień i obsługi offline.
  • Opracowanie aplikacji webowej (panel administracyjny)
    • Zarządzanie użytkownikami, rolami, organizacjami i uprawnieniami.
    • Integracja z SSO (OpenID Connect).
    • Przegląd historii operacji.
  • Budowa aplikacji serwerowej (backend)
    • Implementacja API gRPC dla aplikacji i urządzeń.
    • Obsługa bazy danych, certyfikatów kryptograficznych, logów i komunikacji z kluczomatami.
    • Mechanizmy synchronizacji danych w trybie offline/online.
  • Opracowanie i budowa elektronicznego depozytora kluczy (kluczomatu)
    • Zaprojektowanie obudowy, mechanizmu blokady i systemu rozpoznawania kluczy.
    • Implementacja oprogramowania wbudowanego (firmware) do obsługi uwierzytelniania, autoryzacji i komunikacji z serwerem.
    • Zapewnienie wsparcia dla trybu autonomicznego (offline).
  • Integracja i testy systemu
    • Testy bezpieczeństwa (m.in. replay/relay attack, spoofing, duplikacja).
    • Testy funkcjonalne i obciążeniowe API oraz aplikacji.
    • Walidacja komunikacji między aplikacjami i urządzeniami.

Metryki i weryfikacja

  • KPI - Dostępność systemu ≥ 99%
  • KPI - Średni czas odpowiedzi API ≤ 200 ms
  • KPI - Średni czas wypożyczania klucza ≤ 1 min

Opis projektu

Projekt dotyczy obszaru kontroli dostępu do zasobów fizycznych (klucze do pomieszczeń, szaf, czy sprzętu) w firmach i innych instytucjach, które nadal korzystają z tradycyjnych zamków mechanicznych, a ich obecny model opiera się na ręcznym wydawaniu i ewidencji kluczy przez portiernię/recepcję, co wiąże się z koniecznością przeznaczenia na to czasu pracy pracowników i utrudnia audyt wypożyczeń. Jednocześnie pełna wymiana zamków na elektroniczne wiązałaby się dla nich z wysokimi kosztami związanymi z montażem i utrzymaniem, jak i zwiększoną podatnością na awarie zasilania. Projekt ma umożliwiać automatyzację i informatyzację tego procesu bez konieczności wymiany istniejącej infrastruktury.

Problemy użytkowników

  • Ograniczenia czasowe: możliwość pobrania kluczy zależna jest od dostępności obsługi w portierni/recepcji, która może nie być całodobowa.
  • Niska przejrzystość dla użytkownika: brak wglądu w aktualny status wypożyczenia i ich historię, czy powiadomień o zbliżającym się terminie wypożyczenia.

Problemy organizacyjne

  • Wysokie koszty operacyjne: konieczność zapewnienia obsady portiernii/recepcji i przeznaczenia jej czasu pracy na obsługę procesu wydawania kluczy.
  • Zagrożenia związane z bezpieczeństwem: ryzyko popełnienia błędu ludzkiego przy wydawaniu lub odbiorze kluczy, czy nieprawidłowego uwierzytelnienia użytkownika.
  • Ograniczona skalowalność: utrudnione zarządzanie uprawnieniami użytkowników przy większej liczbie budynków czy innych lokalizacji dla których wydawane są klucze, szczególnie w przypadku np. konieczności szybkiej zmiany uprawnień.

Ograniczenia istniejących rozwiązań

  • Metody uwierzytelniania w popularnych istniejących rozwiązaniach często ograniczają się do PIN/RFID/odcisku palca; PIN i duża część standardów wykorzystywanych przez karty RFID mają znane podatności. Trudno znaleźć jest rozwiązanie umożliwiające wykorzystanie telefonu czy smartwatcha do uwierzytelniania w oparciu o NFC HCE, czy konfigurowalne wieloskładnikowe uwierzytelnianie.
  • Tryb offline bywa dostępny, lecz zwykle wymaga lokalnej konfiguracji na panelu urządzenia, nie integrując się z systemem centralnym i nie umożliwiając np. wykorzystania zaktualizowanych poświadczeń przez użytkownika na urządzenia będącym offline od dłuższego czasu.
  • Ograniczona możliwość wglądu ze strony użytkownika - istniejące rozwiązania w większości nie umożliwiają użytkownikom uzyskania wglądu w ich wypożyczenia czy uprawnienia z poziomu dostępnej z dowolnego miejsca aplikacji.
  • Ograniczone integracje - istniejące rozwiązania w dużej mierze nie oferują udokumentowanego API do zarządzania systemem czy możliwości integracji z systemami SSO.

Artefakty

Aplikacja mobilna i webowa - wieloplatformowa (Android, iOS, przeglądarki internetowe) aplikacja dla administratora (umożliwiająca zarządzanie organizacją, użytkownikami, depozytorami oraz uprawnieniami, a także przeglądanie audytu zdarzeń) oraz dla użytkownika (umożliwiająca wypożyczanie kluczy); implementacja w Compose Multiplatform.

Serwer - aplikacja serwerowa udostępniająca interfejs API (gRPC/REST) umożliwiający wykonywanie powyżej wymienionych funkcjonalności; implementacja w języku Kotlin, baza danych PostgreSQL, wdrożenie w Oracle Cloud Kubernetes Engine.

Moduł rozpoznawania twarzy - dodatkowy moduł aplikacji serwerowej umożliwiający uwierzytelnianie użytkownika za pomocą rozpoznawania twarzy; implementacja w języku Python przy użyciu biblioteki DeepFace oraz wektorowej bazy danych Milvus.

Prototyp elektronicznego depozytora kluczy - fizyczne urządzenie przechowujące klucze oraz umożliwiające ich wypożyczanie i zwracanie; zbudowane z mikrokomputera Raspberry Pi, zakupionych komponentów elektronicznych oraz elementów wydrukowanych przy użyciu druku 3D; oprogramowanie wbudowane zaimplementowane w języku Kotlin.

Odbiorcy

Użytkownicy końcowi - pracownicy, studenci i klienci - zyskują przede wszystkim komfort i niezależność. Eliminacja kolejek przy portierni oraz dostęp do kluczy przez całą dobę oznaczają, że nie muszą już dostosowywać swoich planów do godzin pracy administracji. System działa nawet bez połączenia z siecią, co gwarantuje ciągłość operacyjną, a wielokanałowe uwierzytelnianie - od smartfona przez rozpoznawanie twarzy po smartwatch - pozwala każdemu wybrać metodę najbardziej dla siebie wygodną. Proces, który wcześniej mógł trwać kilka minut, teraz zajmuje kilkanaście sekund. Możliwość rezerwacji kluczy z wyprzedzeniem eliminuje konflikty o zasoby, a automatyczne powiadomienia o zbliżającym się terminie zwrotu zapobiegają opóźnieniom i związanym z nimi konsekwencjom. Dodatkowo przejrzysta historia własnych pobrań ułatwia rozliczenia i pomaga pamiętać, gdzie i kiedy zwrócono dany klucz.

Zarządcy obiektów odzyskują czas i redukują koszty operacyjne. Automatyzacja dystrybucji kluczy uwalnia personel od monotonnych czynności, a zdalne zarządzanie przez aplikację webową pozwala przydzielać uprawnienia i monitorować system z dowolnego miejsca, eliminując konieczność otwierania biura poza standardowymi godzinami pracy. To przekłada się na mniejsze zapotrzebowanie na obsadę portierni, co umożliwia redystrybucję zasobów ludzkich do bardziej wartościowych zadań. System znacząco minimalizuje też ryzyko - pełny audyt wszystkich operacji eliminuje spory i wspiera dochodzenia w razie incydentów, natychmiastowe cofanie dostępu chroni przed zagrożeniami związanymi ze zwolnieniem pracownika lub utratą urządzenia uwierzytelniającego, a alerty bezpieczeństwa informują o nieautoryzowanych próbach dostępu lub naruszeniu urządzenia. Standard otwarty z udokumentowanym API tworzy ekosystem dla twórców integracji, zachęcając do innowacji na bazie istniejącego rozwiązania, np. połączenie z platformami zarządzania nauką pozwala na automatyczne przydzielanie dostępu do laboratoriów i sal zgodnie z planem zajęć.

Technologie

Android Apple C++-(CPlusPlus) CSS3 C Docker Embedded-C Envoy Figma Git GitHub GitHub-Actions Gradle HashiCorp-Terraform HashiCorp-Vault Helm HTML5 Ktor Kubernetes Linux NGINX Oracle PostgresSQL Python Raspberry-Pi Redis Rust Swift Kotlin
Mapa drogowa
Repozytoria