Не только шифрование, или Обзор криптотехнологий..
Не только шифрование, или Обзор криптотехнологий
Глеб Семенов
Введение
Что обычно приходит на ум при произнесении слова «криптография»? Спецслужбы, дипломатическая переписка, «математическое шаманство»?
А при произнесении фразы «криптография в информационных технологиях»? Шифрование данных припомнят сразу. Про электронную подпись вспомнят. Кто-то знает что-то про «Сертификаты открытых ключей». Или про «взлом» чужих шифров. Попробуем разобраться со всем этими, а заодно и другими, понятиями и подходами, которыми оперирует современная криптография.
Криптография в прошлом использовалась лишь в военных целях. Однако сейчас, по мере образования информационного общества, криптография становится одним из основных инструментов обеспечивающих конфиденциальность, доверие, авторизацию, электронные платежи, корпоративную безопасность и бесчисленное множество других важных вещей.
Справедливости ради, надо отметить, что криптография? — не панацея от всех бед. Криптографические методы могут помочь обеспечить безопасность, но только на эти методы надеяться не следует. Криптографические методы могут применяться для решений следующих проблем безопасности:
- конфиденциальности передаваемых/хранимых данных;
- аутентификации;
- целостности хранимых и передаваемых данных;
- обеспечения подлинности документов.
Базовых методов преобразования информации, которыми располагает криптография, немного, среди них:
- шифрование (симметричное и несимметричное);
- вычисление хэш-функций;
- генерации электронно-цифровой подписи;
- генерация последовательности псевдо-случайных чисел.
В настоящем обзоре нас будут интересовать криптосистемы и криптоалгоритмы, реализованные с использованием компьютера. В обзоре не будут рассмотрены методы шифрования с использованием шифроблокнотов или специальной шифровальной техники как в силу недостатка открытой информации об этих методах, так и в силу недоступности такого оборудования массовому потребителю.
Собственно о шифровании
Шифрование — это обратимое преобразование данных с целью их сокрытия от посторонних. Методов шифрования было придумано множество — от шифров простой замены (наиболее известный пример — «Пляшущие человечки» Конан Дойля) до принципиально невскрываемого шифра Вернама (двоичное сложение исходного текста с однократно используемой случайной последовательностью). Почти все методы шифрования используют ключ шифрования — секретную кодовую последовательность, используемую в процессе преобразования информации. Где-то даже довелось прочесть такое определение шифрованию: «Шифрование — это процесс замены Вашего большого секрета (документа) маленьким (ключом)».
В случае применения шифра Вернама, ключ шифрования равен по длине шифруемому сообщению, да еще и должен использоваться однократно. И, хотя, шифр Вернама, при правильном его применении обеспечивает «абсолютную» секретность, он не удобен для большинства применений. Современные криптосистемы используют ключ для шифрования длиной от 64 до 1024—2048 бит. Традиция мерить длину ключа в битах, видимо, останется с нами навсегда. У читателя может возникнуть вопрос? — откуда взялись такие цифры, и почему TripleDES считается не менее надежным, чем 1024-битный RSA? И вообще, как зависит надежность шифрования (или, как говорят, стойкость шифра) от длины используемого ключа?
Для того, чтобы ответить на эти вопросы необходимо разобраться с тем, какие алгоритмы шифрования сейчас используются на практике. Вообще, «классическими шифрами» принято называть симметричные блочные шифры. То есть те, которые для шифрования и расшифрования информации используют один и тот же ключ и шифруют информацию блоками. Длина блока составляет, обычно, 8 или 16 байт. Есть алгоритмы, допускающие переменную длину блока. Первым блочным шифром, широко использующимся на практике стал DES (Data Encryption Standard), разработанный специалистами IBM в начале 70х годов прошлого века и долгое время служивший стандартом для шифрования данных в США. Потом появилось много блочных алгоритмов — IDEA, Blowfish, советский ГОСТ 28147–89 (и ныне являющийся отечественным стандартом).
Оригинальный DES, к примеру, использовал ключ длиной 112 бит и блок шифрования длиной 64 бита. Но, после его «анализа» специалистами NSA1 длина ключа была уменьшена до 64 бит. При этом, в ключе было только 56 бит уникальных, а 8 бит — контрольных, служащих для контроля целостности ключа. Именно с ключом длиной в 56 бит DES и был утвержден в качестве Национального Стандарта. При том уровне развития вычислительной техники, задача перебора 2**56 ключей за приемлемое время была или технически не выполнимой или неоправданно дорогой2. Сейчас DES c длиной ключа в 56 бит не представляется стойким алгоритмом.
Большинство современных стойких симметричных алгоритмов используют ключ длиной 64—256 бит (8—32 байта). Ниже, в таблице перечислены основные, используемые в настоящее время алгоритмы, их длины блока и длины ключа.
Алгоритм | Длина ключа (в битах) | Длина блока (в битах) |
DES | 64 | 64 |
Blowfish | Переменная, до 448 бит | 64 |
IDEA | 128 | 64 |
ГОСТ 28147–89 | 256 | 64 |
RC5 | переменная | переменная |
Необходимо отметить, что кроме блочных шифров существуют и активно используются поточные шифры. Они, как и блочные шифры, используют симметричный ключ, но выполняют шифрования входного потока побайтно или, иногда, побитно. Идея поточного шифра состоит в том, что на основе симметричного ключа вырабатывается ключевая последовательность, или гамма, последовательность, которая складывается по модулю два (операция xor) с входным потоком. Поточные шифры, как правило, более производительны, чем блочные и используются для шифрования речи, сетевого трафика и иных данных с заранее неизвестной длиной. При достаточно частой смене ключа для выработки гаммы, поточные шифры обеспечивают достаточную стойкость.
На рисунке 1 приведена общая схема блочного алгоритма шифрования (блочного шифратора), а на рис. 2 — поточного. На рис. 1 показано, что кроме ключа шифрования, входным параметром алгоритма шифрования является вектор инициализации3. Вектор инициализации, как видно из его названия, является инициализирующей двоичной посылкой длиной равной блоку алгоритма. Вектор инициализации не является секретным элементом.
Рисунок 1. Схема блочного шифратора
Рисунок 2. Схема поточного шифратора
В частности, в мобильной связи, стандартом GSM предусмотрена возможность шифрования передаваемого голосового потока на участке от телефонного аппарата до базовой станции шифром A5, который является поточным. С алгоритмом A5 связана одна поучительная история. Изначально, описание алгоритма A5 было закрытым. Но из-за юридической ошибки компании-владельца алгоритма, его описание попало в Интернет и алгоритм был проанализирован. Его стойкость оказалась даже ниже стойкости DES. Осознав важность открытости алгоритмов для обеспечения их стойкости4, разработчики третьего поколения сети GSM пообещали сделать предлагаемые к использованию алгоритмы шифрования голоса достоянием широкой криптографической общественности. Пример показывает важность наличия открытого описания алгоритма даже для самих его разработчиков.
На сегодняшний день, алгоритмы с длиной ключа 64 и больше бит обеспечивают приемлемую стойкость. Однако, зачем тогда использовать ключи длиной 512 и более бит? Ответ таков — эти ключи от другого замка! В семидесятых же годах прошлого века (Привыкайте, господа! Двадцатый век, увы, кончился…) Диффи и Хэлман придумали абсолютно «новую» криптографию — криптографию с открытым ключом [1]. Еще ее называют «открытой криптографией» или «несимметричной криптографией».
Идея Диффи и Хеллмана состояла в следующем. Возьмем некоторое число и назовем его «секретным ключом». Произведем над ним некоторые действия, в результате которых получим другое число — «открытый ключ». Причем, выберем такие действия, что получить «открытый ключ» по известному «секретному» не будет требовать больших вычислительных ресурсов и времени, а обратное действие — вычисление по «открытому ключу» «секретного» окажется невозможным или очень длительным5. Не вдаваясь в математические подробности, отметим, что на современном персональном компьютере генерация открытого ключа по известному открытому ключу производится за время порядка секунды, а на обратное преобразование, в зависимости от длины ключа, может уйти до сотен (и, даже, тысяч) лет.
Рассматривая исходный текст как некоторое большое число, произведем его преобразование с использованием открытого ключа. В результате получим новое число, которое будем рассматривать как шифр. Имея в распоряжении секретный ключ и используя тот факт, что открытый ключ был получен из секретного специальным образом мы можем относительно быстро (в вычислительном плане) расшифровать текст. При этом, надо заметить, что, в целом, процесс шифрования-расшифрования с использованием пары ключей проходит на два-три порядка медленнее, чем шифрование-расшифрование того-же текста симметричным алгоритмом.
Казалось бы, при наличии быстрых и проверенных временем и практикой симметричных алгоритмов, зачем нужно использовать относительно медленную несимметричную криптографию? Нужно это за тем, что при использовании несимметричной криптографии радикально упрощается процедура распределения ключей между участниками обмена, а также становится возможным использование электронно-цифровой подписи (но, об этом — ниже). Самым известным несимметричным алгоритмом шифрования на сегодняшний день является алгоритм, предложенный Ривестом, Шамиром и Адельманом и носящий их имена — алгоритм RSA.
В самом деле, если участников обмена немного и все они недалеко друг от друга, то проблема распределения между ними симметричных ключей решается относительно просто. Для N участников обмена для связи «каждый с каждым», каждому участнику необходимо иметь N-1 ключей парной связи. При этом каждый участник обмена должен иметь безопасный канал обмена ключами с остальными участниками6. При увеличении числа участников обмена, задача распределения и замены скомпрометированных симметричных ключей может оказаться и вовсе неразрешимой, особенно тогда, когда участники обмена не доверяют друг другу.
Использование несимметричной криптографии радикально упрощает процесс распределения ключей. Открытый ключ потому и назвали «открытым», что он не представляет секрета. Можно создать общедоступный «справочник открытых ключей», куда можно поместить открытые ключи всех участников обмена. При этом, каждый владелец ключа волен отозвать свой ключ из справочника или заменить его — эта процедура не отразится на остальных участниках обмена. При этом возникает проблема подлинности ключа в справочнике, но и она разрешима.
Но, за удобство надо платить. В случае использования несимметричной криптографии платой является время и длины ключей. Характерной длиной ключей является при использовании несимметричной криптографии — 512—1024 бит. Сейчас, когда стали доступны высокопроизводительные вычислительные системы, набирает популярность использование 2048-битных ключей.
Можно ли сократить время шифрования, сохранив удобство несимметричной криптографии и добавив скорость блочных шифров? Оказывается можно. Обычно поступают так: вырабатывают случайную (или псевдослучайную) последовательность и используют ее в качестве одноразового (так называемого, сеансового) ключа для шифрования документа быстрым симметричным алгоритмом. Затем, используя несимметричный алгоритм, шифруют сеансовый ключ и передают его в зашифрованном виде вместе с документом. При расшифровании документа сначала расшифровывают сеансовый ключ, а затем и сам документ. Из-за того, что сеансовый ключ имеет малую длину, на его шифрование тратится немного времени. Используемые сейчас симметричные криптоалгоритмы имеют производительность порядка мегабайта в секунду (для программных реализаций) и десятков мегабайт в случае использования специализированных криптопроцессоров. Несимметричные алгоритмы показывают производительность от единиц до десятков килобайт в секунду, в зависимости от длины ключа. При длине сеансового ключа в 8—32 байта подобная гибридная криптосхема оказывается вполне эффективной.
Но, вернемся ненадолго к оценкам стойкости несимметричных алгоритмов и к проблемам, возникающим при их использовании. В настоящем обзоре мы постараемся обойтись без математических выкладок и формул7, однако, отметим, что сложность восстановления секретного ключа по открытому определяется сложностью разложения большого числа на простые сомножители (так называемая «задача факторизации») или сложностью задачи «дискретного логарифмирования». Задачу «дискретного логарифмирования» можно сформулировать так: взяли некоторое известное число, возвели его в неизвестную степень и остаток от деления этой экспоненты на некоторое известное большое простое число(так называемый модуль) сообщили в качестве результата. Все числа натуральные. Найти показатель степени. Характерные длины чисел, участвующих в вычислениях — несколько сотен десятичных разрядов (вот те самые 512—1024—2048 бит).
Сегодняшние результаты теории сложности гласят, что вычислительная сложность задачи дискретного логарифмирования экспоненциально зависит от величины модуля. Но никому еще не удалось строго доказать, что эта зависимость не может быть полиномиальной. Если вдруг, завтра, какой-нибудь гениальный математик найдет быстрый способ факторизации больших чисел8, то может случиться так, что мы окажемся без несимметричной криптографии. Хотя, вероятность этого события математики оценивают как близкую к нулевой. Используя несимметричную криптографию полезно помнить об этаком «дамокловом мече».
Хэш-функции и совсем чуть-чуть об электронной подписи
Как отмечено во введении криптографическими методами можно обеспечить не только конфиденциальность, но и проконтролировать целостность передаваемых или хранимых данных. Контроль целостности в основном производится путем расчета некоторой «контрольной суммы» данных. Математиками и инженерами, работающими в области передачи данных и теории кодирования разработано множество алгоритмов, рассчитывающих контрольные суммы передаваемых данных. Для многих приложений простой контрольной суммы (например, известного алгоритма crc32 или последовательного побайтного или пословного сложения исходного текста с известной константой) оказывается достаточно, особенно тогда, когда важна скорость обработки данных и не известен заранее объем данных (типичный случай — передача данных по каналам связи).
Проблема простых алгоритмов вычисления контрольной суммы в том, что достаточно легко подобрать несколько массивов данных, имеющих одинаковую контрольную сумму. Криптографически стойкие контрольные суммы вычисляются как результат применения к исходному тексту так называемой хэш-функции.
Одним из результатов теории сложности и теории функций является гипотеза о существовании односторонних функций. Под односторонней функцией понимается функция, определенная (например) на множестве натуральных чисел и не требующая для вычисления своего значения больших вычислительных ресурсов. Но, вычисление обратной функции(то есть, по известному значению функции восстановить значение аргумента) оказывается невозможно теоретически или (в крайнем случае) невозможно вычислительно.
Строгое существование односторонних функций пока не доказано. Поэтому, все используемые в настоящее время хэш-функции являются лишь «кандидатами» в односторонние функции, хотя и имеют достаточно хорошие свойства. Основными свойствами криптографически-»хорошей» хэш-функции является свойство рассеивания, свойство стойкости к коллизиям и свойство необратимости.
О необратимости мы уже говорили. Коллизией хэш-функции H называется ситуация при которой существуют два различных текста T1 и T2, но H(T1) = H(T2). Значение хэш-функции всегда имеет фиксированную длину, а на длину исходного текста не накладывается никаких ограничений. Из этого следует, что коллизии существуют. Требование стойкости к коллизиям обозначает, что для криптографически-»хорошей» хэш-функции для заданного текста T1 вычислительно невозможно найти текст T2, вызывающий коллизию.
Свойство рассеивания требует, чтобы минимальные изменения текста, подлежащего хэшированию, вызывали максимальные изменения в значении хэш-функции.
Основные, применяемые на сегодняшний день алгоритмы, реализующие хэш-функции являются MD2, MD4, MD5, SHA и его вариант SHA1, российский алгоритм, описываемый стандартом ГОСТ Р 34.11–94. Наиболее часто используются MD5, SHA1 и, в России, 34.11. Длина значения хэш-функции различна. Типичной длиной является 16—32 байта. В свете последних криптоаналитических результатов, вероятно, придется в недалеком будущем отказаться от MD5, так как, как было заявлено, «его стойкость к коллизиям опустилась и, вероятно, подошла близко к той отметке, после которой о стойкости вообще говорить не приходится».
В заголовок раздела вынесены слова «электронная подпись». В этом же номере опубликована статья целиком посвященная практическим и юридическим вопросам применения электронной подписи, поэтому подробно останавливаться на этом здесь не следует. Но не сказать об электронной подписи совсем было бы неправильно.
Дело в том, что без несимметричной криптографии электронной подписи не было бы вообще! Идея электронной подписи проста. Когда в разделе 1 описывался процесс шифрования с использованием несимметричного алгоритма, то отмечалось, что для зашифрования сообщения использовался открытый ключ, а для расшифрования — секретный. Но, в применении к шифрованию, ключи взаимозаменяемы. Можно зашифровать сообщение на своем секретном ключе, и, тогда, любой желающий сможет его расшифровать, используя открытый ключ. Это свойство несимметричных алгоритмов и используется при формировании и проверке электронно-цифровой подписи. Вообще, собственно ЭЦП документа — это его хэш-сумма, зашифрованная секретным ключом. Проверка ЭЦП документа сводится к вычислению хэш-суммы документа, расшифрованию хэш-суммы, содержащейся в подписи и сравнению двух величин. Если значения вычисленной и сохраненной в подписи хэш-сумм совпали, то считается, что подпись под документом верна.
Электронные водяные знаки
В разделе 3 рассматривался вопрос контроля целостности и обеспечения подлинности для электронного документа. Можно ли, используя криптографические технологии, обеспечить подлинность бумажного документа (завещания, доверенности, или иного юридического документа)? Традиционным подходом, является составление юридического документа на бумаге с водяными знаками или иными защитными элементами. Такой подход требует наличия специального бланка на момент составления документа или наличия типографии со специальным оборудованием. А что делать когда уже есть бумажный документ и есть желание защитить его от подделки9?
Известно, что каждый лист бумаги уникален по структуре образующих его волокон. С появлением недорогих сканеров, имеющих высокое разрешение и надежных технологий распознавания образов, стало возможно анализировать микроструктуру бумаги и использовать полученную информацию для обеспечения уникальности документа.
На сегодняшний день уже имеется проработанная технология доведенная до программно-аппаратного решения, обеспечивающая уникальность бумажных документов, использующая вышеизложенную идею.
Выбранный документ сканируется с высоким разрешением, и в отсканированном образе выделяются несколько особенностей (микровкрапления, характерные изгибы образующих волокон, и т.д.). В общем, тут напрашивается некоторая аналогия с технологией анализа отпечатков пальцев… И, кстати, неслучайно. Полученные данные преобразуются в двоичный массив, для которого вычисляется хэш-функция.
Полученное значение хэш-функции и является аналогом «водяного знака» и обеспечивает уникальность документа. Легко заметить, что предложенную технологию легко расширить и значение хэш-функции печатать прямо на бланке документа вместе с печатью нотариуса при нотариальном заверении документа10. Но такой подход требует соответствующего законодательства.
Попытки использовать «электронные водяные знаки» для небумажных носителей пока, к сожалению, не имели успеха. Самым известным примером может служить попытка защиты DVD-дисков от нелегального распространения. Идея разработчиков состояла в том, чтобы помимо шифрования информации на диске11, помещать на него некоторую информацию, которая терялась или переставала быть актуальной на копии. Практика показала, что попытки внедрить подобную технологию оказались неудачными.
Приведенный пример, кстати, отражает глубокое, и, к сожалению, часто не замечаемое различие традиционных документов и электронных. Суть этой разницы хорошо видна на примере применения электронной подписи. Программа проверки подписи, вообще говоря, может установить лишь то, что проверяемый документ был подписан с использованием ключа, имеющего указанный идентификатор и подпись верна (либо — не верна). Но по подписи нельзя определить кто-же, именно, воспользовался данным ключом.
Пусть, например, для вычисления «контрольной суммы» легального DVD-диска использовались такие его характеристики, как материал покрытия, данные, нанесенные штрих-кодом, код завода-изготовителя и серийный номер диска. Обладание алгоритмом вычисления такой «контрольной суммы» позволит потенциальным «пиратам» изготовить неограниченное число копий просто перевычисляя «контрольную сумму» в процессе изготовления для тех «болванок», которые имеются в их распоряжении. Любой DVD-проигрыватель воспримет так изготовленный диск как легальный!
Фил Циммерман, PGP и системы сертификации открытых ключей
В разделе 2 была отмечена проблема сохранения подлинности открытых ключей шифрования и подписи в случае их открытого хранения и распределения. При массовом распространении и использовании средств открытой криптографии, вопрос обеспечения подлинности ключей становится центральным и требует особого к себе внимания.
Традиционным методом удостоверения подлинности документа является его нотариальное заверение. Для обеспечения подлинности открытого ключа тоже было предложено использовать электронный аналог нотариального заверения — электронную подпись доверенного лица или группы лиц. Так что и в этом вопросе человечество снова не выдумало ничего принципиально нового. Подлинность открытого ключа и его атрибутов обеспечивается электронной подписью под ним, принадлежащей некоторому лицу или группе лиц, которым доверяют участники обмена. На практике это реализуется посредством, так называемых, «центров сертификации ключей» или «доверительных центров» (английский термин — Certification Authority, которому, к сожалению, тоже нет русского дословного аналога).
Прежде чем говорить о центрах сертификации открытых ключей и вообще об инфраструктуре открытых ключей, следует сказать несколько слов о пионере «открытой» криптографии Филе Циммермане. Сказать о нем следует не только потому, что он сделал криптографические методы доступными для широкого круга пользователей, но и потому, что он придумал оригинальную идею обеспечения подлинности открытых ключей.
Напомним, что Фил Циммерман, бывший сотрудник АНБ, в 1992 году написал и сделал широко доступной программу PGP (Pretty Good Privacy. Название можно перевести на русский язык как «Довольно Хорошая Секретность»12), предназначенную для шифрования и электронной подписи сообщений. В жизни PGP и самого Фила Циммермана был и «гнев спецслужб» и признание «широких масс пользователей». Было время, когда Циммерман находился под следствием, якобы за «разглашение государственной тайны». Захватывающая история появления и развития PGP не есть тема для этой статьи. Нас будут интересовать оригинальные, если угодно, общественно-технологические идеи, реализованные в PGP.
PGP — это программа, которая позволяет шифровать и подписывать электронные документы с использованием нескольких криптографических алгоритмов. При этом, для шифрования используется «гибридная» схема: информация шифруется симметричным алгоритмом на сеансовом ключе, а сеансовый ключ зашифровывается несимметричным алгоритмом на открытом ключе получателя сообщения. Поскольку Фил Циммерман одной из задач PGP считал бесконтрольное со стороны государства использование криптографических технологий, он предложил идею взаимной сертификации открытых ключей.
Идея взаимной сертификации открытых ключей реализуется следующим образом. Вы, как пользователь программы PGP, создаете свою ключевую пару. Далее, если Вы хотите передавать зашифрованную информацию другим людям, то Вам следует позаботится о безопасном способе передачи Вашего открытого ключа Вашим корреспондентам. Например, таковым способом может быть личная встреча. Вы и Ваш корреспондент передаете друг другу открытые ключи. Вы и Ваш корреспондент можете подписать открытые ключи друг друга и разместить полученные «сертификаты» на свободно-доступном сервере. Далее. Подписей под открытым ключом может быть несколько и каждой из них может быть присвоен определенный «уровень доверия». При этом, уровень доверия определяет конечный потребитель ключа. То есть, используя принцип «друг моего друга — мой друг», можно организовать общение уже Ваших друзей с Вашим корреспондентом. Если Ваши друзья Вам доверяют полностью, то Вашей подписи под ключом Вашего корреспондента для них будет достаточно для его использования.
В технологии PGP неявно использовался принцип «взаимного доверия»13. Если я, как пользователь PGP заинтересован в увеличении числа корреспондентов, с которыми я буду в состоянии поддерживать шифрованное сообщение, то я постараюсь найти больше людей, которые мне доверяют с целью сертификации моего ключа. А те, в свою очередь, будут искать своих доверителей. В результате, совершенно незнакомые люди, желающие организовать обмен зашифрованными сообщениями могут с сервера ключей PGP получить открытые ключи с большим количеством подписей незнакомых друг с другом людей14. С большой вероятностью, среди подписей в сертификате окажется или подпись человека, которому эти люди доверяют полностью или несколько подписей людей, доверие к которым не столь безгранично, но все же, имеет место быть. При этом, каждый из корреспондентов волен сам расставлять приоритеты подписей.
И, все-таки, Филу Циммерману не удалось полностью реализовать свою идею. Система «взаимной сертификации, основанной на доверии» не выдержала испытание реальностью. PGP, конечно, продолжает применяться и имеет своих сторонников, но на корпоративном уровне (а в некоторых странах — и на государственном), система сертификации ключей a-la PGP полностью вытеснена доверительными центрами или центрами сертификации открытых ключей. Общественный Институт мировых судей и нотариусов не нов, так что, создателям центров сертификации не пришлось выдумывать ничего нового. Вместо взаимной сертификации ключей был предложен механизм сертификации открытых ключей в «электронном нотариате».
Для превращения открытого ключа в сертификат открытого ключа к нему добавляются реквизиты владельца ключа, реквизиты «доверительного центра», а также сроки действия ключа и другая необходимая информация. Вся информация кодируется специальным образом для обеспечения однозначности и подписывается на секретном ключе доверительного центра. Журнал «Jet Info» уже публиковал статью об организации доверительных центров (см [9]), содержащую, в частности, определения основным терминам, так что, в настоящем обзоре мы не будем останавливаться на терминологии, общих принципах и стандартах организации центров сертификации.
Юридический статус доверительного центра может быть любым. От официально-государственного до корпоративного или частного. Многие крупные западные корпорации уже имеют свои корпоративные центры сертификации для организации внутрифирменного обмена конфиденциальной информацией. Созданы и успешно функционируют независимые центры сертификации, например “VerySign, Inc”. Собственные публичные центры сертификации созданы компаниями Microsoft15 и American Express. Создание и разворачивание российских центров сертификации — дело недалекого будущего.
В настоящее время в Государственной Думе Российской Федерации рассматриваются несколько законопроектов, так или иначе регламентирующих использование электронно-цифровой подписи. Один из законопроектов так и называется — «Об использовании электронно-цифровой подписи». Остальные — «Об электронной коммерции» и «Об электронной торговле».
Все законопроекты предполагают разворачивание центров сертификации открытых ключей на федеральном уровне. При этом, ни один из законопроектов не затрагивает вопрос ведомственной принадлежности центров сертификации, а так же не описывает круг лиц и/или организаций, которые будут временно в обязательном порядке пользоваться услугами создаваемых центров сертификации. Пока рано говорить о том, что нас, как Российских потребителей и разработчиков информационных технологий, ждет в случае утверждения одного из рассматриваемых проектов в качестве закона.
Системы идентификации и аутентификации
Во многих приложениях, задача идентификации и аутентификации доступа человека или программы к некоторому ресурсу является даже более важной, чем задача обеспечения конфиденциальности. Практически все многопользовательские и сетевые операционные системы требуют аутентификации пользователя. Равно как банкоматы и кассовые терминалы. С развитием интернета и безбумажных технологий, число приложений, которые требуют аутентификации пользователей будет только возрастать.
Итак, сначала — определения.
В дальнейшем, под субъектом будем понимать пользователя или пользовательского агента(программу), осуществляющего доступ к некоторому ресурсу. Под информационной системой будем понимать отдельный компьютер или компьютерную сеть или иное электронное устройство, доступ к которому регламентируется определенной системой полномочий и/или прав. Задачей систем идентификации и аутентификации является определение и верификация набора полномочий субъекта при доступе к информационной системе.
Идентификацией субъекта при доступе к информационной системе называется процесс сопоставления его с некоторой хранимой системой характеристикой субъекта — идентификатором. В дальнейшем, идентификатор субъекта используется для предоставления субъекту определенного уровня прав и полномочий при использовании информационной системой.
Аутентификацией субъекта называется процедура верификации принадлежности идентификатора субъекту. Аутентификация производится на основании того или иного секретного элемента (аутентификатора), которым располагают как субъект, так и информационной система. Обычно информационная система располагает не самим секретным элементом, но некоторой информацией о нем, на основании которой принимается решение об адекватности субъекта идентификатору.
Для того, чтобы эта сухая теория стала более понятной, рассмотрим конкретный пример. Перед началом интерактивного сеанса работы большинство операционных систем запрашивают у пользователя его имя и пароль. Введенное имя является идентификатором пользователя, а его пароль — аутентификатором16. Операционная система обычно хранит не сам пароль, а его хэш-сумму, обеспечивая, тем самым, практическую невозможность восстановления пароля (см. раздел 2).
Использование пары «имя пользователя-пароль» для аутентификации субъектов является наиболее распространенным, но не единственным. Принципиально разных методов аутентификации, на самом деле немного. Один класс методов аутентификации основывается на том, что аутентифицируемый субъект должен иметь некоторый секретный элемент(пароль, секретный ключ или специальный аутентификационный токен). Другой класс методов аутентификации применим в основном для аутентификации людей. Он основывается на наличии уникальных физических свойствах самого человека (отпечатки пальцев, форма кисти руки, голос, радужная оболочка глаза). У каждого класса методов есть как достоинства, так и недостатки. Сравнением обоих классов методов мы займемся чуть позже, а пока рассмотрим подробнее разные методы аутентификации.
Алгоритмически процедура аутентификации представляется как последовательная передача одной или нескольких информационных посылок между субъектом и информационной системой и промежуточная их обработка обеими сторонами. В результате этих действий обе стороны обмена должны удостоверится, что они являются теми, за кого себя выдают.
Про аутентификацию секретным элементом мы уже говорили. Другим распространенным методом аутентификации является аутентификация с использованием сертификатов открытого ключа. Разработано и применяется несколько таких алгоритмов. Обычно аутентификацию с использованием ключей совмещают с процедурой генерации парного симметричного ключа с целью его дальнейшего использования для обмена сообщениями. Наиболее известной процедурой взаимной аутентификации пары абонентов является метод Диффи-Хеллмана. Он широко описан. Как в статьях самих авторов, так и в независимых работах ([4], [8]). Суть метода состоит в том, что каждый из участников обмена путем математических преобразований своего секретного ключа и открытого ключа своего корреспондента и обмена несекретными посылками получают независимо друг от друга секретное число. Поскольку секретный и открытый ключи абонентов связаны некоторым соотношением, то возможно подобрать преобразования ключей так, что полученные обоими абонентами числа совпадают. Полученное секретное число можно использовать в качестве разделяемого секрета.
Другим, интересным методом аутентификации является использование аутентификационного токена. Аутентификационный токен представляет собой физическое устройство, обычно небольших размеров для удобства его ношения с собой. Это может быть смарт-карта или недавно появившиеся устройства, подключаемые к порту USB и выполненные в виде брелока. Обычно аутентификационный токен содержит «на борту» энергонезависимую память и специализированный процессор. Некоторые устройства дополнительно имеют встроенный аппаратный генератор случайных чисел или таймер(часы реального времени). Процессор токена, в зависимости от мощности способен выполнять самые различные операции. Есть процессоры, способные выполнять шифрование данных алгоритмом DES или вычислять хэш-суммы c использованием ключа (HMAC-MD5). Специализированный токен позволяет производить криптографические преобразования без извлечения ключа из памяти токена и передавать между токеном и компьютером и информационной системой только несекретные или зашифрованные данные, что дополнительно защищает протокол аутентификации от перехвата ключей. Обычно программный доступ к токену возможен только после ввода PIN-кода, известного только владельцу аутентификационного токена. Дополнительные возможности токенов позволяют реализовать более надежные протоколы аутентификации.
Интересную технологию аутентификации, основанную на «одноразовых паролях», предложила компания Security Dynamics (ныне — подразделение компании RSA Security). Технология носит название SecureID. Одноразовыми паролями являются псевдослучайные числа. Генератором последовательности псевдослучайных чисел является аутентификационный токен. RSA Security предлагает несколько вариантов токена — сматр-карту, калькулятор с возможностью ввода PIN-кода, брелоки. Каждый токен имеет уникальный серийный номер. Токен генерирует новое псевдослучайное число по одному в минуту. Период17 генератора псевдослучайных чисел таков, что время использования одного токена составляет два года.
Для аутентификации по технологии SecureID, информационная система должна содержать в себе аутентификационный сервер SecureID и базу данных, сопоставляющую имена аутентифицируемых пользователей и серийные номера токенов. Запрос на аутентификацию от пользователя состоит из его имени и случайного числа, считываемого пользователем с токена. Сервер, на основании полученного от пользователя числа и серийного номера токена, решает принадлежит ли данное число последовательности, генерируемой именно этим токеном или нет.
Указанные и многие другие методы аутентификации страдают одним недостатком — они, на самом деле, аутентифицируют не конкретного субъекта, а фиксируют тот факт, что аутентификатор субъекта соответствует его идентификатору. То есть, все перечисленные методы не защищены от компрометации аутентификатора. Биометрические методы идентификации или аутентификации свободны от этого недостатка. Как уже отмечалось, биометрические методы основываются на анализе уникальных характеристик самого человека.
Биометрическая характеристика может являться как идентификатором (как, собственно, дактилоскопия рассматривает отпечаток пальца как идентификатор личности), так и аутентификатором (пользователь вводит свое имя и подтверждает его, посмотрев в окуляр анализатора радужной оболочки глаза). Для некоторых приложений(например, для контроля доступа в помещения) идентификации оказывается достаточно. Для некоторых («параноидальных») случаев требуется ввести имя пользователя, его отпечаток пальца да еще и произнести кодовую фразу.
Наиболее распространенным методом (и дешевым) биометрической идентификации или аутентификации является анализ отпечатка пальца. При регистрации пользователя, в базу данных аутентификационного сервера помещается свертка — некоторая хэш-сумма отсканированного отпечатка пальца. В зависимости от реализации, длина свертки составляет 200—400 байт.
Но, у биометрических методов аутентификации личности есть один серьезный недостаток (кроме относительно высокой стоимости). В случае компрометации аутентификационного токена, ключа или пароля субъект может отказаться от его использования и получить новый аутентификатор. В случае компрометации электронного представления биометрического аутентификатора, человек может просто «выпасть» из процесса аутентификации. В случае использования биометрической характеристики как идентификатора личности, угрозы компрометации нет.
Немного о криптоанализе
Криптоанализом называется область деятельности, направленная на раскрытие чужих зашифрованных сообщений при неизвестном ключе шифрования и/или алгоритме. Трудно определить криптоанализ только как науку. Ему присущи и элементы искусства, и везения и, даже, «шаманства».
О «нетрадиционности» работы криптоаналитиков говорит такой, например, «случай из жизни», рассказанный автору этой статьи отставным сотрудником еще Советской криптоаналитической службы. Дело было давно, когда еще компьютеров-то толком не было. В службу попала шифрованная записка, переданная из мест заключения на «волю». Записка попала на стол к одному из сотрудников, известному своей крайней аккуратностью. Человек тщательно разгладил записку руками и погрузился в анализ. Шифр не оказался для него очень сложным. После некоторого размышления над запиской этот человек первым делом встал из-за стола, подошел к умывальнику, тщательно вымыл руки с мылом, потом протер руки и стол спиртом. В записке сообщалось, что ее автор болен сифилисом.
Прежде чем говорить о криптоанализе, следует сказать, что современная криптография исходит из принципа, что стойкость криптографического преобразования должна обеспечиваться только сохранением в тайне ключа. При проектировании криптографической системы изначально предполагается, что алгоритм криптографического преобразования является открытым (или, как минимум, известен вероятному противнику), а ключ, наоборот, надежно защищен. Стойкость алгоритма шифрования обычно оценивают в количестве типовых операций, требующихся для расшифрования зашифрованного сообщения и/или подбора ключа шифрования наилучшим алгоритмом.
Типичным, и самым распространенным, примером применения криптоанализа людьми далекими от криптологии, является «подбор пароля». Трудно найти человека (по крайней мере в России), имеющего отношение к информационным технологиям и ни разу в жизни не столкнувшегося с проблемой «взлома» пароля для доступа к защищенному архиву или документу в формате Microsoft Word. Ну а уж подбор пароля суперпользователя практически во всех используемых сейчас операционных системах — вообще «притча во язытцах»!
Простейшим и самым длительным методом подбора пароля является полный перебор всех возможных вариантов. Способ малоэффективный, а часто и неосуществимый в силу временных ограничений. Криптоанализ ставит своей целью найти методы расшифрования документа и/или нахождения ключа шифрования за время меньшее, чем время полного перебора.
Помимо простого перебора, или, как его еще называют, «метода грубой силы», криптоанализ располагает другими достаточно развитыми методиками (см, например [3] ). Систематического изложения криптоаналитической техники в открытой печати почти нет, ибо не секрет, что основные криптоаналитические исследования практически во всех странах проводятся спецслужбами, а спецслужбы всех стран сходны в стремлении скрывать свои методы работы.
Как правило, все известные методы криптоанализа предполагают у криптоаналитика наличие кроме шифр-текста еще и соответствующего ему открытого текста или его фрагментов. В лабораторных условиях это требование удовлетворяется автоматически, а в случае реальной атаки на шифр относительно исходного текста делаются правдоподобные заключения (например, что зашифрованные письма начинаются со слов “Dear Sir!”) или структура или содержание открытого текста узнается другими методами.
В последнее время, в связи с развитием интернета, стало возможно эффективно использовать «метод грубой силы» путем распараллеливания операций. Реализуется такой подход обычно следующим образом. Где-то в интернете устанавливается сервер, с которого любой желающий может загрузить программу, выполняющую расшифрование тестового сообщения путем перебора ключей. Программа обычно поставляется как в виде исходных текстов, так и скомпилированной для наиболее распространенных операционных систем. После запуска, программа устанавливает соединение с сервером, получает от него набор ключей для перебора, и, после окончания работы, сообщает на сервер результат.
Программа может работать в фоновом режиме или активироваться по ночам. Известны программы для перебора ключей, реализованные в виде программ сохранения экрана (screen savers). Программы могут заниматься не только «вскрытием» шифров, но и, например, подбором двух текстов, имеющих одинаковое значение хэш-функции, вычисленной указанным алгоритмом.
При таком подходе к «вскрытию» шифра встает вопрос об однозначности расшифрования. В самом деле, может ведь получиться так, что для данного шифр-текста существует два и более ключей, применение которых позволяет при расшифровании получить «осмысленный» текст. Оказывается, что начиная с некоторой длины исходного сообщения, это утверждение становится ложным. Для применяемых в настоящее время криптосистем, сообщение длиной 60–100 байт уже расшифровывается однозначно.
Обычно метод «распределенного взлома» сейчас используют или производители криптографического программного обеспечения для тестирования своих продуктов или различные некоммерческие организации для выяснения криптостойкости применяемых алгоритмов (См., например http://distributed.net). Самое интересное, что описанный способ «распределенного взлома» опирающийся исключительно на энтузиазм участников, уже дал потрясающие результаты.
Заключение
Естественно, что настоящий обзор не претендует на полноту. За пределами обзора остались такие области криптографических исследований как квантовая криптография, криптографические протоколы, хэш-суммы с ключом, распределенные системы аутентификации или методы генерации псевдослучайных последовательностей. Некоторые вопросы уже были освящены в нашем журнале и возможно, что освещение остальных тем — дело недалекого будущего.
Литература
[1] W. Diffie, M.E Hellman — New directions in cryptography IEEE Transactions of Information Theory, v. IT-22, pp. 644–654, Nov 1976
[2] Жиль Брассар — Современная криптология — М., «ПОЛИМЕД», 1999
[3] Bruce Schneier — Self-Study Course in Block Cipher Cryptanalysis Cryptologia, v.24, n.1, pp. 18–34, Jan 2000
[4] Bruce Schneier — Applied Cryptography, Second edition: Protocols, Algorithms, and Source Code in C — John Wiley & Sons. Inc., 1996
[5] Donald R. Richards — Biometric Identification Handbook of information security management — Auerbach, pp. 5–26, 1999
[6] Beresford N. Parlett — Some basic information of information-based complexity theory Bulletin of the AMS, v. 26, n. 1, pp. 3–27, January 1992
[7] H. Krawczyk, M. Bellare, R. Canetti — Keyed-Hashing for Message Authentication, RFC 2104, February 1997
[8] E. Rescorla — Diffie-Hellman Key Agreement Method, RFC 2631, June 1999
[9] Виктор Горбатов, Ольга Полянская — Доверенные центры как звено системы обеспечения безопасности корпоративных информационных ресурсов — Jet Info, N 11(78), стр 12–206, 1999
[10] Надежда Вьюкова, Владимир Галатенко — Сервер аутентификации Kerberos — Jet Info, N 12–13(19–20), 1996
1 National Security Agency. Оно же — Агентство Национальной Безопасности. Государственная криптографическая и криптоаналитическая служба США.
2 Брюс Шнаер в своей книге «Прикладная криптография» [4] приводит следующие данные. В 1976 и 1977 году Диффи и Хэллман высказали утверждение о том, что создание специализированного параллельного компьютера, способного подобрать ключ за один день, обойдется в 20 миллионов долларов. В 1981 году Диффи изменил собственную оценку в сторону ухудшения прогнозов — компьютер, способный подобрать ключ за два дня обойдется в 50 миллионов долларов.
3 В России принят термин начальное заполнение
4 В смысле возможности своевременного криптоанализа независимыми экспертами и выявления потенциальных слабостей алгоритма
5 Анализом и попыткой решения вычислительно-сложных задач занимаются сейчас математики, разрабатывающие «Информационную Теорию Сложности» (Information-based Complexity Theory), успеху которой во многом обязана современная криптография
6 Самым простым вариантом распределения ключей является личная встреча. Самым дорогим и надежным, по крайней мере в России, — Государственная Фельдъегерьская Служба.
7 Возможно, в нашем информационном бюллетене появятся другие, более специальные статьи на эту тему
8 или «формулу простого числа», безуспешным поиском которой занимались еще Леонард Эйлер и другие Великие Математики
9 При сегодняшнем уровне технологий полноцветной печати подделка нотариально заверенных документов или изготовление копий документов не представляет сложностей.
10 Можно даже использовать хэш-функцию с ключом (см., например, [7]) или электронно-цифровую подпись.
11 Тема шифрования DVD сама по себе заслуживает отдельного внимания, как пример неудачного применения криптографии и демонстрации порочности принципа «безопасность через неизвестность»
12 К сожалению, в русском языке нет специального термина адекватного английскому Privacy. Слово “privacy” на русский язык переводится, в зависимости от контекста, и как «секретность» и как «право на частную жизнь» или «защита персональной информации».
13 Как тут не вспомнить многочисленные «Общества взаимного кредита» из «Золотого Теленка» Ильфа и Петрова?
14 Статистика утверждает, что в среднем, каждый житель Земли знаком с любым другим жителем Земли через цепочку длиной в шесть человек
15 возможно, из-за появившейся в Windows 2000 возможности защиты программного кода драйверов электронной подписью
16 Строго говоря, в таких операционных системах как UNIX или VMS, идентификатором пользователя является число, задаваемое при создании учетной записи пользователя, а имя пользователя является лишь уникальным атрибутом учетной записи.
17 Периодом генератора ПСЧ называется максимальная длина последовательности ПСЧ, после порождения которой, генератор начнет производить повторяющиеся числа.
Jet Info, N 3(94), 2001