Аддитивные методы шифрования
Сущность аддитивных методов шифрования заключается в последовательном суммировании цифровых кодов, соответствующих символам исходной информации, с последовательностью кодов, которая соответствует некоторому кортежу символов . Этот кортеж называется гаммой. Поэтому аддитивные методы шифрования называют также гаммированием.
Для данных методов шифрования ключом является гамма. Криптостойкость аддитивных методов зависит от длины ключа и равномерности его статистических характеристик. Если ключ короче, чем шифруемая последовательность символов, то шифртекст может быть расшифрован криптоаналитиком статистическими методами исследования. Чем больше разница длин ключа и исходной информации, тем выше вероятность успешной атаки на шифртекст. Если ключ представляет собой непериодическую последовательность случайных чисел, длина которой превышает длину шифруемой информации, то без знания ключа расшифровать шифртекст практически невозможно. Как и для методов замены в качестве ключа могут использоваться неповторяющиеся последовательности цифр, например, в числах π, е и других.
На практике самыми эффективными и распространенными являются аддитивные методы, в основу которых положено использование генераторов (датчиков) псевдослучайных чисел. Генератор использует исходную информацию относительно малой длины для получения практически бесконечной последовательности псевдослучайных чисел.
Для получения последовательности псевдослучайных чисел (ПСЧ) могут использоваться конгруэнтные генераторы. Генераторы этого класса вырабатывают псевдослучайные последовательности чисел, для которых могут быть строго математически определены такие основные характеристики генераторов как периодичность и случайность выходных последовательностей.
Среди конгруэнтных генераторов ПСЧ выделяется своей простотой и эффективностью линейный генератор, вырабатывающий псевдослучайную последовательность чисел Т(i) в соответствии с соотношением
Т(i+1) = (а * Т(i) + с) mod m,
где а и с - константы, Т(0) - исходная величина, выбранная в качестве порождающего числа.
Период повторения такого датчика ПСЧ зависит от величин а и с. Значение m обычно принимается равным 2s, где s - длина слова ЭВМ в битах. Период повторения последовательности генерируемых чисел будет максимальным тогда и только тогда, когда с - нечетное число и а (mod 4) = 1 : Такой генератор может быть сравнительно легко создан как аппаратными средствами, так и программно.
Шифр гаммирования
Здесь уделяется внимание получению из ключа программно длинных случайных или псевдо-случайных рядов чисел, называемых на жаргоне отечественных криптографов гаммой, по названию - буквы греческого алфавита, которой в математических записях обозначаются случайные величины.
Эти программы, хотя они и называются генераторами случайных чисел, на самом деле выдают детерминированные числовые ряды, которые только кажутся случайными по своим свойствам. От них требуется, чтобы, даже зная закон формирования, но не зная ключа в виде начальных условий, никто не смог бы отличить числовой ряд от случайного.
Можно сформулировать 3 основных требования к криптографически стойкому генератору псевдослучайной последовательности или гаммы:
1. Период гаммы должен быть достаточно большим для шифрования сообщений различной длины.
2. Гамма должна быть труднопредсказуемой. Это значит, что если известны тип генератора и кусок гаммы, то невозможно предсказать следующий за этим куском бит гаммы с вероятностью выше заданной.
3. Генерирование гаммы не должно быть связано с большими техническими и организационными трудностями.
Режим гаммирования ГОСТ 28147-89
Схема реализации режима гаммирования приведена на рисунке 1.9.
Открытые данные, разбитые на 64-разрядные блоки T0(i) зашифровываются в режиме гаммирования путем поразрядного суммирования по модулю 2 в сумматоре СМ5 с гаммой шифра Гш(i), которая вырабатывается блоками по 64 бита. Число двоичных разрядов в блоке Т0(M), где М определяется объемом шифруемых даных может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока Гш(M) отбрасывается.
В КЗУ вводятся 256 бит ключа. В накопители N1, N2 вводится 64-разрядная двоичная последовательность (синхропосылка) S=(S1,S2,...,S64), являющаяся исходным заполнением этих накопителей для последующей выработки М блоков гаммы шифра. Синхропосылка вводится в N1 и N2 так, что значение S1 вводится в 1-ый разряд N1, значение S33 - в 1-ый разряд N2, S64 - в 32-й разряд N2.
Исходное заполнение накопителей N1 и N2 (синхропосылка S) зашифровывается в режиме простой замены (нижняя часть рисунка). Результат зашифрования A(S)=(Y0,Z0) переписывается в 32-разрядные накопители N3 и N4 так, что заполнение N1 переписывается в N3, а N2 - в N4.
Заполнение накопителя N4 суммируется по модулю (232-1) в сумматоре СМ4 с 32-разрядной константой С1 из накопителя N6, результат записывается в N4.
Заполнение накопителя N3 суммируется по модулю 232 в сумматоре СМ3 с 32- разрядной константой С2 из накопителя N5, результат записывается в N3.
Заполнение N3 переписывается в N1, а заполнение N4 - в N2. При этом заполнение N3, N4 сохраняется.
Заполнение N1 и N2 зашифровывается в режиме простой замены. Полученное в результате в N1, N2 зашифрование образует первый 64-рарядный блок гаммы шифра Гш(1), который суммируется в СМ5 с первым 64- разрядным блоком открытых данных Т0(1).
В результате получается 64 - разрядный блок зашифрования данных Гш(1).
Для получения следующего 64-разрядного блока гаммы шифра Гш(2) заполнение N4 суммируется по модулю (232-1) в СМ4. С константой С1 из N6, заполнение N3 суммируется по модулю 232 в сумматоре СМ3 с С2 (в N5). Новое заполнение N3 переписывается в N1, а новое заполнение N4 переписывается в N2., при этом заполнение N3, N4 сохраняется.
Заполнение N1 и N2 зашифровывается в режиме простой замены. Полученное в результате зашифрования заполнение N1, N2 образует второй 64-разрядный блок гаммы шифра Гш(2), который поразрядно суммируется по модулю 2 в СМ5 со вторым блоком открытых данных Т0(2).
Аналогично вырабатываются блоки гаммы шифра Гш(3), ... , Гш(М) и зашифровываются блоки открытых данных Т0(3), ..., Т0(М).
В канал связи (или память ЭВМ) передается синхропосылка S и блоки зашифрованных данных Тш(1), Тш(2), ..., Тш(М).
Уравнение зашифрования имеет вид:
Tш(i) = A(Yi-1 C2, Zi-1 ’C1) T0(i) = Гш(i) T0(i),
Где - суммирование по модулю 232,
’ - суммирование по модулю 232-1,
- суммирование по модулю 2,
Yi - содержимое накопителя N3 после зашифрования i-го блока открытых данных T0(i);
Zi - содержимое накопителя N4 после зашифрования i-го блока открытых данных T0(i).
(Y0, Z0) = A(S).
Рис.1.9 Режим гаммирования ГОСТ 28147-89
Открытое распределение ключей. Схема Диффи-Хеллмана
Важной составной частью шифрсистемы является ключевая система шифра. Под ней понимается описание всех видов ключей (долговременных, суточных, сеансовых и других) и алгоритмов их использования.
Одной из основных характеристик ключа является его размер, определяющий число всевозможных ключевых установок шифра. Если размер ключа чрезмерно велик, то это приводит к удорожанию изготовления ключей, усложнению процедуры установки ключа, понижению надежности работы шифрующего устройства.
Важнейшей частью практической работы с ключами является обеспечение секретности ключа. К основным мерам по защите ключей относятся следующие:
- ограничение круга лиц, допущенных к работе с ключами;
- регламентация рассылки, хранения и уничтожения ключей;
- регламентация порядка смены ключей;
- применение технических мер защиты ключевой информации от несанкционированного доступа.
Рассмотрим один из принципов распределения ключей (на основе односторонней функции), проработка которого имела весьма неожиданные последствия - была изобретена система шифрования с открытым ключом. Сначала небольшое отступление.
Понятие односторонней функции было введено в теоретическом исследовании о защите входа в вычислительные системы . Функция f(x) называется односторонней (one-way function), если для всех x из ее области определения легко вычислить y=f(x), но нахождение по заданному y0 такого x0, для которого f(x0)=y0, вычислительно неосуществимо, то есть требуется настолько огромный объем вычислений, что за них просто и не стоит браться.
Однако существование односторонних функций не доказано. В качестве приближения была предложена Гиллом Дж. целочисленная показательная функция f(x)=ax(mod n), где основание a и показатель степени x принадлежат интервалу (1,n-1), а умножение ведется по модулю n (3*4 mod 10=2; 7*8mod 9=2). Функция вычисляется достаточно эффективно по схеме Горнера. Если представление числа x в двоичной форме имеет вид
xk-12k-1 + xk-22k-2 + ...+ x121 + x020,
то
y = f(x) = ax mod n = ((...(axk-1)2*axk-2)2*...*ax1)2*ax0 mod n.
Операция, обратная к этой, известна как операция вычисления дискретного логарифма: по заданным y, a и n найти такое целое x, что aх( mod n) = y. До настоящего времени не найдено достаточно эффективных алгоритмов решения этой задачи.
Американские криптологи Диффи и Хеллман (Diffi W., Hellman M.E. New direction in criptography. IEEE Trans. Inf. Theory, v. IT-22, 1976) предложили схему распространения (рассылки) ключей для секретной связи на основе односторонней показательной функции. Ее суть состоит в следующем.
В протоколе обмена секретными ключами предполагается, что все пользователи знают некоторые числа n и a (1< a < n). Для выработки общего секретного ключа пользователи A и B должны проделать следующую процедуру:
1. Определить секретные ключи пользователей КА и КВ.
Для этого каждый пользователь независимо выбирает случайные числа из интервала (1,..., n-1).
2. Вычислить открытые ключи пользователей YA и YB.
Для этого каждый использует одностороннюю показательную функцию Y=ak mod n со своим секретным ключом.
3. Обменяться ключами YA и YB по открытому каналу связи.
4. Независимо определить общий секретный ключ К.
Для этого пользователи выполняют вычисления с помощью той же односторонней функции
A: YBKA(mod n) = [aKB ]KA mod n = aKA*KB mod n = K.
B: YAKB(mod n) = [aKA ]KB mod n = aKB*KA mod n = K.
Здесь каждый имеет показатель степени, а основание получает от партнера
Безопасность (секретность) изложенной схемы зависит от сложности вычисления секретных ключей пользователей (КА и КВ). Пока не найдено удовлетворительных быстрых алгоритмов нахождения К из а, YA и YB без явного определения КА или КВ.