Шифрування даних СУБД

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

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

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

Приклад Нехай в якості відкритого тексту дана наступна рядок

AS KINGFISHERS CATCH FIRE

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

ELIOT

Нижче опісива7ется використовуваний алгоритм шифрування

1 Розбийте відкритий текст на блоки, довжина яких дорівнює довжині ключа шифрування

AS+KI NGFIS HERS+ CATCH +FIRE

(Тут прогалини позначені знаком +.)

2 Замініть кожен символ відкритого тексту цілим числом в діапазоні 00-26, використовуючи для пробілу число 00, для А – число 01, .., для Z – число 26 В результаті вийде наступна рядок цифр

0119001109 1407060919 0805181900 0301200308 0006091805

3 Повторіть п 2 для ключа шифрування, в результаті чого вийде наступна рядок цифр

0512091520

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

5 Замініть кожне число в нижньому рядку п 4 відповідним текстовим символом

FDIZB SSOXL MQ+GT HMBRA ERRFY

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

Стандарт шифрування даних

Наведений вище приклад заснований на використанні процедури підстановки: ключ шифрування застосовувався для того, щоб визначити, який символ зашифрованого тексту слід підставити замість даного символу відкритого тексту Підстановка – один з двох основних традиційно використовуваних методів шифрування, причому в якості другого виступає процедура перестановки, коли символи відкритого тексту просто переставляються в деякій іншій послідовності Жоден з цих способів не є безпечним сам по собі, але алгоритми, побудовані на основі їх комбінації, здатні забезпечити досить високий ступінь безпеки Одним з таких алгоритмів є Data Encryption Standard (DES), розроблений фірмою IBM і прийнятий в 1977 році в якості Федерального стандарту шифрування даних США [1720]

Згідно з цим стандартом, відкритий текст ділиться на блоки по 64 біта і кожен блок шифрується за допомогою 64-бітового ключа (насправді цей ключ складається з 56 бітів даних і 8 бітів парності, так що існує не 264, а лише 256 можливих ключів) Спочатку блок шифрується шляхом перестановки, потім переставлені дані блоку піддаються обробці за допомогою підстановки, що включає 16 послідовних складних кроків, після цього до даних ще раз застосовується зворотна початковій процедура перестановки, яка і призводить до отримання остаточного результату

шифрування Підстановка на i-му кроці контролюється не самим вихідним ключем шифрування до, а ключем Ki, який обчислюється на основі значень К і i Більш докладно цей матеріал викладається в [1720]

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

Але в міру збільшення швидкодії і продуктивності компютерів, стандарт DES все частіше став піддаватися критиці на підставі того, що в ньому використовується порівняно короткі (56-бітові) ключі Тому 2000 Федеральним урядом США був прийнятий стандарт Advanced Encryption Standard (AES), заснований на так званому алгоритмі Райндален (Rijndael) [175], в якому використовуються ключі довжиною 128, 192 або 256 бітів Застосування навіть 128-бітових ключів означає, що новий стандарт є значно безпечнішим порівняно зі старим згідно [2634], якщо колись буде створений компютер, діючий досить швидко для того, щоб зламати шифр DES за одну секунду, то цьому компютера доведеться працювати приблизно 149 млрд років, щоб зламати 128-бітовий ключ AES (Цитата трохи перефразована) Додаткові відомості з цієї теми наведені в [175]

Шифрування на основі відкритого ключа

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

Первісна ідея використання такого методу належить Діффі (Diffie) і Хеллману (Hellman) [179], однак тут для демонстрації подібних методів буде описаний найбільш відомий підхід, розроблений Райвест (Rivest), Шамір (Shamir) і Адлеманом (Adleman) [1717] В основу цього підходу, названого схемою RSA (По першому

літерами прізвищ його авторів), покладені описані нижче два факти

1 Існує швидкий алгоритм визначення того, чи є дане число про стим

2 Не існує швидкого алгоритму розкладання даного складеного числа (тобто

числа, яке не є простим) на прості множники

У [1712] наведено приклад, в якому для визначення, чи є число з 130 цифр простим, знадобилося 7 хв обчислень на деякому компютері, тоді як для пошуку (на тому ж компютері) двох простих множників числа, одержуваного

множенням двох простих чисел, що складаються з 63 цифр, потрібно близько 40 квадрильйонів лет4(1 квадрильйон = 1 000 000 000 000 000)

Схема RSA передбачає виконання наведеної нижче послідовності дій

1 Виберіть два довільних і різних великих простих числа р і q, а потім ви числі їх твір г = р * д

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

3 Виберіть як ключа розшифровки число d, яке є зворотним від носительно множення на е по модулю (р-1) * (д-1), тобто таке число, для ко торого виконується наступне співвідношення:

d * е = 1 mo dulo (р 1) * (Д 1)

Алгоритм обчислення сd для заданих чисел е, р і д досить простий і повністю приведений в [1717]

4 При цьому розголосу можуть бути віддані числа r і е, але не d

5 Для шифрування частини відкритого тексту р (Який для простоти розглядає ся як ціле число менше r) замінимо його зашифрованим текстом з згідно такою формулою:

С = Рemodulo  r

6 Для розшифровки частини зашифрованого тексту З замініть його відкритим текстом

Р, визначаються згідно такою формулою:

Р =d modulo  r

В [1717] доводиться працездатність цієї схеми, тобто можливість розшифровки тексту з з використанням числа d для відновлення вихідного відкритого тексту р Однак, як згадувалося раніше, обчислення d для відомих чисел rіе (а нері q) практично нездійсненне Тому будь-який користувач може зашифрувати відкритий текст, але розшифрувати зашифрований текст зможуть тільки санкціоновані користувачі (тобто ті, що знають число d)

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

Приклад Нехай р = 3, д = 5 тоді r = 15, а твір (р-1) * (д-1) = 8

Нехай е = 11 (просте число більше р і д) Обчислимо d згідно наступною формулою

4 Незважаючи на це, і щодо надійності схеми RSA вже виникають деякі сумніви Робота [1712] була опублікована в 1977 році, а в 1990 році Ленстра (Lenstra) і Манассе (Manasse) змогли успішно розкласти на прості множники число з 155 цифр [1724] вони оцінили, що виконані обчислення, в яких брала участь тисяча компютерів, еквівалентні розрахунком на одному компютері зі швидкістю 1 млн інструкцій в секунду протягом 273 років Дане число з 155 цифр було девятим числом Ферма: 2 | 2 +1 (зверніть увагу, що 512 = 2 ) Див також роботу [1714], в якій повідомляється про зовсім іншому (і теж успішному) підході до розшифровки алгоритму RSA

d *  11 =  1 modulo 8

В результаті отримаємо d = 3 Тепер припустимо, що відкритий текст р складається з цілого числа 13 тоді зашифрований текст збудеться мати наступний вигляд:

С = Рe modulo r = 13n modulo 15

= 1 792 160 394 037 modulo 15

= 7

Тепер вихідний відкритий текст Р може бути отриманий за допомогою такого зворотного процедури:

Р Сd modulo r

= 73 modulo 15

=3 43 modulo

15 = 13

Оскільки числа е і d взаємно протилежні, в методах шифрування на основі відкритого ключа передбачена також можливість підписувати відсилаються повідомлення, що дозволить одержувачу мати впевненість у тому, що дане повідомлення було отримано саме від тієї особи, яка оголошено його відправником (тобто такий підпис не може бути підроблена) Припустимо, що користувачі А І В спілкуються один з одним за допомогою методу шифрування на основі відкритого ключа Нехай вони зрадили гласності алгоритм шифрування (у тому числі обидва вони вказали відповідний ключ шифрування), але зберігають у секреті навіть один від одного алгоритм і ключ розшифровки Нехай алгоритми шифрування повідомлень ЕСА і ЄСВ використовуються для шифрування повідомлень, що посилаються користувачам Аі в, відповідно, а відповідають їм алгоритмами розшифровки є алгоритми DCA і DCB Слід зазначити, що алгоритми шифрування і розшифровки ЕСА і DCA, як і алгоритми ЄСВ і DCB, є взаємно зворотними

Тепер припустимо, що користувач А хоче відіслати фрагмент відкритого тексту р користувачеві в Замість обчислення результату ЄСВ (Р) і відправки його користувачеві в, користувач А спочатку застосовує для відкритого тексту Р алгоритм розшифровки DCA, a потім зашифровує отриманий результат і в зашифрованому вигляді з передає його користувачеві в, як показано нижче

С = ЄСВ (DCA (Р)   )

Після отримання зашифрованого тексту з користувач в застосовує спочатку алгоритм розшифровки DCB, а потім – алгоритм шифрування ЕСА, що дозволяє йому в результаті отримати наступний відкритий текст Р

ЕСА (DCB (С))

= ЕСА (DCB (ОСВ (DCA (Р))))

= ЕСА (DCA (Р)) / * оскільки DCB та ЄСВ взаємно

виключаються * /

= Р / * оскільки ЕСА і DCA взаємно виключаються

*/

Таким чином, користувач В знає, що отримане ним повідомлення дійсно прийшло від користувача А, оскільки алгоритм шифрування ЕСА призведе до отримання результату Р, тільки якщо в процесі шифрування застосовувався алгоритм розшифровки DCA, а цей алгоритм відомий тільки користувачу А Тому ніхто не зможе підробити підпис користувача А, навіть користувач В

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*