MADRYGA
В.Е. Мадрига (W. E. Madryga) предложил этот блочный алгоритм в 1984 году [999]. Он может быть эффективно реализован как программа: в нем нет надоедливых перестановок, и все операции выполняются над байтами. Стоит перечислить задачи, которые решал автор при проектировании алгоритма:
-
Открытый текст нельзя получить из шифротекста без помощи ключа. (Это означает только то, что алгоритм безопасен.)
-
Количество операций, нужное для определения ключа по имеющимся шифротексту и открытому тексту, должно быть статистически равно произведению количества операций при шифровании на число возможных ключей. (Это означает, что никакое вскрытие с открытым текстом не может быть лучше, чем вскрытие грубой силой.)
-
Известность алгоритма не влияет на силу шифра. (Безопасность полностью определяется ключом.)
-
Изменение одного бита ключа должно вызывать для того же открытого текста радикальное изменение шифротекста, и Изменение одного бита открытого текста должно вызывать для того же ключа радикальное изменение шифротекста. (Это лавинный эффект.)
-
Алгоритм должен содержать некоммутативную комбинацию подстановок и перестановок.
-
Подстановки и перестановки, используемые в алгоритме, должны определяться и входными данными, и ключом.
-
Избыточные группы битов открытого текста должны быть полностью замаскированы в шифротексте.
-
Длина шифротекста должна равняться длине открытого текста.
-
Не должно быть простых взаимосвязей между любыми возможными ключами и особенностями шифротекста.
-
Все возможные ключи должны давать сильный шифр. (Не должно быть слабых ключей.)
-
Длина ключа и текста могут регулироваться для реализации различных требований к безопасности.
-
Алгоритм должен позволять эффективную программную реализацию на больших мэйнфреймах, миникомпьютерах, микрокомпьютерах и с помощью дискретной логики. (По сути используемые в алгоритме функции ограничены XOR и битовым сдвигом.)
DES удовлетворял первым девяти требованиям, но последние три были новыми. В предположении, что лучшим способом вскрытия алгоритма является грубая сила, переменная длина ключа, конечно же, заставит замолчать тех, кто считает, что 56 битов - это слишком мало. Такие люди могут реализовать этот алгоритм с любой нужной им длиной ключа. А любой, кто когда-нибудь пытался реализовать DES программно, обрадуется алгоритму, который учитывает возможности программных реализаций.