toci08–segurança em redes de computadores … · toci08 segurança em redes de computadores 3...
TRANSCRIPT
TOCI08–Segurança em Redes de Computadores Módulo 08: Criptografia Assimétrica – RSA e ECC
Prof. M.Sc. Charles Christian Mierse-mail: [email protected]
TOCI08 Segurança em Redes de Computadores 2
Roteiro
Criptografia Moderna: Diferenças criptografia simétrica e
assimétrica Características criptografia assimétrica RSA
Geração de chaves Uso do RSA Processo de cifrar / decifrar Funcionamento Segurança
TOCI08 Segurança em Redes de Computadores 3
Criptografia: Simétrica X Assimétrica
Para Utilizar Um algoritmo e uma chave Alice e Bob compartilham o
algoritmo e a chave
Para a Segurança Chave secreta Impossibilidade de decifrar a
mensagem Algoritmo + amostras do texto
cifrado não devem ser suficientes para determinar a chave
Para Utilizar Um algoritmo e duas chaves Alice e Bob compartilham um
par de chaves
Para a Segurança Uma das duas chaves é
secreta Impossibilidade de decifrar a
mensagem Algoritmo + amostras do texto
cifrado + uma das chaves não devem ser suficientes para determinar a outra chave
TOCI08 Segurança em Redes de Computadores 4
Breve Histórico
Primeiro algoritmo de chave pública foi desenvolvido em 1976
Desenvolvido por : Professores do MIT : Rivest, Shamir Professor do USC : Adlem Primeiro artigo sobre RSA: New Directions in
Cryptography Apresenta chave pública e também apresenta
um novo e ingênuo método para troca de chaves Em 1991 foi adotado o primeiro padrão internacional
para assinaturas digitais (ISO/IEC9796), este esquema se baseia no padrão de chaves públicas segundo o modelo RSA
TOCI08 Segurança em Redes de Computadores 5
Criptografia Assimétrica
Provavelmente o avanço mais significativo em 3000 anos de criptografia
Utiliza duas chaves: Chave pública Chave privada
Tudo o que é cifrado com uma chave somente pode ser decifrado pela outra chave e vice-versa
Assimétrica porque os participantes não têm o mesmo papel Não substitui mas complementa a criptografia simétrica
TOCI08 Segurança em Redes de Computadores 6
Criptografia Assimétrica (Cont.)
A criptografia assimétrica envolve o uso de duas chaves: a chave-pública, que é conhecida de todos, e pode ser utilizada
para cifrar mensagens, e verificar assinaturas a chave-privada, conhecida só pelo receptor, usada para decifrar
mensagens, e assinar (criar) assinaturas Aqueles que podem cifrar mensagens e verificar assinaturas
não podem decifrar mensagens e criar assinaturas
TOCI08 Segurança em Redes de Computadores 7
Criptografia Assimétrica (Cont.)
MENSAGEM *$R!??:{
Fonte Destino
Cifrar Decifrar
Texto Textooriginal
Textocifrado
MENSAGEM
Chave pública Chave privada
TOCI08 Segurança em Redes de Computadores 8
Porquê utilizar criptografia assimétrica?
Desenvolvida para resolver duas questões: Distribuição de chaves – como ter comunicações
seguras sem ter que confiar a um KDC (Key Distribuction Center) a chave
Assinaturas digitais – como verificar que uma mensagem chegou intacta do emissor que é verificado
Invenção pública desenvolvida por Whitfield Diffie & Martin Hellman na Universidade de Stanford -1976 Conhecido anteriormente na comunidade
(secreta/militar) da criptografia Mantido em segredo por motivos militares
TOCI08 Segurança em Redes de Computadores 9
Alguns dos principais algoritmos de criptografia assimétrica patenteados
TOCI08 Segurança em Redes de Computadores 10
Características:criptografia assimétrica
Depende de duas chaves que devem ter as seguintes características: Computacionalmente impossível conhecer a chave
para decifrar sabendo apenas o algoritmo e a chave utilizada para cifrar
Computacionalmente fácil cifrar/decifrar mensagens quando a chave correta é conhecida
Qualquer uma das duas chaves pode ser utilizada para cifrar ou para decifrar
Criptografia Moderna: RSA
TOCI08 Segurança em Redes de Computadores 12
Segurança do Sistema Assimétrico RSA
Ataques de força bruta (procura exaustiva) são teoricamente possíveis. Mas as chaves são demasiadas grandes (maiores que 512bits)
Segurança baseia-se numa suficientemente grande diferença entre a facilidade para cifrar/decifrar e a dificuldade em realizar/implementar a criptoanálise
Geralmente, o problema difícil é conhecido, mas demasiadamente difícil na prática
Nos métodos conhecidos, é computacionalmente exigente (grande quantidade de cálculos matemáticos são necessários)
Lento quando comparado com os métodos de simétrica que geralmente requerem menos operações matemáticas
TOCI08 Segurança em Redes de Computadores 13
Criptografia Assimétrica
O mecanismo de criptografia assimétrica garante quatro pontos básicos: Privacidade
Um interceptador não é capaz de entender o que se passa no canal
Autenticação É possível provar que o remetente e os destinatários são quem
dizem ser Integridade
Alterações em trânsito são detectadas Não repúdio
O emissor não tem como negar que é o autor da mensagem
TOCI08 Segurança em Redes de Computadores 14
O que é RSA?
Ron Rivest Adi Shamir Leonard Adleman
TOCI08 Segurança em Redes de Computadores 15
RSA Rivest, Shamir & Adleman do MIT em 1977 Esquema de chave assimétrica mais conhecido e
mais utilizado no mundo Baseia-se na exponenciação de inteiros utilizando
aritmética modular: Exponenciação leva O((log n)3) operações (fácil
cifrar/decifrar) Utiliza inteiros muito grandes (eg. 1024 bits) Segurança devida à dificuldade em fatorar números
muito grandes Fatorização leva O(e log n log log n) operações (muito difícil
obter a chave privada a partir da chave pública)
TOCI08 Segurança em Redes de Computadores 16
Geração de chaves no RSA
Os utilizadores do RSA têm de: determinar dois primos ao acaso - p, q Selecionar e ou d e calcular o outro
Os primos p,q não podem ser determinados facilmente a partir de N=p.q Têm de ser suficientemente grandes Não há métodos diretos para determinar primos muito
grandes; tipicamente usam-se números aleatórios e testes de “primalidade”. Esses testes não garantem que o número seja primo
TOCI08 Segurança em Redes de Computadores 17
Geração de chaves RSA
Cada utilizador calcula um par de chave pública / chave privada
Seleciona dois números primos aleatoriamente: p,q Calcula em módulo N o valor p.q
ø(N)=(p-1)(q-1) Seleciona a chave de cifrar e (relativamente primo [não há
divisores comuns]) que deve satisfazer: 1<e<ø(N), MDC(e,ø(N))=1
Resolve a equação seguinte para determinar a chave d e.d=1 mod ø(N) e 0≤d≤N
Publica a sua chave pública: KU={e,N} Mantém secreta a sua chave privada: KR={d,p,q}
TOCI08 Segurança em Redes de Computadores 18
Uso do RSA
Para cifrar a mensagem M, o emissor: Obtém a chave pública do receptor KU={e,N} calcula: C=Me mod N, em que 0≤M<N
Para decifrar um texto cifrado C o destinatário: utiliza a sua chave privada KR={d,p,q} calcula: M=Cd mod N
M tem de ser menor que o módulo N N (divide-se o texto em blocos de x bits, tal que 2x < N e o maior possível)
TOCI08 Segurança em Redes de Computadores 19
Base para o funcionamento do RSA
Teorema de Euler: aø(n)mod N = 1
Em que MDC(a,N)=1 No RSA:
N=p.q ø(N)=(p-1)(q-1) Escolhem-se e & d para serem inversos mod ø(N) Portanto e.d=1+k.ø(N) para algum k
Assim sendo (sempre em aritmética mod N )
Cd = (Me)d = M1+k.ø(N) = M1.(Mø(N))k = M1.(1)k = M1 = M
TOCI08 Segurança em Redes de Computadores 20
Exemplo RSA 1:
1. Selecionar números primos: p=17 & q=112. Calcular n = pq =17×11=1873. Calcular ø(n)=(p–1)(q-1)=16×10=1604. Selecionar e : MDC(e,160)=1; escolher e=75. Determinar d: de=1 mod 160 e d < 160; d=23 uma vez que:
23×7=161=10×16+1; d pode ser calculado através do Algoritmo Estendido de Euclides
6. Publicar a chave pública KU={7,187}7. Guardar a chave privada KR={23,17,11}8. Exemplo da fase de cifrar/decifrar do RSA: 9. Dada a mensagem M = 88 (nb. 88<187)
1. Cifrar: C = 887 mod 187 = 11
2. Decifrar: M = 1123 mod 187 = 88
TOCI08 Segurança em Redes de Computadores 21
Exemplo RSA 2:
Gerar o par de chaves KU e KR a partir dos números primos p = 7 e q = 17
Cifrar e Decifrar o texto aberto 19
TOCI08 Segurança em Redes de Computadores 22
Exemplo RSA 2:
Selecionar dois números primos: p = 7 e q = 17 Calcular n = pq = 7 x 17 = 119
Calcular (n) = (p-1)(q-1) = 96
Selecionar e tal que e é relativamente primo a (n) e menor que (n); e = 5
Determinar d tal que de = 1 mod 96 e d < 96; d = 77, pois 77 x 5 = 385 = 4 x 96 + 1
KU = {5,119} e KR = {77,119}
TOCI08 Segurança em Redes de Computadores 23
Exemplo RSA 2: (Cont.)
195 = 2476099 1192080766
KU = 5,119
TextoAberto
19
6677 = 1,27...x10140 1191,06...x1013819
KR = 77,119
Texto Aberto 19
Texto Cifrado 66
Cifrar
Decifrar
TOCI08 Segurança em Redes de Computadores 24
RSA – Demonstração:
Java applet: http://cisnet.baruch.cuny.edu/holowczak/classes/9444/rsademo/ http://www.ohdave.com/rsa/
Outro exemplo: http://www.antilles.k12.vi.us/math/cryptotut/rsa2.htm
TOCI08 Segurança em Redes de Computadores 25
Segurança do RSA
Três abordagens para atacar o RSA: Ataque por força bruta sobre a chave, que até o
presente momento é impossível devido ao número de bits da chave
Ataques baseados na teoria dos números (tentativa de fatorar o módulo N)
Ataques baseados na quantidade de tempo que demora para executar o algoritmo para decifrar
A dificuldade está em achar d dado N
TOCI08 Segurança em Redes de Computadores 26
O problema da fatoração
Três formas : fatorar N=p.q, encontrar ø(N) e depois d Determinar ø(N) diretamente Determinar d diretamente
Pensa-se que todos eles são equivalentes a fatorar: Melhorias lentas ao longo dos anos
Em Agosto de 1999 conseguiu-se quebrar o RSA com 130 dígitos decimais (512 bits) bit utilizando o algoritmo Generalized Number Field Sieve
Para resistir ao ataque são necessárias chaves com tamanho maior que 1024 bits
TOCI08 Segurança em Redes de Computadores 27
Ataques por tempo
Exploram os tempos que demoram os cálculos Exemplo:
Multiplicação de números pequenos e grandes Execução de IF's
Deduzem o tamanho do operando a partir do tempo que a operação leva
Contra-medidas Utilizar atrasos aleatórios Utilizar algoritmos de exponenciação em tempo
constante
Criptografia Assimétrica: ECC
TOCI08 Segurança em Redes de Computadores 29
Roteiro
Criptografia Moderna: ECC
Geração de chaves Uso do ECC Processo de cifrar / decifrar Funcionamento
Comparativos
TOCI08 Segurança em Redes de Computadores 30
Criptografia de Curvas Elípticas (ECC) - 1
ECC - Eliptic Curves Cryptography A maior parte dos sistemas de criptografia assimétrica
(RSA, DH) utilizam a teoria dos números ou polinômios Corresponde a um grande peso no armazenamento das
chaves e nas operações de cifrar/decifrar Alternativa: curvas elípticas Oferece a mesma segurança com menos bits de chaves
TOCI08 Segurança em Redes de Computadores 31
Criptografia de Curvas Elípticas (ECC) - 2
Sistema usa curvas elípticas como base para chaves e cifrar/decifrar
TOCI08 Segurança em Redes de Computadores 32
Criptografia de Curvas Elípticas (ECC) - 3
Em 1985, Neal Koblitz e V. S. Miller propuseram de forma independente a utilização de curvas elípticas para sistemas criptográficos de chave pública
Não inventaram um novo algoritmo criptográfico com curvas elípticas sobre corpos finitos, mas implementaram algoritmos de chave pública já existentes Ex.: algoritmo de Diffie e Hellman com curvas elípticas
Sistemas criptográficos de curvas elípticas consistem em modificações de outros sistemas que passam a trabalhar no domínio das curvas elípticas, em vez de trabalharem no domínio dos corpos finitos
TOCI08 Segurança em Redes de Computadores 33
Criptografia de Curvas Elípticas (ECC) - 4
Possuem o potencial de proverem sistemas criptográficos de chave pública mais seguros, com chaves de menor tamanho
Muitos algoritmos de chave pública, como o Diffie - Hellman, o ElGamal e o Schnorr podem ser implementados em curvas elípticas sobre corpos finitos
ECC resolvem um dos maiores problemas dos algoritmos de chave pública: o grande tamanho de suas chaves
Os algoritmos de curvas elípticas atuais, embora possuam o potencial de serem rápidos, são em geral mais demorados do que o RSA
TOCI08 Segurança em Redes de Computadores 34
Grupo da curva elíptica
Pode-se somar pontos em uma curva elíptica
Isto torna a curva em um grupo
TOCI08 Segurança em Redes de Computadores 35
Funcionamento da ECC
Fixe uma curva E e P E
Chave secreta: inteiro positivo k
Chave pública: Q = kP
TOCI08 Segurança em Redes de Computadores 36
ECC: Cifrando
Alice conhece a curva E, o ponto P E e a chave pública Q
Para cifrar M E : escolher r aleatoriamente e calcular (rP, rQ+M)
TOCI08 Segurança em Redes de Computadores 37
ECC: Decifrando
• Bob conhece a curva E, o ponto P E e a chave secreta k
• Decifra (rP, rQ+M) calculando:
(rQ+M)-k(rP)= r(kP)+M-k(rP)= M
TOCI08 Segurança em Redes de Computadores 38
Criptoanálise para quebra do ECC
Calcular k conhecendo Q = kP Problema do Logaritmo Discreto
Considerações gerais sobre algoritmos assimétricos
TOCI08 Segurança em Redes de Computadores 40
TOCI08 Segurança em Redes de Computadores 41
Ataques de força bruta em algoritmos criptográficos:
TOCI08 Segurança em Redes de Computadores 42
TOCI08 Segurança em Redes de Computadores 43
Leitura Recomendada:
Stallings, Willian. Network Security Essentials. 2a Edição. Editora Prentice-Hall. 2003. Capítulos 2 e 3
Stallings, William - Cryptography and Network Security: Principles and Practice. 3ª Edição. Prentice-Hall. 2003. Capítulos 9 e 10
Terada, Routo - Segurança de Dados Criptografia em Redes de Computador. São Paulo. Edgard Blücher. 2000
Adicionais:D&H
TOCI08 Segurança em Redes de Computadores 45
Diffie-Hellman Objetiva apenas a distribuição de chaves - ou seja, não tem
por objetivo realizar a cifragem de mensagens
Gera Randômico XA < q;Calcula YA = XA mod q
Calcula K = (YB)XA mod q
Gera Randômico XB < q;Calcula YB = XB mod q
Calcula K = (YA)XB mod q
A Bq - Número Primo, < q - raiz primitiva de q
TOCI08 Segurança em Redes de Computadores 46
Exemplo Diffie-Hellman:
q = 97 = 5
XA = 36YA = 536 mod 97 = 50
XB = 58YB = 558 mod 97 = 44
K = YB
XA = 4436 mod 97 = 75 K = YA
XB = 5058 mod 97 = 75
K = 75