2. Обзор основных алгоритмов шифрования

advertisement
Содержание
1. Теоретические основы криптографии ........................................................................................................8
1.1. Общие сведения по классической криптографии .............................................................................8
1.2. Стойкость алгоритмов шифрования..................................................................................................11
1.3. Общая классификация алгоритмов шифрования .............................................................................15
1.4. Реализация алгоритмов шифрования ................................................................................................17
1.4.1. Программная реализация .....................................................................................................................18
1.4.2. Аппаратная реализация........................................................................................................................18
1.4.3. Программно-аппаратная реализация ..................................................................................................19
1.5. Криптография и стеганография .........................................................................................................20
2. Обзор основных алгоритмов шифрования...............................................................................................21
2.1. Симметричные криптосистемы .........................................................................................................21
2.1.1. Шифрование с использованием операции XOR................................................................................22
2.1.2. Стандарты блочного шифрования. Алгоритм DES ...........................................................................22
2.1.3. Стандарты блочного шифрования. Алгоритм ГОСТ ........................................................................25
2.2. Ассиметричные алгоритмы шифрования. Стандарт ассиметричного шифрования RSA ............27
3. Ключевая информация ...............................................................................................................................30
3.1. Генерация ключей ...............................................................................................................................31
3.1.1. Детерминированные методы ...............................................................................................................31
3.1.2. Недетерминированные методы ...........................................................................................................32
3.1.3. Генерация сеансовых ключей .............................................................................................................32
3.1.4. Генерация ключей на основе пароля пользователя...........................................................................32
3.2. Накопление (хранение) ключей .........................................................................................................33
3.3. Распределение ключей .......................................................................................................................33
4. Электронная цифровая подпись................................................................................................................35
4.1. Общие сведения об электронной цифровой подписи......................................................................35
4.2. Алгоритмы цифровой подписи ..........................................................................................................37
4.2.1. Цифровая подпись Эль-Гамаля ...........................................................................................................37
4.2.2. Алгоритм DSA ......................................................................................................................................38
4.2.3. Слепая подпись Чаума .........................................................................................................................39
5. Хэш-функции и хэширование ...................................................................................................................40
5.1. Общие сведения ..................................................................................................................................40
5.2. Типы хэш-функций .............................................................................................................................41
5.3. Требования к хэш-функциям. ............................................................................................................41
5.4. Стойкость хэш-функций.....................................................................................................................42
5.5. Алгоритмы хэширования ...................................................................................................................42
5.5.1. Алгоритм MD5......................................................................................................................................42
5.5.2. Алгоритм безопасного хэширования SHA.........................................................................................43
6. Краткое введение в криптоанализ ............................................................................................................45
6.1. Почему криптосистемы ненадежны ..................................................................................................46
6.2. Виды атак на криптоалгоритмы.........................................................................................................47
6.3. Методы современного криптоанализа ..............................................................................................49
6.3.1. Нетехнические методы взлома (Social Hacking)................................................................................49
6.3.2. Метод частотного анализа ...................................................................................................................49
6.3.3. Атака методом "грубой силы" (Brute Force Attack) ..........................................................................50
6.3.4. Метод встречи посередине ..................................................................................................................51
6.3.5. Метод Полларда ...................................................................................................................................52
6.3.6. Дифференциальный криптоанализ .....................................................................................................52
6.3.7. Линейный криптоанализ ......................................................................................................................53
Заключение .....................................................................................................................................................54
Литература ......................................................................................................................................................55
Введение
Проблема защиты информации путем преобразований, исключающих ее прочтение
посторонним лицом, волновало человечество с давних времен. Криптография исторически
зародилась из потребности передачи секретной информации. История криптографии –
ровесница истории письменности. Более того, первоначально письменность сама по себе
была криптографической системой, т.к. в древнем обществе ей владели только избранные
(например, жрецы). С широким распространением письменности криптография стала
формироваться как самостоятельная наука, которая длительное время была связана только с
разработкой специальных методов преобразования информации с целью ее представления в
форме, недоступной для злоумышленника. С позиций сегодняшнего дня ее методы
рассматриваются всего лишь как некоторые ухищрение, чем как строгая научная
дисциплина. Цель: дать методы обеспечения конфиденциальности и аутентичности
информации, а также методы ее криптоанализа. Задача: подать информацию в таком виде,
чтобы было доступно и понятно всем людям, также подробно рассмотреть все моменты с
алгоритмами шифрования.
Современная криптография базируется на
самых последних достижениях
фундаментальных наук, и в первую очередь, математики. Сегодня в теоретической
криптографии используются понятия и результаты таких разделов математики, как алгебра,
теория чисел, теория сложности алгоритмов и вычислений, теория кодирования и т.д., а
задачи ее далеко выходят за рамки только лишь сокрытия информации. В настоящее время в
связи с бурным развитием международной глобальной сети Internet и массовым
применением
компьютерных
информационных
технологий,
криптография
решает
следующие задачи:
1. Защита информации от несанкционированного чтения
Давно известно, что информация может быть настоящим сокровищем. Именно
поэтому часто много усилий затрачивается как на ее охрану, так и на ее добывание.
Информацию нужно защищать в тех случаях, когда есть опасения, что она станет доступной
посторонним, которые могут обратить ее во вред законному пользователю.
Информация, которая нуждается в защите, возникает в самых разных жизненных
ситуациях. В таких случаях говорят, что она содержит тайну и является защищаемой,
приватной,
конфиденциальной,
секретной.
Наиболее
типичные
примеры
–
это
государственная, военная, коммерческая, юридическая, врачебная тайна и т.д.
Защищаемая информация имеет следующие признаки:
3

Имеется определенный круг законных пользователей, которые имеют право владеть
информацией;

Имеются незаконные пользователи, которые стремятся овладеть информацией с тем,
чтобы обратить ее себе во благо, а законным пользователям во вред.
Основными задачами защиты пользовательской информации являются:

Обеспечение конфиденциальности информации;

Обеспечение целостности информации;

Обеспечение достоверности информации;

Обеспечение оперативности доступа к информации;

Обеспечение юридической
значимости информации, представленной
в виде
электронного документа;

Обеспечение неотслеживаемости действий клиента.
Дадим краткую расшифровку этих понятий:
Конфиденциальность
–
свойство
информации
быть
доступной
только
ограниченному кругу пользователей информационной системы, в которой циркулирует
данная информация.
Под
целостностью
понимается
свойство
информации
или
программного
обеспечения сохранять свою структуру и/или содержание в процессе передачи и хранения.
Достоверность – свойство информации, выражающееся в строгой принадлежности
объекту, который является ее источником, либо тому объекту, от которого эта информация
принята.
Оперативность – способность информации или некоторого информационного
ресурса быть доступным для конечного пользователя в соответствии с его временными
потребностями.
Юридическая значимость означает, что документ обладает юридической силой. С
этой целью субъекты, которые нуждаются в подтверждении юридической значимости
передаваемого сообщения, договариваются о повсеместном принятии некоторых атрибутов
информации, выражающих ее способность быть юридически значимой. Данное свойство
особенно актуально в системах электронных платежей.
Неотслеживаемость
–
способность
совершать
некоторые
действия
в
информационной системе незаметно для других субъектов. Актуальность данного
требования стала очевидной благодаря появлению таких понятий, как электронные деньги и
Internet-banking.
4
Следует отметить, что объем мероприятий по защите обрабатываемых и
передаваемых данных зависит прежде всего от величины предполагаемого ущерба, который
может выражаться в прямой (затраты на покупку нового программного обеспечения в случае
нарушения его целостности) или в опосредованной (затраты от простоя в информационной
системе банка) форме. При современном уровне развития техники сами средства связи, а
также разработка средств перехвата информации требуют очень больших затрат.
2. Защита от навязывания ложных сообщений (умышленных и непреднамеренных)
Главным образом, эта задача связана с таким понятием, как имитозащита. Она
состоит в формировании в зависимости от некоторого секретного ключа специальной
дополнительной информации, называемой имитовставкой, которая передается вместе с
криптограммой. Дело тут в том, что само по себе шифрование данных недостаточно для
защиты от навязывания ложного сообщения, хотя во многих случаях законный получатель,
анализируя семантику сообщения, может легко определить, что криптограмма была
модифицирована или подменена. Однако при искажении цифровых данных обнаружить факт
изменения данных по семантике крайне сложно. Одним из способов защиты от навязывания
ложных сообщений путем целенаправленного или случайного искажения шифртекста и
является имитозащита. Для вычисления имитовставки используется алгоритм, задающий
зависимость имитовставки от каждого бита сообщения.
Чем больше длина имитовставки, тем меньше вероятность того, что искажение
шифртекста не будет обнаружено. Нарушитель может модифицировать шифртекст, но
поскольку он не знает секретного ключа, то не сможет вычислить новое значение
имитовставки, соответствующее искаженному сообщению. Нарушитель либо не меняет
имитовставки, либо подменяет ее на случайное значение. Если используется алгоритм с
хорошими криптографическими свойствами, то вероятность того, что факт изменений не
будет обнаружен законным получателем, составляет P  2  n , где n – длина имитовставки в
битах.
3. Аутентификация законных пользователей
Она заключается в распознавании законных пользователей, после чего им
предоставляются
определенные
права
доступа
к
ресурсам
вычислительных
и
информационных систем. Частным вариантом аутентификации является парольная защита
входа в компьютерную систему. Для того, чтобы система защиты могла идентифицировать
легальных пользователей, в памяти ЭВМ хранятся образцы их паролей, вычисленные по
специальному
криптографическому
алгоритму,
реализующему
так
называемую
одностороннюю (On-Way) функцию y  F (x) . Основное требование к ней состоит в том,
чтобы сложность вычисления значения функции по аргументу была низкой, а обратная
5
операция – запредельно сложной (практически неосуществимой за 10 лет при использовании
всех вычислительных ресурсов человечества).
4. Контроль целостности информации
Это обнаружение любых несанкционированных изменений информации, например,
данных или программ, хранимых в компьютере. Имитозащита, в сущности, является важным
частным случаем контроля целостности информации, передаваемой в виде шифртекста.
Контроль основан на выработке по некоторому криптографическому закону кода
обнаружений модификаций (КОМ), имеющего значительно меньший объем, чем охраняемая
информация. Основным требованием к алгоритму вычисления КОМ является задание
зависимости значения КОМ от каждого бита двоичного представления всех символов
исходного текста.
5. Аутентификация информации
Это установление санкционированным получателем того факта, что полученное
сообщение санкционированным отправителем. Соблюдение заранее оговоренного протокола
(набора правил и процедур) должно обеспечить максимальную вероятность этого факта.
Очевидно, что при этом контролируется и целостность сообщения на возможность подмены
или искажения. В симметричных криптосистемах аутентификация осуществляется
с
применением одного или нескольких секретных ключей и защитных контрольных сумм. В
ассиметричных криптосистемах аутентификация выполняется с использованием открытых
ключей.
6. Электронная цифровая подпись (ЭЦП)
Как уже было отмечено, криптографическими методами можно обеспечить не
только конфиденциальность, но и проконтролировать целостность передаваемых или
хранимых данных. Контроль целостности в основном производится путем расчета некоторой
"контрольной суммы" данных. Математиками и инженерами, работающими в области
передачи
данных
и
теории
кодирования,
разработано
множество
алгоритмов,
рассчитывающих контрольные суммы передаваемых данных. Основой этих алгоритмов
также являются односторонние функции.
Электронная подпись в общем виде представляет собой контрольную сумму
документа, зашифрованную секретным ключом с помощью хэш-функции. В процедуре
генерации ЭЦП используются ассиметричные криптографические алгоритмы, основанные
на двух ключах: открытом (Public) и личном (Private). Проверка ЭЦП документа сводится к
вычислению хэш-суммы документа, ее расшифровке и сравнению двух величин. Если
значения вычисленной и сохраненной в подписи хэш-сумм совпали, то считается, что
подпись под документом верна.
6
Более подробно ЭЦП будут рассмотрены позднее.
Перечислим остальные задачи, решаемые современной криптографией, не вдаваясь,
однако, в их подробное описание.
7. Системы тайного электронного голосования
8. Электронные деньги
9. Электронная жеребьевка
10. Защита от отказа факта приема сообщения
11. Одновременное подписание контракта
12. Защита документов и ценных бумаг от подделки (электронные водяные знаки)
Как видно из всего вышесказанного, актуальность криптографии в настоящий
момент достаточно высока, поскольку в условиях информационного общества защищать
свои личные сведения необходимо не только спецслужбам и крупным коммерческим
фирмам, но и одиночным пользователям. Исходя из этого, в своей работе мы постараемся в
доступной форме осветить основные вопросы и положения современной криптографии, дать
по возможности их теоретическое обоснование, а также рассмотреть такую важную тему, как
устойчивость криптографических алгоритмов к попыткам взлома и остановиться на наиболее
употребительных методах раскрытия шифрованного текста.
7
1. Теоретические основы криптографии
1.1. Общие сведения по классической криптографии
Прежде чем перейти к рассмотрению практического применения криптографических
преобразований, необходимо уделить внимание вопросам, которые в рамках криптографии
давно признаются классическими, а именно основам построения систем засекреченной
связи.
Под системой засекреченной связи будем понимать систему передачи информации,
в которой смысл передаваемой информации скрывается с помощью криптографических
преобразований. При этом сам факт передачи информации не утаивается. В основе каждой
системы засекреченной связи – использование алгоритмов шифрования как основного
средства сохранения конфиденциальности.
В качестве информации, подлежащей защите, будут рассматриваться тексты,
построенные на некотором алфавите. Под этими терминами понимается следующее.
Алфавит – конечное множество используемых для кодирования информации знаков.
Текст – упорядоченный набор, составленный из символов алфавита.
В качестве алфавитов можно привести следующие:

Алфавит Z33 – 32 буквы русского алфавита и пробел;

Алфавит Z256 – символы, входящие в стандартные коды ASCII и КОИ-8

Бинарный алфавит Z2 = {0,1}
Зашифрование
–
процесс
криптографического
преобразования
множества
открытых текстов в множество закрытых (шифрованных) текстов.
Расшифрование
–
процесс
криптографического
преобразования
закрытых
сообщений в открытые.
Дешифрование – процесс нахождения открытого сообщения, соответствующего
заданному закрытому при неизвестном криптографическом преобразовании.
Первые два процесса управляются с помощью некоторой секретной информации
сравнительно малого размера, называемой секретным ключом. Ключ используется для
управления процессом криптографического преобразования и является легко сменяемым
элементом криптосистемы. Ключ может быть заменен пользователями в произвольный
момент времени, тогда как сам алгоритм шифрования является долговременным элементом
криптосистемы и связан с длительным этапом разработки и тестирования.
Абстрактно
систему
засекреченной
связи
можно
описать
как
множество
отображений множества открытых сообщений в множество закрытых. Выбор конкретного
8
типа
преобразования
определяется
ключом
зашифрования
(или
расшифрования).
Отображения должны обладать свойством взаимооднозначности, т.е. при расшифровании
должен получаться единственный результат, совпадающий с первоначальным открытым
сообщением (см. рис. 1.1) Ключи зашифрования и расшифрования могут в общем случае
быть различными, хотя для простоты рассуждений предположим, что они идентичны.
Множество, из которого выбираются ключи, называется ключевым пространством.
Совокупность процессов зашифрования, множества открытых сообщений, множества
возможных закрытых сообщений и ключевого пространства
называется алгоритмом
шифрования. Совокупность процессов расшифрования, множества возможных закрытых
сообщений, множества открытых сообщений и ключевого пространства называется
алгоритмом расшифрования.
Передающая сторона
Открытый текст
Зашифрованное
сообщение
Зашифрование
Ключ 1
Источник ключей
Принимающая сторона
Расшифрование
Открытый текст
Ключ 2
Рисунок 1. Общая структура системы засекреченной связи
Работу системы засекреченной связи можно описать следующим образом:
1. Из ключевого пространства выбирается ключ зашифрования K и отправляется по
надежному каналу передачи.
2. К открытому сообщению C, предназначенному для передачи, применяют конкретное
преобразование Fk, определяемое ключом K, для получения зашифрованного
сообщения M: M = Fk(C).
3. Полученное зашифрованное сообщение M пересылают по каналу передачи данных.
4. На принимающей стороне к полученному сообщению M применяют конкретное
преобразование Dk, определяемое из всех возможных преобразований ключом K, для
получения открытого сообщения C: C = Dk(M).
Для современных криптографических систем защиты информации сформулированы
следующие общепринятые требования:

зашифрованное сообщение должно поддаваться чтению только при наличии ключа;
9

число операций, необходимых для определения использованного ключа шифрования
по фрагменту шифрованного сообщения и соответствующего ему открытого текста,
должно быть не меньше общего числа возможных ключей;

число операций, необходимых для pасшифpовывания информации путем пеpебоpа
всевозможных ключей должно иметь строгую нижнюю оценку и выходить за пределы
возможностей современных компьютеров (с учетом возможности использования
сетевых вычислений);

знание алгоритма шифрования не должно влиять на надежность защиты;

незначительное изменение ключа должно приводить к существенному изменению
вида зашифрованного сообщения даже при использовании одного и того же ключа;

стpуктуpные элементы алгоритма шифрования должны быть неизменными;

дополнительные биты, вводимые в сообщение в процессе шифрования, должны быть
полностью и надежно скрыты в шифрованном тексте;

длина шифрованного текста должна быть равной длине исходного текста;

не должно быть простых и легко устанавливаемых зависимостей между ключами,
последовательно используемыми в процессе шифрования;

любой ключ из множества возможных должен обеспечивать надежную защиту
информации;

алгоритм должен допускать как пpогpаммную, так и аппаратную реализацию, при
этом изменение длины ключа не должно вести к качественному ухудшению
алгоритма шифрования.
Между людьми происходит интенсивный обмен информацией, причем часто на
большие расстояния. Для осуществления такого обмена существуют
различные виды
общедоступных технических каналов связи: телеграф, телефон, радио, телевидение.
Технический канал связи при этом априорно считается ненадежным, т.е. любое
зашифрованное сообщение может быть перехвачено незаконным пользователем.
В
криптографии
рассматривается
некоторый
злоумышленник
(оппонент,
криптоаналитик противника, нарушитель, нелегальный пользователь), который осведомлен
об используемых криптографических методах, алгоритмах, и пытается вскрыть их. Вскрытие
криптосистемы может заключаться, например, в несанкционированном чтении информации,
формировании чужой подписи, изменении результатов голосования, нарушении тайны
голосования,
пользователем.
модифицировании
Разнообразные
данных,
действия
которое
не
будет
замечено
оппонента
в
общем
случае
законным
называются
криптографической атакой (нападением). Специфика криптографии состоит в том, что она
10
направлена на разработку методов, обеспечивающих стойкость к любым действиям
злоумышленника.
Центральным является вопрос, насколько надежно решается та или иная
криптографическая проблема. Ответ на этот вопрос непосредственно связан с оценкой
трудоемкости каждой конкретной атаки на криптосистему. Решение такой задачи, как
правило, чрезвычайно сложно и составляет самостоятельный предмет исследований,
называемый криптоанализом. Криптография и криптоанализ образуют единую область
науки – криптологию, которая в настоящее время является новым разделом математики,
имеющим важные приложения в современных информационных технологиях.
1.2. Стойкость алгоритмов шифрования
Центральным понятием для криптографии является понятие стойкости шифра. К
сожалению, получение строгих доказуемых оценок стойкости конкретного шифра остается
нерешенной проблемой. Это объясняется отсутствием необходимых для решения такой
проблемы математических результатов. Поэтому стойкость конкретного шифра оценивается
путем возможных попыток его вскрытия и зависит от квалификации криптоаналитиков,
атакующих шифр. Процедуру атаки на шифр с целью выяснения его стойкости называют
проверкой стойкости.
Для каждого открытого сообщения существует априорная вероятность выбора,
поскольку механизм выбора открытых сообщений можно представить как некоторый
вероятностный процесс. Аналогично выбор каждого ключа тоже имеет априорную
вероятность. Противник, перехватывающий сообщения, может вычислить апостериорные
вероятности как появления открытого сообщения, так и вероятность появления ключа. Набор
апостериорных вероятностей представляет собой систему принадлежащих противнику
сведений об используемых ключах и передаваемых открытых сообщениях. Причем перед
началом перехвата шифрованных сообщений противник имеет в своем распоряжении
некоторый набор априорных вероятностей об открытых сообщениях и ключах.
На заре развития криптографии надежность сохранения информации в тайне
определялась лишь секретностью самого метода преобразования. Понятно, что в наше время
секретность алгоритма не может обеспечить его безусловную стойкость, т.е. невозможность
чтения
криптограммы
ресурсами.
Поскольку
противником,
секретные
обладающим
алгоритмы
бесконечными
недоступны
для
вычислительными
широкомасштабных
криптоаналитических исследований, то по сравнению с открытыми алгоритмами имеется
значительно более высокая вероятность того, что впоследствии будут найдены эффективные
методы их взлома. В связи с этим в настоящее время наиболее широко используются
11
открытые
алгоритмы,
прошедшие
длительное
тестирование
и
обсуждение
в
криптографической литературе1.
Наряду с развитием криптографических систем совершенствовались и методы,
позволяющие восстанавливать исходное сообщение исходя из шифртекста и другой
известной информации. Успехи этих методов приводили к ужесточению требований к
криптографическим алгоритмам.
Голландский криптограф Керкхофф (1835 – 1903) впервые сформулировал правило
стойкости шифра, в соответствии с которым:
1. Весь механизм преобразований считается известным злоумышленнику;
2. Надежность алгоритма должна определяться только неизвестным значением
секретного ключа.
Второе требование означает, что оппонент не сможет разработать методы,
позволяющие снять защиту или определить истинный ключ, за время, существенно меньшее,
чем время полного (тотального) перебора всего множества возможных секретных ключей.
Правило Керкхоффа стимулировало появление более качественных шифрующих
алгоритмов. Можно сказать, что в нем содержится первый элемент стандартизации в области
криптографии. В настоящее время это правило интерпретируется более широко: все
долговременные элементы системы защиты должны предполагаться известными
потенциальному злоумышленнику. В последнюю формулировку криптосистемы входят как
частный случай систем защиты.
Итак, что же понимается под стойкостью алгоритма шифрования?
Под раскрытием системы засекреченной связи мы будем понимать одну из
следующих планируемых противником операций, направленных на достижение этой цели:

Полное раскрытие. Противник находит путем вычислений секретный ключ системы;

Нахождение
эквивалентного
функционально
эквивалентный
алгоритма.
алгоритму
Противник
шифрования,
находит
не
имея
алгоритм,
при
этом
представления об используемом секретном ключе;

Нахождение открытого сообщения. Противник находит открытое сообщение,
соответствующее одному из перехваченных зашифрованных;

Частичное
раскрытие.
Противник
получает
частичную
информацию
об
используемом ключе или открытом сообщении.
Каждой из определенных выше целей соответствует свой объем знаний об
используемом ключе или переданном открытом сообщении. Чтобы увеличить его,
Хотя это и может показаться парадоксальным, но для создания надежного алгоритма шифрования необходимо стремится к тому, чтобы он
был известен как можно более широкому кругу специалистов. Здесь нет никакого противоречия – чем больше людей вовлечено в оценку
качества алгоритма, тем больше вероятность того, что будут тщательно проанализированы его сильные, а самое главное, слабые стороны.
1
12
противнику необходимо иметь достаточное количество перехваченных зашифрованных
сообщений. Вот почему он осуществляет ряд атак на используемую систему засекреченной
связи.
Исходя из вышесказанного, под стойкостью алгоритма шифрования будем
понимать способность алгоритма противостоять всем возможным атакам на него.
На практике получение противником требуемых для вскрытия алгоритма
апостериорных вероятностей зависит от наличия у него определенных возможностей, среди
которых можно отметить следующие:
1. Противник знает сам шифр и имеет возможности для его предварительного изучения;
2. Противник знает некоторые характеристики открытых текстов – тематику сообщений,
их стиль, стандарты, форматы и т.д.
3. Противник может перехватывать все зашифрованные сообщения, но не имеет
соответствующих им открытых текстов;
4. Противник может перехватывать все шифрованные сообщения и добывать
соответствующие им открытые тексты;
5. Противник имеет доступ к шифру (но не к ключам) и может зашифровывать и
дешифровывать любую информацию.
Теоретически нет такого шифра, который нельзя было бы взломать2. Любой ключ к
зашифрованному сообщению, в конце концов, можно подобрать. Вопрос только в том,
сколько времени на это понадобится. В большинстве случаев оказывается, что со временем
сообщение просто утрачивает свою актуальность (см. таблицу 1), а потому по истечении
этого периода его расшифровка злоумышленником не может нанести вреда отправителю и
получателю сообщения.
Таблица 1. Время жизни некоторых типов информации
Тип информации
Время жизни
Военная тактическая информация
минуты/часы
Заявления о выпуске продукции
дни/недели
Шенноном был показан способ составления совершенно секретной криптограммы. Она должна быть избавлена как от избыточности
исходного текста, так и от избыточности ключа. Способ, предложенный им, заключался в следующем: сначала устраняется избыточность
текста с помощью применения к нему какого-либо метода эффективного кодирования. Вслед за этим к получившемуся безызбыточному
тексту применяем шифр со случайным ключом, для которого (применительно к русскому алфавиту) Li=mi+ki (mod 31).В этом равенстве mi
и li являются номерами i-ой буквы шифруемого текста и криптограммы соответственно, а каждое ki выбирается случайным образом среди
чисел 0,1,2,…,30, так, что выбор любого из этих чисел одинаково возможен.
Недостатком такой совершенно секретной системы является то, что вместе с шифрованным сообщением требуется посылать такое же по
объему сообщения, содержащее информацию о случайном ключе, поскольку он заранее неизвестен. Поэтому эта система практически
неприемлема.
2
13
Долгосрочные бизнес-продукции
Годы
Производственные секреты
десятилетия
Секрет создания ядерного оружия
более 40 лет
Информация о разведчиках
более 50 лет
Личная информация
более 50 лет
Дипломатическая тайна
более 65 лет
Информация о переписи населения
100 лет
Стойким считается тот алгоритм, который для своего вскрытия требует от
противника практически недостижимых вычислительных ресурсов или недостижимого
объема перехваченных зашифрованных сообщений или времени раскрытия, которое
превышает время жизни интересующей его информации.
Но поскольку методики взлома шифров непрерывно совершенствуются, нужно быть
готовым к адекватному ответу злоумышленникам. Увеличение длины ключа является одним
из наиболее радикальных методов противостояния попыткам взлома. Чем длиннее ключ, чем
большее количество комбинаций случайных значений в нем, тем больше времени
понадобится злоумышленнику на перебор вариантов. Соотношение между длиной ключа и
количеством возможных комбинаций носит экспоненциальный характер (удлинение ключа
на один бит удваивает количество возможных комбинаций значений ключа и таким образом,
в среднем удваивает время на отыскание нужного значения перебором). Удвоение же длины
ключа значительно увеличивает степень защиты сообщения.
Необходимую сложность ключа в классических криптографических системах
вычислить несложно, если знать технические возможности источника угрозы. Например,
одиночка вручную переберет 100 ключей, следовательно, тысячи вариантов ключей
достаточно. Это приблизительно 10 бит или 3 – 5 букв. Если же источник угрозы – крупная
богатая фирма (которая может нанять криптоаналитиков, суперЭВМ), ясно, что такой длины
ключа уже недостаточно. Пусть противник обеспечит проверку 106 вариантов ключей в
секунду. Следовательно, число вариантов ключей должно составлять 22 десятичные цифры,
а это 70 бит или 30 – 35 букв.
Приведем примеры зависимостей между возможностями злоумышленника и длиной
ключа.
14
Таблица 2. Сравнительный анализ времени, затрачиваемого различными
группами злоумышленников на нахождение ключа методом перебора
Тип
атакующего
Хакеры
Небольшие
фирмы
Корпоративные
департаменты
Большие
компании
Бюджет
Средства
Небольшой
Время на подбор ключа
Необходимая
40 бит
56 бит
длина ключа
ЭВМ
1 неделя
Невозможно
45
400$
FPGA3
5 часов
38 лет
50
10000$
FPGA
12 минут
18 месяцев
55
FPGA
24 секунды
19 дней
ASIC4
18 секунд
3 дня
FPGA
7 секунд
13 часов
ASIC
0,005 секунды
6 минут
300000$
10000000$
60
70
Число необходимых ключей можно вычислить по формуле:
N = время жизни ключа/скорость подбора ключа/шанс взлома5
Раскрытие очень длинного ключа методом тотального перебора в реальных условиях
невозможно. Однако не исключена возможность создания принципиально нового метода
атаки на шифр.
1.3. Общая классификация алгоритмов шифрования
В основе криптографических алгоритмов лежат математические преобразования,
позволяющие добиваться высокой практической стойкости большинства алгоритмов. Было
доказано, что в криптографии существуют только два основных типа преобразований замены и перестановки, все остальные являются лишь комбинацией этих двух типов. Таким
образом, есть криптографические алгоритмы, построенные на основе замены, перестановки и
объединения этих двух преобразований.
В
перестановочных
шифрах
символы
открытого
текста
изменяют
свое
местоположение.
С другой стороны, в шифрах замены один символ открытого текста замещается
символом зашифрованного текста.
В классической криптографии различают четыре типа шифров замены:
FPGA – чипы, обладающие возможностью перебирать до 30 млн. ключей в секунду
ASIC – чипы, способные перебирать до 200 млн. ключей в секунду
5
Обычно он равен 10-3 – 10-6 в зависимости от области применения
3
4
15
-
шифры простой замены (моноалфавитные шифры). Один символ открытого текста
заменяется одним символом зашифрованного текста;
-
шифры сложной замены. Один символ открытого текста заменяется одним или
несколькими символами зашифрованного текста, например: “А” может быть
заменен ”С” или ”РО4Е”;
-
шифры блочной замены. Один блок символов открытого текста заменяется блоком
закрытого текста, например: “АВС” может быть заменен ”СРТ” или ”КАР”;
-
полиалфавитные шифры замены, в которых к открытому тексту применяются
несколько шифров простой замены.
Классическая криптография, в частности теория связи, в секретных системах,
основанная К. Шенноном, исходила из того, что ключи, используемые соответственно для
шифрования и расшифрования, являются секретными и одинаковыми, и передача их должна
осуществляться по надежному каналу обмена ключевой информации. Подобные алгоритмы
были названы симметричными, так как зашифрование и расшифрование происходит на
одинаковых ключах. Однако развитие теории построения алгоритмов шифрования с
открытыми ключами, родоначальниками которой стали У. Диффи и М. Хеллман6, положила
начало повсеместному использованию асимметричных алгоритмов шифрования, в которых
ключи зашифрования и расшифрования различны в зависимости от применения один из
ключей будет открытым, то есть общедоступным, а другой необходимо хранить в секрете.
Разновидностью таких криптосистем являются системы ЭЦП, тайного электронного
голосования, защиты от навязывания ложных сообщений, электронной жеребьевки и ряд
других криптосистем.
Спустя некоторое время симметричные алгоритмы были разделены на два больших
класса – блочные и поточные. В первых открытый текст разбивается на блоки подходящей
длины, и каждый блок шифруется. В поточных алгоритмах каждый символ открытого текста
зашифровывается независимо от других и расшифровывается таким же образом. Иначе
говоря, преобразование каждого символа открытого текста меняется от одного символа к
другому, в то время как для блочных алгоритмов в рамках шифрования блока используется
одно и тоже криптографическое преобразование.
6
Статья "Новые направления в криптографии", 1967 г.
16
Алгоритмы шифрования
симметричные
блочные
асимметричные
поточные
синхронные
самосинхронизирующиеся
Рисунок 2. Классификация алгоритмов шифрования
Главная идея, воплощенная в алгоритмах поточного шифрования заключается в
выработке на основе секретного ключа последовательности символов из входного алфавита,
с которым работает алгоритм шифрования. Это могут быть как, например, символы
английского языка, так и цифры десятичной системы исчисления, при этом входной текст
преобразуется в соответствии с выбранным алфавитом. Следует учесть, что такая
последовательность имеет длину, которая равна открытому тексту. Ее иногда называют
гаммой. Зашифрование и расшифрование может, например, осуществляться путем
модульного суммирования символа открытого текста с символом гаммы. Стойкость
поточных алгоритмов шифрования зависит от того, насколько выработанная гамма будет
обладать свойством равновероятности появления очередного символа.
Поточные алгоритмы обладают высокой скоростью шифрования, однако при их
программном использовании возникают определенные трудности, что сужает область их
практического применения.
Следует отметить, что в последние годы на базе совершенствования электронных
технологий появились новые теоретические разработки в области квантовой криптографии,
основанной на принципах неопределенности Гейзенберга.
1.4. Реализация алгоритмов шифрования
Проблема реализации методов защиты включает два аспекта:
1. разработку средств, реализующих криптографические алгоритмы;
2. методику использования этих средств.
Любой криптографический метод может быть реализован тремя методами:
программным, аппаратным, либо программно-аппаратным.
Перед тем, как перейти непосредственно к рассмотрению достоинств и недостатков
перечисленных типов реализации, сформулируем общие требования к реализации
криптографических
алгоритмов.
Современные
алгоритмы
шифрования
должны
удовлетворять следующим условиям:
17
-
должны быть адаптированные к новейшей программно-аппаратной базе (например,
алгоритмы блочного шифрования в программной реализации должны быть
адаптированы к операциям с 64-разрядными числами);
-
объем ключа должен соответствовать современным методам и средствам
дешифрования зашифрованных сообщений;
-
операции зашифрования и расшифрования должны по возможности быть простыми,
чтобы удовлетворять современным требованиям по скоростным характеристикам;
-
не должны допускать появления постоянно увеличивающегося числа ошибок;
-
должны сводить к минимуму объем сообщения в ходе
выполнения операций
шифрования.
1.4.1. Программная реализация
Возможность
программной
реализации
обусловлена
тем,
что
все
методы
криптографического преобразования формальны и могут быть представлены в виде
конечной алгоритмической процедуры.
К
достоинствам
программной
реализации
можно
отнести
ее
гибкость и
переносимость. Другими словами, программа, написанная под одну операционную систему,
может быть модифицирована под любой тип операционной системы. Кроме того, обновить
программное обеспечение можно с меньшими временными и финансовыми затратами. К
тому же многие современные достижения в области криптографических протоколов
недоступны для реализации в виде аппаратных средств.
К недостаткам программных средств криптографической защиты следует отнести
возможности вмешательства в действие алгоритмов шифрования и получения доступа к
ключевой информации, хранящейся в общедоступной памяти. Эти операции обычно
выполняются при помощи простого набора программных инструментариев. Так, например,
во многих операционных системах осуществляется аварийный дамп памяти на жесткий диск,
при этом в памяти могут находиться ключи, найти которые не составит труда.
Таким образом, слабая физическая защищенность программных средств является
одним из основных недостатков подобных методов реализации алгоритмов шифрования.
1.4.2. Аппаратная реализация
При аппаратной реализации все процедуры шифрования и расшифрования
выполняются специальными электронными схемами. При этом непременным компонентом
всех аппаратно реализуемых методов является гаммирование. Это объясняется тем, что
метод гаммирования сочетает в себе высокую криптостойкость и простоту реализации.
18
Наиболее часто в качестве генератора используется широко известный регистр
сдвига с обратными связями (линейными или нелинейными). Минимальный период
порождающей последовательности равен 2n – 1 бит. Для повышения качества генерируемой
последовательности можно предусмотреть специальный блок управления работой регистра
сдвига. Такое управление может, например, заключаться в том, что после шифрования
определенного объема информации содержимое регистра сдвига циклически изменяется.
Другая
возможность
улучшения
качества
гаммирования
заключается
в
использовании нелинейных обратных связей. При этом улучшение достигается не за счет
увеличения длины гаммы, а за счет усложнения закона ее формирования.
Перечислим достоинства аппаратных средств.
Во-первых,
характеристиками,
аппаратная
нежели
реализация
программно
обладает
реализуемые
лучшими
скоростными
алгоритмы
шифрования.
Использование специальных чипов, адаптированных к реализации на них процедур
зашифрования и расшифрования приводит к тому, что, в отличие от процессов общего
назначения они позволяют оптимизировать многие математические операции, применяемые
в алгоритмах шифрования.
Во-вторых, аппаратные средства защиты информации обладают несравнимо
большей защищенностью как от побочных электромагнитных излучений возникающих в
ходе работы аппаратуры, так и от непосредственного физического воздействия на
устройство, где осуществляются операции шифрования и хранения ключевой информации.
Современные
микросхемы,
на
которых
реализуются
алгоритмы
шифрования
и
осуществляется хранение ключевой информации, способны успешно противостоять любым
попыткам физического воздействия - в случае обнаружения несанкционированного доступа
к микросхеме она саморазрушается.
В-третьих, аппаратные средства более удобны в эксплуатации, так как позволяют
осуществлять операции зашифрования и расшифрования для пользователя в прозрачном
режиме; кроме того, их легко инсталлировать.
В-четвертых,
учитывая
многообразие
вариантов
применения
средств
криптографической защиты информации, аппаратные средства повсеместно используются
для защиты телефонных переговоров, отправке факсимильных сообщений и других видов
передачи информации, где невозможно использовать программные средства.
1.4.3. Программно-аппаратная реализация
В последнее время стали появляться комбинированные средства шифрования, т.н.
программно-аппаратные средства. В этом случае в компьютере используется своеобразный
19
"криптографический сопроцессор" – вычислительное устройство, ориентированное на
выполнение криптографических операций (сложении по модулю, сдвиг и т.д.). Меняя
программное обеспечение для такого устройства, можно выбрать тот или иной метод
шифрования.
Основными функциями, возлагаемыми на аппаратную часть программно –
аппаратного комплекса криптографической защиты информации, обычно являются
генерация ключевой информации и ее хранение в устройствах, защищенных от
несанкционированного доступа со стороны злоумышленника. Кроме того, посредством
методик такого типа можно осуществлять аутентификацию пользователей с помощью
паролей (статических или динамически изменяемых, которые могут храниться на различных
носителях ключевой информации), либо на основе уникальных для каждого пользователя
биометрических характеристик. Устройство считывания подобных сведений могут входить в
состав программно – аппаратной реализации средств защиты информации.
1.5. Криптография и стеганография
Стеганографией называется техника скрытой передачи или скрытого хранения
информации. Целью стеганографии является сокрытие самого факта передачи сообщений.
Для этого могут быть использованы невидимые чернила, акростих, микрофотографии,
тайники. Использование электронных средств обработки информации позволяет применить
новые стеганографические методы. Они используют распределение по псевдослучайному
закону информации в пространстве или времени (или комбинирование этих способов),
зашумление и маскирование в некотором сообщении-контейнере или в служебной
информации. В мультимедиа, они могут быть основаны, например, на передаче внутри
видеокадров.
Также можно внедрить сообщение в файл изображения или звуковой файл. В файле
изображения после его преобразования в растр мы получаем набор описаний кодов цвета
каждого пикселя. Если самый младший бит кода цвета использовать для хранения бита
сообщения, то отличие изображения от исходного на экране не будет заметно. Чем выше
разрешение при кодировании изображения, тем больше посторонней информации можно
туда упрятать.
Принципиальное отличие криптографии от стеганографии состоит в том, что в ней
не скрывается факт передачи сообщений, а скрывается только его содержание (смысл).
Применение же стеганографии для передачи важных сообщений является весьма
рискованным. Криптография представляется гораздо более надежным инструментом для
защиты информации. Стеганографические методы могут обеспечить высокий уровень
20
защиты информации только в том случае, когда они будут дополнены предварительным
криптографическим преобразованием сообщения.
В настоящее время разработчики стеганографических методов используют
секретный ключ, что фактически означает разработку стеганографических методов,
заключающих в себе криптографическую подсистему. То обстоятельство, что стеганография
пришла к необходимости применения секретного ключа, означает признание того факта, что
разработка стойких методов сокрытия факта передачи сообщений связана с использованием
элементов криптографии.
Стеганография не заключает в себе тех многогранных внутренних возможностей,
которые свойственны криптографии.
2. Обзор основных алгоритмов шифрования
В этой главе будут освещены наиболее употребительные на сегодняшний день
алгоритмы шифрования. Мы специально не станем рассматривать множество вариантов
простейших моно- и полиалфавитных подстановок (шифр Цезаря, Третемиуса, Виженера и
т.д.), т.к. они, в принципе, не обеспечивают надлежащий на сегодняшний день уровень
криптостойкости и легко поддаются взлому методом частотного анализа. Поэтому мы
постараемся осветить те алгоритмы, которые в настоящее время стандартизированы и нашли
широкое применение в различных отраслях человеческой деятельности.
2.1. Симметричные криптосистемы
Алгоритмы этого типа основаны на том, что и для шифрования сообщения
отправителем, и для его расшифровки получателем используется одно и то же значение
ключа (рис. 3).
Одно из главных преимуществ симметричных методов – быстрота шифрования и
расшифровки, а главный недостаток – необходимость передачи значения ключа получателю.
Неизбежно возникает проблема: как передать ключ получателю сообщения и при этом не
позволить злоумышленнику перехватить его.
21
шифрование
Читаемый
текст
сообщения
расшифровка
Читаемый
текст
сообщения
Зашифрованное
сообщение
Симметричный
ключ
шифрования
Рисунок 3. Схема симметричного шифрования
2.1.1. Шифрование с использованием операции XOR
Самый простой и эффективный способ сделать текст нечитаемым – спрятать его,
смешав с последовательностью случайных чисел, заданной ключом. При этом информация
прячется в шуме – самом информативном, по мнению Шеннона, сигнале. Для этого можно
использовать логическую операцию XOR (исключающее ИЛИ). Таблица истинности для
этой операции имеет вид:
Таблица 3. Таблица истинности операции XOR
Эта операция выполняется на уровне отдельных
A
B
A xor B
битов в сообщении, оперируя двумя строками битов, одна
0
0
0
из них – это исходное сообщение, а вторая – ключ.
1
0
1
Выполнение
этой
0
1
1
значениями
иллюстрирует
1
1
0
последовательность
операции
над
рис.
битов,
многобитовыми
4.
Получив
представляющую
зашифрованное таким образом сообщение, его можно расшифровать, выполнив повторно
операцию XOR с тем же ключом7.
2.1.2. Стандарты блочного шифрования. Алгоритм DES
Блочные алгоритмы шифрования являются основным средством криптографической
защиты информации, хранящейся на компьютере пользователя или передаваемой по
7
На основании свойства обратимости операции
22
общедоступной сети. Такое пристальное внимание к данному типу алгоритмов обусловлено
не столько многолетней историей, сколько преимуществами практического применения,
среди которых следует отметить:
-
возможность эффективной программной реализации на современных аппаратно
программных средств;
-
высокую скорость зашифрования / расшифрования как при аппаратной, так и при
программной реализации;
-
высокую гарантированную стойкость; причем стойкость алгоритма блочного
шифрования может быть доказана при помощи математического аппарата (для
большинства асимметричных алгоритмов стойкость основана на “невозможности”
решения какой - либо математической задачи).
Входная последовательность блочных алгоритмов шифрования разбивается на
участки определенной длины (обычно 64 бита для удобства реализации на процессорах с
внутренними регистрами длиною 32 или 64 бита), и преобразования в алгоритме блочного
шифрования совершаются над каждым блоком отдельно. Соответственно выходная
последовательность алгоритма блочного шифрования представляет собой блоки, длина
которых равна длине входных блоков. В случае, когда длина открытого текста некратна
длине входных блоков, в алгоритме шифрования, применяется операции дополнения
(padding) последнего блока открытого текста до необходимой длины. Дополнение
осуществляется приписыванием необходимого числа нулей или случайного набора
символов. В общем случае содержание того, чем мы дополняем блок открытого текста, не
играет роли с точки зрения криптографической стойкости. На приемной стороне необходимо
знать, какое количество символов было добавлено, вот почему вместе с данными дополнения
приписывается длина этих данных.
Суть алгоритмов блочного шифрования заключается в применении к блоку
открытого
текста
многократного
математического
преобразования.
Многократность
подобных операций приводит к тому, что результирующее преобразование оказывается
криптографически более сильным, чем преобразование над отдельно взятым блоком.
Основная цель подобного трансформирования – создать зависимость каждого бита блока
зашифрованного сообщения от каждого бита ключа и каждого бита блока открытого
сообщения. Преобразования, базирующиеся на данных алгоритмах можно разделить на
“сложные” (в современных алгоритмах это обычно нелинейные операции) и ”простые”, в
основе которых лежат перемешивающие операции. Аналитическая сложность раскрытия
алгоритмов блочного шифрования заключается в конструкции первого типа преобразований.
23
Одним
из
самых
распространенных
алгоритмов
блочного
шифрования,
рекомендованных Национальным бюро стандартов США в качестве основного средства
криптографической защиты информации как в государственных, так и в коммерческих
структурах, является Data Encryption Standard (DES). Он был разработан в 1977 году, однако
уже в 1988 было рекомендовано использовать DES только в системах электронного
перевода. С учетом выявленных недостатков DES в начальный вариант стандарта постоянно
вносятся изменения, появляются также и новые алгоритмы, использующие в качестве
основы DES (NewDES, TripleDES и др.). Необходимость разработки новых алгоритмов
обусловлена
большим
числом
атак,
которым
подвергался
DES
за
годы
своего
существования. Кроме того, бурное развитие средств вычислительной техники привело к
тому, что 56-битного ключа, используемого в первоначальном варианте DES, стало
недостаточно, чтобы противостоять атакам, совершаемым методом "грубой силы". Тем не
менее в коммерческой сфере и в системах электронных расчетов DES и по сей день остается
одним из самых популярных алгоритмов.
DES является блочным алгоритмом шифрования с длиной блока 64 бита и
симметричными ключами длиной 56 бит. На практике ключ обычно имеет длину 64 бита, где
каждый восьмой бит используется для контроля четности остальных битов ключа.
Структура алгоритма приведена на рис. 4.
Всего для получения блока зашифрованного сообщения проходит 16 раундов. Это
обусловлено следующими причинами:

12 раундов являются минимально необходимыми для обеспечения должного уровня
криптографической защиты;

при
аппаратной
реализации
использование
16
раундов
позволяет
вернуть
преобразованный ключ в исходное состояние для дальнейших преобразований;

данное количество раундов необходимо, чтобы исключить возможность проведения
атаки на блок зашифрованного текста с двух сторон.
В некоторых реализациях DES блоки открытого сообщения перед тем, как они будут
загружены в регистр сдвига длиной две ячейки и размером ячейки 32 бита, проходят
процедуру начальной перестановки, которая применяется для того, чтобы осуществить
начальное рассеивание статистической структуры сообщения.
В случае использования начальной перестановки после завершения 16 раундов к
полученному блоку применяется обратная перестановка.
24
2.1.3. Стандарты блочного шифрования. Алгоритм ГОСТ
Отечественным
аналогом
DES
является
алгоритм
блочного
шифрования,
специфицированный в ГОСТ 28147-89. Разработчики данного алгоритма сумели органично
соединить в нем две важные, но трудносочетающиеся друг с другом характеристики:

высокую криптографическую стойкость алгоритма;

возможность эффективного программного исполнения (за счет использования узлов,
реализуемых на современной программно-аппаратной платформе).
Алгоритм работает с 64-битными входными блоками, 64-битными выходными
блоками и ключами длиной 256 бит. Использование 256-битного ключа позволяет не
обращать внимания на возможность атаки с применением "грубой силы", поскольку
мощность большинства ключей равна 2256. При этом данный алгоритм предполагает как
эффективную программную, так и аппаратную реализацию.
Рисунок 4. Один этап ГОСТ
Алгоритм может применяться в следующих рабочих режимах:

простая замена;

гаммирование;

гаммирование с обратной связью;

выработка имитовставки.
Для всех четырех режимов применяется одно общее преобразование, которое можно
записать в следующем виде:
Li  Ri 1
Ri  Li 1  f ( Ri 1 , K i )
i  1 31,
25
где L и R – соответственно левая и правая часть 64-битного блока.
Это преобразование характерно для всех раундов (всего их 32), кроме последнего.
Для него преобразование будет иметь вид:
Li  Li 1  f ( Ri 1 , K i )
Ri  Ri 1 , i = 32
Для каждого раунда функция F остается неизменной. Перед началом преобразования
блок открытого текста разбивается на две 32-битные половины L и R, которые помещаются в
два 32-разрядных регистра N1 и N2. Также перед началом зашифрования 256-битный ключ,
разбитый на 8 частей по 32 бита каждая (K0..K7) помещается в ключевое запоминающее
устройство (КЗУ). Далее содержимое регистра N1 суммируется по модулю 232 с очередным
заполнением устройства, а ключевые последовательности выбираются из КЗУ в следующем
порядке:

в раундах с 1-го по 24-й – K0, K1, K2, K3, K4, K5, K6, K7;

в раундах с 25-го по 32-й – K7, K6, K5, K4, K3, K2, K1, K0.
Полученная битовая последовательность разбивается на восемь блоков по 4 бита в
каждом и поступает на вход S-боксов. В них реализуется подстановка, имеющая, например,
следующий вид:
7, 10, 13, 1, 0, 8, 9, 15, 14, 4, 6, 12, 4, 11, 2, 5, 3
Числовое представление битового входа однозначно определяет последовательный
номер числа в подстановке и битовое представление соответствующего числа; таким же оно
будет и на выходе S-бокса. Для каждого S-бокса задается своя подстановка, которая является
долговременным секретным ключом. Генерация подстановок в S-боксах является сложной
математической задачей, от решения которой как раз и зависит стойкость этого алгоритма.
После S-боксов последовательность поступает в циклический регистр сдвига,
который осуществляет смещение на 11 шагов влево. Использование данного регистра вместо
перестановок, используемых в DES, обусловлено тем, что данный регистр легко реализуется
как программно (за счет использования битовой операции циклического сдвига), так и
аппаратно.
Далее происходит поразрядное суммирование по модулю 2 содержимого регистра
циклического сдвига с содержимым регистра N2. Результат суммирования записывается в
регистр N1, а содержимое регистра N2 принимает предыдущее значение N1.
Все эти операции составляют один раунд преобразования (см. рис.5) очередного
открытого блока текста. Специфика различных типов применения ГОСТ вносит свои
дополнения в раунды зашифрования и соответственно, расшифрования.
26
2.2. Ассиметричные алгоритмы шифрования. Стандарт
ассиметричного шифрования RSA
Ассиметричное шифрование предполагает наличие двух ключей. Первый ключ –
открытый
(public)
–
распространяется
совершенно
свободно,
без
всяких
мер
предосторожности, а второй – закрытый, личный (private), нужно держать в секрете. Любое
сообщение, зашифрованное с использованием одного из этих ключей, может быть
расшифровано только с использованием второго ключа. Как правило, отправитель
сообщения пользуется открытым ключом получателя, а получатель – своим личным.
В ассиметричной схеме шифрования оба ключа являются производными от единого
порождающего мастер-ключа (master-key), как это показано на рис. 6. Когда два ключа
сформированы на основе одного, они зависимы в математическом смысле, но ни один из них
не может быть вычислен на основе другого. После того, как вычислены оба ключа, мастерключ уничтожается и таким образом пресекается любая попытка восстановить в дальнейшем
значения производных от него ключей.
шифрование
Читаемый
текст
сообщения
расшифровка
Зашифрованное
сообщение
открытый ключ
Читаемый
текст
сообщения
личный ключ
Мастер-ключ
Рисунок 5. Схема ассиметричного шифрования
Идея асимметричных алгоритмов тесно связана с развитием теории односторонних
функций и с теорией сложности. Под односторонней функцией мы будем понимать
легковычисляемое отображение f(x): X Y, x  X, при этом обратное отображение является
сложной задачей. Она называется трудновычисляемой, если нет алгоритма для ее решения с
полиномиальным временем работы. Легковычисляемой будем называть задачу, имеющую
27
алгоритм со временем работы, представленным в виде полинома низкой степени
относительно входного размера задачи, а еще лучше алгоритм с линейным временем работы.
Развитием идеи односторонних функций явилось построение односторонних
функций с секретом (с потайным ходом). Такой функцией называется f(x) = y8, значение
которой, как и в предыдущем случае, легко вычислить, тогда как обратное значение без
знания некоторого секрета трудно вычислить. Знание же секрета позволяет достаточно
просто реализовывать операцию обращения односторонних функций с секретом. На
практике при применении асимметричного алгоритма шифрования в роле секретного ключа
выступает само знание секрета, а в роле открытого ключа – знание процедуры вычисления
односторонней функции с секретом.
Вместе с тем необходимо отметить, что стойкость большинства современных
асимметричных алгоритмов базируется на двух математических проблемах, которые на
данном этапе являются трудновычисляемыми даже для метода “грубой силы”:
- дискретное логарифмирование в конечных полях;
- факторизация больших чисел.
Поскольку на сегодняшний день не существует эффективных алгоритмов решения
данных задач либо их решения требуют привлечения больших вычислительных ресурсов или
временных затрат, эти математические задачи нашли широкое применение в построении
асимметричных алгоритмов. Их стойкость рассматривается как возможность свести
проблему вскрытия алгоритмов к решению одной из вышеперечисленных математических
головоломок.
Самым распространенным алгоритмом асимметричного шифрования является
алгоритм RSA, названный по первым буквам имен его создателей (Rivest, Shamir, Adleman).
Разработчиком данного алгоритма удалось эффективно воплотить идею односторонних
функций с секретом. Стойкость RSA базируется на сложности факторизации больших целых
чисел.
Каждый участник информационного обмена генерирует пару ключей (открытый и
секретный) в соответствии со следующими правилами:
1.
Выбираются два больших простых целых числа p и q приблизительно
одинакового размера. Выбор чисел p и q определяется следующими
соображениями:
8
В качестве такой функции У. Диффи и М. Хеллман предложили функцию дискретного возведения в степень
f ( x)   x (mod p) , где x – целое число, 1 ≤ x ≤ p – 1. Обратной к этой функции является функция f--1(y),
которая ставит в соответствие заданному значению y такое значение x, для которого   y(mod p) . Задача
нахождения такого x называется задачей дискретного логарифмирования. Решение такой задачи является
вычислительно неосуществимым для модулей p ≥ 512.
÷
28
-
увеличение
порядка
чисел
введет
к
замедлению
операции
зашифрования/расшифрования;
-
увеличение порядка чисел p и q ведет к увеличению стойкости алгоритма,
поэтому
при
выборе
чисел
следует
руководствоваться
практической
необходимостью. Так, например, при реализации RSA в интеллектуальных
карточках с точки зрения скоростных параметров системы не следует выбирать
слишком большие p и q в связи с ограниченными вычислительными
возможностями, заложенными в данных устройствах. На практике обычно
рекомендуется выбирать числа, содержащие порядка
150-200 десятичных
знаков.
2.
Вычисляется модуль системы n = pq и (n) = (p-1)(q-1) – функция Эйлера
3.
Выбирается достаточно большое число е, удовлетворяющее условию:
1 e (n), и взаимно простое с (n).
4.
Используя расширенный алгоритм Евклида, вычисляется большое целое
число d, отвечающее условию:
Ed = 1 (mod (n))
1 < d < (n)
Таким образом, секретным ключом является пара чисел (n,d), а открытым – пара
чисел (n,e). Открытый ключ помещается в общедоступный справочник
После выбора параметров системы (n, e, d) абонент готов к приему зашифрованных
сообщений. Их передача состоит из следующих шагов:
1. Входное сообщение разбивается на блоки mi их размер определяется целым k,
соответствующим неравенству 10k-1< n < 10k.
2. Вычисляется значение c = m ie mod n.
3. Значение ci, которое является зашифрованным блоком сообщения, посылается по
открытым каналам передачи данных.
Расшифрование заключается в вычислении значения mi = c id mod n.
Доказательством того факта, что расшифрование выполняется только абонентом,
знающим секретную экспоненту зашифрования d, является cid mod n = mie d mod n, с учетом,
что ed = 1 (mod (n)). При этом получаем ed = 1 + k(n), где k -
целое число,
удовлетворяющее этому равенству. Поскольку mi(m) mod n – единичный элемент группы
относительно операции умножения, элемент mi тоже принадлежит к данной группе. В этом
случае:
cid mod n = mimik(m)mod n = mi.
29
Среди
наиболее
известных
недостатков
алгоритма
RSA
можно
выделить
некорректный выбор значений p и q. Числа p и q должны быть простыми и не содержаться
ни в одной из известных таблиц простых чисел. Эти числа также не должны быть близкими
друг к другу. Если (p - q) / 2 мало и (p + q) / 2 немного больше, чем n, то при (p + q)2 / 4 – n
C (p – q)2 / 4 левая часть равенства образует полный квадрат. При факторизации n
перебираем целые числа на соответствие неравенству x  n до тех пор, пока не найдем
такое значение, что x2 – n = y2. Тогда p = x + y и q = x – y . Учитывая изложенный факт, а
также ряд других атак, основанных на неправильном выборе чисел p и q, сформулируем
следующие требования к выбору чисел p и q:
1. Данные числа должны быть большими числами одинаковой длины.
2. Различие между p и q должно быть большим.
3. Числа p и q должны быть строго простыми. Число называется строго простым,
если выполнены условия:
а) р – 1 должно иметь большой простой делитель (обозначим его через r);
б) р + 1 должно иметь большой простой делитель ;
в) r – 1 должно иметь большой простой делитель.
Требование а) обусловлено противодействием алгоритмам факторизации n (один из
таких алгоритмов был предложен Поллардом). Аналогично обосновывается требование б).
Выполнение на практике требования в) позволяет противостоять циклическим атакам.
3. Ключевая информация
Кроме выбора подходящей для конкретной ИС кpиптогpафической системы есть
еще одна важная проблема - управление ключами. Как бы ни была сложна и надежна сама
криптосистема,
она
основана
на
использовании
ключей.
Если
для
обеспечения
конфиденциального обмена информацией между двумя пользователями процесс обмена
ключами тривиален, то в ИС, где количество пользователей составляет десятки и сотни
управление ключами - серьезная проблема.
Под ключевой информацией понимается совокупность всех действующих в ИС
ключей. Если не обеспечено достаточно надежное управление ключевой информацией, то
завладев ею, злоумышленник получает неограниченный доступ ко всей инфоpмации.
Управление ключами - информационный процесс, включающий в себя три элемента:

генерацию ключей;

накопление ключей;

pаспpеделение ключей.
30
Рассмотрим, как они должны быть реализованы для того, чтобы обеспечить
безопасность ключевой инфоpмации в ИС.
3.1. Генерация ключей
При использовании криптографических алгоритмов одной из самых сложных задач
является генерация ключей. В этом случае основной проблемой оказывается поддержание
определенных криптографических свойств создаваемых ключей. Существуют два метода
генерации ключей – детерминированный и недетерминированный.
3.1.1. Детерминированные методы
В основе этих методов лежит формирование из случайной последовательности
малой длины псевдослучайной последовательности большей длины, которая не отличалась
бы
по
своим
статистическим
свойствам
от
первоначальной.
Одним
из
самых
распространенных методов формирования псевдослучайных последовательностей является
использование
сдвиговых
функционирование
применение
регистров
описывается
которых
в
с
линейными
линейными
качестве
обратными
рекуррентными
генераторов
связями.
Их
последовательностями,
псевдослучайных
ключевых
последовательностей не всегда является допустимым. В связи с этим широкое
распространение получили процессы, которые носят псевдослучайный характер и имеют
физическую природу (движение мыши, время реакции пользователя на работу с
устройствами ввода/вывода и т.д.).
Существует ряд математических критериев, оценивающих, насколько распределение
полученной
последовательности
близко
к
полиномиальному
равновероятному
распределению. Выбор критериев зависит прежде всего от критических параметров,
отклонение
которых
от
заданной
величины
может
повлечь
за
собой
угрозу
криптографической стойкости. В любом случае при генерации ключей желательно
ориентироваться на следующие параметры:

проверку частот появления последовательности из символов k (k-грамма) по
критерию x-квадрат;

проверку частот исходов по обобщенному критерию x-квадрат;

проверку максимального и минимального значения маркировки;

проверку длины интервалов непопаданий в заданный диапазон;

проверку на монотонность.
31
3.1.2. Недетерминированные методы
В основе данных методов – использование случайных физических процессов,
исходы которых могут служить для дальнейшего изготовления ключей. Простейшим
примером получения случайных исходов является подбрасывание игральных костей или
монеты. Теоретически они вполне могли бы послужить генераторами ключевой
последовательности, хотя на практике их применение неприемлемо из-за низкой
производительности.
В настоящее время широко применяются физические генераторы шума, выходные
последовательности которых являются случайно распределенными (например, шумящие
диоды, импульсные генераторы, счетчики Гейгера и т.д.). Снятые с этих приборов сигналы
оцифровываются и представляются в виде двоичных последовательностей для дальнейшего
побитового сложения или служат исходной последовательностью для формирования ключей.
Недетерминированные генераторы ключевой последовательности предотвращают
наблюдение за работой генератора или вмешательство в нее, обеспечивают стабильность
выхода генератора и контроль за смещением криптографически важных характеристик.
Приведенная
выше
классификация
относится
к
генерации
ключей
для
симметричных алгоритмов шифрования. Проблема генерации ключей для ассиметричных
алгоритмов связана с получением больших простых чисел и проверкой их на простоту.
3.1.3. Генерация сеансовых ключей
Существует
огромное
количество
методов
генерации
сеансовых
ключей.
Рассмотрим их на базе стандарта ANSI Х9.17. Подобная операция производится на основе
секретного ключа пользователя R и секретного начального заполнения V0 длиной 64 бита. В
качестве алгоритма генерации рекомендуется использовать алгоритм шифрования DES. Для
вычисления случайного ключа Ri производятся следующие действия:
Ri  Er ( Er (Ti )Vi)
Vi 1  Er ( Er (Ti )  Ri )
где Ti – метка времени.
В результате получаем 64-битный сеансовый ключ Ri. Если необходимо получить
128-битный ключ, вышеуказанным способом создаются два ключа и посредством операции
конкатенации получается 128-битный ключ.
3.1.4. Генерация ключей на основе пароля пользователя
Одним из самых распространенных способов создания генерации сеансовых ключей
является
их
генерация
на
основе
пароля
пользователя.
Пароль
подвергается
32
криптографическому преобразованию, в результате чего получается ключ, который может
быть
использован
для
дальнейшего
зашифрования,
например,
сетевого
трафика
пользователя.
К достоинствам этого метода следует отнести отсутствие необходимости хранить
секретные ключи, пользователю нужно лишь помнить свой пароль, на основе которого в
дальнейшем будет создан его секретный ключ.
Недостатком данного метода является возможность проведения атаки со словарем.
Суть заключается в том, что можно угадать пароль пользователя путем перебора наиболее
вероятных слов, поскольку при задании пароля для удобства запоминания, скорее всего,
будет использован легко запоминающийся набор символов.9
3.2. Накопление (хранение) ключей
Под накоплением ключей понимается организация их хранения, учета и удаления.
Поскольку ключ является самым привлекательным для злоумышленника объектом,
открывающим ему путь к конфиденциальной инфоpмации, то вопросам накопления ключей
следует уделять особое внимание.
Секретные ключи никогда не должны записываться в явном виде на носителе,
который может быть считан или скопирован.
В достаточно сложной ИС один пользователь может работать с большим объемом
ключевой инфоpмации, и иногда даже возникает необходимость организации мини-баз
данных по ключевой инфоpмации. Такие базы данных отвечают за принятие, хранение, учет
и удаление используемых ключей.
Каждая информация об используемых ключах должна храниться в зашифрованном
виде. Ключи, зашифровывающие ключевую информацию называются мастеp-ключами.
Желательно, чтобы мастеp-ключи каждый пользователь знал наизусть, и не хранил их
вообще на каких-либо материальных носителях.
Очень важным условием безопасности инфоpмации является периодическое
обновление ключевой инфоpмации в ИС. При этом переназначаться должны как обычные
ключи, так и мастеp-ключи. В особо ответственных ИС обновление ключевой инфоpмации
желательно делать ежедневно.
3.3. Распределение ключей
Распределение ключей - самый ответственный процесс в управлении ключами. К
нему предъявляются два требования:
9
См. приложение 1
33
1. Оперативность и точность pаспpеделения
2. Скрытность pаспpеделяемых ключей.
В последнее время заметен сдвиг в сторону использования криптосистем с
открытым ключом, в которых проблема pаспpеделения ключей отпадает. Тем не менее
pаспpеделение ключевой инфоpмации в ИС требует новых эффективных решений.
Распределение
ключей
между пользователями
реализуется
двумя
разными
подходами:
1. Путем создания одного ли нескольких центров pаспpеделения ключей.
Недостаток такого подхода состоит в том, что в центре pаспpеделения известно,
кому и какие ключи назначены, и это позволяет читать все сообщения, циpкулиpующие в
ИС. Возможные злоупотребления существенно влияют на защиту.
2. Прямой обмен ключами между пользователями информационной системы.
В этом случае проблема состоит в том, чтобы надежно удостоверить подлинность
субъектов.
В обоих случаях должна быть гаpантиpована подлинность сеанса связи. Это можно
обеспечить двумя способами:
1. Механизм запpоса-ответа, который состоит в следующем: если пользователь А
желает быть уверенным, что сообщения, которые он получает от В, не являются
ложными, он включает в посылаемое для В сообщение непредсказуемый элемент
(запрос). При ответе пользователь В должен выполнить некоторую операцию над
этим элементом (напpимеp, добавить 1). Это невозможно осуществить заранее, так
как не известно, какое случайное число придет в запросе. После получения ответа с
результатами действий пользователь А может быть уверен, что сеанс является
подлинным. Недостатком этого метода является возможность установления хотя и
сложной закономерности между запросом и ответом.
2. Механизм отметки времени ("временной штемпель"). Он подразумевает фиксацию
времени для каждого сообщения. В этом случае каждый пользователь ИС может
знать, насколько "старым" является пришедшее сообщение.
34
4. Электронная цифровая подпись
4.1. Общие сведения об электронной цифровой подписи
На протяжении многих веков при ведении деловой переписки, заключении
контрактов и оформлении любых других важных бумаг подпись ответственного лица или
исполнителя была непременным условием признания его статуса или неоспоримым
свидетельством его важности. Подобный акт преследовал две цели:
 гарантирование истинности письма путем сличения подписи с имеющимся
образцом;
 гарантирование авторства документа (с юридической точки зрения).
Выполнение данных требований основывается на следующих свойствах подписи:
 подпись аутентична, то есть с ее помощью получателю документа можно доказать,
что она принадлежит подписывающему (на практике это определяется графологической
экспертизой);
 подпись неподделываема, то есть служит доказательством, что только тот человек,
чей автограф стоит на документе, мог подписать данный документ, и никто другой не смог
бы этого сделать;
 подпись непереносима, то есть является частью документа и поэтому перенести ее
на другой документ невозможно;
 документ с подписью является неизменяемым, то есть после написания его
невозможно изменить, оставив данный факт незамеченным;
 подпись неоспорима, то есть человек, подписавший документ, в случае признания
экспертизой, что именно он засвидетельствовал данный документ, не может оспорить факт
подписания;
 любое лицо, имеющее образец подписи, может удостовериться в том, что данный
документ подписан владельцем подписи.
С переходом к безбумажным способам передачи и хранения данных, а также с
развитием систем электронного перевода денежных средств, в основе которых –
электронный
аналог
бумажного
платежного
поручения,
проблема
виртуального
подтверждения аутентичности документа приобрела особую остроту. Развитие любых
подобных систем теперь немыслимо без существования электронных подписей под
электронными документами.
Существует несколько методов построения схем ЭЦП, а именно:
35
 шифрование электронного документа (ЭД) на основе симметричных алгоритмов.
Данная схема предусматривает наличие в системе третьего лица (арбитра), пользующегося
доверием участников обмена подписанными подобным образом электронными документами.
Взаимодействие пользователей данной системой производится по следующей схеме:
участник А зашифровывает сообщение на своем секретном ключе К А, знание
-
которого разделено с арбитром, затем шифрованное сообщение передается
арбитру
с
указанием
адресата
данного
сообщения
(информация,
идентифицирующая адресата, передается также в зашифрованном виде);
арбитр расшифровывает полученное сообщение на ключе КА , производит
-
необходимые проверки и затем зашифровывает на секретном ключе участника В
(КВ). Далее зашифрованное сообщение посылается участнику В вместе с
информацией, что оно пришло от участника А;
участник В расшифровывает данное сообщение и убеждается в том, что
-
отравителем является участник А.

использование симметричных алгоритмов шифрования. Фактом подписания
документа в данной схеме является зашифрование документа на секретном ключе его
отправителя.

зашифрование окончательного результата обработки ЭД хэш-функцией при
помощи асимметричного алгоритма.
Генерация подписи происходит следующим образом:
1.
Участник А вычисляет хэш-код от ЭД. Полученный хэш-код проходит
процедуру преобразования с использованием своего конкретного ключа. После
чего полученное значение (которое и является ЭЦП) вместе с ЭД отправляется
участнику В.
2.
Участник В должен получить ЭД с ЭЦП и сертифицированный открытый ключ
участника А, а затем произвести расшифрование на нем ЭЦП, сам ЭД
подвергается операции хэширования, после чего результаты сравниваются, и
если они совпадают, то ЭЦП признается истинной, в противном случае
ложной.
Эффективность реализации данной схемы по сравнении с предыдущей состоит в
применении медленных процедур асимметричного шифрования к хэш-коду ЭД, который
значительно короче самого ЭД.
Стойкость данного типа ЭЦП основано на стойкости асимметричных алгоритмов
шифрования и применяемых хэш-функций.
36
Кроме вышеперечисленных существуют “экзотические” варианты построения схем
ЭЦП (групповая подпись, неоспариваемая подпись, доверенная подпись и т. п.). Появление
этих разновидностей обусловлено многообразием задач, решаемых с помощью электронных
технологий передачи и обработки ЭД.
В общем случае подписанный ЭД выглядит как пара, состоящая из бинарных строк
(M, S), где М представляет собой ЭД, а S – решение уравнения Fk(S) = M, где Fk является
функцией с секретом. В связи с выше изложенным определением ЭЦП можно выделить
следующие ее свойства:
-
является не подделываемой, поскольку решить уравнение Fk(S) = M может
только обладатель секрета К;
-
однозначно идентифицирует автора , то есть человека, подписавшего данный
документ;
-
верификация подписи (проверка) производиться на основе знания функции Fk;
-
является не переносимой на другой ЭД;
-
ЭД с ЭЦП может передаваться по открытым каналам, поскольку любое
изменение ЭД приведет к тому, что процедура проверки ЭЦП обнаружит
данный факт.
4.2. Алгоритмы цифровой подписи
4.2.1. Цифровая подпись Эль-Гамаля
Рассмотрим систему цифровой подписи, носящую имя ее изобретателя Эль-Гамаля,
основанную на схеме формирования открытых и секретных ключей, которая используется в
методе Диффи-Хеллмана. Пусть мы имеем большое простое число p, такое, что разложение
числа p – 1 содержит, по крайней мере, один большой простой множитель и первообразный
корень  по модулю p.
Механизм подписывания состоит в следующем. Некоторый абонент А выбирает
секретный ключ xA, по которому формирует секретный ключ y A   x A . Подписью абонента
А под документом M (подписываемое сообщение должно иметь длину меньше простого
модуля p, т.е. M < p) служит пара чисел (r, s) (где 0 ≤ r < p - 1 и 0 ≤ s < p – 1), которая
удовлетворяет уравнению ( M )  y Ar r s (mod p) .
Это уравнение служит для проверки того факта, что документ подписан
абонентом А.
37
Данная система электронной цифровой подписи основана на том, что только
действительный владелец секретного ключа xA может выработать пару чисел (r, s),
удовлетворяющую уравнению проверки подписи. Используя значение xA, абонент А
вырабатывает подпись по следующему алгоритму:
1. Сгенерировать
случайное
число
k,
удовлетворяющее
условию:
0 < k < p – 1 и НОД(k, p – 1) = 1
2. Вычислить r   k (mod p)
3. Вычислить s из уравнения M  x A r  ks(mod( p  1)) .
Из теории чисел известно, что это уравнение имеет решение для s, если:
НОД(k, p – 1) = 1.
Владелец секретного ключа в состоянии подписать документ, а его подпись может
быть проверена по его открытому ключу. Нахождение пары чисел (r, s) без знания
секретного ключа вычислительно сложно. Различных подписей, соответствующих данному
документу, может быть чрезвычайно много, т.к. k может иметь различные значения, но
выработать правильную подпись способен только владелец секретного ключа. Множество
возможных подписей отличаются значением r, но для данного r найти соответствующее
значение s без знания секретного ключа практически невозможно. Для вычисления
секретного ключа по открытому ключу необходимо решить задачу дискретного
логарифмирования, которая является вычислительно сложной.
4.2.2. Алгоритм DSA
Этот алгоритм представляет собой аналог алгоритма, предложенного Эль-Гамалем,
но с некоторыми изменениями, в частности за счет уменьшения числового порядка одного из
параметров системы.
DSA является классическим примером схемы ЭЦП на основе использования хэшфункции и ассиметричного алгоритма шифрования.
Алгоритм использует следующие параметры:
P – простое число длиной L бит, где L принимает значение, кратное 64 в диапазоне
от 512 до 1024.
Q – 160-битовое простое число – множитель p – 1
G = h ( p 1) / q mod p , где h – любое число меньшее p – 1, для которого h ( p 1) / q mod p  1
X – число, меньшее q
Y - g x mod p
В алгоритме также используется однонаправленная хэш-функция: H(m).
38
Первые три параметра p, q и g открыты и могут быть общими для пользователей
сети. Закрытым является x, а открытым – y. Чтобы подписать сообщение m:
1. Абонент А генерирует случайное число k < q
2. Абонент А генерирует:
r  ( g k mod p ) mod q
s  (k 1 ( H (m)  xr)) mod q
Его подписью служат параметры r и s, он посылает их абоненту Б.
3. Абонент Б проверяет подпись, вычисляя:
w  s 1 mod q
u1  ( H (m) * w) mod q
u 2  (rw) mod q
v  (( g u1 * y u2 ) mod p) mod q
Если v = r, то подпись правильна.
4.2.3. Слепая подпись Чаума
Понятие слепой подписи было введено Д. Чаумом, который также предложил первые
варианты ее реализации. Под слепой подписью понимается двухключевая криптосистема,
которая позволяет
осуществить подписывание электронных сообщений таким образом,
чтобы подписывающая сторона не имела доступа к информации, содержащейся в
подписываемом сообщении. Такое на первый взгляд нелепое требование в ряде
криптографических систем имеет очень большое значение. Слепая подпись используется,
например, в системах тайного электронного голосования и электронных деньгах, т.е. в таких
криптографических системах, где требуется обеспечить решение задачи неотслеживаемости.
Сама процедура слепой подписи требует от одного из участников согласия на то, что он
может подвергнуться некоторым посягательствам путем приписывания ему определенных
обязательств, которые он бы не хотел брать на себя.
Рассмотрим протокол слепой подписи Чаума, основанной на уже известной
криптосистеме RSA. Пусть субъект А желает подписать некоторое сообщение M у субъекта
Б. Для этого необходимо осуществить следующие шаги:
1. Пользователь А (субъекты являются пользователями данной криптосистемы)
генерирует случайное простое число k, такое, что НОД(k, N) = 1, где N – часть
открытого ключа пользователя Б.
2. Далее он вычисляет значение
M '  k e M (mod N ) , которое предоставляет для
подписывания. Подписывающий не может получить доступ к сообщению M,
39
поскольку оно зашифровано путем наложения на него "разового" ключа ke и
использованием операции модульного умножения.
3. Пользователь Б подписывает сообщение M' в соответствии с процедурой
подписывания в криптосистеме RSA: S '  (k e M ) d  kM d (mod N ) .
Сформировав подпись S', подписывающий также не имеет возможности получить
доступ к значению Md, поскольку оно зашифровано путем наложения на него "разового"
ключа k.
4. Используя расширенный алгоритм Евклида, пользователь Б вычисляет для числа k
мультипликативно обратный элемент k-1 в поле вычетов по модулю N и
восстанавливает
подпись
для
сообщения
M,
а
именно:
S '  k 1 S '  k 1kM d  M d (mod N ) .
Таким образом, цель достигнута – пользователь А сформировал правильную
подпись пользователя Б, соответствующую сообщению M, причем он уверен, что
подписывающий не знает содержания сообщения M.
5. Хэш-функции и хэширование
5.1. Общие сведения
Выше нами были рассмотрены механизмы двухключевой криптографии, которые
дают возможность подписывать сообщения ограниченной длины (порядка 10 3 бит). Если
сообщение имеет большой размер, то при прямолинейном использовании таких механизмов
потребуется разбить исходное сообщение на большое число блоков меньшего размера и
выработать столько подписей, сколько блоков будет содержаться в сообщении. Это сильно
усложняет проблему хранения подписей и самих подписанных сообщений, а также
организации баз данных, содержащих большое число подписанных документов. Для
упрощения этой проблемы подписывается не сам документ, а некоторый его цифровой образ
небольшого размера, полученный по специальным криптографическим процедурам,
называемым хэшированием.
Алгоритм хэширования должен быть таким, чтобы обеспечить вычислительную
неосуществимость нахождения двух сообщений с одинаковым значением цифрового образа
(значением хэш-функции от сообщения). В настоящее время разработаны алгоритмы,
которые удовлетворяют этому условию и позволяют легко вычислить значение хэш-функции
от данного документа. Вместо подписывания большого числа отдельных частей ЭД в
реальных системах цифровой подписи осуществляется вычисление хэш-функции от
40
документа и подписывание хэш-функции. Если хэш-функция подписана, документ считается
подписанным.
Таким образом, хэш-функции являются необходимым элементом при применении
ряда криптографических алгоритмов. Под ними понимаются функции, отображающие
последовательность произвольной длины в значение фиксированной длины, называемой
хэш-кодом или выжимкой.
5.2. Типы хэш-функций
Существует три типа построения хэш-функций:
-
на основе какой-либо трудновычисляемой математической задачи;
-
на основе алгоритмов блочного шифрования;
-
разработанные с нуля.
Каждый из выше перечисленных методов имеет свои достоинства и недостатки,
однако наиболее распространенными на сегодняшний день оказались последние два. Это
связано с тем, что при построении хэш-функций с нуля появляется возможность учитывать
такое их свойства, как эффективная программная реализация. Широкое применение хэшфункций, построенных на основе алгоритмов блочного шифрования, является результатом
тщательной проработке вопроса стойкости многих из существующих алгоритмов.
5.3. Требования к хэш-функциям.
При практическом использовании хэш-функций должны выполняться следующие
требования:
-
алгоритм должен обладать высокой скоростью обработки информации;
-
хэш-функция должна быть стойкой против атаки методом “грубой силы”;
-
программная реализация хэш-функции должна быть оптимизирована под
использование на современной аппаратно-программной базе.
Этим требованиям должен удовлетворять как сам алгоритм выработки хэшзначения, так и хэширующая функция.
В современных условиях алгоритмическое повышение скорости выработки хэшзначения может быть достигнуто за счет применения простого преобразования, которое
переводит одно сообщение в другое посредством элементарной операции, например
удаления произвольного блока сообщения. Подобными преобразованиями можно также
описать зависимость между двумя практически не отличающимися друг от друга
сообщениями. Данный тип сообщения очень часто встречается в банковском деле, например
с целью заполнения бланков платежных поручений. Отсюда следует, что для увеличения
41
скорости обработки необходимо, чтобы алгоритм выработки хэш-значения включал в себя
также алгоритм вычисления хэш-значения одного сообщения из хэш-значения другого
сообщения, которое получается из начального с помощью элементарного преобразования.
5.4. Стойкость хэш-функций.
С точки зрения криптографической стойкости важным свойством хэш-функций
является отсутствие коллизий, то есть невозможность найти такие значения х  у, чтобы h(x)
= h(y). В криптографических приложениях важным понятием является криптографически
стойкая хэш-функция, для которой не существует эффективного алгоритма нахождения
значений х  у,где выполнялось бы условие h(x) = h(y) (функция, стойкая в сильном смысле),
или не существует эффективного алгоритма нахождения коллизии при заданном х такого у 
х, что h(x) = h(y) (функция, стойкая в слабом смысле). Росс Андерсон показал, что
отсутствие коллизий не позволяет судить о практической стойкости хэш-функций. Другими
словами, данное требование носит формальный характер. Практически значимым является
отсутствие у хэш-функции корреляции. Свободной от корреляции называется хэш-функция,
у которой не возможно найти пары таких значений х  у, что вес Хэмминга10 двоичного
вектора h(x) XOR h(y) будет меньше веса Хэмминга применительно к двоичному вектору
h(M) для некоторого малого М. Свобода от корреляции с точки зрения криптографической
стойкости является гораздо более сильным свойством хэш-функции, чем свобода от
коллизий. Данный факт подтверждается тем, что из любой хэш-функции, являющейся
свободной от коллизий и одновременно свободной от корреляций, можно построить другую
хэш-функцию, которая тоже будет свободной от коллизии, но при этом может не сохранить
свойства свободы от корреляции.
5.5. Алгоритмы хэширования
Рассмотрим наиболее известные на сегодняшний день алгоритмы хэширования, а
именно MD5 и SHA.
5.5.1. Алгоритм MD5
MD5 – это односторонняя функция, разработанная Роном Ривестом. Ее результатом
является 128-битное хэш-значение.
Весом Хэмминга называется целочисленная функция WH, значение которой равно числу ненулевых
компонентов вектора X.
10
42
После некоторой первоначальной обработки MD5 обрабатывает входной текст 512битовыми блоками, разбитыми на 16 32-битовых блоков. Выходом алгоритма является набор
из 4 32-битовых блоков, которые объединяются в единое 128-битное хэш-значение.
Во-первых, сообщение дополняется так, чтобы его длина была на 64 бита короче
числа, кратного 512. Этим дополнением является 1, за которой вплоть до конца сообщения
дописывается столько нулей, сколько нужно. Затем к результату добавляется 64-битовое
представление длины сообщения. Эти два действия служат для того, чтобы длина сообщения
была кратна 512 битам, и чтобы гарантировать, что разные сообщения не будут выглядеть
одинаково после дополнения. Затем инициализируются четыре переменных:
A = 0x01234567
B = 0x89abcdef
C = 0xfedcba98
D = 0x76543210
Они называются переменными сцепления.
После этого начинается главный цикл алгоритма. Он продолжается, пока не
исчерпаются 512-битовые блоки сообщения.
Четыре переменных копируются в другие переменные A → a, B → b, C → c, D → d.
Главный цикл состоит из четырех очень похожих этапов (см. рис. 7). На каждом из
них 16 раз используются различные операции. Каждая операция представляет собой
нелинейную функцию над тремя из a, b, c, d. Затем эта операция добавляет результат к
четвертой переменной, подблоку текста и константе. Далее результат циклически сдвигается
вправо на переменное число битов и добавляет результат к одной из переменных a, b, c, d.
Наконец результат заменяет одну из переменных.
5.5.2. Алгоритм безопасного хэширования SHA
Этот стандарт определяет алгоритм безопасного хэширования (Secure Hash
Algorithm), необходимый для обеспечения безопасности алгоритма цифровой подписи DSA
(Digital Signature Algorithm). Для любого входного значения длиной меньше 264 бит SHA
выдает 160-битовый результат, называемый кратким содержанием сообщения, которое
далее становится входом DSA, который вычисляет подпись для всего сообщения.
SHA называется безопасным, т.к. он разработан так, чтобы было вычислительно
невозможно найти сообщение, соответствующее данному краткому содержанию сообщения
или найти два различных сообщения с одинаковым кратким содержанием. Любые
изменения, произошедшие при передаче сообщения, с очень высокой вероятностью приведут
к изменению краткого содержания сообщения, и подпись не пройдет проверку.
43
Алгоритм SHA состоит из следующих шагов:
Во-первых, сообщение дополняется так, чтобы его длина была кратной 512 битам.
Для этого используется то же дополнение, что и в MD5.
Инициализируются пять 32-битовых переменных:
A = 0x67452301
B = 0xefcdab89
C = 0x98badcfe
D = 0x10325476
E = 0xc3d2e1f0
Затем начинается главный цикл алгоритма. Он обрабатывает сообщение 512битовыми блоками и продолжается, пока не исчерпаются все блоки сообщения.
Сначала пять переменных копируются в другие переменные: A → a, B → b, C → c, D
→ d, E → e.
Главный цикл состоит из четырех этапов по 20 операций в каждом. Каждая операция
представляет собой нелинейную функцию над тремя из a, b, c, d, e, затем выполняется сдвиг
и сложение аналогично MD5.
В SHA используются следующие функции:
f t ( X , Y , Z )  ( X  Y )  ((X )  Z ) , для t = 0…19
f t ( X , Y , Z )  X  Y  Z , для t = 20…39
f t ( X , Y , Z )  ( X  Y )  ( X  Z )  (Y  Z ) , для t = 40…59
f t ( X , Y , Z )  X  Y  Z , для t = 60…79
а также следующие константы:
Kt = 0x5a827999, для t = 0…19
Kt = 0x6ed9eba1, для t = 20…39
Kt = 0x8f1bbcdc, для t = 40…59
Kt = 0xca62c1d6, для t = 60…79
Блок сообщения превращается из шестнадцати 32-битовых слов (M0 по M15) в
восемьдесят 32-битовых слов (W0 по W79) с помощью следующего алгоритма:
Wt  M t , для t = 0…15
Wt  (Wt 3  Wt 8  Wt 14  Wt 16 )  1 , для t = 16…79
Если t – это номер операции (от 1 до 80), Wt представляет собой t-ый подблок
расширенного сообщения, а <<<s – это циклический сдвиг влево на s бит, то главный цикл
выглядит следующим образом:
44
For t:=0 to 79 do
Begin
temp:=(a<<<5)+ft(b,c,d)+e+Wt+Kt;
e:=d;
d:=c;
c:=b<<<30;
b:=a;
a:=temp;
End;
На рис. 8 показана одна операция. Сдвиг переменных выполняет ту же функцию,
которую в MD5 выполняет использование в различных местах различных переменных.
Рисунок 6. Одна операция SHA
Дальнейшие вычисления рассматривать не будем ввиду их большого объема.
После всех вычислений a, b, c, d, e добавляются соответственно к A, B, C, D, E, и
алгоритм продолжается для следующего блока данных. Окончательным результатом служит
объединение A, B, C, D, E.
На этом мы закончили описание проблематики, методов и области применения
современной криптографии. Как видно, в информационном обществе криптография
занимает весьма значительное место, что, безусловно, объясняется не только бурным
развитием информационных технологий, но и повышением степени актуальности и
безопасности самой информации.
6. Краткое введение в криптоанализ
Рассмотрение современных алгоритмов шифрования было бы неполным без
изучения способов их взлома, а также методов защиты от него. В этой главе мы кратко
45
рассмотрим
теоретические
основы
второй
отрасли
современной
криптологии
–
криптоанализа, а также попытаемся осветить некоторые наиболее употребительные его
методы.
6.1. Почему криптосистемы ненадежны
В компьютерном и околокомпьютерном мире все время появляется информация об
ошибках или "дырах" в той или иной программе (в т.ч. применяющей криптоалгоритмы), или
о том, что она была взломана (cracked). Это создает недоверие как к конкретным
программам, так и к возможности вообще защитить что-либо криптографичеcкими методами
не только от спецслужб, но и от простых хакеров.
Поэтому знание истории атак и "дыр" в криптосистемах, а также понимание причин,
по которым они имели место, является одним из необходимых условий разработки
защищенных систем. Перспективным направлением исследований в этой области является
анализ успешно проведенных атак или выявленных уязвимостей в криптосистемах с целью
их обобщения, классификации и выявления причин и закономерностей их появления и
существования.
По аналогии с таксономией причин нарушения безопасности ВС, выделим
следующие причины ненадежности криптографических программ (см. рис. 9):
1. Невозможность применения стойких криптоалгоритмов;
2. Ошибки в реализации криптоалгоритмов;
3. Неправильное применение криптоалгоритмов;
4. Человеческий фактор.
Отметим сразу, что рассматриваемые ниже причины покрывают только два вида
потенциально возможных угроз: раскрытия и целостности, оставляя в стороне угрозу
отказа в обслуживании, которая приобретает все большее значение по мере развития
распределенных криптосистем.
46
Рисунок 7. Причины ненадежности криптоалгоритмов
Как видно из этой схемы, причин, влияющих на надежность криптосистемы,
существует очень много, поэтому при разработке шифров следует учитывать если не все, то
хотя бы самые главные из этих причин (неправильное применение, малая длина ключа,
хранение ключа вместе с данными и т.д.) и стараться исключить их из разрабатываемой
криптосистемы.
6.2. Виды атак на криптоалгоритмы
В современном криптоанализе рассматриваются атаки на засекреченные системы на
основе следующих известных данных:

Шифртекста;

Открытого текста и соответствующего ему шифртекста;

Выбранного открытого текста;

Выбранного шифртекста;

Адаптированного открытого текста;

Адаптированного шифртекста.
47
Кроме того, рассматриваются следующие методы инженерного (технического)
криптоанализа с использованием перечисленных выше известных данных:

Преднамеренно генерируемых аппаратных ошибок;

Замеров потребляемой мощности;

Замеров времени вычислений.
Рассмотрим перечисленные типы атак подробнее.

В случае криптоанализа на основе известного шифртекста считается, что противник
знает механизм шифрования и ему доступен только шифртекст. Это соответствует
модели внешнего нарушителя, который имеет физический доступ к линии связи, но
не имеет доступ к аппаратуре шифрования.

При криптоанализе на основе известного открытого текста предполагается, что
криптоаналитику известен шифртекст и некоторая часть исходного текста, а в
частных случаях, и соответствие между шифртекстом и исходным текстом.
Возможность проведения такой атаки складывается при зашифровании документов,
подготовленных с использованием стандартных форм.

В нападениях на основе выбранного открытого текста предполагается, что
криптоаналитик противника может ввести специально подобранный им текст в
шифрующее устройство и получить криптограмму, образованную под управлением
секретного ключа. Это соответствует модели внутреннего нарушителя, который в
соответствии со своими полномочиями имеет доступ к аппаратуре шифрования.

Криптоанализ на основе выбранного шифртекста предполагает, что противник
имеет возможность использовать для расшифрования сформированные им самим
шифртексты, которые выбираются специальным образом, чтобы по полученным на
выходе текстам он мог вычислить секретный ключ шифрования с минимальной
трудоемкостью.

Атака на основе адаптированных текстов соответствует случаю, когда атакующий
многократно подставляет тексты для зашифрования (или расшифрования), причем
каждую новую порцию данных выбирает в зависимости от полученного ранее
результата преобразований. Этот вид атаки является наиболее благоприятным для
нападающего.
В настоящее время к наиболее мощным видам атак на основе выбранных или
адаптированных текстов относятся дифференциальный (разностный) криптоанализ (ДКА) и
линейный криптоанализ (ЛКА), которые будут рассмотрены ниже, а также производные от
них методы.
48
Выше мы уже говорили об операциях, направленных на раскрытие криптосистемы.
Перечислим их еще раз, не приводя подробную расшифровку11.
1. полное раскрытие;
2. нахождение эквивалентного алгоритма;
3. нахождение открытого сообщения;
4. частичное раскрытие.
Любая из этих операций может привести в конечном итоге к полному или
частичному раскрытию криптосистемы.
6.3. Методы современного криптоанализа
Рассмотрим кратко методы, применяемые в современном криптоанализе. При их
описании не будем вдаваться в математическое обоснование каждого метода, т.к. в
некоторых случаях это требует серьезной математической подготовки, а ограничимся лишь
общим обзором способов их применения.
6.3.1. Нетехнические методы взлома (Social Hacking)
Этот метод не имеет никакого отношения к математике, но, тем не менее, является
очень распространенным. Состоит он в следующем:
Пользуясь человеческими слабостями и присущей каждому нормальному человеку
склонностью к общению, злоумышленники не пренебрегают возможностью выудить у
людей информацию, имеющую хотя бы косвенное отношение к паролям и ключевым словам.
Людям, имеющим хорошую психологическую подготовку, не так уж сложно узнать, как
зовут вашего супруга, детей, близких родственников, кота или собаку. Нередко какое-то из
этих имен используется в качестве пароля. Злоумышленник, выудив эту информацию,
получает возможность серьезно сузить зону поиска ключевых слов. Поэтому разумно не
использовать в качестве пароля слова, так или иначе ассоциирующиеся с кругом ваших
интересов.
6.3.2. Метод частотного анализа
Этот метод считается классическим еще со времен появления т.н. шифра Цезаря.
Основан он на том, что в каждом языке существует определенная исторически сложившаяся
статистическая структура, т.е. существуют определенные символы или комбинации
символов, наиболее
11
часто встречающиеся в естественной речи. При перехвате
См. пункт 1.2.
49
зашифрованного сообщения можно подсчитать частоту появления определенных символов12
и сопоставить их с вероятностями появления определенных символов или их комбинаций
(биграммы, триграммы и т.д.), что в некоторых случаях может привести к однозначному
дешифрованию отдельных участков зашифрованного сообщения.
Также этот метод основан на наличии вероятных слов. Речь идет о словах или
выражениях, появление которых можно ожидать в сообщении с большой вероятностью. Так,
в деловой переписке присутствуют шаблонные слова; в английском языке наиболее часто
встречаются слова "and", "the", "are" и т.д.
В качестве классического примера использования частотного анализа может
служить рассказ Э. По "Золотой жук".
6.3.3. Атака методом "грубой силы" (Brute Force Attack)
Данный метод является наиболее "грубым" с точки зрения криптоанализа. Он
состоит в последовательном переборе всего ключевого пространства, с целью подбора
использованного ключа. Основан он на все большем и большем развитии средств и
возможностей вычислительной техники.
Скорость вскрытия методом грубой силы определяется двумя параметрами:
количеством проверяемых ключей и скоростью проверки одного ключа. Большинство
симметричных алгоритмов в качестве ключа могут использовать любую битовую
последовательность фиксированной длины. Длина ключа, например, алгоритма DES
составляет 56 бит, значит, всего может быть 256 возможных ключей. Длина ключей
некоторых других алгоритмов равна 64 и 128 битам.
Скорость, с которой может быть проверен каждый ключ, имеет менее важное
значение. Для проводимого анализа обычно предполагают, что скорость проверки ключа для
каждого алгоритма примерно одинакова. В действительности скорость проверки ключей
одного алгоритма может быть в два, три или даже десять раз больше, чем другого. Но так как
для тех длин ключей, для которых ведется проверка, время поиска в миллионы раз больше,
чем время проверки одного ключа, небольшие отличия в скорости проверки не имею
значения.
Задача вскрытия грубой силой может быть хорошо реализована на параллельных
процессорах.
Каждый
процессор
проверяет
подмножество
пространства
ключей.
Процессорам не нужно обмениваться между собой информацией, единственным сообщением
будет сообщение, сигнализирующее об успехе.
12
См. приложения 2, 3
50
Однако стоимость таких многопроцессорных систем будет непомерно высокой и
вряд ли окупит стоимость вскрытия зашифрованной информации. Хотя не стоит забывать,
что мощь вычислительных средств непрерывно повышается, а стоимость их постоянно
снижается.
6.3.4. Метод встречи посередине
Этот метод основан на следующем факте:
Если множество ключей криптоалгоритма замкнуто относительно композиции, то
есть для любых ключей zi и zj найдется ключ zk такой, что результат шифрования любого
текста последовательно на zi и zj равен шифрограмме этого же числа на zk, то есть
F ( z j , F ( z i , x))  F ( z k , x) то можно воспользоваться этим свойством. Пусть нам нужно найти
ключ zk. Тогда для нахождения ключа zk, необходимо найти эквивалентную ему пару ключей
zi, zj. Данный метод криптоанализа основан на "парадоксе дней рождения". Известно, что
если считать, что дни рождения распределены равномерно, то в группе из 24 человек с
вероятностью 0,5 у двух человек дни рождения совпадут. В общем виде этот парадокс
формулируется так: если a√n предметов выбираются с возвращением из некоторой
совокупности размером n, то вероятность того что два из них совпадут, равна 1-exp(-a2 / 2) .
Пусть известен открытый текст x и его шифрограмма y. Для текста x строим базу
данных, содержащую случайное множество ключей z| и соответствующих шифрограмм
w=F(z| , x), и упорядочиваем ее по шифрограммам w. Объем базы данных выбираем
O(
#{z}) . Затем подбираем случайным образом ключи z| | для расшифровки текстов y и
результат расшифрования v = F(z| | , y) сравниваем с базой данных. Если текст v окажется
равным одной из шифрограмм w, то ключ z| z| | эквивалентен искомому ключу z. Временная
сложность метода составляет О(√#{z}log#{z}). Множитель log#{z} учитывает сложность
сортировки.
Требуемая
память
равна
О(√#{z}log#{z})
бит
или
О(√#{z})
блоков
(предполагается, что длина блока и длина ключа различаются на ограниченную константу).
Этот же метод применим, если множество ключей содержит достаточно большое
подмножество, являющееся полугруппой.
Другое применение этого метода для множества, не являющегося полугруппой,
можно продемонстрировать на хэш-функциях. Например, для подделки подписи надо найти
два текста, обладающих одним хэш-образом. После этого можно подписанное сообщение
заменить на другое, обладающее таким же хэш-образом. Поиск двух таких сообщений
можно выполнить с использованием метода "встречи посередине". Сложность поиска равна
О(√#{h}), где #{h} - число всевозможных хэш-образов.
51
6.3.5. Метод Полларда
Для нахождения ключа, например в криптоалгоритме, основанном на задаче
логарифма на некоторой группе, достаточно решить задачу о встрече на графе случайного
отображения. Для этого из двух разных стартовых точек x0|, x0|
|
строится траектория до
входа в цикл. Затем одна из двух конечных точек, лежащих в цикле, фиксируется, а
траектория другой продолжается до встречи с фиксированной точкой. Для функции f и точки
входа x0 длина траектории составляет О(√#М ) шагов. Типичный вид этой траектории
содержит предельный цикл длины О(√#М ) и отрезок до входа в цикл примерно такой же
длины. В качестве индикатора замыкания траектории Поллард предложил использовать
равенство xi = x2i , где xi - i-я точка траектории для входа x0. Это равенство будет
выполняться всегда. Значение индекса i не превышает суммы длины пути до входа в цикл.
В среднем сложность нахождения равенства xi = x2i равна 3√(
встречи, когда обе точки лежат в цикле, равна 0,5√(
сложность равна 3,5 (

)#М. Сложность
8

)#М. Таким образом, итоговая
8

)#М.
8
6.3.6. Дифференциальный криптоанализ
Дифференциальный метод криптоанализа (ДКА) был предложен Э.Бихамом и
А.Шамиром в 1990 г. Дифференциальный криптоанализ - это попытка вскрытия секретного
ключа блочных шифров, которые основаны на повторном применении криптографически
слабой цифровой операции шифрования r раз. При анализе предполагается, что на каждом
цикле используется свой подключ шифрования. ДКА может использовать как выбранные,
так и известные открытые тексты.
Успех таких попыток вскрытия r-циклического шифра зависит от существования
дифференциалов (r-1)-го цикла, которые имеют большую вероятность. Дифференциал i-го
цикла определяется как пара (a, b)i такая, что пара различных открытых текстов x, x* c
разностью a может привести к паре выходных текстов y, y* после i-ого цикла, имеющих
разность
b
(для
соответствующего
понятия
разности).
Вероятность
i-циклового
дифференциала (a, b)i - это условная вероятность P(D y(i)=b | Dx=a ) того, что разность D y(i)
пары шифротекстов (y, y*) после i-ого цикла равна b при условии, что пара текстов (x, x*)
имеет разность Dx=a; открытый текст x и подключи циклов к(1) , к(2) ,...., к(i) независимыми и
равновероятными.
52
Основная процедура ДКА r-циклического шифра с использованием выбранных
открытых текстов может быть следующей:
1. На этапе предвычислений ищем множество (r-1)-цикловых дифференциалов
(a1 , b1 ) r 1 , (a2 , b2 ) r 1 ,...(an , bn ) r 1 . Упорядочиваем это множество дифференциалов по величине
их вероятности.
2. Выбираем открытый текст x произвольным образом и вычисляем x* так, чтобы
разность между x и x* была равна a1. Тексты x и x* шифруются на подлинном ключе и после
r циклов получаем пару шифртекстов y(r) , y*(r). Предполагаем, что на выходе
предпоследнего (r-1)-ого цикла разность шифртекстов равна наиболее вероятной: Dy(r-1)=b1.
Для тройки (D y(r-1), y(r), y*(r)) находим каждое возможное (если их несколько) значение
подключа последнего цикла к(r). Добавляем его к количеству появлений каждого такого
значения подключа к(r).
3. Повторяем п.2 до тех пор, пока одно или несколько значений подключа к(r) не
станет появляться чаще других. Берем этот подключ или множество таких подключей в
качестве криптографического решения для подключа к(r).
4. Повторяем пп.1-3 для предпоследнего цикла, при этом значения y(r-1)
вычисляются расшифрованием шифртекстов на найденном подключе последнего цикла к (r).
Далее действуем аналогично, пока не будут раскрыты ключи всех циклов шифрования.
6.3.7. Линейный криптоанализ
В открытой печати линейный метод криптоанализа впервые был предложен
японским математиком Мацуи. Метод предполагает, что криптоаналитик знает открытые и
соответствующие зашифрованные тексты.
Обычно при шифровании используется сложение по модулю 2 текста с ключом и
операции рассеивания и перемешивания. Задача криптоаналитика - найти наилучшую
линейную аппроксимацию (после всех циклов шифрования) выражения
xi1  ...  xir  y j1  ...  y js  z k1  ...  z kt
Пусть PL - вероятность того, что это равенство выполняется, при этом необходимо,
чтобы PL - 1/2 и величина |PL-1/2| должна быть максимальна. Если |PL-1/2| достаточно велика,
и криптоаналитику известно достаточное число пар открытых и соответствующих
зашифрованных текстов, то сумма по модулю 2 бит ключа на соответствующей позиции в
правой части равенства равна наиболее вероятному значению суммы по модулю 2
соответствующих бит открытых и зашифрованных текстов в левой части. Если PL > 1/2, то
сумма бит ключа в правой части равна нулю. Для нахождения каждого бита собственно
53
ключа теперь нужно решить систему линейных уравнений для известных линейных
комбинаций этих бит, но эта процедура не представляет сложности, так как сложность
решения системы линейных уравнений описывается полиномом не более третьей степени от
длины ключа.
Требуемое для раскрытия ключа количество N пар открытых и зашифрованных
текстов (блоков) оценивается выражением:
N  |PL-1/2| -2 .
Для раскрытия ключа шифра DES этим методом необходимо 247 пар известных
открытых и зашифрованных текстов.
Итак, нами были рассмотрены наиболее употребительные методы современного
криптоанализа. Разумеется, список этих методов далеко не полон и не претендует на
исчерпывающее изложение. Перед нами стояла задача осветить лишь общие концепции их
использования.
Следует отметить, что использование многих способов раскрытия шифров, особенно
методов линейного и дифференциального криптоанализа, требует от криптоаналитика
серьезной математической подготовки, что, разумеется, значительно осложняет возможности
использования этих методов.
Заключение
Данная курсовая работа не претендует на исчерпывающее изложение содержания
современной криптографии, являющейся чрезвычайно многообразным и сложным разделом
современной прикладной математики. Я преследовал лишь цель в доступной форме
изложить введение в общую проблематику и методологию криптографии.
При написании данной курсовой работы я имел намерение дать общую картину
современной криптографии в таком изложении, которое было бы легко доступно людям, не
имеющим специальной математической подготовки, а также рассмотреть некоторые
моменты,
связанные
с
разработкой
современных
скоростных
блочных
шифров,
ориентированных на программную и/или аппаратную реализацию. К вопросам общего
характера относится материал, посвященный значению криптографии в информационном
обществе, двухключевой криптографии, электронной цифровой подписи и ряду хорошо
известных одноключевых шифров. Рассмотрение же проблемы построения скоростных
блочных шифров также представляет достаточно широкий интерес ввиду их большого
значения в современных технологиях защиты информации.
54
Литература
1. Аршинов Н. М., Садовский Л. Е. Коды и математика. – М.: Наука, 1983
2. Жельников В. Криптография от папируса до компьютера. – М.: ABF, 1996
3. Молдовян А. А., Молдовян Н. А., Гуц Н. Д., Изотов Б. В. Криптография. Скоростные
шифры. – СПб.: БХВ-Петербург, 2002
4. Петров А. А. Компьютерная безопасность. Криптографические методы защиты. – М.:
ДМК, 2000
5. Чепмен Д. Разработка защищенных приложений в среде Visual Basic. – Москва –
Санкт-Петербург – Киев: Вильямс, 2000
6. Шнайер Б. Прикладная криптография. – СПб.: БХВ-Петербург, 2002
7. Информация, шифры, компьютеры // Chip. – июнь 2001
8. http:///www.cryptography.ru
55
Download