Página Inicial
>
5. Criptografia
>
5.2 Criptografia assimétrica
|
Anterior
Próxima
|
|
|
|
Em
1976, Diffie e Hellman [DIF 76] mudaram os rumos da
criptografia com a criptografia assimétrica, também
chamada de criptografia de chave pública, eles
propuseram um sistema para cifrar e decifrar uma messagem com
duas chaves distintas, sendo a pública (chave
pública) que pode ser divulgada e a outra mantida em
segredo (chave privada). Funcionando da seguinte forma: se
crifrar a mensagem com a chave privada ela somente será
decifrada pela chave pública e
vice-versa.
O
algoritmo de chave pública não substitui a criptografia
simétrica, pois eles são lentos e vulneráveis a
alguns ataques. Geralmente a criptografia de chave pública
é usada para distribuir com segurança as chaves
simétricas (chaves de seção), pois esta será
usada para cifrar as mensagens. Tal técnica funciona da
seguinte forma, o originador gera uma chave simétrica (chave
de seção) e esta mesma é cifrada usando a chave
pública do receptor (chave assimétrica) e a envia,
só poderá decifrar a pessoa que possuir a chave privada
do receptor, que somente ele sabe qual. Recuperando assim a chave
simétrica e ela então poderá ser usada para a
comunicação.
Segue
abaixo as figuras que representam como transmitir obtendo a
confidencialidade e a autenticação.
Figura 5 - Retirada da apresentação:
CRIPTOGRAFIA DE CHAVES PÚBLICAS - Marcelo
Augusto Rauh Schmitt – RNP (Rede Nacional de Ensino e
Pesquisa)
Figura 6 - Retirada da apresentação:
CRIPTOGRAFIA DE CHAVES PÚBLICAS - Marcelo
Augusto Rauh Schmitt – RNP (Rede Nacional de Ensino e
Pesquisa)
Este
processo é que chamamos de assinatura
digital.
Em 1977,
Rivest, Shamir e Adleman desenvolveram um algoritmo
assimétrico denominado RSA, em referência aos sobrenomes
dos autores. O algoritmo RSA é a base, atualmente, da
maioria das aplicações que utilizam criptografia
assimétrica. O tamanho desta chave varia entre 512 a
2048bits.
|
|
As chaves
pública/privada é gerada a partir de números
aleatórios, que vão ser descartados mais tarde. Essa
criptografia só é possivel pois existe um relacionamento
matemático entre estas chaves geradas por estes números
aleatórios e pelos cálculos para encontrar estas
chaves.
Cabe
salientar que a chave pública é geralmente
distribuída e a chave privada mantida em segredo e armazenada
em um smart-card, token ou em repositório em
software.
Tecnicamente, o procedimento para
gerar um par de chaves pública/privada é o
seguinte:
1. Escolha dois números
primos extensos, p e q;
2. Calcule n = p x
q;
3. z = (p – 1 ) x ( q
–1);
4. Escolha um número
relativamente primo em relação a “z” e
chame-o de “e”;
5. Encontre “d” de
forma que d = e-1 mod z. (“mod” é
o resto inteiro da
divisão).
Portando, a
chave pública (KU) consiste em KU = {e, n} e a chave privada
(KR)
consiste em KR = {d,
n}.
|
|
Como
já foi dito anteriormente as chaves assimétricas
públicas/privadas podem ser utilizadas em ambas
direções, ou seja, cifrar com a pública e decifrar
com a privada e vice-e-versa.
A figura
abaixo mostra um documento cifrado com a chave
privada:
Figura 7 – Retirada do livro
“INTRODUÇÃO À
CERTIFICAÇÃO
DIGITAL DA
CRIPTOGRAFIA AO CARIMBO DE TEMPO”
Vemos
acima que, ao cifrar o documento, foi como tivesse criado um lacre
com ranhuras como as de uma chave e o documento só será
decifrado com a chave de ranhuras opostas. Não há como
descobrir uma chave privada a partir da pública (ou
vice-versa), ou a partir do próprio texto cifrado, o que nos
garante a integridade e a autenticidade.
A função RSA para
cifrar, utilizando a chave privada, é a
seguinte:
C = Md (mod
n)
Onde:
C = texto
cifrado
M = texto
plano
“d”
e “n” são a chave privada KR =
{d,n}.
|
|
Quando se
deseja decifrar um documento cifrado com a chave privada utiliza-se
a chave pública. E assim Beto (da figura) consegue verificar a
autenticidade e integridade de um documento cifrado com a chave
privada de Alice (da figura), mas para isso Beto deve possuir a
chave pública de Alice e submeter ao algoritmo
criptográfico como ilustra a figura
abaixo.
Figura 8 – Retirada do livro
“INTRODUÇÃO À
CERTIFICAÇÃO
DIGITAL DA
CRIPTOGRAFIA AO CARIMBO DE TEMPO”
A função RSA para
decifrar, utilizando a chave pública, é a
seguinte:
M = Ce
(mod n)
Onde:
M = texto
plano
C = texto
cifrado
“e”
e “n” são a chave pública KU =
{e,n}.
|
|
O para
cifrar um documento utilizando a chave pública trabalha-se de
forma muito parecida com a do processo de cifrar com a chave
privada, só que neste caso garante-se o sigilo da
informação. Isto porque para poder abrir um envelope
cifrado com a chave pública necessita-se da chave privada do
destinatário e somente o proprietário do par de chaves
é quem a possui.
Cabe
informar que quem cifrar um documento com a chave pública
não poderámais decifrá-lo, porque normalmente ele
não tem acesso a chave privada.
Em um
sistema de controle de acesso a documentos, onde se exija que um
grupo de pessoas tenha acesso à informação, pode-se
utilizar esta técnica para cifrar o documento com a
chave pública de mais de um
destinatário.
Figura 9 – Retirada do livro
“INTRODUÇÃO
ÀCERTIFICAÇÃO
DIGITAL DA
CRIPTOGRAFIA AO CARIMBO DE TEMPO”
A
função RSA para cifrar, utilizando a chave pública,
é a seguinte:
C = Me (mod
n)
Onde:
C = texto
cifrado
M = texto
plano
“e”
e “n” são a chave pública KU = {e,n} do
destinatário.
|
|
Para
decifrar o documento que foi cifrado com a chave pública e ter
acesso ao conteúdo, há a necessidade de usar a chave
privada. Então submete a chave privada ao algoritmo
criptográfico para decifrar o documento. Como na figura
abaixo.
Neste
procedimento garante-se que somente o possuidor da chave privada
consiga ler o conteúdo do documento, mas este mesmo não
sabe quem foi o remetente.
Figura 10 – Retirada do livro
“INTRODUÇÃO À
CERTIFICAÇÃO
DIGITAL DA
CRIPTOGRAFIA AO CARIMBO DE TEMPO”
A
função RSA para decifrar, utilizando a chave privada,
é a seguinte:
M = Cd (mod
n)
Onde:
M = texto
plano
C = texto
cifrado
“d”
e “n” são a chave privada KR =
{d,n}.
Obs: Para garantir a autenticidade
e sigilo, há a necessidade de aplicar a criptografia com a
chave privada do remetente e depois com a chave pública do
destinatário.
Podemos
tirar como algumas conclusões sobre o algoritmo
assimétrico, que: o texto cifrado é do mesmo tamanho que
o texto plano; utiliza funções exponenciais para cifrar e
decifrar, o que a torna lenta; ela possibilita as tarefas de
autenticação e sigilo; pode tornar a troca de chaves
simétricas segura.
|
|
A
Criptoanálise é a ciência que abrange os
princípios, métodos e meios para se chegar à
decifração de uma mensagem cifrada, sem prévio
conhecimento dos códigos ou algoritmos empregados na
produção do texto cifrado.
Um
documento cifrado é dito computacionalmente seguro se atende a
estes dois critérios:
• O custo para quebrar
o texto cifrado excede ao valor da informação
cifrada;
• O tempo requerido
para quebrar o texto cifrado excede o tempo de vida útil da
informação.
Existem
várias técnicas de criptoanálise que podem ser
usadas para quebrar sistemas cifrados. Uma delas, o ataque da
força bruta (busca exaustiva da chave), consiste na
média do teste de todas as chaves possíveis
de serem usadas. Quanto maior o número de bits da chave,
maior é o esforço para se tentar descobrir a
informação cifrada.
|
|
O
RSA baseia-se da grande dificuldade dos computadores de fatorarem
números grandes, as chaves são geradas
matemáticamente através do produto de dois números
primos grandes. Mesmo que se tenha esse produto (que faz parte da
chave pública divulgada), a segurança ainda é
garantida devido a grande dificuldade de se fatorá-lo e obter
os primos que são essenciais para o
algoritmo.
Se fosse
possível fatorar o valor de n (publicamente conhecido), o
criptoanalista poderia então encontrar "p" e "q", e a partir
deles chegar a "z". Sabendo "z" e "e", torna possível achar
"d" utilizando o algoritmo de Euclides. Felizmente têm-se
tentado fatorar números extensos por pelo menos 300 anos, e a
conclusão que se chega é que esse problema é
extremamente difícil.
Um
algoritmo de busca de chave através da força bruta (busca
exaustiva da chave). Suponha-se um computador executando um
milhão de instruções por segundo durante um ano
inteiro. Assim, tendo uma chave assimétrica de 512 bits
necessitaria de 30 mil computadores executando em paralelo um
milhão de instrução por segundo para ser quebrada
(ou seja, um computador rodando um milhão de
instruções por segundo levaria 30 mil anos para efetuar a
fatoração necessária); uma chave assimétrica de
768 bits demandaria 200 milhões de desses computadores; uma
chave assimétrica de 1.024 bits demandaria 300 bilhões; e
finalmente, uma chave de 2.048 bits exigiria 300
quinqüilhões para ser quebrada.
|
|
A
tradução da palavra hash quer dizer "picar, misturar,
confundir". É uma função criptográfica que tem
como finalidade computar um resumo de mensagem ao criar uma
assinatura digital. Esta função hash, ou também pode
ser chamada de resumo criptográfico, é usada em conjunto
com a criptografia assimétrica, e é utilizada para
garantir a integridade de um documento digital.
Esta
função serve como uma imagem representativa compacta da
mensagem, ou melhor um resumo (que às vezes também é
chamada de impressão digital ou "message digest"), da cadeia
de bits da entrada, e pode ser usada como se fosse unicamente
identificável com aquela entrada, essa função de
resumo criptográfico tem a função parecida com a do
digito verificador do CPF. Pois esse digito tem uma
relação matemática com o restante, se qualquer
número do CPF mudar, o seu digito verificador também
muda. As funções de resumo criptográfico são
usadas para garantir a integridade de dados.
Algumas das propriedades desta
função são:
-
Deve ser computacionalmente inviável fazer a
operação inversa, ou seja, dado um resumo, deve ser
inviável obter uma mensagem original;
-
Duas mensagens semelhantes devem produzir um
resumo completamente diferente;
-
Deve ser fácil e rápido produzir o
resumo.
Com essas
propriedades a função resumo pode ser utilizada para
garantir a integridade de uma mensagem. Isso pode ser feito
enviando-se uma mensagem e o resumo da mensagem cifrada com a chave
privada. O receptor decifra o resumo com a chave pública do
remetente, depois calcula um novo resumo com base na mensagem
recebida e compara os dois valores. Se forem iguais, a mensagem
não foi alterada, garantindo-se dessa forma a sua
integridade.
|
|
|
|