Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
• 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.