Round5

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

Round5 — это постквантовая система шифрования с открытым ключом, основанная на общей задаче обучения с округлением (General Learning with Rounding (GLWR))[1]. Данная система является альтернативой для алгоритмов RSA и эллиптических кривых и предназначена для защиты от атак квантовыми компьютерами[2]. Round5 состоит из алгоритмов, предназначенных для реализаций механизма инкапсуляции ключей (key encapsulation mechanism (KEM)) и схемы шифрования с открытым ключом (public-key encryption (PKE)). Данные алгоритмы попадают под категорию криптография на решётках.

Round5 представляет собой слияние двух систем: Round2[3], основанная также на задаче GLWR, и HILA5Шаблон:Sfn, имеющая код исправления ошибок[1].

Введение

Если крупные квантовые компьютеры когда-либо будут построены, то они смогут взломать многие криптосистемы с открытым ключом, используемые в настоящее время. Это серьёзно подорвало бы конфиденциальность и целостность цифровых коммуникаций в Интернете. Целью пост-квантовой криптографии является разработка криптографических систем, которые защищены как от квантовых, так и от классических компьютеров и могут взаимодействовать с существующими протоколами связи и сетями[4].

Обозначения

  • Пусть a — целое положительное число, тогда за a обозначим набор чисел {0,1,,a1}. Для набора A через a$A обозначим случайный и равновероятный выбор a из A.
  • Пусть n+1 — простое число. Φn+1(x) — циклотомический полином равный xn+xn1++x+1. Многочлен Nn+1(x) равен xn+11=Φn+1(x)(x1).
  • Кольцо многочленов [x]/Φn+1(x) обозначим n. n,a — это набор многочленов таких, что их степень меньше n и их коэффициенты лежат в a, а n,ab — это множество таких векторов размерности b (b — положительное целое число), что каждая компонента любого вектора принадлежит n,a.
  • n называется троичным, если все его коэффициенты равны 0,1 или 1.
  • Для любого элемента υn вес Хемминга определяется как число ненулевых коэффициентов. n(h) определяется как множество троичных полиномов степени меньше n с весом Хемминга h. В Round5 такие многочлены к тому же ещё являются сбалансированными и разреженными, то есть имеют ровно h/2 коэффициентов равных +1 и столько же равных 1 (сбалансированные), и при этом h принимает фиксированное значение (разреженные).
  • {0,1}k — это множество всех таких наборов длины k, состоящие из нулей и единиц.
  • Для рационального числа x обозначим: x— округление вниз до целого, а x — округление до ближайшего целого. Взятие остатка от деления обозначим как xa, то есть xa=xmoda[1][2].

Задача GLWR

Пусть d,n,p,q — положительные целые числа, такие что qp2 и n равняется 1 или d. Ds является распределением вероятности по n,qd/n. Выбор элемента 𝐬 из n,qd/n в соответствии с распределением Ds обозначим как 𝐬Ds[1].

Версия поиска

Имеется m примеров формы pq𝐚iT𝐬Φn+1(x)p, где 𝐚in,qd/n и 𝐬Ds фиксирован, требуется найти 𝐬[1].

Версия решения

Сложность данной версии заключается в различении равномерного распределения по n,qd/n×n,p и распределения (𝐚i,bi), где 𝐚i$n,qd/n, 𝐬Ds фиксирован и bi=pq𝐚iT𝐬Φn+1(x)p[1].

Виды задачи GLWR

Ключевой особенностью Round5 является то, что её можно реализовать на основе таких задач как обучение с округлением (Learning with Rounding (LWR)), так и кольцевое обучение с округлением (Ring Learning with Rounding (RLWR)) единым способом, что приводит к уменьшению затрат на анализ и обслуживание кода[1].

Каждая из этих задач получается из задачи GLWR. Чтобы поставить задачу LWR, в GLWR нужно n принять равной 1, а RLWR — n принять равной d[1].

Алгоритмы на основе LWR требуются в средах, где производительность не так важна по сравнению с безопасностью[1].

Напротив, по сравнению с LWR, в алгоритмах на основе RLWR вычисления более просты и эффективны. К тому же эти алгоритмы менее требовательны к полосе пропускания, поэтому они лучше подходят для тех сред, где накладываются более строгие требования к каналам передачи информации, например, там, где могут возникнуть трудности с фрагментацией сообщений или MTU слишком мал[1].

Основа Round5

Схема шифрования

Основой Round5 является схема шифрования r5_cpa_pke, надёжная в смысле IND-CPA. r5_cpa_pke похожа на схему шифрования Эль-Гамаля с шумом. Здесь приведены алгоритмы для задачи GLWR. Для того, чтобы получить алгоритмы для задач LWR или RLWR, нужно выбрать n равной 1 или d соответственно[2][1].

Параметры схемы шифрования r5_cpa_pke: n,d,h,p,q,t,b,n¯,m¯,μ,f,τ — целые положительные числа, k — параметр безопасности (длина сообщения в битах), m(x) — многочлен, коэффициенты которого являются сообщением и равны 0 или 1 (m(x)=m0+m1x++mk1xk1). n¯,m¯ — число столбцов в секретных матрицах. Модули p,q,t,b являются степенями двойки, так что b делит t, t делит p и p делит q. Требуется, чтобы μnn¯m¯ и μklog2(b). h — вес Хемминга многочленов, являющихся секретными. ξ(x) — многочлен Φn+1(x) или Nn+1(x). 𝑱 — это матрица, вся заполненная 1[1][2].

Алгоритм создания ключа


Algorithm 1: r5_cpa_pke_keygen()
1. σ${0,1}k
2. 𝑨=fd,n(τ)(σ)
3. sk${0,1}k
4. 𝑺=fS(sk)
5. 𝑩=pq(𝑨𝑺Φn+1(x)+h1𝑱)p
6. pk=(σ,𝑩)
7. return (pk,sk)
  1. σ равновероятно выбирается из множества {0,1}k.
  2. На основе σ вычисляется открытая квадратная матрица 𝑨 размера d/n×d/n, элементы которой принадлежат множеству n,q (в случае RLWR (n=d) это один многочлен, если LWR (n=1) — матрица из элементов, лежащих в q). Для этого применяется функция fd,n(τ)(σ), использующая детерминированный генератор случайных битов[5] и перестановки, определяемые параметром τ.
  3. Как и σ, секретный ключ sk выбирается случайно из {0,1}k.
  4. На основе sk вычисляется секретная матрица 𝑺 размера d/n×n¯, элементы которой принадлежат множеству n(h) (в случае RLWR (n=d) это вектор, состоящий из троичных многочленов, если LWR (n=1) — матрица, состоящая из 0,1 и 1). Для этого используется функция fS(sk), использующая также детерминированный генератор случайных битов.
  5. Вычисляется матрица 𝑩 размера d/n×n¯, состоящая из элементов n,p, следующим образом:
    1. Элементы матрицы, равной произведению 𝑨 на 𝑺, вычисляются по модулю Φn+1(x). Затем к каждому элементу прибавляется постоянная округления h1=q2p.
    2. Каждый элемент умножается на дробь pq.
    3. Коэффициенты всех многочленов полученной матрицы округляются в меньшую сторону до ближайшего целого и берутся по модулю p.
  6. Открытый ключ представляет собой набор из σ и 𝑩[1][2].

Алгоритм шифрования


Algorithm 2: r5_cpa_pke_encrypt(pk,m)
1. 𝑨=fd,n(τ)(σ)
2. 𝑹=fR(ρ)
3. 𝑼=pq(𝑨T𝑹Φn+1(x)+h2𝑱)p
4. 𝑼~=𝑼T
5. υ=tp(Sampleμ𝑩T𝑹ξ(x)+h2𝑱)+tbxef_computek,f(m)t
6. ct=(𝑼~,𝒗)
7. return ct
  1. Так же, как и при вычислении ключей, находится матрица 𝑨.
  2. Вводится элемент множества {0,1}k — ρ. На его основе при помощи функции fR(ρ) вычисляется секретная матрица 𝑹 размера d/n×m¯, элементы которой принадлежат множеству n(h) (в случае RLWR (n=d) это вектор, состоящий из троичных многочленов, если LWR (n=1) — матрица, состоящая из 0,1 и 1).
  3. Используя матрицы 𝑨, 𝑹 и постоянную округления h2=q2z (z=max(p,tqp)), вычисляется матрица 𝑼 аналогично как в алгоритме создания ключей.
  4. Транспонированная 𝑼 есть первая компонента шифротекста.
  5. Вторая компонента шифротекста — вектор 𝒗, элементы которого лежат в t. Поскольку не все компоненты 𝒗 необходимы для шифрования k-битового сообщения m, используется функция Sampleμ.
    1. Если n=d, то 𝑩T𝑹ξ(x) — это многочлен и Sampleμ принимает его на вход, а на выходе выдаёт набор всех коэффициентов, соответствующих членам со степенью меньших μ : c0+c1x++cμ1xμ1+cμxμ++cnxn(c0,c1,,cμ1).
    2. Если n=1, то 𝑩T𝑹ξ(x) — это матрица M, состоящая из целых чисел и Sampleμ выдаёт первые μ чисел этой матрицы:M0,0,M0,1,,M0,n¯1нулевая строка,,Mi1,0,Mi1,1,,Mi1,j1i1-ая строкаμкоэффициентов, где μ=in¯+j.
    3. Получаем, что 𝒗 содержит только μ компонент.
  6. Таким образом, получаем шифротекст ct=(𝑼~,𝒗)[1][2].

Использование Sampleμ делает шифрование и дешифрование более эффективными, поскольку в зашифрованном тексте необходимо вычислять только коэффициенты μ вместо всех n[1][2].

Так же для уменьшение вероятности ошибок применяются функции кодирования xef_computek,f(m(x)) при шифровании и декодированияxef_correctk,f при дешифровании . Функция xef_computek,f(m(x)) преобразует многочлен m(x) в набор двоичных коэффициентов размера μ. Затем этот набор складывается с набором ошибок e=(e0,,eμ1), где каждый ei равен 0 или 1, причём количество единиц в наборе ошибок не должно быть больше чем f для однозначного декодирования[1][2].

xef_correctk,f(xef_computek,f(m(x))+e)=m[1][2].

Алгоритм дешифрования

Algorithm 2: r5_cpa_pke_decrypt(sk,ct)
1. 𝒗p=pt𝒗
2. 𝑺=fS(sk)
3. 𝑼=𝑼~T
4. 𝒚=bp(𝒗pSampleμ𝑺T(𝑼+h4𝑱)ξ(x)+h3𝑱)b
5. m^=xef_correctk,f(𝒚)
6. return m^
  1. Вычисляется вектор 𝒗p.
  2. На основе закрытого ключа находится секретная матрица 𝑺 такая же, как в алгоритме создания ключей.
  3. Транспонированием 𝑼~ находится матрица 𝑼, вычисленная в алгоритме шифрования.
  4. Происходит дешифрование сообщения. h3=p2t+p4q2p, h4=q2pq2z.
  5. Исправляются ошибки. Таким образом получаем исходное сообщение m^[1][2].

Достоинства Round5

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

Так как секретные ключи в Round5 являются разреженными, троичными и сбалансированными, снижается вероятность ошибок при расшифровки и ускоряются вычисления. Последнему факту также помогает то, что ненулевые коэффициенты многочленов равны либо +1, либо −1, что подразумевает, что умножения могут быть выполнены с использованием только сложений и вычитаний[2].

Благодаря тому, что модули p,q,t,b являются степенями двойки, упрощается реализация функции округления, поскольку её можно реализовать, отбрасывая младшие биты. Аналогично, модульные вычисления могут быть реализованы путём отбрасывания старших битов[1].

Возможное применение

Спектр применения системы Round5 широк. Она может быть использована как в сфере интернет вещей, так и для систем с высоким уровнем секретности. Это достигается тем, что для неё можно легко и точно выбрать параметры, например n, τ, f и ξ(x)[2].

Примечания

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

Литература

Ссылки