- •Учебно-методическое пособие
- •Распределение ключа
- •Протоколы распределения ключа Point-to-Point топологии
- •Обмен ключами с помощью симметричной криптографии
- •Обмен ключами средствами специализированных криптосистем
- •Протоколы удостоверения подлинности
- •Удостоверение подлинности средствами криптосистем, предназначенных для шифрования и вычисления онф.
- •Удостоверение подлинности с помощью онф, аутентификация по простому парольному механизму.
- •Важно!!!
- •Реализации протоколов обеспечения шифрованной средствами криптосистем, предназначенных для шифрования
- •Практические реализации протоколов обеспечения безопасности с применением симметричных шифраторов.
- •Практические реализации протоколов обеспечения безопасности с применением гибридных криптографических алгоритмов
- •Практические реализации протоколов обеспечения безопасности с применением симметричных шифраторов
Обмен ключами средствами специализированных криптосистем
Протокол Shamir’s no-key protocol
Данный протокол имеет широкое распространение в целом ряде инженерных задач и позволяет без процедуры аутентификации распределять сеансовые ключи анонимно.
Корреспонденты заранее, по безопасному каналу согласуют величину модуля и выбирают параметры a,b, такие, что 1<{a,b}<p-2 и принимают их как секретный ключ ( -секретный ключ А, - секретный ключ В). Далее вычисляются значения a-1, b-1, по mod (p-1).
А вырабатывает сеансовый ключ ki, такой, что 1< ki<p-1 и вычисляет (ki)amod p, после чего передает эту степень В.
B принимает (ki)amod p, вычисляет ((ki)a)b mod p и передает А.
А принимает сообщение ((ki)a)b mod p и вычисляет (((ki)a)b )-amod p=kib . Передает результат вычислений В.
B принимает (ki)b mod p сообщение от A и вычисляет ((ki)b)-b mod p =ki.
Оба корреспондента устанавливают себе сеансовый ключ ki.
Стойкость данного протокола к атаке грубой силой определяется выбором параметров выполнения операции возведения в степень по модулю. Также протокол не стоек к атаке “внедрением в середину“.
Протоколы удостоверения подлинности
Удостоверение подлинности средствами криптосистем, предназначенных для шифрования и вычисления онф.
На практике часто встает вопрос аутентификации корреспондента при получении доступа к некоторому информационному ресурсу. Каким образом определить наличие прав у корреспондента, а самое главное, является ли корреспондент тем, за кого хочет себя выдать и не скрывается ли под ним злоумышленник. Чаще всего эта проблема решается с помощью протоколов аутентификации на основании паролей. А передает свой уникальный пароль, и вызываемый корреспондент проверяет его правильность. Таким образом, и А, и В известна некоторая секретная информация (или некоторое ее отображение), которую В запрашивает всякий раз, когда А пытается начать обмен информацией.
Удостоверение подлинности с помощью онф, аутентификация по простому парольному механизму.
Роджер Нидхэм и Майк Гай показали, что корреспонденту В не нужно знать сами пароли, вполне достаточно, чтобы он мог отличать правильные пароли от неправильных. Этого легко достичь с помощью ОНФ. При этом у аутентификатора хранятся значения однонаправленных функций паролей, а не сами пароли.
А посылает аутентификатору (B) свой пароль. В вычисляет однонаправленную функцию пароля и сравнивает полученное значение с хранящимся в базе.
А передает пароль Pa корреспонденту В.
В получает пароль Pa и вычисляет h’a=h(Pa)
В сравнивает полученное значение h’a с ha, из библиотеки паролей. Если h’a=ha, то пользователь А получает доступ к данным.
Если В больше не хранит таблицу правильных паролей всех пользователей, снижается угроза того, что кто-то проникнет в хранилище данных и выкрадет таблицу паролей. Список паролей, обработанный однонаправленной функцией, бесполезен, так как однонаправленную функцию не удастся инвертировать для получения паролей. Следовательно, атака на протокол будет заключаться в атаке на ОНФ, и на перехвате запроса с верным паролем и отождествлением его с подтверждением успешной аутентификации.
Вскрытие с помощью словаря.
Файл значений ОНФ от паролей, тем не менее, тоже уязвим. На период предварительных вычислений, имея запас времени, М может составить список из большого количества наиболее вероятных паролей с точки зрения статистики языка. Он вычислит все множество значений однонаправленной функцией от созданных паролей и сохраняет результат. После чего М получает по своим каналам файл отображений ОНФ паролей от корреспондента и сравнивает этот файл с результатами своих вычислений, т. е. сравнивает этот файл с файлом хэш-отображений возможных паролей и ищет совпадения.
Это «вскрытие с помощью словаря» может быть успешным с точки зрения улучшения временных характеристик атаки, и снижения временной сложности атаки. Но имеется способ повышения временной сложности данной атаки называемый в литературе «подсаливание». "Соль" представляет собой некоторый объем данных, имеющий случайную структуру, добавляемую к паролям перед вычислением их однонаправленной хэш-функции. Затем в базе паролей фиксируются и значение "соли", и результат вычисления ОНФ. Добавление достаточно большого числа возможных значений "соли" практически устраняет возможность вскрытия с помощью словаря, так как М придется вычислять значение однонаправленной хэш-функции для каждого возможного значения "соли", что потребует значительных временных и вычислительных затрат и эквивалентно атаке на хэш-функцию. Этот прием - простейший пример использования вектора инициализации.
Принцип заключается в том, чтобы так М выполнить пробное шифрование каждого пароля из его словаря при каждой попытке узнать чей-то чужой пароль вместо одноразовой обработки всех возможных паролей, т.е. заставить его решать задачу из 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. Сервер находит в базе данных открытый ключ А и дешифрирует сообщение, используя этот открытый ключ. Если отправленный сначала и дешифрованный запросы совпадают, сервер предоставляет А доступ к ресурсу системы.
Приемы из криптографии с ОК могут решить эту проблему. В протоколе “Запрос-ответ” сервер хранит базу открытых ключей всех терминалов, а все терминалы хранят свои закрытые ключи. Далее иллюстрирован пример реализации протокола аутентификации корреспондента:
А передает В сообщение о необходимости аутентификации корреспондента B.
В вырабатывает случайную последовательность ri и передает ее, как запрос А.
А шифрует ri на ЗК корреспондента B eb , ci = E(eb, ri) и передает криптограмму, как ответ В.
В принимает ответ c’i , дешифрует его с использованием своего секретного ключа db, r’i = D(db, c’i), после чего сравнивает с переданным ранее ri.
Если , равенство r’i= ri верно, то аутентификация прошла успешно.
Никто другой не может воспользоваться ЗК корреспондента B, следовательно никто не сможет выдать себя за него. Наиболее важен в данной ситуации тот факт, что ЗК корреспондента не передается по каналу связи. Пассивный нарушитель, подслушивая взаимодействие корреспондентов, не получит никаких сведений, которые позволили бы ему вычислить закрытый ключ B и выдать себя за него.
Закрытый ключ должен отвечать требованиям к ключевому материалу для данной КС, согласно предъявляемой к ней вычислительной стойкости. Этот принцип снимет все требования по защищенности от внедрения противника в канал связи.
