Асимметричные криптосистемы
Как бы ни были сложны и надежны криптографические системы - их слабое мест при практической реализации - проблема распределения ключей. Для того, чтобы был возможен обмен конфиденциальной информацией между двумя субъектами ИС, ключ должен быть сгенерирован одним из них, а затем каким-то образом опять же в конфиденциальном порядке передан другому. Т.е. в общем случае для передачи ключа опять же требуется использование какой-то криптосистемы. Для решения этой проблемы на основе результатов, полученных классической и современной алгеброй, были предложены асимметричные криптосистемы (системы с открытым ключом). Суть их состоит в том, что каждым адресатом ИС генерируются два ключа, связанные между собой по определенному правилу. Один ключ объявляется открытым (общим), а другой закрытым (частным, секретным). Открытый ключ публикуется и доступен любому, кто желает послать сообщение адресату. Секретный ключ сохраняется в тайне. Исходный текст шифруется открытым ключом адресата и передается ему. Зашифрованный текст в принципе не может быть расшифрован тем же открытым ключом. Дешифрование сообщение возможно только с использованием закрытого ключа, который известен только самому адресату. Таким образом, асимметричное шифрование часто называют шифрованием с помощью общего ключа, при котором используются разные, но взаимно дополняющие друг друга ключи и алгоритмы шифрования и расшифровки. Этот механизм полагается на два взаимосвязанных ключа: общий ключ и частный ключ. Если Алиса и Боб хотят установить связь с использованием шифрования через общий ключ, обоим нужно получить два ключа: общий и частный (рис. 18). Для шифрования и расшифровки данных Алиса и Боб будут пользоваться разными ключами.
Рисунок 18. Асимметричное шифрование с помощью общего ключа Асимметричные системы для преобразования ключей (что нужно для необратимости процесса шифрования даже для отправителя сообщения) используют так называемые необратимые или односторонние функции (безопасные хэш-функции), которые обладают следующим свойством: при заданном значении x относительно просто вычислить значение f(x), однако если y = f(x), то нет простого пути для вычисления значения x. Другими словами, безопасной хэш-функцией называется функция, которую легко рассчитать, но обратное восстановление которой требует непропорционально больших усилий. Входящее сообщение пропускается через математическую функцию (хэш-функцию), и в результате на выходе мы получаем некую последовательность битов. Эта последовательность называется «хэш» (или «результат обработки сообщения», см. рис. 19). Этот процесс практически невозможно восстановить. Другими словами, имея выходные данные, невозможно получить входные. Хэш-функцию можно сравнить с кофемолкой. Если сообщение – это кофейные зерна, а хэш на выходе – это размолотый кофе, то, имея такой размолотый кофе, вы не сможете восстановить кофейные зерна.
Рисунок 19. Хэш-функция Хэш-функция принимает сообщение любой длины и выдает на выходе хэш фиксированной длины. Наиболее известные из хэш-функций (поддерживаемые современными операционными системами): алгоритм Message Digest 2 (MD2); алгоритм Message Digest 4 (MD4); алгоритм Message Digest 5 (MD5); алгоритм безопасного хэша (Secure Hash Algorithm – SHA). Три алгоритма серии MD разработаны Ривестом в 1989-м, 90-м и 91-м году соответственно. Все они преобразуют текст произвольной длины в 128-битную сигнатуру (кодовую комбинацию). Алгоритм MD2 предполагает:
- дополнение текста до длины, кратной 128 битам; - вычисление 16-битной контрольной суммы (старшие разряды отбрасываются); - добавление контрольной суммы к тексту; - повторное вычисление контрольной суммы. Алгоритм MD4 предусматривает: - дополнение текста до длины, равной 448 бит по модулю 512; - добавляется длина текста в 64-битном представлении; - 512-битные блоки подвергаются процедуре Damgard-Merkle (в отличие от хэш-функции - этот класс преобразований предполагает вычисление для аргументов фиксированной длины также фиксированных по длине значений), причем каждый блок участвует в трех разных циклах. В алгоритме MD4 довольно быстро были найдены «дыры», поэтому он был заменен алгоритмом MD5, в котором каждый блок участвует не в трех, а в четырех различных циклах. Алгоритм SHA (Secure Hash Algorithm) разработан NIST (National In s titute of Standa r d and Technolo g y) и повторяет идеи серии MD. В SHA используются тексты более 264 бит, которые закрываются сигнатурой длиной 160 бит. Множество классов необратимых функций и порождает все разнообразие систем с открытым ключом. Однако не всякая необратимая функция годится для использования в реальных ИС. В самом определении необратимости присутствует неопределенность. Под необратимостью понимается не теоретическая необратимость, а практическая невозможность вычислить обратное значение используя современные вычислительные средства за обозримый интервал времени. Поэтому чтобы гарантировать надежную защиту информации, к асимметричным системам с открытым ключом (СОК) предъявляются два важных и очевидных требования: - Преобразование исходного текста должно быть необратимым и исключать его восстановление на основе открытого ключа. - Определение закрытого ключа на основе открытого также должно быть невозможным на современном технологическом уровне. При этом желательна точная нижняя оценка сложности (количества операций) раскрытия шифра. Вообще же все предлагаемые сегодня криптосистемы с открытым ключом опираются на один из следующих типов необратимых преобразований: - Разложение больших чисел на простые множители. - Вычисление логарифма в конечном поле. - Вычисление корней алгебраических уравнений. Здесь же следует отметить, что алгоритмы криптосистемы с открытым ключом (СОК) можно использовать в трех назначениях.
1. Как самостоятельные средства защиты передаваемых и хранимых данных, в целях обеспечения конфиденциальности данных. 2. Как средства для распределения ключей, обеспечивающее получение общих ключей для совместного использования. Алгоритмы СОК более трудоемки, чем традиционные криптосистемы. Поэтому часто на практике рационально с помощью СОК распределять ключи, объем которых как информации незначителен. А потом с помощью обычных алгоритмов осуществлять обмен большими информационными потоками. 3. Средства аутентификации пользователей. Чтобы лучше понять, как достигается конфиденциальность данных и проводится аутентификация отправителя, пройдем по всему процессу шаг за шагом. Сначала и Алиса, и Боб должны создать свои пары общих/частных ключей. После создания таких пар Алиса и Боб должны обменяться своими общими ключами. На рис. 20 показано, как шифрование с помощью общих ключей обеспечивает конфиденциальность информации. Если Алиса хочет отправить Бобу конфиденциальные данные (другими словами, если она хочет, чтобы никто, кроме Боба, не смог их прочесть), она шифрует данные с помощью общего ключа Боба и отправляет Бобу данные, зашифрованные этим способом. Получив сообщение от Алисы, Боб расшифровывает его с помощью своего частного ключа. Так как никто, кроме Боба, не имеет этого частного ключа, данные, отправленные Алисой, может расшифровать только Боб. Таким образом поддерживается конфиденциальность данных. Рисунок 20. Конфиденциальность данных, зашифрованных с помощью открытого ключа На рис. 21 показано, как шифрование с помощью общего ключа помогает проводить аутентификацию отправителя. Боб хочет быть уверен, что сообщение отправлено именно Алисой, а не человеком, который выдает себя за нее. Поскольку общий ключ не является секретным, доступ к нему может получить кто угодно. Но если Алиса зашифрует сообщение своим частным ключом, Боб должен расшифровать его с помощью общего ключа Алисы. Аутентификация происходит потому, что доступ к частному ключу Алисы имеет только она одна, и поэтому данные могли быть зашифрованы только ею.
Рисунок 21. Аутентификация отправителя с помощью шифрования общим ключом Важным аспектом асимметричного шифрования является то, что частный ключ должен храниться в тайне. Если частный ключ будет раскрыт, то человек, знающий этот ключ, сможет выступать от вашего имени, получать ваши сообщения и отправлять сообщения так, будто это делаете вы. Механизмы генерирования пар общих/частных ключей являются достаточно сложными, но в результате получаются пары очень больших случайных чисел, одно из которых становится общим ключом, а другое – частным. Генерирование таких чисел требует больших процессорных мощностей, поскольку эти числа, а также их произведения должны отвечать строгим математическим критериям. Однако этот процесс генерирования абсолютно необходим для обеспечения уникальности каждой пары общих/частных ключей. Алгоритмы шифрования с помощью общих ключей редко используются для поддержки конфиденциальности данных из-за ограничений производительности. Вместо этого их часто используют в приложениях, где аутентификация проводится с помощью цифровой подписи и управления ключами. Среди наиболее известных алгоритмов общих ключей можно назвать RSA (разработанн в 1977 году и получил название в честь его создателей: Рона Ривеста[1], Ади Шамира и Леонарда Эйдельмана) и ElGamal. Алгоритм RSA стал мировым стандартом де-факто для открытых систем и рекомендован МККТТ. Разработчики алгоритма воспользовались тем фактом, что нахождение больших простых чисел в вычислительном отношении осуществляется легко, но разложение на множители произведения двух таких чисел практически невыполнимо. Доказано (теорема Рабина), что раскрытие шифра RSA эквивалентно такому разложению. Поэтому для любой длины ключа можно дать нижнюю оценку числа операций для раскрытия шифра, а с учетом производительности современных компьютеров оценить и необходимое на это время. Возможность гарантированно оценить защищенность алгоритма RSA стала одной из причин популярности этой СОК на фоне десятков других схем. Поэтому алгоритм RSA используется в банковских компьютерных сетях, особенно для работы с удаленными клиентами (обслуживание кредитных карточек).
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|