Сразу вывод: пароль на архив не доказывает, что «облако не видит файлы». Он говорит только, что для распаковки нужна фраза. Каталог ZIP по умолчанию читается без пароля, а классический ZipCrypto отдаёт внутренний ключ, если известен короткий кусок открытого текста. Перед загрузкой сверьте два факта: содержимое уже закрыто на этом устройстве аутентифицированным шифрованием, и этот HTTP-запрос не унёс открытый текст или пароль.
Сначала одним предложением — ответ на запрос
Пароль на архив перед загрузкой в облако и локальный AES-GCM — разные слои. Архив кладёт файлы в контейнер ZIP и запирает содержимое этих файлов. Собственный каталог контейнера — имена, даты, размеры — задуман так, чтобы его читали. Локальный AES-256-GCM считает байты через Web Crypto API браузера; вы скачиваете шифротекст и уже его загружаете. Без вашей фразы у облака остаётся шум.
Заметка для разработчиков, админов и всех, кто перед бэкапом на Диск хочет отделить «я поставил пароль» от «вторая сторона не читает содержимое». Она не подменяет инструкцию к шифрованию файлов и не повторяет клики, после которых появляется .lock. Унести отсюда стоит другое: что закрывают ZipCrypto и ZIP-AES, у кого ключи облака по умолчанию, что остаётся в заголовке локального шифротекста и как на этом прогоне сверить Network и hex-дамп.
«Поставил пароль» — это не «облако не видит содержимое»
В бытовой речи три разные работы сливаются в фразу «этот файл зашифрован». Первая — шифрование в канале: браузер говорит с Диском по HTTPS, наблюдатель на пути с трудом читает байты. Вторая — шифрование у провайдера на диске: блоки обёрнуты ключами, которыми управляет сервис; это помогает, если накопитель украли из дата-центра. Третья — клиентское шифрование с ключом у вас: содержимое уже шифротекст до загрузки, и провайдер без вашей фразы его не откроет.
Пароль архива сидит в четвёртой привычке: вы на этом компьютере собрали контейнер с фразой, затем загрузили его как обычный файл. Для Диска это такой же .zip, как и без пароля: индекс по имени, хеш для мгновенной загрузки, антивирус и политики по содержимому. Если внутри всё ещё ZipCrypto или каталог открыт, сканеру не нужно «угадывать пароль», чтобы прочитать имена, а иногда он может сделать больше и с содержимым.
Поэтому «я поставил пароль» держит только узкий вывод: тот, кто не распаковывает или не знает фразу, содержимое сразу не откроет. Из этого не следует «сотрудник Диска не увидит», «по законному запросу исходники не достанут» или «имена не попадут в их индекс». Эти предложения становятся проверяемыми только после смены слоя: аутентифицированное шифрование на устройстве, затем загрузка шифротекста.
Что ZipCrypto не останавливает
Классическое шифрование ZIP обычно называют Zip 2.0 или ZipCrypto. Справка WinZip говорит прямо: формат относительно слабый, и на него не стоит рассчитывать против человека со специализированной утилитой восстановления; если файлы важны, берите AES. Это в заметках WinZip про шифрование, а не на форуме.
Слабость в шифре, а не в длине вашего пароля. В 1994 году Эли Бихам и Пол Кохер опубликовали атаку по известному открытому тексту на потоковый шифр PKZIP: достаточно примерно дюжины совпавших байт открытого текста и шифротекста, чтобы восстановить три внутренних 32-битных состояния и дальше весь ключевой поток файла. Длина пароля на этом шаге выпадает — копируют цилиндр замка, а не перебирают ключи. Открытые программы вроде bkcrack превращают статью в утилиту; архивы, записанные методом Store (без сжатия) на ZipCrypto, самый прямой случай.
Откуда берётся известный открытый текст? PDF начинается с %PDF. Документы Office, многие картинки и вложенные ZIP имеют фиксированную магию. Если положить известный формат в архив ZipCrypto и загрузить его, вы одновременно отдали шифротекст и почти наверняка кусок исходника. Это не инструкция к атаке. Это причина перестать считать «сжать и поставить пароль» равным AES-256-GCM.
Встроенный архиватор Windows, кнопка «зашифровать и упаковать» на сайте облака и старые скрипты часто выбирают ZipCrypto, потому что его откроет почти любой распаковщик. После упаковки откройте свойства: если там ZipCrypto или Zip 2.0, такой архив не годится как план бэкапа. Если там AES — переходите к следующему разделу: слой содержимого крепче, каталог чаще всего по-прежнему открыт.
Не ставьте опыт на настоящем договоре, скане паспорта или невычищенной папке проекта. Подготовьте одноразовый маленький файл. И в имя, и в текст положите канареечную строку. Сверяете каталог, заголовок и трафик — а не загружаете частное ещё раз.
Даже ZIP с AES показывает каталог
С версии 9.0 WinZip предлагает AES-128 и AES-256 (AE-1 / AE-2). Ключ получается из фразы через PBKDF2, соль 8, 12 или 16 байт, итераций — 1000. Это большой шаг относительно ZipCrypto, но это всё ещё не «AES-256-GCM в браузере». WinZip AES сначала шифрует, затем ставит имитовставку (AES-CTR плюс HMAC). Это не NIST GCM. Тысяча итераций далеко от привычных сейчас сотен тысяч при выводе ключа из пароля. Обёртку WinZip описывает на странице AES.
Каталог легче пропустить. WinZip пишет: шифрование действует только на содержимое файлов внутри архива. Имя, дата, размер, атрибуты и степень сжатия лежат в незашифрованном каталоге. У кого есть ZIP, тот читает их без пароля. Отдельно выходила заметка «открыли зашифрованный ZIP — имена всё равно видны»; совет там — двойная упаковка: сначала архив без шифрования, затем этот архив внутрь второго, уже с паролем. См. WinZip про видимость имён.
В 7-Zip у формата .7z есть галочка «шифровать имена файлов». Это другая линейка; её нельзя смешивать с поведением ZIP по умолчанию. Надпись «требуется пароль» в Проводнике значит только, что для распаковки нужна фраза. Откройте тот же файл другим архиватором — список часто появляется сразу: паспорт-оборот.jpg, ведомость-2026.xlsx, клиенты.csv. Мгновенная загрузка, предпросмотр и политики читают именно этот слой.
«Зашифровано в облаке» обычно значит, что ключи у провайдера
Положите ZIP — или исходник — на Яндекс Диск, и справка расскажет про защищённое соединение и антивирус. Справка Диска про безопасность прямо пишет: сайт и приложения передают данные только по зашифрованному каналу, а файлы до 1 ГБ проверяет антивирус. Это полезно против вредоносного вложения. Это не ответ на вопрос, кто держит ключ расшифрования вашего договора. Антивирусная проверка как раз предполагает, что сервис видит байты файла — или хотя бы может разобрать контейнер и имена внутри.
У Google Диска формулировка ещё жёстче и её проще сверить. Справка говорит: файлы, загруженные или созданные в Docs / Sheets / Slides, по умолчанию шифруются при передаче и на диске алгоритмом AES-256. Чтобы Google ещё и не мог расшифровать, администратор Workspace должен включить клиентское шифрование, а пользователь — войти с рабочим или учебным аккаунтом и пройти проверку личности. Личный файл, перетащенный в «Мой диск», идёт по пути по умолчанию, не по клиентскому шифрованию. Это в справке Drive про зашифрованные файлы.
Google Cloud формулирует модель покоя ещё прямее: ключи принадлежат Google и ими управляет Google. Ключи данных (DEK) на диске обёрнуты ключами шифрования ключей (KEK); разворачивание происходит в сервисе ключей провайдера. См. шифрование Google Cloud по умолчанию. У Яндекс 360 для бизнеса резервные копии тоже шифрует внутренняя система управления ключами, а канал закрывает TLS. Это защита диска и канала, а не «после того как я отдал файл компании, она его тоже не видит». Второе предложение становится наблюдением только если читаемый исходник исчез ещё до загрузки.
Какой слой закрывает локальный AES-256-GCM
AES-GCM — аутентифицированное шифрование: один проход и прячет байты, и привязывает целостность. Если шифротекст обрезали, подменили или фраза неверна, расшифрование должно сразу отказать, а не выдать «мусор, похожий на открытый текст». NIST SP 800-38D для совместимого GCM рекомендует IV в 96 бит (12 байт); тег обычно 128 бит (16 байт). Повтор IV при том же ключе валит и конфиденциальность, и подлинность.
Правильный путь в браузере — crypto.subtle.encrypt с именем алгоритма AES-GCM. MDN пишет, что SubtleCrypto.encrypt доступен только в безопасном контексте — в проде это HTTPS. Парольная фраза — не 256-битный ключ. Её нужно прогнать через функцию вроде PBKDF2 с солью и большим числом итераций. PBKDF2 описан в RFC 2898; число итераций — сколько стоит одна догадка. Тысяча и сто тысяч — разные классы.
Файловый сценарий можно записать действиями, которые видно: выбрать локальный файл, скрипт читает его блоками, каждый блок получает новый случайный IV и AES-256-GCM, затем браузер скачивает шифротекст. Эта загрузка собрана на устройстве. Это не квитанция сервера. Потолок в 5 ГБ на один файл описывает потоковую обработку в браузере. Он не значит, что удалённый узел получил 5 ГБ открытого текста.
Шифрование файлов FastPwd держит эту границу: AES-256-GCM в Web Crypto; фраза идёт через PBKDF2-HMAC-SHA256, 100000 итераций, соль 16 байт, ключ 256 бит; блоки по умолчанию 1 МБ, у каждого IV 12 байт, шифротекст и тег 16 байт; один файл до 5 ГБ; на выходе .lock / .enc с магией CSLK. Все инструменты открыли — и можно пользоваться: аккаунтов и хранилища паролей нет. Забыли фразу — восстановить нельзя, потому что её никогда не загружали. Обещание всё равно только обещание. Ниже — чеклист, включая ту часть заголовка, которая не зашифрована.
Что шифрование может доказать и что заголовок всё ещё показывает
Вывод, который держит локальное шифрование, тоже узкий. Если записать его заранее, меньше шансов ошибиться. Оно может поддержать: в этом прогоне содержимое файла по блокам стало аутентифицированным шифротекстом; без фразы расшифрование должно отказать; если Network не находит канарейку, открытый текст и фраза не ушли как те рабочие HTTP-данные, которые вы наблюдали.
Оно не доказывает: облако не видит никаких метаданных, расширение не читало буфер обмена, фраза достаточно стойкая, или у кого есть шифротекст, никогда не запустит офлайн-перебор. FastPwd Lock v1 кладёт исходное имя и MIME в заголовок открытым текстом, чтобы после расшифрования вернуть имя. Загрузите паспорт-оборот.lock или оставьте в заголовке паспорт-оборот.jpg — Диск или любой с hex-просмотрщиком прочитает эти слова. Шифрование закрывает блоки содержимого, а не ярлык, который контейнер показывает снаружи.
| Что вы видите | Какой вывод это держит | Какой вывод это не держит |
|---|---|---|
| ZIP просит пароль при распаковке | На слое содержимого стоит замок | Каталог скрыт; алгоритм — AES-GCM |
| Имена видны без распаковки | Каталог ZIP открыт (обычное умолчание) | Содержимое тоже уже открыто |
| В свойствах ZipCrypto / Zip 2.0 | Классический поток; атака по известному тексту применима | Длинный пароль остановит специализированную утилиту |
| Облако пишет «данные зашифрованы» | Скорее всего есть канал или шифрование на диске | У провайдера нет ключей и он не видит исходник |
Устройство скачало .lock / .enc |
Браузер собрал файл-шифротекст | Исходное имя в заголовке тоже спрятано |
| Network не находит канарейку | Эти запросы не унесли эти поля | Расширения, буфер обмена и следующая версия чисты |
Сверьте сейчас: Network, заголовок и офлайн
Слоган — не доказательство. Подготовьте одноразовый маленький файл. В текст положите canary-fp-20260904-zip-vs-gcm, имя — canary-fp-20260904.txt. Фразу возьмите длинную и одноразовую. Настоящую не повторяйте.
- Сначала контроль: упакуйте тот же файл в ZIP с паролем. Откройте архиватором без ввода пароля. Запишите, видны ли имена и что в свойствах — ZipCrypto или AES. Это и есть зона, которую закрывает пароль архива.
- Затем зашифруйте локально в браузере. Откройте в DevTools Network, включите Preserve log, фильтр оставьте All. После шифрования вставьте канарейку в поиск. Её не должно быть в строке запроса, теле и аналитике.
- Откройте скачанный
.lockв hex-просмотрщике. Первые четыре байта должны бытьCSLK(43 53 4C 4B). Дальше видны соль, размер блока и исходное имя, которое вы оставили. В области содержимого той канареечной фразы открытым текстом быть не должно. - Когда страница уже загрузилась, переключите Network в Offline или отключите сеть и зашифруйте другой одноразовый файл. Если
.lockвсё равно скачивается, этому шифрованию не нужен живой API. Офлайн должен пройти; когда сеть вернётся, канарейку поищите ещё раз.
Фразу и шифротекст не ведите одним каналом. .lock положите на Диск; фразу отдайте через самоуничтожающуюся ссылку: этот браузер шифрует AES-256-GCM, сервер хранит только шифротекст, ключ стоит в # fragment ссылки вида s.html?id={id}#{key}. Положить полный адрес сжигания в ту же папку Диска, что и шифротекст, — всё равно что приклеить ключ к ящику скотчем.
Перед шифрованием переименуйте исходник во что-то бессмысленное. Заголовок запишет это имя как есть; расширение .lock / .enc тоже появится в списке Диска. Это только снижает «имя само себя выдало». Это не стеганография.
Три случая, которые выглядят как шифрование и не закрывают то, что вы думаете
Первый — «зашифровать и упаковать» на сайте. Некоторые диски пакуют после окончания загрузки или вешают на шаринг код извлечения. Код останавливает тех, кто не нажмёт ссылку. Он не останавливает сервер, который исходник уже сохранил. Проверка: шифрование случилось до выбора файла или после того, как дошла полоса прогресса? Второй случай — не локальный AES-GCM.
Второй — пароль на открытие в Word, Excel или PDF. Он закрывает сценарий «открыть в своём читателе». В формате по-прежнему много структурированных полей; предпросмотр Диска, полнотекстовый поиск и конвертеры часто обходят «спросить пароль при открытии». Не равняйте это с аутентифицированным шифрованием целого файла.
Третий — смена расширения. Переименовать .xlsx в .bin перед загрузкой не останавливает мгновенную загрузку и часть сканеров: они работают по хешу содержимого, магия в заголовке на месте. Расширение — не криптография. После локального шифрования эти магические байты из области содержимого должны исчезнуть. Если в hex всё ещё видны PK, %PDF или открытый маркер xlsx, этот прогон не прошёл.
Частые вопросы
Если поставить на ZIP пароль AES-256, на Диск всё равно небезопасно?
Слой содержимого сильнее ZipCrypto, но имена, даты и размеры в каталоге ZIP по умолчанию остаются открытым текстом. Диск и любой, у кого есть архив, может вывести список. Это также не AES-256-GCM в браузере: WinZip AES упаковывает иначе, PBKDF2 делает 1000 итераций. Чтобы облако видело только шифротекст, сначала зашифруйте всё содержимое локально, затем загружайте.
Если облако пишет «шифрование при передаче и хранении», этого достаточно?
Обычно это шифрование по умолчанию, ключи которого держит провайдер. TLS закрывает канал; шифрование на диске закрывает украденный накопитель. Провайдер, сотрудники с доступом к ключам и законный запрос всё ещё могут получить исходные байты. Чтобы у Google Диска фраза «Google не расшифрует» стала фактом, администратор Workspace должен включить клиентское шифрование. Это не путь по умолчанию, когда личный аккаунт перетаскивает файл в «Мой диск». У Яндекс Диска справка описывает TLS и антивирус, а не клиентское шифрование, при котором сервис не видит исходник.
После загрузки FastPwd .lock облако всё ещё видит исходное имя файла?
Да. Видно расширение, из заголовка читаются исходное имя и MIME. Зашифровано содержимое файла блоками по 1 МБ, а не метаданные контейнера. Перед шифрованием переименуйте исходник во что-то бессмысленное. Фразу не кладите в тот же шаринг, что и шифротекст.
Когда я шифрую на FastPwd, файл или пароль уходят на сервер?
По описанию продукта шифрование и расшифрование заканчиваются в текущей вкладке через Web Crypto. Файл и пароль не уходят как рабочие данные и не пишутся в аналитику. Аналитика визитов записывает имена действий, не файл и не фразу. Ищите канарейку в Network: её не должно быть в строке запроса и в теле. На localhost аналитика визитов по умолчанию не уходит; на боевом имени хоста повторите ещё раз — так ближе к реальному использованию.
Прогоните тот же одноразовый файл через инструмент, который сразу готов
Если нужна страница, где граница вычислений написана открыто, откройте шифрование файлов FastPwd. Открыли — и можно пользоваться, регистрация не нужна. Выберите канареечный файл выше и длинную одноразовую фразу. Если фразу оценят как слабую, страница сначала попросит подтверждение. Скачайте .lock. Смотрите Network параллельно: должны быть статика и, возможно, аналитика визитов, но не исходный файл и не фраза как рабочие поля.
Фразу можно сначала собрать локально в генераторе паролей. В случайном режиме длина 6–128 символов, по умолчанию 16; короче 8 — пометка, что защита слабее. Генерация тоже не загружается. Когда фразу должен получить коллега, переключитесь на самоуничтожающуюся ссылку. Не пишите её в комментарий Диска. Не запихивайте однострочный секрет в .lock как транспорт: шифрование файлов закрывает бэкап и передачу целого файла, а не строку, которой место в чате.
Перед следующей загрузкой оставьте себе три факта. Первое: пароль архива закрывает распаковку, не каталог и не атаку по известному тексту на ZipCrypto. Второе: ключи облачного шифрования по умолчанию обычно у провайдера. Третье: локальный AES-256-GCM закрывает блоки содержимого; заголовок и расширение всё ещё могут выдать, поэтому Network и hex смотрите сами. В собственную памятку по бэкапу стоит писать только то наблюдение, которое можно повторить.
Что ещё почитать
«Локальное шифрование, ничего не загружается» — не доказательство, пока не поищете канарейку в Network; см. Как проверить, что локальное шифрование в браузере не отправило открытый текст. Когда фразу отдаёте получателю отдельным каналом, почему часть после решётки по умолчанию не входит в HTTP, см. Почему после решётки в URL можно класть ключ и когда эта защита ломается. Если ещё нужно закрыть номера документов в тикете до того, как они покинут устройство, см. Перед тем как вставить тикеты и логи в ИИ, сверьте, какие поля покинут это устройство.