четверг, 3 сентября 2009 г.

ISSP \ Домен 02. Управление доступом. Часть 4

В этой части рассмотрены следующие вопросы:
  • Пароли
  • Управление паролями
  • Проверка паролей
  • Хэширование и шифрование паролей
  • Устаревание паролей
  • Ограничение количества попыток регистрации
  • Когнитивные пароли
  • Одноразовые пароли
  • Токены
  • Синхронные токены
  • Асинхронные токены
  • Криптографические ключи
  • Парольные фразы
  • Карты памяти
  • Смарт-карты
  • Атаки на смарт-карты

Обновлено: 19.03.2010

Идентификатор пользователя в паре с постоянным (повторно используемым) паролем в настоящее время является самым распространенным способом идентификации и аутентификации. Пароль – это защищенная строка символов, используемая для аутентификации пользователя. Пароль является фактором «что-то знать» (аутентификация по знанию). Очень важно использовать надежные пароли и надлежащим образом управлять ими.


Хотя пароли и являются самым распространенным механизмом аутентификации, они являются в то же время и самым слабым из доступных механизмов, т.к. пользователи не заботятся о безопасности, выбирают легко угадываемые пароли, сообщают их другим, пишут их на стикерах и клеят на монитор или прячут под клавиатуру. Большинству пользователей безопасность кажется неважной и неинтересной, они начинают интересоваться ей только тогда, когда кто-то взломает их компьютер и скопирует с него конфиденциальную информацию.

Если пароли надлежащим образом генерируются, обновляются и хранятся в секрете, они могут обеспечить эффективную безопасность. Для создания паролей пользователей целесообразно использовать генераторы паролей, которые должны быть предварительно настроены на генерацию несложных для запоминания, удобопроизносимых, но не словарных паролей.

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

Для атаки на пароли атакующий может использовать несколько различных методик:
  • Электронный мониторинг. Прослушивание сети с целью перехвата трафика процесса аутентификации, для повторной отправки этого трафика серверу аутентификации в другое время (replay attack).
  • Доступ к файлу с паролями. Обычно выполняется непосредственно на сервере аутентификации. Парольный файл содержит множество паролей пользователей, его компрометация крайне опасна. Этот файл должен быть защищен с помощью механизмов управления доступом и криптографии.
  • Подбор паролей. Выполняется специальными утилитами, которые перебирают все возможные комбинации букв, цифр и символов для поиска действительного пароля (brute force attack).
  • Атака по словарю. Для этого используются специальные текстовые файлы, которые содержат тысячи слов, каждое из которых проверяется на совпадение с паролем пользователя (dictionary attack).
  • Социальная инженерия. Атакующий обманным путем заставляет пользователя сообщить ему учетные данные для доступа к определенным ресурсам.
  • Rainbow-таблицы. Атакующий может воспользоваться предварительно подготовленными таблицами, содержащими значения хэшей всех возможных паролей.
ПРИМЕЧАНИЕ. Rainbow-таблицы содержат пароли, уже преобразованные в хэш-значения. Используя их, атакующий просто сравнивает перехваченное значение хэша пароля со значениями в таблице, и, в случае совпадения, сразу же получает сам пароль открытым текстом. Это может сократить время подбора пароля до нескольких секунд!
Существуют методики, обеспечивающие еще один уровень безопасности для паролей и процесса их использования. Например, после успешной регистрации сообщать пользователю дату и время его последнего успешного входа, место, откуда был произведен вход, были ли зафиксированы неудачные попытки входа. Это позволит пользователю выявить попытки входа в систему под его именем. Также, администратор может установить количество неудачных попыток регистрации, после которого учетная запись будет заблокирована на определенное время. Кроме того, следует сократить срок «жизни» паролей, чтобы пользователи их регулярно меняли (но так, чтобы это не представляло существенных сложностей для них), использовать средства аудита для отслеживания успешных и неудачных попыток регистрации, провести обучение пользователей по вопросам парольной защиты, объяснив им, почему следует защищать пароли, каким образом пароли могут быть похищены.


Многие компании проводят проверки выбранных пользователями паролей, используя утилиты, производящие подбор паролей по словарю или полным перебором. Это позволяет выявить слабые пароли. Однако следует учитывать, что такие утилиты могут использоваться как сотрудниками безопасности и администраторами, так и злоумышленниками, создавая дополнительную уязвимость.

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


В большинстве случаев, злоумышленник, даже перехватив пароль, должен приложить немалые усилия, чтобы узнать сам пароль, так как большинство систем хэшируют пароли (например, с использованием алгоритмов MD4, MD5), а не пересылают их открытым текстом. В Windows-системах пароли хранятся в виде хэш-значений в базе данных SAM (Security Account Management). Для дополнительной защиты администраторы могут использовать утилиту Syskey, которая может работать в трех режимах:
  • Режим 1. Системный ключ генерируется, шифруется и хранится локально. Компьютер можно перезапускать и он будет нормально работать без вмешательства пользователя.
  • Режим 2. Системный ключ генерируется, шифруется и хранится локально, но защищен паролем. Администратор должен вводить пароль разблокировки Syskey при каждом запуске компьютера, так как пароль локально не хранится.
  • Режим 3. Системный ключ генерируется, шифруется и хранится на дискете или компакт-диске, без наличия которого запуск компьютера невозможен.
Unix-системы не используют реестр и базы данных SAM, в них пароли хранятся в файле, называющемся shadow в виде хэш-значений. Кроме того, Unix-системы добавляют в процесс шифрования случайные значения (salts), усложняющие процесс взлома.


Многие системы позволяют администратору установить срок действия паролей, что заставит пользователей регулярно менять их. Система может также хранить список последних 5 или 10 паролей (историю паролей), чтобы не позволить пользователям повторно использовать старые пароли.


Может быть установлено пороговое значение количества неудачных попыток регистрации, при превышении которого учетная запись будет заблокирована на заранее определенное время (или до момента разблокировки администратором вручную). Это поможет противостоять атаке, использующей перебор различных вариантов учетных данных до нахождения работающей комбинации (имя пользователя и пароль).


Когнитивные пароли (cognitive passwords) – это пароли на основе фактов или мнений, используемые для аутентификации человека. В процессе регистрации пользователь отвечает на несколько личных вопросов (например, девичья фамилия матери, любимый цвет, имя собаки, год окончания школы). Затем, при аутентификации, пользователю задаются те же вопросы, запомнить ответы на которые гораздо проще, чем запомнить сложный пароль. Такой процесс аутентификации лучше всего применять в сервисах, которые пользователь использует не очень часто, например, для восстановления обычного пароля.


Одноразовые пароли (OTP - one-time password) называют также динамическими паролями. Они используются для аутентификации лишь один раз. После использования пароль становится недействительным и даже в случае его перехвата злоумышленником, он не может быть использован. Такие способы аутентификации применяются в среде, в которой необходим более высокий уровень безопасности, чем тот, который предоставляют обычные пароли. Одноразовые пароли генерируются токенами, которые бывают двух типов: синхронные и асинхронные.


Токен (или генератор паролей) обычно представляет собой миниатюрное устройство, имеющее жидкокристаллический дисплей и, возможно, клавиатуру. Токен аппаратно отделен от компьютера, к которому пользователь пытается получить доступ. Токен и служба аутентификации должны быть синхронизированы определенным образом, чтобы иметь возможность аутентифицировать пользователя. Токен предоставляет пользователю последовательность символов, которая должна быть введена в качестве пароля для входа в компьютер. Только токен и служба аутентификации знают, что означают эти символы. Так как токен и сервер аутентификации синхронизированы, токен может отображать именно тот пароль, который ожидает сервер аутентификации. После однократного использования такой пароль становится недействительным.


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

Если синхронизация основана на счетчике, пользователь должен начать процесс регистрации на компьютере и процесс создания одноразового пароля (нажав кнопку на токене). Это заставляет службу аутентификации и токен сформировать следующее аутентификационное значение. Это значение и секрет хэшируются и показываются пользователю, который вводит отображаемое на токене значение и свой идентификатор в компьютер.

В обоих вариантах используется общий (для токена и службы аутентификации) секретный ключ, используемый как для зашифрования, так и для расшифрования.


Асинхронный токен использует схему запрос/ответ для аутентификации пользователя. В этом случае сервер аутентификации посылает пользователю запрос и случайное значение (называемое nonce). Пользователь вводит это значение в токен, который шифрует его и возвращает пользователю результат, который и является одноразовым паролем. Затем пользователь отправляет полученное значение и свой идентификатор серверу аутентификации. Если сервер аутентификации может расшифровывать это значение, и оно совпадает с первоначальным значением (nonce), аутентификация считается успешной.

ПРИМЕЧАНИЕ. Одноразовый пароль может также генерироваться программным обеспечением, в таком случае аппаратная часть (например, токен) не требуется. Это называется программным токеном и требует, чтобы служба аутентификации и приложение имели один и тот же базовый секрет, который используется для генерации одноразового пароля.
Оба типа токенов подвержены маскарадингу, что может быть вызвано совместным использованием идентификатора пользователя и токена, либо потерей токена пользователем (для снижения этого риска, токен может требовать ввод PIN-кода перед генерацией одноразового пароля, что является примером двухфакторной аутентификации). Кроме того, на токене может быть повреждена батарея или может произойти другая неисправность, не позволяющая пользователю пройти аутентификацию. Однако токены не уязвимы для перехвата информации, сниффинга или угадывания пароля.

Ссылки по теме:



Другим способом идентификации пользователя является использование закрытого ключа для генерации электронной цифровой подписи (ЭЦП, digital signature). Пароль является наислабейшим способом аутентификации, так как он может быть перехвачен при передаче через сеть. ЭЦП в качестве способа аутентификации может применяться в средах, где требуется более высокий уровень безопасности, чем тот, который обеспечивают пароли. Секретным ключом должен владеть только один человек. ЭЦП – это технология, которая использует закрытый ключ для зашифрования значения хэша (дайджеста сообщения). Действие по зашифрованию значения хэша на секретном ключе называется подписанием сообщения ЭЦП. ЭЦП присоединяется к сообщению, чтобы подтвердить, что сообщение исходит от определенного источника и что оно не было изменено в процессе передачи. Открытый ключ может быть общедоступным и он не может быть скомпрометирован, как закрытый ключ. Подробнее о закрытых и открытых ключах, ЭЦП и инфраструктуре открытых ключей (PKI) мы будем говорить в домене «Криптография», однако на данный момент вам нужно понимать, что закрытый ключ и ЭЦП являются механизмами, которые можно использовать для аутентификации пользователя.


Парольная фраза (passphrase) – это длинная последовательность символов, которая, в некоторых случаях, заменяет пароль при аутентификации. Пользователь вводит парольную фразу в приложение, а оно преобразует ее в виртуальный пароль необходимой приложению длины и формата. Например, пользователь хочет аутентифицироваться в приложении и вводит парольную фразу, скажем, «СоюзНерушимыйРеспубликСвободных». Приложение преобразует эту фразу в реальный пароль, который в действительности используется для аутентификации. Чаще всего парольную фразу пользователь генерирует так же, как и обычный пароль при первом входе в компьютер. Парольная фраза лучше защищена, чем пароль, так как она длиннее и ее сложнее получить атакующему. К тому же пользователю проще запомнить парольную фразу, чем пароль.


Основным отличием карт памяти от смарт-карт являются их возможности по обработке информации. Карта памяти (memory card) может хранить информацию, но не может ее обрабатывать. Смарт-карта (smart card) помимо хранения информации имеет необходимое аппаратное и программное обеспечение для обработки информации. Карта памяти может хранить информацию для аутентификации пользователя таким образом, что для успешной аутентификации пользователю достаточно только ввести свой идентификатор или PIN-код и предоставить карту памяти. Если введенные пользователем реквизиты совпадут с данными на карте памяти, пользователь будет успешно аутентифицирован. Если пользователь вводит PIN-код, это является примером двухфакторной аутентификации («что-то знать» – PIN-код и «что-то иметь» – саму карту). Карта памяти может также хранить идентификационные данные, которые извлекаются из нее считывателем и передаются вместе с PIN-кодом серверу аутентификации.

Примером карты памяти является магнитная карта, которая используется для входа в здание. Человек вводит PIN-код и «прокатывает» карту по считывателю. Если информация верна, на считывателе загорается зеленая лампочка и человек может открыть дверь и войти в здание. Другим примером является банковская карта с магнитной полосой.

Карта памяти может использоваться с компьютерами, однако она требует применения специального считывателя для обработки информации. Это увеличивает стоимость данного решения (в особенности, если считыватель требуется на каждый компьютер компании), также стоимость увеличивает процесс изготовления («прошивки») карт памяти. Использование карты памяти обеспечивает более защищенный метод аутентификации, чем использование паролей, так как злоумышленнику необходимо получить и саму карту, и знать корректный PIN-код. Администраторы и руководство компании должны оценить стоимость и преимущества организации аутентификации с помощью карт памяти, чтобы выбрать наиболее оптимальный для компании механизм аутентификации.


Смарт-карта имеет возможности обработки хранящейся в ней информации, так как она обладает микропроцессором и интегральными схемами, встроенными в саму карту. Смарт-карта может обеспечить двухфакторную аутентификацию, требуя от пользователя ввести PIN-код («что-то знать»), чтобы разблокировать смарт-карту («что-то иметь»). Существует два основных типа смарт-карт: контактные и бесконтактные. Контактная смарт-карта имеет золотые контактные площадки на лицевой стороне. Когда такая карта полностью вставлена в считыватель, эти контактные площадки соприкасаются с соответствующими электрическими контактами в считывателе, которые предназначены для электрического питания компонентов смарт-карты и передачи необходимой для аутентификации информации. Бесконтактная смарт-карта имеет антенну, которая проложена по периметру карты. Когда карта попадает в электромагнитное поле считывателя, антенна в карте вырабатывает достаточно энергии для электрического питания внутренних компонентов карты. Результаты обработки смарт-картой аутентификационных данных могут транслироваться посредством той же антенны. Аутентификация может выполняться с использованием одноразового пароля, применения метода запрос/ответ или с помощью закрытого ключа при использовании в среде PKI.

ПРИМЕЧАНИЕ. Существует два типа бесконтактных смарт-карт: гибридные и комбинированные. Гибридная карта имеет два чипа, что позволяет ей работать в двух форматах – контактном и бесконтактном. Комбинированная карта имеет один чип, который может работать с контактным или бесконтактным считывателем.
Информацию из смарт-карты до ввода правильного PIN-кода считать невозможно, так как она хранится в зашифрованном виде. Этот факт, а также сложность самой смарт-карты не позволяет провести «обратный инжиниринг» и вмешаться в работу карты. Кроме того, смарт-карта может быть запрограммирована на выявление любых попыток вмешательства в свою работу. При выявлении таких попыток, хранящаяся в ней информация может автоматически уничтожаться.

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

Смарт-карты имеют много различных возможностей. Они могут хранить персональную информацию способами, устойчивыми к взлому. Они позволяют изолировать критичные с точки зрения безопасности расчеты. Они могут применяться в качестве портативных и безопасных устройств для хранения ключей криптографических систем. Наличие в них памяти и интегральных схем, позволяет организовать работу алгоритмов шифрования непосредственно в самой карте и использовать это для безопасной аутентификации, используемой в масштабах всей компании.


Смарт-карты более устойчивы к взлому, чем карты памяти, однако с годами и для них были найдены успешные способы атак. Например, существует возможность нарушить правильную работу карты с целью вскрытия ключей шифрования, путем изменения параметров внешней среды (напряжения питания, температуры, тактовой частоты). Атакующий может увидеть при этом как корректный результат работы функции шифрования, так и ошибочный, а анализ разницы между ними позволяет провести «обратный инжиниринг» процесса шифрования и попытаться вскрыть ключ шифрования. Такой тип атаки называется генерацией ошибок.

Атаки с использованием побочных каналов не вмешиваются в работу карты, они используются для получения критичной информации о работе компонентов карты. При этом атакующий смотрит, как работает карта, как она реагирует в различных ситуациях. Примером атаки с использованием побочных каналов может являться дифференциальный анализ мощности карты (оценка излучаемой энергии, связанной с работой карты), электромагнитный анализ (оценка частот излучения), анализ времени выполнения отдельных процессов в карте. Такие атаки часто применяются для сбора данных. Атакующий ведет мониторинг и перехватывает аналоговые характеристики всех источников питания, соединительных интерфейсов, а также иные электромагнитные излучения, вырабатываемые процессором карты в процессе выполнения обычных операций. Также атакующий может собрать информацию о времени, которое требуется карте для выполнения различных своих функций. На основании собранных данных атакующий может сделать много выводов и в отдельных случаях получить закрытый ключ, критичную информацию или ключ шифрования, сохраненный на карте.

В настоящее время, недостатки совместимости смарт-карт являются большой проблемой. Хотя производители заявляют, что их продукты «полностью совместимы с ISO/IEC 14443», часто они разрабатываются на основе собственных технологий и методов производителя.
Совместимость. Стандарт ISO/IEC 14443 описывает следующие элементы стандартизации смарт-карт:
• ISO/IEC 14443-1 Физические характеристики
• ISO/IEC 14443-3 Инициализация и предотвращение коллизий
• ISO/IEC 14443-4 Протокол передачи
Атаки на программное обеспечение также не вмешиваются в работу карты. Смарт-карты, как и другие устройства, имеют программное обеспечение, позволяющее им обрабатывать данные. Однако любое программное обеспечение может содержать недостатки и уязвимости, которые можно использовать. И программное обеспечение смарт-карт – не исключение. Основной целью атаки на программное обеспечение смарт-карты является ввод в карту специально сформированных команд, позволяющих атакующему извлечь информацию об учетной записи, достаточную для проведения мошеннических операций. Многие из этих видов атак могут производиться с помощью устройств, замаскированных под обычные легитимные устройства (например, считыватели), используемые для работы со смарт-картами.

Можно также попытаться провести микроисследование карты, удалив с помощью ультразвуковой вибрации защитный материал с электронных компонентов карты. Сделав это, можно получить прямой доступ к информации, хранящейся в постоянной памяти (ROM) карты.

Ссылки по теме:


1 комментарий:

eagle комментирует...

- Securosis: Understanding and Selecting a Tokenization Solution. http://securosis.com/reports/Securosis_Understanding_Tokenization_V.1_.0_.pdf