Статті‎ > ‎

Захист даних з використанням криптографії

опубліковано 28 груд. 2019 р., 00:30 Александр Пупена

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

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

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

    Для формування певного унікального «відбитку» даних застосовують механізм хешування (hashing) – перетворення вхідного масиву даних довільної довжини у вихідний бітовий рядок фіксованої, порівняно невеликої довжини. Такі перетворення також називаються хеш-функціями, а їхні результати – хешем (hash), хеш-кодом або хеш-сумою. Хешування використовують для багатьох задач, наприклад в якості контрольної суми для файлу чи повідомлення. Враховуючи різну довжину та варіативність даних, якість та придатність алгоритму для певної задачі оцінюється ймовірністю співпадання хеш-сум за різних повідомлень. Для криптографічних цілей хешування повинно задовольняти наступним вимогам:

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

Виконання цих вимог на сьогоднішній день забезпечується алгоритмами групи SHA-2. У старіших алгоритмах хешування (MD5, SHA-1) були виявлені недоліки, тому наразі вони не рекомендуються для використання, хоч працюють в кілька разів швидше.

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

Для перевірки приналежності відкритих публічних ключів власникові використовують цифрові сертифікати (Certificates) – електронний файл, як правило формату X.509 (розширення *.DER, *.PEM або *.CER), який включає в себе в тому числі:

  • відкритий ключ особи, юридичної особи або доменне ім’я;
  • опис особи чи юридичної особи: ім'я, назва домену тощо;
  • підпис довіреної третьої сторони, відповідальної за те, що власник відкритого ключа був перевірений, а отже, і справжність відкритого ключа, як і власника.

Довірена (trusted) третя сторона є органом із сертифікації (CA), який відповідає за:

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

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

Для керування сертифікатами може використовуватися інфраструктура відкритих ключів (Public key infrastructure, PKI) — інтегрований комплекс методів та засобів (набір служб), призначених забезпечити впровадження та експлуатацію криптографічних систем із відкритими ключами. Інфраструктура дозволяє зв’язувати відкриті ключі з особами (наприклад, іменами користувачів або організаціями) та надає гарантії, що відкритому ключу, отриманому за допомогою нього, можна довіряти апріорі. PKI може базуватися на різних механізмах, наприклад центрах сертифікації або блокчейн. У першому випадку до інфраструктури входять також центри реєстрації (які також можуть підтвердити дійсність сертифікату), репозитарії та архіви сертифікатів.

Механізми шифрування, що описані вище можуть бути використані для обміну шифрованими повідомленнями між різними засобами, а шифрування може проходити на різних рівнях комунікаційної моделі. Зокрема SSH (англ. Secure SHell — «безпечна оболонка») — мережний протокол прикладного рівня, що дозволяє проводити віддалене керування комп'ютером (чи іншим пристроєм) і тунелювання TCP-з'єднань (наприклад, для передачі файлів). SSH може бути використаний для віддаленого доступу терміналу до пристрою (ПК чи іншого пристрою), аналогічно як Telnet, при цьому шифрує весь трафік, в тому числі і паролі, що передаються. Інше використання SSH – передача будь яких даних по шифрованому каналу та побудови тунелей. Один з вузлів в з’єднанні є SSH-сервером (прослуховує TCP порт 22), інший – SSH-клієнтом, який ініціює підключення.

SSH не призначений для шифрування даних прикладних протоколів, для цього можуть використовувати протоколи SSL/TLS (остання версія TLS 1.3). SSL/TLS забезпечують сеанс зв’язку для передачі зашифрованих даних прикладного рівня поверх TCP/IP. Так, наприклад, на ньому базується HTTPS, який є схемою функціонування протоколу HTTP поверх SSL/TLS. Схема працює наступним чином. Спочатку клієнт (браузер) надсилає запит на сервер, щоб встановити з'єднання, захищене протоколом TLS, а сервер відповідає, надсилаючи свій сертифікат. Якщо підпис сертифіката підтверджений CA, який входить в перелік центрів сертифікації браузеру, клієнт генерує ключ шифрування та передає його зашифрувавши з використанням відкритого ключа серверу (міститься в його сертифікаті) для продовження шифрованого обміну. Сертифікат серверу може бути підписаний самостійно і не підтверджуватися CA. У цьому випадку існує ймовірність того, що сайт є шахрайським, але користувач може дозволити з'єднання, якщо потребується шифрований обмін і є довіра до серверу. Аналогічним чином користувач може поступити при простроченні сертифікату. У інших випадках з’єднання не відбувається.   

    Шифрування можна також організувати на мережному рівні з використанням протоколу IPsec, який забезпечує захист на рівні пакету IP. Таким чином можуть шифруватися будь які пакети TCP або UDP. IPsec може передавати зашифроване корисне навантаження (транспортний режим), або передавати весь IP-пакет в зашифрованому IPsec-пакеті (тунельний режим). Тунельний режим може бути використаний для побудови VPN, де два вузли (наприклад маршрутизатори) будуть передавати усі IP-пакети по шифрованому тунелю IPsec, а інші вузли будуть обмінюватися з використанням звичайних IP-пакетів.

Читайте також:
Comments