Откройте «онлайн-генератор», нажмите создать и посмотрите вкладку Сеть. Если в теле или query только что появился пароль, открытый текст уже покинул устройство. Бренд тут ни при чём: браузер сам раскладывает трафик.
Оставить расчёт в браузере — не лозунг о децентрализации. Это сжать окно открытого текста до устройства: меньше транзита, меньше серверного лога, меньше шанса прочитать дамп. MyPassGen так устроен. Эта заметка не обзор продукта, а ответ: чувствительный расчёт не должен по умолчанию уходить на сервер.
Какое окно открывает серверный расчёт
Окно открытого текста — где реально живёт текст (или ключ, который его восстанавливает). Если считает сервер, это не миг отправки, а цепочка, которую трудно стереть:
- TLS-сессия до источника: процесс сервера видит уже расшифрованный запрос.
- Сэмплы тел в прокси, WAF, APM и ошибках; один 500 может унести форму в отчёт о падении.
- Логи приложения и access log с query. Ключ в
?key=пишется в access log. - Промежуточные файлы, бэкапы и реплики.
- Время, пока эксплуатация, поддержка или злоумышленник касаются любой копии. «Удалим после» не отменяет, что окно уже было.
Юрисдикция и подрядчики делают «мы не смотрим» труднопроверяемой фразой. Проверяются протокол и трафик, не внутренний регламент ЦОД.
Для генерации это особенно резко: нужен секрет, которого ещё нигде не было. Если он родился в чужой машине, первая копия не ваша.
Для проверки то же: отдать привычный пароль удалённому сервису — отдать самый чувствительный навык. MyPassGen не загружает проверяемый пароль; энтропия и список утечек считаются в браузере.
Для файлов схема «загрузить → зашифровать → скачать» оставляет пароль и содержимое в памяти сервера. Локальный поток не даёт серверу открытого текста.
HTTPS — это не локальный расчёт
TLS закрывает подслушивающего на пути, не сервер на той стороне. Если он считает за вас, ему нужен открытый текст. Локальный расчёт отвечает на другое: той стороне этот материал видеть не следует.
Какой слой называется «локальным»
Процесс на вашей машине, не «в облачном аккаунте»
У MyPassGen локально — это вкладка: случайность из crypto.getRandomValues, симметрия через Web Crypto. Ключевой материал живёт в короткоживущем CryptoKey и не уходит полем аналитики.
Алгоритм и лимит файла — проверяемые факты
Только AES-256-GCM. Ящик обрабатывает файл потоком, лимит 5 ГБ, выход .lock или .enc.
Локально — место расчёта; инструменты открываются без аккаунта
Генератор, проверка, приватность, одноразовая ссылка и ящик открываются без регистрации. Локально описывает, где считают, а не то, что открытый текст «никогда не может» уйти: одноразовая ссылка ненадолго отдаёт шифротекст серверу.
| Возможность | Открывается сразу? | Загружается ли чувствительное? |
|---|---|---|
| Случайный / читаемый пароль | Да | Нет; создаётся в браузере |
| Проверка | Да | Пароль не загружается; сила и список локально |
| Clean Link / маскирование | Да | URL и текст локально; не в аналитику |
| Создание одноразовой ссылки | Да | Уходит шифротекст, не исходник |
| Чтение ссылки | Открыто получателю | Ключ в фрагменте #, не с HTTP |
| Файловый ящик | Да | Файл и пароль не загружаются; поток AES-256-GCM |
Одноразовая ссылка — единственный путь с серверным хранением, и хранится шифротекст. Ключ после #. Получатель не регистрируется. После первого чтения шифротекст сжигается. Нулевое знание — не «ничего не храним», а «даже храня, не откроем».
Проверить в Сети, ушло ли чувствительное
Начните с генератора. Случайный и читаемый должны создаваться сразу. Не путайте статику с загрузкой пароля.
Откройте Сеть и Preserve log. Сначала Fetch/XHR, затем все запросы.
Сгенерируйте узнаваемую строку. Скопируйте и ищите её в Сети.
Смотрите URL, Query и Payload. Если совпадений нет, при «создать» открытый текст не ушёл как HTTP.
Повторите на других инструментах. Проверка не должна слать пароль; очистка — POST исходника; ящик — multipart открытого файла.
На одноразовой ссылке смотрите шифротекст и fragment. На сервер уходит шифр, не текст. Ключ после #. Получатель не входит.
Что это доказывает и чего нет
Сеть показывает, попал ли открытый текст в HTTP в этом действии. Расширения, XSS и корпоративный прокси она не видит.
Что должно быть локальным
На устройстве должно остаться то, что нельзя отозвать: новый пароль, проверяемый пароль, текст для маскирования, открытый файл, симметричный ключ.
Уйти может то, что серверу криптографически бесполезно: blob одноразовой ссылки и статика без секретов. Аккаунтов и хранилища паролей нет.
Границы и ошибки
Local-first снижает сервер и транзит, не заражённый компьютер. XSS читает поле. Расширения и SSL-прокси компании видят страницу. «Не загружается» — не «без сети»: страница всё равно ходит за скриптами. v1 — AES-256-GCM. Чтение ссылки без регистрации. Мы не утверждаем, что сервер видит открытый текст или ключ.
С чего начать проверку
Дешевле всего генератор: откройте Сеть и найдите только что созданную строку. Файл, который нельзя класть на диск открытым, — ящик, до 5 ГБ, .lock / .enc. Короткий секрет на один раз — сжечь ссылку: ключ после #. Эта заметка просит ответить: после клика открытый текст ещё во вкладке?