8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 89 90 91 92 93 94 95 ... 169

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

Такая архитектура шифров была предложена в 70-е годы пионером в создании криптографических алгоритмов подобного типа доктором Хорстом Файстелем, работавшим в то время в исследовательской лаборатории фирмы IBM и создавшим там криптосистему Люцифер, послужившую прототипом наиболее известного шифра этого типа -американского стандарта шифрования, криптоалгоритма DES, сохраняющего свой статус стандарта вплоть до настоящего времени, но, очевидно, доживающего в этом качестве последние месяцы.

В общем случае обе части, на которые делится преобразуемый блок данных, могут иметьразмер. Можно всегда

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

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

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

Попричине на практике не так часто встречаются

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

меньше шифрующей тоже не получили значительного

278


ния. Таким образом, остаютсяв которых размеры обеих час-

тей блока одинаковы: Li = Hi. Именно такие шифры, архитектура которых, как было отмечено выше, называется сбалансированной сетью Файстеля, доминируют в современной практической криптографии. В сбалансированной сети Файстеля преобразования выполняются по следующим уравнениям:

ХО = HiT/2(T), XI - LoT/2(T),

Xi + 1 - Xi-1 0 f(Xi,Ki) , для i = 1,2,...,n,

T - Xn+1 I. I Xn

Если последовательностьфункций, использованных

в шифре,и, в частности, если на всех раундах ис-

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

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

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

обратное преобразование - в точности, как это было описано в

выпуске №4.

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

279


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

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

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

= Р(Т)

На этом мы с вами закончим рассмотрение сетейи пе-

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

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

Т = (Т1,Т2, . . .,TL) , Tl = Ti ™i Г, Т = (Т1,Т2, .. .,TL)

так, чтобы некоторая функция от преобразуемого блока не меняла своего значения:

J(T)J(T),или J(Tl,Т2, . . . , TL)

J(Tl,Т2TL ) ,

где J - функция выработки инварианта.

Блок можно разделить на произвольное число частей. Однако,

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

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

степенями двойки. Обычно шифруемый блок делится на две одинаковые части:

280



0 ... 89 90 91 92 93 94 95 ... 169