Криптография под прицелом I: ищем ключи криптографических алгоритмов. Открытый и закрытый ключ шифрования Что такое ключ шифрования

Криптография под прицелом I: ищем ключи криптографических алгоритмов. Открытый и закрытый ключ шифрования Что такое ключ шифрования

13.01.2024

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

  • Сеансовые (сессионные) ключи - ключи, вырабатываемые между двумя пользователями, обычно для защиты канала связи. Обычно сеансовым ключом является общий секрет - информация, которая вырабатывается на основе секретного ключа одной стороны и открытого ключа другой стороны. Существует несколько протоколов выработки сеансовых ключей и общих секретов, среди них, в частности, алгоритм Диффи - Хеллмана .
  • Подключи - ключевая информация, вырабатываемая в процессе работы криптографического алгоритма на основе ключа. Зачастую подключи вырабатываются на основе специальной процедуры развёртывания ключа.

См. также

Количество информации в ключе, как правило, измеряется в битах.

Для современных симметричных алгоритмов (AES, CAST5, IDEA, Blowfish, Twofish) основной характеристикой криптостойкости является длина ключа. Шифрование с ключами длиной 128 бит и выше считается сильным, так как для расшифровки информации без ключа требуются годы работы мощных суперкомпьютеров. Для асимметричных алгоритмов, основанных на проблемах теории чисел (проблема факторизации -- RSA, проблема дискретного логарифма -- Elgamal) в силу их особенностей минимальная надёжная длина ключа в настоящее время -- 1024 бит. Для асимметричных алгоритмов, основанных на использовании теории эллиптических кривых (ECDSA, ГОСТ Р 34.10-2001, ДСТУ 4145-2002), минимальной надёжной длиной ключа считается 163 бит, но рекомендуются длины от 191 бит и выше.

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

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

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

Безопасно создается, распространяется и сохраняется симметричный секретный ключ.

Отправитель создает электронную подпись с помощью расчета хэш-функции для текста и присоединения полученной строки к тексту

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

Отправитель передает зашифрованный текст. Симметричный секретный ключ никогда не передается по незащищенным каналам связи.

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

Получатель отделяет электронную подпись от текста.

Получатель создает другую электронную подпись с помощью расчета хэш-функции для полученного текста.

Получатель сравнивает две этих электронных подписи для проверки целостности сообщения (отсутствия его искажения)

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

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

Сети банкоматов (ATM BankingNetworks). Эти системы являются оригинальными разработками владеющих ими банков и не продаются. В них также используются симметричные методологии.

Сравнение с асимметричными криптосистемами

Достоинства

скорость (по данным AppliedCryptography -- на 3 порядка выше)

простота реализации (за счёт более простых операций)

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

изученность (за счёт большего возраста)

Недостатки

сложность управления ключами в большой сети. Означает квадратичное возрастание числа пар ключей, которые надо генерировать, передавать, хранить и уничтожать в сети. Для сети в 10 абонентов требуется 45 ключей, для 100 уже 4950, для 1000 -- 499500 и т. д.

сложность обмена ключами. Для применения необходимо решить проблему надёжной передачи ключей каждому абоненту, так как нужен секретный канал для передачи каждого ключа обеим сторонам.

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

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

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

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

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

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

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

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

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

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

Теперь нужно решить проблему с передачей сеансового ключа получателю сообщения.

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

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

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

Теперь шифруется сеансовый ключ с использованием асимметричного алгоритма шифрования-расшифровки и асимметричного ключа получателя (полученного от CA и расшифрованного).

Зашифрованный сеансовый ключ присоединяется к зашифрованному тексту (который включает в себя также добавленную ранее электронную подпись).

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

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

Теперь получателю нужно решить проблему с расшифровкой сеансового ключа.

Получатель должен иметь асимметричный открытый ключ центра выдачи сертификатов (CA).

Используя свой секретный асимметричный ключ и тот же самый асимметричный алгоритм шифрования получатель расшифровывает сеансовый ключ.

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

Получатель отделяет электронную подпись от исходного текста.

Получатель запрашивает у CA асимметричный открытый ключ отправителя.

Как только этот ключ получен, получатель расшифровывает его с помощью открытого ключа CA и соответствующего асимметричного алгоритма шифрования-расшифровки.

Затем расшифровывается хэш-функция текста с использованием открытого ключа отправителя и асимметричного алгоритма шифрования-расшифровки.

Повторно вычисляется хэш-функция полученного исходного текста.

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

Особенности системы

Применение

Алгоритмы криптосистемы с открытым ключом можно использовать

Как самостоятельные средства для защиты передаваемой и хранимой информации

Как средства распределения ключей. Обычно с помощью алгоритмов криптосистем с открытым ключом распределяют ключи, малые по объёму. А саму передачу больших информационных потоков осуществляют с помощью других алгоритмов.

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

Преимущества: Преимущество асимметричных шифров перед симметричными шифрами состоит в отсутствии необходимости предварительной передачи секретного ключа по надёжному каналу.

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

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

В больших сетях число ключей в асимметричной криптосистеме значительно меньше, чем в симметричной.

Недостатки: Преимущество алгоритма симметричного шифрования над несимметричным заключается в том, что в первый относительно легко внести изменения.

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

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

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

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

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

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

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

Линейный криптоанализ был изобретён японским криптологом МицуруМацуи (MitsuruMatsui). Предложенный им в 1993 г. (на Еврокрипте-93) алгоритм был изначально направлен на вскрытие DES и FEAL. Впоследствии линейный криптоанализ был распространён и на другие алгоритмы. На сегодняшний день наряду с дифференциальным криптоанализом является одним из наиболее распространённых методов вскрытия блочных шифров. Разработаны атаки наблочные и потоковые шифры.

Открытие линейного криптоанализа послужило толчком к построению новых криптографических схем.

Принцип работы

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

Защита от линейного криптоанализа

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

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

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

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

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

С предварительной частичной установкой

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

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

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

В подобной ситуации классический протокол установления ключа сеанса выглядит примерно следующим образом --Вызывающий абонент обозначен А, вызываемый абонент -- В, доверенный сервер -- S, ключ которым априори обменялись А и S -- «A-S», ключ между абонентом В и S -- «B-S».

Ключи без предварительной установки

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

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

Создают соответственно два больших случайных числа (а и б), а также их инверсии по модулю р (а-1 modpи b-1 mod p) и держат их на своих системах в секрете.

Вызывающая сторона генерирует ключ сеанса k(k< р-2) и возводит его в степень а по модулю р, после чего отправляет полученное выражение вызываемому абоненту: M1=ka mod p.

Вызываемая сторона возводит полученное сообщение в степень bи отправляет обратно: М2 = (M1b mod p) = (kab mod p}.

Вызывающая сторона дешифрует полученное число инверсией числа а и отправляет обратно: МЗ = (М2-b mod р) = (kb mod p).

Наконец, абонент В дешифрует последнее сообщение инверсией числа b и получает желаемый ключ сеанса: k= (МЗ-b mod p) = (k mod p).

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

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

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

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

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

Что такое ключ в криптографии?

Ключ в криптографии представляет собой секретную информацию, которая применяется в криптографии для шифрования и декодирования сообщений, для простановки цифровой подписи и ее проверки, для вычисления кодов аутентичности сообщений и прочее. Насколько ключ надежен определяется так называемой длиной ключа, которая измеряется в битах. Стандартной длиной ключа для SSL сертификатов считается 128 или 256 бит. Длина ключа сертификата корневого центра сертификации (root certificate) не должна быть ниже 4096 бит. Все центры сертификации, с которыми мы сотрудничаем, предоставляют SSL сертификаты с ключом, полностью соответствующим современным стандартам:

Открытый и закрытый ключ в ассиметричном шифровании

В ассиметричном шифровании применяется пара ключей : открытый (Public key) и закрытый , также называемый секретным (Private key ). Открытый и закрытый ключи в данном случае позволяют криптографическому алгоритму шифровать и дешифровать сообщение. При этом сообщения, зашифрованные открытым ключом, расшифровать можно только с помощью закрытого ключа. Открытый ключ публикуется в сертификате владельца и доступен подключившемуся клиенту, а закрытый – хранится у владельца сертификата. Открытый и закрытый ключ между собой связаны математическими зависимостями, поэтому подобрать открытый или закрытый ключ невозможно за короткое время (срок действия сертификата). Именно поэтому максимальный срок действия SSL сертификатов более высого уровня защиты всегда ниже. Так, можно заказать максимум на 2 года. При этом заказывая новый SSL сертификат или продлевая старый, важно генерировать новый CSR запрос, так как к нему привязывается Ваш закрытый ключ и при выпуске нового SSL сертификата лучше его обновлять. Взаимодействие клиента с сервером происходит следующим образом:
  1. браузер на основе открытого ключа шифрует запрос и отправляет его на сервер;
  2. сервер, применяя закрытый ключ, расшифровывает полученное сообщение;
  3. сервер шифрует закрытым ключом свой цифровой идентификатор и передает его клиенту;
  4. клиент сверяет идентификатор сервера и передает свой;
  5. после взаимной аутентификации клиент шифрует открытым ключом ключ будущей сессии и передает его на сервер;
  6. все последующие сообщения, которые передаются между клиентом и сервером, подписываются ключом сессии и шифруются с использованием открытого и закрытого ключа.
Таким образом обеспечиваются несколько пунктов безопасности:
  • исключается возможность утечки информации – при перехвате её нельзя будет расшифровать;
  • сервер подтверждает свой адрес и идентификатор, отсекается возможность перенаправления на другой сайт (фишинг);
  • клиенту присваивается индивидуальная сессия, что позволяет отличать его от других клиентов более надежно;
  • после установки защищенной сессии все сообщения шифруются с использованием идентификатора клиента, и не могут быть незаметно перехвачены или изменены.

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

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

Для современных симметричных алгоритмов (AES , CAST5 , IDEA , Blowfish , Twofish) основной характеристикой криптостойкости является длина ключа. Шифрование с ключами длиной 128 бит и выше считается сильным , так как для расшифровки информации без ключа требуются годы работы мощных суперкомпьютеров. Для асимметричных алгоритмов, основанных на проблемах теории чисел (проблема факторизации - RSA , проблема дискретного логарифма - Elgamal) в силу их особенностей минимальная надёжная длина ключа в настоящее время - 1024 бит. Для асимметричных алгоритмов, основанных на использовании теории эллиптических кривых (ECDSA , ГОСТ Р 34.10-2001 , ДСТУ 4145-2002), минимальной надёжной длиной ключа считается 163 бит, но рекомендуются длины от 191 бит и выше.

Классификация ключей

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

  • Секретные (Симметричные) ключи - ключи, используемые в симметричных алгоритмах (шифрование, выработка кодов аутентичности). Главное свойство симметричных ключей: для выполнения как прямого, так и обратного криптографического преобразования (шифрование/расшифровывание, вычисление MAC/проверка MAC) необходимо использовать один и тот же ключ (либо же ключ для обратного преобразования легко вычисляется из ключа для прямого преобразования, и наоборот). С одной стороны, это обеспечивает более высокую конфиденциальность сообщений, с другой стороны, создаёт проблемы распространения ключей в системах с большим количеством пользователей.
  • Асимметричные ключи - ключи, используемые в асимметричных алгоритмах (шифрование, ЭЦП). Более точно, они являются ключевой парой , поскольку состоят из двух ключей:
    • Закрытый ключ (en:Private key) - ключ, известный только своему владельцу. Только сохранение пользователем в тайне своего закрытого ключа гарантирует невозможность подделки злоумышленником документа и цифровой подписи от имени заверяющего.
    • Открытый ключ (en:Public key) - ключ, который может быть опубликован и используется для проверки подлинности подписанного документа, а также для предупреждения мошенничества со стороны заверяющего лица в виде отказа его от подписи документа. Открытый ключ подписи вычисляется, как значение некоторой функции от закрытого ключа, но знание открытого ключа не дает возможности определить закрытый ключ.

Главное свойство ключевой пары: по секретному ключу легко вычисляется открытый ключ, но по известному открытому ключу практически невозможно вычислить секретный. В алгоритмах ЭЦП подпись обычно ставится на секретном ключе пользователя, а проверяется на открытом. Таким образом, любой может проверить, действительно ли данный пользователь поставил данную подпись. Тем самым асимметричные алгоритмы обеспечивают не только целостность информации, но и её аутентичность. При шифровании же наоборот, сообщения шифруются на открытом ключе, а расшифровываются на секретном. Таким образом, расшифровать сообщение может только адресат и больше никто (включая отправителя). Использование асимметричных алгоритмов снимает проблему распространения ключей пользователей в системе, но ставит новые проблемы: достоверность полученных ключей. Эти проблемы более-менее успешно решаются в рамках инфраструктуры открытых ключей (PKI).

  • Сеансовые (сессионные) ключи - ключи, вырабатываемые между двумя пользователями, обычно для защиты канала связи. Обычно сеансовым ключом является общий секрет - информация, которая вырабатывается на основе секретного ключа одной стороны и открытого ключа другой стороны. Существует несколько протоколов выработки сеансовых ключей и общих секретов, среди них, в частности, алгоритм Диффи - Хеллмана .
  • Подключи - ключевая информация, вырабатываемая в процессе работы криптографического алгоритма на основе ключа. Зачастую подключи вырабатываются на основе специальной процедуры развёртывания ключа.

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

  • генерация ключей;
  • хранение ключей;
  • распределение ключей.

Генерация ключей. Истинно случайные и псевдослучайные последовательности . Генерация ключей должна производиться таким образом, чтобы предугадать значение ключа (даже зная, как он будет генерироваться) было практически невозможно. В идеальном случае вероятность выбора конкретного ключа из множества допустимых равна 1 /К, где К - мощность ключевого множества (ключи равновероятны).

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

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

Последовательность называется истинно случайной , если ее нельзя воспроизвести. Это означает, что если запустить генератор истинно случайных чисел дважды при одном и том же входе, то на его выходе получатся разные случайные последовательности.

В то же время из-за дешевизны и возможности неограниченного тиражирования наиболее распространенными являются программные реализа-

Рис. 2.60.

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

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

Рис. 2.61.

Наиболее простым и известным генератором псевдослучайных чисел является линейный конгруэнтный генератор, вырабатывающий последовательность чисел R(i):

где А и С - константы; R(0) - исходное значение, выбранное в качестве порождающего числа. Значение т обычно устанавливается равным 2п у где п - длина машинного слова в битах. Генератор имеет период М, после чего генерируемая последовательность начнет повторяться. Необходимо выбирать числа А и С таким образом, чтобы период М был максимальным. Доказано, что этого можно достичь тогда и только тогда, когда С - нечетное и A mod 4 = 1.

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

Так, например, при известных значениях R(0), R( 1), R(2), R(3) (или любых других четырех подряд идущих членов последовательности псевдослучайных чисел R(i)) параметры генератора могут быть получены из системы уравнений

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

В качестве примеров криптографически сильных генераторов псевдослучайных чисел можно привести режим OFB (и его модификацию CTR) блочных шифров , а также режим гаммирования отечественного криптоалгоритма ГОСТ 28147-89. При этом используются ключи, специально резервируемые для задач генерации. В качестве начальных значений могут браться, например, значения таймера вычислительной системы. Кроме того, криптографически сильные генераторы могут быть построены с использованием односторонних хэш-функций .

Генератор псевдослучайной последовательности для криптографических задач должен удовлетворять следующим требованиям:

  • генерируемая последовательность должна быть статистически неотличима за приемлемое время вычислений от абсолютно случайной последовательности;
  • знание какой-либо начальной части последовательности не позволяет предсказать следующий бит этой последовательности за приемлемое время вычислений.

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

  • классические статистические тесты (проверка гипотезы равномерного распределения случайной величины методом хи-квадрат, тесты на однородность и симметричность);
  • тесты, применимые к двоичным последовательностям (метод серий, частотный периодический тест);
  • тесты, специально разработанные или отобранные для применения в криптографии, - тесты NIST (16 тестов, рекомендованных Национальным институтом стандартов и технологий США); тесты DIEHARD , известные как один из наиболее строгих наборов тестов; тесты Д. Кнута, основанные на критерии хи-квадрат ; адаптивный тест «стопка книг» и др.

Генератор Блюм - Блюма - Шуба . Самым простым и эффективным на данный момент криптографически сильным генератором псевдослучайных чисел является генератор BBS (Blum - Blum - Shub), названный по именам создателей Л. Блюм, М. Блюма и М. Шуба и основанный на теории квадратичных вычетов но модулю.

Сначала находят два больших простых числа р } q примерно одного размера, которые при делении на 4 дают остаток 3:

Для нахождения чисел р и q можно сначала выбрать случайные целые числа и и v , вычислить р = Аи + 3, q = 4v + 3, а затем проверить их на простоту. Если полученное число оказалось не простым, то выбирают новое случайное значение. Затем вычисляется п = pq, названное числом Блюма. Далее выбирается случайное целое число s, 1 s взаимно простое с п , НОД(5, п) = . Генерируется начальное значение генератора х 0 = s modrc. Получили х {) - случайный квадратичный вычет по модулю п.

В качестве битов псевдослучайной последовательности ps требуемой длины L используются младшие биты чисел х

Интересной особенностью генератора BBS является то, что при знании разложения числа п на множители он допускает эффективное прямое определение любого бита последовательности ps. Любое х- может быть вычислено исходя лишь из начального значения х 0 и порядкового номера i:

Алгоритм BBS при корректном выборе начальных параметров удовлетворяет всем статистическим критериям, предъявляемым к псевдослучайным последовательностям. BBS-генератор непредсказуем налево и направо, т.е. невозможно предсказать предыдущий или последующий бит последовательности, имея какую-либо ее часть. Период псевдослучайной последовательности, вырабатываемой BBS-генератором, во много раз превышает размер модуля пК

Пример 2.11

Сформируем псевдослучайную 4-битовую последовательность с помощью BBS-генератора.

Найдем числа р и q. Выберем два случайных целых числа и = 3 и v = 5. Вычислим р = 4 3 + 3 = 15и р = 15 - не простое и не может использоваться в BBS-генераторе, а число q = 23 - простое. Выберем тогда новое значение и = 7,р = 7-4 + 3 = = 31 - простое. Число Блюма п = pq = 31 23 = 713.

Выберем случайное целое число 5, взаимно простое с п. Пусть s = 16, ПОД(16, 713) = 1. Тогда:

В качестве последовательности ps возьмем младшие биты чисел х { (0 - если число четное и 1 - если число нечетное), получаем ps = 0110.

Пусть теперь требуется ответить на вопрос: каким будет 12-й бит последовательности ps?

Зная разложение числа п на множители = 31 и q = 23), вычислим х и:

х и - четное, значит 12-й бит последовательности ps будет равен нулю.

Эффективность BBS-генератора можно повысить, не ослабляя результирующую последовательность ps, если использовать не один, а не более log 2 rj младших битов чисел x jf где г - количество двоичных разрядов числа Блюма п (т.е. примерно log 2 log 2 n младших битов).

Пример 2.12

Требуется выяснить максимально возможное число младших битов чисел х { , которые можно использовать в BBS-гснсраторс, нс ослабляя его, если п = 713.

Вычислим log 2 (713 + 1) « 9,48 (добавляем единицу для кодирования нуля), округлив вверх до ближайшего целого, получим г = 10 - число двоичных разрядов числа 713.

Вычислим log 2 10 ~ 3,32, округлив вниз до ближайшего целого, получаем 3. Значит, в эффективной реализации BBS-генератора можно использовать три младших бита чисел х { (для сравнения: log 2 log 2 713 ~ 3,24, результат тот же - три младших бита).

Стандарт ANSI Х9.17. Представляется естественным использовать криптостойкие алгоритмы шифрования для построения криптографически сильного генератора псевдослучайных чисел. Для этих целей подходят режимы OFB, CTR или гаммирования (для ГОСТ 28147-89). Данный метод обеспечивает достаточное качество генерируемой последовательности, так как криптографическая гамма обладает необходимыми статистическими характеристиками. Как и в случае иных генераторов псевдослучайных чисел, последовательность будет периодична. Так, гамма шифра алгоритма ГОСТ 28147-89 обладает периодом повторения 64-битовых блоков, равным 2 64 -2 32 .

Одной из схем генерации ключей с использованием симметричного шифра является стандарт ANSI Х9.17 с алгоритмом тройной DES (Triple DES, 3DES) с двойным ключом (рис. 2.62). В число приложений, использующих эту технологию, входит PGP.


Рис. 2.62.

Пусть функция E k (X) осуществляет шифрование X по ЗОЕБ-алгоритму (шифрование - дешифровка - шифрование) на заранее заготовленном ключе к = (К 1, К2), который используется только для генерации секретных ключей. Пусть далее вектор инициализации IV 0 является начальным 64-битным значением, которое держится в тайне от противника, а Г. представляет собой отметку времени, когда был сгенерирован i -й ключ. Тогда очередной случайный ключ R } вычисляется с помощью преобразования

Очередное значение вектора инициализации IV i+v которое будет использовано для генерации следующего случайного числа, вычисляется как

Основное назначение генератора ANSI Х9.17 состоит в получении большого количества ключей для многократных сеансов связи.

Вообще говоря, вместо 3DES можно использовать любой другой стойкий алгоритм шифрования, например ГОСТ 28147-89.

На практике необходимость дополнительных вызовов процедуры шифрования (одного в случае гаммирования и трех в стандарте ANSI Х9.17) делает генерацию весьма ресурсоемкой, что затрудняет ее аппаратную реализацию и определяет невысокие скоростные характеристики данного метода.

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

Ключевые пространства. Пространство ключей К (ключевое пространство) - это набор всех возможных значений ключа.

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

Неоднородные ключевые пространства используются для защиты от несанкционированного использования криптографического оборудования.

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

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

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

Неоднородное ключевое пространство характеризуется следующими особенностями:

  • шифрование информации с помощью стойкого криптоалгоритма Е к имеет место только при использовании ключей специального вида;
  • «правильный» (стойкий) ключ k = , где k" - собственно ключ шифрования длины n k , (|&| = п к) F - некоторая криптографическая функция; |F(k’) | - А, А - п к -
  • вероятность случайно получить стойкий ключ пренебрежимо мала и равна 2“ д;
  • если поступивший на вход криптомодуля ключ не является стойким, для шифрования информации применяется существенно менее стойкий алгоритм Е[.

Например, блочный алгоритм шифрования с длиной ключа 128 бит может использовать «составной» ключ из 192 бит. Тогда вероятность случайно использовать стойкий ключ будет достаточно мала - всего 2 -64 .

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

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

  • на главный ключ (мастер-ключ);
  • ключ шифрования ключей;
  • ключ шифрования данных (сеансовый ключ).

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

В настоящее время для распределения ключей обычно используются схемы криптографии с открытым ключом, такие как система Диффи - Хеллмана (DH) или протокол Нидхема - Шрёдера, обеспечивающий взаимную аутентификацию сторон с формированием общего секретного ключа. Эффективное решение задачи распределения ключей средствами симметричной криптографии возможно при использовании общего доверенного центра (сервера ключей).

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

  • обеспечить оперативность и точность распределения ключей;
  • обеспечить секретность распределения ключей.

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

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

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

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

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

  • DRAFT NIST SP 800-90А, Rev. 1. Recommendation for Random Number Generation UsingDeterministic Random Bit Generators //NIST. Nov. 2014. URL: http://csrc.nist.gov/publications/drafts/800-90/sp800-90a_r l_draft_novembcr2014_vcr.pdf
  • Там же; СТБ 34.101.47-2012. Государственный стандарт Республики Беларусь. Информационные технологии и безопасность. Криптографические алгоритмы генерации псевдослучайных чисел. Минск: Госстандарт, 2012. URL: http://apmi.bsu.by/assets/files/std/brng-specl7.pdf
  • Брассар Ж. Современная криптология. Руководство.
  • DRAFT NIST SP 800-90А, Rev. 1. Recommendation for Random Number Generation UsingDeterministic Random Bit Generators.

© 2024 iteleradio.ru - Твой компьютер