Trivium (шифр)

Triviumсиметричний алгоритм синхронного потокового шифрування, орієнтований, в першу чергу, на апаратну реалізацію з гнучкою рівновагою між швидкістю роботи і кількістю елементів, що має також можливість досить ефективної програмної реалізації.

Структура шифру Trivium

Шифр був представлений в грудні 2008 року як частина портфоліо європейського проекту eSTREAM, за профілем 2 (апаратно-орієнтовані шифри). Авторами шифру є Крістоф Де Канньер і Барт Пренел.

Даний потоковий шифр генерує аж до біт вихідного потоку з 80 біт ключа і 80 біт IV (вектора ініціалізації). Це — найпростіший шифр проекту eSTREAМ, який показує відмінні результати по криптостійкості.

Trivium включений в стандарт ISO/IEC 29192-3 як легкий потоковий шифр.

Опис

Початковий стан Trivium являє собою 3 зсувних регістра сумарної довжини в 288 біт. Кожен такт відбувається зміна бітів в регістрах зсуву шляхом нелінійної комбінації прямого і зворотного зв'язку. Для ініціалізації шифру ключ K і ініціалізувалися вектор IV записуються в 2 з 3х регістрів і відбувається виконання алгоритму протягом 4х288 = 1152 раз, що гарантує залежність кожного біта початкового стану від кожного біта ключа і кожного біта ініціалізуючого вектора.

Після проходження стадії ініціалізації кожен такт генерується новий член ключового потоку Z, який проходить процедуру XOR з наступним членом тексту. Процедура розшифровки відбувається в зворотному порядку — кожен член шифротексту проходить процедуру XOR з кожним членом ключового потоку Z.[1]

Алгоритм

Потокові шифри

Trivium генерує послідовність Z, так званий ключовий потік, довгою аж до біт. Для шифрування повідомлення необхідно провести операцію XOR від повідомлення і ключового потоку. Розшифровка проводиться аналогічним чином виконується операція XOR від шифротексту і ключового потоку.

Ініціалізація

Алгоритм ініціалізується завантаженням 80 бітного ключа і 80 бітного ініціалізуючого вектора в 288 бітний початковий стан. Ініціалізація може бути описана наступним псевдокодом.

Процедура ініціалізації гарантує те, що кожен біт початкового стану залежить від кожного біта ключа і кожного біта не ініціалізуючого вектора. Даний ефект досягається вже після 2х повних проходів (2 * 288 виконань циклу). Ще 2 проходи призначені для ускладнення бітових взаємозв'язків. Для прикладу перші 128 байт ключового потоку Z, отриманого від нульового ключа і ініціалізуючого вектора, мають приблизно однакову кількість рівномірно розподілених 1 і 0. Навіть при найпростіших і однакових ключах алгоритм Trivium видає послідовність чисел, близьку до випадкової.

Робота алгоритму

Генератор потоку використовує 15 біт з 288битного початкового стану для зміни 3х біт стану та обчислення 1 біта ключового потоку . В результаті роботи алгоритму може бути отримано до біт ключового потоку. Алгоритм може бути описаний наступним псевдокодом.

В даному псевдокоді всі обчислення проводяться за модулем 2. Тобто операції додавання і множення є операціями XOR і AND.

Період

Період ключового потоку складно визначити, за нелінійного характеру змін початкового стану. Навіть якщо відкрити всі тригери AND, що призведе до повністю лінійною схемою, можна показати, що будь-яка пара ключа і ініціалізуючого вектора приведе до генерації ключового потоку з періодом порядку (що вже перевершує необхідну довжину ключового потоку ).

Якщо ж припустити, що Trivium починає генерувати випадковий ключовий потік, після невеликої кількості ітерацій, то всі згенеровані послідовності, довжиною до будуть рівноймовірні. А також ймовірність того, що пара ключ/ініціалізувалися вектор згенерують ключовий потік з періодом менше, ніж буде порядку [2].

Шифри сімейства Trivium

Модифікації даного шифру відрізняються кількістю регістрів зсуву і їх довжинами.

Univium

Шифр Univium складається з одного регістру зсуву, для кодування необхідний тільки ключ довжиною, що не перевищує довжину регістра.[3]

Bivium

Разом з Trivium його автори запропонували шифр Bivium, в якому реалізовані тільки 2 зсувних регістра сумарної довжини 177 біт. Процес ініціалізації аналогічний Trivium. Кожен такт змінюються 2 біти стану і формується новий біт ключового потоку. По генерації ключового потоку Z розрізняють 2 версії: Bivium-A і Bivium-B(Bivium). У Bivium-A реалізована пряма залежність нового члена Z від зміненого стану біта від відміну від неї в Bivium-B (Bivium) .[4]

Trivium-toy і Bivium-toy

Toy-версії були отримані шляхом зменшення довжин регістрів, що дозволило знизити обчислювальну складність алгоритму, при цьому зберігаючи всі математичні властивості. Довжина кожного регістру скорочувалася в 3 рази, причому Bivium-toy також складалася лише з двох регістрів.

Кожна модифікація шифру Trivium створена для спрощення його математичного опису, що має більше навчальну мету, ніж мету застосувати їх у засобах захисту інформації.[5]

Продуктивність

Стандартна апаратна реалізація алгоритму вимагає наявності 3488 логічних елементів і виробляє 1 біт ключового потоку за 1 такт. Але, так як кожний новий стан біта не змінюється принаймні протягом 64 раундів, то ще 64 стану можуть бути згенеровані паралельно при збільшенні кількості логічних елементів до 5504. Також можливі різні варіації продуктивності в залежності від кількості використаних елементів.

Програмна інтерпретація даного алгоритму також досить ефективна. Реалізація Trivium на мові C на процесорі AthlonXP 1600+ дозволяє отримати швидкість шифрування понад 2,4 Мбіт/с

Захищеність

На відміну від ранніх потокових шифрів, як наприклад RC4, алгоритм Trivium, крім закритого ключа (K) також має ініціалізуючий вектор (IV), який є відкритим ключем. Застосування IV дозволяє проводити безліч незалежних сеансів шифрування/розшифрування використовуючи всього лише 1 ключ і кілька ініціалізуючих векторів (по одному для кожного сеансу). Також можна використовувати кілька ініціалізуючих векторів для одного сеансу, використовуючи для кожного нового повідомлення новий IV

В даний момент не відомо жодних методів атаки на даний алгоритм, які були б ефективніше послідовного перебору (або брутфорса (англ. brute force)). Складність проведення даної атаки залежить від довжини повідомлення і становить близько .

Існують дослідження методів атак (наприклад кубічна атака[6]), які близькі по ефективності до перебору. Крім того, існує метод атаки, що дозволяє відновити K з IV і ключового потоку. Складність даної атаки дорівнює і незначно зменшується при збільшенні кількості инициализирующих векторів, що використовувалися з одним ключем. Можливі також атаки з дослідженням псевдовипадковою послідовності ключового потоку з метою знаходження закономірностей і передбачення подальших біт потоку, але дані атаки вимагають вирішення складних нелінійних рівнянь. Найменша отримана складність такої атаки становить [7][8]

Методи дослідження

Практично всі досягнення в області злому Trivium являють собою спроби застосувати атаки, вдало проведені на усічених версіях алгоритму. Найчастіше, в якості досліджуваного використовується версія алгоритму Bivium, в якому використовується лише 2 зсувних регістра сумарної довжини 192 біта.

Посилання

Примітки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.