Телекомунікаційні системи та мережі. Том 1. Структура й основні функції.  /  Зміст  /  Розділ 12. Методи забезпечення інформаційної безпеки об’єктів телекомунікаційної системи   /  Тема 12.3. Криптографічний захист інформації

Зміст:

12.3.1. Криптографічний захист інформації

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

Криптографія — це сукупність методів перетворення даних, спрямованих на приховання їх інформаційного змісту.

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

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

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

Рис. 12.3.1. Узагальнена схема криптосистеми

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

Позначимо відкритий текст (повідомлення) як M. Це може бути потік бітів, текстовий файл, бітове зображення, оцифрований звук, цифрове відеозображення й ін. Далі розглядатимуться тільки двійкові дані й комп’ютерна криптографія.

Позначимо шифротекст як C. Це теж двійкові дані, іноді того ж розміру, що й M, іноді більше. (Якщо шифрування супроводжується стисненням, C може бути менше M. Однак саме шифрування не забезпечує стиснення інформації.) Функція шифрування E діє на відкритий текст, створюючи шифротекст E(M) = C.

Процес відновлення відкритого тексту по шифротексту є розшифруванням і виконується за допомогою функції розшифрування D:D(C) = M.

Оскільки змістом шифрування й наступного розшифрування повідомлення є відновлення первісного відкритого тексту, то має виконуватися тотожність D(E(M)) = M.

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

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

З урахуванням використання ключа, функції шифрування й розшифрування запишуться як C = EK(C) і DK(C) = M. При цьому має виконуватися тотожність DK(EK(M)) = M. Однак для деяких алгоритмів при шифруванні й розшифруванні використовуються різні ключі. У цьому разі C = EK1(M), DK2(C) = M, a DK2(EK1(M)) ≡ M. Якщо алгоритм перетворення даних залежить від ключа, тобто застосовуються управляючі операції, шифр називається шифром, що управляється.

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

1) тип операцій з перетворення відкритого тексту в шифрований;

2) число ключів, що використовуються;

3) метод обробки відкритого тексту.

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

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

До шифрів, які використовуються для криптографічного захисту інформації, висувають низку вимог:

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

Тією чи іншою мірою цим вимогам відповідають:

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

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

Таблиця 12.3.1 Приклади популярних криптоалгоритмів/схем шифрування

Назва
Довжина ключа, біт
Примітка
Симетричні
Rijndael (AES)
128—256
J. Daemon, V.Rijmen, Бельгія
SNOW
128, 256
Lund University, Швеція
RC6
128—256
RSA Security, США
3DES
168
Стандарт ANSI X9.52-1998
MARS
128—400
IBM Corporation, США
TwoFish
128—256
B. Schneir, США
SERPENT
128—256
R. Anderson, E. Biham, L. Knudsen
ГОСТ 28147-89
256
Держстандарт СРСР. В Україні
стандарт гармонізовано (ДСТУ 28147:2009)
Асиметричні
RSA
1024—4096+
RSA Laboratories, США
RSA-OAEP
1024—4096+
RSA Laboratories Europe, Швеція
ACE Encrypt
1024—4096+
IBM Zurich Research Laboratory, Швейцарія
EPOC
1024—4096+
Nippon Telegraph and Telephone, Японія

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

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

Ці криптоалгоритми здатні забезпечити захист від:

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

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

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

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

Рис. 12.3.2. Класифікація програмних генераторів псевдовипадкових послідовностей

Для генерації ключової інформації, яка призначається для використання в рамках симетричної криптосистеми, можна застосовувати такі методи (у порядку зростання якості):

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

Поняття якісного ГПВП означає, що використання ключа, отриманого на підставі даних від такого ГПВП, не знижує теоретичну стійкість криптосистеми. Класифікувати програмні ГПВП можна, наприклад, таким чином, як показано на рис. 12.3.2.

Перед застосуванням ГПВП і їхньої реалізації мають бути всебічно протестовані. Для перевірки якості ГПВП можна використати, наприклад, керівний документ NIST Special Pub 800-22. Тести, які рекомендовані в цьому документі, — це: частотний однобітовий тест, частотний блоковий тест, перевірка накопичених сум, тест серій, тест довжини серії в блоці, перевірка рангу бінарної матриці, спектральний аналіз на основі перетворення Фур’є, визначення шаблонів, що перекриваються, універсальний тест Маурера, тест стиснення Лемпеля-Зіва, ентропійний тест, тест кумулятивних сум тощо.

Ще одним важливим завданням, неправильна реалізація якого може значно знизити захищеність елементів ТКС, є завдання формування загальних сеансових ключів для шифрування даних, якими обмінюються елементи мережі. Найпопулярнішим алгоритмом формування спільного ключа в розподілених системах є схема (протокол) Діффі — Хеллмана. У цій схемі обміну ключами є два відкритих для всіх числа: просте число q й ціле число a, що є первинним коренем q. Припустимо, користувачі A й B мають намір обмінятися ключами. Користувач A вибирає випадкове ціле число XA < q й обчислює . Так само користувач B незалежно вибирає випадкове ціле число XB < q й обчислює . Кожна сторона зберігає значення X в таємниці й робить значення Y вільно доступним іншій стороні. Користувач A обчислює ключ за формулою , а користувач B — за формулою . Ці дві формули обчислення дають однакові результати.

Обидві сторони обмінялися секретним ключем. А оскільки при цьому XA й XB були тільки в особистому використанні й тому збереглися в таємниці, противник вимушений працювати тільки з q, a, YA і YB. Таким чином, йому доведеться обчислювати дискретний логарифм, щоб визначити ключ. Захищеність формування спільного ключа за схемою Діффі — Хеллмана опирається фактично на те, що ступінь за модулем деякого простого числа обчислюється відносно легко, але при цьому обчислювати дискретні логарифми виявляється дуже важко. Для великих простих чисел порядку останнє вважається обчислювально складним завданням. Також існує модифікація схеми Діффі — Хеллмана з використанням еліптичних кривих.

У багатосерверних системах з великою кількістю користувачів часто виникає ситуація коли система має функціонувати за участі й згоді не одного, а багатьох об’єктів. Ця проблема може бути розв’язана за допомогою схем поділу майстер-ключа системи між декількома учасниками інформаційної взаємодії. Такі схеми відомі також за назвою m-з-n-схем або (m, n)-граничних схем для якогось 1 ≤ mn. Передбачається, що схема поділу секрету включає n учасників й управляється авторизованим дилером. Основне завдання дилера — поділ секрету на компонентів («тіней») і розподіл їх серед учасників так, що будь-які m (і більше) учасників, зібравшись разом і пред’явивши тіні, можуть відновити секретний ключ. Але будь-які (m – 1) і менше учасників не можуть це зробити. Компроміс між крипостійкістю й гнучкістю схеми регулюється вибором параметрів m і n. Схема поділу секрету називається ідеальною, якщо довільна коаліція або повністю розкриває секрет, або в результаті не одержує про нього ніякої апостеріорної інформації.

Найпопулярнішими схемами поділу секрету є схеми розшарування зображень, схеми на основі кодів Ріда — Соломона, схеми Блеклі та Шаміра. Розглянемо як приклад схему Шаміра, побудовану за принципом поліноміальної інтерполяції. У ній задається поліном ступеня (m – 1) над кінцевим полем GF(q) з q елементів

F(x) = a0 + a1x +...+ am – 1xm – 1.(12.3.1)

Секретний ключ задається вільним членом a0, усі інші коефіцієнти полінома — випадкові елементи поля. Поле GF(q) відоме всім учасникам. Кожна з n тіней являє собою точку (xi, yi) кривої, яка описується поліномом F(x), xi ≠ 0. Скориставшись інтерполяційною формулою Лагранжа, можна відновити вихідний поліном (а отже, секрет a0) за будь-якими m точками (тінями). При цьому ймовірність розкриття секрету у разі довільних (m – 1) тіней оцінюється як q– 1, тобто в результаті інтерполяції по (m – 1) точці секретом може бути будь-який елемент поля з рівною ймовірністю. Отже, схема Шаміра є ідеальною.

Рис. 12.3.3. Схема Шаміра поділу секрету

На рис. 12.3.3 подано спеціальний випадок для m = 2 (для відновлення секрету необхідно дві тіні). Таким чином, двочлен описує деяку пряму, що перетинається з оссю y в точці s (секрет). Кожна тінь — точка на прямій. Отже, секрет може бути відновлено по двох довільних тінях, оскільки для однозначного визначення прямої достатньо двох довільних точок. У разі завдання однієї тіні як вибраний секрет може бути обрана будь-яка точка на осі y, оскільки через одну точку можна провести безліч різних прямих, що перетинаються з оссю y в довільних точках.

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

Криптографічна хеш-функція є односпрямованою функцією. Така функція, H(M) застосовується до повідомлення довільної довжини M й повертає значення фіксованої довжини h.

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

  • знаючи M, легко обчислити h;
  • знаючи H важко визначити M, для якого H(M) = h;
  • знаючи M важко визначити інше повідомлення, M′, для якого H(M) = H(M′).

Важко побудувати функцію, вхід якої має довільний розмір, а тим більше — зробити її односпрямованою. У реальному світі односпрямовані хеш-функції ґрунтуються на ідеї функції стиснення. Така односпрямована функція видає хеш-значення довжини n при заданих вхідних даних більшої довжини m. Входами функції стиснення є блок повідомлення й вихід попереднього блоку даних. Вихід являє собою хеш-значення всіх блоків до цього моменту. Тобто хеш-значення блоку Mi дорівнює hi = h(Mi, hi – 1). Це значення разом з наступним блоком повідомлення стає наступним входом функції стиснення. Хеш-значенням усього повідомлення є вихідне значення на останньому кроці перетворення.

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

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

Рис. 12.3.4. Загальна структура алгоритму хешування:
IV — початкове значення; CV — змінна зчеплення; Yii-й блок даних; f — алгоритм стиснення; L — число блоків даних; n — довжина хеш-коду; b — довжина блока даних

Функція хешування одержує на вхід повідомлення й поділяє його на (L – 1) блоків рівної фіксованої довжини по b бітів кожний. Якщо необхідно, останній блок доповнюється до b бітів. До останнього блоку також включається значення сумарної довжини вхідних даних функції хешування. Це робить завдання супротивника ще складнішим. Супротивник має знайти або два повідомлення рівної довжини, що мають однакові значення функції хешування, або два повідомлення різної довжини, які разом з відповідними їм значеннями довжини матимуть однакові значення функції хешування.

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

CV0 = IV = початкове n-бітове значення;

CVi = f(CVi – 1, Yi – 1), 1 ≤ iL;

H(M) = CVL,

і тут M — повідомлення, що складається із Y0, Y1, ..., YL – 1 блоків.

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

Найпопулярнішими на сьогодні є функції хешування MD5, SHA-1, SHA-2, Whirlpool, ГОСТ 34.311—95 й RIPEMD.