- •Безпека даних
- •Вступ. Основні поняття безпеки. Конфіденційність, цілісність та доступність даних. Класифікація загроз. Сервіси та механізми захисту.
- •Основні поняття і визначення криптографічного захисту даних.
- •Порушення, механізми і служби захисту.
- •Традиційне шифрування. Модель традиційного шифрування. Криптографія і криптоаналіз. Класична техніка шифрування: підстановки і перестановки.
- •Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
- •Стандарт шифрування даних (des). Критерії, що лежать в основі конструкції des. Алгоритми "Подвійний" та "Потрійний" des.
- •Режими роботи блочних шифрів. Проблема та схеми розподілу ключів симетричного шифрування.
- •1. Режим електронної шифрувальної книги
- •2. Режим зчеплення шифрованих блоків
- •3. Режим шифрованого зворотного зв'язку
- •Генерування випадкових чисел. Використання та джерела випадкових чисел. Генератори псевдовипадкових чисел.
- •Криптографія з відкритим ключем. Принципи побудови криптосистем з відкритим ключем.
- •Алгоритм rsa
- •Порівняння основних характеристик симетричних та асиметричних алгориммів
- •Управління ключами і схема Діффі–Хеллмана.
- •1. Публічне оголошення
- •2. Публічно доступний каталог
- •3. Авторитетне джерело відкритих ключів
- •4. Сертифікати відкритих ключів
- •1. Простий розподіл секретних ключів
- •2. Розподіл секретних ключів із забезпеченням конфіденційності і аутентифікації
- •3. Гібридна схема
- •Аутентифікація повідомлень і функції хешування. Вимоги та функції аутентифікації.
- •1.1. Шифрування повідомлення
- •1.1.1. Традиційне шифрування
- •Коди автентичності повідомлень та функції хешування.
- •1. Коди автентичності повідомлень
- •1.1. Необхідні властивості кодів автентичності повідомлень
- •1.2. Коди автентичності повідомлень на основі des
- •2. Функції хешування
- •2.1. Вимоги, що пред'являються до функції хешування
- •2.2. Прості функції хешування
- •2.3. Атаки, в основі яких лежить парадокс задачі про дні народження
- •3. Захист функцій хешування і кодів автентичності повідомлень
- •3.1. Атаки з перебором всіх варіантів
- •3.2. Функції хешування
- •Алгоритми хешування. Алгоритм hmac.
- •1.1. Цілі розробки нмас
- •1.2. Алгоритм нмас
- •1.3. Захищеність нмас
- •Цифрові підписи та протоколи аутентифікації. Вимоги до цифрового підпису. Стандарт цифрового підпису dss.
- •1. Цифрові підписи
- •1.1. Вимоги
- •1.2. Безпосередній цифровий підпис
- •1.3. Арбітражний цифровий підпис
- •Протоколи аутентифікації. Взаємна та одностороння аутентифікація. (прочитати уважно номери малюнків і т.Д.)
- •2. Підходи на основі традиційного шифрування
- •3. Підходи на основі шифрування з відкритим ключем
- •4. Одностороння аутентифікація
- •5. Підхід на основі традиційного шифрування
- •6. Підходи на основі шифрування з відкритим ключем
- •Програмна реалізація криптографічних алгоритмів. Використання криптографічних функцій Microsoft CryptoApi в прикладному пз. Поняття про безпечний цикл розробки пз (sdl).
- •1. Будова і можливості Crypto api
- •2. Криптопровайдери
- •3. Контейнери ключів
- •4. Алгоритми
- •5. Сертифікати
- •6. Базові функції
- •6.1. Шифрування
- •6.2. Експорт сесійних ключів
- •6.3. Імпорт сесійних ключів
- •6.4. Розшифрування
- •6.5. Хешування
- •6.6. Цифровий підпис
- •6.7. Перевірка цифрового підпису
- •Методи і засоби створення захищеного програмного забезпечення.
- •3. Класифікація вразливостей захисту
- •4. Огляд існуючих аналізаторів
- •Відношення Історія експонатів
- •Список літератури
Потокові і блокові шифри. Дифузія і конфузія. Шифр Файстеля. Диференційний та лінійний крипто аналіз. Принципи побудови блокових шифрів
Потокові і блокові шифри
Потоковими називаються шифри, в яких потік цифрових даних шифрується послідовно біт за бітом або байт за байтом. Прикладами класичних поточних шифрів є шифри Віженера (з автоматичним вибором ключа) і Вернама. Блочними називаються шифри, в яких логічною одиницею шифрування є деякий блок відкритого тексту, після перетворень якого виходить блок шифрованого тексту такої ж довжини. Зазвичай використовуються блоки розміром 64 біта. У деяких режимах шифрування, про які піде мова нижче, блокові шифри виявляються такими ж ефективними, як і потокові.
Блокові шифри вивчені набагато краще. Загалом вважається, що вони мають більш широку сферу застосування, ніж потокові. Більшість мережевих додатків, в яких застосовується схема традиційного шифрування, використовують блокові шифри.
Передумови створення шифру Файстеля
Блочний шифр передбачає перетворення n - бітового блоку відкритого тексту в блок шифрованого тексту такого ж розміру. Число різних блоків при цьому рівне 2n, і, щоб шифрування було оборотним ( тобто щоб забезпечувалася можливість дешифрування ), кожен з таких блоків повинен перетворюватися в свій унікальний блок шифрованого тексту. Такі перетворення називаються оборотними, або несингулярними. Ось приклади несингулярного і сингулярного перетворень для n = 2.
Оборотне відображення |
Незворотне відображення |
||
Відкритий текст |
Шифрований текст |
Відкритий текст |
Шифрований текст |
00 |
11 |
00 |
11 |
01 |
10 |
01 |
10 |
10 |
00 |
10 |
01 |
11 |
01 |
11 |
01 |
У даному прикладі у випадку незворотного відображення шифрований текст 01 відповідає двом різним блокам відкритого тексту. Якщо обмежитися розглядом тільки оборотних відображень, число різних допустимих перетворень виявиться рівним 2n!.
На рис. 3.1 показана загальна схема підстановочного шифру для n = 4. Поступаюче на вхід 4-бітове значення визначає один з 16 можливих початкових станів, який відображається підстановочним шифром в одне з 16 унікальних кінцевих станів, кожен з яких представляється 4-бітовим значенням шифрованого тексту. Схеми шифрування і дешифрування можна представити у вигляді таблиць (табл. 3.1). Це сама загальна схема процесу блочного шифрування, яка може служити для розробки будь-якої оборотної відповідності між відкритим і шифрованих текстом.
Рис. 3.1. Загальна схема поблочної підстановки n-бітових блоків (випадок n=4)
Таблиця 3.1. Таблиці шифрування і дешифрування для шифру підстановок, показаного на рис. 3.1
Відкритий текст |
Шифрований текст |
Відкритий текст |
Шифрований текст |
0000 |
1110 |
0000 |
1110 |
0001 |
0100 |
0001 |
0011 |
0010 |
1101 |
0010 |
0100 |
0011 |
0001 |
0011 |
1000 |
0100 |
0010 |
0100 |
0001 |
0101 |
1111 |
0101 |
1100 |
0110 |
1011 |
0110 |
1010 |
0111 |
1000 |
0111 |
1111 |
1000 |
0011 |
1000 |
0111 |
1001 |
1010 |
1001 |
1101 |
1010 |
0110 |
1010 |
1001 |
1011 |
1100 |
1011 |
0110 |
1100 |
0101 |
1100 |
1011 |
1101 |
1001 |
1101 |
0010 |
1110 |
0000 |
1110 |
0000 |
1111 |
0111 |
1111 |
0101 |
Однак при практичній реалізації даного підходу виникає наступна проблема. Якщо використовувати блок невеликого розміру, наприклад n = 4, система виявляється еквівалентною до класичного підстановочного шифру. Як ми вже бачили, такі системи уразливі і можуть бути розкриті за допомогою статистичного аналізу відкритого тексту. Цей недолік породжується не самою природою підстановочного шифру, а використанням коротких блоків. При досить великих значеннях n і відсутності будь-яких обмежень на оборотну підстановку, яка задає перетворення відкритого тексту в шифрований, статистичні характеристики вихідного відкритого тексту маскуються настільки добре, що такого роду криптоаналіз стає практично марним.
У той же час припущення про допустимість будь-яких оборотних підстановок при великих розмірах блоків виявляється досить непрактичним з точки зору реалізації алгоритму і швидкості виконання відповідного додатку. Для такого перетворення ключем є само відображення. Звернімося знову до табл. 3.1, яка визначає конкретне оборотне відображення простору відкритих текстів в простір шифрованих для n = 4. Відображення можна задати елементами з другого стовпчика таблиці, в якому наведені значення шифрованого тексту для відповідних значень відкритого тексту. Це, по суті, і є ключ, який відрізняє дане конкретне відображення від усіх інших допустимих відображень. У нашому випадку довжина ключа виявляється рівною 64. Зазвичай для блочного шифру з n- бітовим підстановочним блоком розмір ключа дорівнює n*2n.
Якщо блок має розмір 64 біта (при такому розмірі блоку шифр вже може успішно протистояти спробам злому за допомогою статистичного аналізу), то розмір ключа складе 64 x 264 = 270 =1021 бітів.
Займаючись вивченням даної проблеми, Файстель запропонував для великих n апроксимувати таку ідеальну систему блочного шифрування набором простих для реалізації компонентів. Але перш ніж приступити до безпосереднього обговорення запропонованого Файстелем підходу, хотілося б звернути вашу увагу на такий момент. Ми не можемо дозволити собі працювати з блоковим підстановочним шифром загального вигляду, але, щоб відповідний алгоритм реалізувати програмним методом, можна замість всіх 2n! допустимих відображень розглянути деяку більш вузьку підмножину. Наприклад, припустимо, що наші відображення задаються системою лінійних рівнянь. Для n = 4 ми отримаємо
y1 = k11x1 + k12x2 + k13x3 + k14x4;
y2 = k21x1 + k22x2 + k23x3 + k24x4;
y3 = k31x1 + k32x2 + k33x3 + k34x4;
y4 = k41x1 + k42x2 + k43x3 + k44x4;
де хi позначає чотири двійкові цифри блоку відкритого тексту, уi - чотири двійкові цифри блоку шифрованого тексту, ki; - двійкові коефіцієнти, а всі арифметичні операції виконуються по модулю 2. Довжина ключа дорівнює n2, і в даному випадку це всього 16 бітів. Небезпека задання відображень формулами полягає в тому, що у випадку, коли структура такого алгоритму виявляється доступною криптоаналітику, система може стати дуже вразливою.
Шифр Файстеля
У своїй роботі Файстель запропонував апроксимувати підстановочний шифр продукційними шифрами, які будуються на послідовному застосуванні як мінімум двох базових шифрів з тим, щоб отриманий результат мав більш високу стійкість в порівнянні з будь-яким з цих базових шифрів окремо. Зокрема, Файстель запропонував шифр, в якому поперемінно використовуються і підстановки, і перестановки. Фактично дана пропозиція є практичним застосуванням ідеї Клода Шеннона (Claude Shannon) розробити продукційний шифр, в якому поперемінно використовувалися б функції дифузії і конфузії. Давайте спочатку розглянемо поняття дифузії і конфузії, а потім перейдемо до обговорення шифру Файстеля. Але перш за все варто згадати один дуже примітний факт: структура шифру Файстеля, розроблена чверть століття тому і, у свою чергу, спирається на ідею Шеннона, висловлену ще в 1945 р., сьогодні є структурою, на основі якої побудовані всі практично значущі симетричні схеми блочного шифрування.
Дифузія і конфузія.
Терміни дифузія (diffusion) і конфузія (confusion) були введені в шифрування Клодом Шенноном для того, щоб охарактеризувати два основних будівельних блоки криптографічних систем. Основним завданням, яке ставив перед собою Шеннон, було перешкодити спробам криптоаналізу, заснованим на статистичному аналізі повідомлень. Шеннон використав такі аргументи. Припустимо, противник має деякі відомості про статистичні характеристики відкритого тексту. Наприклад, для звичайних повідомлень можуть бути відомі дані про розподіл частот використання букв відповідної мови. Або можуть бути відомі окремі слова чи фрази, ймовірність присутності яких в повідомленні досить висока (ймовірні слова). Якщо подібні статистично виявляємі закономірності будь-яким чином проявляться в шифрованому тексті, у криптоаналітика з'явиться можливість визначити ключ шифрування, або його складові, або хоча б звузити простір ймовірних ключів. Шеннон вводить поняття ідеального шифру - шифру, який повністю приховує в зашифрованому тексті всі статистичні закономірності відкритого тексту. Прикладом такого шифру є розглянутий нами раніше (рис. 3.1) підстановочний шифр з довільною підстановкою, але, як ми бачили, такий шифр практично не можливо реалізувати.
Крім звернення до ідеальних систем, Шеннон запропонував два методи, завданням яких є утруднення криптоаналізу: дифузію і конфузію. Суть дифузії полягає в розсіянні статистичних особливостей відкритого тексту по широкому діапазону статистичних характеристик шифрованого тексту. Це досягається тим, що значення кожного елемента відкритого тексту впливає на значення багатьох елементів шифрованого тексту або, що виявляється еквівалентним сказаного, будь-який з елементів шифрованого тексту залежить від безлічі елементів відкритого тексту. Прикладом застосування методу дифузії є шифрування повідомлення М = m1, m2, m3... за допомогою операції усереднення
коли для отримання літери yn шифрованого тексту складаються k послідовних літер відкритого тексту. Можна показати, що в цьому випадку статистичні характеристики відкритого тексту "розподіляються" по шифрованому тексту. Тому в зашифрованому тексті частотні характеристики використання букв будуть ближчими до рівномірних. Точно так само більш близькими до рівномірних будуть частоти використання біграм, триграм і т.д. У блокових шифрах, які мають справу з двійковими даними, дифузії можна досягти шляхом декількох послідовних перестановок даних з подальшим застосуванням до результату перестановки деякої функції - у результаті у формуванні кожного біта шифрованого тексту буде брати участь безліч бітів відкритого тексту.
У будь-якому блочному шифрі використовується залежне від ключа перетворення блоку відкритого тексту в блок шифрованого тексту. Механізм дифузії покликаний зробити статистичний взаємозв'язок між відкритим і шифрованим текстами якомога складнішим, щоб у максимальному ступені ускладнити завдання визначення ключа з такого взаємозв'язку. Що стосується конфузії, то перед нею ставиться завдання в максимальному ступені ускладнити статистичний взаємозв'язок між шифрованих текстом і ключем знову ж таки з метою протистояння спробам визначити ключ. Таким чином, навіть якщо супротивник зуміє визначити будь-які статистичні особливості шифрованого тексту, складність використання ключа для отримання шифрованого тексту повинна виявитися достатньою для того, щоб спроби визначити ключ на підставі цих статистичних особливостей виявилися безрезультатними. Це досягається використанням складних підстановочних алгоритмів: прості лінійні підстановочні функції збільшують безлад лише в незначній мірі.
Поняття дифузії і конфузії виявилися настільки вдалими з точки зору опису суті бажаних характеристик блочних шифрів, що ці терміни стали базовими для всіх розробників сучасних шифрів цього типу.
Структура шифру Файстеля
На рис. 3.2 показана структура шифру, запропонованого Файстелем. На вхід алгоритму шифрування подається блок відкритого тексту довжиною 2w бітів і ключ К. Блок відкритого тексту розділяється на дві рівні частини, L0 і R0, які послідовно проходять через n раундів обробки, а потім об'єднуються знову для отримання блоку шифрованого тексту відповідної довжини. Для раунду i в якості вхідних даних виступають Lі-1 і R і-1, отримані на виході попереднього раунду, і підключ Кі, який обчислюється за загальним ключем К. Як правило, всі підключі Кі відрізняються як від загального ключа К, так і один від одного.
Всі раунди обробки проходять по одній і тій же схемі. Спочатку для лівої половини блоку даних виконується операція підстановки. Вона полягає в застосуванні до правої половини блоку даних деякої функції раунду F і наступному складенні отриманого результату з лівою половиною блоку даних за допомогою операції XOR (виключаюче "АБО" ). Для всіх раундів функція раунду має одну і ту ж структуру, але залежить від параметра - підключа раунду Кі. Після підстановки виконується перестановка, що представляє собою обмін місцями двох половин блоку даних (після завершення останнього раунду виконується ще одна перестановка, яка, по суті, відміняє перестановку виконану в останньому раунді. Причиною реальної відсутності перестановки в останньому раунді шифрування є бажання спростити процес дешифрування). Вся ця структура в цілому є окремим випадком так званої підстановлювальний-перестановною схеми (SPN - substitution-permutation network), запропонованої Шенноном.
Практична реалізація схеми Файстеля залежить від вибору значень наступних параметрів і конструктивних особливостей.
■ Розмір блоку. Чим більше розмір блоку, тим вища надійність шифру (за інших рівних умов), але тим нижча швидкість виконання операцій шифрування і дешифрування. Розумним компромісом є блок розміром 64 біти, який є сьогодні практично універсальним для всіх блокових шифрів.
■ Розмір ключа. Чим довший ключ, тим вища надійність шифру, але велика довжина ключа теж може бути причиною занадто повільного виконання операцій шифрування і дешифрування. На сьогодні ключі довжиною 64 біта і менше вважаються недостатньо надійними - зазвичай використовуються 128- бітові ключі.
■ Число раундів обробки. Суть ідеї шифру Файстеля в тому, що за один раунд обробки даних забезпечується недостатньо висока надійність, але рівень надійності шифру підвищується з кожним новим раундом обробки. Як правило, число раундів вибирають рівним 16.
■ Алгоритм обчислення підключів. Чим складніше цей алгоритм, тим більшою мірою ускладнюється криптоаналіз шифру.
■ Функція раунду. Тут, знову ж, ускладнення, як правило, введе до підвищення стійкості шифру з точки зору криптоаналізу.
Крім того, є ще два фактори, які доводиться приймати до уваги при побудові будь-якої реалізації шифру Файстеля.
■ Швидкість виконання програм шифрування/ дешифрування. Часто функції шифрування вбудовуються в додатки або утиліти, щоб уникнути необхідності апаратної реалізації шифрування. У таких випадках важливим чинником виявляється швидкість програмного виконання алгоритму.
■ Простота аналізу. Хоча нашим завданням є створення такого алгоритму, який для криптоаналізу був би настільки складним, наскільки це можливо, все ж вельми вигідно, щоб сам такий алгоритм залишався простим для розуміння. Іншими словами, якщо алгоритм простий і зрозумілий, його легше аналізувати з точки зору вразливості для криптоаналізу і, отже, легше вдосконалювати з метою досягнення більш високого рівня надійності. Алгоритм DES, наприклад, не можна віднести до алгоритмів, занадто простих для аналізу. Спрощений DES використовує схему Файстеля з двома раундами обробки даних. Єдина відмінність від "істинної " схеми Файстеля в тому, що він і починається, і завершується виконанням перестановки. Ця ж відмінність характерна і для повнофункціонального алгоритму DES.
Рис. 3.2. Класична схема Файстеля
Алгоритм дешифрування
Процес дешифрування шифру Файстеля принципово не відрізняється від процесу шифрування. Застосовується той же алгоритм, але на вхід подається шифрований текст, а підключі Кі використовуються в зворотній послідовності: для першого раунду береться підключ Кn, для другого – Кn-1 і так далі, поки не буде введений ключ К1 для останнього раунду. Ця властивість даної схеми шифрування виявляється дуже зручною, оскільки для дешифрування не потрібно вводити другий алгоритм, відмінний від алгоритму шифрування.
Рис. 3.3. Шифрування та дешифрування по Файстелю
Щоб переконатися в тому, що той же алгоритм зі зворотним порядком вибору ключів призводить до потрібного результату (розшифрованого тексту), погляньте на рис. 3.3, на якому ліворуч зображена схема шифрування з 16 раундів, а праворуч - відповідна їй схема дешифрування (результат не повинен залежати від числа раундів, що використовуються в процесі шифрування даних). Для простоти ми позначили дані, оброблювані алгоритмом шифрування, як LEі, і REі, а дані, що обробляються алгоритмом дешифрування, - як LDі і RDі. Зі схеми видно, що на кожній стадії процесу дешифрування чергове проміжне значення з точністю до перестановки половинок цього значення рівне проміжному значенню, одержуваному на відповідній стадії процесу шифрування. Щоб показати це, позначимо вихідне значення і-го раунду шифрування через LEі || REі, (що означає конкатенацію Lі і Rі). Відповідно, вхідне значення для (16-і)-го раунду дешифрування буде записуватися у вигляді LDі || RDі.
Давайте з допомогою схеми, показаної на рис. 3.3, переконаємося в справедливості висловлених вище тверджень. (З метою спрощення діаграм у них не представлені операції обміну місцями двох половинок блоку, що виконуються в кінці кожного раунду. І не забувайте, що проміжний результат i-гo раунду шифрування являє собою 2w-бітове значення, одержуване конкатенацією LEі || REі, а проміжний результат i-гo раунду дешифрування являє собою 2w-бітове значення, одержуване конкатенацією LDі і RDі.).
По закінченні останнього раунду процесу шифрування дві половини блоку даних міняються місцями, тому блок даних буде мати вигляд LE16 || RE16. Цей блок даних і представлятиме собою шифрований текст. Візьмемо цей шифрований текст і використовуємо його в якості вхідних даних того ж самого алгоритму. Тоді на вході першого раунду алгоритму ми отримаємо значення RE16 || LE16, рівне значенню результату 16-го раунду шифрування з переставленими 32- бітовими половинами.
Тепер покажемо, що результат першого раунду процесу дешифрування після 32-бітового обміну буде дорівнювати значенню, поступаючому на вхід 16-го раунду шифрування. Спочатку розглянемо процес шифрування. Тут ми маємо
LE 16 = RE 15,
RE 16 = LE
15
F (RE15,
K16),
З іншого боку, для процесу дешифрування отримуємо
LD1 = RD0 = LE16 = RE15,
RD1 = LD0 F(RD0, K16)
= RE16 F(RE15, K16)
= [LE15 F(RE15, K16)] F(RE15,K16).
Операція XOR (виключаюче "АБО") має наступні властивості:
[A B] C = A [B C],
D D = 0
E 0=E
Тому ми отримаємо LD1 = RЕ15 і RD1 = LЕ15 Таким чином, в результаті першого раунду процесу дешифрування буде отримано значення LE15 || RE15, яке після 32-бітового обміну виявляється рівним значенню, що подається на вхід 16-го раунду шифрування. Нескладно показати, що така відповідність виконуватиметься для будь-якого з 16 раундів процесу. Для самого процесу можна виписати загальну формулу. Для і-ї ітерації алгоритму шифрування маємо
LEi = REi-1
REi = LEi-1 F(REi-1, Ki).
Виконавши нескладні перетворення, отримаємо такі вирази:
REi-1 = LEi,
LEi-1 = REi F(REi-1, Ki) = REi F(LEi, Ki).
Таким чином, ми виразили вхідні дані для i-ї ітерації у вигляді функцій від вихідних даних, і отримані рівності підтверджують рівності, наведені в правій частині рис. 3.3.
Нарешті зауважимо, що на виході останнього раунду процесу дешифрування виходить значення RE0 || LE0. Для відновлення вихідного відкритого тексту залишається застосувати лише 32-бітовий обмін, що завершує доказ придатності схеми Файстеля для процесу дешифрування.
Зверніть увагу на те, що даний доказ не вимагає, щоб функція F була оборотною. Щоб переконатися в цьому, розгляньте окремий випадок, коли результат застосування функції F є константою, що не залежить від поступаючих на вхід значень її двох аргументів (наприклад, завжди дорівнює 1). Наведені вище рівності залишаться справедливими.
Принципи побудови блокових шифрів. Число раундів шифрування.
Криптоаналітична стійкість шифру Файстеля залежить від трьох конструктивних параметрів: числа раундів шифрування, виду функції F і алгоритму обчислення ключів. Давайте спочатку розглянемо залежність надійності даного шифру від числа раундів шифрування.
Чим більше число раундів шифрування, тим більше утруднюється криптоаналіз шифру навіть при відносно слабкій функції F. У загальному випадку число раундів повинно вибиратися так, щоб всі відомі методи криптоаналізу вимагали більше зусиль, ніж аналіз за допомогою перебору всіх ключів. Цей критерій, без сумніву, використовувався при розробці DES (див. розділ 1.4). Як зауважив Шнайер (Schneier) в роботі [SCHN96], для DES з 16 раундами шифрування диференціальний криптоаналіз виявляється трохи менш ефективним, ніж аналіз за допомогою перебору всіх ключів: диференціальний криптоаналіз вимагає виконання 255,1 операцій, а аналіз за допомогою перебору всіх ключів - 255. Якби DES використовував 15 раундів шифрування або менше, то для диференціального криптоаналізу вимагалося б менше зусиль, ніж для аналізу за допомогою перебору всіх ключів.
Цей критерій здається привабливим з огляду на те, що він дозволяє для будь-якого алгоритму оцінити рівень його надійності і порівняти його з іншими алгоритмами. Поки в області криптоаналізу не буде якихось серйозних проривів, надійність будь-якого алгоритму, який задовольняє даному критерію можна оцінювати просто по довжині ключа.
Принципи побудови блокових шифрів. Вид функції F
Серцем блочного шифру Файстеля є функція F. Як ми вже бачили у випадку DES, властивості цієї функції залежать головним чином від виду використовуваних для її визначення S-матриць. Те ж саме можна сказати і про інші симетричні блокові шифри. Однак перш ніж звернутися безпосередньо до обговорення конструктивних особливостей S-матриць, слід сказати кілька слів про конструктивні критеріях F.
Принципи побудови блокових шифрів. Конструктивні критерії функції F
Функція F в шифрі Файстеля забезпечує необхідний рівень конфузії. Це передбачає неможливість "розшифрування" підстановки, що задається цією функцією. Як вже говорилося вище, для цього функція F має бути, очевидно, нелінійною. Чим вища ступінь нелінійності F, тим складнішим буде шифр для криптоаналізу будь-якого типу. Ступінь нелінійності можна характеризувати декількома способами. Грубо кажучи, чим важче апроксимувати функцію F за допомогою системи лінійних рівнянь, тим вищий ступінь нелінійності цієї функції.
Крім того, при побудові функції F повинні прийматися до уваги й інші критерії. Наприклад, отриманий в результаті алгоритм повинен володіти помітним лавинним ефектом. Аналогічний сильніший критерій, званий строгим критерієм лавинного ефекту (SAC - strict avalanche criterion) [WEBS86] вимагає, щоб для будь-яких i і j при інвертуванні вхідного біта i S-матриці будь-який вихідний біт j змінювався з ймовірністю ½. Хоча приведений тут строгий критерій лавинного ефекту формулюється для S-матриць, подібний критерій можна сформулювати і для функції F в цілому. У такому формулюванні критерій може використовуватися при розробці алгоритмів, що не мають у своїй структурі S-матриць.
Іншим критерієм, запропонованим в [ WEBS86 ], є критерій незалежності бітів (BIC - bit independence criterion), згідно з яким для будь-яких значень i j і k при інвертуванні вхідного біта i S - матриці вихідні біти j і k повинні змінюватися незалежно. Строгий критерій лавинного ефекту і критерій незалежності бітів покликані гарантувати алгоритмові необхідний рівень конфузії.
