Алгоритм діффі-хеллмана: призначення

По всій видимості, мало хто сьогодні, використовуючи передачу даних

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

Що таке методика Діффі-Хеллмана?

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

алгоритм Діффі Хеллмана

Як уже зрозуміло, за відсутності захисту самого каналу перехопити або модифікувати файли, що знаходяться в процесі передачі-прийому, може і зловмисник. Однак алгоритм розподілу ключів Діффі-Хеллмана для доступу до переданих і прийнятих даними такий, що стороннє втручання практично повністю виключається. При цьому спілкування по використовуваному каналу зв`язку (Без захисту оного) стає безпечним, якщо обидві сторони використовують один і той же ключ.

Передісторія

Сам алгоритм Діффі-Хеллмана був представлений світу ще в далекому 1976 році. Його творцями стали Уітфрід Діффі і Мартін Хеллман, які в своїх дослідженнях безпечних і надійних методів шифрування даних спиралися на роботи Ральфа Меркля, який розробив так звану систему поширення публічних ключів.

алгоритм Діффі Хеллмана огляд

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

найпростіше пояснення

Власне, сам тест заснований на криптографічних технологіях шифрування, які і зараз дивують багатьох фахівців в цій області. Антологія шифрів включає в себе досить велику історію. Суть всього процесу зводиться до того, що є два абонента, листувався електронною поштою або обмінюються якимись даними за допомогою комп`ютерних програм. Але захист проводиться таким чином, що сам алгоритм Діффі-Хеллмана вимагає, щоб ключ розшифровки був відомий двом сторонам (передавальної і приймаючої). При цьому абсолютно неважливо, яка з них згенерує початкове випадкове число (цей момент пояснимо при розгляді формул обчислення ключів).

Методика шифрування даних ранніх періодів

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

алгоритм Діффі Хеллмана на java

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

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

Само собою зрозуміло, що сьогодні існують досить потужні криптосистеми на основі алгоритмів на кшталт AES, а й вони не дають повної гарантії захисту від злому даних третьою стороною.

Ну а тепер зупинимося на самій системі шифрування, її практичне застосування і ступеня захисту.

Алгоритм Діффі-Хеллмана: призначення



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

алгоритм Діффі Хеллмана на c

Згадайте хоча б роки Другої світової війни, коли розвідки всіх країн-союзників безуспішно полювали за шифрувальної машиною під назвою «Енігма», за допомогою якої передавалися кодовані повідомлення на азбуці Морзе. Адже її шифр не міг розгадати жоден, навіть самий, як ми зараз говоримо, «просунутий» фахівець з криптографії. Тільки після її захоплення було отримано ключ до дешифрування повідомлень, переданих німецьким флотом.

Алгоритм Діффі-Хеллмана: огляд

Отже, сам алгоритм має на увазі використання декількох базисних понять. Припустимо, у нас є простий випадок, коли на зв`язку присутні два абонента (користувача). Позначимо їх як A і B.

Вони використовують два числа X і Y, які не є секретними в даному каналі зв`язку, для управління прийому-передачі. Вся суть питання зводиться до того, щоб згенерувати на їх основі якесь нове значення, яке буде ключем. Але! Перший абонент використовує велику просте число, а другий - обов`язково ціле (ділиться без залишку), але менше по порядку, ніж перше.

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

Основні формули обчислення ключа

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

Отже, припустимо, кожен з абонентів генерує випадкові числа a і b. Заздалегідь їм відомі значення x і y, які можуть бути навіть «вшиті» в шукане програмне забезпечення.



При пересиланні або прийомі такого повідомлення абонент A обчислює значення ключа, виходячи з формули A = xamod y, а другий використовує комбінацію B = xbmod y, після чого слід пересилання розшифрованого ключа першому користувачеві. Це перший етап.

алгоритм Діффі Хеллмана приклад

Тепер припустимо, що третя зацікавлена сторона має в своєму розпорядженні обидва обчислених значення A і B. Все одно вона не може втрутитися в процес передачі даних, оскільки на другому етапі потрібно знати, як обчислюється загальний ключ.

Виходячи з вищенаведених формул, можна зупинитися на обчисленні загального ключа. Якщо подивитися на алгоритм Діффі-Хеллмана, приклад може виглядати приблизно так:

1) перший абонент обчислює ключ на основі x за формулою Bamod y = xabmod y;

2) другий, виходячи з початкового числа y і отриманого з мережевого протоколу параметра B, визначає ключ на основі наявного параметра A: Abmod y = x bamod y.

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

Уразливість при втручанні в процес передачі даних

Як можна було б припустити, втручання третьої сторони не виключається. Однак в даному випадку мова йде про спочатку задаються числах близько 10100 або навіть 10300.

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

алгоритм Діффі Хеллмана призначення

Найчастіше вони пов`язані зі знанням дискретного логарифмування. Якщо такі знання є, зламати алгоритм Діффі-Хеллмана можна (але тільки для початкових і кінцевих параметрів, як уже говорилося вище). Інша справа, що такими знаннями володіють одиниці.

Використання алгоритму для платформи Java

Алгоритм Діффі-Хеллмана на Java використовується виключно при зверненнях на кшталт «клієнт-сервер».

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

Використання алгоритму для платформи C (+ / ++)

Якщо подивитися на алгоритм Діффі-Хеллмана на «C» (+ / ++), то і тут не все так гладко. Справа в тому, що іноді виникає проблема того, коли сама мова програмування здебільшого працює з обчисленнями, пов`язаними з плаваючою комою. Саме тому при завданні цілочисельних значень або при спробі округлення (навіть при зведенні в ступінь) можуть спостерігатися неполадки при компіляції. Особливо це стосується неправильного використання функції int.

Однак ж варто звернути увагу і на інші виконувані компоненти, які, як правило, представляють собою завдання класів, то ж зведення в ступінь або супутні приєднуються бібліотеки GMP.

Сучасні алгоритми шифрування

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

алгоритм Діффі Хеллмана вимагає щоб

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

замість післямови

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

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

У найпростішому випадку досить зробити інсталяцію того ж виконуваного Java-аплета, який може бути застосований навіть у мобільному зв`язку. Природно, користувач про це не дізнається, але його дані зможе використовувати в своїх цілях будь-який бажаючий.


Увага, тільки СЬОГОДНІ!


Поділися, будь ласка статтю
всього голосів: 122
Увага, тільки СЬОГОДНІ!