Цикл повторяется до последнего блока информации. Получившееся в результате этих преобразований 64-битное содержимое регистров N1 и N2 или его часть и называется имитоприставкой. Размер имитоприставки выбирается исходя из требуемой достоверности сообщений: при длине имитоприставки r бит вероятность, что изменение сообщения останется незамеченным, равна 2^.Чаще всего используется 32-битная имитоприставка, то есть половина содержимого регистров. Этого достаточно, поскольку, как любая контрольная сумма, имитоприставка предназначена прежде всего для защиты от случайных искажений информации. Для защиты же от преднамеренной модификации данных применяются другие криптографические методы – в первую очередь электронная цифровая подпись.
При обмене информацией имитоприставка служит своего рода дополнительным средством контроля. Она вычисляется для открытого текста при зашифровке какой-либо информации и посылается вместе с шифртекстом. После расшифровки вычисляется новое значение имитоприставки, которое сравнивается с присланной. Если значения не совпадают, значит, шифртекст был искажен при передаче или при расшифровке использовались неверные ключи. Особенно полезна имитоприставка для проверки правильности расшифровки ключевой информации при использовании многоключевых схем.
Алгоритм ГОСТ 28147-89 считается достаточно сильным – в настоящее время для его раскрытия не существует более эффективных методов, чем упомянутый выше Brute Force. Высокая стойкость алгоритма достигается в первую очередь за счет большой длины ключа, равной 256 бит. К тому же при использовании секретной синхропосылки эффективная длина ключа увеличивается до 320 бит, а засекречивание таблицы замен прибавляет дополнительные биты. Кроме того, криптостойкость ГОСТ 28147-89 уже при 32 раундах можно считать более чем достаточной, и это притом, что полный эффект рассеивания входных данных достигается уже после восьми раундов.
На сегодняшний день алгоритм ГОСТ 28147-89 полностью удовлетворяет всем требованиям криптографии и обладает теми же достоинствами, что и другие алгоритмы, но лишен их недостатков. К очевидным достоинствам этого алгоритма можно отнести:
♦ эффективность реализации и, соответственно, высокое быстродействие на современных компьютерах;
♦ бесперспективность силовой атаки (XSL-атаки в учет не берутся, так как их эффективность на данный момент полностью не доказана).
Однако же, как оно всегда и бывает, алгоритм не лишен недостатков: тривиально доказывается, что у ГОСТа существуют "слабые" ключи и S-блоки, но в стандарте не описываются критерии выбора и отсева "слабых". Кроме того, стандарт не специфицирует алгоритм генерации S-блоков (таблицы замен). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой – поднимает ряд проблем: нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен; реализации алгоритма от различных производителей могут использовать разные таблицы замен и могут быть несовместимы между собой.
Кратко рассмотрим некоторые другие алгоритмы симметричного шифрования.
Blowfish. Blowfish представляет собой 64-битный блочный шифр, разработанный Шнайером (Schneier) в 1993 году. Этот шифр, как и многие другие, основан на алгоритме сети Фейштеля. Отдельный раунд шифрования данного алгоритма состоит из зависимой от ключа перестановки и зависимой от ключа с данными замены. Все операции основаны на операциях XOR и прибавлениях к 32-битным словам (XORs and additions on 32-bit words). Ключ имеет переменную длину (максимальная длина 448 бит) и используется для генерации нескольких подключевых массивов (subkey arrays). Шифр был создан специально для 32-битных машин и существенно быстрее ранее рассмотренного нами алгоритма DES.
IDEA (International Data Encryption Algorithm) был разработан К. Лейем (Lai) и Д. Месси (Massey) в конце 1980-х годов. Это шифр, состоящий из 64-битных повторяющихся блоков со 128-битным ключом и восемью раундами. Следует отметить, что, в отличие от ранее нами рассмотренных алгоритмов шифрования, IDEA не основан на сети Фейштеля, хотя процесс дешифрования аналогичен процессу шифрования. IDEA был сконструирован с учетом его легкого воплощения как программно, так и аппаратно. Ко всему прочему безопасность IDEA основывается на использовании трех несовместимых типов арифметических операций над 16-битными словами.
Один из принципов создания IDEA заключался в том, чтобы максимально затруднить его дифференциальный криптоанализ, что в настоящее время выражается отсутствием алгебраически слабых мест алгоритма. Даже не смотря на то что найденный неким "Daemen" обширный класс (2) слабых ключей теоретически может скомпрометировать алгоритм, IDEA остается достаточно надежным алгоритмом, так как существует 2 возможных вариантов ключей, что делает его взлом трудно осуществимым.
RC5 представляет собой довольно быстрый блочный шифр, разработанный Ривестом (Ronald Linn Rivest) специально для "RSA Data Security". Этот алгоритм параметричен, то есть его блок, длинна ключа и количество проходов (раундов) переменны.
Размер блока может равняться 32, 64 или 128 бит. Количество проходов может варьироваться от 0 до 2048 бит. Параметричность подобного рода делает RC5 необычайно гибким и эффективным алгоритмом в своем классе.
Исключительная простота RC5 делает его простым в использовании. RC5 с размером блока в 64 бита и 12 или более проходами обеспечивает хорошую стойкость против дифференциального и линейного криптоанализов.
Асимметричное шифрование
В отличие от алгоритмов симметричного шифрования, где используется один и тот же ключ как для расшифровки, так и для зашифровки, алгоритмы асимметричного шифрования используют открытый (для зашифровки) и закрытый, или секретный (для расшифровки), ключи.
На практике один ключ называют секретным, а другой – открытым. Секретный ключ содержится в тайне владельцем пары ключей. Открытый ключ передается публично в открытом виде. Следует отметить тот факт, что если у абонента имеется один из пары ключей, то другой ключ вычислить невозможно.
Открытый ключ вычисляется из секретного: kl = f(k2). Асимметричные алгоритмы шифрования основаны на применении однонаправленных функций. Согласно определению функция y = f(x) является однонаправленной, если ее можно легко вычислить для всех возможных вариантов x, а для большинства возможных значений y достаточно сложно вычислить такое значение x, при котором y = f(x) .
Примером однонаправленной функции может служить умножение двух больших чисел: N = S х G. Само по себе, с точки зрения математики, такое умножение представляет собой простую операцию. Однако обратная операция (разложение N на два больших множителя), называемая также факторизацией, по современным временным оценкам представляет собой достаточно сложную математическую задачу.
Ну что ж, рассмотрим некоторые из алгоритмов асимметричного шифрования.
Алгоритм Диффи-Хеллмана. В 1976 году Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) разработали свою систему шифрования с открытым ключом. Система Диффи-Хеллмана разрабатывалась для решения проблемы распространения ключей при использовании систем шифрования с секретными ключами. Идея заключалась в том, чтобы применять безопасный метод согласования секретного ключа без передачи ключа каким-либо другим способом. Следовательно, необходимо было найти безопасный способ получения секретного ключа с помощью того же метода связи, для которого разрабатывалась защита. Суть алгоритма Диффи-Хеллмана заключается в следующем. Предположим, что двум точкам (S1 и S2) требуется установить между собой безопасное соединение, для которого необходимо согласовать ключ шифрования.
♦ S1 и S2 принимают к использованию два больших целых числа a и b, причем 1 < a < b.
♦ S1 выбирает случайное число i и вычисляет I = ai × mod b. S1 передает I абоненту S2.
♦ S2 выбирает случайное число j и вычисляет J = aj × mod b. S2 передает J абоненту S1 .
♦ S1 вычисляет k1 = Ji × mod b.
♦ S2 вычисляет k2 = Ij × mod b.
Имеем k1 = k2 = ai × j х mod b, следовательно, k1 и k2 являются секретными ключами, предназначенными для использования при передаче других данных.
Даже если допустить, что злоумышленнику каким-то образом удастся прослушать передаваемый трафик, то ему будут известны a, b, I и J. Тем не менее остаются в секрете i и j. Уровень безопасности системы зависит от сложности нахождения i при известном I = ai × mod b. Эта задача называется задачей дискретного логарифмирования и считается очень сложной (то есть с помощью современного вычислительного оборудования ее решить практически невозможно), если числа очень велики. Следовательно, a и b необходимо выбирать очень тщательно. Например, оба числа b и (b – 1)/2 должны быть простыми и иметь длину не менее 512 бит. Рекомендуемая длина чисел составляет 1024 бита.
Алгоритм RSA был разработан в 1978 году тремя соавторами и получил свое название по первым буквам фамилий разработчиков (Rivest, Shamir, Adleman). В основе стойкости алгоритма стоит сложность факторизации больших чисел и вычисления дискретных логарифмов. Основной параметр алгоритма RSA – модуль системы N, по которому проводятся все вычисления в системе, а N = R х S (R и S – секретные случайные простые большие числа, обычно одинаковой размерности).
Секретный ключ k2 выбирается случайным образом и должен соответствовать следующим условиям: 1 < k2 < F(N) и НОД (k2, F(N))= 1, где НОД – наибольший общий делитель. Иными словами, k1 должен быть взаимно простым со значением функции Эйлера F(N) , причем последнее равно количеству положительных целых чисел в диапазоне от 1 до N, взаимно простых с N, и вычисляется как F(N) = (R – 1) × (S – 1) .
Открытый ключ kl вычисляется из соотношения (k2 х kl) = 1 × mod F(N). Для этого используется обобщенный алгоритм Евклида (алгоритм вычисления наибольшего общего делителя). Зашифровка блока данных M по алгоритму RSA выполняется следующим образом: C = Mkl × mod N. Поскольку в реальной криптосистеме с использованием RSA число k1 весьма велико (в настоящее время его размерность может доходить до 2048 бит), прямое вычисление Mk1 нереально. Для его получения применяется комбинация многократного возведения M в квадрат с перемножением результатов. Обращение данной функции при больших размерностях неосуществимо; иными словами, невозможно найти M по известным C, N и kl. Однако, имея секретный ключ k2, при помощи несложных преобразований можно вычислить M = Ck2 × mod N. Очевидно, что, помимо собственно секретного ключа, необходимо обеспечивать секретность параметров R и S. Если злоумышленник добудет их значения, то сможет вычислить и секретный ключ k2.
В настоящее время криптосистема RSA применяется в самых различных продуктах, на различных платформах и во многих отраслях. Достаточно вспомнить ее использование в операционных системах Microsoft, Apple, Sun и Novell, чтобы представить всю "грандиозность" RSA. В аппаратной составляющей алгоритм RSA широко используется в защищенных телефонах, на сетевых платах Ethernet, на смарт-картах, в криптографическом оборудовании Zaxus (Racal). Ко всему прочему, алгоритм входит в состав всех основных протоколов для защищенных коммуникаций Интернет, в том числе S/MIME, SSL и S/WAN, а также используется во многих правительственных учреждениях, государственных лабораториях и университетах. На осень 2000 года технологии с применением алгоритма RSA были лицензированы более чем 700 компаниями.
Алгоритм Эль-Гамаля. Эль-Гамаль (Taher Elgamal) разработал вариант системы Диффи-Хеллмана. Он усовершенствовал этот алгоритм и получил один алгоритм для шифрования и один для обеспечения аутентификации. Алгоритм Эль-Гамаля не был запатентован (в отличие от RSA) и таким образом стал более дешевой альтернативой, так как не требовалась уплата лицензионных взносов. Поскольку этот алгоритм базируется на системе Диффи-Хеллмана, то его стойкость обеспечивается сложностью решения все той же задачи дискретного логарифмирования.
Алгоритм цифровой подписи (Digital Signature Algorithm). Алгоритм DSA был разработан правительством США как стандартный алгоритм для цифровых подписей (см. разд. 2.3). Данный алгоритм базируется на системе Эль-Гамаля, но позволяет осуществлять только аутентификацию. Конфиденциальность этим алгоритмом не обеспечивается.
Шифрование с использованием эллиптических кривых. Эллиптические кривые были предложены для использования в системах шифрования в 1985 году. Системы шифрования с использованием эллиптических кривых (ECC) основываются на отличной от факторизации или дискретного логарифмирования математической задаче. Данная задача заключается в следующем: имея две точки A и B на эллиптической кривой, такие что A = kB, очень трудно определить целое число k. Несмотря на некоторую "экзотичность", использование ECC перед алгоритмом RSA или Диффи-Хеллмана в ряде случаев дает существенное преимущество. Самым большим из таких преимуществ является то, что ключи могут иметь существенно меньшую длину (по причине сложности задачи). И это без потери стойкости! Как результат, вычисления производятся быстрее с сохранением того же уровня безопасности. Так, безопасность, обеспечиваемая 160-битным ключом ECC, может быть приравнена к 1024-битному ключу RSA.
Достоинства и недостатки симметричного и асимметричного методов шифрования
На сегодняшний день в сфере ИБ широко представлены системы как с симметричным шифрованием, так и с асимметричным. Каждый из алгоритмов имеет свои преимущества и недостатки, о которых нельзя не сказать.
Основной недостаток симметричного шифрования заключается в необходимости публичной передачи ключей – "из рук в руки". На этот недостаток нельзя не обратить внимание, так как при такой системе становится практически невозможным использование симметричного шифрования с неограниченным количеством участников. В остальном же алгоритм симметричного шифрования можно считать достаточно проработанным и эффективным, с минимальным количеством недостатков, особенно на фоне асимметричного шифрования. Недостатки последнего не столь значительны, чтобы говорить о том, что алгоритм чем-то плох, но тем не менее.
Первый недостаток ассиметричного шифрования заключается в низкой скорости выполнения операций зашифровки и расшифровки, что обусловлено необходимостью обработки ресурсоемких операций. Как следствие, требования к аппаратной составляющей такой системы часто бывают неприемлемы.
Другой недостаток – уже чисто теоретический, и заключается он в том, что математически криптостойкость алгоритмов асимметричного шифрования пока еще не доказана.
Дополнительные проблемы возникают и при защите открытых ключей от подмены, ведь достаточно просто подменить открытый ключ легального пользователя, чтобы впоследствии легко расшифровать его своим секретным ключом.
Какими бы недостатками и преимуществами ни обладало ассиметричное и симметричное шифрование, необходимо отметить лишь то, что наиболее совершенные решения– это те, которые удачно сочетают в себе алгоритмы обоих видов шифрования.
2.2. Электронная цифровая подпись
Благодаря бурному развитию сферы информационных технологий в нашу жизнь вошли и стали привычными технологии, без которых современный мир уже трудно себе и представить. Одной из таких технологий, которая, между прочим, стоит на страже безопасности совершаемых в сети операций, является электронная цифровая подпись (ЭЦП). Ее применение в качестве средства для идентификации и подтверждения юридической значимости документов становится стандартом цифрового мира.
Электронная цифровая подпись (ЭЦП) – реквизит электронного документа, предназначенный для удостоверения источника данных и защиты данного электронного документа от подделки. Электронная цифровая подпись представляет собой последовательность символов, полученную в результате криптографического преобразования электронных данных. ЭЦП добавляется к блоку данных, позволяет получателю блока проверить источник и целостность данных и защититься от подделки. ЭЦП используется в качестве аналога собственноручной подписи.
Благодаря цифровым подписям многие документы – паспорта, избирательные бюллетени, завещания, договора аренды – теперь могут существовать в электронной форме, а любая бумажная версия будет в этом случае только копией электронного оригинала.
Основные термины, применяемые при работе с ЭЦП
Закрытый ключ – это некоторая информация длиной 256 бит, которая хранится в недоступном другим лицам месте на дискете, смарт-карте, touch memory. Работает закрытый ключ только в паре с открытым ключом.
Открытый (public) ключ используется для проверки ЭЦП получаемых документов-файлов; технически это некоторая информация длиной 1024 бита. Открытый ключ работает только в паре с закрытым ключом.
Код аутентификации – код фиксированной длины, вырабатываемый из данных с использованием секретного ключа и добавляемый к данным с целью обнаружения факта изменений хранимых или передаваемых по каналу связи данных.
Средства электронно-цифровой подписи – аппаратные и/или программные средства, обеспечивающие:
♦ создание электронной цифровой подписи в электронном документе с использованием закрытого ключа электронной цифровой подписи;
♦ подтверждение с использованием открытого ключа электронной цифровой подписи подлинности ЭЦП в электронном документе;
♦ создание закрытых и открытых ключей электронных цифровых подписей.
ЭЦП – это просто
Начнем с того, что ЭЦП – это вовсе не "зверь", и никаких специальных знаний, навыков и умений для ее использования не потребуется.
Каждому пользователю ЭЦП, участвующему в обмене электронными документами, генерируются уникальные открытый и закрытый (секретный) криптографические ключи.
Ключевым элементом является секретный ключ, с помощью которого производится шифрование электронных документов и формируется электронно-цифровая подпись. Секретный ключ остается у пользователя и выдается ему на отдельном носителе: это может быть дискета, смарт-карта или другой носитель. Хранить его нужно в секрете от других пользователей сети.
В Удостоверяющем Центре (третья сторона, или так называемый "арбитр") находится дубликат открытого ключа, создана библиотека сертификатов открытых ключей. Удостоверяющий Центр обеспечивает регистрацию и надежное хранение открытых ключей во избежание внесения искажений или попыток подделки.
Когда пользователь устанавливает под электронным документом свою электронную цифровую подпись, на основе секретного ключа ЭЦП и содержимого документа путем криптографического преобразования вырабатывается некоторое большое число, которое и является электронно-цифровой подписью данного пользователя под данным конкретным документом. Это число добавляется в конец электронного документа или сохраняется в отдельном файле. В подпись заносится следующая информация:
♦ имя файла открытого ключа подписи;
♦ информация о лице, сформировавшем подпись;
♦ дата формирования подписи.