Criptografia de Chaves Públicas
Criptografia de chaves públicas. Conceitos de chaves
públicas e privadas. Definições. Aplicações. Requisitos. RSA. Equivalência de segurança entre criptografia simétrica x ECC x RSA/DSA.
Criptografia de chave pública
•
a criptografia tradicional de chave
privada/secreta/chave única usa uma
chave
•
compartilhada por emissor e receptor
•
se essa chave
for divulgada, as
informações
ficam comprometidas
•
também é simétrica, partes são iguais
•
portanto não protege o remetente de um
receptor que forge uma mensagem e declare
que foi enviada pelo remetente
Criptografia de chave pública
•
provavelmente, o mais significativo avanço em
3000 anos de história da criptografia.
•
usa duas chaves – uma pública e uma privada
•
é assimétrica uma vez que as partes não são
iguais
•
usa aplicação inteligente do conceito da teoria
dos números para função
•
em vez de substituir, complementa a
criptografia de chave pública
Por que criptografia de chave pública?
• resolvida para solucionar duas questões de chave: – distribuição de chave – como ter comunicação
segura, em geral, sem ter de confiar em um CDC com sua chave
– assinatura digital – como verificar que uma
mensagem chegou intacta de quem se diz remetente • invenção pública de Whitfield Diffie & Martin Hellman, da
Criptografia de chave pública
• a criptografia de chave pública/de duas
chaves/assimétrica envolve o uso de duas chaves:
– uma chave pública, que pode ser conhecida por qualquer um e pode ser usada para criptografar
mensagens e verificar assinaturas
– uma chave privada, conhecida somente pelo destinatário, usada para decriptografar
mensagens, e sinais (cria) assinaturas
• é assimétrica porque
– aqueles que criptografam a mensagem ou verificam a assinatura não podem decriptografar mensagens ou criar assinaturas.
Características da chave pública
•
o algoritmo de chave pública conta com duas
chaves, em que:
– é computacionalmente inviável determinar a chave de decriptografia conhecendo-se apenas o algoritmo e a chave de criptografia
– é computacionalmente fácil de/criptografar
mensagens quando a chave de de/criptografia é conhecida
– qualquer uma das duas chaves relacionadas pode ser usada para criptografia, com a outra usada para a
Aplicações da chave pública
• pode ser classificada em três categorias:
– criptografia/decriptografia (oferece sigilo)
– assinaturas digitais (oferece autenticação)
– troca de chave (de chaves de sessão – criptografia simétrica)
• alguns algoritmos são aplicáveis a vários usos, outros são de uso específico
Segurança de esquemas de chave pública
• como em esquemas de chave privada uma procura
exaustiva por ataque de força bruta é sempre
teoricamente possível
• mas as chaves usadas são muito grandes (>512bits) • a segurança reside em uma diferença grande o
suficiente de dificuldade entre de/criptografia fácil e
problemas difíceis de criptoanálise
• geralmente, o problema difícil é conhecido, mas é difícil o suficiente para tornar o ataque impraticável
• requer o uso de números muito grandes
• portanto, é lento comparado a esquemas de chave privada
RSA
• criado por Rivest, Shamir & Adleman do MIT em 1977 • é o esquema de chave pública mais conhecido e usado • baseado na exponenciação de um conjunto de números
finito sobre inteiros módulo a (sendo a primo) • usa inteiros grandes (por exemplo, 1024 bits)
• a segurança se deve à dificuldade de fatorar números grandes
Geração de chaves
do
RSA
• cada usuário gera um par de chaves pública/privada ao: • selecionar aleatoriamente dois números primos grandes
p, q
• calcular seu sistema módulo n=p.q
– Nota: ø(n)=(p-1)(q-1)
• selecionar aleatoriamente a chave de criptografia e
• onde 1<e<ø(n), mdc(e,ø(n))=1 (ou seja, ø(n) e “e” são
primos entre si, mas não obrigatoriamente primos.
• resolver a seguinte equação para encontrar a chave de decriptografia d
– e.d=1 mod ø(n) e 0≤d≤n
• publicar sua chave pública de criptografia: PU={e,n} • manter secreta sua chave privada de decriptografia:
Uso do RSA
•
para criptografar a mensagem M o emissor :
– obtém a chave pública do receptor PU={e,n} – calcula: C = Me mod n, onde 0≤M<n
•
para decriptografar o texto cifrado
C
o
proprietário :
– usa sua chave privada PR={d,n} – calcula : M = Cd mod n
•
observe que a mensagem M deve ser menor que
o módulo n (
em bloco)
, se necessário
Por que o RSA funciona
•
por causa do teorema de Euler :
– aø(n)mod n = 1 onde mdc(a,n)=1
•
no RSA temos :
– n=p.q
– ø(n)=(p-1)(q-1)
– selecionamos cuidadosamente e e d para serem
inversos mod ø(n)
– portanto, e.d=1+k.ø(n) para qualquer k
•
então:
C
d= M
e.d= M
1+k.ø(n)= M
1.(M
ø(n))
kExemplo de RSA para geração de chave
1. selecionamos os primos: p=17 e q=11 2. calculamos n = pq =17 x 11=187
3. calculamos ø(n)=(p–1)(q-1)=16 x 10=160
4. selecionamos e: gcd(e,160)=1; selecionamos e=7 5. determinamos d: de=1 mod 160 e d < 160 o valor
correto é d=23, pois 23x7=161= 10x16+1
6. publique a chave pública pu={7,187}
Exemplo de de/criptografia
com o
RSA
• um exemplo da criptografia/decriptografia com o rsa é: • dada a mensagem m = 88 (nota: 88<187)
• criptografia:
C = 887 mod 187 = 11
• decriptografia:
Criptografia eficiente
• a criptografia usa a exponenciação para elevar e • portanto, se e é pequeno, será mais rápido
– será mais rápido e=65537 (216-1)
– também vemos escolhas de e=3 ou e=17
• mas se e for muito pequeno (p.e. e=3) pode haver ataque
• se e é fixo deve garantir mdc(e,ø(n))=1
– ou seja, rejeita qualquer p ou q não relativamente primo a “e”
Decriptografia eficiente
• a decriptografia usa a exponenciação para elevar d
– esse valor é provavelmente grande, se não for, não será seguro
• somente o proprietário da chave privada, que conhece os valores de p e q, pode usar essa técnica
Geração de chave
com o
RSA
•
os usuários do RSA devem:
– determinar aleatoriamente dois primos - p, q – selecionar seja e ou d,e calcular o outro
•
os primos p,q não devem ser de fácil derivação
a partir do módulo
n=p.q
– O que significa que precisam ser suficientemente grandes
– Escolher números sucessivos e aplicar um teste probabilístico
•
os expoentes e, d são inversos, então deve-se
usar o algoritmo inverso para
calcular um ao
outro
Segurança RSA
•
há quatro abordagens possíveis para atacar o
RSA:
– força bruta (impraticável, dependendo do tamanho de chave)
– ataques matemáticos (baseados na dificuldade de calcular ø(n), pela fatoração do módulo n)
– ataques de temporização (durante a execução da decriptografia)
– ataques de texto cifrado escolhido (explora as propriedades do RSA)
O problema da fatoração
• os ataques ocorrem de três formas:
– fatora-se n=p.q, então é calculado ø(n) e então d – determina-se ø(n) diretamente e calcula-se d
– determina-se d diretamente
• atualmente supõe-se que um RSA de 1024-2048 bits seja seguro
• garantir p, q com tamanho similar e correspondendo a outras restrições
Ataques de texto cifrado escolhido
•
o
RSA é vulnerável a um ataque de texto cifrado escolhido (CCA)• o adversário escolhe diversos textos cifrados e, então,
recebe os textos claros correspondentes
• escolhe um texto cifrado para explorar propriedades do RSA e,
assim, obter informações que ajudem na criptoanálise podemos:
• contar com o preenchimento aleatório do texto claro
ou
• usar o preenchimento ideal de criptografia assimétrica
Acordo de chaves DIFFIE-HELLMAN
•
primeiro algoritmo de chave pública publicado
•
foi proposto por Diffie e Hellman em 1976,
juntamente com os conceitos da chave pública
– nota: atualmente sabemos que Williamson (UK CESG) propôs esse conceito, secretamente, em 1970
•
é um método prático para negociação pública de
chave secreta
Acordo de chaves Diffie-Hellman
•
um esquema de distribuição de chave pública
– não pode ser usado para troca de uma mensagem arbitrária
– em vez disso, pode estabelecer uma chave comum – conhecida somente pelos dois participantes
•
o valor da chave depende dos participantes (e
sua informação de chave pública e privada)
•
baseada em exponenciação sobre um corpo
finito (módulo a primo ou a polinomial) - fácil
•
a segurança reside na dificuldade de calcular
Exemplo de Diffie-Hellman
• os usuários Alice e Bob que desejam negociar chaves: • decidem usar os primos q=353 e a=3
• selecionam chaves secretas aletórias:
– A escolhe xA=97, B escolhe xB=233
• calculam suas respectivas chaves públicas:
– yA=397 mod 353 = 40 (Alice)
– yB=3233 mod 353 = 248 (Bob)
• calculam sua chave de sessão compartilhada como:
– KAB= yBxA mod 353 = 24897 = 160 (Alice) – KAB= yAxB mod 353 = 40233 = 160 (Bob)
Criptografia de curva elíptica
•
a maioria dos sistemas de criptografia de chave
pública (RSA, D-H)
usa tanto inteiro como
aritmética polininomial
com números/polinômios
muito grandes
•
isso gerou uma carga de armazenamento e de
processamento maior
•
uma alternativa é o uso de curvas elípticas
•
elas proporcionam a mesma segurança com
tamanhos de bits menores
Comentário: Curvas elípticas sobre números reais
•
uma curva elíptica é definida por uma equação
com duas variáveis
x
e
y
, com coeficientes
•
considere uma curva elíptica cúbica, na forma
– y2 = x3 + ax + b
– onde x, y, a e b são números reais – também define o ponto zero O
•
temos a operação de adição para a curva
elíptica
– geometricamente, a soma de Q+P nos dá o ponto de intersecção R
Comentário: Criptografia/decriptografia ECC
•
há várias alternativas, examinamos a mais
simples
•
primeiro temos de codificar uma mensagem M
como um ponto na curva elíptica P
m•
selecionamos uma curva adequada e o ponto G
como em D-H
• cada usuário escolhe uma chave privada n
A<n
e calcula a chave pública P
A=n
AG
• para criptografar P
m: C
m={kG, P
m+kP
b}, k
aleatório
Segurança ECC
•
depende do problema do logaritmo elíptico
•
o método mais rápido é o “Pollard rho”
•
comparado à fatoração, pode usar tamanhos de
chave muito menores do que com o RSA etc
•
para tamanhos de chave iguais, o esforço
computacional é equivalente
•
portanto, para uma segurança semelhante, o
ECC oferece vantagens computacionais
para segurança equivalente
Esquema simétrico
(tamanho da chave em bits) Esquema baseado em ECC(tamanho de n em bits) (módulo tamanho em bits)RSA/DSA
55 112 512 80 160 1024 112 224 2048 128 256 3072 192 384 7680 256 512 15360