Описание SAFER K-64

SAFER

SAFER K-64 означает Secure And Fast Encryption Routine with a Key of 64 bits - Безопасная и быстрая проц е-дура шифрования с 64-битовым ключом [1009]. Этот не являющийся частной собственностью алгоритм, разр а-ботанный Джеймсом Массеем (James Massey) для Cylink Corp., используется в некоторых из продуктов этой компании. Правительство Сингапура собирается использовать этот алгоритм - с 128-битовым ключом [1010] -для широкого спектра приложений. Его использование не ограничено патентом, авторскими правами или др у-гими ограничениями.

Алгоритм работает с 64-битовым блоком и 64-битовым ключом. В отличие от DES он является не сетью Фейстела (см. раздел 14.10), а итеративным блочным шифром: для некоторого количества этапов применяется одна и та же функция. На каждом этапе используются два 64-битовых подключа. Алгоритм оперирует только байтами.

Блок открытого текста делится на восемь байтовых подблоков: Въ В2, . . . , Въ В%. Затем подблоки обрабаты­ваются в ходе г этапов. Наконец подблоки подвергаются заключительному преобразованию. На каждом этапе используется два подключа: К2гЛ и К.

На Рис. 14-4 показан один этап SAFER K-64. Сначала над подблоками выполняется либо операция XOR, л и-бо сложени с байтами подключа К2гЛ. Затем восемь подблоков подвергаются одному из двух нелинейных пр е-образований:

у = 45х mod 257. (Если х = 0, то у = 0.)

у = log45 х. (Если х = 0, то у = 0.)


Вход этапа (8 байтов)
1_______ 2_______ 3_______ 4_______ 5_______ 6_______ 7_______ 8

[ [ [ \ \ [ \ \


                                                 
xor add add xor xor add add xor
                                                 
  45<->   log45   log45   45 ()   45 ()   log45   log45   45<->  

ГТТТТТТТ


К2и


 


add xor


xor add


add xor xor add


K2i


1234567 8
______________________ Выход этапа (8 байтов)_______________________

Рис. 14-4. Один этап SAFER.

Это операции в конечном поле GF(257), a 45 - элемент поля, являющийся примитивом. В реализациях SAFER K-64 быстрее выполнять поиск в таблице, чем все время рассчитывать новые результаты.

Затем подблоки либо подвергаются XOR, либо складываются с байтами подключа К. Результат этого дей­ствия проходит через три уровня линейных операций, целью которых является увеличение лавинного эффекта. Каждая операция называется псевдоадамаровым преобразованием (Pseudo-Hadamard Transform, PHT). Если на входе РНТ ах и а2, то на выходе:

ii = (2fli + а2) mod 256

Ъг = (fll + а2) mod 256

После г этапов выполняется заключительное преобразование. Оно совпадает с преобразованием, являющи м-ся первым действием каждого этапа. Над Ви В,, В5 и £8 выполняется XOR с соответствующими байтами по­следнего подключа, а В2, В3, В6 и В7 складываются с соответствующими байтами последнего подключа. В р е-зультате и получается шифротекст.

Дешифрирование представляет собой обратный процесс: сначала заключительное преобразование (с выч и-танием вместо сложения), затем г инвертированных этапов. Обратное РНТ (Inverse PHT, IPHT) - это:

аг = (*! - Ъг) mod 256

а2 = (-*! + 2Ъг) mod 256

Массей рекомендует использовать 6 этапов, но для большей безопасности количество этапов можно увел и-чить.

Генерировать подключи совсем не трудно. Первый подключ, Ки - это просто ключ пользователя. После­дующие ключи генерируются в соответствии со следующей процедурой:

i:,+1 = (X,«<30 + c,

Символ "«<" обозначает циклический сдвиг налево. Сдвиг выполняется побайтно, а с, является константой этапа. Если с„ - этоу-ый байт константы г'-го этапа, то можно рассчитать все константы этапов по следующей


формуле

c, = 4545"«9'+'') mod 256) mod 257 mod 257 Обычно эти значения хранятся в таблице.