Баричев С. Криптографія без секретів
Від автораЦя книга - короткий вступ в криптографію. З одного боку, тут викладено матеріал, який відповідає на багато питань, які виникають у тих хто робить на ниві цієї науки першу крок, з іншого боку тут є той мінімум інформації, який достатній для того, щоб самостійно оцінювати будь-які реальні криптосистеми або навіть створювати свої власні. Мова книги робився по можливості доступним, але не звільняє Читача від необхідності володіння елементарними основами математики, зокрема алгебри та теорії груп і полів. Багато питань на жаль залишилися за обкладинками цієї книги. Зокрема після довгих сумнівів Автор вирішив відмовитися від розгляду DES, зважаючи на його крайній непрактичності і незлагідних на російському грунті 1 . Масу корисної інформації можна знайти на сервері ftp.rsa.com. У faq5.doc Ви якщо і не знайдете відповідь на будь-яке питання по криптографії, то спостерігається велика кількість посилань на інші джерела. Автор буде вдячний за будь-які зауваження і питання, які найпростіше направити за адресою: bar@glasnet.ru Баричев Сергій ВведенняПроблема захисту інформації шляхом її перетворення, що виключає її прочитання сторонньою особою хвилювала людський розум з давніх часів. Історія криптографії - ровесниця історії людської мови. Більше того, спочатку писемність сама по собі була криптографічного системою, так як у стародавніх суспільствах нею володіли лише обрані. Священні книги Стародавнього Єгипту, Стародавньої Індії тому приклади. З широким поширенням писемності криптографія стала формуватися як самостійна наука. Перші криптосистеми зустрічаються вже на початку нашої ери. Так, Цезар у своєму листуванні використовував вже більш менш систематичний шифр, який отримав його ім'я. Бурхливий розвиток криптографічні системи отримали в роки першої та другої світових воєн. Починаючи з повоєнного часу і по нинішній день поява обчислювальних засобів прискорило розробку і вдосконалення криптографічних методів. Чому проблема використання криптографічних методів у інформаційних системах (ІС) стала зараз особливо актуальна? З одного боку, розширилося використання комп'ютерних мереж, зокрема глобальної мережі Інтернет, по яких передаються великі обсяги інформації державного, військового, комерційного і приватного характеру, не допускає можливість доступу до неї сторонніх осіб. З іншого боку, поява нових потужних комп'ютерів, технологій мережевих і нейронних обчислень зробило можливим дискредитацію криптографічних систем ще недавно вважалися практично не розкриваємо. Проблемою захисту інформації шляхом її перетворення займається кріптологія (kr y p to s - таємний, lo g o s - наука). Криптологія поділяється на два напрямки - криптографію і криптоаналіз. Мета цих напрямків прямо протилежні. Криптографія займається пошуком і дослідженням математичних методів перетворення інформації. Сфера інтересів криптоаналізу - дослідження можливості розшифровування інформації без знання ключів. У цій книзі основна увага буде приділена криптографічним методам. Сучасна криптографія включає в себе чотири великих розділи:
Основні напрямки використання криптографічних методів - передача конфіденційної інформації з каналів зв'язку (наприклад, електронна пошта), встановлення автентичності переданих повідомлень, зберігання інформації (документів, баз даних) на носіях у зашифрованому вигляді. ТермінологіяОтже, криптографія дає можливість перетворити інформацію таким чином, що її прочитання (відновлення) можливе тільки при знанні ключа. У якості інформації, що підлягає шифрування і дешифрування, будуть розглядатися тексти, побудовані на деякому алфавіті. Під цими термінами розуміється наступне. Алфавіт - кінцеве безліч використовуваних для кодування інформації знаків. Текст - упорядкований набір з елементів алфавіту. В якості прикладів алфавітів, які в сучасних ІС можна навести такі:
Шифрування - перетворювальний процес: вихідний текст, що має також назву відкритого тексту, замінюється шифрованим текстом. Криптографічна система Дешифрування - зворотний шифруванню процес. На основі ключа шифрований текст перетвориться у вихідний. Ключ - інформація, необхідна для безперешкодного шифрування й дешифрування текстів. Криптографічна система являє собою сімейство T перетворень відкритого тексту. Члени цього сімейства індексуються, чи позначаються символом k; параметр k є ключем. Простір ключів K - це набір можливих значень ключа. Зазвичай ключ являє собою послідовний ряд букв алфавіту. Криптосистеми поділяються на симетричні й з відкритим ключем. У симетричних криптосистемах і для шифрування, і для дешифрування використовується один і той самий ключ. У системах з відкритим ключем використовуються два ключі - відкритий і закритий, які математично пов'язані один з одним. Інформація шифрується за допомогою відкритого ключа, що доступний усім бажаючим, а розшифровується за допомогою закритого ключа, відомого тільки одержувачу повідомлення. Терміни розподіл ключів і керування ключами відносяться до процесів системи обробки інформації, змістом яких є складання і розподіл ключів між користувачами. Електронній (цифровій) підписом називається приєднане до тексту його криптографічне перетворення, яке дозволяє при отриманні тексту іншим користувачем перевірити авторство і достовірність повідомлення. Криптостійкість називається характеристика шифру, що визначає його стійкість до дешифрування без знання ключа (тобто криптоаналізу). Є декілька показників криптостійкості, серед яких:
Перетворення T k визначається відповідним алгоритмом і значенням параметра k. Ефективність шифрування з метою захисту інформації залежить від збереження таємниці ключа і криптостійкості шифру. Вимоги до криптосистемамПроцес криптографічного закриття даних може здійснюватися як програмно, так і апаратно. Апаратна реалізація відрізняється істотно більшою вартістю, проте їй притаманні і переваги: висока продуктивність, простота, захищеність і т.д. Програмна реалізація більш практична, допускає відому гнучкість у використанні. Для сучасних криптографічних систем захисту інформації сформульовані наступні загальноприйняті вимоги:
Симетричні криптосистемиВсе різноманіття існуючих криптографічних методів можна звести до наступних класів перетворень: Симетричні криптосистеми Моно-і Многоалфавитная підстановки. Найбільш простий вид перетворень, що полягає в заміні символів вихідного тексту на інші (того ж алфавіту) за більш-менш складного правилом. Для забезпечення високої криптостійкості потрібне використання великих ключів. Перестановки. Також нескладний метод криптографічного перетворення. Використовується як правило в поєднанні з іншими методами. Гаммирование. Цей метод полягає в накладенні на вихідний текст деякої псевдовипадковою послідовності, що генерується на основі ключа. Блокові шифри. Представляють собою послідовність (із можливим повторенням і чергуванням) основних методів перетворення, застосовувану до блоку (частини) шіфруемого тексту. Блокові шифри на практиці зустрічаються частіше, ніж "чисті" перетворення того чи іншого класу в силу їх більш високої криптостійкості. Російський і американський стандарти шифрування засновані саме на цьому класі шифрів. ПерестановкиПерестановкою набору цілих чисел (0,1 ,..., N-1) називається його переупорядоченіе. Для того щоб показати, що ціле i переміщено з позиції i в позицію (i), де 0 (i) <n, будемо використовувати запис = ( (0), (1 ),..., (N-1)). Число перестановок з (0,1 ,..., N-1) одно n! = 1 * 2 *...*( N-1) * N. Введемо позначення для взаємно-однозначного відображення (гомоморфізму) набору S = {s 0, s 1, ..., s N-1}, що складається з n елементів, на себе. : S S : s i s (i), 0 i <n Будемо говорити, що в цьому сенсі є перестановкою елементів S. І, навпаки, автоморфізм S відповідає перестановці цілих чисел (0,1,2, .., n -1). Криптографічним перетворенням T для алфавіту Z m називається послідовність автоморфізмів: T = {T (n): 1 n <} T (n): Z m, n Z m, n, 1 n < Кожне T (n) є, таким чином, перестановкою n-грам з Z m, n. Оскільки T (i) і T (j) можуть бути визначені незалежно при i j, число криптографічних перетворень вихідного тексту розмірності n дорівнює (m n)! 2 . Воно зростає непропорційно при збільшенні m і n: так, при m = 33 та n = 2 число різних криптографічних перетворень одно 1089!. Звідси випливає, що потенційно існує велика кількість відображень вихідного тексту в шифрований. Практична реалізація криптографічних систем вимагає, щоб перетворення {T k: k K} були визначені алгоритмами, залежними від відносно невеликого числа параметрів (ключів). Системи підстановокВизначення Підстановкою на алфавіті Z m називається автоморфізм Z m, при якому літери початкового тексту t заміщені літерами шифрованого тексту (t): Z m Z m; : t (t). Набір всіх підстановок називається симетричною групою Z m і буде надалі позначатися як SYM (Z m). Затвердження SYM (Z m) c операцією твору є групою, тобто операцією, володіє наступними властивостями:
: t 1 ( 2 (t)).
( 1 2) 3 = 1 ( 2 3)
1 = 1 = i. Число можливих підстановок у симетричній групі Z m називається порядком SYM (Z m) і одно m! . Визначення. Ключем підстановки k для Z m називається послідовність елементів симетричної групи Z m: k = (p 0, p 1 ,..., p n -1 ,...), p n SYM (Z m), 0 n < Підстановка, обумовлена ключем k, є криптографічним перетворенням T k, за допомогою якого здійснюється перетворення n-грами вихідного тексту (x 0, x 1, .., x n-1) у n-граму шифрованого тексту (y 0, y 1, ..., y n-1): y i = p (x i), 0 i де n - довільне (n = 1,2 ,..). T k називається моноалфавитной підстановкою, якщо p незмінно при будь-якому i, i = 0,1 ,..., в іншому випадку T k називається Многоалфавитная підстановкою. Примітка. До найбільш істотних особливостей підстановки T k належать такі: 1. Вихідний текст шифрується посимвольно. Шифрування n-грами (x 0, x 1, .., x n-1) і її префікса (x 0, x 1, .., x s -1) зв'язані співвідношеннями T k (x 0, x 1, .., x n-1) = (y 0, y 1 ,..., y n-1) T k (x 0, x 1, .., x s -1) = (y 0, y 1 ,..., y s -1) 2. Буква шифрованого тексту y i є функцією тільки i-й компоненти ключа p i і i-й літери початкового тексту x i. Підстановка Цезаря є найпростішим варіантом підстановки. Вона належить до групи моноалфавитной підстановок. Визначення. Підмножина C m = {C k: 0 k C k: j (j + k) (mod m), 0 k <m, називається підстановкою Цезаря. Множення комутативними, C k C j = C j C k = C j + k, C 0 - ідентична підстановка, а зворотної до C до є C k -1 = C m-k, де 0 <k Підстановка визначається за таблицею заміщення, що містить пари відповідних букв "вихідний текст - шифрований текст". Для C 3 підстановки наведені у Табл. 1. Стрілка () означає, що літера в повідомленні (ліворуч) шифрується за допомогою C 3 в букву шифрованого тексту (праворуч). Визначення. Системою Цезаря називається моноалфавитной підстановка, перетворююча n-граму вихідного тексту (x 0, x 1, .., x n-1) у n граму шифрованого тексту (y 0, y 1 ,..., y n-1) відповідно до правила y i = C k (x i), 0 i Наприклад, ВИШЛІТЕ_НОВИЕ_УКАЗАНІЯ допомогою підстановки C 3 перетвориться в еюиолхіврсеюівцнгкгрлб. Таблиця 1. А р Й м Т х И ю Б д До н У ц Ь я У е Л про Ф год Е _ Г ж М п Х ш Ю а Д з Н р Ц щ Я б Е і Про з Ч ' _ в Ж ї П т Ш и З до Р у Щ ь І л З ф ' е. При своїй простоті система легко вразлива. Якщо зловмисник має 1) шифрований і відповідний вихідний текст або 2) шифрований текст обраного зловмисником вихідного тексту, то визначення ключа і дешифрування вихідного тексту тривіальними. Більш ефективні узагальнення підстановки Цезаря - шифр Хілла і шифр Плейфера. Вони засновані на підстановці не окремих символів, а 2-грам (шифр Плейфера) або n-грам 3 (шифр Хілла). При більш високій криптостійкості вони значно складніше для реалізації і вимагають досить великої кількості ключової інформації. Слабка крипостійкість моноалфавитной підстановок долається із застосуванням підстановок Многоалфавитная. Многоалфавитная підстановка визначається ключем = ( 1, Нехай {K i: 0 i P кл {(K 0, K 1, ..., K n-1) = (k 0, k 1, ..., k n-1)} = (1 / m) n Система одноразового використання перетворює вихідний текст X = (X 0, x 1, ..., x n-1) в шифрований текст Y = (Y 0, y 1, ..., y n-1) за допомогою підстановки Цезаря Y i = C K i (x i) = (K i + X i) (mod m) i = 0 ... n-1 (1) Для такої системи підстановки використовують також термін "одноразова стрічка" і "одноразовий блокнот". Простір ключів До системи одноразової підстановки є вектором рангів (K 0, K 1, ..., K n-1) і містить m n точок. Розглянемо невеликий приклад шифрування з нескінченним ключем. Як ключ приймемо текст "БЕСКОНЕЧНИЙ_КЛЮЧ ....". Зашифруємо з його допомогою текст "ШІФР_НЕРАСКРИВАЕМ". Шифрування оформимо в таблицю: |
Оригінальний текст неможливо відновити без ключа. Накладення білого шуму у вигляді нескінченного ключа на початковий текст змінює статистичні характеристики мови джерела. Системи одноразового використання теоретично не расшіфруеми 4 , так як не містять достатньої інформації для відновлення тексту. Чому ж ці системи незастосовні для забезпечення секретності при обробці інформації? Відповідь проста - вони непрактичні, оскільки вимагають незалежного вибору значення ключа для кожної літери початкового тексту. Хоча така вимога може бути і не занадто важким при передачі по прямому кабелю Москва - Нью-Йорк, але для інформаційних воно непосильно, оскільки там доведеться шифрувати багато мільйонів знаків. Подивимося, що вийде, якщо послабити вимога шифрувати кожну букву вихідного тексту окремим значенням ключа. Системи шифрування ВижинераПочнемо з кінцевої послідовності ключа k = (k 0, k 1 ,..., k n), яка називається ключем користувача, і продовжимо її до нескінченної послідовності, повторюючи ланцюжок. Таким чином, отримаємо робочий ключ k = (k 0, k 1 ,..., k n), k j = k (j mod r, 0 j <. Наприклад, при r = і ключі користувача 15 8 2 10 11 4 18 робочий ключ буде періодичною послідовністю: 15 8 2 10 11 4 18 15 8 2 10 11 4 18 15 8 2 10 11 4 18 ... Визначення. Підстановка Вижинера VI G k визначається як VI G k: (x 0, x 1, ..., x n-1) (y 0, y 1, ..., y n-1) = (x 0 + k, x 1 + k,. .., x n-1 + k). Таким чином: 1) вихідний текст x ділиться на r фрагментів x i = (x i, x i + r, ..., x i + r (n-1)), 0 i <r; 2) i-й фрагмент вихідного тексту x i шифрується за допомогою підстановки Цезаря C k: (X i, x i + r, ..., x i + r (n-1)) (y i, y i + r, ..., y i + r (n-1)), Варіант системи підстановок Вижинера при m = 2 називається системою Вернама (1917 р). У той час ключ k = (k 0, k 1 ,..., k к-1) записувався на паперовій стрічці. Кожна літера в повідомленні в алфавіті, розширеному деякими додатковими знаками, спочатку переводилася з використанням коду Бодо в пятібітовий символ. До початкового тексту Бодо додавався ключ (по модулю 2). Старовинний телетайп фірми AT & T зі зчитувальним пристроєм Вернама та обладнанням для шифрування, використовувався корпусом зв'язку армії США. Дуже поширена погана з точки зору секретності практика використовувати слово або фразу в якості ключа для того, щоб k = (k 0, k 1 ,..., k к-1) було легко запам'ятати. У ІВ для забезпечення безпеки інформації це неприпустимо. Для отримання ключів повинні використовуватися програмні або апаратні засоби випадкової генерації ключів. Приклад. Перетворення тексту за допомогою підстановки Вижинера (r = 4) Оригінальний текст (ІТ1): НЕ_СЛЕДУЕТ_ВЫБИРАТЬ_НЕСЛУЧАЙНЫЙ_КЛЮЧ Ключ: КЛЮЧ Розіб'ємо вихідний текст на блоки по 4 символу: НЕ_С Леду ЕТ_В ИБІР АТЬ_ НЕСЛИ УЧАЙ НИЙ_ КЛЮЧ і накладемо на них ключ (використовуючи таблицю Вижинера): H + К = Ч, Е + Л = Р і т.д. Отримуємо зашифрований (ЗТ1) текст: ЧРЕЗ ХРБЙ ПЕЕЩ ДМЕЖ КЕЩЦ ЧРОБ ЕБЮ_ ЧЕЖЦ ФЦИН Можна висунути та узагальнену систему Вижинера. ЇЇ можна сформулювати не тільки за допомогою підстановки Цезаря. Нехай x - підмножина симетричної групи SYM (Z m). Визначення. R-Многоалфавитная ключ шифрування є r-набір = ( 0, 1, ..., r -1) з елементами в x. Узагальнена система Вижинера перетворює вихідний текст (x 0, x 1 ,..., x n-1) у шифрований текст (y 0, y 1 ,..., y n-1) за допомогою ключа = ( 0, 1, ..., r -1) за правилом VI G k: (x 0, x 1 ,..., x n-1) (y 0, y 1 ,..., y n-1) = ( 0 (х 0), 1 (х 1), ..., n-1 (x n-1)), де використовується умова i = i mod r. Слід визнати, що і Многоалфавитная підстановки в принципі доступні криптоаналітичних дослідженню. Крипостійкість Многоалфавитная систем різко зменшується із зменшенням довжини ключа. Проте така система як шифр Вижинера допускає нескладну апаратну або програмну реалізацію і при досить великій довжині ключа може бути використаний в сучасних ІС. ГаммированиеГамування є також широко застосовуваним криптографічним перетворенням. Насправді межа між гаммированием і використанням нескінченних ключів і шифрів Вижинера, про які йшлося вище, дуже умовна. Принцип шифрування гаммированием полягає в генерації гами шифру за допомогою датчика псевдовипадкових чисел і накладення отриманої гами на відкриті дані оборотним чином (наприклад, використовуючи додавання по модулю 2). Процес дешифрування даних зводиться до повторної генерації гами шифру при відомому ключі і накладення такої гами на зашифровані дані. Отриманий зашифрований текст є досить важким для розкриття в тому випадку, якщо гамма шифру не містить повторюваних бітових послідовностей. По суті справи гамма шифру повинна змінюватися випадковим чином для кожного шіфруемого слова. Фактично ж, якщо період гами перевищує довжину всього зашифрованого тексту і невідома жодна частина вихідного тексту, то шифр можна розкрити тільки прямим перебором (пробою на ключ). Крипостійкість в цьому випадку визначається розміром ключа. Метод гамування стає безсилим, якщо зловмисникові стає відомий фрагмент вихідного тексту і відповідна йому шифрограма. Простим вирахуванням за модулем виходить відрізок ПСП і по ньому відновлюється вся послідовність. Зловмисники може зробити це на основі припущень про зміст вихідного тексту. Так, якщо більшість посилаються повідомлень починається зі слів "СОВ.СЕКРЕТНО", то криптоаналіз всього тексту значно полегшується. Це слід враховувати при створенні реальних систем інформаційної безпеки. Нижче розглядаються найбільш поширені методи генерації гам, які можуть бути використані на практиці. Датчики ПСЧЩоб отримати лінійні послідовності елементів гами, довжина яких перевищує розмір шифрованих даних, використовуються датчики ПСЧ. На основі теорії груп було розроблено декілька типів таких датчиків. Конгруентні датчикиВ даний час найбільш доступними і ефективними є конгруентні генератори ПСП. Для цього класу генераторів можна зробити математично строге висновок про те, якими властивостями володіють вихідні сигнали цих генераторів з точки зору періодичності та випадковості. Одним із добрих конгруентних генераторів є лінійний конгруентний датчик ПСЧ. Він виробляє послідовності псевдовипадкових чисел T (i), описувані співвідношенням T (i +1) = (A * T (i) + C) mod m, де А і С - константи, Т (0) - вихідна величина, вибрана в якості породжує числа. Очевидно, що ці три величини і утворюють ключ. Такий датчик ПСЧ генерує псевдовипадкові числа з певним періодом повторення, що залежать від вибраних значень А і С. Значення m зазвичай встановлюється рівним 2n, де n - довжина машинного слова в бітах. Датчик має максимальний період М до того, як генерується послідовність почне повторюватися. З причини, зазначеної раніше, необхідно вибирати числа А і С такі, щоб період М був максимальним. Як показано Д. Кнутом, лінійний конгруентний датчик ПСЧ має максимальну довжину М тоді і тільки тоді, коли С - непарне, і А mod 4 = 1. Для шифрування даних за допомогою датчика ПСЧ може бути обраний ключ будь-якого розміру. Наприклад, нехай ключ складається з набору чисел x (j) розмірністю b, де j = 1, 2, ..., n. Тоді створювану гаму шифру G можна представити як об'єднання непересічних множин H (j). Датчики М-послідовностей 5М-послідовності також популярні, завдяки відносній легкості їх реалізації. М-послідовності є лінійними рекурентні послідовності максимального періоду, що формуються k-розрядними генераторами на основі регістрів зсуву. На кожному такті надійшов біт зрушує k попередніх і до нього додається їх сума по модулю 2. Витісняється біт додається до гами. Строго це можна представити у вигляді наступних відносин: r 1: = r 0 r 2: = r 1 ... r k-1: = r k-2 r 0: = a 0 r 1 a 1 r 2 ... a k-2 r k-1 Г i: = r k- Тут r 0 r 1 ... r k-1 - K однобітних регістрів, a 0 a 1 ... a k-1 - коефіцієнти неприводимого двійкового полінома ступеня k-1. Г i - i-е значення вихідної гами. Період М-послідовності виходячи з її властивостей дорівнює 2 k -1. Іншою важливою властивістю М-послідовності є обсяг ансамблю, тобто кількість різних М-послідовностей для заданого k. Ця характеристика наведена в таблиці:
Очевидно, що такі обсяги ансамблів послідовності неприйнятні. Тому на практиці часто використовують послідовності Голда, що утворюються підсумовуванням декількох М-послідовностей. Обсяг ансамблів цих послідовностей на кілька порядків перевершують обсяги ансамблів породжують М-послідовностей. Так при k = 10 ансамбль збільшується від 1023 (М-послідовності) до 388000. Також перспективними представляються нелінійні датчики ПСП (наприклад зсувні регістри з елементом І в колі зворотного зв'язку), однак їх властивості ще недостатньо вивчені. Можливі й інші, більш складні варіанти вибору породжують чисел для гами шифру. Шифрування за допомогою датчика ПСЧ є досить поширеним криптографічним методом. Багато в чому якість шифру, побудованого на основі датчика ПСЧ, визначається не тільки і не стільки характеристиками датчика, скільки алгоритмом отримання гами. Один з фундаментальних принципів криптологических практики свідчить, навіть складні шифри можуть бути дуже чутливі до простих дій. Стандарт шифрування даних ГОСТ 28147-89 червняВажливим завданням у забезпеченні гарантованої безпеки інформації в ІС є розробка і використання стандартних алгоритмів шифрування даних. Першим серед подібних стандартів став американський DES, що представляє собою послідовне використання замін і перестановок. В даний час все частіше говорять про невиправдану складність і невисокою криптостійкості. На практиці доводиться використовувати його модифікації. Більш ефективним є вітчизняний стандарт шифрування даних. Він рекомендований до використання для захисту будь-яких даних, представлених у вигляді двійкового коду, хоча не виключаються й інші методи шифрування. Даний стандарт формувався з урахуванням світового досвіду, і зокрема, були прийняті до уваги недоліки і нереалізовані можливості алгоритму DES, тому використання стандарту ГОСТ переважно. Алгоритм досить складний і нижче буде описана в основному його концепція. Введемо асоціативну операцію конкатенації, використовуючи для неї мультипликативную запис. Крім того будемо використовувати наступні операції додавання:
Алгоритм криптографічного перетворення передбачає кілька режимів роботи. У всіх режимах використовується ключ W довжиною 256 біт, представлений у вигляді восьми 32-розрядних чисел x (i). W = X (7) X (6) X (5) X (4) X (3) X (2) X (1) X (0) Для дешифрування використовується той самий ключ, але процес дешифрування є інверсним по відношенню до вихідного. Найпростіший з можливих режимів - заміна. Нехай відкриті блоки розбиті на блоки по 64 біт у кожному, які позначимо як T (j). Чергова послідовність біт T (j) розділяється на дві послідовності B (0) і A (0) по 32 біта (правий і лівий блоки). Далі виконується ітеративний процес шифрування описуваний наступними формулами, вид який залежить від: i:
A (i) = f (A (i-1) [+] x (j)) B (i-1) B (i) = A (i-1)
A (i) = f (A (i-1) [+] x (j)) B (i-1) B (i) = A (i-1)
A (32) = A (31) B (32) = f (A (31) [+] x (0)) B (31). Тут i позначає номер ітерації. Функція f - функція шифрування. Функція шифрування включає дві операції над 32-розрядним аргументом. Перша операція є підстановкою K. Блок підстановки До складається з 8 вузлів заміни К (1) ... До (8) з пам'яттю 64 біта кожен. Вступник на блок підстановки 32-розрядний вектор розбивається на 8 послідовно що йдуть 4-розрядних вектора, кожен з який перетвориться в 4-розрядний вектор відповідним вузлом заміни, які представляють з себе таблицю з 16 цілих чисел у діапазоні 0 ... 15. Вхідний вектор визначає адресу рядки в таблиці, число з якої є вихідним вектором. Потім 4-розрядні вектори послідовно об'єднуються в 32-розрядний вихідний. Друга операція - циклічний зсув вліво 32-розрядного вектора, отриманого в результаті підстановки К. 64-розрядний блок зашифрованих даних Т представляється у вигляді Т = А (32) У (32). Решта блоки відкритих даних в режимі простої заміни зашифровуються аналогічно. Слід враховувати, що даний режим шифрування має обмеженою криптостійкість. Інший режим шифрування називається режимом гамування. Відкриті дані, розбиті на 64-розрядні блоки T (i) (i = 1,2 ,..., m) (M визначається обсягом шифрованих даних), зашифровуються в режимі гамування шляхом порозрядного складання по модулю 2 з гамою шифру Г ш, яка виробляється блоками по 64 біт, тобто Г ш = (Г (1), Г (2 ),...., Г (m)). Рівняння шифрування даних в режимі гамування може бути представлене в наступному вигляді: Ш (i) = A (Y (i-1) C2, Z (i-1)) {+} C (1) T (i) = Г (i) T (i) У цьому рівнянні Ш (i) позначає 64-розрядний блок зашифрованого тексту, А - функцію шифрування в режимі простої заміни (аргументами цієї функції є два 32-розрядних числа). С1 і С2 - константи, задані в ГОСТ 28147-89. Величини y (i) і Z (i) визначаються ітераційно по мірі формування гами наступним чином: (Y (0), Z (0)) = A (S), S - 64-розрядна двійкова послідовність (Y (i), Z (i)) = (Y (i-1) [+] C2, Z (i-1) {+} C (1)), i = 1, 2, ..., m . 64-розрядна послідовність, звана сінхропосилку, не є секретним елементом шифру, але її наявність необхідна як на передавальній стороні, так і на приймальній. Режим гамування зі зворотним зв'язком дуже схожий на режим гамування. Як і в режимі гамування відкриті дані, розбиті на 64-розрядні блоки T (i), зашифровуються шляхом порозрядного складання по модулю 2 з гамою шифру Г ш, яка виробляється блоками по 64 біт: Г ш = (Г (1), Г (2), ..., Г (m)). Рівняння шифрування даних в режимі гамування зі зворотним зв'язком виглядають наступним чином: Ш (1) = A (S) T (1) = Г (1) T (1), Ш (i) = A (Ш (i-1) T (i) = Г (i) T (i), i = 2, 3, ..., m. У ГОСТ 28147-89 визначається процес вироблення імітовставки, який единообразен для всіх режимів шифрування. Имитовставка - це блок з р біт (имитовставка І р), який виробляється або перед шифруванням усього повідомлення. або паралельно із шифруванням по блоках. Параметр р вибирається у відповідності з необхідним рівнем імітозащіщенності. Для отримання імітовставки відкриті дані представляються також у вигляді блоків по 64 біт. Перший блок відкритих даних Т (1) піддається перетворенню, що відповідає першим 16 циклам алгоритму режиму простої заміни. Причому в якості ключа використовується той же ключ, що і для шифрування даних. Отримане 64-розрядно число підсумовується з відкритим блоком Т (2) і сума знову піддається 16 циклам шифрування для режиму простої заміни. Дана процедура повторяться для всіх m блоків повідомлення. З отриманого 64-розрядного числа вибирається відрізок І р довжиною р біт. Имитовставка передається по каналу зв'язку після зашифрованих даних. На приймальному боці аналогічним чином із прийнятого повідомлення виділяється? имитовставка і порівнюється з отриманою звідки?. У разі розбіжності имитовставок повідомлення вважається помилковим. Системи з відкритим ключемЯк би не були складні і надійні криптографічні системи - їх слабке місць при практичній реалізації - проблема розподілу ключів. Для того, щоб був можливий обмін конфіденційною інформацією між двома суб'єктами ІВ, ключ повинен бути згенерований одним з них, а потім якимось чином знову ж таки у конфіденційному порядку переданий іншому. Тобто в загальному випадку для передачі ключа знову ж таки потрібно використання якийсь криптосистеми. Для вирішення цієї проблеми на основі результатів, отриманих класичної та сучасної алгеброю, були запропоновані системи з відкритим ключем. Суть їх полягає в тому, що кожним адресатом ІС генеруються два ключі, зв'язані між собою за певним правилом. Один ключ оголошується відкритим, а інший закритим. Відкритий ключ публікується і доступний кожному, хто бажає послати повідомлення адресату. Секретний ключ зберігається в таємниці. Вихідний текст шифрується відкритим ключем адресата і передається йому. Зашифрований текст у принципі не може бути розшифрований тим же відкритим ключем. Дешифрування повідомлення можливе тільки з використанням закритого ключа, який відомий тільки самому адресату. Система з відкритим ключем Система з відкритим ключем |
Теорема 2. Якщо n = pq, (p і q - відмінні один від одного прості числа), то (n) = (p -1) (q -1). Теорема 3. Якщо n = pq, (p і q - відмінні один від одного прості числа) та х - просте відносно р і q, то x (n) = 1 (mod n). Слідство. Якщо n = pq, (p і q - відмінні один від одного прості числа) і е просте відносно (n), то відображення Е e, n: x x e (mod n) є взаємно однозначним на Z n. Очевидним є і той факт, що якщо ті - просте відносно (n), то існує ціле d, таке, що ed = 1 (mod (n)) (3) На цих математичних фактах і заснований популярний алгоритм RSA. Нехай n = pq, де p і q - різні прості числа. Якщо e і d задовольняють рівнянню (8.2.3), то відображення Е e, n і Е d, n є інверсіями на Z n. Як Е e, n, так і Е d, n легко розраховуються, коли відомі e, d, p, q. Якщо відомі e і n, але p і q невідомі, то Е e, n представляє собою односторонню функцію; знаходження Е d, n по заданому n рівносильно розкладанню n. Якщо p і q - досить великі прості, то розкладання n практично не можливо. Це і закладено в основу системи шифрування RSA. Користувач i вибирає пару різних простих p i і q i і розраховує пару цілих (e i, d i), які є простими щодо (n i), де n i = p i q i. Довідкова таблиця містить публічні ключі {(e i, n i)}. Припустимо, що вихідний текст x = (x 0, x 1, ..., x n-1), x Z n, 0 i <n, спочатку представлений по підставі n i: N = c 0 + c i n i +.... Користувач i зашифровує текст при передачі його користувачеві j, застосовуючи до n відображення Ed i, n i: N Ed i, n i n = n '. Користувач j робить дешифрування n ', застосовуючи Ee i, n i: N ' Ee i, n i n' = Ee i, n i Ed i, n i n = n. Очевидно, для того щоб знайти інверсію Ed i, n i по відношенню до Ee i, n i, потрібно знання множників n = p i q i. Час виконання найкращих з відомих алгоритмів розкладання при n = 10 100 на сьогоднішній день виходить за межі сучасних технологічних можливостей. Розглянемо невеликий приклад, який ілюструє застосування алгоритму RSA. Приклад Зашифруємо повідомлення "САВ". Для простоти будемо використовувати маленькі числа (на практиці застосовуються набагато більші).
ШТ1 = (3 7) (mod 33) = 2187 (mod 33) = 9, ШТ2 = (1 7) (mod 33) = 1 (mod 33) = 1, ШТ3 = (2 7) (mod 33) = 128 (mod 33) = 29.
ІТ1 = (9 3) (mod 33) = 729 (mod 33) = 3, ІТ2 = (1 3) (mod 33) = 1 (mod 33) = 1, ІТ3 = (29 3) (mod 33) = 24 389 (mod 33) = 2. Отже, в реальних системах алгоритм RSA реалізується наступним чином: кожен користувач вибирає два великих простих числа, і відповідно до описаного вище алгоритмом вибирає два простих числа e і d. Як результат множення перших двох чисел (p і q) встановлюється n. {E, n} утворює відкритий ключ, а {d, n} - закритий (хоча можна взяти і навпаки). Відкритий ключ публікується і доступний кожному, хто бажає послати власнику ключа повідомлення, яке зашифровується зазначеним алгоритмом. Після шифрування, повідомлення неможливо розкрити за допомогою відкритого ключа. Власник же закритого ключа без праці може розшифрувати прийняте повідомлення. Практична реалізація RSAВ даний час алгоритм RSA активно реалізується як у вигляді самостійних криптографічних продуктів 8 , так і в якості вбудованих засобів в популярних додатках 9 . Важлива проблема практичної реалізації - генерація великих простих чисел. Рішення задачі «в лоб» - генерація випадкового великого числа n (Непарного) і перевірка його подільності на множники від 3 аж до n 0.5. У разі неуспіху слід узяти n +2 і так далі. 10 У принципі в якості p і q можна використовувати «майже» прості числа, тобто числа для яких ймовірність того, що вони прості, прагне до 1. Але у випадку, якщо використано складене число, а не просте, крипостійкість RSA падає. Є непогані алгоритми, які дозволяють генерувати «майже» прості числа з рівнем довіри два -100. Інша проблема - ключі якої довжини слід використовувати? Для практичної реалізації алгоритмів RSA корисно знати оцінки трудомісткості розкладання простих чисел різної довжини, зроблені Шроппелем.
В кінці 1995 року вдалося практично реалізувати розкриття шифру RSA для 500-значного ключа. Для цього за допомогою мережі Інтернет було задіяно 1600 комп'ютерів. Самі автори RSA рекомендують використовувати такі розміри модуля n:
Третій важливий аспект реалізації RSA - обчислювальний. Адже доводиться використовувати апарат довгої арифметики. Якщо використовується ключ завдовжки k біт, то для операцій по відкритому ключу потрібен Про (k 2) операцій, по закритому ключу - Про (k 3) операцій, а для генерації нових ключів потрібно О (k 4) операцій. Криптографічний пакет BSAFE 3.0 (RSA DS) на комп'ютері Pentium-90 здійснює шифрування із швидкістю 21.6 Кбит / c для 512-бітового ключа і із швидкістю 7.4 Кбит / c для 1024 бітного. Сама «швидка» апаратна реалізація забезпечує швидкості в 60 разів більше. У порівнянні з тим же алгоритмом DES, RSA вимагає в тисячі і десятки тисяч разів більший час. Криптосистема Ель-ГамаляДана система є альтернативою RSA і при рівному значенні ключа забезпечує ту ж крипостійкість 12 . На відміну від RSA метод Ель-Гамаля заснований на проблемі дискретного логарифма. Цим він схожий на алгоритм Діффі-Хелмана. Якщо зводити число до степеня в кінцевому полі досить легко, то відновити аргумент за значенням (тобто знайти логарифм) досить важко. Основу системи складають параметри p і g - числа, перше з яких - просте, а друге - ціле. Олександр генерує секретний ключ а й обчислює відкритий ключ y = g а mod p. Якщо Борис хоче послати Олександру повідомлення m, то він вибирає випадкове число k, менше p і обчислює y 1 = G k mod p і y 2 = M y k, де означає побітове додавання за модулем 2. Потім Борис посилає (y 1, y 2) Олександру. Олександр, отримавши зашифроване повідомлення, відновлює його: m = (y 1 a mod p) y 2. Алгоритм цифрового підпису DSA, розроблений NIST (National In s titute of Standa r d and Technolo g y) і є частиною стандарту DSS частково спирається на розглянутий метод. Криптосистеми на основі еліптичних рівняньЕліптичні криві - математичний об'єкт, який може визначений над будь-яким полем (кінцевим, дійсним, раціональним або комплексним). У криптографії звичайно використовуються кінцеві поля. Еліптична крива є безліч точок (X, y), що задовольнить наступному рівнянню: y 2 = x 3 + ax + b, а також нескінченно віддалена точка. Для точок на кривій досить легко вводиться операція додавання, яка відіграє ту ж роль, що й операція множення в криптосистемах RSA і Ель-Гамаля. У реальних криптосистемах на базі еліптичних рівнянь використовується рівняння y 2 = x 3 + ax + b mod p, де р - просте. Проблема дискретного логарифма на еліптичній кривій полягає в наступному: дана точка G на еліптичній кривій порядку r (кількість точок на кривій) і інша точка Y на цій же кривій. Потрібно знайти єдину точку x таку, що Y = x G, тобто Y є х-я ступінь G. Електронний підписУ чому полягає проблема аутентифікації даних? Наприкінці звичайного листа або документа виконавець чи відповідальна особа зазвичай ставить свій підпис. Подібна дія зазвичай переслідує дві мети. По-перше, одержувач має можливість переконатися в істинності листа, звіривши підпис з наявним у нього зразком. По-друге, особистий підпис є юридичним гарантом авторства документа. Останній аспект особливо важливий при укладанні різного роду торговельних угод, складанні довіреностей, зобов'язань і т.д. Якщо підробити підпис людини на папері вельми непросто, а встановити авторство підпису сучасними криміналістичними методами - технічна деталь, то з підписом електронної справа йде інакше. Підробити ланцюжок бітів, просто її скопіювавши, або непомітно внести нелегальні виправлення в документ зможе будь-який користувач. З широким розповсюдженням в сучасному світі електронних форм документів (у тому числі і конфіденційних) і засобів їх обробки особливо актуальною стала проблема встановлення автентичності й авторства безпаперовій документації. У розділі криптографічних систем з відкритим ключем було показано, що при всіх перевагах сучасних систем шифрування вони не дозволяють забезпечити аутентифікацію даних. Тому кошти аутентифікації повинні використовуватися в комплексі і криптографічними алгоритмами. Отже, нехай є два користувачі Олександр і Борис. Від яких порушень та дій зловмисника повинна захищати система аутентифікації. Відмова (ренегатство). Олександр заявляє, що він не посилав повідомлення Борису, хоча насправді він все-таки посилав. Для виключення цього порушення використовується електронна (або цифрова) підпис. Модифікація (переробка). Борис змінює повідомлення і стверджує, що дане (змінене) повідомлення послав йому Олександр. Підробка. Борис формує повідомлення і стверджує, що дане (змінене) повідомлення послав йому Олександр. Активний перехоплення. Володимир перехоплює повідомлення між Олександром і Борисом з метою їх прихованою модифікації. Для захисту від модифікації, підробки і маскування використовуються цифрові сигнатури. Маскування (імітація). Володимир посилає Борису повідомлення від імені Олександра. У цьому випадку для захисту також використовується електронний підпис. Потім. Володимир повторює раніше передане повідомлення, яке Олександра посилав раніше Борису. Незважаючи на те, що вживаються всі необхідні заходи захисту від повторів, саме на цей метод припадає більшість випадків незаконного зняття і витрати грошей в системах електронних платежів. Найбільш дієвим методом захисту від повтору є
|
Можливі порушення захисту повідомлень,. посилаються користувачем А користувачу В.
Електронний підпис на основі алгоритму RSA
Найбільш простим і розповсюдженим інструментом електронного підпису є вже знайомий алгоритм RSA. Нижче воно буде розглянута в якості прикладу. Крім цього існують ще десятки інших схем цифрового підпису.
Припустимо, що
d, p, q - секретні, а е, n = pq - відкриті.
Зауваження.
1. Розкладання по n дає: (n) = (p-1) (q-1); знаючи (n) і e, можна знайти d.
2. З e і d можна знайти кратність (n); кратність (n) дозволяє визначити дільники n.
Нехай DATA - передане Олександром Борису повідомлення.
Олександр підписує DATA для Бориса при передачі:
Ee B, n B { Ed A, n A {DATA}}.
При цьому він використовує:
закритий ключ Ed A, n A Олександра,
відкритий ключ Ee B, n B Бориса.
Борис може читати це підписане повідомлення спочатку за допомогою закритого ключа Ed В, n У Бориса з метою отримання
Ed A, n A {DATA} = Ed B, n B {Ee B, n B {Ed A, n A {DATA}}}
і потім - відкритого ключа Ee A, n A Олександра для отримання
DATA = Ee A, n A {Ed A, n A {DATA}}.
Таким чином, у Бориса з'являється повідомлення DATA, надіслане йому Олександром.
Очевидно, що дана схема дозволяє захиститися від декількох видів порушень.
Олександр не може відмовитися від свого повідомлення, якщо він визнає, що секретний ключ відомий тільки йому.
Порушник без знання секретного ключа не може ні сформувати, ні зробити осмислене зміна повідомлення, що передається по лінії зв'язку.
Дана схема дозволяє при вирішенні багатьох конфліктних ситуацій обходитися без посередників.
Іноді немає необхідності зашифровувати передане повідомлення, але потрібно його скріпити електронним підписом. У цьому випадку текст шифрується закритим ключем відправника і отримана ланцюжок символів прикріплюється до документа. Одержувач за допомогою відкритого ключа відправника розшифровує підпис і звіряє її з текстом.
Оригінальний текст
Оригінальний текст
Оригінальний текст
Підпис
Вихідний текст '
У 1991 р. Національний інститут стандартів і технології (NIST) запропонував для з'явився тоді алгоритму цифрового підпису DSA (Di g ital Si g natu r e Al g o r ithm) стандарт DSS (Di g ital Si g natu r e Standa r d), в основу якого покладені алгоритми Ель-Гамаля і RSA. 13
Цифрова сигнатура
Часто виникають ситуації, коли одержувач повинен вміти довести достовірність повідомлення зовнішньому особі. Щоб мати таку можливість, до переданих повідомленнями повинні бути приписані так звані цифрові сигнатури.
Цифрова сигнатура - це рядок символів, що залежить як від ідентифікатора відправника, так і змісту повідомлення.
повідомлення
сигнатура
Цифрова сигнатура
Ніхто при цьому крім користувача А не може обчислити цифрову сигнатуру А для конкретного повідомлення. Ніхто, навіть сам користувач не може змінити посланого повідомлення так, щоб сигнатура залишилася незмінною. Хоча одержувач повинен мати можливість перевірити чи є цифрова сигнатура повідомлення справжньою. Щоб перевірити цифровий сигнатуру, користувач В повинен представити посереднику З інформацію, яку він сам використовував для верифікації сигнатури.
Якщо позначене сигнатурою повідомлення передається безпосередньо від відправника до одержувача, минаючи проміжну ланку, то в цьому випадку йде мова про дійсну цифровий сигнатурі.
Розглянемо типову схему цифрової сигнатури.
Нехай Е - функція симетричного шифрування і f - функція відображення деякого безлічі повідомлень на підмножину потужності р з послідовності {1, ..., n}.
Наприклад р = 3 і n = 9. Якщо m - повідомлення, то в якості f можна взяти функцію f (m) = {2, 5, 7}.
Для кожного повідомлення користувач А вибирає деякий безліч ключів K = [K 1, ..., K n} і параметрів V = {v 1, ..., v n} для використання в якості позначок повідомлення, яке буде надіслано В. Множини V і V '= {E (v 1, K 1) ..., E (v n, K n)} надсилаються користувачеві В і заздалегідь обраному посереднику С.
Нехай m - повідомлення і idm - об'єднання ідентифікаційних номерів відправника, одержувача і номер повідомлення. Якщо f ({idm, m}), то цифрова сигнатура m є безліч K '= [K i, ..., K j}. Повідомлення m, ідентифікаційний номер idm і цифрова сигнатура К 'надсилаються В.
V, V '
повідомлення, K '
V, V '
Одержувач У перевіряє сигнатуру наступним чином. Він обчислює функцію f ({idm, m}) і перевіряє її рівність К '. Потім він перевіряє, що підмножина {v i, ..., v j} правильно зашифроване у вигляді підмножини {E (v i, K i) ..., E (v j, K j)} безлічі V '.
У конфліктній ситуації У посилає З повідомлення m, ідентифікаційний номер idm і безліч ключів K ', яке В оголошує сигнатурою m. Тоді посередник З так само, як і В, буде здатний перевірити сигнатуру. Імовірність розкриття двох повідомлень з одним і тим же значенням функції f повинна бути дуже мала. Щоб гарантувати це, число n має бути достатньо великим, а число р повинно бути більше 1, але менше n.
Ряд недоліків цієї моделі очевидний:
повинно бути третя особа - посередник, якому довіряють як отримувач, так і відправник;
одержувач, відправник і посередник повинні обмінятися істотним обсягом інформації, перш ніж буде передано реальне повідомлення;
передача цієї інформації повинна здійснюватися в закритому вигляді;
ця інформація використовується вкрай неефективно, оскільки безлічі K, V, V 'використовуються тільки один раз.
Проте навіть така схема цифрової сигнатури може використовуватися в інформаційних системах, в яких необхідно забезпечити аутентифікацію та захист переданих повідомлень.
Хеш-функції
Використання цифрової сигнатури припускає використання деяких функцій шифрування:
S = H (k, T),
де S - сигнатура, k - ключ, T - вихідний текст.
Функція H (k, T) - є хеш-функцією, якщо вона задовольняє таким умовам:
вихідний текст може бути довільної довжини;
саме значення H (k, T) має фіксовану довжину;
значення функції H (k, T) легко обчислюється для будь-якого аргументу;
відновити аргумент за значенням з обчислювальної точки зору - практично неможливо;
функція H (k, T) - однозначна 14 .
З визначення випливає, що для будь-хеш-функції є тексти-близнюки - що мають однакове значення хеш-функції, тому що потужність безлічі аргументів необмежено більше потужності множини значень. Такий факт отримав назву «ефект дня народження». 15
Найбільш відомі з хеш-функцій - MD2, MD4, MD5 і SHA.
Три алгоритми серії MD розроблені Рівестом в 1989-му, 90-м і 91-му році відповідно. Всі вони перетворять текст довільної довжини в 128-бітну сигнатуру.
Алгоритм MD2 передбачає:
доповнення тексту до довжини, кратної 128 бітам;
обчислення 16-бітної контрольної суми (старші розряди відкидаються);
додавання контрольної суми до тексту;
повторне обчислення контрольної суми.
Алгоритм MD4 передбачає:
доповнення тексту до довжини, що дорівнює 448 біт за модулем 512;
додається довжина тексту в 64-бітному поданні;
512-бітні блоки піддаються процедурі Damgard-Merkle 16 , причому кожен блок бере участь в трьох різних циклах.
В алгоритмі MD4 досить швидко було знайдено «дірки», тому він був замінений алгоритмом MD5, в якому кожен блок бере участь не в трьох, а в чотирьох різних циклах.
Алгоритм SHA (Secure Hash Algorithm) розроблений NIST (National In s titute of Standa r d and Technolo g y) і повторює ідеї серії MD. У SHA використовуються тексти більше 2 64 біт, які закриваються сигнатурою довжиною 160 біт. Даний алгоритм передбачається використовувати в програмі Capstone 17 .
Управління ключами
Крім вибору підходящої для конкретної ІС криптографічного системи, важлива проблема - управління ключами. Як би не була складна і надійна сама криптосистема, вона заснована на використанні ключів. Якщо для забезпечення конфіденційного обміну інформацією між двома користувачами процес обміну ключами тривіальний, то в ІС, де кількість користувачів складає десятки і сотні управління ключами - серйозна проблема.
Під ключовою інформацією розуміється сукупність всіх діючих в ІС ключів. Якщо не забезпечено досить надійне управління ключовою інформацією, то заволодівши нею, зловмисник отримує необмежений доступ до всієї інформації.
Управління ключами - інформаційний процес, що включає в себе три елементи:
генерацію ключів;
накопичення ключів;
розподіл ключів.
Розглянемо, як вони повинні бути реалізовані для того, щоб забезпечити безпеку ключової інформації в ІС.
Генерація ключів
На самому початку розмови про криптографічних методах було сказано, що не варто використовувати невипадкові ключі з метою легкості їх запам'ятовування. У серйозних ІС використовуються спеціальні апаратні і програмні методи генерації випадкових ключів. Як правило використовують датчики ПСЧ. Однак ступінь випадковості їх генерації повинна бути достатньо високим. Ідеальним генераторами є пристрої на основі "натуральних" випадкових процесів. Наприклад, з'явилися серійні зразки генерації ключів на основі білого радіошумів. Іншим випадковим математичним об'єктом є десяткові знаки ірраціональних чисел, наприклад або е, які обчислюються за допомогою стандартних математичних методів.
У ІВ з середніми вимогами захищеності цілком прийнятні програмні генератори ключів, які обчислюють ПСЧ як складну функцію від поточного часу і (або) числа, введеного користувачем.
Накопичення ключів
Під накопиченням ключів розуміється організація їх зберігання, обліку та видалення.
Оскільки ключ є найпривабливішим для зловмисника об'єктом, відкриває йому шлях до конфіденційної інформації, то питанням накопичення ключів слід приділяти особливу увагу.
Секретні ключі ніколи не повинні записуватися в явному вигляді на носії, який може бути лічений або скопійований.
У досить складною ІС один користувач може працювати з великим об'ємом ключової інформації, і іноді навіть виникає необхідність організації міні-баз даних за ключовою інформації. Такі бази даних відповідають за приймання, зберігання, облік і видалення використовуваних ключів.
Отже, кожна інформація про використовувані ключах повинна зберігатися в зашифрованому вигляді. Ключі, зашифровують ключову інформацію називаються майстер-ключами. Бажано, щоб майстер-ключі кожен користувач знав напам'ять, і не зберігав їх взагалі на будь-яких матеріальних носіях.
Дуже важливою умовою безпеки інформації є періодичне оновлення ключової інформації в ІС. При цьому перепризначатися повинні як звичайні ключі, так і майстер-ключі. В особливо відповідальних ІС оновлення ключової інформації бажано робити щодня.
Питання оновлення ключової інформації пов'язаний і з третім елементом управління ключами - розподілом ключів.
Розподіл ключів
Розподіл ключів - найвідповідальніший процес в управлінні ключами. До нього пред'являються дві вимоги:
Оперативність і точність розподілу
Скритність розподіляються ключів.
Останнім часом помітний зсув у бік використання криптосистем з відкритим ключем, у яких проблема розподілу ключів відпадає. Тим не менш розподіл ключової інформації в ІС вимагає нових ефективних рішень.
Розподіл ключів між користувачами реалізуються двома різними підходами:
1. Шляхом створення одного чи кількох центрів розподілу ключів. Недолік такого підходу полягає в тому, що в центрі розподілу відомо, кому і які ключі призначені і це дозволяє читати всі повідомлення, циркулюючі в ІС. Можливі зловживання істотно впливають на захист.
2. Прямий обмін ключами між користувачами інформаційної системи. У цьому випадку проблема полягає в тому, щоб надійно засвідчити справжність суб'єктів.
В обох випадках повинна бути гарантована справжність сеансу зв'язку. Це можна забезпечити двома способами:
1. Механізм запиту-відповіді, який полягає в наступному. Якщо користувач А бажає бути впевненим, що повідомлення який він отримує від В, не є помилковими, він включає в повідомлення для У повідомлення непередбачуваний елемент (запит). При відповіді користувач В повинен виконати деяку операцію над цим елементом (наприклад, додати 1). Це неможливо здійснити заздалегідь, так як не відомо, яке випадкове число прийде в запиті. Після отримання відповіді з результатами дій користувач А може бути впевнений, що сеанс є справжнім. Недоліком цього методу є можливість встановлення хоча і складної закономірності між запитом і відповіддю.
2. Механізм позначки часу ("тимчасової штемпель"). Він має на увазі фіксацію часу для кожного повідомлення. У цьому випадку кожен користувач ІС може знати, наскільки "старим" є прийшло повідомлення.
В обох випадках слід використовувати шифрування, щоб бути впевненим, що відповідь посланий не зловмисником і штемпель позначки часу не змінено.
При використанні відміток часу постає проблема допустимого тимчасового інтервалу затримки для підтвердження автентичності сеансу. Адже повідомлення з "тимчасовим штемпелем" в принципі не може бути передано миттєво. Крім цього комп'ютерні годинник одержувача і відправника не можуть бути абсолютно синхронізовані. Яке запізнювання "штемпеля" вважати підозрілим.
Тому в реальних ІВ, наприклад в системах оплати кредитних карток використовується саме другий механізм встановлення автентичності та захисту від підробок. Використовуваний інтервал становить від однієї до кількох хвилин. Велика кількість відомих способів крадіжки електронних грошей, засноване на "вклинюванні" у цей проміжок з підробленими запитами на зняття грошей.
Для обміну ключами можна використовувати криптосистеми з відкритим ключем, використовуючи той же алгоритм RSA.
Але досить ефективним виявився алгоритм Діффі-Хелмана, що дозволяє двом користувачам без посередників обмінятися ключем, який може бути використаний потім для симетричного шифрування.
Алгоритм Діффі-Хеллмана
Діффі і Хелман запропонували для створення криптографічних систем з відкритим ключем функцію дискретного піднесення до степеня.
Незворотність перетворення в цьому випадку забезпечується тим, що досить легко обчислити показову функцію в кінцевому полі Галуа складається з p елементів. (P - або просте число, або просте в будь-якого ступеня). Обчислення ж логарифмів в таких полях - значно більш трудомістка операція.
Якщо y = x,, 1 <x <p -1, де - фіксований елемент поля GF (p), то x = lo g y над GF (p). Маючи x, легко обчислити y. Для цього буде потрібно 2 ln (x + y) операцій множення.
Зворотній задача обчислення x з y буде досить складною. Якщо p вибрано досить правильно, то витяг логарифма зажадає обчислень, пропорційних
L (p) = exp {(ln p ln ln p) 0.5}
Для обміну інформацією перший користувач вибирає випадкове число x 1, равновероятно з цілих 1 ... p -1. Це число він тримає в секреті, а іншому користувачеві посилає число
y 1 = x mod p
Аналогічно надходить і другий користувач, генеруючи x 2 і обчисливши y 2, відправляючи його першому користувачу. У результаті цього вони можуть обчислювати k 12 = x 1 x 2 mod p.
Для того, щоб обчислити k 12, перший користувач зводить y 2 у ступінь x 1. Те ж робить і другий користувач. Таким чином, в обох користувачів виявляється загальний ключ k 12, який можна використовувати для шифрування інформації звичайними алгоритмами. На відміну від алгоритму RSA, даний алгоритм не дозволяє шифрувати власне інформацію.
Не знаючи x 1 і x 2, зловмисник може спробувати вирахувати k 12, знаючи тільки перехоплені y 1 і y 2. Еквівалентність цієї проблеми проблему обчислення дискретного логарифма є головний і відкрите питання в системах з відкритим ключем. Простого рішення до теперішнього часу не знайдено. Так, якщо для прямого перетворення 1000-бітних простих чисел потрібно 2000 операцій, то для зворотного перетворення (обчислення логарифма в полі Галуа) - буде потрібно близько 10 30 операцій.
Як видно, при всій простоті алгоритму Діффі-Хелмана, другим його недоліком у порівнянні з системою RSA є відсутність гарантованої нижньої оцінки трудомісткості розкриття ключа.
Крім того, хоча описаний алгоритм дозволяє обійти проблему прихованої передачі ключа, необхідність аутентифікації залишається. Без додаткових коштів, один з користувачів не може бути впевнений, що він обмінявся ключами саме з тим користувачем, який йому потрібен. Небезпека імітації у цьому випадку залишається.
|