Согласование ключа
Протокол, в котором две стороны совместно получают общий секрет, ни разу не пересылая его по каналу.
При согласовании ключа каждая сторона вносит значение, которое другая объединяет со своим секретом, и обе приходят к одному результату. Диффи — Хеллман, опубликованный в 1976 году, стал первым публичным примером, и принцип сохраняется в нынешних вариантах на эллиптических кривых. По сети идут открытые значения, а общий секрет остаётся невидимым для любого подслушивающего.
Согласование отличается от передачи ключа, где одна сторона выбирает ключ и отправляет его. Оно защищает от пассивного подслушивания, но не от активного «человека посередине», который может провести по обмену с каждой стороной. Поэтому в протоколах вроде TLS открытые значения подписывают или заверяют сертификатом, привязывая их к личности.
Общий секрет редко бывает итоговым ключом. Обычно его пропускают через функцию выработки ключей вроде HKDF, чтобы получить несколько ключей для разных целей, и утечка одного не раскрывала всей цепочки. Мелочь, которую часто пропускают.