Дифи-Хелман
Протоколът Дифи-Хелман (на английски: Diffie-Hellman) е асиметричен алгоритъм за криптиране. Патентът му важи от 1976 г. до 1997 г.
Позволява договарянето на сесиен ключ без изпращането му по несигурната връзка. Двете договарящи се страни избират 2 случайни прости числа, след което обменят ограничен обем от информация, така че всяка страна да може да изчисли общия ключ, без това да е възможно за трета, злонамерена страна. Ако обмяната на информация се подслушва тогава договорения общ ключ е компрометиран.
Пример: Да кажем, че двете страни, които ще си кореспондират са Алис и Боб
- Алис и Боб се уговарят да използват като модул числото p = 23 за делене с остатък и числото g = 5 за основа (което е примитивен корен на модула 23).
- След това Алис избира едно целочислено число a = 6 и изпраща на Боб ключа A = ga mod p
- A = 56 mod 23 = 8
- Боб също избира целочислено число b = 15 и изпраща на Алис ключа B = gb mod p
- B = 515 mod 23 = 19
- Алис изчислява общият ключ s = Ba mod p
- s = 196 mod 23 = 2
- Боб изчислява общият ключ s = Ab mod p
- s = 815 mod 23 = 2
Така и двамата получиха един и същ общ ключ (т.е. числото 2).
Както Alice така и Bob достигнаха до една и съща стойност s, тъй като използваха един и същи модул mod p,
И по-специално,
Обърнете внимание, че 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. Този проблем се нарича проблем на дискретните логаритми. Изчисляването на 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
|
|
|
Сега s е общо споделеният таен ключ и той е известен както на Алис така и на Боб, но не и на Ева.
Забележка: За Алис ще е трудно да реши кой е частният ключ на Боб или за Боб да намери кой е частният ключ на Алис. Ако не е трудно за Алис да намери частният ключ на Боб (или обратно), Ева просто може да подмени техните със своята двойка на частен/публичен ключ, като включи публичният ключ на Боб в своя частен ключ, като по този начин получи фалшив споделен таен ключ, и да намери частният ключ на Боб (и да го използва за да намери споделеният таен ключ). Ева може да се опита да избере двойка публичен / частен ключ която ще направи лесно откриването на частния ключ на Боб.)
Друга демонстрация на Дифи-Хелман (Diffie-Hellman) (също използва твърде малки числа с цел практическо използване) е показано тук Архив на оригинала от 2011-08-12 в Wayback Machine..[2]
Източници
[редактиране | редактиране на кода]- ↑ Garzia, F. Handbook of Communications Security. WIT Press, 2013. ISBN 1845647688. с. 182.
- ↑ Buchanan, Bill. Diffie-Hellman Example in ASP.NET. Посетен на 27 август 2015. Архив на оригинала от 2011-08-12 в Wayback Machine.
Външни препратки
[редактиране | редактиране на кода]- Oral history interview with Martin Hellman, Charles Babbage Institute, University of Minnesota. Leading cryptography scholar Martin Hellman discusses the circumstances and fundamental insights of his invention of public key cryptography with collaborators Whitfield Diffie and Ralph Merkle at Stanford University in the mid-1970s.
- www.DiffieHellman.org Includes both prototype examples and functional C, Perl and JavaScript Code, as well as tutorials for both Children and Adults / Novice and Software Engineer level tutorials from Kids Computer Kamp and eduhosting for teachers Архив на оригинала от 2017-01-10 в Wayback Machine.
- RFC 2631 – Diffie–Hellman Key Agreement Method. E. Rescorla. June 1999.
- RFC 3526 – More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE). T. Kivinen, M. Kojo, SSH Communications Security. May 2003.
- Summary of ANSI X9.42: Agreement of Symmetric Keys Using Discrete Logarithm Cryptography (64K PDF file) (Description of ANSI 9 Standards Архив на оригинала от 2004-08-16 в Wayback Machine.)
- Diffie–Hellman Key Exchange – A Non-Mathematician’s Explanation by Keith Palmgren
- Crypt::DH Perl module from CPAN
- Hands-on Diffie–Hellman demonstration
- C implementation using GNU Multiple Precision Arithmetic Library
- Diffie Hellman in 2 lines of Perl (using dc)
- Smart Account Management (SAcct) (using DH key exchange to derive session key)
- Diffie-Hellman Key Exchange – A YouTube video by Khan Academy faculty member Brit Cruise
- Talk by Martin Hellman in 2007, YouTube video
- Crypto dream team Diffie & Hellman wins $1M 2015 Turing Award (a.k.a. „Nobel Prize of Computing“) Архив на оригинала от 2016-03-04 в Wayback Machine.
Тази страница частично или изцяло представлява превод на страницата Diffie–Hellman key exchange в Уикипедия на английски. Оригиналният текст, както и този превод, са защитени от Лиценза „Криейтив Комънс – Признание – Споделяне на споделеното“, а за съдържание, създадено преди юни 2009 година – от Лиценза за свободна документация на ГНУ. Прегледайте историята на редакциите на оригиналната страница, както и на преводната страница, за да видите списъка на съавторите.
ВАЖНО: Този шаблон се отнася единствено до авторските права върху съдържанието на статията. Добавянето му не отменя изискването да се посочват конкретни източници на твърденията, които да бъдат благонадеждни. |