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,⋯,a−1}. Для набора A через a←$A обозначим случайный и равновероятный выбор a из A.
  • Пусть n+1 — простое число. 𝛷n+1(x) — циклотомический полином равный xn+xn−1+⋯+x+1. Многочлен Nn+1(x) равен xn+1−1=𝛷n+1(x)(x−1).
  • Кольцо многочленов ℤ[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⌉ — округление до ближайшего целого. Взятие остатка от деления обозначим как ⟨x⟩a, то есть ⟨x⟩a=xmoda[1][2].

Задача GLWR

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

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

Имеется m примеров формы ⟨⌊pq⟨𝐚iT𝐬⟩𝛷n+1(x)⌋⟩p, где 𝐚i∈ℛn,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+⋯+mk−1xk−1). n¯,m¯ — число столбцов в секретных матрицах. Модули p,q,t,b являются степенями двойки, так что b делит t, t делит p и p делит q. Требуется, чтобы μ≤n⋅n¯⋅m¯ и μ≥k⋅log2(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⏟нулевая строка,⋯,Mi−1,0,Mi−1,1,⋯,Mi−1,j−1⏟i−1-ая строка⏞μкоэффициентов, где μ=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(𝒗p−Sampleμ⟨𝑺T(𝑼+h4𝑱)⟩ξ(x)+h3𝑱)⌋⟩b
5. m̂=xef_correctk,f(𝒚)
6. return m̂
  1. Вычисляется вектор 𝒗p.
  2. На основе закрытого ключа находится секретная матрица 𝑺 такая же, как в алгоритме создания ключей.
  3. Транспонированием 𝑼~ находится матрица 𝑼, вычисленная в алгоритме шифрования.
  4. Происходит дешифрование сообщения. h3=p2t+p4−q2p, h4=q2p−q2z.
  5. Исправляются ошибки. Таким образом получаем исходное сообщение m̂[1][2].

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

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

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

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

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

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

Примечания

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

Литература

Ссылки