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íč k dokumentům všechny osoby s přístupem k jeho zdravotním údajům. Pokud aplikaci používáte jen vy, od chvíle, kdy si klíč vytvoříte.
- 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. Klíč k dokumentům aplikace sama nevytvoří: vytvoříte si ho jednou, v Nastavení nebo na obrazovce Dokumenty (na telefonech, které podporují přístupové klíče, ho aplikace nabídne i na konci úvodního nastavení). Dokud ho nemáte, zdravotní údaje dítěte nejsou koncově šifrované. Š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 jen vy, šifrování se zapne, jakmile si vytvoříte klíč k dokumentům, 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: bez klíče k dokumentům ho aplikace neuloží.
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. Spolu s klíčem proto vznikne kód pro obnovení — klíč se z něj odvozuje. Kdykoli ho najdete v nastavení klíče. 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 ParentLoopu 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.