Одна з основних причин успіху віддалених атак на розподілені обчислювальні мережі полягає у використанні мережних протоколів обміну, які не можуть надійно ідентифікувати віддалені об’єкти, захистити з’єднання та дані, що передаються по ньому. Тому цілком природньо, що в процесі функціонування Internet були створені різні захищені мережні протоколи, що використовують криптографію як з закритим, так і з відкритим ключем. Класична криптографія з симетричними криптоалгоритмами передбачає наявність у передавальної та приймаючої сторін симетричних (однакових) ключів для шифрування та дешифрування повідомлень. Ці ключі заздалегідь мають бути розподілені між скінченною кількістю абонентів, що в криптографії називається стандартною проблемою статичного розподілу ключів. Очевидно, що застосування класичної криптографії з симетричними ключами є можливим лише на обмеженій множині об’єктів. У мережі Internet для всіх її користувачів вирішити проблему статичного розподілу ключів не є можливим. Однак, одним з перших захищених протоколів обміну в Internet був протокол Kerberos, заснований саме на статичному розподілі ключів для скінченної кількості абонентів. Для того, щоб дати можливість захиститися усій множині користувачів мережі Internet, а не обмеженій її підмножині, необхідно використовувати ключі, що динамічно виробляються в процесі створення віртуального з’єднання, застосовуючи криптографію з відкритим ключем. Розглянемо основні на сьогоднішній день підходи і протоколи, що забезпечують захист з’єднання.
SKIP-технологією (Secure Key Internet Protocol - Internet-протокол з захищеним ключем) називається стандарт інкапсуляції IP-пакетів, що дозволяє в існуючому стандарті IPv4 на мережному рівні забезпечити захист з’єднання і даних, що передаються по ньому. Це досягається наступним чином: SKIP-пакет – це звичайний IP-пакет, його поле даних представляє собою SKIP-заголовок формату, визначеного специфікацією і криптограму (зашифровані дані). Така структура SKIP-пакета дозволяє безперешкодно направляти його будь-якому хосту в Internet (міжмережна адресація відбувається по звичайному IP-заголовку в SKIP-пакеті). Кінцевий отримувач SKIP-пакета за заздалегідь визначеним розробниками алгоритмом розшифровує криптограму і формує звичайний TCP- або UDP-пакет, який і передає відповідному звичайному модулю (TCP або UDP) ядра операційної системи. В принципі ніщо не заважає розробнику формувати за заданою схемою свій оригінальний заголовок, відмінний від SKIP-заголовка.
S-HTTP ( Secure HTTP - захищений HTTP) – це зхищений HTTP-протокол, розроблений компанією Enterprise Integration Technologies (EIT) спеціально для Web. Протокол S-HTTP дозволяє забезпечити надійний криптозахист тільки HTTP-документів Web-сервера і функціонує на прикладному рівні моделі OSI. Така особливість протокола робить його абсолютно спеціалізованим засобом захисту з’єднання, отже, його застосування для захисту всіх інших прикладних протоколів (FTP, TELNET, SMTP та ін.) є неможливим. Крім того, ні один з існуючих на сьогоднішній день основних Web-браузерів (ні Netscape Navigator, ні Microsoft Explorer) не підтримують цей протокол.
SSL (Secure Socket Layer - захищені скриті гнізда) – розробка компанії Netscape – універсальний протокол захисту з’єднання, що функціонує на сеансовому рівні OSI. Він використовує криптографію з відкритим ключем і на сьогоднішній день є єдиним універсальним засобом, що дозволяє динамічно захистити будь-яке з’єднання з застосуванням будь-якого прикладного протокола (DNS, FTP, TELNET, SMTP та ін.). Це пов’язано з тим, що SSL, на відміну від S-HTTP, функціонує на проміжному сеансовому рівні OSI – між транспортним (TCP, UDP) і прикладним (FTP, TELNET). При цьому процес створення віртуального SSL-з’єднання відбувається за схемою Діффі та Гелмана, яка дозволяє виробити криптостійкий сеансовий ключ, що використовується в подальшому абонентами SSL-з’єднання для шифрування повідомлень, які передаються.
Протокол SSL вже практично оформився в якості офіційного стандарта захисту для HTTP-з’єднань, тобто для захисту Web-серверів. Його підтримують Netscape Navigator та Microsoft Explorer. Звичайно для встановлення SSL-з’єднання з Web-сервером, необхідною є наявність ще й Web-сервера, що підтримує SSL (наприклад, SSL-Apache).
Алгоритм роботи SSL побудований на принципі публічних ключів. Цей принцип базується на використанні пари асиметричних ключів (публічному і приватному) для кодування/декодування інформації. Публічний ключ роздається всім бажаючим. І з його допомогою шифруються необхідні дані, які можна дешифрувати тільки з допомогою приватного ключа.
Припустимо, що дві особи спілкуються через Internet і відповідно не бачать один одного, тобто не мають можливості взнати хто є його абонентом. Їх імена – Аліса і Боб. Нехай Алісі необхідно дізнатися, чи дійсно вона спілкується з Бобом. У цьому випадку діалог може виглядати наступним чином:
· Аліса відправляє Бобу випадкове повідомлення.
· Боб шифрує його з допомогою свого приватного ключа і відправляє його Алісі.
· Аліса дешифрує це повідомлення (з допомогою публічного ключа Боба). І порівнявши це повідомлення з посланим, може переконатися, що його дійсно послав Боб.
Але на справді з боку Боба ідея шифрувати повідомлення від Аліси з допомогою свого приватного ключа не є дуже вдалою. Це є аналогічним до пілпису документа, про який Боб мало що знає. З такої позиції Боб має сам придумати повідомлення і послати його Алісі у двох екземплярах. У першому повідомлення передається відкритим текстом, а друге повідомлення є зашифрованим з допомогою приватного ключа Боба. Таке повідомлення називається message digest, а спосіб шифрування з допомогою свого приватного ключа – цифровим підписом (digital signature) .
Тепер закономірно повстає запитання, яким чином поширювати свої публічні ключі. Для цього була придумана спеціальна форма – сертифікат (certificate). Сертифікат складається з наступних частин:
· Ім’я людини/організації, що випускає сертифікат.
· Для кого було випущено даний сертифікат (суб’єкт сертифіката).
· Публічний ключ суб’єкта.
· Деякі часові параметри (термін дії сертифіката та ін.).
Сертифікат “підписується” приватним ключем особи (або організації), яка випускає сертифікати. Організації, які здійснюють подібні операції називаються – “Certificate authority (CA)”. Якщо в стандартному Web-клієнті (Web-browser), який підтримує SSL, зайти в розділ security, то там можна побачити список відомих організацій, які “підписують” сертифікати.
Тепер обидві особи можуть використовувати симетричний шифрувальний алгоритм (де в якості секретного ключа виступає повідомлення Аліси) і безбоязно обмінюватися шифрованими повідомленнями. А для контролю над пересиланням повідомлень (від випадкової/навмисної зміни) використовується спеціальний алгоритм – Message Authentification Code (MAC). Тоді достовірність повідомлень зростає в декілька раз. І внести зміни в процес обміну практично неможливо.
Найбільш поширеним пакетом програм для підтримки SSL – є SSLeay. Остання версія (SSLeay v.0.8.0) підтримує SSLv3. Ця версія є доступною у вихідних текстах і без особливих проблем встановлюється під UNIX. Цей пакет призначений для створення і управління різного роду сертифікатами. Також до його складу входить і бібліотека для підтримки SSL різними програмами. Ця бібліотека є необхідною, наприклад, для модуля SSL в поширеному HTTP сервері - Apache.