Дифи-Хелман

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Дифи-Хелман (англ. Diffie-Hellman) е асимиетричен алгоритъм за криптиране. Патентът му важи от 1976г до 1997 г.

Позволява договарянето на сесиен ключ без изпращането му по несигурната връзка. Двете договарящи се страни избират 2 случайни прости числа, след което обменят ограничен обем от информация, така че всяка страна да може да изчисли общия ключ, без това да е възможно за трета, злонамерена страна. Ако обмяната на информация се подслушва тогава договорения общ ключ е компрементиран.

Пример: Да кажем, че двете страни, които ще си кореспондират са Алис и Боб

  1. Алис и Боб се уговарят да използват като модул числото p = 23 за делене с остатък и числото g = 5 за основа (което е примитивен корен на модула 23).
  2. След това Алис избира едно целочислено число a = 6 и изпраща на Боб ключа A = ga mod p
    • A = 56 mod 23 = 8
  3. Боб също избира целочислено число b = 15 и изпраща на Алис ключа B = gb mod p
    • B = 515 mod 23 = 19
  4. Алис изчислява общият ключ s = Ba mod p
    • s = 196 mod 23 = 2
  5. Боб изчислява общият ключ s = Ab mod p
    • s = 815 mod 23 = 2

Така и двамата получиха един и същ общ ключ (т.е. числото 2).

Както Alice така и Bob достигнаха до една и съща стойност s, тъй като използваха един и същи модул mod p,

[1]

И по-специално,

Обърнете внимание, че a, b, и (gab mod p = gba mod p) се пазят в тайна. Всички други стойности – p, g, ga mod p, и gb mod p – се изпращат в открит вид. Щом веднъж Алис и Боб изчислят общият таен ключ те могат да го използват като криптиращ ключ, който е известен само на тях двамата и могат да си изпращат един на друг съобщени по един и същ открит комуникационен канал.

Разбира се, колкото са по-големи стойностите на числата a, b, и p толкова по сигурна ще бъде комуникацията между тях, така, че ще е необходимо да се направи този пример по-сигурен, тъй като в него има само 23 възможни резултатаза n mod 23. Все пак, ако p е цяло просто число на най-малко 600 бита или цифри, тогава дори най-модерните бързи компютри не могат да намерят a като им са зададени само g, p и ga mod p. Този проблем се нарича проблема на дискретните логаритми - discrete logarithm problem. Изчисляването на ga mod p е известно като модулно експонентиране - modular exponentiation и може да бъде направено ефективно дори за големи числа. Обърнете внимание, че g изобщо не е необходимо да бъде голямо число, а в практиката обикновено е малко цяло число (като наприме 2, 3, 0x10001, ...).

Графика на тайните[редактиране | редактиране на кода]

Графиката по-долу показва кой какво знае, отново с не-секретните стойности за blue и секретните стойнисти за red. Тук Ева (Eve) е подслушващата—тя гледа и слуша какво се изпраща между Алис и Боб, но тя не променя съдържанието на комуникацията между тя.

  • g = публична база (просто число), известно на Алис, Боб и Ева. g = 5
  • p = публичен модул (просто число), известен на Алис, Боб и Ева. p = 23
  • a = Частният ключ на Алис (Alice's private key), известен само на Алис. a = 6
  • b = Частният ключ на Боб (Bob's private key) известен само на Боб. b = 15
  • A = Публичният ключ на Алис (Alice's public key), известен на Алис, Боб и Ева. A = ga mod p = 8
  • B = Публичният ключ на Боб (Bob's public key), известен на Алис, Боб и Ева. B = gb mod p = 19


Алис
Известни Неизвестни
p = 23
g = 5
a = 6 b
A = 5a mod 23
A = 56 mod 23 = 8
B = 19
s = Ba mod 23
s = 196 mod 23 = 2
s = 2
Боб
Известни Неизвестни
p = 23
g = 5
b = 15 a
B = 5b mod 23
B = 515 mod 23 = 19
A = 8
s = Ab mod 23
s = 815 mod 23 = 2
s = 2
Ева
Известни Незвестни
p = 23
g = 5
a, b
   
   
A = 8, B = 19
   
s = 19a mod 23 = 8b mod 23
s

Сега s е общо споделеният таен ключ и той е известен както на Алис така и на Боб, но не и на Ева.

Забележка: За Алис ще е трудно да реши кой е частният ключ на Боб или за Боб да намери кой е частният ключ на Алис. Ако не е трудно за Алис да намери частният ключ на Боб (или обратно), Ева просто може да подмени техните със своята двойка на частен/публичен ключ, като включи публичният ключ на Боб в своя частен ключ, като по този начин получи фалшив споделен таен ключ, и да намери частният ключ на Боб (и да го използва за да намери споделеният таен ключ). Ева може да се опита да избере двойка публичен / частен ключ която ще направи лесно откриването на частният ключ на Боб.)

Друга демонстрация на Дифи-Хелман (Diffie-Hellman) (също използва твърде малки числа с цел практическо използване) е показано тук.[2]



Външни препратки[редактиране | редактиране на кода]

Шаблон:Външни препратки

Шаблон:Portal

Шаблон:Cryptography navbox

  1. Garzia, F. (2013), „Handbook of Communications Security“, WIT Press, p. 182, ISBN 1845647688, https://books.google.com/books?id=F-KBlLnllSoC&pg=PA182 
  2. Buchanan, Bill, "Diffie-Hellman Example in ASP.NET", Bill's Security Tips, http://buchananweb.co.uk/security02.aspx, посетен 2015-08-27