Сохранённый пароль записан как AES-256-GCM. Почему это не значит, что программа на этом компьютере его не прочитает

Строка «зашифровано» в менеджере паролей легко читается как обещание: другие программы на этом компьютере открытый текст не заберут. Разбор K7 Labs от 25 сентября 2026 снова ставит вопрос прямо. Есть семейство программ для Windows, которое читает сохранённые пароли, записи платёжных карт и сессии. AES-256-GCM в поле пароля показывает одно: на диске лежит не исходная строка. Прочитает ли её программа, зависит от более узкого права: ключ доступен текущему пользователю Windows или только самому браузеру.

Вывод в одном месте. AES-256-GCM отвечает, лежит ли в поле пароля на диске открытый текст. Кто вправе снять оболочку с ключа, этот алгоритм не называет. 30 июля 2024 года Google написал: DPAPI в Windows рассчитан на других пользователей системы и на атаку с холодной перезагрузкой, когда диск забирают после выключения. Программу, которая выполняется от имени уже вошедшего пользователя, эта граница не держит. С Chrome 127 привязка к приложению перенесла cookie с «этот пользователь» на «это приложение браузера». Ни одна из двух границ не читается как «ни одна программа на машине секрет не видит».

Что на самом деле спрашивает этот запрос

Запрос «пароли Chrome зашифрованы, значит вирус их не видит» почти всегда про одно. Человек нажал «Сохранить» и хочет знать, сможет ли другая программа на этом компьютере восстановить открытый текст. Имя шифра на это не отвечает. В блоге безопасности Google старая граница Windows описана прямо. Chrome защищает cookie, пароли и похожие секреты средством, которое даёт операционная система. В Windows это Data Protection API, коротко DPAPI. Защита данных в покое рассчитана на других пользователей системы и на атаку с холодной перезагрузкой: машину выключили, диск скопировали. Приложение, которое уже умеет исполнять код от имени текущего пользователя, стоит внутри этой границы. Именно этот зазор используют программы, которые собирают сохранённые секреты браузера.

Заметка для двух читателей. Первый — разработчик или админ, которому в обзоре попалась фраза «браузер и так шифрует сохранённые пароли, про пароль на диске можно больше не думать». Второй на этой неделе увидел разбор и хочет понять, что именно доказывает слово «зашифровано» на странице настроек. Здесь нет инструкции, как снять оболочку с чужого хранилища паролей, и нет замены странице генератора паролей. Унести стоит три факта, которые сверяются по отдельности: что доказывает шифротекст, что доказывает упаковка ключа и чего не доказывает отчёт от 25 сентября 2026 года.

AES-256-GCM на диске доказывает только отсутствие открытого текста

Браузеры на базе Chromium пишут сохранённые входы в локальный профиль. В более новых сборках поле пароля закрыто AES-256-GCM. Откройте этот файл в текстовом редакторе — пароль сайта открытым текстом вы не увидите. Это правда. GCM здесь делает ещё одну работу: без нужного ключа изменённый байт не проходит проверку подлинности. Шифротекст нельзя тихо подправить, как если бы это была обычная строка.

Браузер обязан подставить пароль, когда форма входа откроется в следующий раз. Ключ поэтому не может жить только в фразе, которую помните вы один. После разблокировки сеанса браузер на этой машине должен уметь ключом воспользоваться. Полезный вопрос сдвигается с «сильный ли алгоритм» на «кто вправе попросить этот ключ у системы». Стойкий шифр границу не передвигает. Если право снять оболочку принадлежит «пользователю Windows, который уже вошёл», программа, запущенная от его имени, стоит с браузером по одну сторону.

Поэтому одно и то же имя алгоритма — другое предложение, чем «локальное шифрование под фразой, которую вводите вы». Файл, зашифрованный в браузере AES-256-GCM вашей парольной фразой, другая программа и облачный диск по умолчанию не откроют: фразы у них нет. Хранилище паролей браузера сделано для автозаполнения. Право пользоваться ключом остаётся у браузера на этой машине. Увидеть AES-256-GCM в обоих местах ещё не значит, что ключ устроен одинаково.

Граница, которую Google уже описал

Та же заметка от 30 июля 2024 года разделяет системы. macOS идёт через связку ключей. Linux — через системный кошелёк, например kwallet или gnome-libsecret. Windows — через DPAPI. Фраза про «программу, запущенную от имени вошедшего пользователя» — это описание DPAPI в Windows. На каждый Mac её не переносите. Связка ключей может показать системное подтверждение. Это другая граница, чем «любой процесс этого пользователя молча снимает оболочку».

В Windows DPAPI связывает защиту с входом этого пользователя. Случаи, которые Google называет прямо: другой пользователь на той же системе и атака с холодной перезагрузкой. Это та половина фразы «оно зашифровано», которая в обзоре продукта выдерживает проверку. Вторую половину Google тоже пишет прямо: DPAPI не защищает от вредоносного приложения, которое исполняет код от имени текущего пользователя. Такая программа просит операционную систему через интерфейс того же рода, каким пользуется браузер. Шифр при этом не «сломался». Границу провели вокруг других пользователей и холодной перезагрузки, а не вокруг других процессов этого пользователя.

Когда в обзоре стоит «хранилище паролей использует AES-256-GCM, значит локальная вредоносная программа его не прочитает», предложение стоит разрезать. Первую половину поддерживает сам файл: поле пароля — не открытый текст. На поколении DPAPI вторая половина расходится с публичной заметкой Google. Доказательство, которого всё ещё не хватает, другое: перенёс ли этот браузер этот класс секретов на следующую границу. Имя алгоритма этого не доказывает.

Chrome 127 сдвигает границу от пользователя к программе

Дальше в той же заметке: Chrome 127 на Windows вводит шифрование с привязкой к приложению, app-bound encryption. Данные больше не отдаются любому приложению, которое работает от имени текущего пользователя. Chrome шифрует их с привязкой к личности приложения, а компонент на стороне системы проверяет, что вызывающий — доверенный браузер, и только потом отдаёт ключ. Порядок миграции Google пишет явно. Сначала cookie, в Chrome 127. Пароли, платёжные данные и другие долгоживущие токены входа — секреты, которые команда собиралась охватить в следующих выпусках. В день выхода 127 их не описали как уже перенесённые целиком.

К началу 2026 года публичные описания со стороны криминалистики проводят ту же черту. Заметка ElcomSoft за январь 2026 говорит: привязка к приложению началась с cookie, архитектуру заложили так, чтобы расширить её на пароли и платёжные данные, а Microsoft Edge пошёл следом, потому что у него то же ядро Chromium. На профилях, где новая упаковка уже включена, чужая программа от имени пользователя получает отказ, когда просит систему по-старому: ключ отдаётся только проверенному файлу браузера. Эта граница держит обычный процесс снаружи браузера. Код внутри процесса браузера она не закрывает. Вредоносное расширение или другой код, который уже выполняется в этом процессе, остаётся внутри. Привязка к приложению меняет, кто вправе вызвать расшифрование. Она не значит «раз поле записано как AES-256-GCM, логика автозаполнения в памяти пароль не видит».

Две фразы постоянно меняют местами, хотя отвечают на разные вопросы. Первая: «мой Chrome новее 127, значит каждый сохранённый пароль уже переехал». Здесь номер сборки принимают за квитанцию миграции. В июле 2024 года Google записал пароли как следующее расширение. Номер 130, 140 или выше показывает только, что браузер ушёл дальше точки, с которой начали cookie. Вторая: «кто-то всё ещё читает пароли старым пользовательским вызовом, значит привязка к приложению бесполезна». Наблюдение показывает, что часть профилей или часть строк всё ещё на старой границе, либо что образец описывает именно старую границу. Оно не показывает, что новую границу публично списали как неработающую.

Что вы видите Какой вывод это держит Что остаётся открытым
Поле пароля — AES-256-GCM На диске лежит не открытый текст пароля Может ли любая программа на машине его прочитать
Windows упаковывает ключ через DPAPI Другие пользователи и холодная перезагрузка снаружи заявленной защиты Стоит ли за ней программа, запущенная от имени текущего пользователя
Chrome 127, привязка к приложению, сначала cookie На уже перенесённых данных старый вызов внешней программы падает Переехали ли строки паролей на этой машине и видит ли их код внутри процесса
В менеджере паролей есть сайт Этот сайт когда-то сохраняли Какое поколение упаковки ключа у этой строки
Предложение сохранить пароль выключено Следующие входы могут не попасть в хранилище Удалены ли строки, которые уже лежат в списке

Что доказывает отчёт от 25 сентября

25 сентября 2026 года в K7 Labs опубликовали разбор программы для Windows. В следующие дни его перепечатали несколько изданий по безопасности. По описанию K7 программа читает сохранённые пароли, записи платёжных карт, историю и сессии у нескольких браузеров на Chromium, а у Firefox — историю и cookie. Предложение про AES-256-GCM поэтому не описывает каждый браузер на машине. Для входов Chromium K7 пишет: более новые поля пароля хранятся как AES-256-GCM, а ключ снимается через защиту данных Windows на уровне пользователя. Лаборатория прямо говорит, что не установила, насколько широко программу распространяли и сколько машин затронуто.

Это описание совпадает со старой границей из предыдущего раздела. Право снять оболочку сидит у текущего пользователя, поэтому программа в том же сеансе входа может стоять внутри границы, а AES-256-GCM лишь не даёт полю быть открытым текстом. Отчёт не написан как «образец прошёл проверку личности приложения в Chrome» и не даёт числа пострадавших, из которого следовало бы «ваш Chrome уже задет». Прочитать имя шифра в заголовке как «шифрование сломалось» или как «значит, моё хранилище точно в безопасности» — оба шага отчёт не делает.

Тот же класс отчётов смешивает два материала, которые легко принять за один. Украденная сессия позволяет пользоваться входом, который вы уже завершили, пока сессия жива. Смена пароля на исходном сайте закрывает следующий вход по паролю. Сама по себе она не гасит сессии, которые уже выданы. Они заканчиваются, когда вы выходите из других сессий в списке устройств аккаунта, или когда сайт их отзывает. Эта работа отдельна от того, насколько силён шифр хранилища паролей. Более ранняя сверка «смена пароля не снимает уже записанную сессию» лежит в заметке про ключ доступа ниже. Это не один переключатель.

Не снимайте оболочку со своего хранилища паролей, чтобы «проверить, правда ли новость», и не тренируйтесь на настоящем пароле банка, почты или облачной консоли. Сверка ниже смотрит только, есть ли в настройках сохранённые сайты и включено ли предложение сохранить пароль. Показ открытого текста и выгрузка всего хранилища в эту сверку не входят.

Сверьте список сохранений, а не базу

Лозунг и заголовок новости не описывают браузер перед вами. Хватит одноразового аккаунта на тестовом сайте. Четыре шага ниже остаются внутри текущего браузера. Папку профиля для них копировать не нужно.

  1. Откройте встроенный менеджер паролей: настройки, раздел паролей или автозаполнения, либо страница паролей самого браузера из адресной строки. Читайте только список сайтов. Есть ли отдельные строки у почты, банка, облачной консоли, хоста кода. Не показывайте открытый текст и ничего не экспортируйте.
  2. Найдите «Предлагать сохранять пароли» или переключатель с той же работой. Он решает, попадёт ли следующий вход в хранилище. Выключение не удаляет строки, которые уже лежат. Удаление — по строке в списке или через очистку сохранённых паролей, которую даёт сам браузер.
  3. Откройте «О браузере» и убедитесь, что официальные обновления ещё приходят. Запишите номер версии. Версия не доказывает, что поля пароля переехали на привязку к приложению. Страница настроек не печатает слова DPAPI или app-bound. Не ищите префиксы ключей в папке профиля, чтобы это закрыть.
  4. Если вы уже подозреваете, что на компьютере работает программа, которую вы не ставили: не нажимайте «показать пароль» на этой машине. На устройстве, которому ещё доверяете, выйдите из других сессий на важных сайтах и замените эти пароли. Один пароль на несколько сайтов не повторяйте. Шаг ограничивает ущерб. Это не приглашение вскрыть хранилище на подозрительной машине, «чтобы увидеть, возможно ли чтение».

Номер версии не называет поколение ключа

Chrome 127 — выпуск, с которого привязка к приложению начала закрывать cookie. Это не выпуск, в котором в тот же день сменилась упаковка каждого сохранённого пароля. Увидеть 130, 140 или более позднюю основную версию можно только как знак: браузер ушёл дальше той стартовой точки. Закончили ли поля пароля переезд, июльская заметка 2024 года оставила следующим выпускам, а интерфейс поколение упаковки не показывает. Если в таблице обзора записана версия, соседняя ячейка должна говорить «отсюда не следует, что хранилище паролей уже на привязке к приложению», а не стоять галочкой.

Предложение сохранить — это и есть выключатель новой строки

Многие пароли попадают в хранилище потому, что после успешного входа браузер спросил, а человек нажал «Сохранить», а не потому, что какая-то страница шифрования их куда-то загрузила. С этого момента строка сидит за границей, о которой речь выше. Если вы создали пароль, который существует только на этом устройстве, и отказались от предложения, он не станет строкой менеджера паролей. Отказ не доказывает, что скрипт страницы пароль никуда не отправил. Этот вопрос смотрите в панели Network. Отказ доказывает только, что вы не отдали строку списку сохранённых паролей браузера.

Четыре способа прочитать «зашифровано» слишком широко

Первое широкое чтение принимает AES-256-GCM за гарантию, что вредоносная программа поле не прочитает. Алгоритм показывает другое: поле — не открытый текст, и шифротекст без ключа не подправить так, чтобы проверка прошла. Если ключ упакован DPAPI для текущего пользователя, Google уже написал: программа, работающая от имени этого пользователя, за защитой не стоит. Имя шифра и положение границы — две разные строки. В обзоре они остаются двумя строками.

Второе чтение принимает «у меня есть пароль входа в Windows» за иммунитет хранилища к вредоносным программам. Пароль входа нужен, чтобы другая учётная запись и копирование диска после выключения не сняли оболочку DPAPI. Программа, которая уже работает после вашего входа, пользуется этой разблокированной средой пользователя. Пароль входа всё равно стоит задать. Он отвечает за другую границу.

Третье чтение принимает «версия выше 127» за то, что и пароли, и cookie уже привязаны к приложению, а код внутри процесса их тоже не видит. Стартовая точка Google — cookie. Пароли были расширением. Привязка к приложению закрывает старый вызов снаружи браузера. Расширение или другой код, который уже выполняется в процессе браузера, от этой границы слепым не становится.

Четвёртое чтение принимает «на каждом сайте свой пароль» за то, что прочитанное целиком хранилище уже не страшно. Разные пароли останавливают повтор одной утечки сайта на вашей почте и в облачной консоли. Они не останавливают программу, которая за один проход читает каждую сохранённую строку. Обе меры стоит делать. Они закрывают разные сбои.

Частые вопросы

Если менеджер паролей пишет «зашифровано», другие программы на компьютере пароль уже не прочитают?

«Зашифровано» значит, что поле пароля на диске — не открытый текст. На поколении DPAPI в Windows Google пишет: защита покрывает других пользователей и холодную перезагрузку. Программу, которая выполняется от имени текущего пользователя, она не покрывает. Привязка к приложению с Chrome 127 начинается с cookie: старый вызов внешней программы на уже перенесённых данных падает, а код внутри процесса браузера читать по-прежнему может. Слово на экране не сообщает, на каком поколении поля пароля этой машины.

Привязка к приложению в Chrome 127 значит, что вредоносная программа тоже не откроет сохранённые пароли?

Нет. Заметка от 30 июля 2024 года записывает пароли и платёжные данные как то, что собирались расширить в следующих выпусках. Привязка сужает право снять оболочку с «текущий пользователь» до «браузер, который системный компонент принимает». Поэтому внешняя программа, которая пользуется только старым пользовательским вызовом, на уже перенесённых данных получает отказ. Код внутри процесса за границей от этого не оказывается, и из заметки не следует, что каждый сохранённый пароль в вашем браузере переезд уже закончил.

Отчёт от 25 сентября значит, что пароли моего Chrome уже читает любая программа?

Такая подмена слишком широкая. Отчёт описывает программу для Windows, которая читает сохранённые пароли, карты, историю и сессии у нескольких браузеров на Chromium, плюс историю и cookie Firefox, и говорит, что поля пароля используют AES-256-GCM, а ключ снимается через защиту данных на уровне пользователя. K7 не опубликовал число пострадавших и не представил образец как прошедший проверку личности приложения. На каком поколении ваш браузер, видно по списку сохранений и по тому, приходят ли ещё обновления, а не по имени шифра в заголовке.

После смены пароля на сайте уже выданные сессии тоже перестают работать?

Не всегда. Смена пароля закрывает следующий вход этой строкой. Уже выданные сессии часто живут, пока вы не выйдете из других сессий в списке устройств аккаунта или пока сайт их не отзовёт. Программа того же класса забирает сессии и сохранённые пароли вместе. Сменить один пароль и оставить другие сессии открытыми — это работа с паролем, не с сессией.

FastPwd сам записывает сгенерированный пароль в список сохранённых паролей браузера?

Нет. Сайт не пишет этот список, и своего хранилища паролей у него нет. Строка появляется, только если вы примете предложение браузера сохранить пароль. Случайный режим использует crypto.getRandomValues, допускает 6–128 символов и по умолчанию берёт 16. Результат не загружается. Открыли — и можно пользоваться, аккаунт не нужен. Если программа на этом компьютере уже читает текущую вкладку или буфер обмена, открытый текст на странице ей виден. Граница «не ушло на сервер» этот предел не заменяет.

Один раз откажитесь от сохранения в генераторе, который открывается сразу

Если нужно увидеть разницу между «пароль появился» и «пароль попал в хранилище браузера», откройте генератор паролей FastPwd. Регистрации нет. В случайном режиме оставьте 16 символов по умолчанию и создайте одноразовую строку. Если браузер предложит её сохранить, откажитесь. Вернитесь в менеджер паролей: у тестового сайта новой строки появиться не должно. FastPwd не ведёт хранилище паролей и не пишет за вас список сохранённых паролей браузера.

Генерация идёт через crypto.getRandomValues. Длина от 6 до 128 символов, по умолчанию 16. Короче 8 помечается как более слабая защита. Результат не загружается. Откройте инструменты разработчика, вкладку Network, включите сохранение журнала и поищите полную строку в строках запросов и в телах. В рабочем запросе её быть не должно. Поиск показывает, что этот запуск не ушёл из вкладки телом HTTP. Он не показывает, что локальная программа не может прочитать страницу или буфер обмена. Если этому компьютеру уже нельзя доверять, создавайте пароль и входите с другого устройства.

Если ещё хочется увидеть, похожа ли строка на частый слабый пароль из публичного списка, возьмите другую одноразовую строку в проверку пароля. Проверяемый пароль не загружается. Промах не доказывает, что строки никогда не было в сети. Попадание значит только, что она слишком обычная. Не вставляйте настоящий пароль, который собираетесь включить, и не выгружайте хранилище браузера, чтобы прогнать выгрузку через проверку.

Если эту строку нужно один раз отдать другому человеку, не кладите её в текст заявки, который осядет в журналах сервера. Используйте Burn-Link: сервер хранит только шифротекст, ключ стоит в ссылке после #, создавать и читать можно без аккаунта. Этот канал отвечает на вопрос «как передать один раз». Он не делает безопасным старый пароль, который уже лежит в браузере. Ту строку удалите в менеджере паролей и замените пароль с устройства, которому доверяете.

Что ещё почитать

Утверждение «локально, не загружается» сверяют канарейкой в Network: Как проверить, что локальное шифрование в браузере не отправило открытый текст. Смена пароля не гасит уже выданную сессию: Позвонили и просят обновить ключ доступа. Почему это крадёт сессию, а не сам Passkey. Локальный список слабых паролей ловит частые слабые пароли и не является поиском по всей сети: Что доказывает локальный список слабых паролей и почему это не поиск по всей сети.