Аутентификация субъекта
Криптографические методы, в частности, шифрование, хорошо обеспечивают защиту информации от внешнего нарушителя. Такой нарушитель может перехватывать сообщения, передающиеся по каналу связи, а в некоторых случаях модифицировать их и даже вставлять в сеанс связи собственные сообщения (зачастую стараясь выдать их за сообщения другого источника). Однако информацию в канале защищают криптографическими преобразованиями и протоколами, разработанными для того, чтобы помешать нарушителю реализовать угрозы безопасности. Для того чтобы нарушить безопасность информации, циркулирующей в системе, ему необходимо найти уязвимость в системе защиты, либо в использованных в ней криптографических алгоритмах. Аналогичные трудности встают перед нарушителем, получившим доступ к защищенной АИС в качестве пользователя, не обладающего привилегиями, необходимыми для доступа к интересующим его данным.
Однако ситуация меняется, если нарушитель входит в систему от имени пользователя, уполномоченного выполнять операции с интересующими его данными (например, копирование конфиденциальных файлов, уничтожение критически важных данных и т.д.). В этом случае вся дальнейшая криптографическая защита оказывается бесполезной. Таким образом, самое уязвимое место автоматизированной информационной системы – точки доступа к ней. Эти точки доступа защищаются протоколами аутентификации (проверки подлинности пользователя).
В протоколах аутентификации, рассмотренных в предыдущей лекции, каждая сторона была программой, которая доказывала другой владение секретом (ключом). Ключ при этом брался из генератора, хранился в файле или в устройстве и предъявлялся по требованию.
Если одной из сторон становится человек, все меняется. Человек не запомнит 256-битный ключ, не вычислит в уме ответ на вызов, не сгенерирует случайное число. Он выберет короткий секрет, запишет его на бумажке, будет использовать один и тот же в двадцати местах и отдаст его тому, кто вежливо попросит. Задача, казалось, безупречно решенная, возвращается в новом виде: доказать подлинность должен участник, который не умеет хранить секреты.
9.1. Идентификация, аутентификация, авторизация
То, что в обиходе называют «входом в систему», представляет собой три последовательно выполняющиеся процедуры, каждая из которых решает свою задачу.
Идентификация – предъявление идентификатора. Субъект сообщает, кем он себя объявляет, а система находит соответствующую запись. Идентификатор (имя пользователя, адрес электронной почты, номер счета, номер телефона) не является секретом: он может быть известен кому угодно, печататься на визитке и передаваться открыто. Системы, в которых знание идентификатора само по себе что-то дает, спроектированы с ошибкой.
Аутентификация – проверка того, что субъект действительно тот, кем назвался. Здесь и требуется секрет либо иное свидетельство, недоступное посторонним.
Авторизация – определение того, что данному субъекту позволено делать. Она следует за аутентификацией. Система считает, что знает, с кем имеет дело, и решает, какие действия разрешить. Ошибка в авторизации (когда права выданы шире необходимого) не менее опасна чем ошибка в аутентификации.
Свидетельства, которыми субъект подтверждает подлинность, принято делить на три вида, называемые факторами.
- Знание. Нечто, известное субъекту: пароль, ПИН-код, кодовое слово, ответ на контрольный вопрос.
- Владение. Нечто, имеющееся у субъекта: смарт-карта, аппаратный токен, телефон, физический ключ.
- Неотъемлемая характеристика. Нечто, чем субъект является: отпечаток пальца, рисунок радужной оболочки, геометрия лица, голос, характер набора текста.
Каждый фактор в этой классификации определяет способ, которым можно отнять у субъекта свидетельство его подлинности. Пароль и ответ на контрольный вопрос относятся к одному фактору, потому что оба извлекаются одинаково: подбором, подглядыванием, обманом или чтением переписки. Добавление второго вопроса не усиливает защиту, а добавляет пользователю работы. Именно поэтому средства из разных факторов, взятые вместе, дают выигрыш, а два средства из одного не дают почти ничего.
Человек, который сильно проигрывает программе в возможностях аутентификации через знания, имеет явное преимущество в двух других факторах.
Третий фактор заслуживает особого рассмотрения. Прежде чем принимать проектное решение о его использовании, необходимо понимать его свойства.
- Биометрический признак нельзя сменить. Скомпрометированный пароль заменяется за минуту, украденный токен отзывается и перевыпускается. Отпечаток пальца остается при владельце пожизненно, и, если однажды снят слепок, положение непоправимо. Отсюда следует, что биометрию не стоит применять там, где ее компрометация приводит к неустранимым последствиям.
- Обработка биометрических данных имеет особую правовую защиту. Системы, работающие с биометрией, попадают под специальное правовое регулирование и должны удовлетворять множеству дополнительных требований как к техническим средствам, так и к процедурам получения согласия и т.д. Это существенно удорожает систему защиты.
- Сравнение всегда вероятностное. Два снимка одного пальца никогда не совпадают побитово: меняется положение, давление, влажность, освещение. Система вычисляет меру сходства и сравнивает ее с порогом, а значит, неизбежны ошибки двух родов. Ложный допуск (чужой принят за своего) и ложный отказ (свой не опознан) настраиваются друг против друга: повышая порог, мы уменьшаем первое и увеличиваем второе. Выбор порога – это решение о соотношении риска и удобства, принимаемое на основе модели угроз. Проходная склада и хранилище оружейной комнаты требуют разных значений.
- Биометрический признак не является секретом. Передавать такой признак по сети как доказательство подлинности бессмысленно: перехвативший его получает возможность предъявлять его сколько угодно, а сменить признак жертва не может. Поэтому биометрия применяется иначе: шаблон хранится в самом устройстве, сравнение выполняется внутри него, а наружу выдается только результат. Успешное сравнение обычно разблокирует неизвлекаемый ключ, хранящийся в том же устройстве, и дальше протокол работает с ключом.
К этому добавляется отдельная задача проверки того, что признак предъявлен живым человеком, а не фотографией, записью или силиконовым слепком. Задача решается с переменным успехом и составляет самостоятельное направление разработки.
Таким образом, биометрия удобно заменяет ввод секрета, но не заменяет сам секрет. Она отвечает на вопрос, находится ли перед устройством его владелец, и работает как местная проверка присутствия, поверх которой уже строится все остальное.
9.2. Пароль
Пароль – секретная последовательность символов, предназначенная для ручного ввода – остается самым распространенным средством аутентификации. Именно ручной ввод отличает пароль от криптографического ключа: ключ выбирается случайно и обрабатывается программой, пароль выбирает и вводит человек.
Как и в случае ключа, верхняя оценка стойкости пароля определяется устойчивостью к перебору, то есть, числом вариантов, которые придется перебрать. Если пароль длиной n символов составлен из алфавита в m символов, число комбинаций равно mⁿ. Русская и латинская раскладки, цифры и знаки препинания дают около 160 доступных символов, так что 8-символьный пароль дает порядка 160⁸ ≈ 4·10¹⁷ вариантов (около 59 бит), а 12-символьный – уже 160¹² ≈ 3·10²⁶ (около 88 бит). Эти числа кажутся близкими к числу вариантов ключей, но на самом деле перебор пароля осуществить значительно проще, т.к. биты в нем не равновероятны (ведь он составлен из символов, да и сами способы придумывания пароля зависят от человеческой психологии). С другой стороны, противник часто ограничен в возможностях перебора, если его можно осуществить только посредством взаимодействия с системой.
- Онлайн-перебор ведется через тот же интерфейс, которым пользуется законный владелец: противник вводит вариант и ждет ответа системы. Сервер вправе отвечать медленно, увеличивать задержку после каждой неудачи, требовать подтверждения, что запрос отправлен человеком, или блокировать учетную запись. При разумных настройках противник проверит не более сотен вариантов в сутки. PIN-код банковской карты имеет длину всего четыре цифры, но блокируется после трех неверных попыток. Устойчивость здесь определяется вероятностью угадать пароль при данных условиях.
- Офлайн-перебор становится возможен, когда противник, например, добыл базу хэшей паролей или располагает файлом, зашифрованным с помощью пароля. Тогда он проверяет варианты у себя, и ограничен только своим оборудованием. Специализированная установка на графических процессорах перебирает миллиарды вариантов в секунду, если хэш вычисляется быстро. Именно против этого пароли солят и прогоняют через намеренно медленную функцию хэширования. Здесь решает длина пароля: 8-символьный пароль перебирается за реальное время, 12-символьный сегодня неосуществим. Проектировщик обязан понимать, от какого именно перебора он защищается, поскольку меры защиты в этих случаях должны различаться.
Из формулы mⁿ видно, что расширение алфавита позволяет существенно усложнить работу противнику. Отсюда и родились знакомые всем правила: обязательные прописные буквы, цифры, знаки препинания, запрет на словарные слова, принудительная смена каждые три месяца.
Расчет верен для пароля, выбранного случайно. Но пароль выбирает человек, который часто ведет себя предсказуемо. Прописную ставит первой буквой, цифру и восклицательный знак – в конце, при принудительной смене прибавляет к прежнему паролю следующий порядковый номер. Формально требования выполнены, фактически число вариантов, которые противник проверит в первую очередь, ничтожно: перебираются не все комбинации подряд, а сначала осмысленные слова с типовыми украшениями. В итоге требования сложности вместо того, чтобы расширить пространство выбора, сужают его.
Принудительная смена вредна по той же причине. Она порождает предсказуемые последовательности, а еще подталкивает записывать пароли, тогда как выигрыш от нее невелик (противник, добывший пароль, чаще пользуется им в ближайшие часы, а не через два месяца).
Поэтому современные рекомендации (руководство NIST по цифровой аутентификации SP 800-63B) построены иначе:
- Длина вместо состава. Минимальная длина увеличена, требования к обязательному присутствию символов разных категорий сняты. Длинная фраза из обычных слов запоминается лучше и дает больше вариантов, чем восьмисимвольный набор с прописной буквой и восклицательным знаком.
- Проверка по спискам вместо смены по расписанию. Новый пароль сверяется со списками паролей, встречавшихся в известных утечках, и с очевидными вариантами вроде названия самого сервиса. Смена по расписанию отменяется, смена по факту компрометации остается обязательной.
- Уникальность вместо сложности. Одно и то же значение не должно использоваться в разных системах. Это требование сегодня важнее всех остальных.
- Отказ от контрольных вопросов. Ответы на них угадываются, находятся в социальных сетях либо запоминаются хуже пароля. Как показано выше, они и не образуют отдельного фактора.
Хотя арифметика подбора не изменилась, поменялось представление о том, откуда исходит угроза. Подбор вслепую перестал быть главным способом добыть пароль, и требования перестроились под способы, которые действительно работают.
9.3. Атаки на пароль
Полный перебор требует от противника вычислительных ресурсов и удачи, поэтому в первую очередь применяются более дешевые способы добыть пароль.
Утечка базы и подстановка учетных данных
Крупные утечки происходят регулярно, и их содержимое (адреса, имена пользователей, хэши либо сами пароли) собирается в общедоступные подборки, насчитывающие миллиарды записей. Противнику незачем что-либо подбирать: он берет готовую пару из утечки одного сервиса и пробует ее в остальных. Способ называется подстановкой учетных данных и работает потому, что люди используют один пароль везде.
Атака не требует ни знаний о жертве, ни вычислений, ни уязвимости в атакуемой системе. Сервис при этом может быть защищен безупречно: скомпрометирован был чужой, а расплачивается он. Ограничение числа попыток помогает слабо, поскольку противник проверяет по одной паре на учетную запись и подозрительной активности не создает.
Поэтому требование уникальности пароля является важнейшим. Только оно превращает утечку в чужом сервисе из общей беды в местную неприятность.
Словарная атака
Осмысленные слова и их сочетания перебираются в первую очередь, поскольку пароль, выбранный человеком, почти всегда осмыслен. Словари объединяются с базами утечек, которые они содержат именно то, что люди действительно выбирают, вместе с типовыми украшениями (замена «о» на ноль, восклицательный знак в конце, год рождения).
Персональный словарь
Если противник интересуется конкретным человеком, он составляет словарь из сведений о нем: имена родственников и домашних животных, даты рождения, номера автомобилей, названия любимых команд, клички, увлечения. Раньше такие сведения приходилось собирать, сегодня значительная их часть выложена самой жертвой в социальных сетях. Проверка нескольких тысяч вариантов из персонального словаря нередко успешнее миллиардов вариантов сплошного перебора.
Тот же прием применяется к вопросам для восстановления доступа. Девичья фамилия матери, кличка первой собаки и город рождения устанавливаются по открытым источникам, и учетная запись, защищенная хорошим паролем, отдается через процедуру восстановления.
Перехват при вводе и хранении
Пароль уязвим и без перебора. Программа, перехватывающая нажатия клавиш, получает пароль в момент ввода. Ее устанавливают на общедоступную машину, в интернет-кафе или в аудитории вычислительного класса, а также на компьютер жертвы вместе с вредоносным вложением. Пароль, набранный на чужом или недоверенном устройстве, следует считать скомпрометированным.
В помещениях с камерами наблюдения, в общественных местах (например, в транспорте) работает тупо подсматривание пароля или PIN-кода при вводе.
Записанный пароль могут поискать там, где его удобнее держать: на листке под клавиатурой, в незашифрованном файле, в переписке с коллегой, в поле «примечание» в записной книжке. Запрещать запись бессмысленно, если система требует помнить полтора десятка сложных паролей и менять их ежеквартально.
Правило, которое невозможно соблюсти, порождает обходной путь, а не соблюдение
Разумное решение состоит в том, чтобы дать удобное средство хранения, а не в том, чтобы требовать невозможного. Менеджер паролей (рис. 9.1) хранит их в зашифрованном виде и сам подставляет в форму входа, так что пользователю остается запомнить один мастер-пароль. Конечно, в этом случае хранилище становится единой точкой отказа.

Рис. 9.1. Локальный менеджер паролей KeePass
Обман
Самый дешевый способ получить пароль состоит в том, чтобы попросить его.
При фишинге жертве присылают письмо или сообщение, ведущее на поддельную страницу входа, неотличимую от настоящей. Введенный пароль попадает к противнику, а жертву обычно перенаправляют на настоящий сайт, где она входит со второй попытки и ничего не замечает. Никакая длина пароля здесь не помогает: он передан добровольно и целиком.
Социальная инженерия не требует никакого инструментария. Звонок от «службы безопасности банка», сообщение от «системного администратора», просьба коллеги, у которого «горит отчет», работают на доверии, спешке и страхе. Безоговорочное правило: пароль не сообщается никому и ни при каких обстоятельствах, включая обращения от имени администраторов и служб поддержки.
Чтобы правило работало, система не должна создавать ситуаций, в которых пользователю приходится сообщать пароль сотруднику. Сотрудник технической поддержки должен иметь возможность выполнить свою работу, не зная пароля клиента. В противном случае пользователь не может отличить законный запрос от мошеннического.
9.4. Многофакторная аутентификация
Даже если скрупулезно соблюдать все требования, эффективных способов атаки на пароль слишком много. Поэтому для построения надежной системы аутентификации полагаться только на него нельзя, необходимо потребовать при входе свидетельство из другого фактора. Надежность зависит от независимости способов компрометации факторов.
И доказательство владения, и доказательство неотъемлемой характеристики (биометрия) работают в полную силу только в аналоговом мире, когда пропуск или паспорт предъявляется человеку, а тот сверяет фотографию с оригиналом. При электронном взаимодействии предъявить проверяющей стороне сам предмет невозможно, владение подтверждается обменом сообщениями, и различать средства следует по устройству этого обмена. Возможностей здесь ровно две.
1. Предъявление значения. Владелец предмета получает или вычисляет некоторое значение и передает его проверяющей стороне. Доказательством служит то, что получить это значение мог только он.
- Код в сообщении. Система присылает на телефон одноразовый код. Самый распространенный способ, который не требует от пользователя ничего, кроме телефона. Независимость способов компрометации минимальна. Канал доставки контролируется оператором связи, и номер уводится подменой сим-карты по поддельным документам либо через сговор с сотрудником. Сам канал не защищен, сообщение видно на заблокированном экране, а служебные протоколы сотовых сетей допускают перехват. Наконец, если оба фактора сходятся на одном устройстве (приложение банка и сообщение с кодом в одном телефоне), кража телефона снимает оба сразу.
- Одноразовый код по времени. Приложение и сервер хранят общий секрет и вычисляют из него вместе с текущим временем шестизначный код, действующий полминуты. Обмена по сети нет, поэтому оператор связи из схемы исчезает, а перехват сообщения становится невозможен. Остается зависимость от общего секрета: он хранится на сервере, так что утечка серверной базы компрометирует и второй фактор. Свежесть обеспечивается отметкой времени, как в Kerberos, и по той же причине требуется согласованный ход часов.
- Подтверждение в приложении. Вместо ввода кода пользователь нажимает «подтвердить» в приложении, получившем запрос. Однако противник, располагающий паролем, может отправлять запросы один за другим, пока измученный пользователь не нажмет «подтвердить», чтобы прекратить поток уведомлений. Прием называется утомлением подтверждениями. Ответом стало требование ввести в приложении число, показанное на экране входа, это исключает случайное нажатие.
Все три способа добавляют влияние второго фактора. Украденный пароль не дает входа в систему, а предъявляемое значение одноразово и живет минуту (поэтому перебор, подглядывание и другие способы атаки на пароль становятся неэффективными). Однако значение, предназначенное для проверяющей стороны, можно передать и тому, кто за нее себя выдает. Одна из самых распространенных сегодня схем сетевого мошенничества состоит в том, что жертва вводит на поддельной странице имя и пароль, противник немедленно вводит их на настоящем сайте, тот присылает жертве код, поддельная страница просит ввести код, противник вводит его на настоящем сайте и получает доступ. Все происходит за секунды, автоматически, и от жертвы требуется только сделать то, что она делает каждый день. Независимость каналов доставки от этой атаки не спасает, поскольку оба фактора добываются через одну точку – самого пользователя.
2. Подтверждение без передачи. Устройство выполняет криптографическую операцию неизвлекаемым ключом и отправляет результат. Пользователь не получает при этом дополнительного знания, которое можно было бы выманить. Так устроены протоколы строгой аутентификации. Сюда же попадает биометрия при электронном взаимодействии: сравнение выполняется внутри устройства, а успешный исход разблокирует хранящийся там ключ.
Схема воспроизводит протокол «вызов – ответ». Пользователь располагает парой ключей, порожденной внутри устройства; открытый ключ передан сервису при регистрации, закрытый устройства не покидает. Сервис присылает случайное число, устройство подписывает его и возвращает подпись.

Рис. 9.2. Аутентификация по стандарту WebAuthn.
Поддельная страница способна принять вызов от настоящего сервиса, передать его устройству, получить подпись и предъявить по назначению. Решение состоит в том, чтобы включить в подписываемые данные адрес сервиса, с которым установлено соединение, тогда подпись, изготовленная на поддельном сайте, содержит его адрес и настоящему сервису не подходит. Именно так работает веб-стандарт WebAuthn, предназначенный для безопасного входа на сайты и в приложения с использованием ключей доступа (passkeys). Адрес в нее подставляет браузер, знающий, куда установлено соединение, внимательность пользователя в схеме не участвует (он может выполнять указания на поддельном сайте, но выданная устройством подпись тому сайту не пригодится). Пара ключей при этом своя для каждого сервиса, поэтому утечка на стороне сервиса не затрагивает остальные учетные записи, а сама подпись выполняется по нажатию кнопки, вводу ПИН-кода или биометрической проверке, что добавляет к владению второй фактор.
Любое решение по безопасности имеет свою цену. Ключ в данном случае существует в одном экземпляре, и утрата устройства означает утрату доступа. Синхронизация ключей между устройствами может помочь, но переносит доверие на облачное хранилище и платформу синхронизации. Схема требует поддержки со стороны сервиса, браузера и устройства, а пока хоть одно звено ее не поддерживает, остается запасной способ входа (и никакой аппаратный ключ доступа не усиливает защиту, если система позволяет в случае затруднения войти в учетную запись по паролю с кодом из сообщения).
