Шифр Serpent

{{{img}}}
Імя Maria
Прізвище Stadnyk
По-батькові Andriivna
Факультет FIS
Група CH-41
Залікова книжка №06-064



Основні відомості про шифр Serpent

Головна родзинка шифру SERPENT в тому, що всі три його автора - це "аси криптоаналізу", найбільш відомі розкриттям шифрів інших криптографів. Ізраїльський дослідник Елі Біхам - один з творців диференціального криптоаналізу - техніки, що лежить в основі більшості сучасних методів розкриття блокових шифрів. В даний час є професором ізраїльського технологічного інституту відділу інформатики. Починаючи з жовтня 2008 року, Biham є деканом факультету комп'ютерних наук, після роботи протягом двох років у якості головного аспірантури CS. Biham отримав докторський ступінь за винахід (публічно) диференціального криптоаналізу, працюючи разом із Аді Шамір. Данець Ларс Кнудсен вже згадувався в цьому огляді у зв'язку з шифром угоди (Кнудсен - єдиний криптограф, що фігурує одразу в двох проектах). Після декількох ранніх робіт в банківській сфері, Кнудсен вступив в Орхус-університет в 1984 вивчав математику та інформатику, отримавши ступінь магістра в 1992 і ступінь доктора філософії в 1994 році. У 1997-2001 він працював в Університеті Бергена, Норвегія. В даний час, Кнудсен є професором на кафедрі математики в технічному університеті Данії. Англієць Росс Андерсон з Кембриджського університету з початку 90-х років відомий своїми неординарними криптоаналітичних роботами.[2]. Росс Джон Андерсон, (р. 1956), дослідник, письменник і консультант у галузі безпеки, техніки. Він також є професором в області безпеки інженерії в Кембріджському університеті комп'ютерної лабораторії, де він бере участь у групі безпеки. У 1978 році Андерсон закінчив зі ступенем бакалавра в області математики і природничих наук у Трініті-коледжі в Кембриджі, а потім отримав кваліфікацію в галузі комп'ютерної техніки. Він працював в авіаційній промисловості і банківської перш ніж перейти в 1992 році повернутися до Кембриджського університету, для роботи над докторською дисертацією під керівництвом Роджера Нідхам і розпочала свою кар'єру як вчений-дослідник. Він отримав докторську ступінь у 1995 році і став викладачем в тому ж році. Serpent має розмір блоку 128 біт і можливe довжинe ключа 128, 192 або 256 біт. Алгоритм представляє собою 32-раундову SP-мережу, що працює з блоком з чотирьох 32-бітових слів. Але Serpent був розроблений так, що всі операції можуть бути виконані паралельно, використовуючи 32 1-бітових потоки. При розробці Serpent використовувався більш консервативний підхід до безпеки, ніж у інших фіналістів AES, проектувальники шифру вважали, що 16 раундів достатньо, щоб протистояти відомим видам криптоаналізу, але збільшили число раундів до 32, щоб алгоритм міг краще протистояти ще не відомим методам криптоаналізу. Ставши фіналістом конкурсу AES, Serpent алгоритм в результаті голосування зайняв 2 місце. Особливостями алгоритму є: Алгоритм оптимізовано для програмної реалізації в техніці "бітових зрізів" (bitslice) і має ряд обумовлених цим фактом особливостей: у ньому використовуються початкова та зворотна їй кінцева бітові перестановки, які не впливають на стійкість шифру і призначені для оптимізації його реалізації. При реалізації в техніці "бітових зрізів" виконання цих перестановок в явному вигляді не потрібно, при традиційній реалізації - потрібно. Крім того, з тієї ж самої причини в алгоритмі використовуються вузли замін малого розміру (4 на 4 біта), тому що в рамках зазначеної техніки вони реалізуються у вигляді серії логічних операцій над даними і при більшому розмірі це стає важко реалізованим.


Структура алгоритму

Алгоритм являє собою мережу Фейштеля для чотирьох гілок змішаного типу: 2 парні гілки змінюють сумісності значення непарних, потім міняються місцями. Як криптоперетворення використовуються тільки виключне "АБО", табличні підстановки і бітові зрушення. Алгоритм складається з 32 раундів. Самі раунди складені таким чином, що додавання до гілками матеріалу ключа на першому і останньому раундах утворює вхідне і вихідне забілювання [4]. Алгоритм Serpent являє собою SP-мережу, в якій весь блок даних довжиною 128 біт на кожному раунді розбивається на 4 слова довжиною по 32 біта. Всі значення, що використовуються для шифрування, представляються бітовими потоками. Індекси біт пробігають значення від 0 до 31 для 32-бітових слів, від 0 до 127 для 128-бітових блоків, від 0 до 255 для 256-бітових ключів і так далі. Для внутрішніх обчислень всі біти величин представлені в прямому порядку (little-endian). Serpent шифрує відкритий текст P довжиною 128 біт в шифротекст C довжиною 128 біт за 32 раунди за допомогою 33 підключів , довжиною 128 біт. Довжина використовуваного ключа може приймати різні значення, але для конкретики зафіксуємо їх довжину у 128, 192 або 256 біт. Короткі ключі довжиною менше 256 біт доповнюються до повної довжини в 256 біт. Шифрування складається з наступних основних кроків: Початкова перестановка; 32 раунди, кожен з яких складається з операції змішування з 128-бітовим ключем (побітове логічне що виключає «або»), таблична заміна (S-box) і лінійне перетворення. В останньому раунді лінійне перетворення замінюється додатковим накладанням ключа; Кінцева перестановка; Початкова і кінцева перестановки не мають будь-якої криптографічного значущості. Вони використовуються для спрощення оптимізованої реалізації алгоритму і підвищення обчислювальної ефективності. Рівняння структури алгоритму: