Блочні шифри


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

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

Таким чином, схему роботи блочного шифру можна описати функціями

  • Z = EnCrypt (X, Key)
  • X = DeCrypt (Z, Key)

Ключ Key є параметром блокового криптоалгоритму і представляє собою деякий блок двійкової інформації фіксованого розміру. Вихідний (X) і зашифрований (Z) блоки даних також мають фіксовану розрядність, рівну між собою, але необов'язково рівну довжині ключа.

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

Криптоалгоритм іменується ідеально стійким, якщо прочитати зашифрований блок даних можна тільки перебравши всі можливі ключі, до тих пір, поки повідомлення не виявиться осмисленим. Так як по теорії ймовірності шуканий ключ буде знайдено з ймовірністю 1 / 2 після перебору половини всіх ключів, то на злом ідеально стійкого криптоалгоритму з ключем довжини N потрібно в середньому 2N-1 перевірок. Таким чином, у загальному випадку стійкість блочного шифру залежить тільки від довжини ключа і зростає експоненціально з її зростанням. Навіть припустивши, що перебір ключів проводиться на спеціально створеній багатопроцесорної системі, в якій завдяки діагональному паралелізму на перевірку 1 ключа йде тільки 1 такт, то на злом 128 бітного ключа сучасній техніці буде потрібно не менше 1021 років. Звичайно, все сказане стосується тільки ідеально стійких шифрів, якими, наприклад, з великою часткою впевненості є наведені в таблиці вище алгоритми.

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

Таким чином, на функцію стійкого блочного шифру 

Z = EnCrypt (X, Key) накладаються наступні умови:

1.     Функція EnCrypt повинна бути оборотною.

2.     Не повинно існувати інших методів прочитання повідомлення X за відомим блоку Z, окрім як повним перебором ключів Key.

3.     Не повинно існувати інших методів визначення яким ключем Key було вироблено перетворення відомого повідомлення X у повідомлення Z, окрім як повним перебором ключів.