Loading AI tools
З Вікіпедії, вільної енциклопедії
Протокол Діффі — Геллмана (англ. Diffie–Hellman key exchange (D–H)[nb 1]) — це метод обміну криптографічними ключами. Один з перших практичних прикладів узгодження ключа, що дозволяє двом учасникам, що не мають жодних попередніх даних один про одного, отримати спільний секретний ключ із використанням незахищеного каналу зв'язку. Цей ключ можна використати для шифрування наступних сеансів зв'язку, що використовують шифр з симетричним ключем.
Клас | Протокол узгодження ключів |
---|---|
Структура даних | Швидкодія та криптографічна стійкість залежать від обраного простору (циклічної групи) |
Схему вперше оприлюднили Вітфілд Діффі і Мартін Геллман у 1976, хоча пізніше стверджувалось, що її кількома роками раніше винайшов Малколм Вільямсон у GCHQ, британській розвідувальній агенції. 2002 року Геллман запропонував називати алгоритм Обмін ключами Діффі — Геллмана — Меркле у визнання внеску Ральфа Меркле в винайденні криптосистем із відкритим ключем.
Хоча протокол Діффі — Геллмана є анонімним (без автентифікації) протоколом встановлення ключа, він забезпечує базу для різноманітних протоколів з автентифікацією, і використовується для забезпечення цілковитої прямої секретності в недовговічних режимах Transport Layer Security (відомих як EDH або DHE залежно від комплектації шифру).
U.S. Patent 4,200,770, термін дії якого наразі вибіг, описує алгоритм і заявляє Геллмана, Діффі і Меркле як винахідників.
Діффі й Геллман запропонували у 1976 році[1] алгоритм для створення криптографічних систем з відкритим ключем, який так само, як і алгоритм Ель–Гамаля, базується на складності обчислення дискретного логарифма. Алгоритм Діффі — Геллмана може бути використаний для розподілу ключів (генерування секретного ключа), але його не можна використовувати для шифрування повідомлення[2].
Алгоритм узгодження ключа Діффі — Геллмана запатентовано у США та Канаді. Ліцензію на цей патент разом з іншими патентами в області криптографії з відкритим ключем отримала група Public Кеу Partners (PKP). Термін дії патенту США вибіг у 1997 році[2].
Алгоритм Діффі — Геллмана також працює в комутативних кільцях. Шмулі та Кевін МакКерлі запропонували варіант алгоритму, в якому модуль є складеним числом. Міллер і Ніл Кобліц розширили цей алгоритм для використання з еліптичними кривими. Ель–Гамаль використовував основоположну ідею алгоритму Діффі — Геллмана для створення алгоритму шифрування та цифрового підпису. Також є варіант алгоритму для роботи в полі Галуа. У низці реалізацій використаний цей підхід, оскільки обчислення виконуються набагато швидше, але важливо ретельно вибирати поле досить великим, аби забезпечити необхідну стійкість[2].
Криптографічна стійкість алгоритму Діффі — Геллмана заснована на передбачуваній складності задачі дискретного логарифмування (англ. discrete logarithm problem). Однак, хоча вміння розв'язувати задачу дискретного логарифмування дозволить зламати алгоритм Діффі — Геллмана, зворотне твердження ще не доведене[2].
Необхідно відзначити, що простий алгоритм Діффі — Геллмана працює тільки на лініях зв'язку, надійно захищених від модифікації. Тоді, коли в каналі можлива модифікація даних, з'являється можливість атаки «людина посередині»[2].
Узгодження спільного таємного ключа відбувається таким чином.
Нехай G — скінченна циклічна група потужністю |G| породжена g[3].
Аліса і Боб таємно обирають два випадкових цілих числа sA та sB, в інтервалі [0, |G| − 1]. Потім вони таємно обчислють числа aA = gsA та aB = gsB відповідно, та обмінюються ними через незахищений канал передачі даних. Нарешті, Аліса та Боб обчислюють aBA = aBsA = gsBsA та aAB = aAsB = gsAsB відповідно. Слід зазначити, що aAB = aBA, і тому це число може служити спільним таємним ключем K Аліси та Боба[3].
Точніше, тепер Аліса та Боб можуть скористатись відображенням елементів множини G у простір іншої криптосистеми. Наприклад, вони можуть використати блок даних необхідного розміру (зокрема, молодші біти) значення aAB як ключ звичайної блокової криптосистеми[3].
Запропоновано варіанти протоколу Діффі — Геллмана для різних множин. Зокрема: мультиплікативні групи над великими скінченними полями (поля простих чисел або розширення), мультиплікативна група залишків за модулем складеного числа, еліптичні криві над скінченними полями, якобіан гіпереліптичних кривих над скінченним полем, та факторгрупи уявних квадратичних полів[3].
Однак, базовий варіант протоколу узгодження ключа анонімний, тут відсутня можливість автентифікації абонентів. Таким чином, протокол вразливий для атаки «людина посередині». Припустімо, що зловмисник C здатен здійснювати підміну повідомлень, якими обмінюються Аліса та Боб. Тоді він може згенерувати числа s*A та s*B, і відповідно, отримати два узгоджених ключа: gsAs*B та gs*AsB. В результаті зловмисник отримує можливість повністю контролювати обмін повідомленнями між Алісою та Бобом. При цьому вони не здатні виявити підміну та вважатимуть, що зв'язуються один з одним[4].
Для розв'язання цієї проблеми були запропоновані підсилені варіанти протоколу. Зокрема[4]:
З автентифікацією абонентів:
Єва — криптоаналітик, прослуховувач. Вона читає листування Боба і Аліси, але не може змінити вмісту повідомлень.
|
|
|
Постає питання: «Наскільки складно обчислити DH-функцію за умови великого ?» Припустимо, що має біт завдовжки, тоді найліпший з відомих на сьогодні алгоритмів GNFS має час виконання , підекспоненційний час виконання.
Приблизна порівняльна таблиця між складністю злому шифру з різними довжинами ключів і обчисленням функції Діффі — Геллмана в первинному варіанті і в варіанті, коли замість обчислень за модулем використовується інший алгебраїчний об'єкт:
Розмір ключа шифру | розмір модуля | розмір еліптичної кривої |
---|---|---|
80 | 1024 | 160 |
128 | 3072[5] | 256 |
256 | 15360 | 512 |
Обчислити функцію Діффі — Геллмана можна через обчислення з і з . Це є проблема дискретного логарифма, яка обчислювальна нерозв'язна при достатньо великих . Обчислення дискретного алгоритму за модулем потребує приблизно стільки ж часу як факторизація добутку двох простих чисел розміру як і , саме на це покладається безпека криптосистем RSA. Отже протокол Діффі — Геллмана приблизно так само безпечний як безпечний RSA[6].
Протокол Діффі — Геллмана не обмежується можливістю узгодження ключа між двома учасниками. Будь-яка кількість учасників може узяти участь в узгоджені ключа через ітеративне виконання протоколу узгодження і обмін проміжними даними (які не мають бути засекреченими). Наприклад, Аліса, Боб і Керол можуть узяти участь в узгоджені так (всі дії відбуваються за модулем ):
Підслуховувач може бачити , , , , і , але не здатен використати яку-небудь з комбінацій для відтворення .
Для розширення механізму на більші групи, треба дотримуватись двох засад:
Ці принципи залишають відкритими варіанти обрання порядку в якому учасники подають ключі. Найпростіший і найочевидніший розв'язок полягає у впорядкуванні учасників по колу і обійти коло для кожного з них, доки кожен з учасників не зробить внеску в кожен з ключів (з його останнім). Однак, це вимагає від кожного учасника виконати піднесень за модулем.
Через обрання оптимальнішого порядку, і покладання на те, що ключі можуть повторюватись, можливо зменшити кількість піднесень у степінь за модулем виконаних кожним учасником до , через використання підходу розділяй і володарюй, наведеному тут для восьми учасників:
По завершені алгоритму, всі учасники володітимуть секретом , але кожен з них виконає лише чотири модульні піднесення, а не вісім, як того потребує просте впорядкування по колу.
У випадку включення свого внеску до протоколу Діффі — Геллмана до свого відкритого фейсбук-профіля, користувачі не потребують спілкування для узгодження секретного ключа. Одразу по прочитанні відкритого профілю користувача, з ним можна починати безпечний зв'язок. Цю властивість іноді називають властивість неінтерактивності протоколу Діффі — Геллмана.
Чи можемо ми це зробити, також неінтерактивно, для більш ніж двох учасників? Тобто, чи може Андрій прочитати і одразу отримати спільний секретний ключ з Богданом, Сергієм і Дмитром — ? На сьогодні відомо, що це можна зробити для трьох учасників, протокол називається Joux і використовує дуже складну математику. Для більш ніж трьох учасників ця проблема відкрита.
— скінченна циклічна група порядку . — випадковий породжувач групи. — довільні показники.
Обчислювальне припущення Діффі — Геллмана (англ. computational Diffie–Hellman assumption):
Геш припущення Діффі — Геллмана (англ. hash Diffie–Hellman assumption), сильніше від CDH:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.