MADRYGA (в честь автора W. E. Madryga) — блочний алгоритм шифрування, створений англ. W. E. Madryga в 1984 році[1].
Цей алгоритм розроблений для простої і ефективної реалізації шифрування всередині програмного забезпечення. Всі операції алгоритм виконує над байтами.
При проектуванні алгоритму автор вирішував такі завдання:
Алгоритм DES задовольняв перші дев'ять вимог, але останні три стали новими. Вони дають цим алгоритмам можливість програмних реалізацій.
Madryga складається з двох вкладених циклів. Зовнішній цикл повторюється вісім разів (але ця кількість може бути збільшена для підвищення безпеки) й містить застосування внутрішнього циклу до відкритого тексту. Внутрішній цикл перетворює відкритий текст в шифротекст, повторюючись для кожного 8-бітового блоку (байта) відкритого тексту. Отже, весь відкритий текст вісім разів послідовно обробляється алгоритмом.
Ітерація внутрішнього циклу оперує з 3-байтовим вікном даних, так званим робочим кадром. Це вікно зміщується на один байт за ітерацію. Перші два байта робочого кадру циклічно зсуваються на змінне число позицій, а для останнього байта виконується XOR з деякими бітами ключа. У міру просування робочого кадру всі байти послідовно «обертаються» і піддаються операції XOR з частинами ключа. Послідовні обертання перемішують результати попередніх операцій XOR і обертання, а результат XOR впливає на обертання. Це робить процес оборотним.
Так як кожен байт даних впливає на байт зліва від себе і на один байт справа, після восьми проходів кожен байт шифротексту залежить від 16 байтів зліва і від восьми байтів справа.
При шифруванні кожна операція внутрішнього циклу встановлює робочий кадр на передостанній байт тексту й циклічно переміщує його до байту відкритого тексту, третій зліва від останнього. Спочатку весь ключ піддається операції XOR з випадковою константою, а потім циклічно зміщується вліво на 3 біти. Молодші три біта молодшого байта робочого кадру зберігаються, вони визначають обертання інших двох байтів. Потім для молодшого байта робочого кадру виконується операція XOR з молодшим байтом ключа. Далі об'єднання двох старших байтів циклічно зміщується вліво на змінне число бітів (від 0 до 7). Нарешті робочий кадр зміщується вправо на один байт і весь процес повторюється.
Сенс випадкової константи в тому, щоб перетворити ключ в псевдовипадкову послідовність. Довжина константи повинна дорівнювати довжині ключа. При обміні даними абоненти повинні користуватися константами однакової довжини. Для 64-бітового ключа Мадрига рекомендує константу 0x0f1e2d3c4b5a6978.
При дешифрування процес інвертується. При кожній ітерації внутрішнього циклу робочий кадр встановлюється на байт, третій зліва від останнього байта шифротексту, і циклічно переміщається в зворотному напрямку до байта, який знаходиться на два байти лівіше останнього байта шифротексту. І ключ, і два байта шифротексту в процесі циклічно зміщуються направо, а XOR виконується перед циклічними зрушеннями.
Науковці з Технічного Університету в Квінсланді (англ. Queensland University of Technology) досліджували Madryga разом з деякими іншими блоковими шифрами. Вони виявили, що в цьому алгоритмі не проявляється лавинний ефект для перетворення відкритого тексту в шифротекст. Крім того, у багатьох шифротекстах відсоток одиниць був вище ніж відсоток нулів[2].
При поверхневому знайомстві з алгоритмом Елі Біхам прийшов до наступних висновків:
В 1998 була виявлена вразливість до атак на основі шифротексту у блочному шифрі MADRYGA, але це не отримало широкого розповсюдження[3].
На цю статтю не посилаються інші статті Вікіпедії. Будь ласка розставте посилання відповідно до прийнятих рекомендацій. |