Você está na página 1de 3

Aritmética de campos finitos para Criptografia

Luan Silveira e Monica da Silva Figueiredo


1

Resumo. Criptografia é uma das mais proeminientes aplicações da aritmética


de campos finitos. Quase todos algoritmos de chave pública são baseados
nessa aritmética. Este artigo tem por objetivo apresentar diferentes arquite-
turas, métodos e técnicas para reduzir o produto area x tempo dos dispositivos
utilizados nesse contexto.

1. Introdução
Implementações eficientes de algoritmos criptográficos tornou-se uma área de grande
pesquisa nas últimas décadas. Diferentes métricas, como tempo de execução, espaço uti-
lizado para implementação e consumo de energia são usados para media a performance
de um design. Devido ao grande uso da aritmética de campos finitos em criptografia, nas
próximas seções serão discutidas várias métricas utilizadas para processar as operações
básicas o mais rápido possı́vel. Um resultado importante nas pesquisas recentes, mostrou
que usar um módulo unificado para processar aritméticas em mais de um campo traz
grandes vantagens.

2. Fundamentos da aritmética de campos finitos


Os elementos de um campo finito GF(p) são os inteiros do conjunto {0,1,2,...,p-1}, onde
p é um primo ı́mpar. Operações de adição e multiplicação em GF(p) são processadas em
2 passos:
• Adição e multiplicação regular.
• Redução do resultado pelo módulo de p, se aquele for maior ou igual ao módulo.
Ex: GF(5) 4+3 = 2 (mod 5); 2*3 = 1 (mod 5);
No campo finito GF(2n ) os elementos podem ser representados como polinomios
binários de grau menor que n. Um polinomio irredutı́vel p(x) de grau n é utilizado para
construir o GF(2n ). A adição em módulo 2 é correspondente a adição dos coeficientes dos
dois polinomios, sendo que não há propagação de carry nessa operação e o grau do resul-
tado não pode exceder n-1. Os elementos desse campo são todos os polinomios binários
com grau menor que n, da forma A(x) = An−1 xn−1 + ... + a1 x1 + a0 . Multiplicações nesse
espaço são feitas da seguinte forma:
• multiplicação dos polinomios seguida de
• divisão do polinomio gerado pelo polinomio irredutı́vel p(x);

3. Arquiteturas Compactas para Adição e Subtração


A operação mais fundamental na aritmetica de campos finitos, na qual todas as operações
são baseadas, é a operação de adição. O ponto central para o desenvolvimento de um cir-
cuito rápido e compacto para operar sobre essa aritmética está na criação de bons circuitos
somadores. A forma básica para representação redundante de um inteiro é pelo somatório
de 2 outros inteiros: x = xc + xs, onde xc é o carry e xs é a parte válida da soma. Para uma
utilização de um circuito em mais de um campo, deve ser criado um circuito unificado,
onde opere com e sem propagação de carry, depenedendo do campo em estudo.
O circuito somador com essa caracterı́stica pode ser visto na figura 1. Esse circuito
tem por caracterı́stica somar um número com carry, com um inteiro sem carry, o que
ocorre nas operações de multiplicação. Dessa forma, um circuito com 3 entradas e duas
saı́das é suficiente. Sendo que é válido também para subtrações, pois são tratadas como
adição onde um dos números está em complemento de 2.

Figure 1. Somadores de dois campos

Um problema gerado nessa representação ocorre quando várias adições e


subtrações são necessárias entre multiplicações, o que ocorre em criptografia de curvas
elı́pticas. Avizienis popos o método RSD( Redundant Signed Digit), Essa notação repre-
senta um número pela diferença entre dois outros inteiros, x = x+ - x-. Essa representação
necessita de somadores generalizados, como mostrada na figura 2.
Abaixo estão as representações dos elementos dos tres campos:

• Prime Field GF(p): Os elementos podem ser computados como inteiros em forma
binária, sendo que os digitos são sinalizados. Os valores dos dı́gitos são -1,0,1 e
(0,0),(1,0),(0,1).
• Binary extension field GF(2n ): Os valores desse campo são (0,0),(1,0).
• Ternary extension field GF(3n ): Os valores desse campo são (0,0),(1,0),(0,1).

4. Multiplicação
Para uma implementação eficiente de multiplicações nas aritmética de campos finitos,
o algoritmo Montgomery deve ser utilizado, pois é uma ótima alternativa para ASIC e
FPGA. Esse algoritmo computa a espressão c = a.b (mod p), transformando divisões em
apenas operações shift.

5. RSA
O RSA foi proposto por Rivest, Shamir e Adleman em 1978 e tem como uso troca de
chaves, assinaturas eletrônicas bem como criptopgrafia. Sua segurança se baseia no Prob-
lema de Fatorização de Inteiros que é um problema de difı́cil solução quando tratamos
números grandes o suficiente.
5.1. Configuração
É formado por um par de chaves pública-privada, sendo que a pública é um par de dois
inteiros grandes (n,e) e a privada é composta de um único inteiro grande d. O inteiro n é
o resultado da multiplicação de dois números primos grandes tornando muito difı́cil sua
fatoração. A função Totient de Euler Q(n) = (p − 1)(q − 1) é usada para determinar
o expoente público e e o privado d. O expoente e pode ser escolhido randomicamente
de modo que o maior divisor comum dele e de Q seja 1, mas normalmente é escolhido
um número pequeno para uma rápida encriptação. Já o expoente privado d é o inverso
multiplicativo de e respeitando o módulo Q(n).

5.2. Encriptação/Decriptação
Para mandar uma mensagem m segura executamos a operação modular c = me (modn).
Ao receber a mensagem cirptografada se executa a seguinte operação cd (modn) = m,
descobrindo assim a mensagem original m. Tanto a criptografia quanto a decriptografia
do RSA são nada mais do que exponenciações modulares aplicadas a números muito
grandes.

5.3. Implementação
A aritmética do RSA é executada no anel Zn , cuja inversão não é definida para todos
elementos. As arquiteturas de multiplicação de Montgomery para o campo de primos
finitos podem ser usadas para o RSA sem necessitar modificações. O número ótimo
de pipelines pode ser determinado pela precisão requerida, os recursos disponı́veis e a
velocidade. A utilização é uma métrica importante que necessita ser inspecionada para ver
se os recursos estão sendo bem utilizados. Se a utilização é baixa, siginifica que a mesma
eficiência poderia ser alcançada com menos recursos, porém isso demanda muito tempo.
Dependendo do algoritmo de exponenciação modular utilizada pode existir paralelismos
capazes de aumentar a velocidade computacional. Atques em implementações especı́ficas
podem comprometer ou enfraquecer o algoritmo RSA. Para ter um certo grau de proteção
contra esses ataques existem vários algoritmos de exponenciação e técnicas randômicas
que ajudam a proteger a implementação do RSA.

Você também pode gostar