Скрытые уравнения поля
Скрытые уравнения поля (HFE, анг. Hidden Field Equations) — разновидность криптографической системы с открытым ключом, которая является частью многомерной криптографии. Также известна как односторонняя функция с потайным входом HFE. Данная система является обобщением системы Матцумото-Имаи и впервые была представлена Жаком Патарином в 1996 году на конференции Eurocrypt.[1]
Система скрытых уравнений поля основана на многочленах над конечными полями [math]\displaystyle{ K }[/math] разного размера, чтобы замаскировать связь между закрытым ключом и открытым ключом.[2]
HFE на самом деле является семейством, которое состоит из основных HFE и комбинаций версий HFE. Семейство криптосистем HFE основано на трудности поиска решений системы многомерных квадратных уравнений (так называемой задаче MQ[3]), поскольку она использует частные аффинные преобразования, чтобы скрыть расширение поля и частные полиномы. Скрытые уравнения поля также использовались для построения схем цифровой подписи, таких как Quartz and Sflash.[2][1]
Основная идея[1]
Функция [math]\displaystyle{ f }[/math]
- Пусть [math]\displaystyle{ K }[/math] — конечное поле размерности [math]\displaystyle{ q }[/math] с характеристикой [math]\displaystyle{ p }[/math](обычно, но не обязательно [math]\displaystyle{ p = q = 2 }[/math]).
- Пусть [math]\displaystyle{ L_N }[/math] — расширение [math]\displaystyle{ K }[/math] степени [math]\displaystyle{ N }[/math].
- Пусть [math]\displaystyle{ \beta_{ij} }[/math], [math]\displaystyle{ \alpha_i }[/math] и [math]\displaystyle{ \mu_0 }[/math] — элементы [math]\displaystyle{ L_N }[/math].
- Пусть [math]\displaystyle{ \theta_{ij} }[/math], [math]\displaystyle{ \varphi_{ij} }[/math] и [math]\displaystyle{ \xi_i }[/math] — целые.
- Наконец, пусть [math]\displaystyle{ f }[/math] — функция такая, что:[math]\displaystyle{ L_N \mapsto L_N }[/math][math]\displaystyle{ f:x\mapsto\sum_{i,j}{\beta_{ij}x^{q^{\theta_{ij}} + q^{\varphi_{ij}}}} + \sum_i{\alpha_ix^{q^{\xi_i}}} + \mu_0 }[/math]
Тогда [math]\displaystyle{ f }[/math] является многочленом от [math]\displaystyle{ x }[/math].
Пусть теперь [math]\displaystyle{ B }[/math] будет базисом [math]\displaystyle{ L_N }[/math]. Тогда выражение [math]\displaystyle{ f }[/math] в базисе [math]\displaystyle{ B }[/math] :
[math]\displaystyle{ f(x_1, ..., x_N) = (p_1(x_1, ..., x_N), ..., p_N(x_1, ..., x_N)) }[/math]где [math]\displaystyle{ p_1,...,p_N }[/math] — [math]\displaystyle{ N }[/math] многочленов от [math]\displaystyle{ N }[/math] переменных степени 2.
Это верно, так как для любого целого [math]\displaystyle{ \lambda }[/math], [math]\displaystyle{ x\mapsto x^{q^\lambda} }[/math] является линейной функцией [math]\displaystyle{ L_N \mapsto L_N }[/math]. Многочлены [math]\displaystyle{ p_1,...,p_N }[/math] могут быть найдены путем выбора «представления» [math]\displaystyle{ L_N }[/math]. Такое «представление» обычно задается выбором неприводимого многочлена [math]\displaystyle{ i_N(X) }[/math] степени [math]\displaystyle{ N }[/math] над [math]\displaystyle{ K }[/math], поэтому мы можем задать [math]\displaystyle{ L_N }[/math] с помощью [math]\displaystyle{ K[X]/(i_N(X)) }[/math]. В этом случае возможно найти многочлены [math]\displaystyle{ p_1,...,p_N }[/math].
Инверсия [math]\displaystyle{ f }[/math]
Следует заметить, что [math]\displaystyle{ f }[/math] не всегда является перестановкой [math]\displaystyle{ L_N }[/math] . Однако основой алгоритма HFE является следующая теорема.
Теорема: Пусть [math]\displaystyle{ L_N }[/math] — конечное поле, причем [math]\displaystyle{ \mid{L_N}\mid = q^n }[/math] с [math]\displaystyle{ q }[/math] и [math]\displaystyle{ n }[/math] «не слишком большими» (например, [math]\displaystyle{ q\leq{64} }[/math] и [math]\displaystyle{ n\leq{1024} }[/math]). Пусть [math]\displaystyle{ f(x) }[/math] — заданный многочлен от [math]\displaystyle{ x }[/math] над полем [math]\displaystyle{ L_N }[/math] со степенью [math]\displaystyle{ d }[/math] «не слишком большой» (например, [math]\displaystyle{ d\leq{1024} }[/math]). Пусть [math]\displaystyle{ a }[/math] — элемент поля [math]\displaystyle{ L_N }[/math]. Тогда всегда (на компьютере) можно найти все корни уравнения [math]\displaystyle{ f(x)=a }[/math].
Шифрование[1]
Представление сообщения [math]\displaystyle{ M }[/math]
В поле [math]\displaystyle{ K }[/math] количество публичных элементов [math]\displaystyle{ q=p^m }[/math].
Каждое сообщение [math]\displaystyle{ M }[/math] представлено значением [math]\displaystyle{ x }[/math], где [math]\displaystyle{ x }[/math] — строка из [math]\displaystyle{ n }[/math] элементов поля [math]\displaystyle{ K }[/math]. Таким образом, если [math]\displaystyle{ p=2 }[/math], то каждое сообщение представлено [math]\displaystyle{ nm }[/math] битами. Более того, иногда предполагается, что в представление [math]\displaystyle{ x }[/math] сообщений была помещена некоторая избыточность [math]\displaystyle{ r }[/math].
Шифрование [math]\displaystyle{ x }[/math]
Cекретная часть
- Расширение [math]\displaystyle{ L_n }[/math] поля [math]\displaystyle{ K }[/math] степени [math]\displaystyle{ n }[/math].
- Функция [math]\displaystyle{ f }[/math]:[math]\displaystyle{ {L_n}\mapsto{L_n} }[/math], которая была описана выше, с «не слишком большой» степенью [math]\displaystyle{ d }[/math].
- Два аффинных преобразования [math]\displaystyle{ S }[/math] и [math]\displaystyle{ T }[/math]: [math]\displaystyle{ {K^n}\mapsto{K^n} }[/math]
Публичная часть
- Поле [math]\displaystyle{ K }[/math] c [math]\displaystyle{ q=p^m }[/math] элементами и длина [math]\displaystyle{ n }[/math].
- [math]\displaystyle{ n }[/math] многочленов [math]\displaystyle{ (p_1,...,p_n) }[/math] размерности [math]\displaystyle{ n }[/math] над полем [math]\displaystyle{ K }[/math].
- Способ добавления избыточности [math]\displaystyle{ r }[/math] в сообщениях (то есть способ получения [math]\displaystyle{ x }[/math] из [math]\displaystyle{ M }[/math]).
Основная идея построения семейства систем скрытых уравнений поля в качестве многомерной криптосистемы заключается в построении секретного ключа, начиная с полинома [math]\displaystyle{ P }[/math] с одним неизвестным [math]\displaystyle{ x }[/math] над некоторым конечным полем [math]\displaystyle{ L_N }[/math].[2] Этот полином может быть инвертирован над [math]\displaystyle{ L_N }[/math], то есть может быть найдено любое решение уравнения [math]\displaystyle{ P(x)=y }[/math], если оно существует. Преобразование секрета, также как и расшифровка или/и подпись, основано на этой инверсии.
Как было сказано выше, [math]\displaystyle{ P }[/math] можно идентифицировать системой [math]\displaystyle{ n }[/math] уравнений [math]\displaystyle{ (p_1,...,p_n) }[/math], используя фиксированный базис. Для того чтобы построить криптосистему, полином [math]\displaystyle{ (p_1,...,p_n) }[/math] должен быть преобразован таким образом, чтобы публичная информация скрывала первоначальную структуру и предотвращала инверсию. Это достигается рассмотрением конечных полей [math]\displaystyle{ \mathbb{L}_{n} }[/math] в качестве векторного пространства над [math]\displaystyle{ \mathbb{K} }[/math] и выбором двух линейных аффинных преобразований [math]\displaystyle{ S }[/math] и [math]\displaystyle{ T }[/math]. Триплет [math]\displaystyle{ (S,P,T) }[/math] формирует приватный ключ. Приватный полином [math]\displaystyle{ P }[/math] определён на [math]\displaystyle{ \mathbb{L}_{n} }[/math]. Публичным ключом является полином [math]\displaystyle{ (p_1,...,p_n) }[/math].[2]
- [math]\displaystyle{ M\overset{+r}{\to}x\overset{\text{секрет}: S}{\to}x'\overset{\text{секрет}: P}{\to}y'\overset{\text{секрет}: T}{\to}y }[/math]
Расширения HFE
Скрытые уравнения поля имеют четыре основных модификации: +, -, v и f, и их можно комбинировать по-разному. Основной принцип заключается в следующем[2]:
- Модификация «+» состоит из линейного комбинирования публичных уравнений с некоторыми случайными уравнениями.
- Модификация «-» появился благодаря Ади-Шамиру и удаляет избыточность «[math]\displaystyle{ r }[/math]» из публичных уравнений.
- Модификация «f» состоит из фиксации некоторых входных переменных [math]\displaystyle{ f }[/math] открытого ключа.
- Модификация «v» определяется как сложная конструкция, такая что обратная функция может быть найдена только в том случае, если некоторые v переменных фиксированы. Эта идея принадлежит Жаку Патарину.
Атаки на криптосистемы HFE
Две самые известные атаки на систему скрытых уравнений поля[4]:
- Получение закрытого ключа (Шамир-Кипнис): ключевым моментом этой атаки является восстановление закрытого ключа как разреженных одномерных многочленов над полем расширений [math]\displaystyle{ L_n }[/math]. Атака работает только для базовой системы скрытых уравнений поля и не работает для всех её вариаций.
- Атака, основанная на алгоритме Грёбнера (разработана Жаном-Чарльзом Фужером): идея атаки заключается в использовании быстрого алгоритма для вычисления базиса Грёбнера системы полиномиальных уравнений. Фужер взломал HFE в рамках the HFE Challenge 1 за 96 часов в 2002 году. В 2003 году Фужер вместе с Жу работали над безопасностью HFE.
Примечания
- ↑ 1,0 1,1 1,2 1,3 Jacques Patarin Hidden Field Equations (HFE) and Isomorphic Polynomial (IP): two new families of asymmetric algorithm . Дата обращения: 15 декабря 2017. Архивировано 2 февраля 2017 года.
- ↑ 2,0 2,1 2,2 2,3 2,4 Christopher Wolf and Bart Preneel, Asymmetric Cryptography: Hidden Field Equations . Дата обращения: 8 декабря 2017. Архивировано 10 августа 2017 года.
- ↑ Enrico Thomae and Christopher Wolf, Solving Systems of Multivariate Quadratic Equations over Finite Fields or: From Relinearization to MutantXL . Дата обращения: 8 декабря 2017. Архивировано 10 августа 2017 года.
- ↑ Nicolas T. Courtois, "The Security of Hidden Field Equations" .