Книга: Инфраструктуры открытых ключей

Базовые криптографические механизмы сервисов безопасности PKI

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

Современная криптография предлагает большой набор механизмов обеспечения информационной безопасности: от "классического" шифрования до алгоритмов хэширования, схем аутентификации, цифровой подписи и других криптографических протоколов >[212]. Кратко остановимся на трех классах криптографических механизмов - симметричных алгоритмах, алгоритмах хэширования и асимметричных алгоритмах.

Симметричные алгоритмы

Использование симметричных криптографических алгоритмов предполагает наличие взаимного доверия сторон, участвующих в обмене электронными документами или сообщениями, так как для шифрования и расшифрования применяется известный им один и тот же общий ключ. В этом случае нет никаких гарантий, что секретный ключ не будет скомпрометирован, поэтому применение симметричных алгоритмов требует очень надежных механизмов распределения ключей. Кроме того, необходимость обмена единым ключом между отправителем сообщения и каждым из получателей многократно увеличивает количество ключей в системе и затрудняет ее масштабируемость. Для 10 пользователей нужно 45 ключей, а для 1000 - уже 499 500 ключей >[213].

Симметричные алгоритмы могут ограниченно использоваться для поддержания сервисов аутентификации и целостности, но в первую очередь применяются для обеспечения конфиденциальности. Для проверки целостности сообщения и аутентификации источника данных отправитель может сгенерировать шифртекст на базе всего открытого текста, как излагалось выше. После этого он отправляет открытый текст и часть шифртекста получателю сообщения. Эта часть шифртекста известна как код аутентификации сообщения или MAC (Message Authentication Checksum). Функция MAC на основе входа переменной длины и ключа формирует выход фиксированной длины >[23]. Получатель использует свою копию секретного ключа отправителя сообщения для генерации шифртекста, выбирает ту же часть шифртекста и сравнивает ее с полученным значением MAC. Их совпадение подтверждает подлинность отправителя, но не гарантирует невозможности отказа от участия в обмене сообщениями. Отправитель может отрицать факт передачи сообщения, мотивируя это тем, что получатель вполне мог сгенерировать сообщение сам.

Управление ключами - сложная проблема, она может решаться при помощи криптографии с симметричными ключами, но является классической проблемой типа "курица или яйцо". Прежде чем отправитель зашифрует сообщение или сгенерирует MAC, он должен разделить с получателем некоторый секрет. Разделение секрета, например, секретного ключа из нескольких частей, осуществляется таким образом, чтобы из любого заранее указанного количества k -частей можно было восстановить секрет, а количества частей (k - 1) для восстановления секрета было недостаточно >[23]. В системах с одним ключом утрата ключа фактически равноценна взлому криптографической защиты. Для обеспечения требуемого уровня защиты ключ обычно передают по каналам, отличным от канала распространения зашифрованных данных. При этом должна обеспечиваться надежная идентификация пользователя (он должен иметь санкционированный доступ к зашифрованной информации) и секретность (предотвращение доступа к ключу в процессе передачи).

Преимуществами симметричных криптографических алгоритмов признаны их высокая производительность и стойкость, которая делает практически невозможным процесс расшифрования. Одним из первых стандартных симметричных алгоритмов стал DES (Digital Encryption Standard), затем появился Triple DES, который выполняет алгоритм DES троекратно и соответственно требует для работы в три раза больше времени. Для решения проблемы производительности и повышения защитных свойств были предложены новые алгоритмы RC2 и RC5 корпорации RSA Security, IDEA компании Ascom, Cast компании Entrust Technologies, Safer компании Cylink и Blowfish компании Counterpane Systems >[2]. В России разработан и используется симметричный алгоритм ГОСТ 28147-89. В качестве нового международного стандарта AES (Advanced Encryption Standard) предлагается симметричный алгоритм Rijndael >[47], разработанный бельгийскими криптографами В. Риджменом и Д. Дименом.

Алгоритмы хэширования

Криптографическими методами можно обеспечить не только конфиденциальность, но и проконтролировать целостность передаваемых или хранимых данных. Контроль целостности в основном осуществляется путем расчета некоторой "контрольной суммы" данных. На сегодняшний день известно множество алгоритмов, рассчитывающих контрольные суммы передаваемых данных. Проблема простых алгоритмов вычисления контрольной суммы состоит в том, что достаточно легко подобрать несколько массивов данных, имеющих одинаковую контрольную сумму. Криптографически стойкие контрольные суммы вычисляются как результат применения к исходному тексту так называемой хэш-функции. Под этим термином понимаются функции, отображающие сообщения произвольной длины (иногда длина сообщения ограничена, но достаточно велика) в значения фиксированной длины >[212]. Последние часто называют хэш-кодами, или дайджестами, сообщений. Хэш-функции - это необходимый элемент ряда криптографических схем.

Главными свойствами "хорошей" в криптографическом смысле хэш-функции являются свойство необратимости, свойство стойкости к коллизиям и свойство рассеивания. Необратимость означает, что вычисление обратной функции (то есть восстановление значения аргумента по известному значению функции) оказывается невозможно теоретически или (в крайнем случае) невозможно вычислительно. Свойство стойкости к коллизиям хэш-функцииH выражается в невозможности найти два разных сообщения T1 и T2 с одинаковым результатом преобразования H(T1) = H(T2). Хэш-код может быть повторно получен для того же сообщения любым пользователем, но практически невозможно создать разные сообщения для получения одного и того же хэш-кода сообщения. Значение хэш-функции всегда имеет фиксированную длину, а на длину исходного текста не накладывается никаких ограничений. Свойство рассеивания требует, чтобы минимальные изменения текста, подлежащего хэшированию, вызывали максимальные изменения в значении хэш-функции>[37].

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

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

Обычно коды HMAC используются только для быстрой проверки того, что содержимое не было изменено при передаче. Для создания уникальной, подлежащей проверке подписи необходим другой способ - он заключается в шифровании хэш-кода сообщения при помощи секретного ключа лица, поставившего подпись. В этом случае хэш-функция используется в схемах электронной цифровой подписи (ЭЦП). Поскольку применяемые на практике схемы электронной подписи не приспособлены для подписания сообщений произвольной длины, а процедура разбиения сообщения на блоки и генерации подписи для каждого блока по отдельности крайне неэффективна, - схему подписи применяют к хэш-коду сообщения. Очевидно, что наличие эффективных методов поиска коллизий для хэш-функции подрывает стойкость протокола электронной подписи>[212]. Хэш-функции используются также в некоторых протоколах аутентификации для снижения их коммуникационной сложности, то есть для уменьшения длин пересылаемых сообщений, а также в некоторых других криптографических протоколах.

Существует множество алгоритмов, реализующих хэш-функции. К ним относятся алгоритмы вычисления хэш-кодов, созданные Роном Ривестом (MD2, MD5), SHA и его вариант SHA1, российский алгоритм, описываемый стандартом ГОСТ Р 34.11-94 >[15].

Асимметричные алгоритмы

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

Асимметричные системы имеют ряд преимуществ перед симметричными системами. В асимметричных системах решена сложная проблема распределения ключей между пользователями, так как каждый пользователь может сгенерировать свою пару ключей, а открытые ключи свободно публикуются и распространяются. Благодаря тому, что в асимметричных системах секретный ключ известен только его владельцу, возможно взаимодействие сторон, не знающих друг друга. Среди асимметричных алгоритмов наиболее известными являются RSA и алгоритм Эль-Гамаля >[215].

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

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

В схемах цифровой подписи применяются три основных алгоритма: RSA, алгоритм цифровой подписи DSA (Digital Signature Algorithm) и его вариант с использованием эллиптических кривых - EСDSA (Elliptic Curve Digital Signature Algorithm).

Сравнение криптографических механизмов безопасности

Криптографические механизмы необходимы для поддержания основных сервисов безопасности. Каждый класс алгоритмов имеет свои сильные и слабые стороны (см. табл. 4.1) >[84].

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

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

Самое слабое звено этих алгоритмов - распространение (распределение) ключей. Для решения проблемы распространения ключей широко используются алгоритм RSA, алгоритм Диффи-Хэллмана - Diffie-Hellman (DH) и алгоритм эллиптических кривых Диффи-Хэллмана - Elliptic Curve Diffie-Hellman (ECDH). Распространение ключей может выполняться тремя способами: прямым обменом между сторонами при помощи симметричного шифрования; посредством симметричного шифрования и доверенной третьей стороны или при помощи управления открытыми ключами доверенной третьей стороной.

|Механизм безопасности | Целостность данных | Конфиденциальность | Идентификация и аутентификация | Неотказуемость | Распределение ключей |

|Симметричная криптография | Шифрование | - | + | - | - | - |

|Коды аутентификации сообщения | + | - | - | - | - |

|Транспортировка ключей | - | - | - | - | + |

|Хэш-функции | Хэш-код сообщения | + | - | - | - | - |

|HMAC | + | - | - | - | - |

|Асимметричная криптография | Цифровые подписи | + | - | + | + | - |

|Транспортировка ключей | - | - | - | - | + |

|Согласование ключей | - | - | - | - | + |

Таблица 4.1.Сравнение криптографических механизмов безопасности

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

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

Оглавление книги


Генерация: 1.185. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз