ParentLoop parentloop
УкраїнськаUA

Безпека і конфіденційність у ParentLoop

Останнє оновлення: 2 листопада 2026

ParentLoop створено для зберігання одних із найчутливіших даних, які родина може комусь довірити: графіка опіки, здоров’я дитини, документів, грошей. Ця сторінка конкретно описує, що ми з ними робимо, — без загальників на кшталт «безпека банківського рівня». Застосунок готується до публічного запуску і ще недоступний у магазинах.

  • Документи дитини ми шифруємо наскрізно. У нас немає ключа, і ми не можемо їх відкрити.
  • Дані про здоров’я дитини ми теж шифруємо наскрізно — автоматично, окремо для кожної дитини, коли ключ до документів матимуть усі особи з доступом до її даних про здоров’я. Якщо ви користуєтеся застосунком самі — з моменту, коли ви створите ключ.
  • Копію ключа можна зберегти як passkey. Потрібна iOS 18 або Android 9 чи новіший.
  • Екрани з ключем, документами і під’єднанням застосунку дитини блокують знімки екрана.
  • Серед користувачів дані дитини бачать виключно батьки й опікуни, пов’язані з її профілем. Це забезпечує база даних, а не лише застосунок.
  • Кожен новий вхід у ваш акаунт ви бачите одразу (після першої доби від створення акаунта). З незнайомого пристрою можна вийти одним дотиком.
  • Дані зберігаються в Європейському Союзі. У Франкфурті, а не «десь у хмарі».
  • Сайт не має жодних файлів cookie чи скриптів стеження. Він не просить згоди, бо немає про що просити.
  • Дитина не має акаунта з адресою e-mail чи паролем. Це принцип продукту, а не налаштування, яке можна змінити.
  • Повідомлення між батьками не шифруються наскрізно. Чому — пишемо нижче.
  • Сповіщення не показують адрес, тексту повідомлень і записів про здоров’я.

Документи: наскрізне шифрування

Судові рішення, результати аналізів, довідки зі школи — файл і його назва потрапляють до ParentLoop зашифрованими ще до того, як залишать телефон. На сервері лежить зашифрована послідовність байтів, яку ми не вміємо прочитати, і це питання не внутрішньої політики, а математики. Натомість ми бачимо технічні дані запису: вид документа (напр. паспорт або посвідчення про інвалідність), тип і розмір файлу, хто і коли його додав, а також термін дії, якщо ви його вкажете, — на його підставі сервер надсилає нагадування.

Конкретно ми використовуємо:

  • XChaCha20-Poly1305 — шифрування вмісту файлу разом із перевіркою цілісності.
  • X25519 — узгодження ключа між батьками.
  • HKDF-SHA256 — виведення ключів.
  • Бібліотеки @noble — пройшли аудит, без зовнішніх залежностей.

Приватний ключ ніколи не потрапляє на наш сервер. Він лежить у захищеному системному сховищі телефона (Keychain на iOS, Keystore на Android). Ми публікуємо лише його публічну частину, щоб другий з батьків міг зашифрувати файл так, щоб ви змогли його відкрити.

Для випадковості ми використовуємо системний генератор, свідомо не той, що вбудований у бібліотеку, — у середовищі React Native він може непомітно не спрацювати, а наслідок слабкої випадковості — не помилка, а ключ, який можна вгадати і якого ніхто ніколи не помітить.

Дані про здоров’я: наскрізне шифрування

Алергії, ліки, хронічні хвороби, групу крові, нотатки, медичні записи (візити, щеплення, діагнози, результати аналізів, перебування в лікарні), а також вимірювання зросту і ваги ми шифруємо автоматично, окремо для кожної дитини. Ключ створюється сам на телефоні того з батьків, хто має доступ до даних про здоров’я, дав згоду на їх обробку і має на телефоні ключ до документів (шифрування можна також увімкнути вручну в Налаштуваннях); передання ключа другому з батьків або опікунові потребує підтвердження відбитка ключа. Ключ до документів застосунок сам не створює: ви створюєте його один раз — у Налаштуваннях або на екрані «Документи» (на телефонах, що підтримують passkey, застосунок пропонує це й наприкінці початкового налаштування). Доки у вас його немає, дані про здоров’я дитини не шифруються наскрізно. Шифрування починає діяти, коли ключ мають усі особи з доступом до даних про здоров’я цієї дитини — батьки, а також опікун, якщо йому надано таке повноваження. Доки ключ мають не всі уповноважені, дані зберігаються як раніше (захищено, але не наскрізно), а застосунок показує, на кого він чекає. Коли шифрування діє, дані шифруються на телефоні тими самими алгоритмами, що й документи; на сервері видно лише те, що запис існує, його дату й те, хто його додав.

Дві речі пишемо прямо. На сервері ми й далі бачимо, що запис існує, його дату й те, хто його додав, — нечитабельним є лише сам зміст. А шифрування починає діяти лише тоді, коли ключ отримають усі батьки з доступом до даних дитини. Доти дані зберігаються як раніше — захищено, але не наскрізно, — а застосунок показує, на кого він чекає. Щойно шифрування починає працювати, телефон того з батьків, хто має ключ, перезаписує в зашифрований вигляд і попередні записи; їхня незашифрована версія може ще до 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. Повідомлення про безпеку ми розглядаємо в пріоритетному порядку і не маємо претензій до людей, які їх надсилають.

ParentLoop sp. z o.o., ul. Grójecka 210, 02-390 Warszawa, Польща, статутний капітал 5 000,00 zł — політика конфіденційності · kontakt@parentloop.pl
Реєстраційний суд: Sąd Rejonowy dla m.st. Warszawy w Warszawie, XII Wydział Gospodarczy Krajowego Rejestru Sądowego · KRS 0001272931 · NIP 7011335937 · REGON 545952514