Перевірте самі

signed by Lollyverify-yourself.htmlHTMLAI generatedgenerated by GeminiПеревірте саміGet the signed filepixels, not shapes10 KB

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

Якщо якась перевірка на цій сторінці не дає показаного результату - це або баг, або порушена обіцянка. Повідомте про це у будь-якому разі, і ми поставимося до цього з тією серйозністю, якої заслуговує порушена обіцянка.

Побачте це в дії за десять секунд

Перш ніж перейти до процедур - результат. Відкрийте /verify і перетягніть на нього файл - без завантаження, без облікового запису, без очікування на сервер. Ось як він перевіряє згенерований шторм у Квінсленді зі сторінки нашої позиції щодо ШІ: зображення Gemini, яке Lolly відкрила, змінила розмір і експортувала. Кожен значок нижче обчислено на пристрої, з байтів самого файлу.

Verify на екрані завширшки з телефон - зображення шторму, зелений вердикт Made with Lolly і значки "credential-intact" та "bytes-unchanged" одне під одним нижчеsigned by Lollyvector SVGAI generatedПеревірте саміGet the signed file147 paths~9.4k nodes72 groups2 images254 KBVerify на екрані завширшки з телефон - зображення шторму, зелений вердикт Made with Lolly і значки "credential-intact" та "bytes-unchanged" одне під одним нижчеsigned by Lollyvector SVGAI generatedПеревірте саміGet the signed file147 paths~9.4k nodes72 groups2 images254 KB

Вердикт - не один значок, а невелика купка їх, кожен - незалежний факт:

І вся історія подорожує разом із файлом. Тут збереглося дев'ять кроків - п'ять записав Google під час генерування й водяного знакування зображення, потім чотири записала Lolly під час відкриття, позначення й конвертації копії на цій сторінці - зчитані прямо з байтів, на вашому пристрої, і відображені як хронологія. Це те саме зображення, перевірене тим самим способом, що й хронологія C2PA на сторінці позиції щодо ШІ.

Історія змін, яку Verify зчитує зі зображення шторму - п'ять кроків, записаних Google, потім чотири - Lolly, що завершується WebP на цій сторінціsigned by Lollyvector SVGПеревірте саміGet the signed file71 paths~8.9k nodes78 groups111 KBІсторія змін, яку Verify зчитує зі зображення шторму - п'ять кроків, записаних Google, потім чотири - Lolly, що завершується WebP на цій сторінціsigned by Lollyvector SVGПеревірте саміGet the signed file71 paths~8.9k nodes78 groups111 KB

Втім, це ще не є заявою про довіру - це демонстрація. Решта цієї сторінки і є заявою про довіру: кожен значок вище відтворюваний, і ось як відтворити гарантії, що стоять за ними.

У вашому браузері, без інструментів

1. Спостерігайте за мережею. Відкрийте lolly.tools, відкрийте DevTools браузера (F12), перейдіть на вкладку Network і скористайтеся інструментом - введіть URL у QR Code, змініть кольори, експортуйте PNG. Кожен запит залишається на lolly.tools: оболонка застосунку, власні файли інструмента, ресурси каталогу. Жодного хоста аналітики, жодного CDN-маячка, жодної служби шрифтів, жодної точки "звітування про помилки". Те, що ви вводите в інструмент, не з'являється в жодному запиті - рендеринг локальний.

Чесні винятки - кожен з них опційний, ініційований користувачем і видимий у тій самій вкладці Network, коли він відбувається: додавання шрифту Google у редакторі бренду завантажує саме цю гарнітуру з Google, після діалогу згоди, який чітко про це повідомляє, один раз, перед першим завантаженням; клацання на пресеті ICC-профілю для друку завантажує цей профіль з публічного реєстру ICC на color.org; відтворення опційного вбудованого радіо транслюється зі станції; введення місцевості в Meeting Planner шукає це місце в геокодувальному сервісі open-meteo для отримання координат і часового поясу, один раз на місто (відповіді зберігаються на вашому пристрої), і поле вводу несе це розкриття прямо там, де ви вводите; а URL Screenshot обов'язково завантажує URL, який ви ввели - це його робота, і ви спостерігаєте, як це відбувається. Інструмент, що декларує мережеву можливість, може звертатися лише до хостів, дозволених його маніфестом, і цей механізм за замовчуванням заборонний; жоден інструмент наразі не декларує такого, тож саме Content-Security-Policy, яку примусово застосовує браузер, є межею, що реально утримує наведений вище список у межах його хостів. Політика конфіденційності містить канонічну таблицю всіх цих випадків; її незмінне правило - мережевого звернення, якого немає в цій таблиці, не відбувається.

2. Витягніть штепсель. Завантажте застосунок, відкрийте один-два інструменти, а потім вимкніть з'єднання - режим польоту, або DevTools → Network → Offline. Перезавантажте. Галерея та кожен відкритий вами інструмент продовжують працювати, включно з рендерингом і експортом у форматах, якими ви користувалися - файли інструмента та кодувальник формату кешуються під час першого використання, тож скористайтеся інструментом один раз онлайн, перш ніж перевіряти його офлайн. Це найпотужніша окрема перевірка на цій сторінці: програмне забезпечення, що телефонує додому, не переживає перерізаного шнура.

3. Порахуйте кукі. DevTools → Application (Firefox: Storage) → Cookies → https://lolly.tools. Список порожній - застосунок не встановлює кукі. Або вставте document.cookie у консоль: отримаєте "". (Єдина кука в усій системі, lolly_ca_state, живе щонайбільше десять хвилин під час опційного входу в систему ідентичності - видаляється в момент завершення входу - прив'язана до /api/ca і має ознаку HttpOnly: політика конфіденційності описує її точно.)

4. Прочитайте власне сховище. Та сама панель Application: усе, що зберігає Lolly, можна перевірити прямо перед вами - пара десятків звичайних ключів localStorage (тема, мова, ширина бічної панелі, налаштування звуку та вигляду, а також кешована копія публічного індексу каталогу інструментів), і ваші власні документи в IndexedDB. Кожне значення - це читабельний рядок або JSON - нічого не заплутано, нічого не закодовано, щоб завадити читанню. Profile → Clear all my data стирає це; так само як і очищення даних сайту в браузері, оскільки серверної копії, яка могла б це пережити, немає.

5. Перевірте, що контакт для розкриття інформації існує. /.well-known/security.txt відповідає блоком контактів RFC 9116, а не HTML-сторінкою.

З терміналу

6. Кінцева точка рендерингу вимкнена на lolly.tools. Єдина серверна функція, яка б розміщувала введені користувачем дані в URL - рендеринг за прямим посиланням - тут вимкнена, доки служба не переїде на хостинг, що належить організації (у політиці конфіденційності пояснено чому):

curl -s -o /dev/null -w '%{http_code}\n' 'https://lolly.tools/tool/qr-code.svg?url=test'
# 404

Перемикач діє на рівні розгортання (LOLLY_DISABLE_RENDER_GET=1): на lolly.art, публічному демонстраційному екземплярі, рендеринг за прямим посиланням свідомо увімкнений, тож той самий запит там повертає зображення - ця відмінність є результатом роботи прапорця, а не непослідовністю.

7. Серверну поверхню можна перелічити. Server Surface перелічує кожен наявний серверний маршрут, з незмінним правилом, що кінцева точка, якої немає на цій сторінці, не є частиною Lolly. Перевірте їх через curl; більше нічого шукати.

У джерельному коді

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

git clone --recurse-submodules https://github.com/lolly-tools/lolly.git
cd lolly

8. Ніяких трекерів, ніяких SDK аналітики, ніде. Пошукайте в коді, що постачається, - у рушії, кожній оболонці (включно з розширенням браузера, перевизначеннями моста Tauri та service worker), серверних функціях і пакетах інструментів - звичних підозрюваних:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' --include='*.html' \
  -e googletagmanager -e google-analytics -e posthog -e mixpanel -e hotjar \
  -e sentry.io -e segment.com -e '@vercel/analytics' \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output)

9. Жодного стороннього DNS-резолвера. Перевірка SEAL у Verify ніколи не спрямовує пошуки через провайдера DNS-over-HTTPS - вебзастосунок просто не має резолвера:

grep -rn --include='*.ts' --include='*.js' --include='*.mjs' \
  -e cloudflare-dns.com -e dns.google -e /dns-query \
  engine/src shells/*/src shells/chrome-extension shells/*/bridge-overrides \
  shells/web/public/sw.js services packages api community brands/*/tools
# (no output: outside this page and its built copies, the only place those
#  hostnames appear in the repo is tests/no-trackers.test.ts, the test that
#  bans them)

10. Служба сертифікатів нічого не зберігає. Ідентифікаційний CA не має журналу видачі - ні вашої електронної пошти, ні часової позначки, ні вебхука. Цю відсутність можна перевірити через grep:

grep -rn logIssuance services/ca api/ca
# (no output)

Забезпечено тестами, а не обіцянками

Три перевірки джерельного коду вище - не одноразовий аудит: вони закріплені в наборі тестів, тож не можуть непомітно застаріти. tests/no-trackers.test.ts провалює збірку, якщо:

Запустіть їх самостійно в клоні (Node 22.18+; для цього файлу npm install не потрібен):

node --test tests/no-trackers.test.ts
# ✔ no analytics or tracking SDK appears anywhere in shipped source
# ✔ no third-party DNS-over-HTTPS resolver is contacted
# ✔ the certificate service logs no personal data
# ✔ privacy policy states a controller, a legal basis and a right to complain

Повний набір (npm install && npm test) запускає ще кілька тисяч тестів, включно зі змагальними криптографічними тестами, описаними в Security & Verification.

Що не можна перевірити ззовні - сказано прямо

Така сторінка заслуговує на довіру, називаючи власні межі:

Якщо перевірка провалюється

Розбіжність між цією сторінкою та спостережуваною поведінкою - це звіт про безпеку, і ми справді радше почуємо про неї, ніж ні: fitzy+security@suse.com, кнопка Report a vulnerability у будь-якому репозиторії lolly-tools або контакт у /.well-known/security.txt. Скоординоване розкриття інформації та визнання заслуг репортера - це незмінна політика - деталі в SECURITY.md.