Académique Documents
Professionnel Documents
Culture Documents
Abstract. The RSA cryptosystem are the fact that this cryptographic algorithm
is the world de facto standard public key cryptosystem and it includes fundamental
mathematical concepts for the understanding of the modern cryptography being a
foundation for more advanced studies. This article synthesizes 30 years of research
on RSA, analyzing concepts and algorithms used in variations and attacks.
1. Introdução
Cada vez mais transações comerciais, financeiras, governamentais e mesmo
pessoais migram para o mundo digital. Esse fato implica em que as informações
antes armazenadas em papel, filme e outros meios físicos passam a serem
armazenadas na forma eletrônica, facilitando seu armazenamento e
compartilhamento. No entanto, sua manipulação também se torna mais fácil, o que
implica em fraude e falsificação.
Métodos criptográficos é a forma mais adequada de fornecer integridade,
confidencialidade e autenticação de dados e entidades sobre informações digitais,
pois independem da natureza dos dados e dos meios físicos onde eles são
armazenados. Neste contexto, crescem as pesquisas na área de segurança da
informação e entre elas as de criptologia.
O algoritmo criptográfico RSA é um padrão mundial entre os algoritmos
criptográficos de chaves públicas, tanto para confidencialidade, como para assinatura
digital. O objetivo da pesquisa realizada, a qual foi tema de dissertação de mestrado
do primeiro autor, foi analisar as pesquisas realizadas ao longo dos 30 anos de
existência do RSA, desde o seu anúncio, em 1977, possibilitando a criação de uma
lista atualizada de cuidados, necessários para uma implementação RSA segura.
Foram analisados conceitos matemáticos, padronizações, variações, ataques, a
evolução dos cuidados com o algoritmo ao longo dos anos e outras considerações.
Esta lista agiliza estudos, análises e atualizações para pesquisadores interessados
diretamente no tema ou mesmo para que profissionais de engenharia de software e
de desenvolvimento de sistemas possam visualizar o processo envolvido no RSA e
se desejarem se assegurarem de estarem utilizando corretamente este algoritmo em
suas implementações.
1
Função na qual é tratável de se calcular y=f(x), mas é intratável, o cálculo de x=f-1(y), a menos que
se tenha conhecimento de determinado parâmetro (segredo).
apenas troca de chaves. Apesar do algoritmo ElGamal permitir troca de chaves,
criptografia e assinatura digital, ele é bem menos utilizado do que o algoritmo RSA.
Comparando o RSA com algoritmos de curvas elípticas, observa-se que
existem diversas patentes relacionadas a cálculos específicos para algoritmos com
curvas elípticas e a patente norte-americana do RSA original está expirada desde
2000. Algoritmos com curvas elípticas podem prover o mesmo nível de segurança
que o RSA com chaves menores, sendo mais eficientes do que o RSA na assinatura
e deciframento, porém, são mais lentos para cifrar e verificar assinaturas digitais.
Outro aspecto a ser comparado é que, devido à data de criação dos algoritmos com
curvas elípticas serem recentes em relação ao RSA, a segurança do RSA foi muito
mais testada do que a dos algoritmos com curvas elípticas.
O RSA é o algoritmo de chave pública mais utilizado e sua utilização tem
crescido ainda mais desde que expirou a validade da sua patente norte-americana,
se difundindo em diversos aplicativos com código aberto sobre licença GPL, como o
OpenSLL.
3. Aplicações RSA
O algoritmo RSA é um padrão mundial e suas aplicações são muitas. Seguem
exemplos de aplicativos que utilizam o RSA entre as suas ferramentas de segurança.
ICP-Brasil
O algoritmo RSA é utilizado na infra-estrutura de chaves públicas brasileira e é
o único algoritmo de chave pública que pode ser utilizado pela AC-Raiz, a raiz das
Autoridades Certificadoras de assinaturas digitais no Brasil (ICP-Brasil, 2008).
4. O algoritmo RSA
O RSA foi desenvolvido em abril de 1977 (Rivest at al., 1978), pelos
professores do MIT Ronald Rivest e Adi Shamir e pelo professor da USC Leonard
Adleman, batizado com as iniciais de seus nomes.
O RSA permite:
• ciframento e deciframento de mensagem, no conceito de chave pública;
• a geração e a verificação de uma assinatura digital;
• a combinação dos itens anteriores.
Em 1999, Boneh afirmou que a estrutura do RSA não precisou ser alterada
desde a sua criação, pois os ataques encontrados são exemplos de utilizações
inadequadas, podendo ser evitados com a escolha dos parâmetros apropriados
(Boneh, 1999). Esta afirmação continua válida atualmente.
O algoritmo RSA gera a chave pública e a chave privada a partir de números
primos grandes, sendo computacionalmente intratável obter a chave privada a partir
da chave pública. O tamanho ideal dos fatores primos do módulo RSA varia
conforme a necessidade de cada aplicação. Quanto maior forem os números primos
usados para a criação das chaves, maior será a segurança proporcionada por esse
algoritmo e menor será o seu desempenho.
6. Variações RSA
Uma variação de um algoritmo criptográfico consiste em uma modificação
realizada na definição original deste, a fim de trazer algum benefício ao processo,
seja este de segurança, de tempo de processamento, de espaço de armazenamento
em memória ou outras vantagens. Pode ocorrer em diferentes partes do algoritmo e
atingir objetivos distintos.
Devido ao tempo de existência do RSA, surgiram variações da definição inicial
e algumas foram adotadas como padrão em normas técnicas. Não há análise para
se determinar qual a melhor variação RSA. Cada variação visa um determinado
objetivo. Deve-se analisar a melhor opção de variação para a implementação a ser
realizada, levando-se em consideração fatores tais como necessidade de segurança,
tempo de processamento, capacidade computacional, possibilidade de investimento
e necessidades de pagamento de taxas relativas a patentes.
• 1991: Publicado PKCS #1. A versão 1.0 foi publicada em março, sofrendo
correções até estabilizar em junho, com a publicação da versão 1.4. Publicado
o software PGP. Zimmermann. Fatorado Módulo RSA-100, com 332 bits e 100
dígitos decimais, utilizando-se o algoritmo QS.
• 1992: Proposto ataque MITM, Ocultamento. Davida. Proposto algoritmo
análogo ao RSA baseado em curvas elípticas. Demytko.
• 2000: Padrão ISO/IEC 9796-1 fica obsoleto. Grieu. Expoente privado não
deve ser menos que n0,292. Boneh e Durfee. Expirada a patente do algoritmo
RSA.
9. Cuidados RSA
O RSA é um algoritmo criptográfico de chave pública amplamente aceito e
disseminado que permite o sigilo de mensagens e a geração e verificação de
assinaturas digitais (autenticação de originalidade de dados e identidade do
remetente). Sua estrutura não precisou ser alterada desde a sua criação, mas
existem vulnerabilidades caso sua implementação não seja cuidadosa. O RSA utiliza
uma teoria matemática elegante, com vários conceitos matemáticos envolvidos,
sendo que a análise destes fundamentos matemáticos possibilita maior confiança na
segurança dele, é um embasamento para a criação de variações que apresentem
benefícios e é um alicerce para estudos mais sofisticados.
A maior vulnerabilidade do RSA se encontra na falta de atenção quanto aos
cuidados que seguem, a serem observados ao se desenvolver uma aplicação que
utilize o algoritmo RSA, envolvendo implementação, escolha das chaves e utilização
do algoritmo (Pereira, 2008):
III. A diferença |p-q| não pode ser pequena, pois se p é próximo de q, então p
é aproximadamente igual à raiz quadrada de n e efetuando-se testes
sucessivos para todos os primos próximos a raiz quadrada de n encontra-
se p (ou q).
• Este ataque possibilita a fatoração de n em tempo O(|p-q|), o qual não
deve ser tratável. Como referência, pode-se utilizar |p-q|
aproximadamente igual a 2x, x sendo o quociente de |n| dividido por 4.
IV. Cada um dos números p-1 e q-1 deve ter um fator primo grande, caso
contrário, fica possível fatorar n em tempo computacional tratável, como
por exemplo, com o algoritmo de fatoração p-1 de Pollard.
• No mínimo, p-1=2p' e q-1=2q', com p' e q' também primos da mesma
ordem de grandeza que p e q.
V. Cada um dos números p+1 e q+1 deve ter um fator primo grande, caso
contrário, torna-se possível fatorar n em tempo computacional tratável,
como por exemplo, com o algoritmo de fatoração p+1 de Pollard.
• No mínimo, p+1=2p'' e q+1=2q'', com p'' e q'' também primos da mesma
ordem de grandeza que p e q.
VI. O mdc(e-1, p-1) e o mdc(e-1, q-1) são sempre maior ou igual a 2, mas
devem ser pequenos para evitar um elevado número de pontos fixos.
VII. O tamanho do bloco em bits não pode ser pequeno demais para que
possibilite a construção de um tabela de pares ordenados (mensagem,
criptograma).
• O tamanho de bloco ideal é menor inteiro maior ou igual a lg(n)-1.
IX. O algoritmo RSA não deve ser aplicado isoladamente, mas sempre dentro
de uma codificação de mensagem, o que impede diversos tipos de
ataques.
XII. O usuário detentor da chave privada deve ter cuidado, não só quanto a
não divulgá-la, mas também estar atento a não utilizá-la sem necessidade,
por exemplo em mensagens aleatórias, sem objetivo bem definido, as
quais podem ser utilizadas como parte de alguns ataque.
XV. Um módulo n não pode ser utilizado por mais de um usuário, assim como
não deve existir na aplicação, dois módulos n1 e n2 tal que (n1, n2) seja
diferente de 1.
XVI. Para utilização de uma variação do RSA, como por exemplo o MRSA,
deve-se observar os cuidados específicos para esta variação.
XVIII. Estar sempre atento a novas publicações sobre o algoritmo RSA, visto que
sempre pode surgir novos ataques ao algoritmo como por exemplo, o
dispositivo de hardware teórico TWIRL proposto em 2003 por Shamir e
Tromer. Podem surgir também variações que sejam úteis a aplicação que
está sendo implantada como, por exemplo, o RSA CRT pelo algoritmo
ART, que agiliza o deciframento do MRSA, proposto por Rao e Yang, em
2006.
11. Referências
Boneh, D. (1999) “Twenty years of attacks on the RSA cryptosystem”, journal
Notices of the American Mathematical Society, volume 46, number 2.