kodukeelПочати безкоштовноПочати безкоштовно

Довіра й безпека

Оновлено 5 вересня 2026

Цю сторінку перекладено за допомогою ШІ, і носій мови її ще не перевіряв. A machine translated this page, and no native speaker has checked it yet.

Ця сторінка для тих, хто вирішує, чи можна довірити Kodukeel класу, команді або грантовому проєкту. Спершу йдуть короткі відповіді, і кожна веде до подробиць нижче.

Хто керує цією копією

Оператор цієї інсталяції: Upthink Solutions OÜ, реєстраційний код 16683946, адреса: Aiandi tn 8/2-28, Mustamäe linnaosa, 12915 Tallinn, Harju maakond, Estonia. Це контролер даних кожного учня тут і сторона, з якою укладався б будь-який договір.

Одна адреса, і лист на неї читає жива людина, чи то питання про дані, повідомлення про вразливість чи питання про закупівлю: privacy@upthink.ee. Окремої скриньки з безпеки поки немає.

Де зберігаються дані і хто ще їх обробляє

Усе, що робить учень, зберігається у власній базі Postgres цієї інсталяції. Ніхто з перелічених нижче не отримує ні колоди, ні історії повторень, ні екзаменаційної роботи. Список читається з налаштувань цієї інсталяції, тож це перелік сервісів, до яких звертається ця копія.

  • Groq: те, що ви пишете Ану, і будь-яка сфотографована вами сторінка. Зареєстрований за межами Європейської економічної зони.
  • Google Gemini: те, що ви пишете Ану, і будь-яка сфотографована вами сторінка. Зареєстрований за межами Європейської економічної зони.
  • Anthropic: те, що ви пишете Ану, і будь-яка сфотографована вами сторінка. Зареєстрований за межами Європейської економічної зони.
  • Ekilex в Інституті естонської мови: одне слово, яке ви шукали, без прив'язки до облікового запису. Зареєстрований у Європейській економічній зоні.
  • Фонд Вікімедіа, який веде Вікісловник: те саме слово, із запитом його значення англійською, або англійське слово, яке ви шукали, із запитом його естонською, без прив'язки до облікового запису. Зареєстрований за межами Європейської економічної зони.
  • Resend, який надсилає наші листи: ваша адреса електронної пошти і те, що в листі сказано про ваш власний курс. Зареєстрований за межами Європейської економічної зони.
  • Служби push-сповіщень Google, Mozilla, Apple і Microsoft: нагадування, яке ви попросили отримувати на комп'ютері, зашифроване так, що прочитати його може лише цей браузер. Зареєстрований за межами Європейської економічної зони.
  • TartuNLP у Тартуському університеті: фраза, яку ви попросили прочитати вголос, без прив'язки до облікового запису. Зареєстрований у Європейській економічній зоні.
  • Supabase: ваша адреса електронної пошти і весь вміст бази даних, оскільки і те, й інше розміщено в нього. Де він розташований, залежить від того, як налаштовано інсталяцію, тож запитайте в оператора, вказаного вище.
  • Vercel, де працюють сервери цього застосунку: кожен ваш запит, поки на нього відповідають, і журнал запитів, у якому є ваша IP-адреса. Зареєстрований за межами Європейської економічної зони.

Частина цього залишає Європейську економічну зону, і це важливо для оцінки передачі даних. Передача ґрунтується на стандартних договірних умовах, які публікує кожен постачальник. Дані передають дві функції, репетиторка і сканер сторінок, а в інсталяції без постачальника ШІ немає ні тієї, ні іншої, тож організація, яка не може прийняти таку передачу, може користуватися рештою застосунку без неї.

Немає ні постачальника аналітики, ні рекламного ідентифікатора, ні стороннього трекера: у застосунку ніде немає стороннього тегу script, а єдине, що він рахує, чи повертаються люди, обчислюється з його власного журналу повторень. Сторінка «Конфіденційність» розповідає про все це докладно й написана для учня, а не для покупця.

Як учень забирає свої дані і як їх видаляє

Експорт. У налаштуваннях є кнопка, яка видає все, що зберігається про обліковий запис, одним файлом JSON: кожну картку, повторення, завдання, налаштування, відсканований список слів, перевірку рівня, пробний іспит із твором, повідомлення репетиторці, розмову, пропозицію, позначене слово й членство в групі. Той самий файл відновлюється в новій інсталяції.

Видалення всього. На тому самому екрані обліковий запис видаляється з усім умістом, зокрема із записом для входу, однією дією і без письмового запиту. Якщо інсталяція не налаштована видаляти запис для входу сама, кнопка прямо про це каже, а не повідомляє про успіх, якого не було. Обидві кнопки є в розділі «Налаштування».

Учень у групі чи робочій групі може з неї вийти: тоді спонсор перестає будь-що бачити, а з колоди учня нічого не зникає.

Те, що вчитель бачить про групу, показано на вигаданій групі на сторінці для викладачів.

Організація, яка вирішує, чи пробувати застосунок із групою, може прочитати що таке пілотний проєкт (англійською), зокрема про те, до чого він ще не готовий.

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

До якої частини державного іспиту готує кожен розділ курсу і де курсу поки нічого запропонувати, сказано на сторінці що охоплює курс (англійською).

Стан безпеки

Роботу з безпеки описано повністю, а не переказано для вас коротко. Є три документи, і в кожному названо файли, які можна відкрити:

  • Огляд безпеки й модель загроз: що являє собою система, п'ять меж довіри, п'ятнадцять загроз, розібраних по одній, перелік заходів захисту і розділ про те, що не зроблено.
  • Реагування на інциденти: рівні серйозності, хто що робить, строк за статтею 33 GDPR для повідомлення наглядового органу, строк за статтею 34 GDPR для повідомлення людей, яких це стосується, і покрокові інструкції на випадок витоку облікових даних, неконтрольованого рахунку за ШІ, відновлення бази даних і зіпсованого словника.
  • Карта заходів захисту: заходи захисту, про які зазвичай питають рецензенти, із зазначенням, де реалізовано кожен.

Усі три документи англійською.

Чого в цього проєкту немає, прямо. Немає звіту SOC 2. Немає сертифіката ISO/IEC 27001. Карту заходів захисту складено як самооцінку тими самими людьми, що писали код, і ніхто поза проєктом її не перевіряв. Зовнішній тест на проникнення не замовляли, тож ніхто не атакував цей застосунок за договором, і жоден незалежний фахівець не читав вихідного коду в пошуках вразливостей. Те, що код відкритий, не означає, що він пройшов аудит.

Ще чотири обмеження. Належність рядків забезпечується кодом застосунку й перевіряється під час збирання, а не механізмом захисту на рівні рядків у Postgres. Політика безпеки вмісту (CSP) дозволяє ‘unsafe-inline’ у джерелах скриптів, з причини, описаної в коді, і це найслабше її місце. Журнали ніхто не відстежує постійно: немає виявлення вторгнень і немає сповіщень, крім необов'язкового вебхука для помилок. І багатофакторна автентифікація береться з того, що ввімкнено в обліковому записі Google учня, а не вимагається тут.

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

Один із цих наборів ставить ці запитання серверу, що працює, а не вихідному коду. Він надсилає підроблені запити, читає кожен заголовок безпеки, перевіряє, що закрите токеном лишається закритим, і дивиться, що готова повідомити точка перевірки стану. Під час першого ж запуску він виявив, що запит з адресою, яку застосунок не міг розібрати, оброблявся як запит без адреси. Його написали ті самі люди, що писали код, тож він не може підтвердити, що будову системи зроблено правильно, і це не та зовнішня перевірка, якої, як сказано в цьому розділі, бракує.

Доступність сервісу

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

Повторення переживає втрату мережі. Оцінка, дана без зв'язку, потрапляє в чергу в браузері й надсилається пізніше з часом, коли відповідь було дано насправді, ніколи не губиться і не отримує нового часу, тож заняття в потязі нічого не коштує. Сервіс-воркер зберігає сторінки, на яких учень був останнім, і екран для роботи без мережі за ними, тож застосунок відкривається, а не показує помилку браузера. Словникові, репетиторці й озвученню потрібен зв'язок, і вони кажуть про це, а не показують застаріле.

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

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

Перевірка стану. /api/health відповідає без входу в обліковий запис і повідомляє, чи працює застосунок, чи відповідає база даних і з якого коміту зібрано цю версію. У відповіді немає ні підрахунків, ні відомостей про будь-кого. Її можна опитувати системою моніторингу.

Як повідомити про вразливість

Надішліть його privacy@upthink.ee зі словом «security» у темі листа. Повна політика в SECURITY.md, зокрема строки відповіді, яких ми справді можемо дотриматися: три робочі дні на підтвердження отримання, десять, щоб сказати, чи згодні ми, що це проблема, і орієнтир у тридцять днів на виправлення всього критичного чи серйозного. Якщо повідомлення настільки чутливе, що звичайна пошта вас непокоїть, напишіть про це одним рядком без подробиць, і ми організуємо інший канал.

Якщо витік колись зачепить персональні дані, ми діємо за описаним вище документом про інциденти, а наглядовий орган Естонії: Інспекція із захисту даних Естонії (Andmekaitse Inspektsioon).

Доступність

Контрастність вимірюється в браузері в обох темах, кожен елемент керування перевіряється на розмір 44px за сенсорного введення, axe проходить кожною сторінкою за кожної зміни, а аудит за участю людини з інвалідністю, яка користується допоміжними технологіями, поки не замовляли. У заяві про доступність сказано, що заявлено, що перевірено і які прогалини відомі.

Конфіденційність, Умови, Фінансування, Довіра, Для викладачів, Пілотний проєкт (англійською), Доступність, Державний іспит, Допомога, Увійти, Контакти