Описываются сервисы идентификации и аутентификации, целостности и конфиденциальности, рассматриваются и сравниваются между собой три класса криптографических механизмов: симметричные и асимметричные алгоритмы и алгоритмы хэширования.
Сервис безопасности представляет собой совокупность механизмов, процедур и других средств управления для снижения рисков, связанных с угрозой утраты или раскрытия данных [2]. В основном считается, что PKI должна предоставлять три основных сервиса безопасности: аутентификацию, целостность и конфиденциальность.
Сервис идентификация и аутентификация обеспечивает аутентификацию участников коммуникации и аутентификацию источника данных.
Сервис целостности предотвращает преднамеренное или случайное несанкционированное изменение данных, в том числе их ввод, уничтожение или модификацию (изменение, сокращение или дополнение), в процессе передачи по сети. Для гарантирования целостности система должна обнаруживать несанкционированную модификацию информации. Цель получателя информации - убедиться в том, что данные при передаче не были изменены.
Сервис конфиденциальности обеспечивает защиту от несанкционированного получения информации: разрешает доступ к конфиденциальным данным только пользователям, имеющим соответствующие права, и предотвращает несанкционированное раскрытие информации не имеющими полномочий пользователями или процессами. Различают следующие виды конфиденциальности:
* конфиденциальность данных при взаимодействии с установлением соединения;
* конфиденциальность данных при взаимодействии без установления соединения;
* конфиденциальность отдельных полей данных (избирательная конфиденциальность );
* конфиденциальность трафика (защита информации, которую можно получить, анализируя трафик).
К основным сервисам безопасности, помимо перечисленных выше, международный стандарт X.800 (Recommendation X.800) относит также и сервис неотказуемости [56]. Строго говоря, сервис неотказуемости является сервисом, базирующимся на PKI, он предоставляет лишь электронные доказательства времени подписания или передачи данных и аутентификации источника данных, которые в случае возникновения спора между сторонами могут быть учтены или оспорены во время судебного разбирательства. При принятии решения о неправомерных действиях одной из сторон более важен человеческий фактор, нежели результат процедуры, выполняемой PKI автоматически. Поэтому сервис неотказуемости рассматривается в главе, которая посвящена сервисам, базирующимся на PKI.
Идентификацией субъекта называется процесс сопоставления введенной им своей характеристики с некоторым идентификатором, хранимым системой. В дальнейшем идентификатор субъекта используется для предоставления субъекту определенного уровня прав и полномочий. Аутентификацией субъекта называется процедура проверки принадлежности идентификатора субъекту. Аутентификация осуществляется на основании того или иного секретного элемента (аутентификатора), которым располагают как субъект, так и информационная система [37].
Обычный способ идентификации - ввод имени пользователя при входе в систему. Для аутентификации пользователей, то есть проверки подлинности их личности, чаще всего используются пароли. При аутентификации источника данных подтверждается подлинность источника отдельной порции данных. Функция не обеспечивает защиты против повторной передачи данных [5].
Аутентификация обычно находит применение в двух основных контекстах: идентификации субъекта и идентификации источника данных.
Идентификация субъекта служит просто для распознавания субъекта независимо от его последующих действий. Очевидно, что одной идентификации недостаточно, поскольку субъект, как правило, не только называет себя, но и желает получить возможность выполнять некоторые действия. На практике результат идентификации субъекта позволяет ему связываться с другими субъектами или выполнять определенные виды активности. Например, в результате идентификации субъект может получить секретный ключ, которым он затем может воспользоваться для расшифрования файла, а также для установления защищенной связи с другим субъектом. Идентификационные данные субъекта, который прошел аутентификацию, также могут быть связаны с некоторыми полномочиями доступа, на основании которых принимаются решения по контролю доступа.
Все приведенные замечания были сделаны вовсе не для того, чтобы преуменьшить важность идентификации субъекта. Защищенная система не может существовать без строгого механизма аутентификации. Аутентификация - это критически важный и необходимый шаг к работе защищенной системы, но это только первый шаг. Аутентификация сама по себе не является конечной целью.
Идентификация источника данных выполняется с намерением стационарно и окончательно связать идентифицированного субъекта с некоторыми определенными данными независимо от его любых дальнейших действий. Такой процесс может обеспечить поддержку сервиса неотказуемости.
По степени приближенности субъекта к среде различают следующие процедуры идентификации:
1 начальную идентификацию субъекта в локальной среде, то есть на персональном, физически приближенном к субъекту устройстве без связи с другими устройствами в сети;
2 идентификацию субъекта в удаленной среде или при доступе к удаленному устройству.
В процедуре локальной аутентификации, или начальной аутентификации субъекта в локальной среде, почти всегда явно и непосредственно участвует пользователь, который должен ввести пароль или предъявить биометрические характеристики (отпечатки пальцев, рисунок радужной оболочки глаза). Удаленная аутентификация, или аутентификация субъекта в некоторой удаленной среде, может выполняться как с участием, так и без участия пользователя [44]. Обычно более сложные системы аутентификации явным образом не включают пользователя. Это происходит по двум причинам:
1 Трудно защитить систему аутентификации, которая получает секретную информацию, идентифицирующую субъекта (например, пароль или отпечатки пальцев), и передает ее на расстояние по незащищенным каналам, где она может быть скопирована с мошенническими целями недобросовестной стороной.
2 Пользователям неудобно вводить аутентифицирующую информацию всякий раз, когда они желают получить доступ к удаленной сети.
Таким образом, более рациональным решением является передача на расстояние результата процесса локальной аутентификации без передачи самой фактической информации, аутентифицирующей субъекта. Субъект может получить доступ к удаленной среде на основании положительного результата его аутентификации в локальной среде, если между локальной и удаленной средами установлена защищенная связь. В этом случае нет необходимости передавать на расстояние пароль, PIN-код или биометрические характеристики. Отметим, что такое решение может использоваться для последующей аутентификации (после успешно завершившейся начальной аутентификации) для работы с другими приложениями в локальной среде, то есть для защищенной однократной регистрации (см. лекцию 2).
Существует много способов доказательства идентичности субъекта, но любой способ предусматривает предъявление одного из четырех возможных идентифицирующих признаков:
1 того, что субъект имеет (например, смарт-карты или аппаратного ключа);
2 того, что субъект знает (например, пароля или PIN-кода);
3 того, чем субъект является (например, отпечатков пальцев, параметров ладони или рисунка радужной оболочки глаза);
4 того, что субъект делает (например, клавиатурного почерка).
При однофакторной идентификации используется только один из перечисленных методов, при многофакторной идентификации - более одного метода (двухфакторная идентификация использует два метода, трехфакторная - три и т.д.). Известным примером двухфакторной аутентификации является процесс однократной регистрации при пользовании банкоматом, когда пользователь вставляет карту со встроенным чипом (то, что пользователь имеет) и вводит PIN-код (то, что пользователь знает), чтобы получить доступ к своему банковскому счету. Очевидно, что системы многофакторной идентификации требуют больших затрат усилий от пользователя, но более эффективны в смысле безопасности и практически лишают злоумышленника возможности выдать себя за легитимного пользователя.
Сервисы PKI обычно не используются для начальной (безразлично - однофакторной или многофакторной) аутентификации в локальной среде, но необходимы для аутентификации в удаленной среде (или последующей аутентификации в локальной среде), которая выполняется на базе сложных протоколов запроса-подтверждения и подписанных цифровой подписью сообщений. Важным преимуществом удаленной аутентификации на базе открытых ключей перед механизмами, которые имитируют аутентификацию в локальной среде, является то, что секретная информация, идентифицирующая субъекта, никогда не передается по сети [10]. Если пользователь А хранит копию пароля или отпечатка пальца пользователя В, то пользователь В должен пройти аутентификацию, доказывая, что он знает или имеет эту информацию; это обычно выполняется путем передачи этой информации пользователю А в процессе регистрации. Если пользователь А владеет копией открытого ключа подписи пользователя В, то может попросить пользователя В подписать сообщение-запрос своим секретным ключом подписи (который известен только В ). Если подписанный запрос возвращается, то пользователь В аутентифицировал себя без раскрытия какой-либо секретной информации. По сети не передается та информация, которая может быть использована злоумышленником для маскировки под пользователя В. Более того, пользователям А и В нет необходимости участвовать в дорогом и неудобном процессе предварительного создания разделяемого секрета (например, в передаче пользователю А копии пароля или отпечатка пальца пользователя В ). Пользователь А может просто воспользоваться опубликованной в репозитории УЦ или присланной по электронной почте самим пользователем В копией его открытого ключа.
Преимуществом сервиса аутентификации PKI является возможность однократной регистрации через PKI-совместимые устройства (и возможно, через серверы шлюзов локальной сети к другим устройствам тоже) [44]. Пользователь сначала однократно регистрируется в локальной сети (используя однофакторную или многофакторную аутентификацию), после чего получает локальный доступ к своим секретным ключам. Затем секретный ключ подписи может быть использован для автоматической и прозрачной аутентификации пользователя другими серверами и устройствами сети независимо от того, желает ли пользователь использовать их для коммуникации. Пользователь может свободно использовать локальную и удаленную среды без необходимости каждый раз вводить пароль или предъявлять для считывания отпечаток пальца.
Сервис целостности данных гарантирует то, что данные (передаваемые или хранимые) не были незаметно изменены. Очевидно, что такая гарантия существенна для любого вида электронного бизнеса, а также желательна во многих других средах. Целостность данных может быть достигнута при помощи таких механизмов, как биты контроля четности и циклический избыточный код [10], но они эффективны только для обнаружения случайных ошибок и бессильны противостоять преднамеренному манипулированию данными и модификации их содержания в корыстных целях. Для защиты данных от этого вида атак требуются криптографические методы. Необходимо, чтобы субъект, желающий обеспечить целостность данных, и субъект, желающий быть гарантированно уверенным в целостности данных, понимали и правильно использовали соответствующие алгоритмы и ключи. Преимуществом сервиса целостности, предоставляемого 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. Эти сервисы дают возможность субъектам подтверждать, что они действительно те, за кого себя выдают, получать гарантии, что передаваемые данные не были изменены каким-либо способом, и иметь уверенность, что данные, отправленные другому субъекту, будут прочитаны только им.