Escolar Documentos
Profissional Documentos
Cultura Documentos
EXÉRCITO BRASILEIRO
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA
INSTITUTO MILITAR DE ENGENHARIA
CURSO DE GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO
RIO DE JANEIRO
2022
DAVI BONFIM MORAES MORANT DE HOLANDA
GABRIEL BARBOSA MEIRELES
PIETRO MOTTA GERONIMI
Rio de Janeiro
2022
©2022
INSTITUTO MILITAR DE ENGENHARIA
Praça General Tibúrcio, 80 – Praia Vermelha
Rio de Janeiro – RJ CEP: 22290-270
Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderá incluí-lo em base
de dados, armazenar em computador, microfilmar ou adotar qualquer forma de arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecas deste
trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venha a ser fixado,
para pesquisa acadêmica, comentários e citações, desde que sem finalidade comercial e que
seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es) e do(s) orienta-
dor(es).
Rio de Janeiro
2022
Este trabalho é dedicado às crianças adultas que,
quando pequenas, sonharam em se tornar cientistas.
AGRADECIMENTOS
This work has the goal of implementing an algorithm of cryptography based on lattices.
The chosen algorithm was the NTRU, one of the main candidates of becoming the standard
post-quantum cryptography algorithm according to the NIST. From its implementation,
it will be possible to test the relevant parameters so that we can understand how the
influence its behaviour and potentially develop further optimizations.
L Reticulado
SUMÁRIO
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1 MOTIVAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 OBJETIVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 METODOLOGIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 ESTRUTURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5 CRONOGRAMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 SURVEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1 CRIPTOGRAFIA BASEADA EM RETICULADOS . . . . . . . . . . . . . . 19
2.2 NIST: POST-QUANTUM CRYPTOGRAPHY STANDARDIZATION . . . . 20
2.3 COMPUTADORES QUÂNTICOS . . . . . . . . . . . . . . . . . . . . . . 21
2.4 A ESCOLHA DO ALGORITMO . . . . . . . . . . . . . . . . . . . . . . . 21
3 FUNDAMENTAÇÃO TEÓRICA . . . . . . . . . . . . . . . . . . . . 23
3.1 CONCEITOS INICIAIS DE CRIPTOGRAFIA . . . . . . . . . . . . . . . . 23
3.1.1 ESTRUTURA E FUNCIONAMENTO DE UM CRIPTOSSISTEMA . . . . . . . 23
3.1.1.1 CRIPTOGRAFIA SIMÉTRICA . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1.2 CRIPTOGRAFIA ASSIMÉTRICA . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.2 FUNÇÕES DE MÃO ÚNICA COM ARAPUCA . . . . . . . . . . . . . . . . . 24
3.2 CONCEITOS INICIAIS DE RETICULADOS . . . . . . . . . . . . . . . . . 25
3.2.1 TAXA DE HADAMARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.2 PROBLEMAS DIFÍCEIS EM RETICULADOS . . . . . . . . . . . . . . . . . 28
3.2.3 REDUÇÃO DE RETICULADOS . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.3.1 RESOLVENDO SVP E CVP . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.3.2 REDUÇÃO GAUSSIANA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.3.3 REDUÇÃO LLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3 CONCEITOS INICIAIS DE COMPUTAÇÃO QUÂNTICA . . . . . . . . . . 30
3.3.1 BITS E QUBITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3.2 ALGORITMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4 O NTRU . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . 35
4.1 NTRUENCRYPT . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 35
4.1.1 O ALGORITMO . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . 35
4.1.2 RESTRIÇÕES DOS PARÂMETROS . . .. . . . . . . . . . . . . . . . . . . 36
4.1.3 NTRU COMO UM PROBLEMA DE RETICULADOS . . . . . . . . . . . . . . 37
5 O DESENVOLVIMENTO DO PROJETO . . . . . . . . . . . . . . . 42
5.1 VE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2 VC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 VF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
16
1 INTRODUÇÃO
1.1 Motivação
Desde 1995, quando Peter Shor publicou seu artigo (3) no qual propõe algoritmos
que quebram os problemas da fatoração de grandes inteiros e do logaritmo discreto em
tempo polinomial para computadores quânticos, os principais criptossistemas utilizados
passaram a ser ameaçados. Apesar de ainda não haver computadores que consigam executá-
los para chaves razoavelmente grandes, é uma questão de tempo até que sejam capazes de
fazê-lo. Por isso, o desenvolvimento de algoritmos de criptografia pós-quântica (PQC: Post-
Quantum Criptography) é de grande interesse para a comunidade científica internacional.
Nesse contexto, os reticulados são especialmente interessantes porque grande parte dos
algoritmos de PQC são baseados em suas propriedades e aplicações.
O NTRU, originadl a partir do funcionamento de anéis polinomiais, é um dos
algoritmos mais promissores em termos de viabilidade para aplicação em um futuro próximo.
Em uma campanha promovida pelo NIST desde 2016 para padronizar um algoritmo de
PQC, ele é um dos 4 finalistas dentre os 69 candidatos originais na categoria de encriptação
com chave pública. Contudo, ele é também um algoritmo em desenvolvimento com diversos
parâmetros a serem otimizados.
Aliando a importância da criptografia pós quântica e os algoritmos baseados em
reticulados, o NTRU mostra-se um objeto de estudo que pode trazer resultados relevantes
para aplicações reais nos próximos anos.
1.2 Objetivo
O objetivo deste projeto é implementar o NTRU baseado em anéis e reticulados, a
fim de discutir os impactos que seus parâmetros têm no comportamento do algoritmo.
A implementação deve ser capaz de encriptar e decriptar uma mensagem, a fim de
analisar sua performance em função dos parâmetros estabelecidos.
1.3 Metodologia
O primeiro passo realizado neste projeto foi compreender os conceitos iniciais de
reticulados. As primeiras semanas de estudo foram dedicadas a isso, e resultaram em
uma apresentação que foi ministrada pelos alunos (Davi, Gabriel e Pietro) referente ao
assunto. A apresentação foi feita aos colegas de graduração durante dois tempos de aula
Capítulo 1. Introdução 17
1.4 Estrutura
O Capítulo 1 é a introdução do trabalho e estabelece sua Motivação, Objetivo,
Metodologia e Estrutura. Ele define o que se propõe a ser o projeto e como ele foi organizado
para atingir o objetivo.
O Capítulo 2 é um survey, ou seja, apresenta os principais marcos históricos do
desenvolvimento da pesquisa em criptografia pós-quântica em reticulados, assim como o
panorama geral da área atualmente.
O Capítulo 3 é a fundamentação teórica, e apresenta todos os conceitos necessários
à implementação do NTRU. São abordados desde os conceitos iniciais de criptografia até
o funcionamento simplificado dos computadores quânticos e como eles se diferenciam dos
computadoes clássicos.
O Capítulo 4 é a parte que explica o funcionamento do criptossistema do NTRU
e como ele pode ser atacado utilizando conceitos de reticulados.
Capítulo 1. Introdução 18
1.5 Cronograma
Foi montado o seguinte planejamento para o desenvolvimento do projeto:
2 SURVEY
• 1995: Peter Shor publica o artigo (3), que propõe algoritmos que resovem os pro-
blema sde fatoração e logaritmos discretos em tempo polinomial para computadores
quânticos. São esses algoritmos que ameaçam a criptografia clássica, e portanto
são os motivadores do estudo da criptografia pós-quântica, na qual os reticulados
exercem um papel importante.
• 1997: Em conjunto com Dwork, Ajtai publica um artigo (8) que propõe um crip-
tossistema baseado em uma função de mão única em reticulados. No ano anterior,
ele já havia publicado outro artigo (9) que estabelece a redução de pior caso para
caso médio em problemas envolvendo reticulados. No entanto, a complexidade e
inificiência para a época fizeram com que esse trabalho só fosse retomado mais tarde.
• 2003: Oded Regev melhora o sistema proposto por Ajtai e Dwork em 1997, tornando-
o mais seguro e eficiente mesmo para chaves menores do que antes eram necessárias.
Capítulo 2. Survey 20
3 FUNDAMENTAÇÃO TEÓRICA
A partir dos artigos que foram selecionados, foi feito um estudo teórico sobre
os principais conceitos referentes a criptografia e reticulados relevantes ao trabalho a
ser desenvolvido. Eles estão apresentados a seguir, de modo a fundamentar as noções
importantes para a compreensão deste documento. As principais fontes foram (2) e (12),
trabalhos realizados no Instituto Militar de Engenharia e também orientados pelo professor
José Antonio Moreira Xexéo.
Esse tipo de criptografia se baseia no uso de uma mesma chave secreta, ou duas
chaves obtidas facilmente uma a partir da outra, para codificar e decodificar a mensagem.
Dessa forma, o emissor e o receptor devem realizar uma comunicação, em um primeiro
momento, para estabelecer a qual será essa chave. Para isso, precisa-se de um algoritmo
seguro de troca de chaves, o qual permita que ambos os participantes do processo de
comunicação tenham conhecimento da chave secreta sem que terceiros a descubram. O
algoritmo de troca de chaves mais conhecido é o algoritmo de Diffie-Hellman, publicado
Capítulo 3. Fundamentação Teórica 24
Nesse caso, não é mais utilizada a mesma chave para encriptar e decriptar a
mensagem. Em vez disso, o receptor possui duas chaves, uma pública e uma privada.
Para um emissor enviar uma mensagem, basta encriptá-la utilizando a chave pública
disponibilizada pelo receptor desejado. Dessa forma, todos terão acesso ao criptograma
(mensagem encriptada). Porém, somente o receptor será capaz de decriptá-lo, já que apenas
ele tem conhecimento da chave secreta, a qual é responsável pela decriptação. Esse tipo de
ccriptografia tem a vantagem de não ser necessário o procedimento de estabelecimento
de uma chave secreta por meio de um canal potencialmente não seguro. No entanto,
algoritmos de chave assimétrica normalmente possuem uma maior complexidade de tempo
do que os algoritmos de chave simétrica.
Esses algoritmos são baseados dificuldade de se resolver computacionalmente
determinados problemas. Dentre eles, os mais comuns são a fatoração de grandes inteiros e
o problema do logaritmo discreto. Para computadores clássicos, não há algoritmos que os
resolvam em tempo polinomial, e a segurança do criptossistema depende disso. No entanto,
existem algoritmos quânticos que conseguem fazê-lo, e daí a vulnerabilidade gerada pelo
advento da computação quântica, como será discutido nos próximos capítulos.
2. Não existe um algoritmo de complexidade polinomial no tempo (no caso médio) tal
que, dado apenas y, encontre um elemento da pré-imagem de y (algum x ∈ Dom(f )
tal que f (x) = y).
parte de agentes externos (que não conhecem a arapuca) e tornam possível a decriptação
para o receptor (que conhece a arapuca). A arapuca, nesse caso, torna-se a chave do
criptossistema.
( n )
X
L= ai vi ; a1 , . . . , an ∈ Z
i=1
Um mesmo reticulado pode ser gerado por diversas bases. A escolha dessas bases é
um aspecto fundamental dos algoritmos de criptografia baseados em reticulados que serão
abordados neste trabalho. Isso se deve ao fato de que há bases que são "boas"e outras que
são "ruins"para resolver problemas difíceis relacionados aos reticulados.
Ainda neste capítulo será formalizado o conceito de bases "boas"ou "ruins", e
serão apresentadas métricas para avaliá-las. Porém, antes disso, a Figura 3 dá uma noção
intuitiva de como classificar a base de um reticulado. De forma simplificada, bases "boas"são
formadas por vetores pequenos e ortogonais, enquanto bases "ruins"possuem vetores grandes
e "pouco ortogonais".
Capítulo 3. Fundamentação Teórica 26
a
1
h i a2
w = v1 v2 . . . vn ..
.
an
Note que vi são vetores coluna e ai são escalares inteiros, então w é também um
vetor coluna, formado por uma combinação linear de v1 , . . . , vn .
Logo, se quisermos gerar não apenas um único vetor w, mas sim k vetores w1 , . . . , wk
pertencentes ao reticulado, podemos escrevê-los da seguinte forma:
a a12 . . . a1k
11
h i h a21 a22
i . . . a2k
w1 w2 . . . wk = v1 v2 . . . vn
.. .. .. ..
. . . .
an1 an2 . . . ank
a a12 . . . a1n
11
h i h i a21 a22
. . . a2n
w1 w2 . . . wn = v1 v2 . . . vn .. .. ... . .
. . .
an1 an2 . . . ann
Seja a matriz A:
Capítulo 3. Fundamentação Teórica 27
a a12 . . . a1n
11
a21 a22 . . . a2n
A=
.. .. . . . ..
. . .
an1 an2 . . . ann
!1
|det(L)| n
H(V ) =
||v1 ||.||v2 || . . . ||vn ||
{±v1 , . . . , ±vn }
ai = [bi ], para um dado 1 ≤ i ≤ n, onde [.] denota o inteiro mais próximo. Foi mostrado
a solução dos Probemas SV P e CV P quando os vetores da base são ortogonais entre si,
contudo também é possível resolver os problemas para os bases suficientemente ortogonais
entre si, através do algoritmo de Babai:
• Algoritmo de Babai:
v
1
..
1. Seja V = . uma base boa, escreva wv = wV −1
vn
′
2. Calcule wv = [wv ]
′
3. Retorne u = wv V
Com isso, foi visto que bases boas facilitam em muito a resolução de problemas
difíceis baseados em reticulados. Tendo isso em vista, um possível atacante de um cripto-
sistema baseado em reticulados poderia buscar desenvolver um algoritmo capaz de gerar
uma base boa que descreva o mesmo reticulado que uma outra base ruim. Esse processo
é conhecido como redução de reticulados e, a seguir, serão abordados os algoritmos de
redução de reticulados mais tradicionais.
base do outro vetor. Primeiramente, deve-se calcular o vetor v2∗ , projeção de v2 sobre a
direção ortogonal a v1 :
v2 .v1
v2 ∗ = v2 − v1
∥v1 ∥2
Mas, assim não é garantido que v2∗ faça parte do reticulado. Então, é feito o seguinte
ajuste:
v2 .v1
v2 ∗ = v2 − m.v1 , m=⌈ ⌋
∥v1 ∥2
v2 .v1
Onde m é o inteiro mais próximo de ∥v 1∥
2 . Se m = 0, a base já está ortogonalizada.
∗
Caso contrário, deve-se trocar v1 por v2 e repetir o processo até que m seja 0.
O algoritmo de redução LLL busca obter uma base boa para reticulados de di-
mensões maiores que 2 e possui tempo polinomial. O funcionamento do LLL consiste
em minimizar os comprimentos das projeções de cada elemento da base sob o subespaço
gerado pelas anteriores por meio de uma troca semelhante à vista na redução gaussiana.
De fato, o LLL utiliza a redução gaussiana localmente em cada par de vetores (bi , bi−1 ).
Contudo, esse par de vetores deve obedecer a uma condição extra, a condição de Lovász:
∥bi ∥2
≥ δ − µ2i,i−1 , δ ∈ (1, 1/4)
∥bi−1 ∥2
Além disso, a redução LLL utiliza a ortognalização de Gram-Schmidt. ((25 mod 24) mod
5) = 1
25 ≡ 1 (mod 24) (mod5)
(5 ≡ 5 (mod 24))(mod 5)
1 0
|0⟩ = |1⟩ =
0 1
c0
|c0 , c1 ⟩ =
c1
c 1 0
0 = c0 + c1
c1 0 1
00000000 0
00000001
0
.. .
. ..
0
01101010
1
01101011
0
01101100
.. ..
. .
11111110 0
11111111 0
00000000 c0
00000001 c1
.. ..
.
.
01101010 c106
01101011 c107
01101100 c108
.. .
.
. .
11111110 c254
11111111 c255
Portanto, para uma mesma quantidade de bits e qubits, estes contêm uma quanti-
dade de informação exponencialmente maior, e nela está a disruptividade dos computadores
quânticos. Para descrever o estado de um registrador de 64 qubits, por exemplo, seria
necessário armazenar 264 = 18.446.744.073.709.551.616 números complexos, o que excede
em muito a capacidade de armazenamento dos dispositivos atuais.
Além disso, torna-se possível aproveitar essa enorme capacidade e paralelizar o
processamento, pois múltiplos processamentos podem ser sobrepostos e realizados ao mesmo
tempo. É essa combinação de fatores que torna a computação quântica especialmente
eficiente para determinados problemas, como será discutido na seção de algoritmos.
Por fim, estão descritas a seguir algumas das formas mais comuns de implementar
um qubit:
3.3.2 Algoritmos
Como visto, os computadores quânticos não são meros substitutos dos computadores
clássicos que realizam suas operações mais rapidamente. Em vez disso, são capazes de
executar algoritmos específicos que atendem às propriedades da física quântica, de modo
que resolvem determinados problemas de forma mais eficiente.
A título de exemplo, um computador clássico só é capaz de fazer uma busca em um
vetor desordenado em O(n), onde n é o número de elementos nesse vetor. Em compensação,
√
o algoritmo de Grover (quântico) é capaz de realizar a mesma tarefa em O( n).
Por fim, o algoritmo mais relevante para a criprografia é o algoritmo de Shor (3).
Proposto em 1995 por Peter Shor, ele resolve o problema da fatoração de grandes inteiros
em tempo polinomial. O seu funcionamento detalhado foge ao escopo deste trabalho, porém
é fundamental ter em mente sua importância. Dado que grande parte dos criptossistemas
atuais baseiam-se na suposição de que fatorar grandes inteiros é computacionalmente difícil,
uma implementação eficaz do algoritmo de Shor tornaria essa suposição falsa, colocando
em risco grande parte da criptografia utilizada hoje em dia.
É importante ressaltar que os computadores quânticos atualmente não suportam a
execução desse algoritmo para chaves de dimensões relevantes, mas eventualmente terão, e
por isso é importante desenvolver alternativas que sejam seguras mesmo contra esse tipo
de abordagem.
35
4 O NTRU
4.1 NTRUEncrypt
4.1.1 O algoritmo
Parâmetros públicos:
• N - número primo que limita o tamanho da mensagem a ser encriptada de uma vez
só. No caso de uma mensagem maior que o limite, dividimos a mensagem e enviamos
por partes.
Chave privada:
Z[x]
• f - polinômio com coeficientes ∈ {−1, 1} no anel (xN −1)
, inversível quando os
Z Z
coeficientes pertencem à pZ e qZ
Encriptação:
• r - polinômio aleatório com coeficientes ∈ [−1, 1]. No caso de várias partes da men-
sagem sendo enviados separadamente, esse polinômio é recalculado aleatoriamente
para cada parte.
• e = p ∗ r ∗ h + m - mensagem encriptada
Capítulo 4. O NTRU 36
Decriptação:
a = f ∗ e (mod q)
= f ∗ (p ∗ r ∗ h + m) (mod q)
= f ∗ p ∗ r ∗ h + f ∗ m (mod q)
= f ∗ p ∗ r ∗ (fq ∗ g) + f ∗ m (mod q)
= p ∗ r ∗ g + f ∗ m (mod q)
b = a ∗ fp (mod p)
= (p ∗ r ∗ g + f ∗ m (mod q)) ∗ fp (mod p)
= p ∗ r ∗ g ∗ fp + f ∗ m ∗ fp (mod p)
=m
A restrição para q poderia ser mais rigorosa caso considerássemos os pisos das
divisões, porém isso causaria uma rigorosidade no momento desnecessária. Assim, vamos
seguir o código usando essa restrição.
Um detalhe importante do algoritmo é a ordem em que fazemos as operações.
Como todas as operações estão em (xZ[x] Z Z
N −1) e pZ ou pZ , na prática estamos tirando 2
módulos. Portanto, em geral, a ordem em que fazemos essas operações poderia chegar
em resultados diferentes. Porém, tirar mod(xN − 1) possui um comportamento cíclico, ou
Capítulo 4. O NTRU 37
seja, todos os coeficientes relacionados a expoentes com o mesmo mod(N ) são somados no
coeficiente relacionado ao expoente de mesmo mod(N ). Por exemplo: 5x3 + 3x2 − 2x + 1 ≡
(5 − 2)x + (3 + 1)mod(x2 − 1). Assim, fazer a operação mod(p) ou mod(q) dos coeficientes
antes ou depois de somá-los acaba no mesmo resultado.
É necessário analisar melhor a influência de usar coeficientes em [−1, 1] na segurança
da criptografia, assim como a ordem de grandeza de p e q.
O tamanho de N está diretamente ligado à segurança da criptografia, pois gera
mais chaves privadas possíveis que um ataque precisaria testar. Um gargalo no crescimento
de N porém é a complexidade em achar um f válido, pois este tem as restrições sobre
a existência de suas inversas. É necessário uma análise sobre a influência de usar N ,
p e q primos para aumentar a probabilidade de randomizar uma chave privada válida,
assim como a escolha limitada dos coeficientes da chave privada. Note que a segurança
envolve a quantidade de chaves privadas válidas, de forma que ser mais provável achar uma
chave válida não diminui a segurança, pelo contrário, permitira valores maiores para N
aumentando a segurança. A limitação dos coeficientes por outro lado diminuem a variedade
de chaves que podemos estar usando e por consequência de fato diminuiria a segurança.
Outra forma de aumentar o valor de N seria pré-calcular diversas chaves privadas
válidas, porém vale ressaltar que para certos parâmetros isso continua sendo inviável. Por
exemplo, se considerarmos 3 opções para cada coeficiente e quisermos checar todos os
polinômios de 40 coeficientes, isso já seria equivalente a aproximadamente 400 anos de pré-
cálculo, por isso implementações com N maiores utilizam de outras análises matemáticas
para achar uma chave válida mais rápido com certas restrições em seus coeficientes.
f ∗h−u∗q =g
No anel xNZ−1
q
, vale que xN +k ≡ xk . Portanto, a multiplicação de polinômios f ∗ h
pode ser escrita da seguinte forma:
f = f0 + f1 x + f2 x2 + . . . fN −1 xN −1
h = h0 + h1 x + h2 x2 + . . . hN −1 xN −1
f ∗ h =f0 h0 + f1 hN −1 + f2 hN −2 + · · · + fN −1 h1
+ (f0 h1 + f1 h0 + f2 hN −1 + · · · + fN −1 h2 ) x
+ (f0 h2 + f1 h1 + f2 h0 + · · · + fN −1 h3 ) x2
..
.
+ (f0 hN −1 + f1 hN −2 + f2 hN −3 + · · · + fN −1 h0 ) xN −1
h0 hN −1 hN −2 . . . h1 f
0
h1 h0 hN −1 . . . h2 f1
f ∗h=
h2 h1 h0 . . . h3 f2
.. .. .. . . . ..
..
. . . . .
hN −1 hN −2 hN −3 . . . h0 fN −1
Seja a matriz:
h0 hN −1 hN −2 . . . h1
h1 h0 hN −1 . . . h2
H=
h2 h1 h0 . . . h3
.. .. .. .. ..
. . . . .
hN −1 hN −2 hN −3 . . . h0
1 0 0 ... 0 0 0 0 ... 0
0 1 0 ... 0 0 0 0 ... 0
0 0 1 ... 0 0 0 0 ... 0
.. .. .. .. .. .. .. ..
.. ..
. . . . . . . . . .
0 0 0 ... 1 0 0 0 ... 0
M (L) =
h0 hN −1 hN −2 . . . h1 q 0 0 ... 0
h1 h0 hN −1 . . . h2 0 q 0 ... 0
h2 h1 h0 . . . h3 0 0 q ... 0
.. .. .. .. . .. .. .. .. ..
. . . . .. . . . . .
hN −1 hN −2 hN −3 . . . h0 0 0 0 ... q
IN 0
M (L) =
H qIN
Capítulo 4. O NTRU 40
Para verificar que o reticulaodo definido pela base M (L) de fato contém o vetor
(f, g), basta realizar a seguinte multiplicação de matrizes:
f1
1 0 0 ... 0 0 0 0 ... 0 f1
f2 0 1 0 ... 0 0 0 0 ... 0 f2
f3 0 0 1 ... 0 0 0 0 ... 0 f3
. .. .. .. .. .. .. .. .. ..
..
... ...
. . . . . . . .
.
f
N −1
0 0 0 ... 1 0 0 0 ... 0 fN −1
=
g
1
h0 hN −1 hN −2 . . . h1 q 0 0 ... 0
−u1
g
2
h1 h0 hN −1 . . . h2 0 q 0 ... 0
−u2
g
3
h2 h1 h0 . . . h3 0 0 q ... 0
−u3
. .. .. .. . .. .. .. .. ..
.
.. ..
.
. . . . .. . . . . .
.
gN −1 hN −1 hN −2 hN −3 . . . h0 0 0 0 ... q −uN −1
f I
= N
0 f
g H qIN −u
Como os coeficientes de (f, −u) são inteiros, (f, g) pertence ao reticulado formado
pela base M (L) de L.
Além disso, pela forma como foram gerados os polinômios f e g (com coeficientes em
{−1, 0, 1}, o vetor (f, g) é um vetor pequeno de L, e possui probabilidade significativamente
alta de ser o menor vetor desse reticulado. Dessa forma, resolver o SVP associado à base
M (L) significa encontrar a chave privada f , que permite decriptar mensagens desse
criptossistema.
Há, também, outra forma de atacar o NTRU utilizando essa mesma matriz. Nesse
caso, ao invés de ter como objetivo calcular a chave privada, têm-se como meta o ataque a
uma mensagem específica, sem o conhecimento de f . Isso é feito através da resolução de
um CVP, onde o vetor buscado é (0, e).
Lembrando que: e = r ∗ h + m (mod q).
Portanto, podemos reescrever (0, e) da seguinte forma:
Note que, pela definição de L, o vetor (r, r ∗ h (mod q)) pertence ao reticulado..
Logo, a busca pelo vetor (0, e) em L a partir da base conhecida M (L) pode ser
considerada um CVP, onde (−r, m) é o vetor pequeno que distancia (0, e) - não pertencente
ao reticulado - do ponto (r, r ∗ h (mod q)) - pertencente ao reticulado.
42
5 O DESENVOLVIMENTO DO PROJETO
5.1 VE
O período anterior à VE foi dedicado ao estudo introdutório da criptografia pós-
quântica, com enfoque especial em reticulados e sua aplicação na área. Nesse tempo, foi
escrita grande parte da fundamentação teórica apresentada neste documento e, ao final do
semestre, os alunos ministraram uma aula sobre criptografia baseada em reticulados à sua
turma de graduação, que na época realizava a disciplina de Segurança da Informação.
O tema proposto para o PFC é "implementar um algoritmo de criptografia baseado
em reticulados". Dessa forma, ideia geral do projeto já estava definida, porém o algoritmo
específico e como seria implementado ainda estava em aberto e deveria ser decidido pelos
alunos em conjunto com o professor. Portanto, o estudo realizado anteriormente à VE foi
direcionado à compreensão dos recentes avanços na área a fim de escolher um algoritmo
específico no qual concentrar os esforços de trabalho. Como discutido no capítulo de
"survey", na seção de "escolha do algoritmo", o algoritmo escolhido foi o NTRU.
Em seguida, foi iniciada a implementação de fato do NTRU. A fim de otimizar a
compreensão de todas as etapas, restrições e gargalos do algoritmo, foi escrito um código
em C++ a partir do zero, ou seja, não foi utilizado código escrito por terceiros disponível
na internet. A decisão da linguagem de programação escolhida foi feita em função de seu
bom desempenho e da familiaridade dos membros do grupo com a linguagem.
Até o prazo de VE, foi entregue a primeir aversão do código. Ele já realizava a
encriptação e decriptação de mensagens, que apesar disso tinham limitações em termos
de tamanho (N ≤ 29), pois para mensagens maiores o algoritmo levava tempo demais
para encontrar um polinômio f que fosse invertível mod q e mod q. Além disso, os diversos
artigos estudados apresentaram restrições diferentes quanto aos valores dos parâmetros do
NTRU, de modo que ainda não estava claro quais eram as limitações reais e seus motivos.
Sumarizando os avanços feitos, as limitações encontradas e os avanços futuros planejados,
temos:
Avanços:
Capítulo 5. O desenvolvimento do projeto 43
Limitações:
Planejamento:
5.2 VC
A primeira mudança realizada no período entre a VE e a VC foi o aumento das
mensagens a serem encriptadas e decriptadas pelo código em desenvolvimento. A estratégia
principal adotada foi quebrar essas mensagens em mensagens menores de tamanho que seja
computável em tempo aceitável. Dessa forma, não é necessário utilizar polinômios de grau
muito alto e o algoritmo roda significativamente mais rápido. Além disso, foi melhorado o
gerador de polinômios aleatórios. Até a VE, era gerado sempre o mesmo polinômio.
Houve também um avanço na compreensão dos parâmetros do NTRU. Concluiu-se
que as divergências nas restrições apresentadas na literatura resultam, em parte, de ligerias
diferenças na definição dos parâmetros. Por exemplo, há implementações que utilizam a
tabela ASCII nos coeficientes dos polinômios, enquanto outros utilizam coeficientes binários.
Portanto, foi feito um estudo matemático da aritmética modular nos anéis específico para as
escolhas de parâmetros feitas pelo grupo. Essas restrições são apresentadas no capítulo de
apresentação do algoritmo. Embora tenha sido bem compreendido o papel dos parâmetros
na encriptação e decriptação, ainda falta clareza quanto à sua influência na segurança em
caso de um ataque.
Há, ainda, o plano de melhorar procedimentos específicos dentro do NTRU. Por
exemplo, a multiplicação de polinômios possui métodos mais eficientes (porém mais
complexos) do que o que foi implementado até o momento. O quanto essas implementações
valem a pena está sendo alvo de estudo no momento. Em suma, temos o seguinte até a
VC:
Avanços:
Limitações:
Planejamento:
5.3 VF
45
6 CONCLUSÃO
REFERÊNCIAS
4 PEIKERT, C. 2016.
6 NEJATOLLAHI, H.; DUTT, N.; RAY, S.; REGAZZONI, F.; BANERJEE, I.; CAM-
MAROTA, R. Post-quantum lattice-based cryptography implementations: A survey. ACM
Comput. Surv., Association for Computing Machinery, New York, NY, USA, v. 51, n. 6,
jan 2019. ISSN 0360-0300. Disponível em: <https://doi.org/10.1145/3292548>.
11 NIST. Status Update on the 3rd Round. 2021. Disponível em: <https://csrc.nist.gov/
Presentations/2021/status-update-on-the-3rd-round>.