Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Математические основы криптологии и криптографические методы и средс

..pdf
Скачиваний:
48
Добавлен:
15.11.2022
Размер:
14.26 Mб
Скачать

hi- раундовое значение хэш-функции, а и р - известные параметры,

*- операция сложения или умножения по модулю р.

7.Показать слабость итеративной хэш-функции, основанной на

раунодовой функции А, = (/?,_] ® М, )° mod р, где М,- - блоки данных,

hi—раундовое значение хэш-функции, а и р - известные параметры.

8.Что такое коллизия? Приведите пример.

9.Можно ли по дайджесту сообщения восстановить само сооб­

щение?

10.Какой из двух видов шифрования вы предпочтете? Первый: по исходному сообщению вычисляется хэш-функция, объединяется операцией конкатенации с исходным сообщением, и результат шиф­ руется по схеме Файстеля, после чего отправляется адресату; второй вариант: исходное сообщение сперва шифруется по схеме Файстеля, по зашифрованному сообщению вычисляется значение хэш-функции, которое, в свою очередь, операцией конкатенации присоединяется к зашифрованному сообщению, и результат отсылается адресату. Обоснуйте свой ответ.

1.5. ФУНКЦИИ УСЛОЖНЕНИЯ

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

шифр перестановок-заключается в перестановках структурных элементов шифруемого блока данных - битов, символов, цифр;

шифр замен - заключается в замене одних значений на дру­ гие по индексной таблице, замене подвергаются группы эле­ ментов шифруемого блока - битов или символов;

шифр функциональных преобразований - заключается в вы­ полнении сдвигов, логических и арифметических операций

над элементами данных.

Ниже дана подробная характеристика каждого из упомянутых типов преобразований.

Шифры перестановок чрезвычайно просто реализуются аппа­ ратно - разводкой проводников на плате или в кристалле, при этом совсем не требуется каких-либо дополнительных затрат, так как про­ водники, связывающие регистры аппаратуры, так или иначе присут­ ствуют в схеме. В то же самое время эти преобразования очень не­ эффективно реализуются программно на процессорах общего назна­ чения. Как правило, вычислительные затраты составляют не менее двух машинных команд на каждый двоичный разряд в модифици­ руемом блоке, если только в перестановках нет согласованности. Этой причиной, в частности, объясняется тот факт, что многие шиф­ ры, широко использующие операции данного типа, имеют при про­ чих равных условиях существенно менее эффективные реализации по сравнению с шифрами, их не использующими. Цапример, амери­ канский стандарт шифрования криптоалгоритм DES при вдвое меньшем количестве шагов в цикле шифрования по сравнению с Российским стандартом (16 против 32) имеет примерно вдвое более медленную оптимальную реализацию.

Общие виды замен аппаратно реализуются с помощью запоми­ нающих устройств, программно - индексированным чтением из опе­ ративной памяти, что, по сути, одно и то же: замена для элемента данных х берется из вектора или узла замен V, являющегося масси­ вом заменяющих значений, индексированным заменяемым элемен­ том данных:

х заменяется на у = У [дс].

Программно такая операция реализуется за одну команду, не считая операции загрузки индекса в соответствующий регистр. Раз­ мер памяти, необходимый для хранения вектора заменяющих, опре­ деляется следующим соотношением:

IH = 2 w|y |,

где | и \Y | - размеры заменяемого и заменяющего блоков в битах соответственно, размер вектора замен V также получается в битах. Из приведенной формулы видно, что он растет экспоненциально с ростом размера заменяемого блока. В силу этого выполнение под­ становки в масштабах всего шифруемого блока невозможно - потре­ бовался бы слишком большой объем памяти для хранения вектора. Поэтому преобразуемый блок данных разделяют на фрагменты, обычно одинакового размера, и выполняют замену в этих подблоках независимо друг от друга. Для повышения стойкости шифра замену различных частей шифруемого блока следует выполнять с использо­ ванием разных векторов замен, которые все вместе составляют таб­ лицу подстановок или таблицу замен. Для хранения этой таблицы требуется участок памяти следующего размера:

\S\ = nv\V\ = nv2\x\\Y\,

где Ну—число подблоков размера |, в которых производятся под­ становки.

Как уже отмечалось выше, размер таблицы подстановок быстро увеличивается с ростом размера заменяющего и особенно заменяе­ мого блока, что влечет за собой возрастание требований к необходи­ мому для реализации шифра объему памяти. С другой стороны, уве­ личение этих размеров усложняет криптоанализ и тем самым повы­ шает стойкость шифра, поэтому на практике их следует выбирать на границе разумности, ведь криптоалгоритм проектируется на доста­ точно длительный срок, а возможности электронной техники увели­ чиваются очень быстро. В алгоритме DES суммарный объем блоков подстановки равен |SDES| = 211 бит = 256 байт. В отечественном стандарте это величина того же порядка: |SrOCT| = 29 бит = 64 бай­ та. Следует помнить, что указанные шифры разрабатывались в семи­ десятые годы, когда понятие «микросхема» еще только начинало входить в наш обиход, обычная емкость микросхемы запоминающе­ го устройства составляла несколько десятков, максимум сотен битов, а объем оперативной памяти 32 кбайта считался совсем неплохим вариантом для компьютера. Вполне естественно, что созданные в то время криптоалгоритмы отражали суровые реалии тех дней. Сейчас

эта проблема практически отсутствует, и поэтому современные шифры гораздо более свободны в данном отношении. Так, в крипто­ алгоритме BLOWFISH подстановки производятся следующим обра­ зом: каждый из 4 байтов, составляющих 32-битовое слово, заменяет­ ся на 4-байтовое слово, полученные слова преобразуются в одно с помощью логических и арифметических операций. Соответственно размер одной таблицы замен в этом алгоритме равен |SBLOWFISH| = 215 бит = 4 кбайт.

Функциональные преобразования - это унарные и бинарные ло­ гические и арифметические операции, реализуемые аппаратно логи­ ческими схемами, а программно -- одной-двумя компьютерными ко­ мандами. Теоретически возможно использовать любую операцию, которая может быть сформулирована в терминах логических функ­ ций. Однако на практике дело всегда ограничивается теми из них, которые имеются в наборах команд универсальных процессоров и реализованы аппаратно в виде микросхем. Из логических операций это основные логические функции - инверсия, и бинарные - побито­

вые И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ, из арифметических - изменение знака (пере­ ход к дополнительному коду), и бинар­ ные - сложение, вычитание, умножение,

деление по

модулю некоторого числа,

из битовых

манипуляций - циклические

сдвиги.

 

Рис. 21. Фрагмент составного шифра - комбинация большого числа элементарных шифрующих

1.5.1. Методы построения надежных шифров

Как же построить надежный шифр из элементарных операций указанного типа? Наиболее очевидная идея - каскадировать их (рис. 21). Символами Р, S, F обозначим операции перестановок (Permutation), за­ мен (,Substitution), функциональных пре­ образований {Function) соответственно.

Ключевые элементы (.Kt) могут комбинироваться с преобразуемыми данными в операциях подстановок и функциональных преобразо­ ваний.

Не имеет смысла комбинировать две однотипные операции под­ ряд. Если чередовать процедуры различного типа, сложность резуль­ тирующего преобразования (степень перемешивания и рассеивания) будет выше. Это очень легко объяснить: при комбинировании двух операций их сложности складываются за вычетом некоего «дефекта сложности», который тем больше, чем более схожи две операции. Например, суперпозиция (результат последовательного выполнения) двух битовых перестановок может быть выражена одной перестанов­ кой. То же справедливо для двух подстановок, выполняемых в одних и тех же границах заменяемых подблоков. Прибавление к блоку дан­ ных двух ключевых элементов равносильно прибавлению одного, равного их сумме. Во всех рассмотренных случаях добавление к опе­ рации еще одной такой же вообще не приводит к возрастанию слож­ ности, а следовательно, и стойкости преобразования.

Даже если комбинируются две различные операции, принадле­ жащие одной и той же группе, сложность полученного преобразова­ ния меньше, чем могла бы быть, если бы они были разделены опера­ цией другого типа. На рис. 22 изображены два трехзвенных шиф­ рующих преобразования, составленных из одних и тех же операций. Сложность и стойкость преобразования, изображенного справа, по только что изложенным соображениям выше, чем у левого.

Рис. 22. Пара шифрующих преобразований из трех элементарных операций, использованных

в различном порядке

1.5.2. Требования, предъявляемые к шифрам

Каким же условиям должен удовлетворять шифр, не только об­ ладающий необходимой стойкостью, но, в добавок к этому, удобный в реализации и использовании. Рассмотрение начнем с требований, которые были особенно актуальными четверть века назад, когда воз­ можности микроэлектронных приборов были весьма ограничены

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

ив современных разработках.

1.Операции за- и расшифрования должны быть близкими на­ столько, чтобы могли быть выполнены одним и тем же аппаратным или программным модулем - это диктуется требованием экономич­ ности реализации.

2.Объем ключевой информации должен быть относительно не­ большим. Разумным является такой размер ключа, при котором не­ возможно его нахождение путем перебора по всему ключевому про­ странству, с определенным запасом на возможный прогресс элек­ тронной техники. В настоящее время граница практической осуще­ ствимости подбора ключа находится где-то в районе 60-64 бит. Со­ ответственно, разумным может считаться размер ключа 80-256 бит. Данное требование вытекает из необходимости хранить ключи на любых носителях, включая нетрадиционные, например-на персо­ нальных миниатюрных магнитных карточках.

3.Реализация шифра (код программы и постоянные данные) должна быть достаточно компактной для того, чтобы «уместиться» на микроконтроллерах с относительно невысоким объемом запоми­ нающего устройства - последнее требование также диктуется сооб­ ражениями экономичности реализации.

Рассмотрим, каким образом можно построить шифр, удовлетво­ ряющий указанным требованиям. Начнем с условия обратимости процедуры зашифрования. Из него вытекает, что все преобразования,

непосредственно модифицирующие шифруемые данные, должны быть обратимыми, т.е. при их выполнении не должна теряться ин­ формация. Перестановка обратима по определению. Непараметризованная замена имеет обратную операцию, если она сюрьективна, т.е. если каждое возможное заменяющее значение встречается в соответ­ ствующем векторе замен ровно один раз. Параметризованная, то есть зависящая от значения ключевого элемента, замена обратима в том случае, если при каждом фиксированном значении параметра соот­ ветствующая простая замена обратима. Бинарная функциональная операция обратима, если при каждом фиксированном значении вто­ рого, модифицирующего, аргумента задаваемое ей отображение сюрьективно, это равносильно условию, что уравнение модификации элемента данных Y = f (Х,К) всегда однозначно разрешимо относи­ тельно модифицируемого элемента (Л). Унарные функциональные операции можно рассматривать как некоторые бинарные с фиксиро­ ванным вторым операндом. Из простых обратимых унарных и би­ нарных логических операций над числами конечной разрядности следует отметить инверсию и операцию побитового ИСКЛЮ­ ЧАЮЩЕГО ИЛИ, из арифметических - изменение знака числа, сло­ жение или вычитание в пределах разрядной сетки числа, умножение

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

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

1.Все шифрующие преобразования должны принимать на входе

ивыдавать на выходе блок данных одного и того же размера, не счи­

тая дополнительных входов для параметра замены и второго операн­ да функционального преобразования.

2.Замены, применяемые непосредственно к шифруемым дан­ ным, должны быть обратимыми, параметризованные замены должны быть обратимыми при каждом фиксированном значении параметра.

3.Уравнение функционального преобразования шифруемых данных с помощью бинарной операции должно быть всегда одно­ значно разрешимо относительно преобразуемого (первого) операнда.

Вэтом случае для составного шифрующего преобразования, имеющего линейную структуру, можно очевидным образом сконст­ руировать обратное преобразование: оно строится комбинированием обращений его составных частей в порядке, обратном тому, в кото­ ром они использовались в исходном преобразовании, как это показа­ но на рис. 23.

Если прямое преобразование определяется формулой

'Р _ 'Р m гр гр

то обратное ему преобразование задается следующей формулой:

т~1 =7Г1,АГ,'

1т;2,К21

.

л.

-1

-1

//.-1,АГЛг _11 ntKR.

В данных формулах TiK

обозначает

одну из перечисленных

выше простых операций преобразования (перестановку, подстановку или функциональную операцию), возможно, зависящую от парамет­ ра —ключевого элемента JST,-. Операции группируются справа налево, т е. (Т2Т{)(X) обозначает Т2{Тх{Х)).

Рис. 23. Шифрующее преобразование с линейной структурой

и обратное ему шифрующее преобразование

Для того, чтобы прямое и обратное преобразования было воз­ можно реализовать в одном аппаратном блоке или программном мо­ дуле, они должны быть идентичны с точностью до используемых ключевых элементов. Это означает, что шифрующее преобразование должно быть «антисимметрично» самому себе - для каждого его ша­ га, находящегося на определенном расстоянии от начала преобразо­ вания, на точно таком же расстоянии от его конца должен распола­ гаться обратный ему шаг, использующий тот же самый ключевой элемент:

Т - 1 ~ Т,

если для всех / справедливо следующее условие:

т,\к, = Tn-i,K[ ДЛЯ всех А/, или ТГ1= Т„_,.

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

1.5.3. Размер ключа

Теперь рассмотрим требование относительно небольшого раз­ мера ключа - как было отмечено выше, он не должен быть намного больше размера, достаточного для исключения практической воз­ можности его нахождения полным перебором по всему ключевому пространству. Поскольку этот «критический» размер составляет в на­ стоящее время величину порядка восьми байт, разумный размер ключа не превышает 256 бит. Ясно, что для получения необходимой стойкости шифра придется использовать достаточно большое коли­ чество элементарных шагов преобразования, нуждающихся в наборе ключевых элементов, намного (в разы) превосходящем по размеру ключ. Поэтому во всех шифрах подобного типа применяется проце­ дура «развертывания», с помощью которой из небольшого ключа строится массив ключевых элементов нужного размера.

Процедура «развертывания» ключа должна удовлетворять сле­ дующим требованиям:

Рис. 24. Шаги шифрующего преобразования

1. Биты (символы) каждого ключевого элемента должны быть равновероятны и статистически независимы друг от друга.

2. Биты (символы) каждого ключевого элемента должны быть статистически независимы от битов (символов) нескольких соседних ключевых элементов. Это условие должно выполняться в пределах такого количества шагов шифрования, на котором еще можно про­ следить статистические зависимости между битами (символами) шифруемых блоков.

Данное требование проиллюстри­ ровано на рис. 24. Для любой пары ша­ гов шифрующего образования, не обя­ зательно смежных, допускается тем меньшая коррелированность исполь­ зуемых ими ключевых элементов, чем больше коррелированность выхода пер­ вого из них со входом второго:

где С-некоторая мера коррелированности. Понятно, что данная зависимость не является количественно строгой, она отражает суть вопроса лишь качествен­

но. Опять же следует отметить, что данное требование не является абсолютно необходимым. Нет ничего страшного, если оно выполня­ ется не в полной мере для отдельных пар шагов преобразования. Од­ нако систематическое игнорирование этого правила приводит к тому, что криптоанализ шифра значительно облегчается.

Криптостойкость последовательности ключевых элементов яв­ ляется необязательным, но весьма полезным ее свойством, так как сама по себе гарантирует выполнение двух вышеприведенных требо­ ваний. Возможны различные подходы к выработке ключевых эле­ ментов для шагов шифрования - от самых простых, до обладающих сложностью, сопоставимой со сложностью самого шифра. Например, в качестве ключевых элементов для шагов шифрования можно про­