Класифікація криптоалгоритмів

{{{img}}}
Імя Тарас
Прізвище Куриляк
По-батькові Тарасович
Факультет ФІС
Група СНсп-43
Залікова книжка № ПК 08-108


Криптографічний алгоритм, або шифр - це математична формула, що описує процеси шифрування і розшифрування. Щоб зашифрувати відкритий текст, криптоалгоритм працює в сполученні з ключем - словом, числом або фразою.
Криптографічних алгоритмів існує безліч. Їх призначення в загальних рисах зрозуміло: захист інформації. Захищати ж інформацію потрібно від різних загроз і різними способами. Щоб правильно задіяти криптоалгоритм (КА), тобто забезпечити надійний і адекватний захист, потрібно розуміти, які бувають КА і який тип алгоритму краще пристосований для вирішення конкретного завдання.


Основна схема класифікації криптоалгоритмів

Класифікація криптографічних алгоритмів

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

2. Криптографія з ключем. Алгоритм впливу на передані дані відомий усім стороннім особам, але він залежить від деякого параметра - "ключа", яким володіють лише відправник і одержувач.

  • Симетричні криптоалгоритми. Для зашифровки і розшифровки повідомлення використовується один і той же блок інформації (ключ).
  • Асиметричні криптоалгоритми. Алгоритм такий, що для зашифровки повідомлення використовується один ( "відкритий") ключ, відомий усім бажаючим, а для розшифровки - інший ( "закритий"), який існує тільки в одержувача.

В залежності від кількості ключів, які застосовуються у конкретному алгоритмі:

  • Безключові КА – не використовують в обчисленнях ніяких ключів;
  • Одноключові КА – працюють з одним додатковим ключовим параметром (якимсь таємним ключем);
  • Двухключові КА – на різних стадіях роботи в них застосовуються два ключових параметри: секретний та відкритий ключі.

В задежності від характеру впливів, що виробляються над даними, алгоритми підрозділяються на:

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

Залежно від розміру блоку інформації криптоалгоритми поділяються на:

  • Потокові шифри - Одиницею кодування є один біт. Результат кодування не залежить від минулого раніше вхідного потоку. Схема застосовується в системах передачі потоків інформації, тобто в тих випадках, коли передача інформації починається і закінчується в довільні моменти часу і може випадково перериватися. Найбільш поширеними представниками потокових шифрів являються скремблери.
  • Блочні шифри - Одиницею кодування є блок з декількох байтів (в даний час 4-32). Результат кодування залежить від усіх вихідних байтів цього блоку. Схема застосовується при пакетній передачі інформації та кодування файлів.


Симетричні криптоалгоритми

Симетричні криптосистеми – спосіб шифрування, в якому для шифрування і дешифрування застосовується один і той же криптографічний ключ. До винаходу схеми асиметричного шифрування єдиним існуючим способом було симетричне шифрування. Ключ алгоритму повинен зберігатися в секреті обома сторонами.
Алгоритми шифрування і дешифрування даних широко застосовуються в комп'ютерній техніці в системах приховування конфіденційної і комерційної інформації від не коректного використання сторонніми особами. Головним принципом у них є умова, що особа яка приймає повідомлення, заздалегідь знає алгоритм шифрування, а також ключ до повідомлення, без якого інформація є всього лише набір символів, що не мають сенсу.
Симетричні криптоалгоритми виконують перетворення невеликого (1 біт або 32-128 біт) блоку даних в залежності від ключа таким чином, що прочитати оригінал повідомлення можна тільки знаючи цей секретний ключ

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

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

  • генерує за будь-яким законом один біт шифрувальної послідовності;
  • яким-небудь оборотним перетворенням накладає на один біт відкритого потоку даний шифрувальний біт, отримуючи зашифрований біт.

Всі сучасні потокові шифри діють за даною схемою. Біт шифрування, що виникає на кожному новому кроці автомата, як втім і цілий набір таких біт, прийнято позначати символом γ (гамма), а самі потокові шифри отримали через це друга назва - шифри гамування.
Шифри гамування набагато швидші за своїх найближчих конкурентів - блокових шифрів - у тому випадку, якщо потокове шифрування реалізується апаратно. Як ми побачимо, базові схеми шифрів гамування влаштовані просто i як би "самі просяться" в апаратну реалізацію - це й не дивно, якщо взяти до уваги історію та основну мету їх створення. У тих же випадках, коли з яких-небудь причин дані алгоритми реалізовані програмно, їх швидкість порівняна з блочними шифрами, а іноді і набагато нижче за них.
Трьома основними компонентами, над якими обчислюється функція, що породжує гаму, є:

  • ключ;
  • номер поточного кроку шифрування;
  • прилеглі від поточної позиції біти вихідного і / або зашифрованого тексту.

Ключ є необхідною частиною гаммуючого шифру. Якщо ключ і схема породження гами не є секретним, то поточний шифр перетворюється на звичайний перетворювач-кодер - скремблер (від англ. Scramble - перемішувати, збивати).

Блочні шифри

На сьогоднішній день розроблено досить багато стійких блокових шифрів. Практично всі алгоритми використовують для перетворень певний набір бієктивних (оборотних) математичних перетворень.
Характерною особливістю блокових криптоалгоритмів є той факт, що в ході своєї роботи вони виробляють перетворення блоку вхідної інформації фіксованої довжини і отримують результуючий блок того ж обсягу, але недоступний для прочитання стороннім особам, що не володіють ключем. Таким чином, схему роботи блочного шифру можна описати функціями Z = EnCrypt (X, Key) і X = DeCrypt (Z, Key)
Ключ Key є параметром блокового криптоалгоритму і представляє собою деякий блок двійкової інформації фіксованого розміру. Вихідний (X) і зашифрований (Z) блоки даних також мають фіксовану розрядність, рівну між собою, але необов'язково рівну довжині ключа.
Блокові шифри є основою, на якій реалізовані практично всі криптосистеми. Методика створення ланцюжків із зашифрованих блочними алгоритмами байт дозволяє шифрувати ними пакети інформації необмеженої довжини. Таку властивість блокових шифрів, як швидкість роботи, використовується асиметричними криптоалгоритмами, повільними за своєю природою. Відсутність статистичної кореляції між бітами вихідного потоку блочного шифру використовується для обчислення контрольних сум пакетів даних і в хешуванні паролів.
Криптоалгоритм іменується ідеально стійким, якщо прочитати зашифрований блок даних можна тільки перебравши всі можливі ключі, до тих пір, поки повідомлення не виявиться осмисленим. Так як по теорії ймовірності шуканий ключ буде знайдено з ймовірністю 1/2 після перебору половини всіх ключів, то на злом ідеально стійкого криптоалгоритму з ключем довжини N потрібно в середньому [math]2^{N-1}[/math] перевірок. Таким чином, у загальному випадку стійкість блочного шифру залежить тільки від довжини ключа і зростає експоненціально з її зростанням. Навіть припустивши, що перебір ключів проводиться на спеціально створеній багатопроцесорної системі, в якій завдяки діагональному паралелізму на перевірку 1 ключа йде тільки 1 такт, то на злом 128 бітного ключа сучасній техніці буде потрібно не менше [math]10^{21}[/math] років. Звичайно, все сказане стосується тільки ідеально стійких шифрів.

Асиметричні алгоритми