Анимация
JavaScript
|
Главная Библионтека Производится выборка 16 байт из регистра. При этом для получения подключа К, выбираются идущие подряд байты регистра, начиная с /-го и далее по циклу; Выбранные байты складываются с соответствующими байтами слова смещения Д по модулю 256. Результат сложения и является подключом К,. Алгоритм SAFER++ является дальнейшим развитием алгоритма SAFER+ и был представлен на европейский конкурс алгоритмов NESSIE. Этот алгоритм работает с блоками длиной 128 бит, но предусмотрен режим "обратной совместимости" для блоков 64 бита. Длина ключа может быть 128 или 256 бит. Основная структура алгоритма осталась без изменений. Количество итераций равно 7 или 10 в зависимости от длины ключа. Структура итераций в целом тоже осталась прежней. Итерация зашифрования состоит из слоя подмешивания подключа, слоя нелинейной замены, еще одного слоя подмешивания подключа и линейного обратимого преобразования. Основное отличие алгоритма заключается в структуре линейного преобразования, которое сделано более эффективным с вычислительной точки зрения. Рассмотрим его более подробно. Вначале производится предварительная перестановка байтов в соответствии с перестановкой [9, 6, 3, 16, 1, 14, 11, 8, 5, 2, 15, 12, 13, 10, 7, 4]. Затем байты группируются по 4 и к каждой четверке применяется 4-точечное псевдопреобразование Адамара После этого производится еще одна такая же перестановка, и еще раз применяется псевдопреобразование Адамара 4-точечное псевдопреобразование Адамара задается невырожденной матрицей, имеющей обратную: 2 111 12 11 112 1 1111 10 0-1 0 10-1 0 0 1-1 -1 -1 -1 4 Замечательная особенность этого преобразования заключается в том, что умножение на матрицы может быть реализовано путем всего лишь шести операций сложения (вычитания). Если входные байты обозначить как а, Ь, с, d, а выходные как В, С, D, то вычисления будут проводиться по формулам: и обратно: Z) = a + Z) + c + J(3 сложения), А = D + а{\ сложение), В = D + Ъ{\ сложение), С = Z) + с (1 сложение). a = A-d{\ вычитание), b = B-d{\ вычитание), c = C-d{\ вычитание), d = D-a-b-c{b вычитания). Алгоритм расширения ключа претерпел незначительные изменения. Слова смещения В\, Bjr+i вычисляются по следующим формулам (слово В\, как и в алгоритме SAFER+, не используется, можно считать его равным 0): 45(4517+mod257) 257, / = 215,7 = 116 45mod 257, / = 1621, У = 1й16 Процедура генерации подключей итераций проводится отдельно для подключей с четными и нечетными номерами. Для генерации подключей с нечетными номерами берутся первые 16 байт пользовательского ключа. Для генерации подключей с четными номерами берутся вновь первые 16 байт пользовательского ключа, если используется ключ 128 бит, либо оставшиеся 16 байт, если используется ключ 256 бит. Далее вычисляется байтовая контрольная сумма выбранных 16 байт, которая добавляется к ним справа. Затем из полученного расширенного ключа происходит выборка 16 байт подключа итерации с заданным номером. Выборка происходит следующим образом. Для получения подключа Ki берутся 16 байт, начиная с 1, для подключа - \6 байт, начиная с 3, и т.д. по циклу. Выбранные байты складываются с байтами соответствующего слова смещения. После чего каждый байт расширенного ключа циклически сдвигается на 6 бит влево для нечетных подключей и на 3 бита для четных подключей. Процедура повторяется до получения всех требуемых подключей итерации. 2.5. Режимы применения блочных шифров Для шифрования исходного текста произвольной длины блочные шифры могут быть использованы в нескольких режимах. Мы рассмотрим четыре режима применения блочных шифров, наиболее часто встречаюш,иеся в системах криптографической заш,иты информации, а именно режимы электронной кодировочной книги (ЕСВ- Electronic Code Book), сцепления блоков шифрованного текста (СВС - Cipher Block Chaining), обратной связи по шифрованному тексту (СРВ - Cipher Feedback) и обратной связи по выходу (OFB - Output Feedback). В режиме электронной кодировочной книги каждый блок исходного текста шифруется блочным шифром независимо от других (см. Рис. 2.5). Стойкость режима ЕСВ равна стойкости самого шифра. Однако, структура исходного текста при этом не скрывается. Каждый одинаковый блок исходного текста приводит к появлению одинакового блока шифрованного текста Исходным текстом можно легко манипулировать путем удаления, повторения или перестановки блоков. Скорость шифрования равна скорости блочного шифра. Режим ЕСВ допускает простое распараллеливание для увеличения скорости шифрования. К несчастью, никакая обработка невозможна до поступления блока (за исключением генерации ключей). Заметим, что режим ЕСВ соответствует режиму простой замены ГОСТ. В режиме сцепления блоков шифрованного текста (СВС) каждый блок исходного текста складывается поразрядно по модулю 2 с предьщуш,им блоком шифрованного текста, а затем шифруется (см. Рис 2.6). Для начала процесса шифрования используется синхропосылка (или начальный вектор), которая передается в канал связи в открытом виде. Стойкость режима СВС равна стойкости блочного шифра, лежаш,его в его основе. Кроме того, структура исходного текста скрывается за счет сложения предьщуш,его блока шифрованного текста с очередным блоком открытого текста. Стойкость шифрованного текста увеличивается, поскольку становится невозможной прямая манипуляция исходным текстом, кроме как путем удаления блоков из начала или конца шифрованного текста Рис. 2.5. Режим электронной кодировочной книги. Скорость шифрования равна скорости работы блочного шифра, но простого способа распараллеливания процесса шифрования не суш,ествует, хотя расшифрование может проводиться параллельно. с<л с, = Ет, ® с, хУ, т, = Т)к{с,) ® с, х Рис. 2.6. Режим сцепления блоков шифрованного текста. Одной из потенциальных проблем режима СВС является возможность внесения контролируемых изменений в после-дуюш,ий расшифрованный блок исходного текста Например, если злоумышленник изменит один бит в блоке, то весь блок будет расшифрован неверно, но в следуюш,ем блоке появится ошибка в соответствуюш,ей позиции. Есть ситуации, когда такое нежелательно. Для борьбы с этой угрозой исходный текст должен содержать определенную избыточность. Известны модификации режима СВС. Рассмотрим некоторые из них. Режим сцепления блоков шифрованного текста с распространением (РСВС - Propagating СВС) отличается тем, что по модулю 2 складывается как предыдущий блок шифрованного, так и исходного текста: С/ = Bk{mi © С/ 1 © i), /w, = c, i ©/w, i ©Di(c,). Режим сцепления блоков шифрованного текста с контрольной суммой (СВСС -СВС with Checksum) отличается тем, что к последнему блоку исходного текста перед шифрованием прибавляется сумма по модулю два всех предьщущих блоков исходного текста. Это дает возможность проконтролировать целостность передаваемого текста с небольшими дополнительными накладными расходами. В режиме обратной связи по шифрованному тексту (СРВ) предыдущий блок шифрованного текста шифруется еще раз, и для получения очередного блока шифрованного текста результат складывается поразрядно по модулю 2 с блоком исходного текста. Для начала процесса шифрования также используется начальный вектор (см. Рис 2.7). ▼ с, = т, ® Еи{с,-\У, т, = Щ{с, \) ® т, Рис. 2.7. Режим обратной связи по шифрованному тексту. Стойкость режима СРВ равна стойкости блочного шифра, лежащего в его основе и структура исходного текста скрывается за счет использования операции сложения по модулю 2. Манипулирование исходным текстом путем удаления блоков из начала или конца шифрованного текста становится невозможным. В режиме СРВ если два блока шифрованного текста идентичны, то результаты их шифрования на следующем шаге также будут идентичны, что создает возможность утечки информации об исходном тексте. Скорость шифрования равна скорости работы блочного шифра и простого способа распараллеливания процесса шифрования также не существует. Этот режим в точности соответствует режиму гаммирования с обратной связью алгоритма ГОСТ 28147. Режим обратной связи по выходу (OFB) подобен режиму СРВ за исключением того, что величины, складываемые по модулю 2 с блоками исходного текста, генерируются независимо от исходного или шифрованного текста Для начала процесса шифрования также используется начальный вектор. Режим OFB обладает преимуществом перед режимом СРВ в том смысле, что любые битовые ошибки, возникшие в процессе передачи, не влияют на расшифрование последующих блоков. Однако, возможна простая манипуляция исходным текстом путем изменения шифрованного текста. Существует модификация этого режима под названием режим обратной связи по выходу с нелинейной функцией (OFBNLF - OFB with а NonLinear Function). В этом случае на каждом шаге меняется также и ключ шифрования: Ci =Ek.{mi),ki =Ei{ki xy, Pi=D{Ci),ki=E,,{ki ). Si \ с,л с, с, = m, ® s,; m, = c, ® s,; s, = e;t(s; i) Рис. 2.8. Режим обратной связи по выходу. Хотя в этом случае простого способа распараллеливания процесса шифрования также не существует, время можно сэкономить, выработав ключевую последовательность заранее. 0 1 2 3 4 5 6 [ 7 ] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |