Материал: 1

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Основи криптографічного захисту інформації

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

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

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

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

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

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

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

  2. Криптографія з ключем.

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

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

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

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

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

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

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

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

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

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

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

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

1.3.1. Скремблери

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

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

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

1.3.1 Скремблери

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

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

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


Мал. 1.

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

Розглянемо приклад кодування інформаційної послідовності 0101112 скремблером 1012 з початковим ключем 1102.

скремблер код.біт инф.біт рез-т

1 1 0 _

\ \ \_

1 1 1 _ \_

\ \ \_ 0 XOR 0 = 0

0 1 1 _ \_

\ \ \_ 1 XOR 1 = 0

1 0 1 \_

\ \ 1 XOR 0 = 1

і так далі

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

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

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

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

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

Можливі різні типи графів стану скремблера. На малюнку 2 приведені зразкові варіанти для 3-розрядного скремблера. У разі "А" окрім завжди присутнього циклу "000">>"000" ми бачимо ще два цикли - з 3-мя станами і 4-мя. У разі "Б" ми бачимо ланцюжок, який сходиться до циклу з 3-х станів і вже ніколи звідти не виходить. І нарешті, у разі "В" усі можливі стани окрім нульового, об'єднані в один замкнутий цикл. Очевидно, що саме в цьому випадку, коли усе 2N-1 станів системи утворюють цикл, період повторення вихідних комбінацій максимальний, а кореляція між довжиною циклу і початковим станом скремблера (ключем), яка привела б до появи слабкіших ключів, відсутній.


Мал. 2.

І ось тут математика піднесла прикладній науці, якій являється криптографія, черговий подарунок. Наслідком однієї з теорем доводиться (у термінах стосовно скремблювання), що для скремблера будь-якої розрядності N завжди існує такий вибір охоплюваних зворотним зв'язком розрядів, що генерована ними послідовність біт матиме період, рівний 2N-1 бітам. Так, наприклад, в 8-бітовому скремблері, при охопленні 0-го, 1-го, 6-го і 7-го розрядів дійсно за час генерації 255 біт послідовно проходять усі числа від 1 до 255, не повторюючись жодного разу.

Схеми з вибраними за цим законом зворотними зв'язками називаються генераторами послідовностей найбільшої довжини (ПНД), і саме вони використовуються в скремблюючій апаратурі. З безлічі генераторів ПНД заданої розрядності в часи, коли вони реалізовувалися на електричній або мінімальній електронній базі вибиралися ті, у яких число розрядів, що беруть участь в створенні чергового біта, було мінімальним. Зазвичай генератора ПНД вдавалося досягти за 3 або 4 зв'язки. Сама ж розрядність скремблерів перевищувала 30 біт, що давало можливість передавати до 240 біт = 100 Мбайт інформації без побоювання початку повторення кодуючої послідовності.

ПНД нерозривно пов'язані з математичною теорією поліномів, що не приводяться. Виявляється, досить щоб поліном міри N не був представимо по модулю 2 у вигляді твору ніяких інших поліномів, для того, щоб скремблер, побудований на його основі, створював ПНД. Наприклад, єдиним поліномом міри, що не приводиться, 3 являється x3+x+1, в двійковому виді він записується як 10112 (одиниці відповідають присутнім розрядам). Скремблери на основі поліномів, що не приводяться, утворюються відкиданням самого старшого розряду (він завжди присутній, а отже, несе інформацію тільки про міру полінома), так на основі вказаного полінома, ми можемо створити скремблер 0112 з періодом зациклення 7(=23-1). Природно, що на практиці застосовуються поліноми значно вищих порядків. А таблиці поліномів будь-яких порядків, що не приводяться, можна завжди знайти в спеціалізованих математичних довідниках.

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




1.3.2 Блокові шифри

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

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

1.3.2.3. Блоковий шифр TEAБлоковий алгоритм TEA приведений як приклад одного з найпростіших в реалізації стійких криптоалгоритмов.

1.3.2.4. AES: cтандарт блокових шифрів США c 2000 рокуВ 1998 році був оголошений відкритий конкурс на криптостандарт США на декілька перших десятиліть XXI століття. Переможцем конкурсу був визнаний бельгійський блоковий шифр Rijndael. Швидше за все він стане стандартом де-факто блокового шифрування у всьому світі.

Загальні відомості про блокові шифри

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

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

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

Источник: https://files.student-it.ru/previewfile/7000