КРИПТОГРАФИЧЕСКИЕ СИСТЕМЫ С ОТКРЫТЫМ КЛЮЧОМ

Основа метода криптографической системы с открытым ключом и основные свойства системы. Распределение ключей в системе с множеством пользователей. Оценка стойкости парольной защиты. Защита паролем и методы реализации защиты.

Асимметричные алгоритмы шифрования

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

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

Известно несколько криптосистем с открытым ключом, например схема Т. Эль-Гамаля (T. El Gamal), в которой используется идея криптосистемы, предложенная У. Диффи (W. Diffie) и М. Э. Хеллманом (M. E. Hellman), криптосистема RSA и др. Наиболее разработана на сегодня система RSA, предложенная еще в 1978 г. Алгоритм RSA назван по первым буквам фамилий его авторов: Р. Л. Райвеста (R. L. Rivest), А. Шамира (A. Shamir) и Л. Адлемана (L. Adleman). RSA - это система коллективного пользования, в которой каждый из пользователей имеет свои ключи шифрования и расшифровывания данных, причем секретен только ключ расшифровывания.

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

Асимметричные криптосистемы считаются перспективными, так как в них не используется передача ключей другим пользователям и они легко реализуются как аппаратным, так и программным способами. Однако системы типа RSA работают значительно медленнее, чем классические, и требуют длины ключа порядка 300 - 600 бит. Поэтому все их достоинства могут быть сведены на нет низкой скоростью их работы. Кроме того, для ряда функций уже найдены алгоритмы инвертирования, т.е. доказано, что они не являются необратимыми. Для функций, используемых в системе RSA, такие алгоритмы не найдены, но нет и строгого доказательства необратимости используемых функций.

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

Порядок использования систем с симметричными ключами: безопасно создается, распространяется и сохраняется симметричный секретный ключ. Отправитель создает электронную подпись с помощью расчета хэш-функции для текста и присоединения полученной строки к тексту. Отправитель использует быстрый симметричный алгоритм шифрования-расшифровки вместе с секретным симметричным ключом к полученному пакету (тексту вместе с присоединенной электронной подписью) для получения зашифрованного текста. Неявно таким образом производится аутентификация, так как только отправитель знает симметричный секретный ключ и может зашифровать этот пакет. Только получатель знает симметричный секретный ключ и может расшифровать этот пакет. Отправитель передает зашифрованный текст. Симметричный секретный ключ никогда не передается по незащищенным каналам связи. Получатель использует тот же самый симметричный алгоритм шифрования-расшифровки вместе с тем же самым симметричным ключом (который уже есть у получателя) к зашифрованному тексту для восстановления исходного текста и электронной подписи. Его успешное восстановление аутентифицирует кого-то, кто знает секретный ключ. Получатель отделяет электронную подпись от текста. Получатель создает другую электронную подпись с помощью расчета хэш-функции для полученного текста. Получатель сравнивает две этих электронных подписи для проверки целостности сообщения (отсутствия его искажения) Доступными сегодня средствами, в которых используется симметричная методология, являются: Kerberos, который был разработан для аутентификации доступа к ресурсам в сети, а не для верификации данных. Он использует центральную базу данных, в которой хранятся копии секретных ключей всех пользователей. Сети банкоматов (ATM Banking Networks). Эти системы являются оригинальными разработками владеющих ими банков и не продаются. В них также используются симметричные методологии.

Асимметричная (открытая) методология. В этой методологии ключи для шифрования и расшифровки разные, хотя и создаются вместе. Один ключ делается известным всем, а другой держится в тайне. Хотя можно шифровать и расшифровывать обоими ключами, данные, зашифрованные одним ключом, могут быть расшифрованы только другим ключом.

Все асимметричные криптосистемы являются объектом атак путем прямого перебора ключей, и поэтому в них должны использоваться гораздо более длинные ключи, чем те, которые используются в симметричных криптосистемах, для обеспечения эквивалентного уровня защиты. Это сразу же сказывается на вычислительных ресурсах, требуемых для шифрования, хотя алгоритмы шифрования на эллиптических кривых могут смягчить эту проблему. Брюс Шнейер в книге "Прикладная криптография: протоколы, алгоритмы и исходный текст на C" приводит следующие данные об эквивалентных длинах ключей.

Длина симметричного ключа Длина открытого ключа

56 бит 384 бит

64 бита 512 бит

80 бит 768 бит

112 бит 1792 бита

128 бит 2304 бита.

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

В асимметричных криптосистемах важно, чтобы сеансовые и асимметричные ключи были сопоставимы в отношении уровня безопасности, который они обеспечивают. Если используется короткий сеансовый ключ ( например, 40-битовый DES), то не имеет значения, насколько велики асимметричные ключи. Хакеры будут атаковать не их, а сеансовые ключи. Асимметричные открытые ключи уязвимы к атакам прямым перебором отчасти из-за того, что их тяжело заменить. Если атакующий узнает секретный асимметричный ключ, то будет скомпрометирован не только текущее, но и все последующие взаимодействия между отправителем и получателем.

Порядок использования систем с асимметричными ключами: Безопасно создаются и распространяются асимметричные открытые и секретные ключи (см. раздел 2.2 ниже). Секретный асимметричный ключ передается его владельцу. Открытый асимметричный ключ хранится в базе данных X.500 и администрируется центром выдачи сертификатов (по-английски - Certification Authority или CA). Подразумевается, что пользователи должны верить, что в такой системе производится безопасное создание, распределение и администрирование ключами. Более того, если создатель ключей и лицо или система, администрирующие их, не одно и то же, то конечный пользователь должен верить, что создатель ключей на самом деле уничтожил их копию.

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

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

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

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

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

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

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

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

  • Пароль можно подсмотреть.

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

  • Пароль можно угадать.

Многие пользователи в качестве пароля используют легко угадываемые слова или последовательности букв: "aaa", "asdf" (четыре левые буквы в среднем ряду клавиатуры), имена родных, знакомых или животных..

  • Пароль можно подобрать.

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

  • К данным можно добраться через другие программы, которые и не собираются спрашивать пароль.

Так, например, пароль для доступа по сети в Microsoft Network никак не влияет на доступ к файлам с локальной консоли (точнее - на доступ локально выполняющихся программ). В свою очередь пароль блокировки консоли (в т.ч. ScreenSaver) не действует на доступ к данным по сети.

Некоторое улучшение парольной защиты может быть сделано путем разбиения пароля на две части -

  1. запоминаемую, которую человек хранит в голове и каждый раз вводит с клавиатуры;

  2. и физическую, которая хранится на каком-то носителе (желательно, нестандартном и труднокопируемом).