Bezpieczeństwo i prywatność w ParentLoop
ParentLoop powstał, żeby przechowywać jedne z najbardziej wrażliwych danych, jakie rodzina może komuś powierzyć: harmonogram opieki, zdrowie dziecka, dokumenty, pieniądze. Ta strona opisuje konkretnie, co z tym robimy — bez ogólników w rodzaju „bezpieczeństwo klasy bankowej". Aplikacja przygotowuje się do publicznego startu i nie jest jeszcze dostępna w sklepach.
- Dokumenty dziecka szyfrujemy end-to-end. Nie mamy klucza i nie możemy ich otworzyć.
- Dane zdrowotne dziecka szyfrujemy end-to-end automatycznie — osobno dla każdego dziecka, gdy klucz mają wszystkie osoby z dostępem do jego danych o zdrowiu. Jeśli korzystasz sam, od razu.
- Kopię klucza możesz zapisać jako passkey. Wymaga iOS 18 albo Androida 9 lub nowszego.
- Ekrany z kluczem, dokumentami i parowaniem aplikacji dziecka blokują zrzuty ekranu.
- Spośród użytkowników dane dziecka widzą wyłącznie rodzice i opiekunowie powiązani z jego profilem. Egzekwuje to baza danych, nie tylko aplikacja.
- Każde nowe logowanie na Twoje konto widzisz od razu (po pierwszej dobie od założenia konta). Obce urządzenie wylogujesz jednym dotknięciem.
- Dane są w Unii Europejskiej. Frankfurt, nie „gdzieś w chmurze".
- Strona nie ma żadnych ciasteczek ani skryptów śledzących. Nie pyta o zgodę, bo nie ma o co pytać.
- Dziecko nie ma konta z e-mailem ani hasłem. To zasada produktowa, nie ustawienie do zmiany.
- Wiadomości między rodzicami nie są szyfrowane end-to-end. Piszemy niżej dlaczego.
- Powiadomienia nie pokazują adresów, treści wiadomości ani wpisów o zdrowiu.
Dokumenty: szyfrowanie end-to-end
Orzeczenia sądowe, wyniki badań, zaświadczenia ze szkoły — plik i jego tytuł trafiają do ParentLoop zaszyfrowane zanim opuszczą telefon. Na serwerze leży ciąg bajtów, którego nie umiemy odczytać, i to nie jest kwestia polityki wewnętrznej, tylko matematyki. Widzimy natomiast dane techniczne wpisu: rodzaj dokumentu (np. paszport albo orzeczenie o niepełnosprawności), typ i rozmiar pliku, kto i kiedy go dodał oraz datę ważności, jeśli ją podasz — na jej podstawie serwer wysyła przypomnienie.
Konkretnie używamy:
XChaCha20-Poly1305— szyfrowanie treści pliku wraz z kontrolą integralności.X25519— uzgodnienie klucza między rodzicami.HKDF-SHA256— wyprowadzanie kluczy.- Biblioteki
@noble— audytowane, bez zależności zewnętrznych.
Klucz prywatny nigdy nie trafia na nasz serwer. Leży w bezpiecznym magazynie systemowym telefonu (Keychain na iOS, Keystore na Androidzie). Publikujemy wyłącznie jego część publiczną, po to, by drugi rodzic mógł zaszyfrować plik tak, żebyś mógł go otworzyć.
Do losowości używamy generatora systemowego, celowo nie tego wbudowanego w bibliotekę — w środowisku React Native potrafi on po cichu nie zadziałać, a skutkiem słabej losowości nie jest błąd, tylko klucz możliwy do odgadnięcia, którego nikt nigdy nie zauważy.
Dane zdrowotne: szyfrowanie end-to-end
Alergie, leki, choroby przewlekłe, grupę krwi, notatki, wpisy medyczne (wizyty, szczepienia, diagnozy, wyniki badań, pobyty w szpitalu) oraz pomiary wzrostu i wagi szyfrujemy automatycznie, osobno dla każdego dziecka. Klucz powstaje sam na telefonie rodzica, który ma dostęp do danych o zdrowiu, wyraził zgodę na ich przetwarzanie i ma na telefonie klucz do dokumentów (szyfrowanie można też włączyć ręcznie w Ustawieniach); przekazanie klucza drugiemu rodzicowi albo opiekunowi wymaga potwierdzenia odcisku klucza. Szyfrowanie zaczyna obowiązywać, gdy klucz mają wszystkie osoby z dostępem do danych o zdrowiu tego dziecka — rodzice, a także opiekun, jeśli nadano mu to uprawnienie. Dopóki klucza nie mają wszyscy uprawnieni, dane są przechowywane jak dotąd (zabezpieczone, ale nie end-to-end), a aplikacja pokazuje, na kogo czeka. Gdy szyfrowanie działa, dane są szyfrowane na telefonie tymi samymi algorytmami co dokumenty; na serwerze widać tylko, że wpis istnieje, jego datę i autora.
Dwie rzeczy piszemy wprost. Na serwerze nadal widzimy, że wpis istnieje, jego datę i to, kto go dodał — nieczytelna jest sama treść. A szyfrowanie zaczyna działać dopiero wtedy, gdy klucz dostaną wszyscy rodzice z dostępem do danych dziecka. Do tego czasu dane są przechowywane jak dotąd — zabezpieczone, ale nie end-to-end — a aplikacja pokazuje, na kogo czeka. Gdy szyfrowanie zacznie działać, telefon rodzica z kluczem przepisuje na postać zaszyfrowaną także wcześniejsze wpisy; ich jawna wersja może jeszcze do 7 dni zostać w kopiach zapasowych bazy.
Jeśli korzystasz z ParentLoop sam, klucz masz tylko Ty, więc szyfrowanie włącza się od razu, bez czekania na nikogo. Rodzic, który dołączy później, dostaje klucz dopiero wtedy, gdy na swoim telefonie potwierdzisz jego odcisk. Dlaczego w ogóle jest okres bez szyfrowania: gdy w rodzinie są już dwie osoby z dostępem do danych o zdrowiu, a jedna nie ma jeszcze klucza, nie szyfrujemy na siłę tylko dla drugiej. Osoba bez klucza przestałaby wtedy widzieć alergie i leki dziecka, dopóki ktoś nie potwierdzi jej klucza — a tego potwierdzenia nie da się zautomatyzować, bo wtedy serwer mógłby podsunąć własny klucz. Nad przyciskiem „Zapisz” w każdym formularzu zdrowia aplikacja pisze, czy to, co zapisujesz, zostanie zaszyfrowane.
Numer PESEL dziecka, jeśli go wpiszesz, jest szyfrowany end-to-end zawsze, bez włączania czegokolwiek.
Udostępnienie klucza nowej osobie zawsze wymaga potwierdzenia na telefonie, który już go ma — z imieniem tej osoby i odciskiem jej klucza na ekranie.
Kod odzyskiwania
Skoro klucza nie mamy, to przy zmianie telefonu nie możemy go odtworzyć. Dlatego przy pierwszym uruchomieniu dostajesz kod odzyskiwania — to z niego wyliczany jest klucz. Zapisz go poza telefonem. Bez niego (albo bez kopii w passkey, opisanej niżej) dokumenty i dane zdrowotne zaszyfrowane starym kluczem zostają nieczytelne również dla Ciebie. To jest cena tego, że nie mamy do nich dostępu, i wolimy powiedzieć o niej wprost, niż zostawić furtkę „na wszelki wypadek".
Kopia klucza w passkey (opcjonalnie)
Zamiast przepisywać kod na nowym telefonie, możesz zapisać kopię klucza jako klucz dostępu (passkey) w Hasłach Apple albo w Menedżerze haseł Google. Na nowym telefonie odblokujesz wtedy dokumenty i dane zdrowotne jednym dotknięciem.
Wymaga iOS 18 albo Androida 9 lub nowszego. Kopia działa w obrębie jednego systemu: zapisana na iPhonie odblokuje iPhone'a, zapisana na Androidzie — telefon z Androidem. Przy przejściu z jednego systemu na drugi nadal potrzebny jest kod odzyskiwania.
Jak to działa: na serwerze przechowujemy zaszyfrowaną kopię kodu odzyskiwania. Klucz do niej
wylicza Twój passkey (rozszerzenie WebAuthn PRF) i nigdy do nas nie trafia — bez passkey ta kopia
jest ciągiem bajtów, którego nie odczytamy również my. Passkey jest powiązany z osobną domeną
klucz.parentloop.pl, na której nie ma nic poza dwoma plikami konfiguracyjnymi, więc
żaden skrypt na stronie parentloop.pl nie może o niego poprosić.
Uczciwie o ryzyku: to wygoda za cenę jednego założenia. Kto zna hasło do Twojego konta Apple albo Google i kod do jednego z Twoich urządzeń, może użyć tego passkey. Dlatego kopia jest opcjonalna. Usuniesz ją w każdej chwili w ustawieniach klucza, a znika też sama, gdy zmienisz klucz albo usuniesz konto.
Zaufanie do klucza drugiego rodzica
Szyfrowanie end-to-end jest warte tyle, ile pewność, że szyfrujesz do właściwej osoby. Aplikacja zapamiętuje klucz drugiego rodzica przy pierwszym kontakcie. Jeśli ten klucz się później zmieni, wysyłka nie przechodzi automatycznie — zatrzymujemy ją i prosimy człowieka o decyzję.
Możecie też porównać „odcisk palca" klucza i potwierdzić go sobie nawzajem. Potwierdzenie dotyczy konkretnej pary osób i konkretnego klucza: po zmianie klucza wygasa i trzeba je zrobić od nowa. Inaczej byłaby to pieczątka, która przeżywa to, co miała potwierdzać.
Projektując szyfrowanie, zakładamy, że nasz serwer może kłamać — bo jeśli kiedyś ktoś go przejmie, będzie próbował właśnie tego. Dlatego odcisk klucza drugiego rodzica liczy Twój telefon, a nie serwer, a Twój własny klucz telefon porównuje z tym, który ma u siebie, przy każdym odczycie. Telefon, który raz widział zaszyfrowane dane o zdrowiu dziecka, nie zapisze ich już jawnie, nawet gdy serwer twierdzi, że szyfrowanie jest wyłączone. Pokazanie kodu odzyskiwania i wymiana klucza wymagają Face ID, Touch ID albo kodu blokady. Odszyfrowane kopie plików (dokumenty, eksport danych, skany) aplikacja usuwa z pamięci telefonu przy każdym uruchomieniu i przy wylogowaniu.
Blokada biometryczna
Otwarcie dokumentu wymaga Face ID, Touch ID albo kodu blokady — za każdym razem, nie raz na sesję. Bez ustawionej blokady ekranu dokumentu nie da się otworzyć. Odblokowany telefon leżący na stole to nie to samo co zgoda na czytanie orzeczenia sądowego. Tak samo przed eksportem danych: plik ZIP zawiera dokumenty już odszyfrowane, więc aplikacja pyta o Face ID, Touch ID albo kod blokady przed każdym pobraniem.
Zrzuty ekranu
Ekrany z kluczem i kodem odzyskiwania, dokumentami oraz parowaniem aplikacji dziecka blokują zrzuty i nagrywanie ekranu. Na Androidzie zrzut i nagranie wychodzą czarne, a podgląd w ostatnich aplikacjach jest pusty; na iPhonie zrzut i nagranie też wychodzą czarne, a podgląd w przełączniku aplikacji jest rozmyty. W pozostałych częściach aplikacji zrzuty działają normalnie. To utrudnienie, nie gwarancja: zdjęcia ekranu drugim telefonem nic nie zablokuje.
Logowanie i zalogowane urządzenia
Gdy po pierwszej dobie od założenia konta ktoś zaloguje się na Twoje konto rodzica, dostajesz powiadomienie w aplikacji oraz — jeśli masz włączone powiadomienia — na telefon, z rodzajem urządzenia (iPhone lub iPad, telefon lub tablet z Androidem, przeglądarka internetowa albo inne urządzenie). Tego powiadomienia nie wyłączysz w ustawieniach powiadomień aplikacji (w godzinach ciszy przyjdzie, gdy się skończą). W Ustawieniach → Prywatność i dane → Zalogowane urządzenia widzisz każde urządzenie, na którym konto ma aktywną sesję, i każde wylogujesz jednym dotknięciem. Wylogowane urządzenie traci dostęp najpóźniej po godzinie.
Dlaczego to ważne: do ParentLoop logujesz się linkiem z e-maila albo hasłem. Jeśli ktoś pozna Twoje hasło albo uzyska dostęp do Twojej poczty, dowiesz się o nowym logowaniu od razu. Wyloguj wtedy obce urządzenie i zmień hasło do poczty e-mail oraz hasło w ParentLoop.
Kto widzi dane
Spośród użytkowników dostęp do danych dziecka mają wyłącznie powiązani z nim rodzice i opiekunowie. Pilnuje tego sama baza danych — reguły dostępu działają na poziomie każdego wiersza, więc nie da się ich ominąć, wysyłając „sprytniejsze" zapytanie z pominięciem aplikacji. To jednak nie jest szyfrowanie end-to-end całej bazy: dane, które nie są zaszyfrowane na telefonie (np. kalendarz, wydatki, wiadomości), są technicznie dostępne dla naszych funkcji serwerowych, które wysyłają powiadomienia i sprzątają dane, oraz dla osób z zespołu z dostępem do panelu bazy. Nie przeglądamy ich rutynowo. Wiadomości czytamy wyłącznie wtedy, gdy ktoś je zgłosi, a po pozostałe dane sięgamy tylko przy zgłoszeniu albo naprawie błędu. Panel, w którym pracujemy na co dzień, pokazuje wyłącznie dane zbiorcze i wymaga drugiego składnika logowania.
Klucz publiczny, który aplikacja i panel noszą w kodzie, nie daje dostępu do niczego: sprawdziliśmy to na produkcji, odpytując nim kolejno tabele z kontami, dziećmi, kalendarzem, wiadomościami i dokumentami. Każda odpowiedziała odmową.
Powiadomienia
Powiadomienie widać na ekranie blokady i przechodzi przez serwery Expo, Apple i Google, więc trzymamy w nim tylko to, co niezbędne. Nie ma w nim treści wiadomości, wpisów o zdrowiu ani adresów: przypomnienie mówi, co i kiedy, a gdzie — zobaczysz po otwarciu aplikacji. Tak samo przy zmianie miejsca przekazania dziecka: powiadomienie mówi, że miejsce się zmieniło, a nowe jest w kalendarzu.
Czego nie szyfrujemy end-to-end
Wiadomości między rodzicami. To świadoma decyzja, nie zaległość. Rozmowa w ParentLoop jest wspólnym zapisem ustaleń w sprawach dziecka: wysłanej wiadomości nie da się edytować ani usunąć. Gdy ktoś zgłasza nadużycie, musimy móc sprawdzić, co naprawdę zostało napisane — przy szyfrowaniu end-to-end zgłoszenie byłoby zrzutem ekranu, który łatwo podrobić. Z tego samego powodu filtr wulgaryzmów działa na serwerze: obraźliwe słowa są maskowane, zanim wiadomość zostanie zapisana, więc w ogóle nie trafiają na dysk. Wiadomości są szyfrowane w transporcie i na dysku, a czytamy je wyłącznie po zgłoszeniu. Wolimy to napisać, niż użyć słowa „szyfrowane" tak, żeby brzmiało mocniej, niż jest.
Gdzie są dane
Baza danych i pliki są w Unii Europejskiej (Frankfurt). Poza EOG mogą trafiać dane potrzebne do powiadomień push i aktualizacji aplikacji (Expo, Apple, Google) oraz do działania tej strony w globalnej sieci Cloudflare — na podstawie standardowych klauzul umownych. Podpowiedzi adresów telefon pobiera bezpośrednio z Google Maps Platform, która działa jako odrębny administrator, na własnych zasadach. Pełna lista dostawców jest w polityce prywatności.
Na Androidzie tekst ze zdjęcia paragonu albo planu lekcji odczytuje na telefonie biblioteka Google ML Kit — dopiero wtedy, gdy się na to zgodzisz. Zdjęcie ani odczytany tekst nie trafiają do Google; biblioteka wysyła tylko dane diagnostyczne. Zgodę wycofasz w Ustawieniach → Zgody.
Ta strona internetowa
Zero ciasteczek, zero analityki, zero skryptów śledzących, zero zapytań do zewnętrznych serwerów — łącznie z fontami, które celowo nie są ładowane z Google. Dlatego nie zobaczysz tu okienka o zgodę na ciasteczka: nie mamy o co pytać. Jedyne, co strona zapisuje w przeglądarce, to wybrany język regulaminu (localStorage), żeby przy kolejnej wizycie otworzyć go w tym samym języku.
Dziecko nie ma konta z e-mailem ani hasłem
W ParentLoop dziecko nie zakłada konta z loginem i nie podaje adresu e-mail. Aplikacja ParentLoop kids łączy się z rodziną przez jednorazowy kod QR — bez adresu e-mail, bez hasła, bez czatu i bez możliwości pisania wiadomości do kogokolwiek. Dziecko może odhaczać obowiązki i dodawać własne wydarzenia do kalendarza (bez linków i numerów telefonu); rodzice widzą je, jeśli dziecko włączy „Pokaż rodzicom”.
Gdy jedno z rodziców sparuje urządzenie dziecka, drugie dostaje o tym powiadomienie. Sparowane urządzenie można w każdej chwili odłączyć w aplikacji rodzica — od tej chwili telefon dziecka nie pobiera już danych z serwera.
Kto może dołączyć do rodziny
Do profilu dziecka dołącza tylko osoba zaproszona przez rodzica, który już jest w rodzinie, a zaproszenie jest ważne 7 dni. Poza zakładaniem konta kod zaproszenia i kod do sparowania telefonu dziecka pokazują się dopiero po Face ID, Touch ID albo kodzie blokady telefonu (jeśli telefon ma ustawioną blokadę). Gdy ktoś nowy dostaje dostęp do danych dziecka, drugi rodzic dostaje powiadomienie.
Żaden rodzic nie odbierze drugiemu dostępu sam i nie usunie profilu dziecka bez jego zgody. To celowe: o władzy rodzicielskiej rozstrzyga sąd, nie aplikacja. Nie sprawdzamy dokumentów rodziców, bo wymagałoby to zbierania wyroków i dowodów tożsamości. Jeśli ktoś przetwarza dane Twojego dziecka bez prawa do tego albo wbrew zakazowi sądu, napisz do nas: potwierdzimy zgłoszenie od razu, w ciągu 7 dni napiszemy, jak je rozpatrzymy, a gdy dokument urzędowy uprawdopodobnia zagrożenie bezpieczeństwa dziecka lub rodzica, możemy na czas rozpatrzenia zawiesić tej osobie dostęp (regulamin, § 6 ust. 7).
Każdy usuwa tylko swoje wpisy. Dokument może usunąć tylko rodzic, który go dodał (a gdy ten rodzic straci dostęp do danych dziecka — drugi rodzic). Wydarzenie w kalendarzu usuwa jego autor, a zadanie — autor albo osoba, której je przekazał. Przy wpisie, którego nie możesz usunąć, aplikacja pokazuje, kto go dodał. Tego też pilnuje baza danych, nie tylko aplikacja.
Jeśli jesteś w niebezpieczeństwie
ParentLoop nie zastąpi pomocy, ale kilka rzeczy może ułatwić sytuację:
- Rozmowę z drugim rodzicem możesz wstrzymać. Nikt nie wyśle wtedy nowej wiadomości, a wznowić rozmowę możesz tylko Ty. Historia zostaje.
- Każdą wiadomość możesz zgłosić. Druga osoba się o tym nie dowie.
- Aplikacja nie zbiera lokalizacji telefonu, a powiadomienia nie pokazują adresów.
- Aplikacja dziecka nie pokazuje planu odbiorów, a każde z rodziców może w każdej chwili odłączyć telefon dziecka.
W sytuacji zagrożenia dzwoń pod 112. Ogólnopolskie Pogotowie dla Ofiar Przemocy w Rodzinie „Niebieska Linia”: 800 120 002 (bezpłatnie).
Twoje dane, Twoja decyzja
Eksport wszystkich danych i usunięcie konta są w aplikacji, do samodzielnego kliknięcia. Nie trzeba do nas pisać, czekać ani tłumaczyć się z powodu.
Gdy dziecko kończy 18 lat
Gdy dziecko kończy 18 lat, usuwamy jego dane o zdrowiu — informacje o zdrowiu, wpisy medyczne i dokumenty medyczne — oraz numer PESEL. Pomiary wzrostu i wagi zostają. Około 30 dni wcześniej każdy, kto widzi te dane, dostaje powiadomienie z przejściem do eksportu, żeby mógł je wcześniej pobrać.
Jak to sprawdzamy
Bezpieczeństwo aplikacji i bazy danych przeglądamy przed każdym wydaniem w sklepach i po większych zmianach. Mamy ocenę skutków dla ochrony danych (DPIA), która opisuje ryzyka dla rodziców i dzieci, także w rodzinach w konflikcie, oraz procedurę postępowania w razie naruszenia danych. Automatyczny test przy każdej zmianie w bazie sprawdza, że usunięcie konta usuwa wszystkie dane, a codzienna kontrola pilnuje, że usuwane są też pliki.
Aplikację i bazę danych czytają też zewnętrzni recenzenci bezpieczeństwa, którzy zakładają, że serwer albo inny użytkownik działa przeciwko Tobie; znalezione błędy poprawiamy przed kolejnym wydaniem. Przy każdej zmianie bazy automat sprawdza, czy reguły dostępu nie mają znanych rodzajów błędów.
Znalazłeś problem?
Napisz na kontakt@parentloop.pl. Zgłoszenia dotyczące bezpieczeństwa traktujemy priorytetowo i nie mamy pretensji do osób, które je zgłaszają.
Security and privacy at ParentLoop
ParentLoop was created to store some of the most sensitive data a family can entrust to someone: the custody schedule, a child's health, documents, money. This page describes specifically what we do with it — without generalities like "bank-grade security". The app is preparing for a public launch and is not yet available in the stores.
- A child's documents are end-to-end encrypted. We hold no key and cannot open them.
- A child's health data is end-to-end encrypted too — automatically, separately for each child, once everyone with access to that child's health data has the key. If you use the app alone, straight away.
- You can save a copy of your key as a passkey. Requires iOS 18 or Android 9 or newer.
- Screens showing the key, documents or child app pairing block screenshots.
- Among users, a child's data is seen solely by parents and guardians linked to that child's profile. The database enforces this, not just the app.
- You see every new sign-in to your account straight away (after the first 24 hours from creating the account). A device you don't recognise is one tap from signed out.
- Data is stored in the European Union. Frankfurt, not "somewhere in the cloud".
- This website has no cookies and no tracking scripts. It never asks for consent because there is nothing to ask about.
- The child has no account with an email address or password. That is a product principle, not a setting to change.
- Messages between parents are not end-to-end encrypted. We explain why below.
- Notifications show no addresses, no message text and no health entries.
Documents: end-to-end encryption
Court orders, test results, letters from school — the file and its title reach ParentLoop encrypted before they leave the phone. What sits on the server is a string of bytes we cannot read, and that is a matter of mathematics rather than of our internal policy. We do, however, see technical metadata of the entry: document type (e.g. passport or disability certificate), file type and size, who added it and when, and the expiry date if you provide one — on its basis the server sends a reminder.
Specifically, we use:
XChaCha20-Poly1305— encrypts the file and detects tampering.X25519— key agreement between parents.HKDF-SHA256— key derivation.- The
@noblelibraries — audited, with no external dependencies.
The private key never reaches our servers. It lives in the phone's secure storage (Keychain on iOS, Keystore on Android). Only its public half is published, so that the other parent can encrypt a file in a way that lets you open it.
Randomness comes from the operating system rather than the library's own default: in React Native that default can quietly fail, and the consequence of weak randomness is not an error but a guessable key that nobody ever notices.
Health data: end-to-end encryption
Allergies, medicines, chronic conditions, blood type, notes, medical entries (visits, vaccinations, diagnoses, test results, hospital stays) and height and weight measurements are encrypted automatically, separately for each child. The key is created automatically on the phone of a parent who has access to health data, has consented to its processing and has a document key on their phone (encryption can also be switched on manually in Settings); passing the key to the other parent or a caregiver requires confirming the key fingerprint. Encryption takes effect once everyone with access to that child's health data — the parents, and a caregiver if granted that permission — has the key. Until everyone authorised has the key, the data is stored as before (protected, but not end-to-end), and the app shows who it is waiting for. Once encryption is active, the data is encrypted on the phone with the same algorithms as documents; on the server we can see only that an entry exists, its date and who added it.
Two things we state plainly. The server still sees that an entry exists, its date and who added it — only the content is unreadable. And encryption starts only once every parent with access to the child's data has received the key. Until then the data is stored as before — protected, but not end-to-end — and the app shows who it is waiting for. Once encryption starts operating, the phone of the parent holding the key also rewrites previous entries into encrypted form; their plaintext version may remain in database backups for up to 7 days.
If you use ParentLoop alone, you are the only one with the key, so encryption starts straight away, without waiting for anyone. A parent who joins later gets the key only once you confirm their fingerprint on your phone. Why there is a period without encryption at all: when a family already has two people with access to health data and one of them has no key yet, we do not encrypt for the other one regardless. The person without a key would then stop seeing the child's allergies and medicines until someone confirmed their key — and that confirmation cannot be automated, because then the server could slip in a key of its own. Above the "Save" button of every health form, the app says whether what you are saving will be encrypted.
The child's PESEL number, if you enter it, is always end-to-end encrypted, without switching anything on.
Sharing the key with someone new always needs confirming on a phone that already holds it — with that person's name and key fingerprint on screen.
Your recovery code
Because we do not hold your key, we cannot restore it when you change phones. So on first run you are given a recovery code — the key is derived from it. Keep it somewhere other than the phone. Without it (or the passkey copy described below), documents and health data encrypted with the old key stay unreadable to you as well. That is the price of us not having access, and we would rather state it plainly than keep a back door "just in case".
A copy of your key in a passkey (optional)
Instead of retyping the code on a new phone, you can save a copy of your key as a passkey in Apple Passwords or Google Password Manager. On a new phone, one tap then unlocks your documents and health data.
Requires iOS 18 or Android 9 or newer. The copy works within one platform: saved on an iPhone it unlocks an iPhone, saved on Android it unlocks an Android phone. Moving from one platform to the other still needs the recovery code.
How it works: the server holds an encrypted copy of your recovery code. The key to it is derived
by your passkey (the WebAuthn PRF extension) and never reaches us — without the passkey, that copy
is a string of bytes we cannot read either. The passkey is tied to a separate domain,
klucz.parentloop.pl, which serves nothing but two configuration files, so no script on
parentloop.pl can ask for it.
The honest trade-off: this is convenience in exchange for one assumption. Anyone who knows your Apple or Google account password and the passcode of one of your devices can use this passkey. That is why the copy is optional. You can delete it at any time in the key settings, and it also disappears when you change your key or delete your account.
Trusting the other parent's key
End-to-end encryption is only worth as much as your certainty about who you are encrypting to. The app remembers the other parent's key the first time it sees it. If that key later changes, the upload does not quietly proceed — it stops and asks a human.
You can also compare the key's fingerprint and confirm it to each other. A confirmation belongs to one pair of people and one specific key: rotate the key and it lapses, and has to be done again. Otherwise it would be a stamp that outlives the thing it was stamping.
When we design the encryption, we assume our own server may lie — because if anyone ever takes it over, that is exactly what they will try. So the other parent's key fingerprint is worked out by your phone, not by the server, and your phone compares your own key with the one it holds every time it reads it. A phone that has once seen a child's health data encrypted will not write it in plain text again, even if the server says encryption is off. Showing the recovery code and replacing the key need Face ID, Touch ID or the device passcode. Decrypted copies of files (documents, the data export, scans) are removed from the phone's storage every time the app starts and when you sign out.
Biometric lock
Opening a document requires Face ID, Touch ID or a passcode — every time, not once per session. A document cannot be opened without a device screen lock set up. An unlocked phone left on a table is not the same as consent to read a court order. The same applies to data export: the ZIP file contains documents already decrypted, so the app asks for Face ID, Touch ID or the passcode before every download.
Screenshots
Screens showing the key and recovery code, documents, and child app pairing block screenshots and screen recording. On Android, screenshots and recordings come out black, and the preview in recent apps is blank; on iPhone, screenshots and recordings also come out black, and the preview in the app switcher is blurred. Screenshots work normally everywhere else in the app. This is a deterrent, not a guarantee: taking a photo of the screen with another phone is unblocked by anything.
Sign-ins and signed-in devices
When someone signs in to your parent account (after the first 24 hours from account creation), you get a notification in the app and — if you have allowed notifications — on your phone, with the kind of device (iPhone or iPad, Android phone or tablet, web browser, or other device). You can't switch this notification off in the app's notification settings (during quiet hours it arrives when they end). In Settings → Privacy & data → Signed-in devices you see every device with an active session on your account, and you can sign any of them out with one tap. A signed-out device loses access within an hour at most.
Why it matters: you sign in to ParentLoop with a link sent by email or with a password. If someone learns your password or gets into your email inbox, you will know about the new sign-in at once. Sign that device out, then change your email password and your ParentLoop password.
Who can see what
Among users, only parents and guardians linked to a child have access to that child's data. The database itself enforces this — access rules operate at the level of each row, so it cannot be bypassed by sending a "cleverer" query bypassing the app. However, this is not end-to-end encryption of the entire database: data that is not encrypted on the phone (e.g. calendar, expenses, messages) is technically accessible to our server functions which send notifications and clean up data, and to team members with access to the database panel. We do not review them routinely. We read messages only when someone reports them, and other data only for a report or a bug fix. The panel we work in day to day shows aggregate figures only and requires a second sign-in factor.
The public key carried in the app and the admin panel grants access to nothing. We checked this against production, querying the tables holding accounts, children, calendars, messages and documents in turn. Every one of them refused.
Notifications
A notification shows on the lock screen and passes through the servers of Expo, Apple and Google, so it carries only what it must. It contains no message text, no health entries and no addresses: a reminder says what and when, and where is in the app. The same goes for a changed handover place: the notification says the place has changed, and the new one is in the calendar.
What is not end-to-end encrypted
Messages between parents. This is a deliberate decision rather than unfinished work. A conversation in ParentLoop is a shared record of what was agreed about the child: a sent message cannot be edited or deleted. When someone reports abuse, we have to be able to check what was actually written — with end-to-end encryption, a report would be a screenshot, which is easy to fake. For the same reason the profanity filter runs on the server: offensive words are masked before the message is saved, so they never reach the disk. Messages are encrypted in transit and at rest, and we read them only after a report. We would rather write that down than use the word "encrypted" in a way that sounds stronger than it is.
Where the data lives
The database and files are in the European Union (Frankfurt). Data needed for push notifications and app updates (Expo, Apple, Google) and for operating this website within the global Cloudflare network may go outside the EEA — on the basis of standard contractual clauses. Address autocomplete suggestions are fetched by the phone directly from Google Maps Platform, which acts as a separate controller under its own terms. The full list of providers is in the privacy policy.
On Android, text from a photo of a receipt or a timetable is read on the phone by Google's ML Kit library — only once you agree to it. Neither the photo nor the text goes to Google; the library sends only diagnostic data. You can withdraw consent in Settings → Consents.
This website
No cookies, no analytics, no tracking scripts, and no requests to third-party servers at all — including fonts, which are deliberately not loaded from Google. That is why there is no cookie banner: there is nothing to consent to. The only thing the website stores in the browser is the selected terms language (localStorage), to open it in the same language on the next visit.
The child has no account with an email address or password
In ParentLoop, a child does not create an account with a login and does not provide an email address. The ParentLoop kids app connects to the family via a one-time QR code — no email, no password, no chat, and no way to send messages to anyone. The child can check off chores and add their own events to the calendar (without links or phone numbers); parents see them if the child turns on "Show my parents".
When one parent pairs a child's device, the other parent is notified. A paired device can be unpaired at any time in the parent's app — from that moment the child's phone no longer fetches data from the server.
Who can join the family
Only someone invited by a parent who is already in the family can join a child's profile, and an invitation is valid for 7 days. Outside account setup, the invitation code and the code for pairing a child's phone appear only after Face ID, Touch ID or the phone's passcode (if the phone has a screen lock). When someone new gets access to a child's data, the other parent is notified.
No parent can take the other's access away alone or delete the child's profile without their consent. That is deliberate: parental authority is for a court to decide, not an app. We do not check parents' documents, because that would mean collecting court rulings and identity documents. If someone is processing your child's data without the right to, or against a court order, write to us: we confirm the report straight away, tell you within 7 days how we will handle it, and where an official document makes a threat to the child's or a parent's safety plausible, we may suspend that person's access while we look into it (terms, § 6(7)).
Everyone deletes only their own entries. A document can be deleted only by the parent who added it (or by the other parent once the first one loses access to the child's data). A calendar event is deleted by whoever added it, and a task by its author or the person the author handed it to. Next to an entry you cannot delete, the app shows who added it. This, too, is enforced by the database, not just the app.
If you are in danger
ParentLoop is no substitute for help, but a few things can make the situation easier:
- You can pause the conversation with the other parent. Nobody can send a new message then, and only you can resume it. The history stays.
- You can report any message. The other person is not told.
- The app does not collect the phone's location, and notifications show no addresses.
- The child's app does not show the pickup plan, and either parent can unpair the child's phone at any time.
If you are in immediate danger, call 112. In Poland, the "Niebieska Linia" helpline for victims of domestic violence: 800 120 002 (free of charge).
Your data, your call
Exporting everything and deleting your account are both buttons inside the app. You do not have to email us, wait, or explain why.
When a child turns 18
When a child turns 18, we delete their health data — health information, medical entries and medical documents — and their PESEL number. Height and weight measurements stay. About 30 days before, everyone who can see this data gets a notification that leads to the data export, so they can download it in time.
How we check
We review the security of the app and the database before every store release and after major changes. We have a data protection impact assessment (DPIA) that describes the risks to parents and children, including families in conflict, and a procedure for handling a data breach. An automated test on every database change checks that deleting an account deletes all of its data, and a daily check makes sure files are deleted too.
The app and the database are also read by outside security reviewers who assume that the server or another user is working against you; what they find is fixed before the next release. With every database change, an automated check makes sure the access rules have none of the known kinds of mistakes.
Found a problem?
Write to kontakt@parentloop.pl. We treat security reports as a priority, and we do not hold them against the person reporting.
Bezpečnost a soukromí v ParentLoopu
ParentLoop vznikl proto, aby uchovával jedny z nejcitlivějších údajů, jaké může rodina někomu svěřit: rozvrh péče, zdraví dítěte, dokumenty, peníze. Tato stránka konkrétně popisuje, co s nimi děláme — bez obecných frází typu „zabezpečení na úrovni banky“. Aplikace se připravuje na veřejné spuštění a zatím není dostupná v obchodech.
- Dokumenty dítěte jsou koncově šifrované. Nemáme k nim klíč a nemůžeme je otevřít.
- Koncově šifrujeme i zdravotní údaje dítěte — automaticky, zvlášť pro každé dítě, jakmile mají klíč všechny osoby s přístupem k jeho zdravotním údajům. Pokud aplikaci používáte sami, hned.
- Kopii svého klíče si můžete uložit jako přístupový klíč (passkey). Vyžaduje iOS 18 nebo Android 9 či novější.
- Obrazovky s klíčem, dokumenty a párováním dětské aplikace blokují snímky obrazovky.
- Mezi uživateli vidí údaje o dítěti výhradně rodiče a opatrovníci propojení s jeho profilem. Vynucuje to databáze, nejen aplikace.
- Každé nové přihlášení k vašemu účtu uvidíte hned (po prvních 24 hodinách od založení účtu). Cizí zařízení odhlásíte jedním klepnutím.
- Data jsou uložena v Evropské unii. Ve Frankfurtu, ne „někde v cloudu“.
- Tento web nepoužívá cookies ani sledovací skripty. O souhlas nikdy nežádá, protože není s čím souhlasit.
- Dítě nemá účet s e-mailem ani heslem. Je to princip produktu, ne nastavení ke změně.
- Zprávy mezi rodiči nejsou koncově šifrované. Proč, vysvětlujeme níže.
- Oznámení neukazují adresy, obsah zpráv ani zdravotní záznamy.
Dokumenty: koncové šifrování (end-to-end)
Soudní rozhodnutí, výsledky vyšetření, potvrzení ze školy — soubor i jeho název odchází do ParentLoopu zašifrované ještě předtím, než opustí telefon. Na serveru pak leží řetězec bajtů, který neumíme přečíst, a to není otázka interních pravidel, ale matematiky. Vidíme však technické údaje záznamu: druh dokumentu (např. cestovní pas nebo rozhodnutí o zdravotním postižení), typ a velikost souboru, kdo a kdy ho přidal a datum platnosti, pokud ho uvedete — na jeho základě server posílá připomenutí.
Konkrétně používáme:
XChaCha20-Poly1305— šifruje soubor a odhalí jakoukoli manipulaci.X25519— dohoda na klíči mezi rodiči.HKDF-SHA256— odvozování klíčů.- Knihovny
@noble— auditované, bez externích závislostí.
Soukromý klíč se nikdy nedostane na naše servery. Je uložený v zabezpečeném úložišti telefonu (Klíčenka na iOS, Keystore na Androidu). Zveřejňuje se jen jeho veřejná polovina, aby druhý rodič mohl soubor zašifrovat tak, že ho otevřete právě vy.
Náhodnost bereme z operačního systému, ne z výchozího zdroje knihovny: v React Native může tento výchozí zdroj potichu selhat a důsledkem slabé náhodnosti není chyba, ale uhodnutelný klíč, kterého si nikdo nikdy nevšimne.
Zdravotní údaje: koncové šifrování
Alergie, léky, chronická onemocnění, krevní skupinu, poznámky, zdravotní záznamy (návštěvy, očkování, diagnózy, výsledky vyšetření, pobyty v nemocnici) i měření výšky a váhy šifrujeme automaticky, zvlášť pro každé dítě. Klíč se vytvoří sám v telefonu rodiče, který má k údajům o zdraví přístup, udělil souhlas s jejich zpracováním a má v telefonu klíč k dokumentům (šifrování lze zapnout i ručně v Nastavení); předání klíče druhému rodiči nebo pečovateli vyžaduje potvrzení otisku klíče. Šifrování začne platit, jakmile mají klíč všechny osoby s přístupem k údajům o zdraví daného dítěte — rodiče, a také pečovatel, pokud mu toto oprávnění bylo uděleno. Dokud klíč nemají všichni oprávnění, jsou údaje uchovávány jako dosud (zabezpečené, ale ne end-to-end) a aplikace zobrazuje, na koho se čeká. Když je šifrování aktivní, šifrují se údaje v telefonu stejnými algoritmy jako dokumenty; na serveru je vidět jen to, že záznam existuje, jeho datum a kdo jej přidal.
Dvě věci říkáme na rovinu. Na serveru dál vidíme, že záznam existuje, jeho datum a kdo ho přidal — nečitelný je samotný obsah. A šifrování začne fungovat až ve chvíli, kdy klíč dostanou všichni rodiče s přístupem k údajům dítěte. Do té doby jsou údaje uložené jako dosud — zabezpečené, ale ne koncově — a aplikace ukazuje, na koho se čeká. Jakmile šifrování začne fungovat, telefon rodiče s klíčem přepíše do zašifrované podoby i dřívější záznamy; jejich nezašifrovaná verze může ještě do 7 dnů zůstat v záložních kopiích databáze.
Pokud ParentLoop používáte sami, klíč máte jen vy, takže se šifrování zapne hned, bez čekání na kohokoli. Rodič, který se připojí později, dostane klíč teprve poté, co na svém telefonu potvrdíte otisk jeho klíče. Proč vůbec existuje období bez šifrování: když už jsou v rodině dvě osoby s přístupem k údajům o zdraví a jedna z nich ještě nemá klíč, nešifrujeme natvrdo jen pro tu druhou. Osoba bez klíče by pak přestala vidět alergie a léky dítěte, dokud by někdo nepotvrdil její klíč — a toto potvrzení nelze automatizovat, protože pak by server mohl podstrčit vlastní klíč. Nad tlačítkem „Uložit“ v každém formuláři o zdraví aplikace píše, zda bude to, co ukládáte, zašifrováno.
Číslo PESEL dítěte, pokud ho zadáte, je koncově šifrováno vždy, aniž by bylo nutné cokoli zapínat.
Sdílení klíče s někým novým je vždy potřeba potvrdit na telefonu, který už klíč má — se jménem dané osoby a otiskem jejího klíče na obrazovce.
Váš kód pro obnovení
Protože váš klíč nemáme, nemůžeme ho při výměně telefonu obnovit. Při prvním spuštění proto dostanete kód pro obnovení — klíč se z něj odvozuje. Uložte si ho jinam než do telefonu. Bez něj (nebo bez kopie v přístupovém klíči, kterou popisujeme níže) zůstanou dokumenty a zdravotní údaje zašifrované starým klíčem nečitelné i pro vás. To je cena za to, že k nim nemáme přístup — a raději to řekneme na rovinu, než abychom si „pro jistotu“ nechávali zadní vrátka.
Kopie klíče v přístupovém klíči (volitelné)
Místo přepisování kódu na novém telefonu si můžete kopii klíče uložit jako přístupový klíč v aplikaci Hesla od Applu nebo ve Správci hesel Google. Na novém telefonu pak dokumenty a zdravotní údaje odemknete jedním klepnutím.
Vyžaduje iOS 18 nebo Android 9 či novější. Kopie funguje v rámci jednoho systému: uložená na iPhonu odemyká iPhone, uložená na Androidu odemyká telefon s Androidem. Při přechodu z jednoho systému na druhý budete dál potřebovat kód pro obnovení.
Jak to funguje: server uchovává zašifrovanou kopii vašeho kódu pro obnovení. Klíč k ní odvozuje
váš přístupový klíč (rozšíření WebAuthn PRF) a k nám se nikdy nedostane — bez přístupového klíče
je ta kopie i pro nás jen řetězec bajtů, který neumíme přečíst. Přístupový klíč je vázaný na
samostatnou doménu klucz.parentloop.pl, která slouží jen ke dvěma konfiguračním
souborům, takže si o něj nemůže říct žádný skript na parentloop.pl.
Poctivě řečeno: je to pohodlí výměnou za jeden předpoklad. Kdo zná heslo k vašemu Apple účtu nebo účtu Google a kód k jednomu z vašich zařízení, může tento přístupový klíč použít. Proto je kopie volitelná. Kdykoli ji můžete smazat v nastavení klíče a zmizí i tehdy, když klíč změníte nebo smažete účet.
Důvěra v klíč druhého rodiče
Koncové šifrování má jen takovou cenu, jak jistě víte, komu šifrujete. Aplikace si klíč druhého rodiče zapamatuje, když ho uvidí poprvé. Pokud se ten klíč později změní, nahrávání nepokračuje potichu dál — zastaví se a zeptá se člověka.
Otisk klíče si také můžete navzájem porovnat a potvrdit. Potvrzení patří jedné dvojici lidí a jednomu konkrétnímu klíči: když se klíč vymění, potvrzení propadne a je potřeba ho udělat znovu. Jinak by to bylo razítko, které přežije věc, pod kterou bylo dané.
Při návrhu šifrování počítáme s tím, že náš vlastní server může lhát — protože pokud ho někdy někdo ovládne, bude zkoušet právě to. Otisk klíče druhého rodiče proto počítá váš telefon, ne server, a váš vlastní klíč telefon při každém čtení porovná s tím, který má u sebe. Telefon, který jednou viděl zdravotní údaje dítěte zašifrované, je už nezapíše nešifrovaně, ani když server tvrdí, že šifrování je vypnuté. Zobrazení kódu pro obnovení a výměna klíče vyžadují Face ID, Touch ID nebo kód zámku. Dešifrované kopie souborů (dokumenty, export dat, skeny) aplikace maže z paměti telefonu při každém spuštění a při odhlášení.
Biometrický zámek
Otevření dokumentu vyžaduje Face ID, Touch ID nebo kód zámku — pokaždé, ne jednou za relaci. Bez nastaveného zámku obrazovky dokument otevřít nelze. Odemčený telefon položený na stole není totéž co souhlas se čtením soudního rozhodnutí. Stejně tak před exportem údajů: soubor ZIP obsahuje již dešifrované dokumenty, takže aplikace před každým stažením požádá o Face ID, Touch ID nebo kód zámku.
Snímky obrazovky
Obrazovky s klíčem a kódem pro obnovení, dokumenty a párováním dětské aplikace blokují snímky a nahrávání obrazovky. Na Androidu vyjdou snímek i nahrávka černé a náhled v posledních aplikacích je prázdný; na iPhonu vyjdou snímek i nahrávka rovněž černé a náhled v přepínači aplikací je rozmazaný. V ostatních částech aplikace fungují snímky obrazovky normálně. Je to překážka, ne záruka: vyfocení obrazovky druhým telefonem nic nezablokuje.
Přihlášení a přihlášená zařízení
Když se po prvních 24 hodinách od založení účtu někdo přihlásí k vašemu rodičovskému účtu, dostanete oznámení v aplikaci a — pokud jste povolili oznámení — i do telefonu, s typem zařízení (iPhone nebo iPad, telefon nebo tablet s Androidem, webový prohlížeč nebo jiné zařízení). Toto oznámení v nastavení oznámení aplikace nevypnete (v době klidu přijde, jakmile skončí). V Nastavení → Soukromí a data → Přihlášená zařízení vidíte všechna zařízení, na kterých má účet aktivní relaci, a každé odhlásíte jedním klepnutím. Odhlášené zařízení ztratí přístup nejpozději do hodiny.
Proč na tom záleží: do ParentLoop se přihlašujete odkazem z e-mailu nebo heslem. Pokud někdo zjistí vaše heslo nebo získá přístup k vašemu e-mailu, o novém přihlášení se dozvíte hned. Cizí zařízení odhlaste a změňte si heslo k e-mailu i heslo v ParentLoop.
Kdo co vidí
Mezi uživateli mají k údajům o dítěti přístup výhradně s ním propojení rodiče a opatrovníci. Hlídá to samotná databáze — přístupová pravidla fungují na úrovni každého řádku, takže je nelze obejít odesláním „chytřejšího“ dotazu mimo aplikaci. Nejde však o koncové šifrování celé databáze: údaje, které nejsou zašifrované v telefonu (např. kalendář, výdaje, zprávy), jsou technicky dostupné pro naše serverové funkce, které rozesílají oznámení a čistí data, a pro členy týmu s přístupem do panelu databáze. Běžně je neprohlížíme. Zprávy čteme jen tehdy, když je někdo nahlásí, a k ostatním údajům saháme jen kvůli hlášení nebo opravě chyby. Panel, ve kterém každý den pracujeme, ukazuje pouze souhrnná data a vyžaduje druhý faktor přihlášení.
Veřejný klíč, který je součástí aplikace a administrace, nedává přístup k ničemu. Ověřili jsme to na produkčním prostředí: postupně jsme se dotázali na tabulky s účty, dětmi, kalendáři, zprávami a dokumenty. Všechny přístup odmítly.
Oznámení
Oznámení je vidět na zamčené obrazovce a prochází servery společností Expo, Apple a Google, proto v něm necháváme jen to nejnutnější. Není v něm obsah zpráv, zdravotní záznamy ani adresy: připomenutí říká, co a kdy, a kde, to najdete v aplikaci. Stejně tak při změně místa předání dítěte: oznámení řekne, že se místo změnilo, a nové je v kalendáři.
Co není koncově šifrované
Zprávy mezi rodiči. Je to vědomé rozhodnutí, ne nedodělek. Konverzace v ParentLoopu je společný záznam toho, na čem jste se ohledně dítěte dohodli: odeslanou zprávu nelze upravit ani smazat. Když někdo nahlásí zneužití, musíme mít možnost ověřit, co bylo skutečně napsáno — při koncovém šifrování by hlášením byl snímek obrazovky, který se dá snadno zfalšovat. Ze stejného důvodu běží filtr vulgarit na serveru: urážlivá slova se zamaskují ještě před uložením zprávy, takže se na disk vůbec nedostanou. Zprávy jsou šifrované při přenosu i na disku a čteme je jen po nahlášení. Raději to napíšeme otevřeně, než abychom slovo „šifrované“ používali tak, aby znělo silněji, než jaká je skutečnost.
Kde jsou data uložená
Databáze i soubory jsou v Evropské unii (Frankfurt). Mimo EHP se mohou dostat údaje potřebné pro push oznámení a aktualizace aplikace (Expo, Apple, Google) a pro fungování tohoto webu v globální síti Cloudflare — na základě standardních smluvních klauzulí. Návrhy adres stahuje telefon přímo ze služby Google Maps Platform, která působí jako samostatný správce podle vlastních pravidel. Úplný seznam poskytovatelů je v zásadách ochrany osobních údajů.
Na Androidu čte text z fotky účtenky nebo rozvrhu přímo v telefonu knihovna Google ML Kit — až když s tím souhlasíte. Fotka ani přečtený text se ke Googlu nedostanou; knihovna posílá jen diagnostické údaje. Souhlas odvoláte v nastavení aplikace (Settings → Consents).
Tento web
Žádné cookies, žádná analytika, žádné sledovací skripty, žádné dotazy na cizí servery — včetně písem, která záměrně nenačítáme od Googlu. Proto tu neuvidíte okénko se souhlasem s cookies: nemáme se na co ptát. Jediné, co web ukládá v prohlížeči, je zvolený jazyk podmínek (localStorage), aby je při příští návštěvě otevřel ve stejném jazyce.
Dítě nemá účet s e-mailem ani heslem
V ParentLoopu si dítě nezakládá účet s přihlašovacím jménem a nezadává e-mailovou adresu. Aplikace ParentLoop kids se k rodině připojuje přes jednorázový QR kód — bez e-mailové adresy, bez hesla, bez chatu a bez možnosti psát zprávy komukoli. Dítě může odškrtávat povinnosti a přidávat do kalendáře vlastní události (bez odkazů a telefonních čísel); rodiče je vidí, pokud dítě zapne „Ukázat rodičům“.
Když jeden z rodičů spáruje zařízení dítěte, druhý o tom dostane oznámení. Spárované zařízení lze v aplikaci rodiče kdykoli odpojit — od té chvíle již telefon dítěte nestahuje data ze serveru.
Kdo se může připojit k rodině
K profilu dítěte se připojí jen osoba, kterou pozve rodič, který už v rodině je, a pozvánka platí 7 dní. Mimo zakládání účtu se kód pozvánky a kód pro spárování telefonu dítěte zobrazí až po Face ID, Touch ID nebo kódu pro odemčení telefonu (pokud má telefon nastavený zámek obrazovky). Když někdo nový získá přístup k údajům dítěte, druhý rodič dostane oznámení.
Žádný rodič nemůže druhému sám odebrat přístup ani bez jeho souhlasu smazat profil dítěte. Je to záměrné: o rodičovské odpovědnosti rozhoduje soud, ne aplikace. Dokumenty rodičů neověřujeme, protože by to znamenalo shromažďovat soudní rozhodnutí a doklady totožnosti. Pokud někdo zpracovává údaje vašeho dítěte bez oprávnění nebo v rozporu se soudním zákazem, napište nám: hlášení hned potvrdíme, do 7 dnů vám sdělíme, jak ho vyřídíme, a pokud úřední dokument doloží ohrožení bezpečnosti dítěte nebo rodiče, můžeme této osobě po dobu vyřizování přístup pozastavit (podmínky, § 6 odst. 7).
Každý maže jen své záznamy. Dokument může smazat jen rodič, který ho přidal (a když tento rodič ztratí přístup k údajům dítěte, pak druhý rodič). Událost v kalendáři maže její autor a úkol jeho autor nebo ten, komu ho předal. U záznamu, který smazat nemůžete, aplikace ukáže, kdo ho přidal. I to hlídá databáze, nejen aplikace.
Pokud jste v ohrožení
ParentLoop nenahradí pomoc, ale několik věcí může situaci usnadnit:
- Konverzaci s druhým rodičem můžete pozastavit. Nikdo pak nepošle novou zprávu a obnovit ji můžete jen vy. Historie zůstane.
- Každou zprávu můžete nahlásit. Druhá osoba se o tom nedozví.
- Aplikace nesbírá polohu telefonu a oznámení neukazují adresy.
- Aplikace dítěte neukazuje plán vyzvedávání a kterýkoli z rodičů může telefon dítěte kdykoli odpojit.
V bezprostředním ohrožení volejte 112. V Polsku: linka pomoci pro oběti domácího násilí „Niebieska Linia“, 800 120 002 (zdarma).
Vaše data, vaše rozhodnutí
Export všech dat i smazání účtu jsou tlačítka přímo v aplikaci. Nemusíte nám psát, čekat ani nic vysvětlovat.
Když dítěti bude 18 let
Když dítěti bude 18 let, smažeme jeho zdravotní údaje — informace o zdraví, zdravotní záznamy a zdravotní dokumenty — a jeho číslo PESEL. Záznamy o výšce a váze zůstávají. Zhruba 30 dní předem dostane každý, kdo tyto údaje vidí, oznámení s odkazem na export, aby si je mohl včas stáhnout.
Jak to ověřujeme
Zabezpečení aplikace a databáze kontrolujeme před každým vydáním v obchodech a po větších změnách. Máme posouzení vlivu na ochranu osobních údajů (DPIA), které popisuje rizika pro rodiče a děti, včetně rodin v konfliktu, a postup pro případ porušení zabezpečení údajů. Automatický test při každé změně databáze ověřuje, že smazání účtu smaže všechna jeho data, a denní kontrola hlídá, že se mažou i soubory.
Aplikaci a databázi čtou také externí posuzovatelé bezpečnosti, kteří vycházejí z toho, že server nebo jiný uživatel jedná proti vám; nalezené chyby opravujeme před dalším vydáním. Při každé změně databáze automat kontroluje, že pravidla přístupu nemají žádný ze známých druhů chyb.
Narazíte na problém?
Napište na kontakt@parentloop.pl. Bezpečnostní hlášení řešíme přednostně a ten, kdo je pošle, se nemusí ničeho obávat.
Bezpečnosť a súkromie v aplikácii ParentLoop
ParentLoop vznikol preto, aby uchovával jedny z najcitlivejších údajov, aké môže rodina niekomu zveriť: harmonogram starostlivosti, zdravie dieťaťa, dokumenty, peniaze. Táto stránka konkrétne opisuje, čo s nimi robíme — bez všeobecných fráz ako „zabezpečenie na úrovni banky“. Aplikácia sa pripravuje na verejné spustenie a zatiaľ nie je dostupná v obchodoch.
- Dokumenty dieťaťa sú chránené end-to-end šifrovaním. Nemáme k nim kľúč a nedokážeme ich otvoriť.
- End-to-end šifrovaním chránime aj zdravotné údaje dieťaťa — automaticky, pre každé dieťa zvlášť, keď majú kľúč všetky osoby s prístupom k jeho zdravotným údajom. Ak aplikáciu používate sami, hneď.
- Kópiu svojho kľúča si môžete uložiť ako prístupový kľúč (passkey). Vyžaduje iOS 18 alebo Android 9 či novší.
- Obrazovky s kľúčom, dokumentmi a párovaním aplikácie dieťaťa blokujú snímky obrazovky.
- Spomedzi používateľov vidia údaje dieťaťa výlučne rodičia a opatrovníci prepojení s jeho profilom. Vynucuje to databáza, nie iba aplikácia.
- Každé nové prihlásenie do vášho účtu uvidíte hneď (po prvých 24 hodinách od založenia účtu). Cudzie zariadenie odhlásite jedným ťuknutím.
- Údaje sú uložené v Európskej únii. Vo Frankfurte, nie „niekde v cloude“.
- Tento web nepoužíva súbory cookie ani sledovacie skripty. Nikdy nežiada o súhlas, pretože nie je s čím súhlasiť.
- Dieťa nemá účet s e-mailom ani heslom. Je to princíp produktu, nie nastavenie na zmenu.
- Správy medzi rodičmi nie sú chránené end-to-end šifrovaním. Prečo, vysvetľujeme nižšie.
- Upozornenia nezobrazujú adresy, obsah správ ani zdravotné záznamy.
Dokumenty: end-to-end šifrovanie
Súdne rozhodnutia, výsledky vyšetrení, potvrdenia zo školy — súbor a jeho názov prichádzajú do ParentLoop zašifrované ešte predtým, než opustia telefón. Na serveri leží reťazec bajtov, ktorý nedokážeme prečítať, a to nie je otázka interných pravidiel, ale matematiky. Vidíme však technické údaje záznamu: druh dokumentu (napr. cestovný pas alebo rozhodnutie o zdravotnom postihnutí), typ a veľkosť súboru, kto a kedy ho pridal a dátum platnosti, ak ho uvediete — na jeho základe server posiela pripomenutie.
Konkrétne používame:
XChaCha20-Poly1305— šifruje súbor a odhalí, ak s ním niekto manipuloval.X25519— dohodnutie spoločného kľúča medzi rodičmi.HKDF-SHA256— odvodenie kľúčov.- Knižnice
@noble— auditované, bez externých závislostí.
Súkromný kľúč sa nikdy nedostane na naše servery. Je uložený v zabezpečenom úložisku telefónu (Kľúčenka v iOS, Keystore v Androide). Zverejňujeme len jeho verejnú časť, aby druhý rodič mohol súbor zašifrovať tak, aby ste ho vy mohli otvoriť.
Náhodnosť berieme z operačného systému, nie z predvoleného zdroja knižnice: v React Native môže tento predvolený zdroj potichu zlyhať a následkom slabej náhodnosti nie je chyba, ale uhádnuteľný kľúč, ktorý si nikto nikdy nevšimne.
Zdravotné údaje: end-to-end šifrovanie
Alergie, lieky, chronické ochorenia, krvnú skupinu, poznámky, zdravotné záznamy (návštevy u lekára, očkovania, diagnózy, výsledky vyšetrení, pobyty v nemocnici) a merania výšky a hmotnosti šifrujeme automaticky, pre každé dieťa zvlášť. Kľúč sa vytvorí sám v telefóne rodiča, ktorý má k údajom o zdraví prístup, udelil súhlas s ich spracúvaním a má v telefóne kľúč k dokumentom (šifrovanie možno zapnúť aj ručne v Nastaveniach); odovzdanie kľúča druhému rodičovi alebo opatrovateľovi vyžaduje potvrdenie odtlačku kľúča. Šifrovanie začne platiť, keď majú kľúč všetky osoby s prístupom k údajom o zdraví daného dieťaťa — rodičia, a aj opatrovateľ, ak mu bolo toto oprávnenie udelené. Kým kľúč nemajú všetci oprávnení, údaje sa uchovávajú ako doteraz (zabezpečené, ale nie end-to-end) a aplikácia zobrazuje, na koho sa čaká. Keď je šifrovanie aktívne, údaje sa šifrujú v telefóne rovnakými algoritmami ako dokumenty; na serveri vidno len to, že záznam existuje, jeho dátum a kto ho pridal.
Dve veci hovoríme na rovinu. Na serveri stále vidíme, že záznam existuje, jeho dátum a kto ho pridal — nečitateľný je samotný obsah. A šifrovanie začína fungovať až vtedy, keď kľúč dostanú všetci rodičia s prístupom k údajom dieťaťa. Dovtedy sú údaje uložené ako doteraz — zabezpečené, ale nie end-to-end — a aplikácia ukazuje, na koho sa čaká. Keď šifrovanie začne fungovať, telefón rodiča s kľúčom prepíše do zašifrovanej podoby aj predchádzajúce záznamy; ich nezašifrovaná verzia môže ešte do 7 dní zostať v záložných kópiách databázy.
Ak ParentLoop používate sami, kľúč máte len vy, takže sa šifrovanie zapne hneď, bez čakania na kohokoľvek. Rodič, ktorý sa pripojí neskôr, dostane kľúč až potom, ako na svojom telefóne potvrdíte odtlačok jeho kľúča. Prečo vôbec existuje obdobie bez šifrovania: keď sú už v rodine dve osoby s prístupom k zdravotným údajom a jedna z nich ešte nemá kľúč, nešifrujeme nasilu len pre tú druhú. Osoba bez kľúča by potom prestala vidieť alergie a lieky dieťaťa, kým by niekto nepotvrdil jej kľúč — a toto potvrdenie sa nedá automatizovať, pretože potom by server mohol podstrčiť vlastný kľúč. Nad tlačidlom „Uložiť“ v každom formulári o zdraví aplikácia píše, či bude to, čo ukladáte, zašifrované.
Číslo PESEL dieťaťa, ak ho zadáte, je vždy šifrované end-to-end, bez nutnosti čokoľvek zapínať.
Zdieľanie kľúča s niekým novým treba vždy potvrdiť na telefóne, ktorý ho už má — s menom tejto osoby a odtlačkom jej kľúča na obrazovke.
Váš kód na obnovenie
Keďže váš kľúč nemáme, nedokážeme ho obnoviť, keď zmeníte telefón. Pri prvom spustení preto dostanete kód na obnovenie — kľúč sa odvodzuje z neho. Uschovajte si ho mimo telefónu. Bez neho (alebo bez kópie v prístupovom kľúči, ktorú opisujeme nižšie) zostanú dokumenty a zdravotné údaje zašifrované starým kľúčom nečitateľné aj pre vás. To je cena za to, že k nim nemáme prístup, a radšej to povieme na rovinu, než by sme si nechali zadné vrátka „pre istotu“.
Kópia vášho kľúča v prístupovom kľúči (voliteľné)
Namiesto prepisovania kódu na novom telefóne si môžete kópiu kľúča uložiť ako prístupový kľúč (passkey; na iPhone sa volá prihlasovací kľúč) v aplikácii Heslá od Apple alebo v Správcovi hesiel Google. Na novom telefóne potom dokumenty a zdravotné údaje odomknete jedným klepnutím.
Vyžaduje iOS 18 alebo Android 9 či novší. Kópia funguje v rámci jednej platformy: uložená na iPhone odomkne iPhone, uložená na telefóne s Androidom odomkne telefón s Androidom. Pri prechode z jednej platformy na druhú budete stále potrebovať kód na obnovenie.
Ako to funguje: server uchováva zašifrovanú kópiu vášho kódu na obnovenie. Kľúč k nej odvodzuje
váš prístupový kľúč (rozšírenie WebAuthn PRF) a nikdy sa k nám nedostane — bez prístupového kľúča
je aj táto kópia pre nás len reťazec bajtov, ktorý nedokážeme prečítať. Prístupový kľúč je viazaný
na samostatnú doménu klucz.parentloop.pl, ktorá neposkytuje nič okrem dvoch
konfiguračných súborov, takže oň nemôže požiadať žiadny skript na parentloop.pl.
Úprimne o kompromise: je to pohodlie výmenou za jeden predpoklad. Tento prístupový kľúč môže použiť ktokoľvek, kto pozná heslo k vášmu Apple účtu alebo účtu Google a kód jedného z vašich zariadení. Preto je kópia voliteľná. V nastaveniach kľúča ju môžete kedykoľvek zmazať a zmizne aj vtedy, keď kľúč zmeníte alebo zmažete účet.
Dôvera v kľúč druhého rodiča
End-to-end šifrovanie má len takú hodnotu, akú máte istotu, pre koho šifrujete. Aplikácia si kľúč druhého rodiča zapamätá, keď ho uvidí prvýkrát. Ak sa tento kľúč neskôr zmení, nahrávanie nepokračuje potichu ďalej — zastaví sa a opýta sa človeka.
Odtlačok kľúča si môžete aj navzájom porovnať a potvrdiť. Potvrdenie patrí jednej dvojici ľudí a jednému konkrétnemu kľúču: keď sa kľúč vymení, potvrdenie stratí platnosť a treba ho urobiť znova. Inak by to bola pečiatka, ktorá platí dlhšie než to, čo potvrdzovala.
Pri návrhu šifrovania počítame s tým, že náš vlastný server môže klamať — lebo ak ho niekedy niekto ovládne, bude skúšať práve to. Odtlačok kľúča druhého rodiča preto počíta váš telefón, nie server, a váš vlastný kľúč telefón pri každom čítaní porovná s tým, ktorý má u seba. Telefón, ktorý raz videl zdravotné údaje dieťaťa zašifrované, ich už nezapíše nešifrovane, ani keď server tvrdí, že šifrovanie je vypnuté. Zobrazenie kódu na obnovenie a výmena kľúča vyžadujú Face ID, Touch ID alebo kód zámky. Dešifrované kópie súborov (dokumenty, export údajov, skeny) aplikácia maže z pamäte telefónu pri každom spustení a pri odhlásení.
Biometrický zámok
Otvorenie dokumentu vyžaduje Face ID, Touch ID alebo kód zámku — zakaždým, nie raz za reláciu. Bez nastaveného zámku obrazovky sa dokument nedá otvoriť. Odomknutý telefón položený na stole nie je to isté ako súhlas s čítaním súdneho rozhodnutia. Rovnako pred exportom údajov: súbor ZIP obsahuje dokumenty už dešifrované, takže aplikácia pred každým stiahnutím požiada o Face ID, Touch ID alebo kód zámku.
Snímky obrazovky
Obrazovky s kľúčom a kódom na obnovenie, dokumentmi a párovaním aplikácie dieťaťa blokujú snímky a nahrávanie obrazovky. V Androide vyjdú snímka aj záznam čierne a náhľad v posledných aplikáciách je prázdny; na iPhone vyjdú snímka aj záznam takisto čierne a náhľad v prepínači aplikácií je rozmazaný. V ostatných častiach aplikácie fungujú snímky obrazovky normálne. Je to prekážka, nie záruka: odfotenie obrazovky druhým telefónom nič nezablokuje.
Prihlásenia a prihlásené zariadenia
Keď sa po prvých 24 hodinách od založenia účtu niekto prihlási do vášho rodičovského účtu, dostanete upozornenie v aplikácii a — ak ste povolili upozornenia — aj do telefónu, s typom zariadenia (iPhone alebo iPad, telefón alebo tablet s Androidom, webový prehliadač alebo iné zariadenie). Toto upozornenie v nastaveniach upozornení aplikácie nevypnete (počas tichých hodín príde, keď sa skončia). V Nastaveniach → Súkromie a údaje → Prihlásené zariadenia vidíte všetky zariadenia, na ktorých má účet aktívnu reláciu, a každé odhlásite jedným ťuknutím. Odhlásené zariadenie stratí prístup najneskôr do hodiny.
Prečo na tom záleží: do ParentLoop sa prihlasujete odkazom z e-mailu alebo heslom. Ak niekto zistí vaše heslo alebo získa prístup k vášmu e-mailu, o novom prihlásení sa dozviete hneď. Cudzie zariadenie odhláste a zmeňte si heslo k e-mailu aj heslo v ParentLoop.
Kto čo vidí
Spomedzi používateľov majú prístup k údajom dieťaťa výlučne s ním prepojení rodičia a opatrovníci. Stráži to samotná databáza — prístupové pravidlá fungujú na úrovni každého riadka, takže sa nedajú obísť odoslaním „šikovnejšieho“ dopytu mimo aplikácie. Nie je to však end-to-end šifrovanie celej databázy: údaje, ktoré nie sú zašifrované v telefóne (napr. kalendár, výdavky, správy), sú technicky dostupné pre naše serverové funkcie, ktoré posielajú upozornenia a čistia údaje, a pre členov tímu s prístupom do panela databázy. Bežne ich neprezeráme. Správy čítame len vtedy, keď ich niekto nahlási, a po ostatných údajoch siahame len pri nahlásení alebo oprave chyby. Panel, v ktorom denne pracujeme, zobrazuje iba súhrnné údaje a vyžaduje druhý faktor prihlásenia.
Verejný kľúč, ktorý obsahuje aplikácia a administrátorský panel, neumožňuje prístup k ničomu. Overili sme to priamo na produkčnej databáze, keď sme postupne skúšali čítať tabuľky s účtami, deťmi, kalendármi, správami a dokumentmi. Každá z nich prístup odmietla.
Upozornenia
Upozornenie vidno na zamknutej obrazovke a prechádza servermi spoločností Expo, Apple a Google, preto v ňom necháváme len to najnutnejšie. Nie je v ňom obsah správ, zdravotné záznamy ani adresy: pripomienka hovorí, čo a kedy, a kde, to nájdete v aplikácii. Rovnako pri zmene miesta odovzdania dieťaťa: upozornenie povie, že sa miesto zmenilo, a nové je v kalendári.
Čo nie je chránené end-to-end šifrovaním
Správy medzi rodičmi. Je to vedomé rozhodnutie, nie nedorobok. Konverzácia v ParentLoope je spoločný záznam toho, na čom ste sa ohľadom dieťaťa dohodli: odoslanú správu nemožno upraviť ani vymazať. Keď niekto nahlási zneužitie, musíme vedieť overiť, čo bolo skutočne napísané — pri end-to-end šifrovaní by nahlásením bola snímka obrazovky, ktorú možno ľahko sfalšovať. Z rovnakého dôvodu beží filter vulgarizmov na serveri: urážlivé slová sa zamaskujú ešte pred uložením správy, takže sa na disk vôbec nedostanú. Správy sú šifrované pri prenose aj na disku a čítame ich len po nahlásení. Radšej to napíšeme otvorene, než by sme slovo „šifrované“ použili tak, aby znelo silnejšie, než v skutočnosti je.
Kde sú údaje uložené
Databáza a súbory sú v Európskej únii (Frankfurt). Mimo EHP sa môžu dostať údaje potrebné pre push notifikácie a aktualizácie aplikácie (Expo, Apple, Google) a pre fungovanie tejto stránky v globálnej sieti Cloudflare — na základe štandardných zmluvných klauzúl. Návrhy adries sťahuje telefón priamo zo služby Google Maps Platform, ktorá pôsobí ako samostatný prevádzkovateľ podľa vlastných pravidiel. Úplný zoznam poskytovateľov je v zásadách ochrany osobných údajov.
Na Androide číta text z fotky bločku alebo rozvrhu priamo v telefóne knižnica Google ML Kit — až keď s tým súhlasíte. Fotka ani prečítaný text sa ku Googlu nedostanú; knižnica posiela len diagnostické údaje. Súhlas odvoláte v nastaveniach aplikácie (Settings → Consents).
Tento web
Žiadne súbory cookie, žiadna analytika, žiadne sledovacie skripty, žiadne dopyty na cudzie servery — vrátane písiem, ktoré zámerne nenačítavame z Googlu. Preto tu neuvidíte okienko so súhlasom s cookies: nemáme sa na čo pýtať. Jediné, čo stránka ukladá v prehliadači, je zvolený jazyk podmienok (localStorage), aby ich pri ďalšej návšteve otvorila v tom istom jazyku.
Dieťa nemá účet s e-mailom ani heslom
V ParentLoop si dieťa nezakladá účet s prihlasovacím menom a nezadáva e-mailovú adresu. Aplikácia ParentLoop kids sa pripája k rodine cez jednorazový QR kód — bez e-mailovej adresy, bez hesla, bez četu a bez možnosti písať správy komukoľvek. Dieťa môže odškrtávať povinnosti a pridávať do kalendára vlastné udalosti (bez odkazov a telefónnych čísel); rodičia ich vidia, ak dieťa zapne „Ukázať rodičom“.
Keď jeden z rodičov spáruje zariadenie dieťaťa, druhý o tom dostane upozornenie. Spárované zariadenie možno kedykoľvek odpojiť v aplikácii rodiča — od tej chvíle už telefón dieťaťa nesťahuje údaje zo servera.
Kto sa môže pripojiť k rodine
K profilu dieťaťa sa pripojí len osoba, ktorú pozve rodič, ktorý už v rodine je, a pozvánka platí 7 dní. Mimo zakladania účtu sa kód pozvánky a kód na spárovanie telefónu dieťaťa zobrazia až po Face ID, Touch ID alebo kóde na odomknutie telefónu (ak má telefón nastavený zámok obrazovky). Keď niekto nový získa prístup k údajom dieťaťa, druhý rodič dostane upozornenie.
Žiadny rodič nemôže druhému sám odobrať prístup ani bez jeho súhlasu vymazať profil dieťaťa. Je to zámerné: o rodičovských právach a povinnostiach rozhoduje súd, nie aplikácia. Dokumenty rodičov neoverujeme, pretože by to znamenalo zbierať súdne rozhodnutia a doklady totožnosti. Ak niekto spracúva údaje vášho dieťaťa bez oprávnenia alebo v rozpore so súdnym zákazom, napíšte nám: nahlásenie hneď potvrdíme, do 7 dní vám oznámime, ako ho vybavíme, a ak úradný dokument doloží ohrozenie bezpečnosti dieťaťa alebo rodiča, môžeme tejto osobe počas vybavovania prístup pozastaviť (podmienky, § 6 ods. 7).
Každý maže len svoje záznamy. Dokument môže vymazať len rodič, ktorý ho pridal (a keď tento rodič stratí prístup k údajom dieťaťa, tak druhý rodič). Udalosť v kalendári maže jej autor a úlohu jej autor alebo ten, komu ju odovzdal. Pri zázname, ktorý vymazať nemôžete, aplikácia ukáže, kto ho pridal. Aj to stráži databáza, nielen aplikácia.
Ak ste v ohrození
ParentLoop nenahradí pomoc, ale niekoľko vecí môže situáciu uľahčiť:
- Konverzáciu s druhým rodičom môžete pozastaviť. Nikto potom nepošle novú správu a obnoviť ju môžete len vy. História zostane.
- Každú správu môžete nahlásiť. Druhá osoba sa o tom nedozvie.
- Aplikácia nezbiera polohu telefónu a upozornenia nezobrazujú adresy.
- Aplikácia dieťaťa nezobrazuje plán vyzdvihovania a ktorýkoľvek z rodičov môže telefón dieťaťa kedykoľvek odpojiť.
V bezprostrednom ohrození volajte 112. V Poľsku: linka pomoci pre obete domáceho násilia „Niebieska Linia“, 800 120 002 (bezplatne).
Vaše údaje, vaše rozhodnutie
Export všetkých údajov aj zmazanie účtu sú tlačidlá priamo v aplikácii. Nemusíte nám písať, čakať ani nič vysvetľovať.
Keď má dieťa 18 rokov
Keď má dieťa 18 rokov, vymažeme jeho zdravotné údaje — informácie o zdraví, zdravotné záznamy a zdravotné dokumenty — a jeho číslo PESEL. Merania výšky a hmotnosti zostávajú. Asi 30 dní vopred dostane každý, kto tieto údaje vidí, upozornenie s odkazom na export, aby si ich mohol včas stiahnuť.
Ako to overujeme
Zabezpečenie aplikácie a databázy kontrolujeme pred každým vydaním v obchodoch a po väčších zmenách. Máme posúdenie vplyvu na ochranu osobných údajov (DPIA), ktoré opisuje riziká pre rodičov a deti vrátane rodín v konflikte, a postup pre prípad porušenia ochrany osobných údajov. Automatický test pri každej zmene databázy overuje, že vymazanie účtu vymaže všetky jeho údaje, a denná kontrola stráži, aby sa mazali aj súbory.
Aplikáciu a databázu čítajú aj externí posudzovatelia bezpečnosti, ktorí vychádzajú z toho, že server alebo iný používateľ koná proti vám; nájdené chyby opravujeme pred ďalším vydaním. Pri každej zmene databázy automat kontroluje, že pravidlá prístupu nemajú žiadny zo známych druhov chýb.
Našli ste problém?
Napíšte na kontakt@parentloop.pl. Hlásenia o bezpečnosti riešime prednostne a tomu, kto problém nahlási, to nijako nezazlievame.
Biztonság és adatvédelem a ParentLoopban
A ParentLoop azért jött létre, hogy a legérzékenyebb adatokat tárolja, amelyeket egy család valakire rábízhat: a gondozási rendet, a gyermek egészségét, a dokumentumokat, a pénzügyeket. Ez az oldal konkrétan leírja, mit teszünk velük — olyan általánosítások nélkül, mint a „banki szintű biztonság”. Az alkalmazás a nyilvános indulásra készül, és még nem érhető el az áruházakban.
- A gyerek dokumentumait végpontok közötti titkosítás védi. Nincs nálunk kulcs, ezért nem tudjuk megnyitni őket.
- A gyermek egészségügyi adatait is végpontok között titkosítjuk — automatikusan, gyermekenként külön, amint minden olyan személynek megvan a kulcsa, aki hozzáfér az adott gyermek egészségügyi adataihoz. Ha egyedül használja az alkalmazást, azonnal.
- A kulcsa másolatát jelkulcsként (passkey) is elmentheti. iOS 18 vagy Android 9, illetve újabb rendszer szükséges hozzá.
- A kulcsot, a dokumentumokat és a gyermekalkalmazás párosítását mutató képernyők letiltják a képernyőfotót.
- A felhasználók közül a gyermek adatait kizárólag a profiljához kapcsolt szülők és gondviselők látják. Ezt az adatbázis kényszeríti ki, nem csak az alkalmazás.
- Minden új bejelentkezést azonnal lát a fiókjában (a fiók létrehozását követő első 24 óra után). Az ismeretlen eszközt egy koppintással kijelentkeztetheti.
- Az adatokat az Európai Unióban tároljuk. Frankfurtban, nem „valahol a felhőben”.
- Ez a weboldal nem használ sütiket és követőszkripteket. Hozzájárulást sem kér soha, mert nincs mihez.
- A gyermeknek nincs e-mail-címmel vagy jelszóval védett fiókja. Ez termékelv, nem megváltoztatható beállítás.
- A szülők közötti üzenetek nincsenek végpontok között titkosítva. Lejjebb elmagyarázzuk, miért.
- Az értesítések nem mutatnak címeket, üzenetszöveget és egészségügyi bejegyzéseket.
Dokumentumok: végpontok közötti titkosítás
Bírósági határozatok, vizsgálati eredmények, iskolai igazolások — a fájl és a címe még azelőtt titkosítódik, hogy elhagyná a telefont, és így kerül a ParentLoopba. A szerveren egy számunkra olvashatatlan bájtsorozat van, és ez nem belső szabályzat, hanem matematika kérdése. Látjuk viszont a bejegyzés technikai adatait: a dokumentum típusát (például útlevél vagy fogyatékossági határozat), a fájl típusát és méretét, hogy ki és mikor adta hozzá, valamint az érvényességi dátumot, ha Ön megadja — ez alapján küld emlékeztetőt a szerver.
Konkrétan ezeket használjuk:
XChaCha20-Poly1305– titkosítja a fájlt, és észleli, ha valaki módosította.X25519– kulcsegyeztetés a szülők között.HKDF-SHA256– kulcsszármaztatás.- A
@noblekönyvtárak – auditáltak, külső függőségek nélkül.
A privát kulcs soha nem kerül a szervereinkre. A telefon biztonságos tárolójában van (iOS-en a kulcskarikában, azaz a Keychainben, Androidon a Keystore-ban). Csak a nyilvános felét tesszük közzé, hogy a másik szülő úgy titkosíthasson egy fájlt, hogy Ön meg tudja nyitni.
A véletlenszámokat az operációs rendszer adja, nem a könyvtár saját alapértelmezése: React Native alatt ez az alapértelmezés csendben felmondhatja a szolgálatot, a gyenge véletlenszerűség következménye pedig nem hibaüzenet, hanem egy kitalálható kulcs, amelyet soha senki nem vesz észre.
Egészségügyi adatok: végpontok közötti titkosítás
Az allergiákat, a gyógyszereket, a krónikus betegségeket, a vércsoportot, a feljegyzéseket, az orvosi bejegyzéseket (vizitek, védőoltások, diagnózisok, vizsgálati eredmények, kórházi tartózkodások), valamint a magasság- és testsúlyméréseket automatikusan, gyermekenként külön titkosítjuk. A kulcs magától létrejön annak a szülőnek a telefonján, aki hozzáfér az egészségügyi adatokhoz, hozzájárult a kezelésükhöz, és van a telefonján dokumentumkulcs (a titkosítás a Beállításokban kézzel is bekapcsolható); a kulcs átadása a másik szülőnek vagy gondviselőnek a kulcs ujjlenyomatának megerősítését igényli. A titkosítás akkor lép életbe, amikor minden olyan személy rendelkezik a kulccsal, aki hozzáfér az adott gyermek egészségügyi adataihoz — a szülők, valamint a gondviselő is, ha megkapta ezt a jogosultságot. Amíg nem rendelkezik minden jogosult a kulccsal, az adatokat a korábbiak szerint tároljuk (védetten, de nem végpontok között titkosítva), az alkalmazás pedig megmutatja, kire vár. Amikor a titkosítás él, az adatok a telefonon titkosítódnak, ugyanazokkal az algoritmusokkal, mint a dokumentumok; a szerveren csak az látszik, hogy a bejegyzés létezik, a dátuma és az, hogy ki adta hozzá.
Két dolgot nyíltan leírunk. A szerveren továbbra is látjuk, hogy a bejegyzés létezik, látjuk a dátumát és azt, hogy ki adta hozzá — maga a tartalom olvashatatlan. A titkosítás pedig csak akkor kezd működni, amikor a gyermek adataihoz hozzáférő összes szülő megkapta a kulcsot. Addig az adatokat a korábbiak szerint tároljuk — védetten, de nem végpontok között titkosítva —, az alkalmazás pedig mutatja, kire vár. Amikor a titkosítás működni kezd, a kulccsal rendelkező szülő telefonja a korábbi bejegyzéseket is titkosított formára írja át; ezek nyílt szövegű változata még legfeljebb 7 napig megmaradhat az adatbázis biztonsági mentéseiben.
Ha egyedül használja a ParentLoopot, a kulcs csak az Öné, így a titkosítás azonnal bekapcsol, senkire sem kell várni. A később csatlakozó szülő csak azután kapja meg a kulcsot, hogy Ön a saját telefonján megerősítette a kulcsa ujjlenyomatát. Miért van egyáltalán titkosítás nélküli időszak: ha a családban már két személy fér hozzá az egészségügyi adatokhoz, és egyiküknek még nincs kulcsa, nem titkosítunk erőszakkal csak a másik számára. A kulcs nélküli személy ugyanis nem látná többé a gyermek allergiáit és gyógyszereit, amíg valaki meg nem erősíti a kulcsát — ezt a megerősítést pedig nem lehet automatizálni, mert akkor a szerver a saját kulcsát csempészhetné be. Minden egészségügyi űrlap „Mentés” gombja fölött az alkalmazás jelzi, hogy amit ment, titkosítva lesz-e.
A gyermek PESEL-száma, ha Ön beírja, mindig végpontok között titkosított, anélkül, hogy bármit be kellene kapcsolnia.
Ha a kulcsot új személlyel osztja meg, azt mindig meg kell erősíteni egy olyan telefonon, amelyen a kulcs már megvan – úgy, hogy a képernyőn látszik az illető neve és a kulcs ujjlenyomata.
A helyreállítási kód
Mivel a kulcsa nincs nálunk, telefoncserekor nem tudjuk visszaállítani. Ezért az első indításkor kap egy helyreállítási kódot – ebből származik a kulcs. Ne a telefonon tárolja, hanem máshol. Nélküle (vagy az alább leírt jelkulcsos másolat nélkül) a régi kulccsal titkosított dokumentumok és egészségügyi adatok Ön számára is olvashatatlanok maradnak. Ez az ára annak, hogy mi nem férünk hozzá, és inkább nyíltan kimondjuk, mint hogy „biztos, ami biztos” alapon hátsó kaput tartsunk fenn.
A kulcs másolata jelkulcsban (nem kötelező)
Ahelyett, hogy új telefonon újra begépelné a kódot, a kulcsa másolatát jelkulcsként (passkey) elmentheti az Apple Jelszavak appjába vagy a Google Jelszókezelőbe (a Google azonosítókulcsnak hívja). Új telefonon ezután egyetlen koppintás feloldja a dokumentumait és az egészségügyi adatait.
iOS 18 vagy Android 9, illetve újabb rendszer szükséges. A másolat egy platformon belül működik: iPhone-on mentve iPhone-t old fel, Androidon mentve androidos telefont. Ha egyik platformról a másikra vált, ahhoz továbbra is a helyreállítási kód kell.
Így működik: a szerveren a helyreállítási kódja titkosított másolata van. Az ehhez tartozó kulcsot a
jelkulcsa állítja elő (a WebAuthn PRF-bővítménnyel), és ez a kulcs soha nem jut el hozzánk – jelkulcs
nélkül ez a másolat számunkra is csak egy olvashatatlan bájtsor. A jelkulcs egy külön domainhez, a
klucz.parentloop.pl címhez kötődik, amely két konfigurációs fájlon kívül semmit sem szolgál
ki, így a parentloop.pl egyetlen szkriptje sem kérheti el.
Az őszinte mérleg: ez kényelem, egyetlen feltételezésért cserébe. Aki ismeri az Apple- vagy Google-fiókja jelszavát és valamelyik eszközének jelkódját, használhatja ezt a jelkulcsot. Ezért nem kötelező a másolat. A kulcsbeállításokban bármikor törölheti, és akkor is eltűnik, ha kulcsot cserél vagy törli a fiókját.
Bizalom a másik szülő kulcsában
A végpontok közötti titkosítás csak annyit ér, amennyire biztos abban, hogy kinek titkosít. Az alkalmazás az első alkalommal megjegyzi a másik szülő kulcsát. Ha ez a kulcs később megváltozik, a feltöltés nem folytatódik csendben – megáll, és egy embert kérdez meg.
A kulcs ujjlenyomatát össze is vethetik, és megerősíthetik egymásnak. A megerősítés egy adott személypárhoz és egy konkrét kulcshoz tartozik: ha a kulcs megváltozik, a megerősítés érvényét veszti, és újra el kell végezni. Különben olyan pecsét lenne, amely túléli azt, amit lepecsételt.
A titkosítás tervezésekor abból indulunk ki, hogy a saját szerverünk is hazudhat — mert ha valaki egyszer átveszi az irányítást felette, éppen ezzel próbálkozik majd. Ezért a másik szülő kulcsának ujjlenyomatát az Ön telefonja számolja ki, nem a szerver, és a saját kulcsát a telefon minden olvasáskor összeveti azzal, amelyik nála van. Az a telefon, amely egyszer már titkosítva látta a gyerek egészségügyi adatait, többé nem írja őket titkosítatlanul, akkor sem, ha a szerver azt állítja, hogy a titkosítás ki van kapcsolva. A helyreállító kód megjelenítéséhez és a kulcs cseréjéhez Face ID, Touch ID vagy a képernyőzár kódja kell. A fájlok visszafejtett másolatait (dokumentumok, adatexport, beolvasások) az alkalmazás minden indításkor és kijelentkezéskor törli a telefon tárhelyéről.
Biometrikus zár
A dokumentum megnyitásához Face ID, Touch ID vagy a képernyőzár kódja szükséges — minden alkalommal, nem munkamenetenként egyszer. Beállított képernyőzár nélkül a dokumentum nem nyitható meg. Az asztalon hagyott, feloldott telefon nem ugyanaz, mint a hozzájárulás egy bírósági határozat elolvasásához. Ugyanez vonatkozik az adatexportra is: a ZIP-fájl a dokumentumokat már visszafejtve tartalmazza, ezért az alkalmazás minden letöltés előtt Face ID-t, Touch ID-t vagy a képernyőzár kódját kéri.
Képernyőfotók
A kulcsot és a helyreállítási kódot, a dokumentumokat és a gyermekalkalmazás párosítását mutató képernyők blokkolják a képernyőfotók készítését és a képernyőfelvételt. Androidon a képernyőfotó és a felvétel fekete lesz, a legutóbbi alkalmazások közötti előnézet pedig üres; iPhone-on a képernyőfotó és a felvétel szintén fekete lesz, az alkalmazásváltóban lévő előnézet pedig elmosódott. Az alkalmazás többi részében a képernyőfotók a szokásos módon működnek. Ez akadály, nem garancia: azt semmi nem blokkolja, ha a képernyőt egy másik telefonnal lefényképezik.
Bejelentkezések és bejelentkezett eszközök
Ha a fiók létrehozását követő első 24 óra után valaki bejelentkezik a szülői fiókjába, értesítést kap az alkalmazásban és — ha engedélyezte az értesítéseket — a telefonján is, az eszköz típusával (iPhone vagy iPad, Android telefon vagy táblagép, webböngésző vagy egyéb eszköz). Ezt az értesítést az alkalmazás értesítési beállításaiban nem lehet kikapcsolni (csendes órákban azok végén érkezik). A Beállítások → Adatvédelem és adatok → Bejelentkezett eszközök menüben minden olyan eszközt lát, amelyen a fióknak aktív munkamenete van, és bármelyiket egy koppintással kijelentkeztetheti. A kijelentkeztetett eszköz legkésőbb egy órán belül elveszíti a hozzáférést.
Miért fontos: a ParentLoopba e-mailben kapott linkkel vagy jelszóval jelentkezik be. Ha valaki megtudja a jelszavát, vagy hozzáfér az e-mail-fiókjához, az új bejelentkezésről azonnal tudomást szerez. Ilyenkor jelentkeztesse ki az ismeretlen eszközt, és változtassa meg az e-mail-jelszavát, valamint a ParentLoop-jelszavát is.
Ki mit lát
A felhasználók közül a gyermek adataihoz kizárólag a hozzá kapcsolt szülők és gondviselők férnek hozzá. Ezt maga az adatbázis felügyeli — a hozzáférési szabályok minden egyes sor szintjén működnek, így nem lehet őket megkerülni az alkalmazást kihagyó, „ügyesebb” lekérdezéssel. Ez azonban nem a teljes adatbázis végpontok közötti titkosítása: azok az adatok, amelyek nincsenek a telefonon titkosítva (például a naptár, a kiadások, az üzenetek), technikailag hozzáférhetők az értesítéseket küldő és az adatokat takarító szerveroldali funkcióink, valamint a csapat azon tagjai számára, akik hozzáférnek az adatbázis kezelőfelületéhez. Rutinszerűen nem nézzük át őket. Az üzeneteket csak akkor olvassuk el, ha valaki bejelenti őket, a többi adathoz pedig csak bejelentés vagy hibajavítás miatt nyúlunk. A kezelőfelület, amelyben nap mint nap dolgozunk, csak összesített adatokat mutat, és második bejelentkezési tényezőt kér.
Az alkalmazásban és az adminfelületen használt nyilvános kulcs semmihez sem ad hozzáférést. Ezt az éles rendszeren ellenőriztük: sorra lekérdeztük a fiókokat, a gyerekeket, a naptárakat, az üzeneteket és a dokumentumokat tároló táblákat. Mindegyik elutasította a kérést.
Értesítések
Az értesítés látszik a lezárási képernyőn, és az Expo, az Apple és a Google szerverein halad át, ezért csak a legszükségesebbet tartalmazza. Nincs benne üzenetszöveg, egészségügyi bejegyzés vagy cím: az emlékeztető megmondja, mi és mikor lesz, a helyszín pedig az alkalmazásban látható. Ugyanígy a gyermek átadási helyének változásakor: az értesítés jelzi, hogy a hely megváltozott, az új pedig a naptárban található.
Mi nincs végpontok között titkosítva
A szülők közötti üzenetek. Ez tudatos döntés, nem elmaradás. A ParentLoopban folytatott beszélgetés közös feljegyzés arról, miben állapodtak meg a gyermekkel kapcsolatban: az elküldött üzenetet nem lehet szerkeszteni vagy törölni. Ha valaki visszaélést jelent be, ellenőriznünk kell tudni, mi hangzott el valójában — végpontok közötti titkosítás mellett a bejelentés egy képernyőfotó lenne, amelyet könnyű meghamisítani. Ugyanezért fut a trágárságszűrő a szerveren: a sértő szavakat még az üzenet mentése előtt kitakarjuk, így a lemezre sem kerülnek. Az üzenetek továbbítás közben és a lemezen is titkosítva vannak, és csak bejelentés után olvassuk el őket. Inkább leírjuk ezt, mint hogy a „titkosított” szót úgy használjuk, hogy erősebbnek hangozzék annál, ami.
Hol vannak az adatok
Az adatbázis és a fájlok az Európai Unióban (Frankfurtban) vannak. Az EGT-n kívülre a push értesítésekhez és az alkalmazásfrissítésekhez (Expo, Apple, Google), valamint e weboldal globális Cloudflare-hálózatban történő működéséhez szükséges adatok kerülhetnek — általános adatvédelmi kikötések alapján. A címjavaslatokat a telefon közvetlenül a Google Maps Platformtól tölti le, amely önálló adatkezelőként, a saját szabályai szerint jár el. A szolgáltatók teljes listája az adatvédelmi szabályzatban található.
Androidon a blokk vagy az órarend fotójáról a szöveget a telefonon a Google ML Kit könyvtár olvassa be — de csak akkor, ha ehhez hozzájárul. Sem a fotó, sem a beolvasott szöveg nem jut el a Google-hoz; a könyvtár csak diagnosztikai adatokat küld. A hozzájárulást az alkalmazás beállításaiban vonhatja vissza (Settings → Consents).
Ez a weboldal
Nulla süti, nulla analitika, nulla követőszkript, nulla lekérdezés külső szerverek felé — beleértve a betűtípusokat is, amelyeket szándékosan nem a Google-tól töltünk be. Ezért nem lát itt sütikre vonatkozó hozzájárulási ablakot: nincs mire rákérdeznünk. Az egyetlen dolog, amit az oldal a böngészőben elment, az ÁSZF kiválasztott nyelve (localStorage), hogy a következő látogatáskor ugyanazon a nyelven nyissa meg.
A gyermeknek nincs e-mail-címmel vagy jelszóval védett fiókja
A ParentLoopban a gyermek nem hoz létre bejelentkezési névvel ellátott fiókot, és nem ad meg e-mail-címet. A ParentLoop kids alkalmazás egyszer használatos QR-kóddal kapcsolódik a családhoz — e-mail-cím, jelszó, csevegés és bárkinek történő üzenetküldés lehetősége nélkül. A gyermek kipipálhatja a házimunkákat, és saját eseményeket vehet fel a naptárba (linkek és telefonszámok nélkül); a szülők ezeket akkor látják, ha a gyermek bekapcsolja a „Megmutatom a szüleimnek” lehetőséget.
Amikor az egyik szülő párosítja a gyermek készülékét, a másik értesítést kap erről. A párosított készülék a szülő alkalmazásában bármikor leválasztható — ettől a pillanattól kezdve a gyermek telefonja nem tölt le több adatot a szerverről.
Ki csatlakozhat a családhoz
A gyermek profiljához csak az csatlakozhat, akit egy, a családban már bent lévő szülő meghív, és a meghívó 7 napig érvényes. A fiók létrehozásán kívül a meghívókód és a gyermek telefonjának párosításához szükséges kód csak Face ID, Touch ID vagy a telefon feloldókódja után jelenik meg (ha a telefonon be van állítva képernyőzár). Ha valaki új hozzáférést kap a gyermek adataihoz, a másik szülő értesítést kap.
Egyik szülő sem veheti el egyedül a másik hozzáférését, és nem törölheti a gyermek profilját az ő beleegyezése nélkül. Ez szándékos: a szülői felügyeletről a bíróság dönt, nem egy alkalmazás. A szülők dokumentumait nem ellenőrizzük, mert ehhez bírósági határozatokat és személyazonosító okmányokat kellene gyűjtenünk. Ha valaki jogosultság nélkül vagy bírósági tilalom ellenére kezeli a gyermeke adatait, írjon nekünk: a bejelentést azonnal visszaigazoljuk, 7 napon belül tájékoztatjuk, hogyan bíráljuk el, és ha hivatalos dokumentum valószínűsíti a gyermek vagy egy szülő biztonságának veszélyeztetését, a vizsgálat idejére felfüggeszthetjük az illető hozzáférését (ÁSZF, 6. § (7) bekezdés).
Mindenki csak a saját bejegyzéseit törölheti. Dokumentumot csak az a szülő törölhet, aki felvette (ha ő elveszíti a hozzáférést a gyerek adataihoz, akkor a másik szülő). A naptári eseményt a felvevője törli, a feladatot a létrehozója vagy az, akinek átadta. Ha egy bejegyzést nem törölhet, az alkalmazás megmutatja, ki vette fel. Ezt is az adatbázis biztosítja, nem csak az alkalmazás.
Ha veszélyben van
A ParentLoop nem helyettesíti a segítséget, de néhány dolog megkönnyítheti a helyzetet:
- A másik szülővel folytatott beszélgetést szüneteltetheti. Ilyenkor senki sem küldhet új üzenetet, és csak Ön folytathatja. Az előzmények megmaradnak.
- Bármely üzenetet bejelentheti. A másik fél erről nem értesül.
- Az alkalmazás nem gyűjti a telefon helyadatait, az értesítések pedig nem mutatnak címeket.
- A gyermek alkalmazása nem mutatja az átvételi tervet, és bármelyik szülő bármikor leválaszthatja a gyermek telefonját.
Közvetlen veszély esetén hívja a 112-t. Lengyelországban: a családon belüli erőszak áldozatainak segélyvonala, a „Niebieska Linia”, 800 120 002 (ingyenes).
Az Ön adatai, az Ön döntése
A teljes adatexport és a fiók törlése egyaránt egy-egy gomb az alkalmazásban. Nem kell e-mailt írnia nekünk, várnia vagy megindokolnia.
Amikor a gyerek betölti a 18. életévét
Amikor a gyerek betölti a 18. életévét, töröljük az egészségügyi adatait — az egészségügyi információkat, az orvosi bejegyzéseket és az orvosi dokumentumokat —, valamint a PESEL-számát. A magasság- és testsúlymérések megmaradnak. Körülbelül 30 nappal előtte mindenki, aki látja ezeket az adatokat, értesítést kap, amely az adatexporthoz vezet, hogy időben letölthesse őket.
Hogyan ellenőrizzük
Az alkalmazás és az adatbázis biztonságát minden áruházi kiadás előtt és nagyobb változtatások után átnézzük. Van adatvédelmi hatásvizsgálatunk (DPIA), amely leírja a szülőket és a gyermekeket érintő kockázatokat, a konfliktusban álló családokat is beleértve, valamint eljárásrendünk adatvédelmi incidens esetére. Egy automatikus teszt minden adatbázis-módosításnál ellenőrzi, hogy a fiók törlése az összes adatát törli, egy napi ellenőrzés pedig arra ügyel, hogy a fájlok is törlődjenek.
Az alkalmazást és az adatbázist külső biztonsági szakértők is átnézik, akik abból indulnak ki, hogy a szerver vagy egy másik felhasználó Ön ellen dolgozik; a talált hibákat a következő kiadás előtt kijavítjuk. Minden adatbázis-módosításnál egy automatikus ellenőrzés megnézi, hogy a hozzáférési szabályokban nincs-e az ismert hibatípusok közül egy sem.
Problémát talált?
Írjon a kontakt@parentloop.pl címre. A biztonsági bejelentéseket kiemelten kezeljük, és nem rójuk fel annak, aki jelzi a hibát.
Безпека і конфіденційність у ParentLoop
ParentLoop створено для зберігання одних із найчутливіших даних, які родина може комусь довірити: графіка опіки, здоров’я дитини, документів, грошей. Ця сторінка конкретно описує, що ми з ними робимо, — без загальників на кшталт «безпека банківського рівня». Застосунок готується до публічного запуску і ще недоступний у магазинах.
- Документи дитини ми шифруємо наскрізно. У нас немає ключа, і ми не можемо їх відкрити.
- Дані про здоров’я дитини ми теж шифруємо наскрізно — автоматично, окремо для кожної дитини, щойно ключ мають усі особи з доступом до її даних про здоров’я. Якщо ви користуєтеся застосунком самі — одразу.
- Копію ключа можна зберегти як passkey. Потрібна iOS 18 або Android 9 чи новіший.
- Екрани з ключем, документами і під’єднанням застосунку дитини блокують знімки екрана.
- Серед користувачів дані дитини бачать виключно батьки й опікуни, пов’язані з її профілем. Це забезпечує база даних, а не лише застосунок.
- Кожен новий вхід у ваш акаунт ви бачите одразу (після першої доби від створення акаунта). З незнайомого пристрою можна вийти одним дотиком.
- Дані зберігаються в Європейському Союзі. У Франкфурті, а не «десь у хмарі».
- Сайт не має жодних файлів cookie чи скриптів стеження. Він не просить згоди, бо немає про що просити.
- Дитина не має акаунта з адресою e-mail чи паролем. Це принцип продукту, а не налаштування, яке можна змінити.
- Повідомлення між батьками не шифруються наскрізно. Чому — пишемо нижче.
- Сповіщення не показують адрес, тексту повідомлень і записів про здоров’я.
Документи: наскрізне шифрування
Судові рішення, результати аналізів, довідки зі школи — файл і його назва потрапляють до ParentLoop зашифрованими ще до того, як залишать телефон. На сервері лежить зашифрована послідовність байтів, яку ми не вміємо прочитати, і це питання не внутрішньої політики, а математики. Натомість ми бачимо технічні дані запису: вид документа (напр. паспорт або посвідчення про інвалідності), тип і розмір файлу, хто і коли його додав, а також термін дії, якщо ви його вкажете, — на його підставі сервер надсилає нагадування.
Конкретно ми використовуємо:
XChaCha20-Poly1305— шифрування вмісту файлу разом із перевіркою цілісності.X25519— узгодження ключа між батьками.HKDF-SHA256— виведення ключів.- Бібліотеки
@noble— пройшли аудит, без зовнішніх залежностей.
Приватний ключ ніколи не потрапляє на наш сервер. Він лежить у захищеному системному сховищі телефона (Keychain на iOS, Keystore на Android). Ми публікуємо лише його публічну частину, щоб другий з батьків міг зашифрувати файл так, щоб ви змогли його відкрити.
Для випадковості ми використовуємо системний генератор, свідомо не той, що вбудований у бібліотеку, — у середовищі React Native він може непомітно не спрацювати, а наслідок слабкої випадковості — не помилка, а ключ, який можна вгадати і якого ніхто ніколи не помітить.
Дані про здоров’я: наскрізне шифрування
Алергії, ліки, хронічні хвороби, групу крові, нотатки, медичні записи (візити, щеплення, діагнози, результати аналізів, перебування в лікарні), а також вимірювання зросту і ваги ми шифруємо автоматично, окремо для кожної дитини. Ключ створюється сам на телефоні того з батьків, хто має доступ до даних про здоров’я, дав згоду на їх обробку і має на телефоні ключ до документів (шифрування можна також увімкнути вручну в Налаштуваннях); передання ключа другому з батьків або опікунові потребує підтвердження відбитка ключа. Шифрування починає діяти, коли ключ мають усі особи з доступом до даних про здоров’я цієї дитини — батьки, а також опікун, якщо йому надано таке повноваження. Доки ключ мають не всі уповноважені, дані зберігаються як раніше (захищено, але не наскрізно), а застосунок показує, на кого він чекає. Коли шифрування діє, дані шифруються на телефоні тими самими алгоритмами, що й документи; на сервері видно лише те, що запис існує, його дату і хто його додав.
Дві речі пишемо прямо. На сервері ми й далі бачимо, що запис існує, його дату і хто the додав, — нечитабельним є лише сам зміст. А шифрування починає діяти лише тоді, когато ключ отримають усі батьки з доступом до даних дитини. Доти дані зберігаються як раніше — захищено, але не наскрізно, — а застосунок показує, на кого він чекає. Щойно шифрування починає працювати, телефон батьків із ключем перезаписує в зашифрований вигляд і попередні записи; їхня незашифрована версія може ще до 7 днів залишатися в резервних копіях бази.
Якщо ви користуєтеся ParentLoop самі, ключ є лише у вас, тож шифрування вмикається одразу, без очікування на будь-кого. Той із батьків, хто приєднається пізніше, отримає ключ лише тоді, коли ви підтвердите на своєму телефоні відбиток його ключа. Чому взагалі буває період без шифрування: коли в родині вже є дві особи з доступом до даних про здоров’я, а одна з них ще не має ключа, ми не шифруємо примусово лише для другої. Інакше особа без ключа перестала б бачити алергії та ліки дитини, доки хтось не підтвердить її ключ, — а це підтвердження неможливо автоматизувати, бо тоді сервер міг би підсунути власний ключ. Над кнопкою «Зберегти» в кожній формі про здоров’я застосунок пише, чи буде зашифровано те, що ви зберігаєте.
Номер PESEL дитини, якщо ви його введете, завжди шифрується наскрізно, без потреби будь-що вмикати.
Щоб надати ключ новій людині, завжди потрібне підтвердження на телефоні, який уже має ключ, — з ім’ям цієї людини і відбитком її ключа на екрані.
Код відновлення
Оскільки ключа в нас немає, після зміни телефона ми не можемо його відтворити. Тому під час першого запуску ви отримуєте код відновлення — саме з нього обчислюється ключ. Збережіть його поза телефоном. Без нього (або без копії в passkey, описаної нижче) документи і дані про здоров’я, зашифровані старим ключем, залишаться нечитабельними і для вас. Це ціна того, що ми не маємо до них доступу, і ми воліємо сказати про неї прямо, ніж залишити лазівку «про всяк випадок».
Копія ключа в passkey (за бажанням)
Замість того щоб переписувати код на новому телефоні, можна зберегти копію ключа як ключ доступу (passkey) у «Паролях» Apple або в Менеджері паролів Google. Тоді на новому телефоні ви розблокуєте документи і дані про здоров’я одним дотиком.
Потрібна iOS 18 або Android 9 чи новіший. Копія працює в межах однієї системи: збережена на iPhone розблокує iPhone, збережена на Android — телефон з Android. Під час переходу з однієї системи на іншу й далі потрібен код відновлення.
Як це працює: на сервері ми зберігаємо зашифровану копію коду відновлення. Ключ до неї
обчислює ваш passkey (розширення WebAuthn PRF), і він ніколи до нас не потрапляє — без passkey
ця копія є послідовністю байтів, яку не прочитаємо і ми. Passkey прив’язаний до окремого домену
klucz.parentloop.pl, на якому немає нічого, крім двох конфігураційних файлів, тож
жоден скрипт на сайті parentloop.pl не може його запросити.
Чесно про ризик: це зручність ціною одного припущення. Той, хто знає пароль до вашого акаунта Apple або Google і код одного з ваших пристроїв, може скористатися цим passkey. Тому копія необов’язкова. Ви будь-коли видалите її в налаштуваннях ключа, а ще вона зникає сама, коли ви змінюєте ключ або видаляєте акаунт.
Довіра до ключа другого з батьків
Наскрізне шифрування варте стільки, скільки впевненість, що ви шифруєте для правильної людини. Застосунок запам’ятовує ключ другого з батьків під час першого контакту. Якщо цей ключ пізніше зміниться, надсилання не проходить автоматично — ми зупиняємо його і просимо людину ухвалити рішення.
Ви також можете порівняти «відбиток» ключа і підтвердити його одне одному. Підтвердження стосується конкретної пари людей і конкретного ключа: після зміни ключа воно втрачає чинність, і його треба зробити знову. Інакше це була б печатка, яка переживає те, що мала підтверджувати.
Проєктуючи шифрування, ми виходимо з того, що наш власний сервер може брехати — бо якщо хтось колись його захопить, саме це він і спробує. Тому відбиток ключа іншого з батьків обчислює ваш телефон, а не сервер, а свій власний ключ телефон щоразу під час читання порівнює з тим, що зберігає в себе. Телефон, який хоч раз бачив дані про здоров’я дитини зашифрованими, вже не запише їх у відкритому вигляді, навіть якщо сервер стверджує, що шифрування вимкнено. Щоб показати код відновлення або замінити ключ, потрібні Face ID, Touch ID або код блокування. Розшифровані копії файлів (документи, експорт даних, скани) застосунок видаляє з пам’яті телефона під час кожного запуску і після виходу з облікового запису.
Біометричне блокування
Щоб відкрити документ, потрібні Face ID, Touch ID або код блокування — щоразу, а не раз за сеанс. Без установленого коду блокування документ неможливо відкрити. Розблокований телефон, що лежить на столі, — це не те саме, що згода читати судове рішення. Так само перед експортом даних: файл ZIP містить уже розшифровані документи, тому перед кожним завантаженням застосунок просить Face ID, Touch ID або код блокування.
Знімки екрана
Екрани з ключем і кодом відновлення, документами та під’єднанням застосунку дитини блокують знімки і запис екрана. На Android знімки і запис виходять чорними, а прев’ю в останніх застосунках — пустим; на iPhone знімки і запис також виходять чорними, а прев’ю в перемикачі застосунків розмите. В інших частинах застосунку знімки працюють як звичайно. Це перешкода, а не гарантія: сфотографувати екран іншим телефоном ніщо не заблокує.
Входи та пристрої, на яких виконано вхід
Коли після першої доби від створення акаунта хтось входить у ваш батьківський акаунт, ви отримуєте сповіщення в застосунку та — якщо ви дозволили сповіщення — на телефон, із типом пристрою (iPhone або iPad, телефон або планшет з Android, вебоглядач чи інший пристрій). Це сповіщення не можна вимкнути в налаштуваннях сповіщень застосунку (у тихі години воно надійде, коли вони закінчаться). У Налаштуваннях → Приватність і дані → Пристрої, на яких виконано вхід ви бачите всі пристрої, на яких акаунт має активну сесію, і можете вийти з будь-якого одним дотиком. Пристрій, з якого вийшли, втрачає доступ щонайпізніше за годину.
Чому це важливо: у ParentLoop ви входите за посиланням з електронного листа або паролем. Якщо хтось дізнається ваш пароль або отримає доступ до вашої пошти, ви одразу дізнаєтеся про новий вхід. Тоді вийдіть із незнайомого пристрою і змініть пароль до електронної пошти та пароль у ParentLoop.
Хто бачить дані
Серед користувачів доступ до даних дитини мають виключно пов’язані з нею батьки й опікуни. За цим стежить сама база даних — правила доступу діють на рівні кожного рядка, тож їх неможливо обійти, надіславши «хитрий» запит в обхід застосунку. Проте це не наскрізне шифрування всієї бази даних: дані, які не зашифровані на телефоні (напр. календар, витрати, повідомлення), технічно доступні для наших серверові функцій, які надсилають сповіщення й очищують дані, а також для членів команди з доступом до панелі бази даних. Ми не переглядаємо їх регулярно. Повідомлення ми читаємо лише тоді, коли хтось на них поскаржиться, а до інших даних звертаємося тільки через скаргу чи виправлення помилки. Панель, у якій ми працюємо щодня, показує лише зведені дані й вимагає другого фактора входу.
Публічний ключ, який застосунок і панель мають у коді, не дає доступу ні до чого: ми перевірили це на продакшені, по черзі опитуючи ним таблиці з акаунтами, дітьми, календарем, повідомленнями і документами. Кожна відповіла відмовою.
Сповіщення
Сповіщення видно на заблокованому екрані, і воно проходить через сервери Expo, Apple і Google, тому ми залишаємо в ньому тільки найнеобхідніше. У ньому немає тексту повідомлень, записів про здоров’я чи адрес: нагадування каже, що і коли, а де — побачите в застосунку. Так само зі зміною місця передачі дитини: сповіщення каже, що місце змінилося, а нове — в календарі.
Чого ми не шифруємо наскрізно
Повідомлення між батьками. Це свідоме рішення, а не недоробка. Розмова в ParentLoop — це спільний запис домовленостей щодо дитини: надіслане повідомлення не можна змінити чи видалити. Коли хтось скаржиться на зловживання, ми мусимо мати змогу перевірити, що насправді було написано, — за наскрізного шифрування скаргою був би знімок екрана, який легко підробити. З тієї ж причини фільтр нецензурної лексики працює на сервері: образливі слова маскуються ще до збереження повідомлення, тож на диск вони взагалі не потрапляють. Повідомлення шифруються під час передавання і на диску, а читаємо ми їх лише після скарги. Ми воліємо написати про це прямо, ніж вжити слово «зашифровані» так, щоб воно звучало сильніше, ніж є насправді.
Де зберігаються дані
База даних і файли розміщені в Європейському Союзі (Франкфурт). За межі ЄЕЗ можуть передаватися дані, необхідні для push-сповіщень та оновлень застосунку (Expo, Apple, Google), а також для роботи цього сайту в глобальній мережі Cloudflare, — на підставі стандартних договірних положень. Підказки адрес телефон завантажує безпосередньо з Google Maps Platform, яка діє як окремий адміністратор за власними правилами. Повний список постачальників є в політиці конфіденційності.
На Android текст із фото чека або розкладу читає на телефоні бібліотека Google ML Kit — лише після вашої згоди. Ні фото, ні прочитаний текст не потрапляють до Google; бібліотека надсилає лише діагностичні дані. Згоду можна відкликати в налаштуваннях застосунку (Settings → Consents).
Цей сайт
Нуль файлів cookie, нуль аналітики, нуль скриптів стеження, нуль запитів до зовнішніх серверів — включно зі шрифтами, які свідомо не завантажуються з Google. Тому ви не побачите тут банера згоди на cookie: немає на що давати згоду. Єдине, що сайт зберігає у браузері, — це вибрана мова умов (localStorage), щоб під час наступного відвідування відкрити їх цією самою мовою.
Дитина не має акаунта з адресою e-mail чи паролем
У ParentLoop дитина не створює акаунт із логіном і не вказує адресу e-mail. Застосунок ParentLoop kids під’єднується до родини через одноразовий QR-код — без адреси e-mail, без пароля, без чату і без можливості писати повідомлення будь-кому. Дитина може відмічати обов’язки і додавати власні події до календаря (без посилань і номерів телефонів); батьки бачать їх, якщо дитина ввімкне «Показати батькам».
Коли хтось із батьків під’єднує пристрій дитини, інший отримує про це сповіщення. Під’єднаний пристрій можна будь-коли від’єднати в застосунку батьків — з цього моменту телефон дитини більше не завантажує даних із сервера.
Хто може приєднатися до родини
До профілю дитини може приєднатися лише особа, яку запросив хтось із батьків, що вже є в родині, а запрошення дійсне 7 днів. Окрім створення акаунта, код запрошення і код для під’єднання телефону дитини з’являються лише після Face ID, Touch ID або коду розблокування телефону (якщо на телефоні налаштовано блокування екрана). Коли хтось новий отримує доступ до даних дитини, другий з батьків отримує сповіщення.
Жоден із батьків не може сам позбавити іншого доступу чи видалити профіль дитини без його згоди. Це навмисно: про батьківські права вирішує суд, а не застосунок. Ми не перевіряємо документів батьків, бо для цього довелося б збирати судові рішення й документи, що посвідчують особу. Якщо хтось обробляє дані вашої дитини без права на це або всупереч судовій забороні, напишіть нам: ми одразу підтвердимо отримання скарги, протягом 7 днів повідомимо, як її розглянемо, а якщо офіційний документ свідчить про загрозу безпеці дитини чи одного з батьків, можемо на час розгляду призупинити цій особі доступ (умови, § 6 п. 7).
Кожен видаляє тільки свої записи. Документ може видалити лише той з батьків, хто його додав (а якщо він втратить доступ до даних дитини — інший з батьків). Подію в календарі видаляє її автор, а завдання — автор або той, кому він його передав. Біля запису, який ви не можете видалити, застосунок показує, хто його додав. Це теж забезпечує база даних, а не лише застосунок.
Якщо ви в небезпеці
ParentLoop не замінить допомоги, але кілька речей можуть полегшити ситуацію:
- Розмову з другим з батьків можна призупинити. Тоді ніхто не надішле нового повідомлення, а відновити розмову можете лише ви. Історія залишається.
- На будь-яке повідомлення можна поскаржитися. Інша особа про це не дізнається.
- Застосунок не збирає геолокації телефону, а сповіщення не показують адрес.
- Застосунок дитини не показує плану забирання, а будь-хто з батьків може будь-коли від’єднати телефон дитини.
У разі безпосередньої загрози телефонуйте на 112. У Польщі: гаряча лінія для постраждалих від домашнього насильства «Niebieska Linia», 800 120 002 (безкоштовно).
Ваші дані — ваше рішення
Експорт усіх даних і видалення акаунта є в застосунку, ви робите це самі. Не треба нам писати, чекати чи пояснювати причину.
Коли дитині виповнюється 18 років
Коли дитині виповнюється 18 років, ми видаляємо її дані про здоров’я — інформацію про здоров’я, медичні записи й медичні документи — та номер PESEL. Вимірювання зросту й ваги залишаються. Приблизно за 30 днів до цього кожен, хто бачить ці дані, отримує сповіщення з переходом до експорту, щоб устигнути їх завантажити.
Як ми це перевіряємо
Безпеку застосунку й бази даних ми перевіряємо перед кожним випуском у магазинах і після більших змін. У нас є оцінка впливу на захист даних (DPIA), яка описує ризики для батьків і дітей, зокрема в родинах у конфлікті, а також процедура на випадок порушення захисту даних. Автоматичний тест під час кожної зміни бази даних перевіряє, що видалення акаунта видаляє всі його дані, а щоденна перевірка стежить, щоб видалялися й файли.
Застосунок і базу даних також перевіряють зовнішні рецензенти з безпеки, які виходять з того, що сервер або інший користувач діє проти вас; знайдені помилки ми виправляємо до наступного випуску. Під час кожної зміни бази автоматична перевірка стежить, щоб у правилах доступу не було жодного з відомих типів помилок.
Знайшли проблему?
Напишіть на kontakt@parentloop.pl. Повідомлення про безпеку ми розглядаємо в пріоритетному порядку і не маємо претензій до людей, які їх надсилають.