Русская Википедия:Подпись на основе обучения с ошибками в кольце

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Подпись при обучении с ошибками в кольце (Шаблон:Lang-en) — один из классов криптосистем с открытым ключом, основанный на задаче обучения с ошибками в кольце[1], который заменяет используемые алгоритмы подписи RSA и ECDSA. В течение последнего десятилетия проводились активные исследования по созданию криптографических алгоритмов, которые остаются безопасными, даже если у злоумышленника есть ресурсы квантового компьютера[2][3]. Подпись при обучении с ошибками в кольце относится к числу пост-квантовых[2][3] подписей с наименьшим открытым ключом и размерами подписи. Использование общей проблемы обучения с ошибками в криптографии было введено Одедом Регевым в 2005 году и послужило источником нескольких криптографических разработок[4]. Основоположники криптографии при обучении с ошибками в кольце (англ. Ring learning with errors, RLWE), считают, что особенностью этих алгоритмов, основанных на обучении с ошибками, является доказуемое сокращение известных сложных задач[1][5]. Данная подпись имеет доказуемое сокращение до задачи нахождения кратчайшего вектора в области криптографии на решётках[6]. Это означает, что если можно обнаружить атаку на криптосистему RLWE, то целый класс предполагаемых сложных вычислительных проблем будет иметь решение[7]. Первая подпись на основе RLWE была разработана Вадимом Любашевским[8] и уточнена в 2011 году[9]. Данная статья освещает фундаментальные математические основы RLWE и основана на схеме под названием GLYPH[10].

Предпосылки

Цифровая подпись является средством защиты информации и средством проверки подлинности источника информации. Криптография с открытым ключом предоставляет богатый набор различных криптографических алгоритмов для создания цифровых подписей. Тем не менее, подписи с открытым ключом, используемые в настоящее время, станут совершенно небезопасными после появления квантовых компьютеров[2][11][12].Потому как даже относительно небольшой квантовый компьютер, способный обрабатывать только лишь десять тысяч битов информации, сможет легко взломать все широко используемые алгоритмы шифрования с открытым ключом, используемые для защиты конфиденциальности и цифровой подписи в Интернете[2][13]. RSA, как один из наиболее широко используемых алгоритмов с открытым ключом для создания цифровых подписей, также становится уязвимым благодаря квантовым компьютерам, так как его безопасность основана на классической сложности задач факторизацииШаблон:Sfn . А квантовый компьютер, обладающий примерно 6n кубитами памяти и способный выполнять алгоритм Шора, легко может произвести факторизацию произведения двух n-разрядных простых чисел, а также взломать цифровые подписи на основе задач дискретного логарифма и дискретного логарифма эллиптической кривой[14] за обозримое время[15]. Предпосылки к появлению таких компьютеров имеются уже сейчас. Так, например, 20 сентября 2019 Financial Times сообщила: «Google утверждает, что достигла квантового превосходства на массиве из 54 кубитов, из которых 53 были функциональными и использовались для выполнения вычислений за 200 секунд, на что обычному суперкомпьютеру потребовалось бы около 10 000 лет»[16]. Таким образом, относительно небольшой квантовый компьютер, используя алгоритмом Шора, может быстро взломать все цифровые подписи, используемые для обеспечения конфиденциальности и целостности информации в Интернете сегодня[15].

Введение

Криптографические примитивы, основанные на сложных задачах теории решёток, играют ключевую роль в области постквантовых криптографических исследований. Во 2 раунде внесения представлений о постквантовой криптографии, названных NIST[17], 12 из 26 основаны на решётках и большинство из них основаны на проблеме обучения с ошибками (англ. Learning With Errors, LWE) и её вариантах. Было предложено огромное количество криптографических примитивов на основе LWE, таких как шифрование с открытым ключом, протоколы обмена ключами, цифровые подписи, семейства псевдослучайных функций и другие[18]. Криптографические протоколы, основой которых служит задача LWE, являются такими же безопасными, как и протоколы, основывающиеся на задачах теории решёток, которые на сегодняшний день полагаются чрезвычайно сложными. Тем не менее, криптографические примитивы, основанные на задаче LWE страдают от больших размеров ключей, следовательно, они обычно являются неэффективными[18].Этот недостаток стимулировал людей к развитию более эффективных вариантов LWE, таких как обучение с ошибками в кольце(англ. Ring Learning with errors, RLWE)[1]. Было показано, что задача RLWE также вычислительно трудна, как и наисложнейшие задачи теории решёток над специальными классами идеальных решёток[1], и криптографические приложения RLWE обычно имеют большую эффективность по сравнению с обычными LWE, особенно в циклотомическом полиномиальном кольце, приведённым по модулю многочлена, степень которого является спепенью 2[18].

Задача RLWE

Шаблон:Основная статья Подпись RLWE работает в кольце многочленов по модулю многочлена <math>\Phi (x)</math> степени <math>n</math> с коэффициентами в конечном поле <math>Z_q</math> для нечётного простого числа <math>q</math>. Множество многочленов над конечным полем с операциями сложения и умножения образует бесконечное полиномиальное кольцо <math>F_q[x]</math>[9]. Умножение и сложение полиномов будет работать как обычно с результатом, приведённым по модулю <math>\Phi (x)</math>(то есть кольцо <math>F_q[x] / \Phi(x)</math>). Типичный многочлен выражается как:

<math>a(x) = a_0 + a_1x + a_{2}x^2 + \ldots + a_{n-3}x^{n-3} + a_{n-2}x^{n-2} + a_{n-1}x^{n-1}</math>

Поле <math>Z_q</math> имеет свои элементы в наборе <math> \{ -(q-1)/2, ...-1, 0, 1, ... (q-1)/2 \} </math>. Если <math>n </math> — это степень двух, то многочлен <math> \Phi (x)</math> будет круговым многочленом <math>x^n + 1</math>. Возможны другие варианты выбора <math>n </math>, но соответствующие круговые многочлены являются более эффективными[9].

Существуют две различных постановки задачи обучения с ошибками в кольце первый вариант — «поиск», второй вариант — «решение»[1].

Положим: <math>a_i(x)</math> — множество случайных, но известных полиномов из <math>Z_q[x]/\Phi(x)</math> с различными коэффициентами для всех <math>F_q</math>, <math>e_i(x)</math> — множество малых случайных и неизвестных полиномов относительно границы <math>b</math> в кольце <math>Z_q[x]/\Phi(x)</math>, <math>s(x)</math> — малый неизвестный полином относительно границы <math>b</math> в кольце <math>Z_q[x]/\Phi(x)</math>, <math>b_i(x) = (a_i(x)\cdot s(x)) + e_i(x)</math>.

Поиск: найти полином <math>s(x)</math> по списку полиномиальных пар <math>( a_i(x), b_i(x) )</math>

Решение: данный список полиномиальных пар <math>( a_i(x), b_i(x) )</math> определяет были ли полиномы <math>b_i(x)</math> построены как <math>b_i(x) = (a_i(x)\cdot s(x)) + e_i(x)</math> или были сгенерированы случайным образом из <math>Z_q[x]/\Phi(x)</math> с коэффициентами из всех <math>F_q</math>.

Сложность данной задачи заключается в выборе фактор-полинома <math>\Phi(x)</math> степени <math>n</math>, над полем <math>F_q</math> и границей <math>b</math>. Во многих алгоритмах, основывающихся на RLWE, закрытый ключ будет парой «малых» полиномов <math>s(x)</math> и <math>e(x)</math>. Тогда соответствующий ему открытый ключ будет парой полиномов <math>a(x)</math>, выбранный случайно из <math>Z_q[x]/\Phi(x)</math>, и полинома <math>t(x)= (a(x)\cdot s(x)) + e(x)</math>. Данные <math>a(x)</math> и <math>t(x)</math> полиномы должны быть вычислительно неразрешимы для задачи восстановления полинома <math>s(x)</math>[1][6].

Циклотомический класс

Циклотомическим классом над полем <math>\mathbb{F}_q,\;q=p^s</math>, порождённым некоторым элементом <math>\alpha\in\mathbb{F}_Q,\;Q=p^S</math> называется множество всех различных элементов <math>\mathbb{F}_Q</math>, являющихся <math>q</math>-ми степенями <math>\alpha</math>Шаблон:Sfn.

Если <math>\alpha</math> — примитивный элементШаблон:Sfn (такой элемент, что <math>\alpha^{Q-1}=1</math> и <math>\alpha^k\neq 1</math> при <math>0<k<Q-1</math>) поля <math>\mathbb{F}_Q,\;Q=q^m</math>, то циклотомический класс <math>C=\{\alpha,\;\alpha^q,\;\alpha^{q^2},\;\ldots,\;\alpha^{q^{m-1}}\}</math> над полем <math>\mathbb{F}_q</math> будет иметь ровно <math>m</math> элементов. Любой элемент из циклотомического класса может порождать этот и только этот класс, а, следовательно, и принадлежать только ему.

Пример 1. Пусть <math>q=2</math>, <math>Q=2^3=8</math> и <math>\alpha</math> — примитивный элемент поля <math>\mathbb{F}_8</math>, то есть <math>\alpha^7=1</math> и <math>\alpha^i\neq 1</math> при <math>i<7</math>. Учитывая также, что <math>\alpha^8=\alpha</math>, можно получить разложение всех ненулевых элементов поля <math>\mathbb{F}_8</math> на три циклотомических класса над полем <math>\mathbb{F}_2</math>:

<math>\begin{matrix}

\{1\}, \\ \{\alpha,\;\alpha^2,\;\alpha^4\}, \\ \{\alpha^3,\;\alpha^6,\;\alpha^5\}. \end{matrix}</math>

Пример 2. Аналогично можно построить классы на поле <math>\mathbb{F}_{16}</math> над полем <math>\mathbb{F}_4</math>, то есть <math>q=4,\;Q=q^2=16</math>. Пусть <math>\alpha</math> — примитивный элемент поля <math>\mathbb{F}_{16}</math>, значит <math>\alpha^{15}=1,\;\alpha^{16}=\alpha</math>.

<math>\begin{matrix}

\{1\}, \\ \{\alpha,\;\alpha^4\},\;\{\alpha^2,\;\alpha^8\}, \\ \{\alpha^3,\;\alpha^{12}\},\;\{\alpha^5\},\;\{\alpha^{10}\}, \\ \{\alpha^6,\;\alpha^9\},\;\{\alpha^7,\;\alpha^{13}\}, \\ \{\alpha^{11},\;\alpha^{14}\}. \end{matrix}</math>

Генерация «небольших» полиномов

Подпись RLWE использует многочлены, которые считаются «малыми» по отношению к равномерной норме. Равномерная норма для полинома является просто наибольшим абсолютным значением коэффициентов полинома, и эти коэффициенты рассматриваются как целые числа в <math>Z</math>, а не в <math>Z_q</math>[6].Алгоритм подписи создаёт случайные многочлены, равномерная норма которых мала по отношению к конкретной границе. Это легко сделать путём случайной генерации всех коэффициентов полинома <math> a_0, ..., a_{n-1} </math> так, чтобы гарантировать с большой вероятностью норму меньше или равную этой границе. Имеется два распространённых способа сделать это[9]:

  • Используя равномерное распределение: коэффициенты малого полинома равномерно выбираются из набора коэффициентов. Пусть <math>b</math> будет целым числом, которое намного меньше, чем <math>q</math>. Если мы случайным образом выберем полиномиальные коэффициенты из множества <math> \{-b, -b+1, -b+2, ... -2, -1, 0, 1, 2, ... , b-2, b-1, b\} </math>, то норма многочлена будет <math> \leqslant b </math>.
  • Используя дискретную гауссову выборку: для нечётного целого числа <math>q</math>, коэффициенты выбираются случайным образом путём выборки из набора <math> \{ -\frac{q-1}{2}, ... 0, ... \frac{q-1}{2} \} </math> в соответствии с дискретным распределением Гаусса со средним <math>0</math> и дисперсией <math>\sigma^2</math>.

В подписи RLWE GLYPH, используемой в качестве примера ниже, для коэффициентов «малых» многочленов будет использоваться метод с равномерным распределением, и значение <math>b</math> будет намного меньше значения <math>q</math>[6].

Хэширование «небольших» полиномов

Большинство алгоритмов подписи RLWE также требуют способности криптографического хэширования произвольных битовых строк в небольшие полиномы в соответствии с некоторым распределением[6][10]. В приведённом ниже примере используется хеш-функция <math>\mathsf{POLYHASH} (\omega )</math>, которая принимает битовую строку <math> \omega </math> в качестве входных данных и выводит полином с <math>n</math> коэффициентами, так что ровно <math>k</math> из этих коэффициентов имеет абсолютное значение больше нуля и меньше целочисленной границы <math>b</math>[10].

Выборка с отклонением

Ключевой особенностью алгоритмов подписи RLWE является использование метода, известного как выборка с отклонением[9][8]. В этом методе, если равномерная норма полинома подписи превышает фиксированную границу <math>\beta</math>, то этот полином будет отброшен, и процесс генерации подписи начнётся снова. Этот процесс будет повторяться до тех пор, пока равномерная норма полинома не станет меньше или равна границе. Выборка с отклонением гарантирует, что выходная подпись не может эксплуатироваться с использованием значений секретного ключа подписывающего лица[10].

В данном примере граница <math>\beta</math> будет равна <math>(b - k)</math>, где <math>b</math> — это диапазон равномерной выборки, а <math>k</math> — количество ненулевых коэффициентов, связанных с разрешённым полином[6].

Другие примеры

Согласно GLYPH[10], максимальная степень многочленов будет <math>n-1</math> и, следовательно, иметь <math>n</math> коэффициентов[6].Типичные значения для <math>n</math> являются 512 и 1024[6]. Коэффициенты этих многочленов будут элементами поля <math>F_q</math> , где <math>q</math> — нечётное простое число, соответствующее <math>1\bmod 4</math>. Для <math>n=1024</math>, GLYPH определяет <math>q = 59393, b=16383</math> и <math>k</math> — количество ненулевых коэффициентов на выходе <math>\mathsf{POLYHASH}</math> равное <math>16</math>[10].Безопасность схемы подписи тесно связана с относительными размерами <math>n, q, b, k</math>.

Как отмечено выше, многочлен <math> \Phi (x)</math>, который определяет кольцо используемых многочленов, будет равняться <math>x^n + 1</math>. Наконец, <math>a(x)</math> будет случайно выбранным и фиксированным полиномом с коэффициентами из множества <math> \{-b, ... 0, ... , b\} </math>. Все подписывающие и проверяющие сущности будут знать <math>n, q, b, k, \Phi (x), a (x) </math> и <math>\beta = b-k </math>[10].

Генерация открытого ключа

Согласно GLYPH[10], открытый ключ для подписи сообщения <math> M </math> генерируется посредством следующих шагов:

  1. Генерация двух небольших полиномов <math> s(x) </math> и <math> e(x) </math> с коэффициентами, выбранными случайно с равномерным распределением из множества <math> \{-b, ...- 1, 0, 1, ..., b\} </math>
  2. Вычисление <math> t(x) = a(x) s(x) + e(x) </math>
  3. Распределение <math> t(x) </math> как открытого ключа объекта

Полиномы <math> s(x) </math> и <math> e(x) </math> служат закрытым ключом, а <math> t(x) </math> — соответствующим открытым ключом. Безопасность этой схемы подписи основана на следующей проблеме: для заданного полинома <math> t(x) </math> необходимо найти малые полиномы <math> f_1(x) </math> и <math>f_2(x) </math>, такие что: <math> a(x)f_1(x) + f_2 (x) =t (x)</math>. Если эту задачу трудно решить, то схему подписи будет трудно подделать.

Генерация подписи

Согласно GLYPH[10], чтобы подписать сообщение <math> M </math>, выраженное в виде битовой строки, необходимо произвести следующие операции:

  1. Генерация двух небольших полиномов <math> y_1(x) </math> и <math> y_2(x) </math> с коэффициентами из множества <math> \{-b, ...- 1, 0, 1, ..., b\} </math>
  2. Вычисление <math> w(x) = a(x)y_1(x) + y_2(x) </math>
  3. Отображение <math> w(x) </math> в битовую строку <math> \omega </math>
  4. Вычисление <math> c(x) = \mathsf{POLYHASH} (\omega | M )</math> (Это многочлен с k ненулевыми коэффициентами. Символ "|" обозначает конкатенацию строк)
  5. Вычисление <math> z_1(x) = s(x)c(x) + y_1(x) </math>
  6. Вычисление <math> z_2(x) = e(x)c(x) + y_2(x) </math>
  7. Если <math>\|z_1(x)\|</math> и <math>\|z_2(x)\| > \beta = (b - k) </math>, то повторять пункты 1-6 (Норма <math>\|\cdot\|</math> — равномерная норма)
  8. Подпись — это тройка полиномов <math>c(x), z_1(x)</math> и <math> z_2(x)</math>

Проверка подписи

Согласно GLYPH[10], для проверки сообщения <math> M </math>, выраженного в виде битовой строки, необходимо использовать публичный ключ автора данного сообщения <math> t(x) </math> и цифровую подпись (<math>c(x), z_1(x), z_2(x)</math>):

  1. <math>\|z_1(x)\|</math>, и <math>\|z_2(x)\| \leqslant \beta </math>, иначе подпись не принята
  2. Вычисление <math> w'(x) = a(x)z_1(x) + z_2(x) - t(x)c(x) </math>
  3. Отображение <math> w'(x) </math> в битовую строку <math> \omega ' </math>
  4. Вычисление <math> c'(x) = \mathsf{POLYHASH} (\omega' | M )</math>
  5. Если <math> c'(x) = c(x) </math>, подпись считается действительной

Не сложно показать корректность проверки:
<math>a(x)z_1(x) + z_2(x) - t(x)c(x) = a(x)[s(x)c(x) + y_1(x)] + z_2(x) - [a(x)s(x) + e(x)]c(x) = </math>
<math> = a(x)y_1(x) + z_2(x) - e(x)c(x)= a(x)y_1(x) + e(x)c(x) + y_2(x) - e(x)c(x)=</math>
<math> = a(x)y_1(x) + y_2(x) = w(x)</math>

Возможные атаки

В работе Любошевского[1] много внимания уделяется безопасности алгоритма, однако, чтобы осветить данные свойства задачи и доказать их полное соответствие заявленным, следует провести ряд прямых атак на RLWE. Атака определяется выбором числового поля <math>K</math> и простого числа <math>q</math>, называемого модулем, наряду с распределением ошибок.

Дукас и Дурмус предложили недвойственный вариант RLWE в циклотомической постановке и доказали, что сложность нового и прежнего варианта идентичны[19]. Этот вариант RLWE порождает распределение ошибки как дискретная гауссова функция в кольце целых чисел <math>R</math> при каноническом вложении, а не в изображении двойственного идеала. Двойственный и недвойственные варианты эквиваленты вплоть до распределения ошибок[20]. Для недвойственного варианта RLWE авторы[21] предложили атаку на версию «решение» RLWE. При атаке используется модуль <math>q</math> степени вычетов 1, дающий кольцевой гомоморфизм <math>p:R</math>→ <math >F_q </math>. Атака работает, когда с подавляющей вероятностью распределение ошибок RLWE при наборе пар <math display="inline">p</math> принимает значения только в малом подмножестве <math>F_q </math>. Затем авторы[21] дают целое семейство примеров, уязвимых для атак. Однако, уязвимые числовые поля не являются полями Галуа, поэтому теорема сведения версии «поиск» к версии «решение» не применима и атака не может быть прямо использована для варианта «поиск» задачи RLWE, на что собственно была нацелена представленная работа[21].

Однако позже в другой работе[20], эта атака была обобщена на некоторые числовые поля Галуа и модули более высокой степени. В ней же была представлена её реализация для конкретных экземпляров RLWE, включая вариант сведения «поиска» к «решению». Основным её принципом было то, что гомоморфизм в кольце рассматривался в виде <math display="inline">R</math>→<math>F_q^f </math>(где, <math>f</math> — это степень <math>q</math>) для <math>f > 1</math>, и то, что распределение ошибок отличается от случайного, используя статистический критерий хи-квадрат вместо того, чтобы полагаться на значения многочлена ошибок. Авторы акцентируют внимание также на том, что ими была проведена атака на вариацию RLWE с простыми циклотомическими кольцами при определённых предположениях о модуле и частоте ошибок, которая успешно выполняется с высокой вероятностью. А именно, они показали атаку на недвойственный вариант RLWE, когда модуль равен уникальному и простому <math display="inline">p</math>.К примеру, если размерность n = 808, можно атаковать вариацию RLWE в циклотомическом кольце <math display=>Q</math>(ζ809) за 35 секунд, где модуль равен 809. Возникает тогда вопрос о том, безопасны ли циклотомические поля для криптографии в принципе, в зависимости от того, можно ли использовать большие модули (которые используются на практике) вместо тех, что были рассмотрены в примере статьи. В дополнение, авторами статьи была осуществлена ещё одна атака на двойственную RLWE версии «решение» в <math>p</math>-ом циклотомическом поле с произвольным модулем <math display="inline">q</math>, предполагая, что ширина распределения ошибок составляет значение около <math>1/\sqrt{p}</math>.

Примечания

Шаблон:Примечания

Литература

Шаблон:Криптосистемы с открытым ключом