Escolar Documentos
Profissional Documentos
Cultura Documentos
Abstract 1 Introdução
2 Sistemas hı́bridos
binário randômico de 32 bytes [6]. Em todos eles, foi empregada uma máquina Intel®
Core™ i5-2450M CPU @ 2.50GHz × 4, com 6,0 GiB
O Kyber.CCAKEM.Enc(pk) retorna o texto cifrado de RAM utilizando o sistema operacional Ubuntu 22.04
ct ∈ B du·k·n/8+dv·n/8 e a chave compartilhada K ∈ B , LTS 64 bits, sem recursos de aceleração em hardware,
a partir do emprego da chave pública pk. Inicialmente, bem como o submissão referência do Kyber apresentada
gera-se uma matriz aleatória u de dimensão k x n, sendo na terceira rodada do concurso do NIST disponı́vel em
u = r*A + e1T, empregada como chave efêmera [6]. [14].
Posteriormente, tem-se a geração de um segundo erro
5.1 Funções Compressq e Decompressq
e2, cuja dimensão é igual à da mensagem m, uma matriz
quadrada de ordem k, para que a operação v = r x t A função Compressq (x, d), empregada sobre um ele-
+ e2 +(q/2) x m seja realizada. O valor q é o primo mento x pertencente ao anel Zq, retorna um inteiro per-
escolhido de forma a possibilitar a operação NTT. Por tencente ao conjunto 0,..., 2d−1 , sendo d < dlog2(q)e.
fim, a mensagem encapsulada é obtida pela concatenação Analogamente, a função Decompressq retorna um x’ =
das matrizes u e v [6]. Decompressq (Compressq (x, d), d), onde x’ é um ele-
mento próximo a x [6].
O algoritmo de desencapsulamento Ky-
A principal finalidade da função Compressq é redu-
ber.CCAKEM.Dec(c,sk) retorna a chave compartilhada
zir o tamanho do texto cifrado, descartando seus bits
K, a partir dos inputs ct ∈ B du·k·n/8+dv·n/8 e sk ∈
menos significativos, sem comprometer a integridade do
B 24·k·n/8+96 . Calcula-se u x v = w e realiza-se a
processo de decriptação.
subtração v-w. Se o resultado desta subtração for
Foram criadas três versões, denominadas Ensaio 01,
mais próximo de q/2 do que zero, a mensagem foi
Ensaio 02 e Ensaio 03, que não empregam essas funções
desencapsulada corretamente; todavia, se estiver mais
e referem-se respectivamente às versões Kyber512, Ky-
perto de zero, o resultado da operação será zero [7].
ber768 e Kyber1024. Os ı́ndices da tabela 5 expressam
As entradas e saı́das dos algoritmos de encriptação e a velocidade de processamento em relação a quantidade
desencriptação Kyber.PKE, bem como as de encapsula- de ciclos utilizados.
mento e desencapsulamento Kyber.KEM encontram-se Com relação ao Kyber512, verifica-se que sua versão
dispostas na tabela 3. alternativa apresenta melhoria no desempenho do algo-
da matriz aleatória Â, e a SHAKE-256 utilizada no pro-
Tabela 5: Resultado do experimento 01
cesso de geração da chave privada e dos erros e, e1,
Versão Geração de chaves Encriptação Decriptação
Kyber512 120.760 137.033 44.611
e2. Ambos hash H (SHA3-256) e G (SHA3-512) partici-
Ensaio 01 116.004 (-4%) 137.488 (+0,03%) 44.543 (-0,01%) pam nos algoritmos de encapsulamento e desencapsula-
Kyber768 192.706 217.390 55.493 mento. Nas versões 90s, substituem-se as SHAKE-128 e
Ensaio 02 192.376 (-0,001%) 216.991(-0,01%) 56.662 (+0,01%) SHAKE-256 pelo AES256, como XOF e PRF, respecti-
Kyber.1024 307.071 336.842 73.919 vamente; a famı́lia Keccak é substituı́da pelo SHA256 e
Ensaio 03 310.538 (+1,01%) 337.490 (+0,01%) 75.126 (+0,01%) SHA512.
Fonte: construção do autor Foram simuladas seis ensaios alternando-se o emprego
das funções SHA2-256/ 512 e SHA3-256/ 512 como
ritmo de geração de chaves. Todavia, a alternativa do funções hash H e G, a fim de avaliar o impacto dos hash
Kyber768 não possui reduções ou acréscimos significati- SHA2-256/512 e SHA3-256/512 no desempenho dos al-
vos em relação à sua referência, enquanto que Kyber1024 goritmos de geração de chaves, encapsulamento e desen-
apresenta redução de desempenho devido ao incremento capsulamento. Os ensaios 04, 05, 06, 07, 08 e 09 referem-
de operações de aritmética polinomial. se respectivamente aos algoritmos Kyber512, Kyber512-
90s, Kyber768, Kyber768-90s, Kyber1024 e Kyber1024-
5.2 Anéis Zq 90s.Os ı́ndices encontram-se apresentados na tabela 7.
Em um problema MLWE, cada entrada da matriz
pública  é um polinômio distinto pertencente ao anel
Zq[x]/(xn +1). Em problemas RLWE, cada linha desta Tabela 7: Resultado do experimento 03 (H e G)
matriz é um polinômio distinto e cuja construção, cı́clica, Versão H G Geração de chaves Encapsulamento Desencapsulamento
Kyber512 SHA3-256 SHA3-512 131.185 169.151 196.297
é baseada na primeira linha. Kyber512-90s SHA2-256 SHA2-512 131.660 (+0,3%) 168.598 (-0,004%) 198.542 (+1,01%)
Ensaio 04 SHA2-256 SHA3-512 132.717 (+1,01%) 170.997 (+1,01%) 198.578 (+1,01%)
O emprego da NTT possibilita operações algébricas Ensaio 05 SHA3-256 SHA2-512 132.442 (+1,00%) 173.065 (+1,02%) 200.541 (+1,02%)
de multiplicação polinomial mais rápidas, maior capaci- Kyber768 SHA3-256 SHA3-512 218.273 265.529 302.868
Kyber768-90s SHA2-256 SHA2-512 214.870 (-0,02%) 269.156 (+1,01%) 421.206 (+39,07%)
dade de transmissão de bits por mensagens e aumento Ensaio 06 SHA2-256 SHA3-512 219.567 (+1,00%) 286.044 (+1,07%) 328.222 (+1,08%)
Ensaio 07 SHA3-256 SHA2-512 217.763 (-0,01%) 274.283 (+1,03%) 310.652 (+1,02%)
da segurança em relação ao problema LWE. Kyber1024 SHA3-256 SHA3-512 331.714 388.970 434.883
O parâmetro q define a dimensão do anel Zq. Na atual Kyber1024-90s SHA2-256 SHA2-512 346.424 (+1,04%) 619.948 (+59,38%) 680.173 (+56,40%)
Ensaio 08 SHA2-256 SHA3-512 355.258 (+1,07%) 419.701 (+1,07%) 473.154 (+1,08%)
rodada do concurso, ele foi estabelecido como 3329, mas Ensaio 09 SHA3-256 SHA2-512 338.063 (+1,01%) 404.199 (+1,03%) 469.671 (+1,07%)
diferentes valores poderiam ser empregados para possi- Fonte: construção do autor
bilitar operações polinomiais baseadas na NTT.
Avaliou-se o processamento de geração de chaves do Observando as chamadas às funções H e G, verifica-se
Kyber512 empregando-se os dois números primos meno- o emprego majoritário do hash H em relação ao hash G:
res (257 e 769) e o número primo imediatamente maior uma vez na Geração de chaves, três vezes no encapsula-
(7681) que permitem a multiplicação baseada na NTT. mento e uma vez no desencapsulamento, ressaltando sua
Os resultados deste experimento encontram-se dispostos influência no processamento dos algoritmos.
na tabela 6. As funções SHA3 são extremamente velozes quando
implementadas em hardwares dedicáveis ou pro-
Tabela 6: Resultado do experimento 02 gramáveis, porém mais lentas que as funções SHA2
Versão Kyber512 q quando implementadas em softwares. Este quadro é re-
3329 769 257 7681 vertido nas versões de referência do Kyber, pois os SHA3
Geração de chaves 121.323 118.173 (-3%) 117.343 (-4%) 137.869 (+13%) fazem uso do paralelismo, resultando em vetorizações
Fonte: construção do autor mais eficientes. Importante destacar que as primitivas
SHA2 utilizadas nestas simulações não fazem uso de re-
Observa-se que a redução do parâmetro beneficia o cursos de aceleração em hardware [6].
desempenho do algoritmo, mas reduz também sua se-
gurança, e consequente eficiência. Empregando-se q = 5.3.2 Primitivas XOF e PRF
7681, verifica-se piora significativa no desempenho do al- Kyber utiliza apenas três primitivas simétricas. Esta
goritmo (+13%). Conclui-se, portanto, que o valor 3329 decisão foi tomada para reduzir o tamanho do código-
corresponde ao ponto ótimo, visto que a relação proces- fonte e a possibilidade de fraquezas que possam ser ex-
samento x segurança encontra-se balanceada. plorada. Existem poucas XOF descritas na literatura,
sendo as mais conhecidas, e que também cunharam o
5.3 Primitivas simétricas H, G, XOF e PRF
termo XOF, as funções SHAKE baseadas na famı́lia Kec-
5.3.1 Primitivas H e G cak [6].
Nas versões de referências, Kyber emprega uma função A escolha do SHAKE-128 como XOF nas versões de
de saı́da extensı́vel (SHAKE-128), uma função pseudo- referência foi devido a sua saı́da pseudo-aleatória, e não
aleatória (SHAKE-256), uma função de derivação de nas suas propriedades de segurança tradicionais de hash.
chave (SHAKE-256) e duas funções hash H (SHA3-256) Na segunda rodada do concurso, H, G e PRF foram ins-
e G (SHA3-512). SHAKE-128 é empregada na formação tanciadas utilizando a SHAKE-256. Essa alteração na
versão 3 do Kyber aumentou o tamanho do seu código e criptograma, verifica-se a impossibilidade de utilização
melhorou o desempenho de seus algoritmos. de sequências verdadeiramente aleatórias, dada a difi-
Semelhante aos hash H e G, avaliou-se o desempe- culdade de guarda e emprego das chaves empregadas.
nho das funções SHAKE 128, SHAKE 256 e AES 256 Esta dificuldade remete ao One-Time Pad, cuja chave
como XOF e PRF nos processos de geração das cha- aleatória possui tamanho igual ao da mensagem cifrada.
ves, encriptação e decriptação do Kyber. Seguindo- Normalmente, uma semente de um gerador de números
se a métrica anterior, foram simulando-se seis ensaios pseudoaleatórios é pequena e fácil de ser substituı́da, e
alternando o emprego das funções SHAKE 128/256 e deseja-se que a sua geração seja rápida, a fim de pou-
AES256. Os ensaios 10, 11, 12, 13, 14 e 15 referem-se par recursos computacionais e priorizar o emprego do
respectivamente ao Kyber512, Kyber512-90s, Kyber768, criptograma.
Kyber768-90s, Kyber1024 e Kyber1024-90s, e os resul- Os estados binários de números pseudoaleatórios de-
tados obtidos encontram-se na tabela 8. vem possuir uma cardinalidade de bits balanceada, ex-
pressa em quantidades semelhantes de bits 0 e 1. Em
uma análise de sequências binárias, o número de con-
Tabela 8: Resultado do experimento 04 (XOF e PRF)
Versão XOF PRF Geração de chaves Encapsulamento Desencapsulamento cordâncias e discordâncias de pares (0,1) deve ser pro-
Kyber512
Kyber512-90s
SHAKE 128 SHAKE 256
AES256 AES256
121.830 136.537
211.724 (+73%) 248.778 (+82%)
43.103
46.287 (+7,3%)
porcional em todos os trechos analisados.
Ensaio 10 SHAKE128 AES256 123.388 (+1,2%) 142.941 (+4,6%) 45.125 (+4,6%) Semelhante às one-way functions, o conhecimento de
Ensaio 11 AES256 SHAKE128 124.038 (+1,8%) 153.056 (+12%) 51.021 (+18%)
Kyber768 SHAKE 128 SHAKE 256 199.905 242.119 59.784 uma sequência numérica saı́da de um cifrador não deve
Kyber768-90s AES256 AES256 376.025 (+88%) 413.290 (+70%) 58.484 (-3%)
Ensaio 12 SHAKE128 AES256 212.758 (+6,4%) 233.452 (-4,5%) 61.943 (-3,6%)
permitir que um criptoanalista obtenha os parâmetros
Ensaio 13 AES256 SHAKE128 199.085 (-1%) 225.239 (-7%) 58.256 (-3%) iniciais do algoritmo de geração da cifra, ou que possa
Kyber1024 SHAKE 128 SHAKE 256 321.894 354.209 82.576
Kyber1024-90s AES256 AES256 608.668 (+89%) 662.623 (+87%) 75.885 (-9%) predizer bits antecedentes ou subsequentes da sequência
Ensaio 14 SHAKE128 AES256 318.514 (-2%) 351.588 (-1%) 82.737 (+0,01%)
Ensaio 15 AES256 SHAKE128 328.679 (+2%) 360.075 (+0,16%) 78.716 (-5%) binária em análise, nem descobrir a semente ou a chave
Fonte: construção do autor que foram empregadas para gerá-la.