
- •Інформація. Основні властивості інформації. Безпека інформації.
- •Криптографія. Історія розвитку криптографії. Класичні техніки шифрування.
- •Симетричні алгоритми кодування інформації. Міжнародні стандарти шифрування даних.
- •Алгоритми des, гост 28147-89. Порівняльна характеристика.
- •Симетричні блокові алгоритми. Алгоритми tea, rc4/5/6.
- •Режими шифрування для випадку симетричних блокових алгоритмів.
- •Надійність криптографічних систем. Криптоаналіз. Основні методи криптоаналізу. Приклади застосування.
- •Асиметричні алгоритми шифрування даних. Математичні проблеми, що лежать в основі асиметричних криптоалгоритмів. Алгоритм rsa.
- •Електронні цифрові підписи та адміністрування ключами. Обмін ключами. Алгоритм Діффі – Хеллмана. Криптосистема Ель-Гамаля.
- •Кодування інформації. Архівація. Стеганографія.
Симетричні блокові алгоритми. Алгоритми tea, rc4/5/6.
Необхідність застосування криптографічного захисту інформації в мережах ЕОМ, у базах даних, в системах електронних платежів, привела до широкого використання програмних засобів шифрування. При цьому виявилося, що програмна реалізація потокових шифрів, в ряді випадків, поступається у швидкодії шифрам іншого типу, так званим, блоковим шифрам. Блоковим шифром називається система шифрування, що використовує на кожному такті постійний, обраний до початку шифрування, в залежності від ключів, алгоритм. Оскільки зашифрування повинно бути взаємно однозначним перетворенням, то блокові шифри є шифрами заміни з дуже великим алфавітом. Знаки алфавіту представляються у вигляді двійкових блоків даних фіксованої довжини. Наприклад, алгоритм ГОСТ 28147-89 призначений для роботи з блоками довжиною 64 біта. У режимі простої заміни цей шифр взаємно однозначно відображає безліч потужності на себе. Існують потокові шифри, які використовують блоковий шифр в якості вузла генерації гами. У криптографії прийнято розглядати подібні шифри як режими роботи відповідного блокового шифру. Наприклад, в режимах шифрування алгоритм ГОСТ 28147-89 працює як шифр гамування за модулем два, використовуючи двійкову гаму, вироблену в режимі, відповідному блокового шифру. Для блокових шифрів оцінка стійкості пов'язана з оцінкою якості т.зв. віртуальних таблиць заміни, тобто таблиць заміни, уявити які цілком на носії неможливо через великий обсяг даних. Блоковий шифр є сукупністю віртуальних таблиць заміни. Ключ служить для вибору таблиці, яка є незмінною в процесі шифрування окремого повідомлення. Очевидно, що криптографічні властивості шифру простої заміни істотно залежать від ключів. Тому в блоковому шифрі ключі, взагалі кажучи, можуть бути нерівноцінні. Загальна проблема оцінки якості блочного шифру зводиться до задачі визначення великих областей ключів, яким відповідають підстановки, найбільш складні для розкриття шифру простої заміни. У криптографії, Tiny Encryption Algorithm (TEA) - блочний алгоритм шифрування типу «Мережа Фейстеля». Алгоритм був розроблений на факультеті комп'ютерних наук Кембриджського університету Девідом Уїлером (David Wheeler) і Роджером Нідхем (Roger Needham) і вперше представлений в 1994 році на симпозіумі з швидким алгоритмам шифрування у Левені (Бельгія). Шифр НЕ патентування, широко використовується в ряді криптографічних додатків і широкому спектрі апаратного забезпечення завдяки вкрай низьким вимогам до пам'яті і простоті реалізації. Алгоритм має як програмну реалізацію на різних мовах програмування, так і апаратну реалізацію на інтегральних схемах типу FPGA. Алгоритм шифрування TEA заснований на бітових операціях з 64-бітним блоком, має 128-бітний ключ шифрування. Стандартна кількість раундів мережі Фейстеля одно 64 (32 циклу), однак, для досягнення найкращої продуктивності або шифрування, число циклів можна варіювати від 8 (16 раундів) до 64 (128 раундів). Мережа Фейстеля несиметрична через використання в якості операції накладення додавання за модулем 232. Достоїнствами шифру є його простота в реалізації, невеликий розмір коду і досить висока швидкість виконання, а також можливість оптимізації виконання на стандартних 32-бітних процесорах, так як в якості основних операцій використовуються операції виключає «АБО» (XOR), побітового зсуву та складання по модулю 232. Оскільки алгоритм не використовує таблиць підстановки і раундова функція досить проста, алгоритмом потрібно не менше 16 циклів (32 раундів) для досягнення ефективної дифузії, хоча повна дифузія досягається вже за 6 циклів (12 раундів). Алгоритм має відмінну стійкість до лінійного криптоаналізу і досить хорошу до диференціального криптоаналізу. Головним недоліком цього алгоритму шифрування є його вразливість до атак «на пов'язаних ключах» (англ. Related-key attack). Через простого розкладу ключів кожен ключ має 3 еквівалентних ключа. Це означає, що ефективна довжина ключа складає всього 126 біт, тому даний алгоритм не слід використовувати в якості хеш-функції. Виявлення ряду серйозних вразливостей і слабких місць у вихідному алгоритмі TEA призвело до швидкого створення його розширень. Основними відмінностями всіх цих алгоритмів є вдосконалене розклад ключів, динамічна залежність ключа від тексту, а також інший розмір ключа, вхідного блоку та / або кількість раундів мережі Фейстеля. XTEA має розмір блоку, рівний 64 бітам, розмір ключа - 128 бітам, кількість раундів мережі Фейстеля одно 64. Алгоритм був розроблений Девідом Уїлером і Роджером Нідхема і опубліковано в 1997 році. Головна відмінність від вихідного алгоритму TEA - наявність алгоритму розкладу ключів, що дозволило усунути критичну вразливість до «атак на пов'язаних ключах», але призвело до погіршення стійкості до диференціального криптоаналізу. Існують три модифікації цього алгоритму, розроблені Томом Денісом (Tom Denis): XTEA-1 (розмір блоку - 64 біта, розмір ключа - 128 біт, кількість раундів мережі Фейстеля - 32), XTEA-2 (розмір блоку - 128 біт, розмір ключа - 128 біт, кількість раундів мережі Фейстеля - 64) і XTEA-3 (розмір блоку - 128 біт, розмір ключа - 256 біт, кількість раундів мережі Фейстеля - 64). У 1998 році було опубліковано наступне розширення алгоритму, що отримало назву XXTEA. Розмір ключа - 128 біт. Відмінною особливістю є можливість шифрування будь-яких блоків, довжина яких кратна 64 бітам, кількість раундів одно 52 + 6 * (кількість 32-бітних слів в блоці) або 52 + 12 * M при довжині блоку 64 * M біт. Практична ефективність опублікованій анонімно диференціальної атаки не доведена. Існує так само альтернативна модифікація алгоритму TEA, що отримала найменування RTEA, розроблена в 2007 році «Marcos el Ruptor». Розмір блоку - 64 біта; для 128-бітного ключа число раундів мережі Фейстеля дорівнює 48, для 256-бітного - 64. За заявами розробників цей алгоритм продуктивніше й більш стійкий до криптоанализу, ніж XTEA, однак і на цей алгоритм вже існує «атака на пов'язаних ключах». З використанням механізмів генетичного програмування в 2006 році командою розробників на чолі з Хуліо Кастро був створений алгоритм Raiden, покликаний усунути уразливості шифру TEA. Він практично в точності повторює структуру алгоритму TEA, за винятком того, що у алгоритму Raiden є розширений алгоритм розкладу ключів. Стандартне число раундів мережі Фейстеля одно 32 (16 циклів). Raiden використовує ключове розклад, близьке до ГПСЧ, трансформує ключ і генерує підключи для кожного раунду. Шифр успішно проходить тексти Diehard, Sexton і ЕНТ. RC4 - потоковий шифр, розроблений Роном Рівестом (анг. Ron Rivest) у 1987 році, коли він працював у американській компанії RSA Security. Робота багатьох поточних шифрів заснована на лінійних регістрах зсуву зі зворотним зв'язком (LFSR). Це дозволяє досягти високої ефективності реалізацій шифру у вигляді ІВ, але ускладнює програмну реалізацію таких шифрів. Оскільки шифр RC4 не використовує LFSR і заснований на байтових операціях, його зручно реалізовувати програмно. Типова реалізація виконує від 8 до 16 машинних команд на кожен байт тексту, тому програмна реалізація шифру повинна працювати дуже швидко. RC5 (Код Рона 5 або Cipher Rivest по 5) - це блочний шифр, розроблений Роном Рівестом з компанії RSA Security Інк з перемінним кількістю раундів, довжиною блоку і довжиною ключа. Це розширює сферу використання і спрощує перехід на більш сильний варіант алгоритму. Алгоритм RC5 має такі властивості:
1 Придатний як для апаратної, так і для програмної реалізації (алгоритм використовує операції виконуються однаково швидко на всіх процесорах).
2 Кожен раунд обробляє весь блок цілком (типовий раунд мережі Фейстеля обробляє тільки "підблок»).
3 Однаково гарний для машин з різною довжиною машинного слова (тобто працює також добре і на 64-бітних машинах).
4 Має повторювану структуру з перемінним числом раундів, що дозволяє користувачу самому вибирати між більш високою швидкістю шифрування або більшої захищеністю шифру.
5 Має змінну довжину ключа, що дозволяє користувачу самому вибирати рівень безпеки відповідний специфіці його додатки.
6 Досить простий у реалізації та аналізі.
7 Не вимогливий до пам'яті, що дозволяє використовувати його навіть в мобільних і переносних пристроях.
RC6 - симетричний блоковий криптографічний алгоритм, похідний від алгоритму RC5. Був створений Роном Рівестом, Меттом Робшау і Реєм Сіднеєм для задоволення вимог конкурсу шифрування Advanced Encryption Standard (AES). Алгоритм був одним з п'яти фіналістів конкурсу, був також представлений і CRYPTREC Нессі. Є власницьким (пропрієтарним) алгоритмом, і запатентований RSA Security. Варіант шифру RC6, заявлений на конкурс AES, підтримує блоки довжиною 128 біт і ключі довжиною 128, 192 і 256 біт, але сам алгоритм, як і RC5, може бути налаштований для підтримки більш широкого діапазону довжин як блоків, так і ключів (від 0 до 2040 біт). RC5 RC6 дуже схожий на за своєю структурою і також досить простий в реалізації. Є фіналістом AES, проте одна з примітивних операцій - операція множення, повільно виконувана на деякому обладнанні і ускладнює реалізацію шифру на ряді апаратних платформ і, що виявилося сюрпризом для авторів, на системах з архітектурою Intel IA-64 також реалізована досить погано. У даному випадку алгоритм втрачає одне зі своїх ключових переваг - високу швидкість виконання, що стало причиною для критики і однією з перепон для обрання в якості нового стандарту. Однак, на системах з процесором Pentium II, Pentium Pro, Pentium III, PowerPC і ARM алгоритм RC6 випереджає переможця - Rijndael. Так само, як і RC5, RC6 - повністю параметризованих сім'я алгоритмів шифрування. Для специфікації алгоритму з конкретними параметрами, прийнято позначення RC6-w/r/b, де
- W - довжина машинного слова в бітах.
- R - число раундів.
- B - довжина ключа в байтах. Можливі значення 0 0,255 байт.
Для того щоб відповідати вимогам AES, блочний шифр повинен звертатися з 128 бітовими блоками. Так як RC5 - виключно швидкий блоковий шифр, розширення його, щоб працювати з 128 бітовими блоками призвело б до використання двох 64-бітових робочих регістрів. Але архітектура і мови програмування ще не підтримують 64-бітові операції, тому довелося змінити проект так, щоб використовувати чотири 32-бітних регістрів замість двох 64-бітних. Для більшості додатків впровадження RC6 в програмне забезпечення - ймовірно, кращий вибір. Примітивні операції RC6 (додавання, віднімання, множення, виключає або, зсув) дуже добре підтримуються сучасними мікропроцесорами і тому при розробці цих процесорів вигідно це враховувати. Проте, в деяких випадках корисно мати RC6 у вигляді вбудованої схеми. Тоді можна було б досягти максимальної швидкості або об'єднати інші функції навколо RC6. Оскільки RC6 використовує примітивні операції, описані вище, то можна використовувати переваги існуючої перевірки при розробці схемних модулів для реалізації цих примітивних операцій. Наприклад, якщо реалізувати RC6, використовуючи технології, засновані на матрицях логічних елементів, то це не принесе бажаних переваг через величезних зусиль, які потрібно буде докласти для розробки схеми множень. Реалізація на базі такої технології значно поступається реалізації на базі процесора. Але це не типова ситуація і можна легко спроектувати схему множення, яка буде використовуватися в якості підмодуля. З 20 раундами на блок час шифрування приблизно дорівнює 100 наносекунд для кожного блоку, забезпечуючи передбачувану швидкість передачі даних приблизно 1,3 Гбіт / сек.