Криптографія. Симетричні криптосистеми шифрування

Симетричні криптосистеми

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

В даний час симетричні шифри - це:

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

2. Поточні шифри - у яких шифрування проводиться над кожним бітом чи байтом вихідного (відкритого) тексту з допомогою гамування. Поточний шифр може бути легко створений на основі блокового (наприклад, ГОСТ 28147-89 у режимі гамування), запущеного у спеціальному режимі.

Криптографічна система з відкритим ключем

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

Мал. 7.

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

2. Відправник за допомогою відкритого ключа шифрує повідомлення.

3. Отримувач за допомогою закритого ключа дешифрує повідомлення.

Недолік методу:хоча повідомлення надійно шифрується, але «засвічуються» одержувач і відправник фактом пересилання шифрованого повідомлення.

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

Особливості системи

Перевага асиметричних шифрів перед симетричними шифрами полягає у відсутності необхідності передачі секретного ключа. Сторона, яка бажає приймати зашифровані тексти, відповідно до алгоритму, що використовується, виробляє пару «відкритий ключ - закритий ключ». Значення ключів пов'язані між собою, однак обчислення одного значення з іншого має бути неможливим із практичної точки зору. Відкритий ключ публікується у відкритих довідниках та використовується для шифрування інформації контрагентом. Закритий ключ міститься в секреті і використовується для розшифровування повідомлення, переданого власнику пари ключів. Початок асиметричним шифрам було покладено у 1976 році у роботі Уітфілда Діффі та Мартіна Хеллмана «Нові напрямки в сучасній криптографії». Вони запропонували систему обміну спільним секретним ключем з урахуванням проблеми дискретного логарифму. Взагалі, в основу відомих асиметричних криптосистем кладеться одна із складних математичних проблем, яка дозволяє будувати односторонні функції та функції-пастки. Наприклад, криптосистема Рівеста-Шаміра-Адельмана використовує проблему факторизації великих чисел, а криптосистеми Меркля-Хеллмана та Хора-Рівеста спираються на так зване завдання про укладання рюкзака.

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

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

Принцип: Криптографічні системи використовують переваги двох основних криптосистем: симетричної та асиметричної криптографії. На цьому принципі побудовано такі програми, як PGP та GnuPG.

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

Шифрування: Більшість шифрувальних систем працюють в такий спосіб. Для симетричного алгоритму (3DES, IDEA, AES або іншого) генерується випадковий ключ. Такий ключ зазвичай має розмір від 128 до 512 біт (залежно від алгоритму). Потім використовується симетричний алгоритм шифрування повідомлення. У разі блокового шифрування необхідно використовувати режим шифрування (наприклад, CBC), що дозволить шифрувати повідомлення з довжиною, що перевищує довжину блоку. Щодо самого випадкового ключа, він повинен бути зашифрований за допомогою відкритого ключа одержувача повідомлення, і саме на цьому етапі застосовується криптосистема з відкритим ключем (RSA або Алгоритм Діффі - Хеллмана). Оскільки випадковий ключ короткий, його шифрування займає трохи часу. Шифрування набору повідомлень з допомогою асиметричного алгоритму - це завдання обчислювально складніша, тому краще використовувати симетричне шифрування. Потім достатньо надіслати повідомлення, зашифроване симетричним алгоритмом, а також відповідний ключ у зашифрованому вигляді. Отримувач спочатку розшифровує ключ за допомогою свого секретного ключа, а потім за допомогою отриманого ключа отримує все повідомлення.

Цифровий підпис забезпечує:

* Посвідчення джерела документа. Залежно від деталей визначення документа може бути підписано такі поля, як «автор», «внесені зміни», «мітка часу» тощо.

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

Можливі такі загрози цифровому підпису:

*Зловмисник може спробувати підробити підпис для вибраного ним документа.

*Зловмисник може спробувати підібрати документ до цього підпису, щоб підпис до нього підходив.

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

*Зловмисник, який вкрав закритий ключ, може підписати будь-який документ від імені власника ключа.

*Зловмисник може обманом змусити власника підписати будь-який документ, наприклад, використовуючи протокол сліпого підпису.

*Зловмисник може підмінити відкритий ключ власника на власний, видаючи себе за нього.

Вступ

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

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

Чому проблема використання криптографічних методів в інформаційних системах (ІВ) стала зараз особливо актуальною?

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

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

Проблемою захисту інформації шляхом її перетворення займається криптологія (kryptos – таємний, logos – наука). Криптологія поділяється на два напрямки. криптографіюі криптоаналіз. Цілі цих напрямів прямо протилежні.

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

Криптоаналіз- Досліджує можливості розшифровування інформації без знання ключів.

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


Криптографія

Сучасна криптографія включає чотири великі розділи:

1. Симетричні криптосистеми. У симетричних криптосистемах і для шифрування, і для дешифрування використовується той самий ключ;

2. Криптосистеми з відкритим ключем. У системах з відкритим ключем використовуються два ключі – відкритий та закритий, які математично пов'язані один з одним. Інформація шифрується за допомогою відкритого ключа, доступного всім бажаючим, а розшифровується за допомогою закритого ключа, відомого тільки одержувачу повідомлення;

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

4. Керування ключами. Це процес системи обробки інформації, змістом яких є складання та розподіл ключів між користувачами.

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

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

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

Алфавіт- Кінцева множина використовуваних для кодування інформації знаків.

Текст- впорядкований набір елементів алфавіту.

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

Дешифрування- Зворотний шифрування процес. На основі ключа шифрований текст перетворюється на вихідний.

Ключ - інформація, необхідна для безперешкодного шифрування та дешифрування текстів.

Криптосистеми поділяються на симетричніі з відкритим ключем.

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

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

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

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

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

· Кількість всіх можливих ключів;

· Середній час, необхідний для криптоаналізу.

Симетричні криптосистеми

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

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

· Перестановки.

Також нескладний метод криптографічного перетворення. Використовується зазвичай у поєднанні з іншими методами.

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

· Гамування.

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

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

· Блокові шифри.

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

· Підстановка.

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


Подібна інформація.


Алгоритми та стандарти шифрування

¦ Електронний цифровий підпис

Сучасні технології аутентифікації. Смарт-картки

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

Шифрування як процес своєю історією йде глибоко у віки. Так, підстановочні шифри є вже близько 2500 років. Яскравий приклад – шифр Атбаш, який виник приблизно в 600 році до нашої ери. Суть його роботи полягала у використанні єврейського алфавіту у зворотному порядку. Юлій Цезар також використовував шифр підстановки, який і був названий на його честь - шифр Цезаря. Суть шифру Цезаря полягала в тому, щоб замінити кожну з літер іншої, що стоїть в алфавіті, на три місця далі від вихідної. Так, літера A перетворювалася на Д, Б перетворювалася на E, Я перетворювалася на Г і т.д.

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

Згідно з класичними канонами ІБ за допомогою шифрування забезпечуються три основні стани безпеки інформації.

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

| Цілісність. Шифрування використовується для запобігання зміні інформації під час передачі або зберігання. Яскравий приклад – контрольна сума, отримана з використанням хеш-функції (те, що можна побачити на FTP-серверах поруч із файлом (приблизно так – dpofgj 0 93utm34tdfgb45ygf), який збираємось завантажити).

| Ідентифікованість. Шифрування використовується для аутентифікації джерела інформації та запобігання відмови відправника інформації від того факту, що дані були надіслані саме їм.

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

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

атака "грубою силою", або Brute Force (атаки "грубою силою" мають на увазі підбір всіх можливих варіантів ключів);

Пошук вразливих місць в алгоритмі.

Враховуючи той факт, що алгоритми шифрування, що застосовуються в даний час, вже перевірені "вогнем і часом", цілком очевидно, що зломщик буде використовувати Brute Force. Злом конфіденційної інформації, зашифрованої стійким алгоритмом і досить довгим ключем (наприклад, 512 біт), вимагатиме з боку зломщика використання "армії" суперкомп'ютерів або розподільної мережі з кількох сотень тисяч машин плюс багато часу і грошей. Але якщо гроші є, то чому б і ні! Так, 1997 року організація Electronic Frontier Foundation (EFF) анонсувала комп'ютерну систему, яка зможе знайти ключ DES за чотири дні. Створення такої системи коштувало компанії $250 000. За допомогою сучасного обладнання можна визначити ключ DES за допомогою атаки "грубою сили" за 35 хвилин.

2.1. Алгоритми та стандарти шифрування

Залежно від ключів, що використовуються, шифрування умовно можна розділити на такі види.

Симетричне шифрування, у якому ключ для шифрування і дешифрування є і той ж ключ (на звичайному рівні – просто пароль).

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

Відомі також інші види шифрування, такі, наприклад, як тайнопис. Алгоритми таємниці з відомих причин не є публічними: стороннім особам невідомий сам алгоритм шифрування; закон перетворення знають лише відправник та одержувач повідомлення. Одним із яскравих прикладів таких систем можна вважати одноразові блокноти. Саме одноразові блокноти (One-time Pad, або OTP) можна назвати єдиною теоретично незламною системою шифрування. Одноразовий блокнот є список чисел у випадковому порядку, що використовується для кодування повідомлення. Як це випливає з назви, OTP може бути використаний лише один раз. Одноразові блокноти широко застосовуються в інформаційних середовищах із дуже високим рівнем безпеки (але лише для коротких повідомлень). Так, у Радянському Союзі OTP використовувався для зв'язку розвідників із Москвою.

Симетричне шифрування

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

Популярними алгоритмами симетричного шифрування є:

DES (значно застарів) і TripleDES (3DES);

AES (Rijndael);

ГОСТ 28147-89;

Основними параметрами алгоритмів симетричного шифрування можна вважати:

стійкість;

довжину ключа;

кількість раундів;

довжину оброблюваного блоку;

Складність апаратної/програмної реалізації.

Тож почнемо.

Data Encryption Standard (DES).Алгоритм Data Encryption Standard (DES) було розроблено компанією IBM на початку 1970-х років. Національний інститут стандартів і технологій США (NIST) використав алгоритм (публікація FIPS 46) для DES в 1977 році. Подальшої модифікації алгоритм піддавався у 1983, 1988, 1993 та 1999 роках.

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

DES використовує ключ завдовжки 56 біт. За сьогоднішніми мірками, така довжина ключа є неприйнятною. DES є блоковим алгоритмом шифрування, що обробляє одноразово один 64-бітний блок відкритого тексту. У алгоритмі DES виконуються 16 циклів шифрування з різним підключенням у кожному циклів. Ключ піддається дії свого власного алгоритму освіти 16 подключей (рис. 2.1).

Мал. 2.1.Схема роботи DES

Розглянемо роботу алгоритму докладніше. Вхідний блок даних, що складається з 64 біт, перетворюється на вихідний блок ідентичної довжини. Ключ шифрування повинен бути відомий як відправляє, так і сторонам, що приймає. p align="justify"> В алгоритмі широко використовуються перестановки бітів тексту.

Вводиться функція F, яка працює з 32-розрядними словами вихідного тексту ® і використовує як параметр 48-розрядний ключ (J). Схема роботи функції F показано на рис. 2.1. Спочатку 32 вхідні розряди розширюються до 48, при цьому деякі розряди повторюються.

Для отриманого 48-розрядного коду та ключа виконується операція додавання за модулем 2. Результатуючий 48-розрядний код перетворюється на 32-розрядний за допомогою S-матриць.

Вихідний 48-розрядний код ділиться на вісім груп по шість розрядів. Перший та останній розряди в групі використовуються як адреса рядка, а середні чотири розряди – як адреса стовпця. У результаті кожні шість біт коду перетворюються на чотири біти, а весь 48-розрядний код – на 32-розрядний (для цього потрібно вісім S-матриць). Існують розробки, що дозволяють виконувати шифрування у рамках стандарту DES апаратним чином, що забезпечує досить високу швидкодію.

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

У 1973 році Хорст Фейштель в журналі Scientific American опублікував статтю "Cryptography and Computer Privacy", в якій розкрив деякі важливі аспекти шифрування, а також ввів конструкцію, названу згодом мережею Фейштеля. Ця схема була використана у проекті Lucifer фірми IBM, над яким працювали Фейштель та Дон Копперсміт (Don Coppersmith). Цей проект був скоріше експериментальним, але став базисом для Data Encryption Standard (DES). Ітеративна структура алгоритму дозволяла спростити його реалізацію в апаратних середовищах.

Доречно зауважити, що наступні блокові шифри якраз використовують класичну або модифіковану мережу Фейштеля в своїй основі: Blowfish, Camellia, CAST, DES, FEAL, ГОСТ 28147-89, KASUMI, LOKI97, Lucifer, MacGuffin, MARS, MAGENTA, MISTY , RC5, RC6, Skipjack, TEA, Triple DES, Twofish, XTEA.

TripleDES (3DES).Очевидна нестійкість DES спричинила пошуки певної альтернативи. В 1992 дослідження показали, що DES можна використовувати тричі для забезпечення більш потужного шифрування. Так виник потрійний DES (3DES). Потрійний DES використовується або з двома або з трьома ключами. Використовуваний у своїй ключ забезпечує велику потужність проти звичайним DES.

Advanced Encrypt Standard (AES).Незабаром після виходу DES виявилася очевидна слабкість алгоритму. Необхідність прийняття нового стандарту була більш ніж явною: невелика довжина ключа DES (56 біт) дозволяла застосувати метод грубої сили проти цього алгоритму. Крім того, архітектура DES була орієнтована на апаратну реалізацію і програмна реалізація алгоритму на платформах з обмеженими ресурсами не давала необхідної швидкодії. Модифікація TDES мала достатню довжину ключа, але при цьому була ще повільнішою. TDES не проіснував так довго, щоб можна було говорити про те, що алгоритм стійкий та надійний. Йому на зміну, як і слід було очікувати, прийшов стійкіший і надійніший алгоритм – AES, який, між іншим, був обраний в результаті конкурсу і прийнятий як американський стандарт шифрування урядом США. Трохи про сам конкурс.

2 січня 1997 NIST (Національний Інститут Стандартів і Технологій) оголошує про намір знайти заміну DES, що був американським стандартом з 1977 року. NIST прийняв достатню кількість пропозицій від зацікавлених сторін про те, як слід вибирати алгоритм. Активний відгук з боку відкритої криптографічної спільноти призвів до оголошення конкурсу 12 вересня 1997 року. Алгоритм могла запропонувати практично будь-яка організація чи група дослідників. Мінімальні вимоги до нового стандарту були такими:

Це має бути блоковий шифр;

Довжина блоку повинна становити 128 біт;

алгоритм повинен працювати з ключами довжиною 128, 192 і 256 біт;

використовувати операції, легко реалізовані як апаратно (у мікрочіпах), і програмно (на персональних комп'ютерах і серверах);

орієнтуватися на 32-розрядні процесори;

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

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

20 серпня 1998 року на першій конференції AES було оголошено список із 15 кандидатів, а саме: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Serpent та Twofish.

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

У березні 1999 року відбулася друга конференція AES, а у серпні 1999 року було оголошено п'ять фіналістів, серед яких опинилися: MARS, RC6, Rijndael, Serpent та Twofish. Усі вони розробили авторитетними криптографами, мають світове визнання. На 3-й конференції AES у квітні 2000 року усі автори представили свої алгоритми.

У Нью-Йорку 13 та 14 квітня 2000 року, незадовго до завершення другого етапу, відбулася третя конференція AES. Дводенна конференція була поділена на вісім сесій по чотири на день. На сесіях першого дня обговорювалися питання, пов'язані з програмованими матрицями (FGPA), проводилася оцінка реалізації алгоритмів на різних платформах, у тому числі PA-RISC, IA-64, Alpha, високорівневих смарт-картах та сигнальних процесорах, порівнювалася продуктивність претендентів на стандарт, аналізувалося кількість раундів у алгоритмах-кандидатах. На другий день було проаналізовано Rijndael зі скороченою кількістю раундів і показано його слабкість у цьому випадку, обговорювалося питання про інтегрування до остаточного стандарту всіх п'яти алгоритмів-претендентів, ще раз тестувалися всі алгоритми. Наприкінці другого дня була проведена презентація, на якій претенденти розповідали про свої алгоритми, їх переваги та недоліки. Про Rijndael як про лідера розповів Вінсент Ріджмен (Vincent Rijmen), який заявив про надійність захисту, високу загальну продуктивність і простоту архітектури свого кандидата.

2 жовтня 2000 року було оголошено, що переможцем конкурсу став алгоритм Rijndael, і розпочалася процедура стандартизації. 28 лютого 2001 року було опубліковано проект, а 26 листопада 2001 року AES було прийнято як FIPS 197.

Строго кажучи, AES і Rijndael не те саме, оскільки Rijndael підтримує широкий діапазон довжин ключів і блоків.

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

На відміну від ГОСТ 28147, який буде розглянутий нижче, алгоритм Rijndael представляє блок даних у вигляді двомірного байтового масиву розміром 4 х 4, 4 х 6 або 4 х 8 (допускається використання декількох фіксованих розмірів інформації, що шифрується). Усі операції виконуються з окремими байтами масиву, а також із незалежними стовпцями та рядками.

Алгоритм Rijndael передбачає виконання чотирьох послідовних перетворень.

1. BS (ByteSub) – таблична заміна кожного байта масиву (рис. 2.2).


Мал. 2.2.Таблична заміна кожного байта масиву

2. SR (ShiftRow) - зсув рядків масиву. При цій операції перший рядок залишається без змін, а решта циклічно побайтно зсувається вліво на фіксовану кількість байт, що залежить від розміру масиву. Наприклад, для масиву розміром 4 х 4 рядки 2, 3 та 4 зсуваються на 1, 2 та 3 байти відповідно (рис. 2.3).

3. Наступним йде MC (MixColumn) – операція над незалежними стовпцями масиву, коли кожен стовпець за певним правилом множиться на фіксовану матрицю C(X) (рис. 2.4).

4. Заключний етап – AK (AddRoundKey) – додавання ключа. Кожен біт масиву складається за модулем 2 з відповідним бітом ключа раунду, який, своєю чергою, певним чином обчислюється з ключа шифрування (рис. 2.5).


Мал. 2.3.Зсув рядків масиву


Мал. 2.4.Операція MixColumn


Мал. 2.5.Операція додавання ключа

Вищеперелічені перетворення даних, що шифруються, по черзі виконуються в кожному раунді (рис. 2.6).

Мал. 2.6.Послідовність раундів Rijndael

В алгоритмі Rijndael кількість раундів шифрування ® змінна (10, 12 або 14 раундів) і залежить від розмірів блоку та ключа шифрування (для ключа також передбачено декілька фіксованих розмірів).

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

За всіх переваг та оригінальності алгоритму AES можна було б вважати абсолютом надійності та стійкості, але, як воно завжди і буває, досконалих продуктів немає.

26 травня 2006 року на конференції Quo Vadis IV Ніколя Тадеуш Куртуа (польський криптограф, який проживає у Франції) представив практичний доказ існування атак алгебри, оптимізованих проти шифру AES-Rijndael. За півтори години на своєму ноутбуці він здійснив демо-злом лише за кількома шифртекстами близького аналога Rijndael. Хоча це був тільки модельний шифр, він був таким же стійким, до нього не було додано істотних слабкостей, він мав такі ж хороші дифузійні характеристики та стійкість до всіх відомих раніше криптоаналізу. Єдиною відмінністю були лише змінені в рамках моделі атак алгебри параметри S-блоків і зменшена для наочності кількість раундів. Однак цього було достатньо, щоб переконати скептиків у реальності атак алгебри та недосконалості навіть такого, здавалося б, досконалого методу шифрування.

ГОСТ 28147.Наступним алгоритмом симетричного шифрування, який ми розглянемо стане ГОСТ 28147-89. Це радянський та російський стандарт симетричного шифрування, запроваджений 1 липня 1990 року. Стандарт є обов'язковим для організацій, підприємств та установ, що застосовують криптографічний захист даних, що зберігаються та передаються в мережах ЕОМ, в окремих обчислювальних комплексах або ЕОМ.

Алгоритм був розроблений у колишньому Головному Управлінні КДБ СРСР або в одному із секретних НДІ у його системі. Спочатку мав гриф (ОВ чи СС – точно невідомо), потім гриф послідовно знижувався і на момент офіційного проведення алгоритму через Держстандарт СРСР 1989 року було знято. Алгоритм залишився ДСП (як відомо, ДСП не вважається грифом). У 1989 став офіційним стандартом СРСР, а пізніше, після розпаду СРСР, федеральним стандартом Російської Федерації.

З моменту опублікування ДСТУ на ньому стояв обмежувальний гриф "Для службового користування", і формально шифр був оголошений "повністю відкритим" лише у травні 1994 року. З відомих причин історія створення шифру та критерії його проектування досі невідомі.

ГОСТ 28147-89 є блоковий шифр з 256-бітним ключем і 32 циклами перетворення, що оперує 64-бітними блоками. Основа алгоритму вже відома нам мережа Фейштеля. Основним режимом шифрування за ГОСТ 28147-89 є режим простої заміни (визначено також складніші режими гамування та гамування зі зворотним зв'язком). Розглянемо механізм роботи алгоритму докладніше.

При роботі ГОСТ 28147-89 інформація шифрується блоками по 64 біти (такі алгоритми називаються блоковими), які потім розбиваються на два субблоки по 32 біти (N1 та N2). Після завершення обробки субблоку N1 його значення складається зі значенням субблоку N2 (складення виконується за модулем 2, тобто застосовується логічна операція XOR - що виключає АБО), а потім субблоки змінюються місцями. Це перетворення виконується певну кількість разів (раундів): 16 або 32 залежно від режиму роботи алгоритму. У кожному раунді виконуються дві операції (рис. 2.7).

Мал. 2.7.Перетворення виконується певну кількість разів

Перша операція передбачає накладення ключа. Вміст субблоку N1 складається за модулем 2 з 32-бітною частиною ключа Kx. Повний ключ шифрування представляється у вигляді конкатенації 32-бітових підключень: K0, K1, K2, K3, K4, K5, K6, K7. У процесі шифрування використовується один з цих з'єднань, залежно від номера раунду та режиму роботи алгоритму.

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

Алгоритм, що визначається ГОСТ 28147-89, може працювати в чотирьох режимах:

простий заміни;

гамування;

гамування зі зворотним зв'язком;

генерації імітоприставок.

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

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

У режимі гамування кожен блок відкритого тексту складається по модулю 2 з блоком гами шифру розміром 64 біта. Гамма шифру – це спеціальна послідовність, яка виходить у результаті певних операцій з регістрами N1 та N2.

1. У регістри N1 і N2 записується їх початкове заповнення – 64-бітна величина, звана синхропосилкою.

2. Зашифровується вміст регістрів N1 і N2 (в даному випадку синхропосилання) в режимі простої заміни.

3. Вміст регістру N1 складається за модулем (2 32 – 1) з константою C1, що дорівнює 2 24 + 2 16 + 2 8 + 2 4 , а результат додавання записується в регістр N1.

4. Вміст регістру N2 складається за модулем 2 32 з константою C2, що дорівнює 2 24 + 2 16 + 2 8 + 1, а результат додавання записується в регістр N2.

5. Вміст регістрів N1 і N2 подається на вихід як 64-бітний блок гами шифру (в даному випадку N1 і N2 утворюють перший блок гами).

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

Для розшифровки гамма виробляється аналогічним чином, а потім до біт зашифрованого тексту та гами знову застосовується операція XOR.

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

У більшості реалізацій алгоритму ГОСТ 28147-89 синхропосилання несекретна, проте є системи, де синхропосилання є таким же секретним елементом, як і ключ шифрування. Для таких систем ефективна довжина ключа алгоритму (256 біт) збільшується ще на 64 біт секретної синхропосилання, яку також можна розглядати як ключовий елемент.

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

Розглядаючи режим генерації імітаторів, слід визначити поняття предмета генерації. Імітоприставка – це криптографічна контрольна сума, яка обчислюється з використанням ключа шифрування та призначена для перевірки цілісності повідомлень. При генерації імітоприставки виконуються такі операції: перший 64-бітний блок масиву інформації, для якого обчислюється імітоприставка, записується в регістри N1 і N2 і зашифровується в скороченому режимі простої заміни (виконуються перші 16 раундів з 32). Отриманий результат підсумовується по модулю 2 з наступним блоком інформації зі збереженням результату N1 і N2.

Цикл повторюється до блоку інформації. В результаті цих перетворень 64-бітове вміст регістрів N1 і N2 або його частина і називається імітоприставкою. Розмір імітоприставки вибирається виходячи з необхідної достовірності повідомлень: при довжині імітоприставки r біт ймовірність, що зміна повідомлення залишиться непоміченим, дорівнює 2 ^. Найчастіше використовується 32-бітна імітоприставка, тобто половина вмісту регістрів. Цього достатньо, оскільки, як і будь-яка контрольна сума, імітоприставка призначена насамперед для захисту від випадкових спотворень інформації. Для захисту ж від навмисної модифікації даних застосовуються інші криптографічні методи – насамперед електронний цифровий підпис.

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

Алгоритм ДЕРЖСТАНДАРТ 28147-89 вважається досить сильним - в даний час для його розкриття не існує більш ефективних методів, ніж згаданий вище Brute Force. Висока стійкість алгоритму досягається насамперед за рахунок великої довжини ключа, що дорівнює 256 біт. До того ж при використанні секретної синхропосилання ефективна довжина ключа збільшується до 320 біт, а засекречування таблиці замін додає додаткові біти. Крім того, криптостійкість ГОСТ 28147-89 вже за 32 раундів можна вважати більш ніж достатньою, і це при тому, що повний ефект розсіювання вхідних даних досягається вже після восьми раундів.

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

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

Безперспективність силової атаки (XSL-атаки в облік не беруться, тому що їх ефективність на даний момент повністю не доведена).

Однак, як воно завжди і буває, алгоритм не позбавлений недоліків: тривіально доводиться, що у ГОСТу існують "слабкі" ключі і S-блоки, але в стандарті не описуються критерії вибору і відсіву "слабких". Крім того, стандарт не специфікує алгоритму генерації S-блоків (таблиці замін). З одного боку, це може бути додатковою секретною інформацією (крім ключа), а з іншого – піднімає низку проблем: не можна визначити криптостійкість алгоритму, не знаючи заздалегідь таблиці замін; Реалізації алгоритму від різних виробників можуть використовувати різні таблиці замін і можуть бути несумісні між собою.

Стисло розглянемо деякі інші алгоритми симетричного шифрування.

Blowfish. Blowfish є 64-бітовим блоковим шифром, розробленим Шнайєром (Schneier) у 1993 році. Цей шифр, як і ще, заснований на алгоритмі мережі Фейштеля. Окремий раунд шифрування даного алгоритму складається із залежної від ключа перестановки та залежної від ключа з даними заміни. Всі операції базуються на операціях XOR та додатках до 32-бітових слів (XORs and additions on 32-bit words). Ключ має змінну довжину (максимальна довжина 448 біт) і використовується для генерації кількох масивів підключення (subkey arrays). Шифр був створений спеціально для 32-бітних машин і суттєво швидше за раніше розглянутий нами алгоритм DES.

IDEA(International Data Encryption Algorithm) був розроблений К. Лейєм (Lai) та Д. Мессі (Massey) наприкінці 1980-х років. Це шифр, що складається з 64-бітних блоків, що повторюються, зі 128-бітним ключем і вісьмома раундами. Слід зазначити, що на відміну від раніше нами розглянутих алгоритмів шифрування, IDEA не заснований на мережі Фейштеля, хоча процес дешифрування аналогічний процесу шифрування. IDEA був сконструйований з урахуванням його втілення як програмно, і апаратно. До того ж безпека IDEA ґрунтується на використанні трьох несумісних типів арифметичних операцій над 16-бітними словами.

Один із принципів створення IDEA полягав у тому, щоб максимально утруднити його диференціальний криптоаналіз, що в даний час виражається відсутністю слабких алгебраічно місць алгоритму. Навіть не дивлячись те що знайдений якимось " Daemen " великий клас (2 51) слабких ключів теоретично може скомпрометувати алгоритм, IDEA залишається досить надійним алгоритмом, оскільки існує 2 128 можливих варіантів ключів, що робить його злом важко здійсненним.

RC5є досить швидким блоковим шифром, розробленим Рівестом (Ronald Linn Rivest) спеціально для «RSA Data Security». Цей алгоритм параметричний, тобто його блок, довжина ключа та кількість проходів (раундів) змінні.

Розмір блоку може дорівнювати 32, 64 або 128 біт. Кількість проходів може змінюватись від 0 до 2048 біт. Параметричність подібного роду робить RC5 надзвичайно гнучким та ефективним алгоритмом у своєму класі.

Виняткова простота RC5 робить його простим у використанні. RC5 з розміром блоку 64 біта і 12 або більше проходами забезпечує хорошу стійкість проти диференціального і лінійного криптоаналізів.

Асиметричне шифрування

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

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

Відкритий ключ обчислюється із секретного: kl = f(k2). Асиметричні алгоритми шифрування ґрунтуються на застосуванні односпрямованих функцій. Згідно з визначенням, функція y = f(x) є односпрямованою, якщо її можна легко обчислити для всіх можливих варіантів x, а для більшості можливих значень y досить складно обчислити таке значення x, при якому y = f(x) .

Прикладом односпрямованої функції може бути множення двох великих чисел: N = S x G. Саме собою, з погляду математики, таке множення є просту операцію. Однак зворотна операція (розкладання N на два великі множники), звана також факторизацією, за сучасними тимчасовими оцінками є досить складним математичним завданням.

Ну що ж, розглянемо деякі з алгоритмів асиметричного шифрування.

Алгоритм Діффі-Хеллмана.У 1976 році Вітфілд Діффі (Whitfield Diffie) і Мартін Хеллман (Martin Hellman) розробили свою систему шифрування з відкритим ключем. Система Діффі-Хеллмана розроблялася на вирішення проблеми поширення ключів під час використання систем шифрування з секретними ключами. Ідея полягала в тому, щоб застосовувати безпечний метод узгодження секретного ключа без передачі ключа іншим способом. Отже, необхідно було знайти безпечний спосіб отримання секретного ключа за допомогою того самого методу зв'язку, для якого розроблявся захист. Суть алгоритму Діффі-Хеллмана ось у чому. Припустимо, що двом точкам (S1 та S2) потрібно встановити між собою безпечне з'єднання, для якого необхідно узгодити ключ шифрування.

S1 і S2 приймають до використання два великі цілих числа a і b, причому 1< a < b.

S1 вибирає випадкове число i і обчислює I = ai? mod b. S1 передає абоненту I S2.

S2 вибирає випадкове число j і обчислює J = aj? mod b. S2 передає J абоненту S1.

S1 обчислює k1 = Ji? mod b.

S2 обчислює k2 = Ij? mod b.

Маємо k1 = k2 = ai? j х mod b, отже, k1 та k2 є секретними ключами, призначеними для використання при передачі інших даних.

Навіть якщо припустити, що зловмиснику якимось чином вдасться прослухати трафік, що передається, то йому будуть відомі a, b, I і J. Проте залишаються в секреті i і j. Рівень безпеки системи залежить від складності знаходження i за відомого I = ai? mod b. Це завдання називається завданням дискретного логарифмування і вважається дуже складним (тобто за допомогою сучасного обчислювального обладнання її вирішити практично неможливо), якщо числа дуже великі. Отже, a та b необхідно вибирати дуже ретельно. Наприклад, обидва числа b та (b – 1)/2 повинні бути простими і мати довжину не менше 512 біт. Рекомендована довжина чисел становить 1024 біти.

Алгоритм RSAбув розроблений у 1978 році трьома співавторами та отримав свою назву за першими буквами прізвищ розробників (Rivest, Shamir, Adleman). В основі стійкості алгоритму стоїть складність факторизації великих чисел та обчислення дискретних логарифмів. Основний параметр алгоритму RSA – модуль системи N, яким проводяться всі обчислення у системі, а N = R x S (R і S – секретні випадкові прості великі числа, зазвичай однакової розмірності).

Секретний ключ k2 вибирається випадковим чином і має відповідати таким умовам: 1< k2 < F(N) и НОД (k2, F(N))= 1, где НОД – наибольший общий делитель. Иными словами, k1 должен быть взаимно простым со значением функции Эйлера F(N) , причем последнее равно количеству положительных целых чисел в диапазоне от 1 до N, взаимно простых с N, и вычисляется как F(N) = (R – 1) ? (S – 1) .

Відкритий ключ kl обчислюється із співвідношення (k2 х kl) = 1? mod F(N). Для цього використовується узагальнений алгоритм Евкліда (алгоритм обчислення найбільшого спільного дільника). Зашифрування блоку даних M за алгоритмом RSA виконується таким чином: C = Mkl? mod N. Оскільки в реальній криптосистемі з використанням RSA число k1 дуже велике (в даний час його розмірність може сягати 2048 біт), пряме обчислення Mk1 нереально. Для його отримання застосовується комбінація багаторазового зведення M квадрат з перемноженням результатів. Звернення цієї функції при великих розмірностях неможливе; іншими словами, неможливо знайти M за відомими C, N та kl. Однак, маючи секретний ключ k2 за допомогою нескладних перетворень можна обчислити M = Ck2 ? mod N. Очевидно, що, крім власне секретного ключа, необхідно забезпечувати секретність параметрів R і S. Якщо зловмисник здобуде їх значення, зможе обчислити і секретний ключ k2.

В даний час криптосистема RSA застосовується в різних продуктах, на різних платформах і в багатьох галузях. Достатньо згадати її використання в операційних системах Microsoft, Apple, Sun і Novell, щоб уявити всю "грандіозність" RSA. В апаратній складовій алгоритм RSA широко використовується в захищених телефонах, на мережевих платах Ethernet, на смарт-картах, криптографічному обладнанні Zaxus (Racal). До того ж, алгоритм входить до складу всіх основних протоколів для захищених комунікацій Інтернет, у тому числі S/MIME, SSL та S/WAN, а також використовується в багатьох урядових установах, державних лабораторіях та університетах. На осінь 2000 року технології із застосуванням алгоритму RSA було ліцензовано більш ніж 700 компаніями.

Алгоритм Ель-Гамалі.Ель-Гамаль (Taher Elgamal) розробив варіант системи Діффі-Хеллмана. Він удосконалив цей алгоритм та отримав один алгоритм для шифрування та один для забезпечення аутентифікації. Алгоритм Ель-Гамаля не був запатентований (на відміну від RSA) і таким чином став дешевшою альтернативою, оскільки не потрібна була сплата ліцензійних внесків. Оскільки цей алгоритм базується на системі Діффі-Хеллмана, то його стійкість забезпечується складністю вирішення того ж завдання дискретного логарифмування.

Алгоритм цифрового підпису (Digital Signature Algorithm).Алгоритм DSA був розроблений урядом США як стандартний алгоритм для цифрових підписів (див. Розд. 2.3). Даний алгоритм базується на системі Ель-Гамалю, але дозволяє здійснювати лише автентифікацію. Конфіденційність цим алгоритмом не забезпечується.

Шифрування із застосуванням еліптичних кривих.Еліптичні криві були запропоновані для використання в системах шифрування у 1985 році. Системи шифрування з використанням еліптичних кривих (ECC) ґрунтуються на відмінному від факторизації чи дискретному логарифмуванні математичного завдання. Це завдання полягає в наступному: маючи дві точки A і B на еліптичній кривій, такі як A = kB, дуже важко визначити ціле число k. Незважаючи на деяку "екзотичність", використання ECC перед алгоритмом RSA або Діффі-Хеллмана в ряді випадків дає істотну перевагу. Найбільшою з таких переваг є те, що ключі можуть мати істотно меншу довжину (через складність завдання). І це без втрати стійкості! Як результат, обчислення проводяться швидше із збереженням того ж рівня безпеки. Так, безпека, що забезпечується 160-бітним ключем ECC, може бути прирівняна до 1024-бітного ключа RSA.

Переваги та недоліки симетричного та асиметричного методів шифрування

На сьогоднішній день у сфері ІБ широко представлені системи як із симетричним шифруванням, так і з асиметричним. Кожен із алгоритмів має свої переваги та недоліки, про які не можна не сказати.

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

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

Інший недолік - вже суто теоретичний, і полягає він у тому, що математично криптостійкість алгоритмів асиметричного шифрування поки що не доведена.

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

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

2.2. Електронний цифровий підпис

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

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

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

Основні терміни, що застосовуються під час роботи з ЕЦП

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

Відкритий (public) ключвикористовується для перевірки ЕЦП одержуваних документів-файлів; технічно це деяка інформація завдовжки 1024 біти. Відкритий ключ працює лише у парі із закритим ключем.

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

Засоби електронно-цифрового підпису– апаратні та/або програмні засоби, що забезпечують:

створення електронного цифрового підпису в електронному документі з використанням закритого ключа електронного цифрового підпису;

| підтвердження з використанням відкритого ключа електронного цифрового підпису автентичності ЕЦП в електронному документі;

¦ створення закритих та відкритих ключів електронних цифрових підписів.

ЕЦП – це просто

Почнемо з того, що ЕЦП – це зовсім не «звір», і жодних спеціальних знань, навичок та умінь для її використання не потрібно.

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

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

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

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

ім'я файлу відкритого ключа підпису;

інформація про особу, яка сформувала підпис;

Дата формування підпису.

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

Керування ключами

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

Завдання захисту ключів від заміни вирішується за допомогою сертифікатів. Сертифікат дозволяє засвідчити укладені в ньому дані про власника та його відкритий ключ підписом будь-якої довіреної особи. У централізованих системах сертифікатів (наприклад, PKI – Public Key Infrastructure) використовуються центри сертифікації, які підтримує довірені організації. У децентралізованих системах (наприклад, PGP – Pretty Good Privacy) шляхом перехресного підписання сертифікатів знайомих та довірених людей кожним користувачем будується мережа довіри.

Управлінням ключами займаються центри розповсюдження сертифікатів. Звернувшись до такого центру, користувач може отримати сертифікат будь-якого користувача, а також перевірити, чи ще не відкликаний той чи інший відкритий ключ.

ЕЦП під мікроскопом

Розглянемо принцип роботи ЕЦП докладніше. Схема електронного підпису зазвичай включає такі складові:

алгоритм генерації ключових пар користувача;

функцію обчислення підпису;

функцію перевірки підпису.

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

Нині детерміновані схеми мало використовуються. Навіть спочатку детерміновані алгоритми зараз внесені модифікації, що перетворюють їх на імовірнісні (так, в алгоритм підпису RSA друга версія стандарту PKCS#1 додала попереднє перетворення даних (OAEP), що включає, серед іншого, зашумлення).

Функція перевірки підпису перевіряє, чи вона відповідає цьому документу та відкритому ключу користувача. Відкритий ключ користувача доступний всім, тому будь-хто може перевірити підпис під даним документом.

Оскільки документи змінної (і досить великої) довжини, що підписуються, у схемах ЕЦП найчастіше підпис ставиться не на сам документ, а на його хеш. Для обчислення хеш використовуються криптографічні хеш-функції, що гарантує виявлення змін документа під час перевірки підпису. Хеш-функції є частиною алгоритму ЭЦП, у схемі може бути використана будь-яка надійна хеш-функція. Що таке хеш?

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

Продовжимо. Алгоритми ЕЦП діляться на два великі класи:

звичайні цифрові підписи;

цифрові підписи з відновленням документа.

Звичайні цифрові підписи необхідно пристиковувати до документа, що підписується. До цього класу належать, наприклад, алгоритми, що базуються на еліптичних кривих (ECDSA, ГОСТ Р34.10-2001, ДСТУ 4145-2002). Цифрові підписи з відновленням документа містять підписуваний документ: у процесі перевірки підпису автоматично обчислюється і тіло документа. До цього класу належить один із найпопулярніших алгоритмів – RSA, який ми розглянемо наприкінці розділу.

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

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

| Посвідчення джерела документа. Залежно від деталей визначення документа можуть бути підписані такі поля як "автор", "внесені зміни", "мітка часу" тощо.

¦ Захист від змін документа. При будь-якій випадковій або навмисній зміні документа (або підпису) зміниться хеш, а отже, підпис стане недійсним.

Цілком очевидно, що ЕЦП зовсім не досконала. Можливі такі загрози цифрового підпису, за яких зловмисник може:

підробити підпис для обраного ним документа;

підібрати документ до цього підпису, щоб підпис до нього підходив;

підробити підпис для будь-якого документа;

| підмінити відкритий ключ (див. підрозд. "Управління ключами" розд. 2.2) на свій власний, видаючи себе за власника;

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

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

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

RSA як фундамент ЕЦП

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

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

Поширення системи RSA дійшло настільки, що її враховують при створенні нових стандартів. Першим при розробці стандартів цифрових підписів у 1997 році було розроблено стандарт ANSI X9.30, який підтримує Digital Signature Standard (стандарт цифрового підпису). Роком пізніше було введено ANSI X9.31, в якому зроблено акцент на цифрові підписи RSA, що відповідає ситуації, що фактично склалася, зокрема для фінансових установ.

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

Поява цифрового підпису на основі RSA зробила здійснення електронних операцій досить безпечною та надійною.

Алгоритм RSA передбачає, що надіслане закодоване повідомлення може бути прочитане адресатом і лише їм. Як було сказано вище, у цьому алгоритмі використовується два ключі – відкритий і секретний. Даний алгоритм привабливий також у разі, коли велика кількість суб'єктів (N) має спілкуватися за схемою "все-з-всеми". У разі симетричної схеми шифрування кожен із суб'єктів якимось чином повинен доставити свої ключі всім іншим учасникам обміну, при цьому сумарна кількість використовуваних ключів буде досить велика при великому значенні N. Застосування асиметричного алгоритму вимагає лише розсилки відкритих ключів усіма учасниками, сумарна кількість ключів дорівнює N.

Повідомлення надається у вигляді числа M. Шифрування здійснюється за допомогою загальнодоступної функції f(M) , і тільки адресату відомо, як виконати операцію f-1. Адресат вибирає два великі прості (prime) числа p і q, які робить секретними. Він оголошує n = pq і число d, c (d, p – 1) = (d, q – 1) = 1 (один із можливих способів виконати цю умову – вибрати d більше, ніж p/2 та q/2). Шифрування проводиться за формулою: f(M) = Md х mod n, де M та f(M) обидва< n – 1 . Оно может быть вычислено за разумное время, даже если M, d и n содержат весьма большое количество знаков. Адресат вычисляет M на основе M d , используя свое знание p и q. Если dc ? (p _ 1) 1, тогда (M d) e? p 1.

Вихідний текст M виходить адресатом із зашифрованого F(M) шляхом перетворення: M = (F(M)) e(Mod pq). Тут як вихідний текст, і зашифрований розглядаються як довгі двійкові числа.

Аналогічно (M d) e? q M, якщо dc? (q _ 1) 1. е задовольняє цим двом умовам, якщо cd? (p _ 1)(q _ 1) 1 . Ми можемо дозволити е = x, коли x є розв'язком рівняння dx + (p – 1)(q – 1) y = 1.

Так як (M d) e M поділяємо на p і q, воно ділимо і на pq. Отже, ми можемо визначити M, знаючи Md, обчисливши його значення у ступені е та визначивши залишок від поділу на pq. Для дотримання секретності важливо, щоб знаючи n, не можна було обчислити p і q. Якщо n містить 100 цифр, підбір шифру пов'язаний із перебором приблизно 1050 комбінацій. Ця проблема вивчається вже близько 100 років.

Теоретично можна припустити, що виконання операції f-l можливе без обчислення p і q. Але в будь-якому випадку завдання це непросте, і розробники вважають її важко факторизується.

Припустимо, що маємо зашифрований текст f(M) і вихідний текст M і хочемо знайти значення p і q. Неважко показати, що таких вихідних даних для вирішення задачі недостатньо – треба знати всі можливі значення Mi.

Проясним використання алгоритму RSA на конкретному прикладі. Виберемо два простих числа p = 7; q = l7 (на практиці ці числа набагато довші). У цьому випадку n = pq дорівнюватиме ll9. Тепер необхідно вибрати е. Виберемо е = 5. Наступний крок пов'язаний з формуванням числа d, щоб de = 1 х mod [(p – 1)(q – 1)]. d = 77 (використано розширений алгоритм Евкліда). d – секретний ключ, а е та n характеризують відкритий ключ. Нехай текст, який потрібно зашифрувати, представляється M = 19. С = Me х mod n. Отримуємо зашифрований текст C = 66. Цей текст може бути надісланий відповідному адресату. Отримувач дешифрує отримане повідомлення, використовуючи M = Cd x mod n і C = 66. У результаті виходить M = 19.

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

Чи можливо зламати ЕЦП?

Зламування ЕЦП фактично зводиться до злому алгоритму шифрування. У разі можливі варіанти злому ми розглянемо з прикладу алгоритму RSA.

Існує кілька способів злому RSA. Найбільш ефективна атака – знайти секретний ключ, який відповідає необхідному відкритому ключу. Це дозволить нападнику читати всі повідомлення, зашифровані відкритим ключем, та підробляти підписи. Таку атаку можна провести, знайшовши головні співмножники (чинники) загального модуля n - p і q. З p, q і e (загальний показник) нападник може легко обчислити приватний показник d. Основна складність - пошук головних співмножників (факторинг) n. Безпека RSA залежить від розкладання на співмножники (факторингу), що є важким завданням, що не має ефективних способів вирішення.

Фактично, завдання відновлення секретного ключа еквівалентна задачі розкладання на множники (факторингу) модуля: можна використовувати d для пошуку співмножників n, і навпаки: можна використовувати n для пошуку d. Слід зазначити, що вдосконалення обчислювального устаткування саме собою не зменшить стійкість криптосистеми RSA, якщо ключі матимуть достатню довжину. Фактично вдосконалення обладнання збільшує стійкість криптосистеми.

Інший спосіб зламати RSA полягає в тому, щоб знайти метод обчислення кореня ступеня e з mod n. Оскільки С = Me х mod n, то коренем ступеня e із mod n є повідомлення M. Обчисливши корінь, можна розкрити зашифровані повідомлення і підробити підписи, навіть не знаючи секретний ключ. Така атака не еквівалентна факторингу, але зараз невідомі методи, які дозволяють зламати RSA таким чином. Однак у особливих випадках, коли на основі одного й того самого показника щодо невеликої величини шифрується досить багато пов'язаних повідомлень, є можливість розкрити повідомлення. Згадані атаки – єдині способи розшифрувати всі повідомлення, зашифровані цим ключем RSA.

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

Найпростіший напад на окреме повідомлення – атака за передбачуваним відкритим текстом. Нападник, маючи зашифрований текст, припускає, що повідомлення містить певний текст (наприклад, "Штірліц - Плей-шнеру"). Потім шифрує передбачуваний текст відкритим ключем одержувача і порівнює отриманий текст із наявним зашифрованим текстом. Такій атакі можна запобігти, додавши до кінця повідомлення кілька випадкових бітів. Інша атака на єдине повідомлення застосовується в тому випадку, якщо відправник посилає те саме повідомлення M трьом кореспондентам, кожен з яких використовує загальний показник e = 3. Знаючи це, нападник може перехопити ці повідомлення і розшифрувати повідомлення M.

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

2.3. Сучасні технології аутентифікації. Смарт-картки

Смарт-карти, подібно до Memory-карт, являють собою пластикові карти з вбудованою мікросхемою (ICC, integrated circuit card - карта з інтегрованими електронними схемами). Однак смарт-карти є складнішим пристроєм, що містить мікропроцесор і операційну систему, що контролює пристрій і доступ до об'єктів у його пам'яті. Крім того, смарт-картки, як правило, мають можливість проводити криптографічні обчислення.

Призначення смарт-карт – одно- та двофакторна автентифікація користувача, зберігання інформації та проведення криптографічних операцій у довіреному середовищі.

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

Смарт-картки знаходять все більш широке застосування в різних галузях – від систем накопичувальних знижок до кредитних та дебетових карток, студентських квитків та телефонів стандарту GSM.

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

карти пам'яті;

мікропроцесорні карти;

Карти з криптографічної логікою.

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

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

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

Зчитувачі для смарт-карт

Незважаючи на назву – пристрій для читання смарт-карток, – більшість кінцевих пристроїв, або пристроїв сполучення (IFD, InterFace Device), здатні як зчитувати, так і записувати, якщо дозволяють можливості смарт-картки та права доступу. Пристрої для читання смарт-карток можуть підключатися до комп'ютера за допомогою послідовного порту, слота PCMCIA, послідовної шини USB. За методом зчитування інформації карти поділяються на:

Контактні;

безконтактні;

З здвоєним інтерфейсом.

Контактні картки взаємодіють зі зчитувачем, стикаючись металевим контактним майданчиком картки з контактами зчитувача. Даний метод зчитування просто реалізуємо, але підвищує зношування карти при частому використанні. Контактна смарт-карта складається із трьох частин:

Контактна область:

Шість чи вісім контактів квадратної чи овальної форми;

Позиції контактів виконані відповідно до стандарту ISO-7816;

чіп (мікропроцесор карти);

пластикова основа.

Пристрої читання смарт-карток можуть бути інтегровані в клавіатуру.

Деякі виробники випускають інші види апаратних пристроїв, які є інтеграцією контактної смарт-карти з пристроєм читання смарт-карти. Вони за властивостями пам'яті та обчислювальними можливостями повністю аналогічні смарт-карт. Найбільш популярні апаратні "ключі", що використовують порт USB. USB-ключі привабливі для деяких організацій, оскільки USB стає стандартом, що знаходить все більшого поширення в нових комп'ютерах: організації не потрібно купувати для користувачів будь-які зчитувачі.

Використання інтелектуальних пристроїв під час аутентифікації з відкритим ключем

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

Зберігати та використовувати закритий ключ можна по-різному, і різні розробники використовують різні підходи. Найпростіший із них – використання інтелектуального пристрою як дискети: за необхідності карта експортує закритий ключ, і криптографічні операції здійснюються на робочій станції. Цей підхід є не найдосконалішим з точки зору безпеки, зате відносно легко реалізовується і невисокі вимоги до інтелектуального пристрою. Два інших підходи безпечніші, оскільки припускають виконання інтелектуальним пристроєм криптографічних операцій. При першому користувач генерує ключі на робочій станції та зберігає їх у пам'яті пристрою. При другому він генерує ключі за допомогою пристрою. В обох випадках після того, як закритий ключ збережено, його не можна витягти з пристрою та отримати будь-яким іншим способом.

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

Генерування ключа за допомогою пристрою

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

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

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

Стандарт EMV (Europay, MasterCard & Visa). Перша та друга частини базуються на ISO-7816, у наступних частинах додано визначення обробки транзакцій, специфікації терміналів тощо.

"Страшна анатомія" смарт - чи можливий злом?

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

У чому така популярність смарт-карт? Ймовірно, в тому, що сфера застосування цих "девайсів" постійно розширюється: від банківської та телефонної картки до цифрового паспорта-ідентифікатора. Масова експансія смарт-карт зажадала від виробників чогось більшого, ніж просто запевнення безпеки технології "smart".

А чи можна зламати смарт-карту і якщо так, то як це зробити?

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

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

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

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

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

Технології індукованих збоївмають на увазі створення позаштатних умов роботи чіпа, щоб відкрити потенційні канали доступу до захищеної інформації. Наприклад, наприкінці вересня 1996 року науковий колектив із Bellcore (науково-дослідний центр американської компанії Bell) повідомив про те, що виявлено серйозну потенційну слабкість загального характеру в захищених криптографічних пристроях, зокрема в смарт-картах для електронних платежів (D. Boneh, R. A. DeMillo, R. J. Lipton «Он важливість для сприйняття криптографічних Protocols for Faults»; www.demiLLo.com/PDF/smart.pdf).Автори назвали свій метод розкриття "криптоаналізом при збоях обладнання" (Cryptanalysis in the Presence of Hardware Faults). Суть методу полягає в тому, що штучно викликана за допомогою іонізації або мікрохвильового опромінення помилка в роботі електронної схеми дозволяє порівняти збійні значення на виході пристрою з свідомо правильними значеннями, тим самим відновлюючи криптографічну інформацію, що зберігається в смарт-карті.

Симетричні криптосистеми

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

Основні відомості

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

Класичним прикладом таких алгоритмів є симетричні криптографічні алгоритми, наведені нижче:

  • Проста перестановка
  • Поодинока перестановка по ключу
  • Подвійна перестановка
  • Перестановка "Магічний квадрат"

Проста перестановка

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

Поодинока перестановка по ключу

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

Подвійна перестановка

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

Перестановка "Магічний квадрат"

Магічними квадратами називаються квадратні таблиці з вписаними в їх клітини послідовними натуральними числами від 1, які дають у сумі по кожному стовпцю, кожному рядку та кожній діагоналі те саме число. Подібні квадрати широко застосовувалися для вписування тексту, що шифрується, по наведеній в них нумерації. Якщо потім виписати вміст таблиці по рядках, то виходило шифрування перестановкою букв. На перший погляд, здається, ніби магічних квадратів дуже мало. Проте їх число дуже швидко зростає зі збільшенням розміру квадрата. Так, існує лише один магічний квадрат розміром 3 х 3, якщо не брати до уваги його повороти. Магічних квадратів 4 х 4 налічується вже 880, а число магічних квадратів розміром 5 х 5 близько 250 000. Тому магічні квадрати великих розмірів могли бути гарною основою для надійної системи шифрування того часу, тому що ручний перебір всіх варіантів ключа для цього шифру був немислимий.

У квадрат розміром 4 на 4 вписувалися числа від 1 до 16. Його магія полягала в тому, що сума чисел за рядками, стовпцями та повними діагоналями дорівнювала одному й тому ж числу - 34. Вперше ці квадрати з'явилися в Китаї, де їм і була приписана деяка "магічна сила".

Після цього шифрований текст записується в рядок (зчитування здійснюється зліва направо, рядково):
.ірдзегюСжаоеянП

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

Історія

Вимоги

Повна втрата всіх статистичних закономірностей вихідного повідомлення є важливою вимогою до симетричного шифру. Для цього шифр повинен мати «ефект лавини» - має відбуватися сильна зміна шифроблока при 1-бітній зміні вхідних даних (в ідеалі повинні змінюватися значення 1/2 біт шифроблока).

Також важливою вимогою є відсутність лінійності (тобто умови f(a) xor f(b) == f(a xor b)), інакше полегшується застосування диференціального криптоаналізу до шифру.

Загальна схема

В даний час симетричні шифри - це:

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

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

Типовим способом побудови алгоритмів симетричного шифрування є мережа Фейстеля. Алгоритм будує схему шифрування з урахуванням функції F(D, K), де D - порція даних, розміром удвічі менше блоку шифрування, а K - «ключ проходу» даного проходу. Від функції не вимагається оборотність – зворотна їй функція може бути невідома. Переваги мережі Фейстеля – майже повний збіг дешифрування з шифруванням (єдина відмінність – зворотний порядок «ключів проходу» в розкладі), що полегшує апаратну реалізацію.

Операція перестановки перемішує біти повідомлення за законом. У апаратних реалізаціях вона очевидно реалізується як переплутування провідників. Саме операції перестановки дають можливість досягнення ефекту лавини. Операція перестановки лінійна - f(a) xor f(b) == f(a xor b)

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

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

Параметри алгоритмів

Існує безліч (не менше двох десятків) алгоритмів симетричних шифрів, суттєвими параметрами яких є:

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

Поширені алгоритми

  • AES (англ. Advanced Encryption Standard) - американський стандарт шифрування
  • ГОСТ 28147-89 – вітчизняний стандарт шифрування даних
  • DES (англ. Data Encryption Standard) - стандарт шифрування даних у США

Порівняння з асиметричними криптосистемами

Переваги

  • швидкість (за даними Applied Cryptography - на 3 порядки вище)
  • простота реалізації (за рахунок більш простих операцій)
  • менша необхідна довжина ключа для порівнянної стійкості
  • вивченість (за рахунок більшого віку)

Недоліки

  • складність управління ключами у великій мережі. Означає квадратичне зростання числа пар ключів, які треба генерувати, передавати, зберігати та знищувати у мережі. Для мережі 10 абонентів потрібно 45 ключів, для 100 вже 4950, для 1000 - 499500 і т.д.
  • складність обміну ключами. Для застосування необхідно вирішити проблему надійної передачі ключів кожному абоненту, оскільки потрібен секретний канал передачі кожного ключа обом сторонам.

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

Важливою властивістю симетричних шифрів є неможливістьїх використання для підтвердження авторства, оскільки ключ відомий кожній стороні.

Література

  • Гатчин Ю.А., Коробейніков А.Г. Основи криптографічних алгоритмів. Навчальний посібник. - СПб.: СПбГІТМО(ТУ), 2002.
  • Кон П. Універсальна алгебра. - М: Мир. – 1968.
  • Коробейніков А. Г. Математичні основи криптографії. Навчальний посібник. СПб: СПб ГІТМО (ТУ), 2002.

Посилання

  • довідник, що розглядає у тому числі симетричне шифрування
13 червня 2017 о 13:37

Симетричне та асиметричне шифрування. Розбір алгоритму передачі шифрованих даних між серверами

  • Алгоритми,
  • Інформаційна безпека ,
  • Криптографія

Умовимося, що машина, яка передає шифровані дані – це завжди машина A, а машина, яка їх приймає – має умовне позначення B.

Бібліотека вирішує два можливі випадки (при необхідності довнесу функціонал):


2) Випадок, коли є машина і необхідно передати шифровані дані на іншу машину (B). Ініціатором передачі є перша машина (А).

Бібліотека реалізує обидва варіанти, під кожен із яких є демо:

Для першого випадку у папці server_b_1є скрипт testGetDataFromA.php
Для другого випадку у папці server_a_1є скрипт testPushDataToB.php

Бібліотека для обох випадків одна і та ж Encode.php, але для першого випадку потрібні одні додаткові скрипти, для другого випадку інші, тому щоб уникнути плутанини я розніс їх функціонально на папку server_a_1 і server_b_1 (можливо наступні версії бібліотеки). Таким чином, якщо для обох машин необхідна реалізація і першого випадку передачі і другого - кожна така машина матиме обидві папки.

Тепер про те, як реалізовані обидва рішення:

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

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

$encrypted_data = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $sinc_key, $notice_text, MCRYPT_MODE_ECB))); $test_decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$sinc_key, base64_decode(urldecode($encrypted_data)),MCRYPT_MODE_ECB));
Робота з асиметричним шифруванням відбувається за допомогою php OpenSSL

Отже:

Розгляну спочатку спрощені схеми обох, зазначених на початку випадків передачі, а потім більш детально.

1) Випадок, коли є машина (B), якій потрібні дані від машини A (наприклад, їй потрібно отримати толк клієнта) і ці дані повинні бути отримані безпечно. Тобто. ініціатором передачі машина B.

Машина B генерує пару ключів (приватний та публічний) і робить запит на машину A, відіславши публічний ключ (приватний залишивши у себе). Машина А генерує симетричний ключ, шифрує їм потрібну до передачі секретну інформацію N. Після цього машина А повертає зашифрований публічним ключем симетричний ключ, а також зашифровану симетричним ключем секретну інформацію N. Машина B розшифровує дані своїм приватним ключем. У розшифрованих даних вона отримує симетричний ключ та зашифровані ним дані. За допомогою симетричного ключа вона розшифровує таємні дані.

Немає гарантії, що машина A – саме наша машина, а не ФСБ-шника Анатолія. Тому реалізація цього алгоритму бібліотекою трохи змінена піддатковою перевіркою:

(Демо скрипта - server_b_1/testGetDataFromA.php)

На обох машинах прописаний секретний ключ SIGNATURE_KEY, який бере участь у додатковій перевірці. Машина B генерує пару ключів (приватний та публічний), ключ поточної конекції та робить запит (http://.../server_a_1/getDataToB.php) на машину A, надіславши ключ поточної конекції та публічний ключ (приватний залишивши у себе). Машина А генерує симетричний ключ, шифрує їм необхідну для передачі секретну інформацію N. Також формуються додані M, які є md5 від рядка містить SIGNATURE_KEY і ключ поточної конекції. Після цього машина А повертає зашифрований публічним ключем рядок з симетричного ключа і доданих М, а так само зашифровану симетричним ключем секретну інформацію N. Машина B розшифровує дані з симетричним ключем своїм приватним ключем, генерує рядок, підданим М (оскільки цілком може обчислити md містить SIGNATURE_KEY та ключ поточної конекції). Якщо додаткові збігаються (що є просто додатковою перевіркою для кожної транзакції, що машина A знає SIGNATURE_KEY, а отже - наша машина), машина В витягує симетричний ключ, за допомогою якого вона розшифровує секретну інформацію N.

2) Випадок, коли є машина і необхідно передати шифровані дані на іншу машину (B). Ініціатором передачі є перша машина (А).

Спрощений алгоритм такої передачі зводиться до наступного:

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

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

(Демо скрипта - server_a_1/testPushDataToB.php)

На обох машинах прописаний секретний ключ SIGNATURE_KEY, який бере участь у додатковій перевірці. Машина A, згенерувавши md5 від ключа поточної конекції та SIGNATURE_KEY відправляє ці дані (разом із незашифрованим ключом поточної конекції) машині B (http://.../server_b_1/get_public_key.php), яка генерує публічний ключ тільки якщо у неї виходить такий ж md5 від свого SIGNATURE_KEY та отриманого ключа поточної конекції. Це не вирішує питання, що публічний ключ буде отримано саме від машини A, а не від машини ФСБ-шника Василя, але гарантує машині B, що вона генерує публічний ключ саме для машини A (хоча генерація публічного ключа – справа взагалі довільна, але навіть тут краще перестрахуватися). Разом з публічним ключем генерується md5 від SIGNATURE_KEY та другим ключем поточної конекції. Другий ключ поточної конекції – довільний хеш. Дані публічного ключа, другого ключа довільної конекції та вказаний md5 повертаються на машину A. Отримавши другий ключ довільної конекції машина A, знаючи SIGNATURE_KEY генерує перевірочний md5 і якщо він збігається з тим, що машина отримала - публічний ключ вважається саме від машини B, від Василя.

Далі машина A (тут вже схема аналогічна першому випадку передачі даних) генерує симетричний ключ і додаткову перевірку, яка є md5 від SIGNATURE_KEY і ключа поточної конекції. Ці дані шифруються публічним ключем від машини B. Далі дані разом із ключем поточної конекції відправляються на машину B (http://.../server_b_1/pushDataFromA.php), яка генерує на основі отриманого з цих даних ключа поточної конекції та SIGNATURE_KEY md5 , Звіряє з отриманим, що дає гарантію, що дані не від ФСБ-шника Миколи. Якщо все гаразд і перевірка пройдена – за допомогою приватного ключа вилучається симетричний ключ, яким вже розшифровується повідомлення.

Радий, якщо комусь знадобиться ця інформація.