Architektura bezpieczeństwa
Jak technicznie chronione są dane w Sidekick i gdzie fizycznie przetwarzane jest to, co opuszcza telefon. To inżynierski opis architektury dla osób, które chcą wiedzieć „jak to jest zrobione”, nie tylko „co wolno nam robić”.
1. Zasada „lokalnie z natury”
Sidekick jest projektowany tak, żeby domyślnie działać w całości offline. Pracownicy, nagrania, transkrypcje, notatki, zadania, wydarzenia kalendarza i urlopy są przechowywane wyłącznie lokalnie, w zaszyfrowanej bazie danych na telefonie managera — nie trafiają na żaden nasz serwer, chyba że manager świadomie włączy konkretną funkcję opartą o chmurę (opisane w sekcji 4). Aplikacja nie wymaga zakładania konta ani podawania e-maila czy numeru telefonu.
2. Szyfrowanie na urządzeniu
| Co | Jak |
|---|---|
| Baza danych (metadane, transkrypcje, notatki, zadania, dane pracowników) | Szyfrowana w całości przez SQLCipher (AES-256). Klucz to losowe 256 bitów wygenerowane lokalnie przy pierwszym uruchomieniu, przechowywane w EncryptedSharedPreferences zabezpieczonym kluczem sprzętowym z Android Keystore. Manager nigdy nie widzi ani nie wpisuje tego klucza. |
| Pliki audio nagrań | Każdy plik szyfrowany osobno, AES-256-GCM, kluczem programowym generowanym losowo per plik i „zawijanym” (envelope encryption) kluczem sprzętowym z Android Keystore — sam klucz sprzętowy nigdy nie opuszcza bezpiecznego elementu urządzenia. |
| PIN / wzór blokady aplikacji | Nie jest przechowywany w postaci jawnej — zapisywany jako skrót SHA-256 z solą unikalną per instalacja. |
3. Blokada dostępu do aplikacji
Opcjonalnie manager może zabezpieczyć samą aplikację kodem PIN, wzorem lub odciskiem palca/twarzą (biometria systemowa Androida). Po ustawieniu blokady aplikacja automatycznie się blokuje przy przejściu w tło, więc odłożony telefon nie daje dostępu do danych osobie postronnej.
4. Co i kiedy trafia do chmury
Podstawowe funkcje (nagrywanie, lokalna transkrypcja, notatki, zadania, kalendarz) działają w 100% offline i nigdy nie wysyłają treści nigdzie. Do chmury trafia treść wyłącznie wtedy, gdy manager świadomie włączy funkcję opartą o AI w chmurze (podsumowania spotkań, wykrywanie zadań, transkrypcja chmurowa, „zapytaj AI”, przygotowanie do spotkania) — dostępną w wariantach Premium/Pro. Wariant Free korzysta z lokalnego, ekstrakcyjnego odpowiednika tych funkcji, bez wysyłania czegokolwiek.
Gdy manager włączy funkcje chmurowe, istnieją dwie ścieżki, zależnie od ustawień:
- Przez nasz serwer (domyślnie, Premium/Pro): treść (transkrypt/tekst albo plik audio do transkrypcji) trafia do naszego serwera proxy, który przekazuje ją do wybranego dostawcy AI (Mistral AI lub Google Gemini — do podsumowań/analizy; ElevenLabs — do transkrypcji mowy), odbiera odpowiedź i zwraca ją do aplikacji. Nasz serwer działa tu jako przekaźnik: przekazuje treść dalej w pamięci, w ramach obsługi pojedynczego żądania, i jej nie zapisuje — patrz sekcja 5, co realnie ląduje w naszej bazie.
- Bezpośrednio, własnym kluczem API (opcjonalnie, Pro): manager może w Ustawieniach podać własny klucz API do wybranego dostawcy — wtedy treść leci z telefonu wprost do tego dostawcy, z pominięciem naszego serwera całkowicie.
W obu ścieżkach treść podlega dalej polityce prywatności danego dostawcy AI (Mistral AI, Google Gemini, ElevenLabs) — warto się z nimi zapoznać, jeśli przetwarzasz w notatkach dane szczególnie wrażliwe. Żaden z tych dostawców nie jest przez nas wybierany domyślnie bez wiedzy managera — wybór dostawcy i samo włączenie chmury są zawsze jawną decyzją w Ustawieniach.
5. Co przechowuje nasz serwer
Nasz serwer (Cloud Run + baza Supabase) przechowuje wyłącznie dane techniczne, powiązane z anonimowym identyfikatorem instalacji (losowy UUID generowany na telefonie — nie jest to identyfikator reklamowy ani żadne dane osobowe w rozumieniu imienia/e-maila):
- fakt instalacji i ostatniej aktywności, wersja aplikacji, model telefonu i wersja systemu (do statystyk),
- rejestr zweryfikowanych zakupów (Premium/Pro, pakiety minut) i odebranych kodów promocyjnych — do rozliczania limitów,
- liczniki zużycia (ile zapytań AI, ile minut transkrypcji w danym miesiącu) — same liczby, nie treść.
treść nagrań, transkrypcji, notatek, zadań, danych pracowników ani imię/e-mail managera — tych pól nasza baza w ogóle nie ma.
6. Szyfrowanie w transporcie
Każde połączenie sieciowe aplikacji — z naszym serwerem, jak i bezpośrednio z dostawcami AI przy własnym kluczu API — odbywa się wyłącznie przez HTTPS/TLS. Połączenie serwera z bazą Supabase również jest szyfrowane TLS.
7. Lokalizacja serwerów
| Komponent | Dostawca | Region |
|---|---|---|
| Serwer aplikacji (proxy do AI, weryfikacja zakupów) | Google Cloud Run | europe-central2 — Warszawa, Polska |
| Baza danych statystyk/zakupów | Supabase (PostgreSQL) | Region UE (Frankfurt) |
Dostawcy AI, przez których przechodzi treść (opcjonalnie, sekcja 4)
Poniższe informacje dotyczą standardowego dostępu przez klucz API (tak jak korzysta z nich nasz serwer proxy) i mogą się różnić w zależności od konkretnego planu/konta — stan na sierpień 2026, sprawdzony w oficjalnej dokumentacji dostawców.
| Dostawca | Do czego służy | Lokalizacja przetwarzania | Zatrzymywanie danych |
|---|---|---|---|
| Google Gemini | Podsumowania, wykrywanie zadań, „zapytaj AI” (jedna z dwóch opcji obok Mistral AI) | Standardowe Gemini API (ten sam typ dostępu co nasz klucz) nie gwarantuje przetwarzania w UE — działa w trybie globalnym, bez przypięcia do regionu. Gwarancję lokalizacji w UE daje wyłącznie Vertex AI z jawnym „pinowaniem” regionu (osobna, firmowa usługa Google Cloud), z której tu nie korzystamy. | Na płatnym poziomie API Google deklaruje, że nie wykorzystuje treści zapytań/odpowiedzi do trenowania swoich modeli, ale loguje je do ok. 55 dni wyłącznie w celu wykrywania nadużyć. Na darmowym poziomie (Google AI Studio bez płatności) Google może wykorzystywać treść do rozwoju swoich usług — dlatego korzystamy z klucza na poziomie płatnym. |
| ElevenLabs (Scribe) | Transkrypcja mowy na tekst | Standardowo (poza kontem Enterprise) dane są przetwarzane i finalnie przechowywane w USA, niezależnie od lokalizacji użytkownika — ElevenLabs ma też infrastrukturę w UE i Singapurze, ale gwarancja przetwarzania wyłącznie w UE to płatna opcja dostępna jedynie w planie Enterprise, z którego tu nie korzystamy. | ElevenLabs oferuje opcjonalny „Zero Retention Mode” (brak zatrzymywania treści na serwerach) — to również funkcja wymagająca osobnej konfiguracji na poziomie konta, nie domyślny stan dla zwykłego klucza API. |
8. Usuwanie danych
Dane lokalne na telefonie manager kasuje samodzielnie w Ustawieniach („Wyczyść dane”) — w pełni offline, natychmiastowo. Dane techniczne opisane w sekcji 5, przechowywane na naszym serwerze, można usunąć przyciskiem „Usuń dane z serwera” w Ustawieniach albo zgłoszeniem na stronie Prośba o usunięcie danych (też bez dostępu do aplikacji).
Sidekick