SPEKE ( Simple Password Exponential Key Exchange ) — это криптографический метод для согласования ключей с аутентификацией по паролю .
Протокол представляет собой не более чем обмен ключами Диффи-Хеллмана , где генератор Диффи-Хеллмана g создается из хэша пароля .
Вот одна из простых форм SPEKE:
И Алиса, и Боб придут к одному и тому же значению для K, если и только если они используют одно и то же значение для π . После того, как Алиса и Боб вычислят общий секрет K, они могут использовать его в протоколе подтверждения ключа, чтобы доказать друг другу, что они знают один и тот же пароль π, и вывести общий секретный ключ шифрования для отправки друг другу защищенных и аутентифицированных сообщений. Использование протокола подтверждения ключа является необязательным, как указано в стандартах IEEE P1363.2 и ISO/IEC 11770-4.
В отличие от неаутентифицированного Диффи-Хеллмана, SPEKE предотвращает атаку «человек посередине» путем включения пароля. Злоумышленник, который может читать и изменять все сообщения между Алисой и Бобом, не может узнать общий ключ K и не может сделать более одной попытки для пароля в каждом взаимодействии со стороной, которая его знает.
В общем случае SPEKE может использовать любую группу простого порядка, подходящую для криптографии с открытым ключом, включая криптографию на основе эллиптических кривых . Однако, когда SPEKE реализуется с использованием криптографии на основе эллиптических кривых, протокол существенно изменяется, требуя дополнительного примитива, который должен надежно сопоставлять пароль со случайной точкой на указанной эллиптической кривой. (Этот примитив называется функцией IOP или Integer-to-Point в IEEE P1363.2 и ISO/IEC 11770-4.)
SPEKE — один из старых и известных протоколов в относительно новой области обмена ключами с аутентификацией по паролю. Впервые он был описан Дэвидом Джаблоном в 1996 году. [1] В этой публикации Джаблон также предложил вариант, в котором на шаге 2 протокола g вычисляется как g = g q S с константой g q . Однако эта конструкция оказалась небезопасной для атак по словарю и поэтому больше не рекомендовалась в пересмотренной версии статьи. В 1997 году Джаблон усовершенствовал и улучшил SPEKE дополнительными вариациями, включая расширенный метод согласования ключей с аутентификацией по паролю, называемый B-SPEKE. [2] В статье, опубликованной Маккензи в 2001 году, представлено доказательство в модели случайного оракула того, что SPEKE является безопасным протоколом PAKE (с использованием несколько смягченного определения), основанным на вариации предположения о решении Диффи-Хеллмана. [3] Однако доказательство рассматривает функцию подтверждения ключа в SPEKE как обязательную, что не соответствует спецификации SPEKE в стандартах IEEE P1363.2 и ISO/IEC 11770-4.
С 1999 года этот протокол использовался несколькими компаниями в различных продуктах, как правило, в дополнение к другим криптографическим методам.
В 2014 году были выявлены две атаки на протокол SPEKE, как указано в оригинальной статье Jablon 1996 года и в стандартах IEEE P1363.2 (D26) и ISO/IEC 11770-4 (2006). [4] Первая атака позволяет активному злоумышленнику выдавать себя за пользователя, не зная пароля, путем запуска двух параллельных сеансов с жертвой. Вторая атака позволяет злоумышленнику-посреднику манипулировать ключом сеанса между двумя честными пользователями, не будучи обнаруженным. Первая атака указывает на практическую слабость протокола, в то время как вторая атака имеет теоретические последствия для доказательств безопасности SPEKE. Во время встречи ISO/IEC JTC 1/SC 27 в Мехико в октябре 2014 года эти две атаки обсуждались техническим комитетом в ISO/IEC SC 27/Work Group 2, и было решено, что спецификация SPEKE в ISO/IEC 11770-4 (2006) должна быть пересмотрена для решения выявленных проблем. Предлагаемый патч включает явное определение идентификаторов сеансов и включение этих идентификаторов в функцию выведения ключей таким образом, чтобы не изменить симметрию протокола. Исправленный SPEKE был опубликован в ISO/IEC 11770-4 (2017). [5] Однако спецификация SPEKE в IEEE P1363.2 остается неисправленной.
Патент США 6,226,383 описывает несколько вариантов метода. Этот патент истек в марте 2017 года.
Стандарты, описывающие SPEKE, включают IEEE P1363 .2 и ISO/IEC 11770-4. В последнем стандарте ISO/IEC 11770-4 (2017) спецификация SPEKE пересмотрена по сравнению с предыдущей в ISO/IEC 11770-4 (2006) для решения двух атак, о которых сообщили Хао и Шахандашти в 2014 году. [4]