НОУ ІНТУІТ, Лекція, Основи ІТ-безпеки

1.4 Криптографічні техніки

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

Після визначення поняття криптографії ми розглянемо такі області, пов'язані з криптографічних технік:

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

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

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

Алгоритми, що формують основу криптографії, – це шифри. Шифр – це:

  1. Криптографічна система , у якій елементи відкритого тексту 4 Відкритий текст – звичайний незашифрований текст. замінюються згідно з визначеним ключем.
  2. Будь-яка криптографічна система , в якій довільні символи або групи символів представляють елементи відкритого тексту стандартної довжини зазвичай окремі літери; або в якій елементи відкритого текстуреорганізовані; або те й інше залежно від деяких визначених правил.

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

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

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

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

1.4.2 Алгоритми із симетричним ключем

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

Оригінал: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Заміна: G H I J K L M N O P Q R S T U V W X Y Z A B C D E F

У цьому випадку літери в алфавіті були просто зсунуті на сім позицій вліво 6 У цьому прикладі помилка – символи зрушені на шість, а не сім позицій; суть прикладу від цього не постраждала. , таким чином, фраза "HELLOWORLD" транслювалася б як "NKRRU CUXRJ". Передумовою, на якій заснований цей код, є знання та відправником та одержувачем вихідного ключа, кількості позицій для зміщення літер у нашому випадку.

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

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

Визначення надійності симетричного шифру

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

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

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

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

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

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

Реально існуючі симетричні шифривикористовують числові ключі розміром, зазвичай, від 40 до 256 біт. Навіть для найменших з них атака грубою силою мала б перебрати в середньому 2 в 39-му ступені, або близько 550,000,000,000 можливих значень ключів. Кожен додатковий біт у розмірі ключа подвоює простір ключа.

Відмінності симетричного та асиметричного шифрів

Деякі люди мають труднощі при запам'ятовуванні, який тип шифрування симетричний, а який асиметричний. Щоб допомогти, дамо інструмент для запам'ятовування. Зверніть увагу на рис. 1-3.

іт-безпеки

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

Приклад алгоритму із симетричним ключем

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

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

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

лекція

Ось що відбувається у нашому прикладі:

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

Види симетричних шифрів

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

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

  • DES (Data Encryption Standard, стандарт шифрування даних) – федеральний стандарт обробки інформації (FIPS, Federal Information Processing Standard) 46-3 описує алгоритм шифрування даних (DEA, Data Encryption Algorithm). DEA також визначено у стандарті ANSI 10 ANSI – American National Standards Institute, Американський інститут національних стандартів. X3.92. DEA має 64-бітовий розмір блоку і під час виконання використовує 56-бітовий ключ (з повного 64-бітового ключа вирізано 8 біт парності).
  • 3DES (Triple-DES, потрійний DES) – визначений у стандарті ANSI X9.52 і є потрійним застосуванням DES, де існує два варіанти: DES-EDE та DES-EEE. Все дуже просто: DES-EDE означає потрійне застосування DES, де процесами шифрування, що йдуть один за одним.(Encryption), розшифровування (Decryption) та ще одного шифрування (Encryption) використовується три різні ключові опції. DES-EEE означає три послідовні шифрування (Encryption, Encryption, Encryption).
  • AES (Advanced Encryption Standard, покращений стандарт шифрування). З'явившись як FIPS PUB 197 від NIST і наступник DES, AES підтримує розміри ключа 128, 192 і 256 біт, на відміну від 56-бітових ключів, пропонованих DES. Алгоритм Rijndael, винайдений Джоанною Дейемен (Joan Daemen) і Вінсентом Ріжменом (Vincent Rijmen), був обраний як стандарт. Згодом багато проектів планується перевести на AES із двох причин: він пропонує 128-бітовий розмір ключа і є федеральним стандартом.
  • RC2 [алгоритм шифрування на ключі змінної довжини Рона Рівеста (Ron Rivest); "RC" означає "Ron's Code" ("Код Рона"), хоча офіційно за ним значиться "Rivest Cipher" ("Шифр Рівеста"). Він пропонувався як заміна DES]. RC2 має 64-бітовий розмір блоку і працює в програмному забезпеченні приблизно вдвічі-втричі швидше, ніж DES.
  • Blowfish [створений Брюсом Шнайєром (Bruce Schneier) із компанії Counterpane Systems]. Це 64-бітовий блоковий шифр; ключ має змінну довжину (з максимальною довжиною 448 біт) та використовується для генерації декількох масивів підключів. Цей шифр був розроблений спеціально для 32-бітових машин та працює значно швидше, ніж DES.
  • Twofish [створений Брюсом Шнайєром (Bruce Schneier) із компанії Counterpane Systems]. Був фіналістом тендеру на AES, заснований на алгоритмі Шнайєра Blowfish. Це швидкий та універсальний шифр, що не вимагає великої кількості пам'яті. Проте структура шифру дуже складна і, отже, важко аналізувати.
  • >Encryption Algorithm , міжнародний алгоритм шифруванняданих, творці Хьюейжіа Лай (Xuejia Lai) та Джеймс Мессі (James Massey)]. Спочатку називався PES - Proposed Encryption Standard (Пропонований стандарт шифрування). Пізніше він був покращений і названий IPES, а потім перейменований >

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

  • RC4 (алгоритм шифрування на ключі змінної довжини, створений Роном Рівестом із RSA Security). Використовується для безпечних комунікацій так само, як відбувається шифрування трафіку на захищених веб-сайтах, які використовують протокол SSL. RC4 – шифр із розміром ключа до 2048 біт (256 байт).
  • SEAL [Software Efficient Algorithm, програмно-ефективний алгоритм, створений у 1993 р. Філом Рогевеєм (Phil Rogaway) та Доном Копперсмітом (Don Coppersmith) з IBM]. Цей алгоритм захищений патентом США 5,454,039. Шифр заснований на 32-бітових словах, шифрує зі швидкістю приблизно 4 цикли на байт і використовує для шифрування 160-бітовий ключ. Вважається дуже надійним.
  • WAKE [World Auto Key Encryption algorithm, всесвітній алгоритм шифрування на автоматичному ключі Девіда Дж. Веллера (Dav & gt;

Зауваження. Одна маленька цікава подробиця: RC1 ніколи не сходив далі за ноутбук Рівеста, а RC3 був зламаний в RSADSI ще на етапі розробки.