Round5

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

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

Введение

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

Обозначения

  • Пусть a {\displaystyle a}  — целое положительное число, тогда за Z a {\displaystyle \mathbb {Z} _{a}} обозначим набор чисел { 0 , 1 , , a 1 } {\displaystyle \{0,1,\cdots ,a-1\}} . Для набора A {\displaystyle A} через a $ A {\displaystyle a{\xleftarrow[{}]{\$}}A} обозначим случайный и равновероятный выбор a {\displaystyle a} из A {\displaystyle A} .
  • Пусть n + 1 {\displaystyle n+1}  — простое число. Φ n + 1 ( x ) {\displaystyle {\mathit {\Phi }}_{n+1}(x)}  — циклотомический полином равный x n + x n 1 + + x + 1 {\displaystyle x^{n}+x^{n-1}+\cdots +x+1} . Многочлен N n + 1 ( x ) {\displaystyle N_{n+1}(x)} равен x n + 1 1 = {\displaystyle x^{n+1}-1=} Φ n + 1 ( x ) {\displaystyle {\mathit {\Phi }}_{n+1}(x)} ( x 1 ) {\displaystyle (x-1)} .
  • Кольцо многочленов Z [ x ] / Φ n + 1 ( x ) {\displaystyle \mathbb {Z} [x]/{\mathit {\Phi }}_{n+1}(x)} обозначим R n {\displaystyle {\mathcal {R}}_{n}} . R n , a {\displaystyle {\mathcal {R}}_{n,a}}  — это набор многочленов таких, что их степень меньше n {\displaystyle n} и их коэффициенты лежат в Z a {\displaystyle \mathbb {Z} _{a}} , а R n , a b {\displaystyle {\mathcal {R}}_{n,a}^{b}}  — это множество таких векторов размерности b {\displaystyle b} ( b {\displaystyle b}  — положительное целое число), что каждая компонента любого вектора принадлежит R n , a {\displaystyle {\mathcal {R}}_{n,a}} .
  • R n {\displaystyle {\mathcal {R}}_{n}} называется троичным, если все его коэффициенты равны 0 , 1 {\displaystyle 0,1} или 1 {\displaystyle -1} .
  • Для любого элемента υ R n {\displaystyle \upsilon \in {\mathcal {R}}_{n}} вес Хемминга определяется как число ненулевых коэффициентов. H n ( h ) {\displaystyle {\mathcal {H}}_{n}(h)} определяется как множество троичных полиномов степени меньше n {\displaystyle n} с весом Хемминга h {\displaystyle h} . В Round5 такие многочлены к тому же ещё являются сбалансированными и разреженными, то есть имеют ровно h / 2 {\displaystyle h/2} коэффициентов равных + 1 {\displaystyle +1} и столько же равных 1 {\displaystyle -1} (сбалансированные), и при этом h {\displaystyle h} принимает фиксированное значение (разреженные).
  • { 0 , 1 } k {\displaystyle \{0,1\}^{k}}  — это множество всех таких наборов длины k {\displaystyle k} , состоящие из нулей и единиц.
  • Для рационального числа x {\displaystyle x} обозначим: x {\displaystyle \lfloor x\rfloor } — округление вниз до целого, а x {\displaystyle \lfloor x\rceil }  — округление до ближайшего целого. Взятие остатка от деления обозначим как x a {\displaystyle \langle x\rangle _{a}} , то есть x a = x mod a {\displaystyle \langle x\rangle _{a}=x{\bmod {a}}} [1][2].

Задача GLWR

Пусть d , n , p , q {\displaystyle d,n,p,q}  — положительные целые числа, такие что q p 2 {\displaystyle q\geq p\geq 2} и n {\displaystyle n} равняется 1 {\displaystyle 1} или d {\displaystyle d} . D s {\displaystyle D_{s}} является распределением вероятности по R n , q d / n {\displaystyle {\mathcal {R}}_{n,q}^{d/n}} . Выбор элемента s {\displaystyle \mathbf {s} } из R n , q d / n {\displaystyle {\mathcal {R}}_{n,q}^{d/n}} в соответствии с распределением D s {\displaystyle D_{s}} обозначим как s D s {\displaystyle \mathbf {s} \leftarrow D_{s}} [1].

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

Имеется m {\displaystyle m} примеров формы p q a i T s Φ n + 1 ( x ) p {\displaystyle \left\langle \left\lfloor {\frac {p}{q}}\langle \mathbf {a} _{i}^{T}\mathbf {s} \rangle _{{\mathit {\Phi }}_{n+1}(x)}\right\rfloor \right\rangle _{p}} , где a i R n , q d / n {\displaystyle \mathbf {a} _{i}\in {\mathcal {R}}_{n,q}^{d/n}} и s D s {\displaystyle \mathbf {s} \leftarrow D_{s}} фиксирован, требуется найти s {\displaystyle \mathbf {s} } [1].

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

Сложность данной версии заключается в различении равномерного распределения по R n , q d / n × R n , p {\displaystyle {\mathcal {R}}_{n,q}^{d/n}\times {\mathcal {R}}_{n,p}} и распределения ( a i , b i ) {\displaystyle (\mathbf {a} _{i},b_{i})} , где a i $ R n , q d / n {\displaystyle \mathbf {a} _{i}{\xleftarrow[{}]{\$}}{\mathcal {R}}_{n,q}^{d/n}} , s D s {\displaystyle \mathbf {s} \leftarrow D_{s}} фиксирован и b i = p q a i T s Φ n + 1 ( x ) p {\displaystyle b_{i}=\left\langle \left\lfloor {\frac {p}{q}}\langle \mathbf {a} _{i}^{T}\mathbf {s} \rangle _{{\mathit {\Phi }}_{n+1}(x)}\right\rfloor \right\rangle _{p}} [1].

Виды задачи GLWR

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

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

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

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

Основа Round5

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

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

Параметры схемы шифрования r5_cpa_pke: n , d , h , p , q , t , b , n ¯ , m ¯ , μ , f , τ {\displaystyle n,d,h,p,q,t,b,{\bar {n}},{\bar {m}},\mu ,f,\tau }  — целые положительные числа, k {\displaystyle k}  — параметр безопасности (длина сообщения в битах), m ( x ) {\displaystyle m(x)}  — многочлен, коэффициенты которого являются сообщением и равны 0 {\displaystyle 0} или 1 {\displaystyle 1} ( m ( x ) = m 0 + m 1 x + + m k 1 x k 1 {\displaystyle m(x)=m_{0}+m_{1}x+\cdots +m_{k-1}x^{k-1}} ). n ¯ , m ¯ {\displaystyle {\bar {n}},{\bar {m}}}  — число столбцов в секретных матрицах. Модули p , q , t , b {\displaystyle p,q,t,b} являются степенями двойки, так что b {\displaystyle b} делит t {\displaystyle t} , t {\displaystyle t} делит p {\displaystyle p} и p {\displaystyle p} делит q {\displaystyle q} . Требуется, чтобы μ n n ¯ m ¯ {\displaystyle \mu \leq n\cdot {\bar {n}}\cdot {\bar {m}}} и μ k log 2 ( b ) {\displaystyle \mu \geq k\cdot \log _{2}(b)} . h {\displaystyle h}  — вес Хемминга многочленов, являющихся секретными. ξ ( x ) {\displaystyle \xi (x)}  — многочлен Φ n + 1 ( x ) {\displaystyle {\mathit {\Phi }}_{n+1}(x)} или N n + 1 ( x ) {\displaystyle N_{n+1}(x)} . J {\displaystyle {\boldsymbol {J}}}  — это матрица, вся заполненная 1 {\displaystyle 1} [1][2].

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


Algorithm 1: r5_cpa_pke_keygen()
1. σ $ { 0 , 1 } k {\displaystyle \sigma {\xleftarrow[{}]{\$}}\{0,1\}^{k}}
2. A = f d , n ( τ ) ( σ ) {\displaystyle {\boldsymbol {A}}=f_{d,n}^{(\tau )}(\sigma )}
3. s k $ { 0 , 1 } k {\displaystyle sk{\xleftarrow[{}]{\$}}\{0,1\}^{k}}
4. S = f S ( s k ) {\displaystyle {\boldsymbol {S}}=f_{S}(sk)}
5. B = p q ( A S Φ n + 1 ( x ) + h 1 J ) p {\displaystyle {\boldsymbol {B}}=\left\langle \left\lfloor {\frac {p}{q}}(\langle {\boldsymbol {A}}{\boldsymbol {S}}\rangle _{{\mathit {\Phi }}_{n+1}(x)}+h_{1}{\boldsymbol {J}})\right\rfloor \right\rangle _{p}}
6. p k = ( σ , B ) {\displaystyle pk=(\sigma ,{\boldsymbol {B}})}
7. return ( p k , s k ) {\displaystyle (pk,sk)}
  1. σ {\displaystyle \sigma } равновероятно выбирается из множества { 0 , 1 } k {\displaystyle \{0,1\}^{k}} .
  2. На основе σ {\displaystyle \sigma } вычисляется открытая квадратная матрица A {\displaystyle {\boldsymbol {A}}} размера d / n × d / n {\displaystyle d/n\times d/n} , элементы которой принадлежат множеству R n , q {\displaystyle {\mathcal {R}}_{n,q}} (в случае RLWR ( n = d {\displaystyle n=d} ) это один многочлен, если LWR ( n = 1 {\displaystyle n=1} ) — матрица из элементов, лежащих в Z q {\displaystyle \mathbb {Z} _{q}} ). Для этого применяется функция f d , n ( τ ) ( σ ) {\displaystyle f_{d,n}^{(\tau )}(\sigma )} , использующая детерминированный генератор случайных битов[6] и перестановки, определяемые параметром τ {\displaystyle \tau } .
  3. Как и σ {\displaystyle \sigma } , секретный ключ s k {\displaystyle sk} выбирается случайно из { 0 , 1 } k {\displaystyle \{0,1\}^{k}} .
  4. На основе s k {\displaystyle sk} вычисляется секретная матрица S {\displaystyle {\boldsymbol {S}}} размера d / n × n ¯ {\displaystyle d/n\times {\bar {n}}} , элементы которой принадлежат множеству H n ( h ) {\displaystyle {\mathcal {H}}_{n}(h)} (в случае RLWR ( n = d {\displaystyle n=d} ) это вектор, состоящий из троичных многочленов, если LWR ( n = 1 {\displaystyle n=1} ) — матрица, состоящая из 0 , 1 {\displaystyle 0,1} и 1 {\displaystyle -1} ). Для этого используется функция f S ( s k ) {\displaystyle f_{S}(sk)} , использующая также детерминированный генератор случайных битов.
  5. Вычисляется матрица B {\displaystyle {\boldsymbol {B}}} размера d / n × n ¯ {\displaystyle d/n\times {\bar {n}}} , состоящая из элементов R n , p {\displaystyle {\mathcal {R}}_{n,p}} , следующим образом:
    1. Элементы матрицы, равной произведению A {\displaystyle {\boldsymbol {A}}} на S {\displaystyle {\boldsymbol {S}}} , вычисляются по модулю Φ n + 1 ( x ) {\displaystyle {\mathit {\Phi }}_{n+1}(x)} . Затем к каждому элементу прибавляется постоянная округления h 1 = q 2 p {\displaystyle h_{1}={\frac {q}{2p}}} .
    2. Каждый элемент умножается на дробь p q {\displaystyle {\frac {p}{q}}} .
    3. Коэффициенты всех многочленов полученной матрицы округляются в меньшую сторону до ближайшего целого и берутся по модулю p {\displaystyle p} .
  6. Открытый ключ представляет собой набор из σ {\displaystyle \sigma } и B {\displaystyle {\boldsymbol {B}}} [1][2].

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


Algorithm 2: r5_cpa_pke_encrypt ( p k , m ) {\displaystyle (pk,m)}
1. A = f d , n ( τ ) ( σ ) {\displaystyle {\boldsymbol {A}}=f_{d,n}^{(\tau )}(\sigma )}
2. R = f R ( ρ ) {\displaystyle {\boldsymbol {R}}=f_{R}(\rho )}
3. U = p q ( A T R Φ n + 1 ( x ) + h 2 J ) p {\displaystyle {\boldsymbol {U}}=\left\langle \left\lfloor {\frac {p}{q}}(\langle {\boldsymbol {A}}^{T}{\boldsymbol {R}}\rangle _{{\mathit {\Phi }}_{n+1}(x)}+h_{2}{\boldsymbol {J}})\right\rfloor \right\rangle _{p}}
4. U ~ = U T {\displaystyle {\tilde {\boldsymbol {U}}}={\boldsymbol {U}}^{T}}
5. υ = t p ( Sample μ B T R ξ ( x ) + h 2 J ) + t b xef _ compute k , f ( m ) t {\displaystyle {\boldsymbol {\upsilon }}=\left\langle \left\lfloor {\frac {t}{p}}({\text{Sample}}_{\mu }\langle {\boldsymbol {B}}^{T}{\boldsymbol {R}}\rangle _{\xi (x)}+h_{2}{\boldsymbol {J}})\right\rfloor +{\frac {t}{b}}{\text{xef}}\_{\text{compute}}_{k,f}(m)\right\rangle _{t}}
6. c t = ( U ~ , v ) {\displaystyle ct=({\tilde {\boldsymbol {U}}},{\boldsymbol {v}})}
7. return c t {\displaystyle ct}
  1. Так же, как и при вычислении ключей, находится матрица A {\displaystyle {\boldsymbol {A}}} .
  2. Вводится элемент множества { 0 , 1 } k {\displaystyle \{0,1\}^{k}}  — ρ {\displaystyle \rho } . На его основе при помощи функции f R ( ρ ) {\displaystyle f_{R}(\rho )} вычисляется секретная матрица R {\displaystyle {\boldsymbol {R}}} размера d / n × m ¯ {\displaystyle d/n\times {\bar {m}}} , элементы которой принадлежат множеству H n ( h ) {\displaystyle {\mathcal {H}}_{n}(h)} (в случае RLWR ( n = d {\displaystyle n=d} ) это вектор, состоящий из троичных многочленов, если LWR ( n = 1 {\displaystyle n=1} ) — матрица, состоящая из 0 , 1 {\displaystyle 0,1} и 1 {\displaystyle -1} ).
  3. Используя матрицы A {\displaystyle {\boldsymbol {A}}} , R {\displaystyle {\boldsymbol {R}}} и постоянную округления h 2 = q 2 z {\displaystyle h_{2}={\frac {q}{2z}}} ( z = max ( p , t q p ) {\displaystyle z=\max(p,{\tfrac {tq}{p}})} ), вычисляется матрица U {\displaystyle {\boldsymbol {U}}} аналогично как в алгоритме создания ключей.
  4. Транспонированная U {\displaystyle {\boldsymbol {U}}} есть первая компонента шифротекста.
  5. Вторая компонента шифротекста — вектор v {\displaystyle {\boldsymbol {v}}} , элементы которого лежат в Z t {\displaystyle \mathbb {Z} _{t}} . Поскольку не все компоненты v {\displaystyle {\boldsymbol {v}}} необходимы для шифрования k {\displaystyle k} -битового сообщения m {\displaystyle m} , используется функция Sample μ {\displaystyle {\text{Sample}}_{\mu }} .
    1. Если n = d {\displaystyle n=d} , то B T R ξ ( x ) {\displaystyle \langle {\boldsymbol {B}}^{T}{\boldsymbol {R}}\rangle _{\xi (x)}}  — это многочлен и Sample μ {\displaystyle {\text{Sample}}_{\mu }} принимает его на вход, а на выходе выдаёт набор всех коэффициентов, соответствующих членам со степенью меньших μ {\displaystyle \mu }  : c 0 + c 1 x + + c μ 1 x μ 1 + c μ x μ + + c n x n ( c 0 , c 1 , , c μ 1 ) {\displaystyle c_{0}+c_{1}x+\cdots +c_{\mu -1}x^{\mu -1}+c_{\mu }x^{\mu }+\cdots +c_{n}x^{n}\rightarrow (c_{0},c_{1},\cdots ,c_{\mu -1})} .
    2. Если n = 1 {\displaystyle n=1} , то B T R ξ ( x ) {\displaystyle \langle {\boldsymbol {B}}^{T}{\boldsymbol {R}}\rangle _{\xi (x)}}  — это матрица M {\displaystyle M} , состоящая из целых чисел и Sample μ {\displaystyle {\text{Sample}}_{\mu }} выдаёт первые μ {\displaystyle \mu } чисел этой матрицы: M 0 , 0 , M 0 , 1 , , M 0 , n ¯ 1 нулевая строка , , M i 1 , 0 , M i 1 , 1 , , M i 1 , j 1 i 1 -ая строка μ коэффициентов {\displaystyle \overbrace {\underbrace {M_{0,0},M_{0,1},\cdots ,M_{0,{\bar {n}}-1}} _{\text{нулевая строка}},\cdots ,\underbrace {M_{i-1,0},M_{i-1,1},\cdots ,M_{i-1,j-1}} _{i-1{\text{-ая строка}}}} ^{\mu \,{\text{коэффициентов}}}} , где μ = i n ¯ + j {\displaystyle \mu =i{\bar {n}}+j} .
    3. Получаем, что v {\displaystyle {\boldsymbol {v}}} содержит только μ {\displaystyle \mu } компонент.
  6. Таким образом, получаем шифротекст c t = ( U ~ , v ) {\displaystyle ct=({\tilde {\boldsymbol {U}}},{\boldsymbol {v}})} [1][2].

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

Так же для уменьшение вероятности ошибок применяются функции кодирования xef _ compute k , f ( m ( x ) ) {\displaystyle {\text{xef}}\_{\text{compute}}_{k,f}(m(x))} при шифровании и декодирования xef _ correct k , f {\displaystyle {\text{xef}}\_{\text{correct}}_{k,f}} при дешифровании . Функция xef _ compute k , f ( m ( x ) ) {\displaystyle {\text{xef}}\_{\text{compute}}_{k,f}(m(x))} преобразует многочлен m ( x ) {\displaystyle m(x)} в набор двоичных коэффициентов размера μ {\displaystyle \mu } . Затем этот набор складывается с набором ошибок e = ( e 0 , , e μ 1 ) {\displaystyle e=(e_{0},\cdots ,e_{\mu -1})} , где каждый e i {\displaystyle e_{i}} равен 0 {\displaystyle 0} или 1 {\displaystyle 1} , причём количество единиц в наборе ошибок не должно быть больше чем f {\displaystyle f} для однозначного декодирования[1][2].

xef _ correct k , f ( xef _ compute k , f ( m ( x ) ) + e ) = m {\displaystyle {\text{xef}}\_{\text{correct}}_{k,f}({\text{xef}}\_{\text{compute}}_{k,f}(m(x))+e)=m} [1][2].

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

Algorithm 2: r5_cpa_pke_decrypt ( s k , c t ) {\displaystyle (sk,ct)}
1. v p = p t v {\displaystyle {\boldsymbol {v}}_{p}={\frac {p}{t}}{\boldsymbol {v}}}
2. S = f S ( s k ) {\displaystyle {\boldsymbol {S}}=f_{S}(sk)}
3. U = U ~ T {\displaystyle {\boldsymbol {U}}={\tilde {\boldsymbol {U}}}^{T}}
4. y = b p ( v p Sample μ S T ( U + h 4 J ) ξ ( x ) + h 3 J ) b {\displaystyle {\boldsymbol {y}}=\left\langle \left\lfloor {\frac {b}{p}}({\boldsymbol {v}}_{p}-{\text{Sample}}_{\mu }\langle {\boldsymbol {S}}^{T}({\boldsymbol {U}}+h_{4}{\boldsymbol {J}})\rangle _{\xi (x)}+h_{3}{\boldsymbol {J}})\right\rfloor \right\rangle _{b}}
5. m ^ = xef _ correct k , f ( y ) {\displaystyle {\hat {m}}={\text{xef}}\_{\text{correct}}_{k,f}({\boldsymbol {y}})}
6. return m ^ {\displaystyle {\hat {m}}}
  1. Вычисляется вектор v p {\displaystyle {\boldsymbol {v}}_{p}} .
  2. На основе закрытого ключа находится секретная матрица S {\displaystyle {\boldsymbol {S}}} такая же, как в алгоритме создания ключей.
  3. Транспонированием U ~ {\displaystyle {\boldsymbol {\tilde {U}}}} находится матрица U {\displaystyle {\boldsymbol {U}}} , вычисленная в алгоритме шифрования.
  4. Происходит дешифрование сообщения. h 3 = p 2 t + p 4 q 2 p {\displaystyle h_{3}={\frac {p}{2t}}+{\frac {p}{4}}-{\frac {q}{2p}}} , h 4 = q 2 p q 2 z {\displaystyle h_{4}={\frac {q}{2p}}-{\frac {q}{2z}}} .
  5. Исправляются ошибки. Таким образом получаем исходное сообщение m ^ {\displaystyle {\hat {m}}} [1][2].

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

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

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

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

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

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

Примечания

  1. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Hayo Baan, Sauvik Bhattacharya, Scott Fluhrer, Oscar Garcia-Morchon, ThijsLaarhoven, Rachel Player, Ronald Rietman, Markku-Juhani O. Saarinen, LudoTolhuizen, Jos ́e Luis Torre-Arce, and Zhenfei Zhang. Round5:KEM and PKE based on (Ring) Learning with Rounding (англ.) // round5.org : article. — 2019. — 28 March. — P. 153. Архивировано 5 декабря 2019 года.
  2. 1 2 3 4 5 6 7 8 9 10 11 12 Hayo Baan, Sauvik Bhattacharya, Scott Fluhrer, Oscar Garcia-Morchon, Thijs Laarhoven, Ronald Rietman, Markku-Juhani O. Saarinen, Ludo Tolhuizen, and Zhenfei Zhang. [https://eprint.iacr.org/2019/090.pdf Round5: Compact and Fast Post-Quantum Public-Key Encryption] (англ.) // https://round5.org/ : article. — 2019. — P. 20. Архивировано 7 декабря 2019 года.
  3. Hayo Baan, Sauvik Bhattacharya, Oscar Garcia-Morchon, Ronald Rietman, Ludo Tolhuizen. Round2: KEM and PKE based on GLWR. — 2017. — № 1183. Архивировано 6 декабря 2019 года.
  4. Markku-Juhani O. Saarinen, 2017.
  5. Lily Chen, Stephen Jordan, Yi-Kai Liu, Dustin Moody, Rene Peralta. Report on Post-Quantum Cryptography. — National Institute of Standards and Technology, 2016-04. Архивировано 16 октября 2023 года.
  6. Elaine B. Barker, John M. Kelsey. Recommendation for Random Number Generation Using Deterministic Random Bit Generators. — National Institute of Standards and Technology, 2015-06. — doi:10.6028/nist.sp.800-90ar1.

Литература

  • Markku-Juhani O. Saarinen. HILA5: On Reliability, Reconciliation, and Error Correction for Ring-LWE Encryption (англ.). — Springer, Cham, 2017. — 23 December. — doi:10.1007/978-3-319-72565-9_10.
  • Lily Chen, Stephen Jordan, Yi-Kai Liu, Dustin Moody, Rene Peralta. Report on Post-Quantum Cryptography (англ.). — U.S. Department of Commerce, 2016. — April. — doi:10.6028/NIST.IR .8105.

Ссылки

  • Официальный сайт (англ.)
  • Механизм инкапсуляции ключей (англ.)