2. Угрозы исследования содержимого базы данных аутентификации.

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

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

Существует две типовые схемы хранения ключевой информации в базах данных аутентификации, позволяющие решить эти задачи [20].

Схема 1. В компьютерной системе выделяется объект-эталон для идентификации и аутентификации. Структура объекта-эталона может быть представлена в виде таблицы 6.1.

Табл. 6.1. Первая типовая схема хранения ключевой информации

Номер пользователя

Информация для идентификации

Информация для аутентификации

1

ID1

E1

2

ID2

E2

N

IDN

EN

Ei=F(IDii), где F – некоторая функция хэширования. При этом, зная Ei и IDi вычислительно невозможно восстановить Ki.

Таким образом, в базе данных аутентификации вместо эталонных паролей Ki хранится результат их одностороннего преобразования. В качестве односторонней функции для хэша NTLM в Windows NT используется алгоритм хэширования MD4.

Алгоритм идентификации и аутентификации для схемы 1

1. Пользователь предъявляет свой идентификатор ID.

2. Если ID не совпадает ни с одним IDi, зарегистрированным в компьютерной системе, то идентификация отвергается - пользователь не допущен к работе, иначе (существует IDi = ID) устанавливается факт «пользователь, назвавшийся пользователем i, прошел идентификацию».

3. Субъект аутентификации запрашивает у пользователя аутентификатор К и вычисляет значение Y=F(IDi, K).

4. Субъект аутентификации проходит сравнение Еi и Y. При совпадении фиксируется событие «пользователь успешно аутентифицирован в системе», в противном случае аутентификация отвергается и пользователь не допускается к работе.

Впервые данная методика была предложена Роджером Ниджемом и Майком Гаем (проект «Титан», 1967 год, Кембридж).

Вторая типовая схема хранения ключевой информации несколько модифицирует схему 1.

Схема 2. В компьютерной системе выделяется объект-эталон, структура которого показана в таблице 6.2.

Табл. 6.2. Вторая типовая схема хранения ключевой информации

Номер пользователя

Информация для идентификации

Информация для аутентификации

1

ID1, S1

E1

2

ID2, S2

E2

N

IDN, SN

EN

В данной таблице Еi=F(Si, К), где Si - случайный вектор, формируемый при создании пользователя с номером i; F – необратимая функция, для которой невозможно восстановить К по Ei и Si.

Алгоритм идентификации и аутентификации для схемы 2

1. Пользователь предъявляет свой идентификатор ID.

2. Если ID не совпадает ни с одним IDi, зарегистрированным в компьютерной системе, то идентификация отвергается - пользователь не допущен к работе, иначе (существует IDi=ID) устанавливается факт «пользователь, назвавшийся пользователем i, прошел идентификацию».

3. По идентификатору IDi из базы данных аутентификации выделяется информация Si.

4. Субъект аутентификации запрашивает у пользователя аутентифицирующую информацию К. и вычисляет значение Y=F(Si, K).

5. Субъект аутентификации сравнивает Ei и Y. При совпадении фиксируется событие «пользователь успешно аутентифицирован в КС», в противном случае аутентификация отвергается и пользователь не допускается к работе.

Достоинством второй схемы является то, даже в случае выбора пользователями одинаковых паролей, информация Ei для них будет различаться. В рамках первой же схемы значение Ei=F(IDi,Ki), как правило, вычисляют в виде Ei=F(Ki), что не позволяет достичь такого результата. Вторая схема хранения ключевой информации используется для защиты базы данных аутентификации в ОС UNIX.

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

Покажем, к чему может привести использование криптографически нестойких алгоритмов хэширования в качестве функции F.

Пример 6.1.

Для защиты книг Microsoft Excel используется подход к защите пароля, аналогичный схеме 1. В документе Excel хранится хэш-образ пароля, с которым производится сравнение хэша пароля, вводимого пользователем при снятии данной защиты. Длина хэша составляет 16 бит. Для взлома данной защиты достаточно просто записать на место хранения хэш-образа эталонного пароля заранее вычисленный хэш-образ известного пароля, либо хэш-образ, соответствующий беспарольному варианту. Так и поступают многочисленные взломщики защит документов Word и Excel.

6.2.  Защита баз данных аутентификации в ОС Windows NT и UNIX

База данных аутентификации в ОС, построенных на технологии NT, имеет название SAM (Security Accounts Manager) и располагается в каталоге Winnt\System32\Config\.

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

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

Рассмотрим реализованный Microsoft способ защиты баз данных аутентификации SAM он несанкционированного изучения.

В базе данных аутентификации SAM для каждой учетной записи пользователя хранится два вида хэшей пароля – хэш LANMAN, используемый для аутентификации сетевых служб и совместимости с ранее разработанными ОС Windows 9x, и хэш NTLM, используемый при локальной аутентификации пользователя.

Алгоритм хэширования LANMAN

Рис. 6.1.Схема алгоритма хэширования LANMAN

Шаг 1. Пользовательский пароль преобразуется путем замены всех малых символов, входящих в него, большими.

Шаг 2. Результат преобразуется в 14-символьную цепочку. Если пароль длиннее 14 символов, то лишние символы урезаются; если короче, то недостающие позиции заполняются нулями.

Шаг 3. Полученная цепочка из 14 символов делится на два блока по 7 символов, каждый из которых в дальнейшем обрабатывается независимо.

Шаг 4. Каждый из сформированных блоков используется в качестве ключа шифрования алгоритма DES. На выходе формируются два блока по 8 байт.

Шаг 5. Конкатенация двух 8-байтных блока является хэшем LANMAN (16 байт).

В алгоритме LANMAN используется свойство стойкости к атакам по открытому тексту алгоритма DES для формирования закрытых паролей. Даже зная 8-байтную последовательность, которая шифруется по данному алгоритму, восстановление ключа шифрования возможно только полным перебором.

Алгоритм хэширования NTLM

В алгоритме NTLM символы не преобразуются к верхнему регистру и могут быть любыми. Разбивка на два блока здесь также не используется. В качестве алгоритма хэширования использован алгоритм MD4.

 

Рис. 6.2. Схема алгоритма хэширования NTLM

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

6.3.  Иерархия ключевой информации

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

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

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

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

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

Значение мастер-ключа фиксируется на длительное время (до нескольких недель или месяцев). Сеансовые ключи меняются намного чаще, например, при построении криптозащищенных туннелей их можно менять каждые 10-15 минут, либо по результатам шифрования заданного объема трафика (например, 1 Мб).

6.4.  Распределение ключей

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

Задача распределения ключей сводится к построению протокола распределения ключей, обеспечивающего:

1) взаимное подтверждение подлинности участников сеанса;

2) подтверждение достоверности сеанса для защиты от атак методом

повторов;

3) использование минимального числа сообщений при обмене ключами.

Вообще говоря, выделяют два подхода к распределению ключевой информации в компьютерной сети:

1. Распределение ключевой информации с использованием одного либо нескольких центров распределения ключей.

2. Прямой обмен сеансовыми ключами между пользователями.

Распределение ключевой информации с использованием центров распределения ключей

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

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

Данный подход реализован в протоколе Нидхема-Шредера и базирующемся на нем протоколе аутентификации Kerberos. Распределение ключевой информацией и разграничение доступа основывается в данных протоколах на выдаче мандатов центром распределения ключей. Использование данных протоколов позволяет безопасно распределить сеансовые ключи даже в случае взаимного недоверия двух взаимодействующих сторон.

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

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

Для решения проблемы выработки общего секрета без раскрытия его злоумышленником существует два основных способа:

1) использование криптосистемы с открытым ключом для шифрования;

2) использование протокола открытого распространения ключей Диффи-Хеллмана.

Реализация первого способа не должна вызывать вопросов. Рассмотрим более подробно реализацию второго способа.

Протокол Диффи-Хеллмана

Протокол Диффи-Хеллмана был первым алгоритмов работы с открытыми ключами (1976 г.). Безопасность данного протокола основана на трудности вычисления дискретных логарифмов [2].

Пусть пользователи A и B хотят выработать общий секрет. Для этого они выполняют следующие шаги.

Стороны A и B договариваются об используемом модуле N, а также о примитивном элементе g, , степени которого образуют числа от 1 до N-1.

1. Числа N и g являются открытыми элементами протокола.

2. Пользователи A и B независимо друг от друга выбирают собственные секретные ключи СКA и CKB (случайные большие целые числа, меньшие N, хранящиеся в секрете).

3. Пользователи A и B вычисляют открытые ключи ОКА и OKB на основании соответствующих секретных ключей по следующим формулам:

4. Стороны A и B обмениваются между собой значениями открытых ключей по незащищенному каналу.

5. Пользователи A и B формируют общий секрет K по формулам:

Пользователь A:

Пользователь B:

Ключ K может использоваться в качестве общего секретного ключа (мастер-ключа) в симметричной криптосистеме.

Пример 6.2.

Возьмем модуль N=47 и примитивный элемент g=23. Пусть пользователи A и B выбрали свои секретные ключи СКА=12, СКВ=33. Тогда,

В данном случае общий секрет .

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

Протокол Диффи-Хеллмана нашел эффективное применение в протоколе SKIP управления ключами. Данный протокол используется при построении криптозащищенных туннелей в семействе продуктов ЗАСТАВА.

6.5.  Протоколы безопасной удаленной аутентификации пользователей

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

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

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

Рассмотрим ряд протоколов удаленной аутентификации пользователей.

Протокол CHAP (Challenge Handshaking Authentication Protocol)

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

КЛИЕНТ

 

СЕРВЕР

 
ЗАПРОС, N

 

Обработка запроса

ОТВЕТ, MD5(К,N)

Рис. 6.3. Схема протокола CHAP

1. При необходимости прохождения аутентификации сервер посылает сообщение «ЗАПРОС» клиенту, в которое включает случайный, уникальный и непредсказуемый номер N.

2. Клиент обрабатывает запрос сервера и формирует ответную последовательность, хэшируя пароль и случайный номер N с помощью алгоритма MD5, то есть вычисляет значение MD5(K,N).

3. Клиент отправляет серверу для аутентификации пакет «ОТВЕТ», в которую включает вычисленное значение MD5(K,N).

4. Сервер, зная эталонный пароль клиента и посланное ему значение N, также вычисляет значение MD5(K,N) и сравнивает его с присланным клиентом. По результатам сравнения сервер принимает решение о прохождении либо не прохождении этапа аутентификации клиентом.

Использование в протоколе случайного числа N практически исключает возможность пересылки от клиента к серверу одинаковых последовательностей в течение длительного времени. Злоумышленник же, зная число N, не сможет восстановить ответ клиента, так как не знает секретного ключа K. В силу высокой криптостойкости функции хэширования MD5, злоумышленник, зная число N и значение MD5(K,N), не сможет восстановить ключ K.

Протокол одноразовых ключей S/KEY

Протокол одноразовых ключей S/KEY основан на независимом формировании клиентом и сервером последовательности одноразовых паролей, основанной на общем секрете K. При этом знание злоумышленником очередного пароля, пересылаемого на фазе аутентификации, не дает ему возможности выяснить следующий пароль [21].

Пусть K – пароль аутентификации, известный как подлинному клиенту, так и серверу. Клиент и сервер на основании ключа K могут вычислить последовательность из M одноразовых ключей S1,...,SM следующим образом:

,

,

...

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

Недостатком описанной выше схемы является то, что после исчерпания всех одноразовых паролей (после M последовательных аутентификаций) необходимо менять общий секрет K, так как если пароли начнут передаваться заново, начиная с , то злоумышленник, слушая канал связи, будет уже знать всю предысторию передаваемых паролей, и сможет пройти аутентификацию. Для устранения данного недостатка используют подход, основанный на передаче случайного числа N от клиента к серверу в момент формирования списка одноразовых паролей, и использование данного числа как второго аргумента функции хэширования MD4. Схема аутентификации клиента с помощью протокола S/KEY будет выглядеть в данном случае следующим образом.

1. Сервер высылает клиенту число M одноразовых паролей и случайное число N, используемое для генерирования уникального и непредсказуемого списка.

2. Клиент и сервер генерируют последовательность из M одноразовых паролей следующим образом:

,

,

...

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

4. В следующий раз сервер требует на этапе аутентификации пароль ... пока не дойдет до .

5. Если список одноразовых паролей исчерпан (переслали ), то клиентом и сервером выполняется повторная инициализация списка одноразовых паролей (при другом N).

Реализация метода «запрос-ответ» в OC Windows при сетевой аутентификации

Метод «запрос-ответ» используется в OC Windows при удаленной аутентификации пользователя, подключающегося к сетевым ресурсам общего пользования, с более старых ОС. При этом используется аутентификация с помощью хэша LANMAN [22]. Схема данного метода представлена на рис. 6.4.

КЛИЕНТ

 

СЕРВЕР

 
(1)

(2)

(3)

 

(4)

Рис. 6.4. Реализация метода «запрос-ответ» в OC Windows

Шаг 1. Клиент запрашивает разрешение у сервера на подключение к сетевому ресурсу общего пользования.

Шаг 2. Сервер отвечает случайным восьмибайтовым числом.

Шаг 3. У клиента открывается окно для ввода идентификатора и пароля.

Шаг 4. Клиент формирует 24-байтный ответ серверу на основе следующего алгоритма:

Алгоритм формирования ответа

1. Пароль, введенный пользователем, хэшируется на стороне клиента с помощью алгоритма хэширования LANMAN. В результате этого формируется 16-байтовая свертка пароля.

2. Полученный 16-байтовый хэш разбивается на 3 блока по 56 бит. Последний блок до 56 бит дополняется нулями.

 

Рис. 6.5. Разбивка хэша LANMAN на три блока

3.Пришедший от сервера 8-байтовый ответ шифруется 3 раза с помощью трех ключей шифрования (представляющих собой три полученных на шаге 2 блока хэша LANMAN) по алгоритму DES. В результате этого формируется 24-байтный ответ, отправляемый серверу (рис. 6.6).

 

ключ ключ ключ

 

ОТВЕТ СЕРВЕРУ

Рис. 6.6. Алгоритм формирования ответа серверу

Шаг 5. Сервер, получив ответ от клиента, может проверить его корректность, а по результатам проверки подтвердить либо отклонить аутентификацию.

Кроме рассмотренных выше протоколов безопасной удаленной аутентификации пользователей, широкое распространение получил также протокол аутентификации Kerberos.

7. Защита от разрушающих программных воздействий

7.1. Понятие разрушающего программного воздействия

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

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

Под опосредованным НСД понимают несанкционированный доступ злоумышленника к информации, произведенный посредством предварительно внедренной в систему программы (или нескольких программ).

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

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

1) скрывать признаки своего присутствия в программной среде компьютерной системы;

2) реализовывать самодублирование или ассоциирование себя с другими программами и/или выполнять перенос своих фрагментов в иные области оперативной или внешней памяти.

При этом под самодублированием понимается процесс воспроизведения программой своего собственного кода в оперативной или внешней памяти компьютерной системы.

3) разрушать код иных программ в оперативной памяти компьютерной системы;

4) переносить фрагменты информации из оперативной памяти в некоторые области оперативной или внешней памяти прямого доступа;

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16