Страниците на Lolly за поверителност и сигурност съдържат твърдения: без анализи, без проследяване, файловете никога не напускат устройството, само една бисквитка в цялата система. Тази страница е различна: не иска от теб да повярваш на нищо от това. Тя е списък от процедури, всяка с точната команда или път с кликвания и резултата, който ще видиш. Всяко твърдение тук е проверимо за минути, повечето без инсталиране на каквото и да е.
Ако някоя проверка на тази страница не даде показания резултат, това е или бъг, или нарушено обещание. Съобщи го във всеки случай, и ще се отнесем с тежестта, която нарушено обещание заслужава.
Виж го как работи, за десет секунди
Преди процедурите, резултатът. Отвори /verify и пусни файл върху него - без качване, без акаунт, без чакане за сървър. Ето го как проверява генерираната буря в Куинсланд от нашата страница за позиция по ИИ: изображение от Gemini, което Lolly отвори, преоразмери и експортира. Всеки бадж по-долу е изчислен на устройството, от собствените байтове на файла.
signed by Lollyvector SVGAI generatedПровери самGet the signed file147 paths~9.4k nodes72 groups2 images254 KB
signed by Lollyvector SVGAI generatedПровери самGet the signed file147 paths~9.4k nodes72 groups2 images254 KB
Вердиктът не е един бадж, а малка купчина от тях, всеки - независим факт:
- Made with Lolly - удостоверението е цяло и записва Lolly експорт.
- Удостоверението е цяло - подписаният C2PA манифест се парсва и собственият му подпис на claim-а се верифицира.
- Байтовете не са се променили - хешът на файла все още съвпада с това, което е подписано. Промени един пиксел и този бадж се обръща.
- GEN AI - машина е създала тези пиксели, и файлът го казва. Lolly чете това твърдение обратно, вместо да го скрива.
И цялата история пътува с файла. Девет стъпки оцеляват тук - пет, записани от Google, докато е генерирал и е поставил воден знак на изображението, после четири, записани от Lolly, докато е отварял, маркирал и конвертирал копието на тази страница - прочетени директно обратно от байтовете, на твоето устройство, и представени като времева линия. Това е същото изображение, верифицирано по същия начин, както времевата линия на C2PA на страницата за позиция по ИИ.
signed by Lollyvector SVGПровери самGet the signed file71 paths~8.9k nodes78 groups111 KB
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 Font в редактора на марката извлича точно това семейство от Google, след диалог за съгласие, който казва точно това, веднъж, преди първото извличане; кликването върху предварителна настройка за ICC печатен профил извлича този профил от публичния регистър на ICC на color.org; пускането на незадължителното вградено радио стриймва от станцията; въвеждането на местоположение в Meeting Planner търси това място в услугата за геокодиране на open-meteo за координатите и часовата зона, веднъж на град (отговорите се запазват на устройството ти), а полето за въвеждане носи точно това обяснение там, където пишеш; и URL Screenshot по необходимост зарежда URL адреса, който си въвел - това му е работата, и ти виждаш как се случва. Инструмент, който декларира мрежова способност, може да прави заявки само към хостовете, разрешени в неговия манифест, и този механизъм е fail-closed; в момента нито един публикуван инструмент не декларира такава, така че прилаганата от браузъра 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 няма дневник за издаване - нито имейла ти, нито времева марка, нито webhook. Отсъствието е проверимо с grep:
grep -rn logIssuance services/ca api/ca
# (no output)
Наложено от тестове, не от обещания
Трите проверки на изходния код по-горе не са еднократен одит - те са закрепени в тестовия пакет, така че не могат тихомълком да остареят. tests/no-trackers.test.ts проваля билда, ако:
- всяко SDK за анализ или проследяване се появи някъде в публикувания изходен код, който се сканира - в приложението, двигателя, сървъра, разширението и кода на пакетите с инструменти,
- се появи какъвто и да е DNS-over-HTTPS резолвър от трета страна в този код,
- дневникът за издаване на CA се завърне - в изходния код или в генерирания сървърен пакет,
- политиката за поверителност загуби своите законово изисквани твърдения (посочен администратор, правно основание, право на жалба).
Изпълни ги сам в клонираното хранилище (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.
Какво не можеш да провериш отвън - казано ясно
Страница като тази печели доверие, като назовава собствените си граници:
- Дневници за достъп на хостинга. Всеки сървър, който отговаря на заявка, може да я регистрира в дневник - IP, път, времева марка. Не можеш да провериш какво даден хост запазва или не, и ние не можем повече от документираното поведение на нашия доставчик. Именно затова архитектурата държи съдържанието ти изцяло извън мрежата: това, което никога не напуска устройството ти, не може да бъде регистрирано от никого.
- Че разгръщането изпълнява точно този код. Можеш да провериш, че изходният код е чист и че разгърнатото поведение му съответства (проверките по-горе покриват и двата края), но атестация на двоично ниво за уеб разгръщане не е нещо, което уеб платформата предлага. Мерките за смекчаване са публичното хранилище, наложените тестове и офлайн проверката - манипулирано разгръщане, което „се обажда вкъщи“, проваля проверки 1 и 2 незабавно.
- Хуковете на инструментите не са изолирани в пясъчник по подразбиране. Незадължителната логика на инструмент се изпълнява прегледана, в собствената реалност на страницата; всеки инструмент на lolly.tools е собствен (first-party) и преглеждан преди публикуване. Изолацията чрез Worker вече е налична като избираема опция за всеки инструмент поотделно - инструмент, чийто манифест задава
isolate: true, изпълнява хуковете си извън основната нишка вместо това - така че това, което не можеш да провериш отвън, се стеснява, но подразбиращият се път все още е в същата реалност и прегледът остава контролът. Това е заявено, не скрито - виж раздела граници на дизайна, който винаги го е казвал.
Ако проверка не мине
Разминаване между тази страница и наблюдаваното поведение е сигнал за сигурност и наистина предпочитаме да го чуем, отколкото не: fitzy+security@suse.com, бутонът Report a vulnerability в което и да е хранилище на lolly-tools или контактът в /.well-known/security.txt. Координирано разкриване и признание на докладващия са постоянната политика - SECURITY.md съдържа подробностите.