Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Протоколы удостоверения подлинности




Удостоверение подлинности средствами криптосистем, предназначенных для шифрования и вычисления ОНФ.

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

Удостоверение подлинности с помощью ОНФ, аутентификация по простому парольному механизму.

Роджер Нидхэм и Майк Гай показали, что корреспонденту В не нужно знать сами пароли, вполне достаточно, чтобы он мог отличать правильные пароли от неправильных. Этого легко достичь с помощью ОНФ. При этом у аутентификатора хранятся значения однонаправленных функций паролей, а не сами пароли.

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

1) А передает пароль P a корреспонденту В.

2) В получает пароль P a и вычисляет h’ a = h (P a)

3) В сравнивает полученное значение h’ a с h a, из библиотеки паролей. Если h’ a = h a, то пользователь А получает доступ к данным.

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

 

 

Вскрытие с помощью словаря.

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

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

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

Для этого нужно небольшое количество бит "соли". Большинство UNIX-систем аутентификации используют для "соли" 12 бит, а для большинства Windows-систем этот прием вообще не используется. Согласно обзору Брюса Шнайера в книге «Practical Cryptology», Дэниел Кляйн написал программу разгадывания паролей, которая в некоторых системах за неделю часто вскрывала 40 процентов паролей [D.V. Klein, “Large Period Nearly de Bruijn FCSR Sequences”, D. V. Klein, personal communication ].

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

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

 

 

SKEY

SKEY - это протокол удостоверения подлинности, обеспечивающий безопасность с помощью ОНФ. Принцип его работы описан ниже:

Регистрируясь в системе, А задает случайное число, R. Сервер вычисляет следующие значения ОНФ { f (R), f (f (R)), f (f (f (R)))…} и так далее, N (рекомендуется брать N>100) раз, сохранив эти значения в список xk как { x1, x2, x3, …, xn }. Сервер передает список этих значений А, и А хранит его в безопасном месте. Сервер также публикует открытым текстом в базе данных соединений в соответствие с корреспондентом А число xi. Что означает ожидания запроса аргумента xi -1 ОНФ для вычисления значения хэш-функции.

Выполняя первое подключение, А передает свое имя и xi -1. Сервер рассчитывает f (xi -1) и сравнивает его с xi, если значения совпадают, права А на доступ подтверждаются. Затем сервер заменяет в базе данных xi на xi -1. А удаляет xi из своего списка.

А, при каждом подключении к серверу, передает последнее число из своего списка: xk. Сервер рассчитывает f (xi) и сравнивает его с f (xi +1), хранившемся в базе данных. Так как на каждой итерации соединения выполняется аутентификация (возможно и неоднократно), то для данного протокола возможно проводить до N-1 проверок легитимности доступа корреспондента (терминала) к ресурсу сервера. По исчерпании списков значений хэш-функций требуется замена общего секрета. Также, при приближении числа проверок терминала к N-1, существенно возрастает вероятность угадывания пароля для противника, знающего переданные ранее { f (R), f (f (R)), f (f (f (R)))…}, и проводившего мониторинг обмена данными между корреспондентом и сервером.

 

 

Аутентификация с помощью криптографии с открытыми ключами

 

Даже с применением “подсаливания” у механизма аутентификации на основании пароля, несмотря на возможность применения надежных хэш-функций с высокой стойкостью, имеются серьезные проблемы со стойкостью самого протокола. В момент, передачи терминалом А своего пароля серверу, любой, у кого есть доступ к каналу передачи данных, может прочесть пароль. Терминал может получить доступ к своему серверу посредством запутанного пути передачи информации, проложив его через недоброжелательное окружение и дав возможность всем желающим получить свой пароль. Пассивный противник может находиться на любом объекте ТСПИ, подслушивая передаваемую А последовательность. Если у противника есть доступ к ОЗУ сервера, то он сможет подсмотреть пароль до того, как сервер сможет вычислить его ОНФ и подменить исходящий адрес пакета на свой.

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

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

 

Приемы из криптографии с ОК могут решить эту проблему. В протоколе “Запрос-ответ” сервер хранит базу открытых ключей всех терминалов, а все терминалы хранят свои закрытые ключи. Далее иллюстрирован пример реализации протокола аутентификации корреспондента:

1) А передает В сообщение о необходимости аутентификации корреспондента B.

2) В вырабатывает случайную последовательность ri и передает ее, как запрос А.

3) А шифрует ri на ЗК корреспондента B eb, ci = E (eb, ri) и передает криптограмму, как ответ В.

4) В принимает ответ c’i , дешифрует его с использованием своего секретного ключа db, r’i = D (db, c’i), после чего сравнивает с переданным ранее ri.

5) Если, равенство r’i = ri верно, то аутентификация прошла успешно.

 

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

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

 

Важно!!!

Однако необходимо понимать, что нельзя шифровать произвольные строки, как показано в литературе имеется ряд атак, использующих мультипликативное свойство КС, основанные на шифровании “случайных последовательностей”, приводящий к компрометации ключа.

Стойкие к подобным атакам протоколы “запрос-ответ” имеют следующую, более сложную форму:

1) Корреспондент A выполняет вычисление, основанное на некоторых случайных числах и своем закрытом ключе, и посылает результат серверу.

2) В посылает другое случайное число.

3) А выполняет некоторое вычисление, основанное на случайных числах (как созданном им, так и полученном от B) и своем закрытом ключе, и посылает результат B.

4) B выполняет некоторое вычисление для чисел, полученных от A, и его открытого ключа, проверяя, что A известен закрытый ключ.

5) Если проверка завершается успешно, подлинность A подтверждается.

 

Если А доверяет В не в большей степени, чем тот доверяет А, то он должен потребовать подтверждения подлинность B аналогичным образом.

Этап (1) может показаться ненужным и запутанным, но он необходим для защиты ЗК корреспондентов.

Двусторонняя аутентификация с использованием протокола «рукопожатия»

 

Пусть два корреспондента, А и В, хотят проверить подлинность друг друга. У каждого из них есть секретная информация, известная другому пользователю: ka у А и kb у B. Следующим образом реализован протокол, который не стоек к атаке “внедрение в середину”:

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

 

Предварительные вычисления:

1) А шифрует ka на ключе B eb, ca = E (ka, eb).

2) В шифрует на ключе kb на ключе B ea, cb = E (kb, ea).

3) Корреспондент A выполняет вычисление, основанное на некоторых случайных числах и своем закрытом ключе, и посылает результат серверу.

 

Активная часть протокола:

1) А передает ca .

2) В передает cb

3) В дешифрует ca на секретном ключе db криптограмму ca, ka = D (ka, db).

4) A дешифрует cb на секретном ключе da криптограмму cb, kb = D (kb, da).

5) Корреспонденты имеют обе компоненты ka и kb

 

Атака “внедрение в середину” выполняется по следующей схеме:

Злоумышленник М “врезается” в канал связи.

1) А и В обмениваются открытыми ключами. М перехватывает оба сообщения, и посылает обоим корреспондентам свои собственные открытые ключи, подменив им их ключи.

2) А шифрует ka, открытым ключом корреспондента В, подменным атакующим, и посылает В. М перехватывает сообщение, дешифрует ka с помощью своего закрытого ключа, снова шифрует ka открытым ключом, ассоциируемым с В и посылает его В.

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

4) А дешифрует kb и подтверждает его верность.

5) В дешифрует ka и подтверждает его верность.

 

Со стороны обмена между корреспондентами А и В ничего не изменилось, атака М для них является прозрачной. Входе работы данного протокола М получает kb, ka. Также возможна атака, “внедрением в середину”, с разрывом соединения после получения секрета A, дальнейшей его блокировкой и аутентификацией М, как A на секрете ka. После чего выполняется соединение с A при успешной проверке секретной последовательности kb.

 





Поделиться с друзьями:


Дата добавления: 2017-02-25; Мы поможем в написании ваших работ!; просмотров: 378 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2382 - | 2133 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.