Criptografia e Criptografia e Segurança em Redes Segurança em Redes
Capítulo 9 Capítulo 9
Quarta EdiçãoQuarta Edição
William StallingsWilliam Stallings
Slides de Lawrie Brown Slides de Lawrie Brown Tradução: Bruno e MarioTradução: Bruno e Mario
Capítulo 9 - Public Key Capítulo 9 - Public Key Cryptography e RSA Cryptography e RSA
Cada egípicio recebia dois nomes que eram Cada egípicio recebia dois nomes que eram conhecidos respectivamente como o nome conhecidos respectivamente como o nome verdadeiro e o nome pequeno: e enquanto o verdadeiro e o nome pequeno: e enquanto o nome bom ou pequeno era público, o nome nome bom ou pequeno era público, o nome verdadeiro ou grande era cuidadosamente verdadeiro ou grande era cuidadosamente ocultado.ocultado.
— — O Ramo de OuroO Ramo de Ouro, , Sir James George FrazerSir James George Frazer
Criptografia de Chave-PrivadaCriptografia de Chave-Privada
Tradicional Tradicional Privado/Secreto/Chave ÚnicaPrivado/Secreto/Chave ÚnicaCriptografia utiliza apenas uma chaveCriptografia utiliza apenas uma chave Partilhada por ambos, emissor e receptorPartilhada por ambos, emissor e receptor Se esta chave é divulgada, comunicações Se esta chave é divulgada, comunicações
são comprometidassão comprometidas Também é Simétrica, partes são equivalentesTambém é Simétrica, partes são equivalentes Daí não proteger o emissor de um receptor Daí não proteger o emissor de um receptor
forjando uma mensagem & reinvidicação forjando uma mensagem & reinvidicação enviada pelo emissorenviada pelo emissor
Criptografia de Chave-PúblicaCriptografia de Chave-Pública Provavelmente o mais significativo avanço Provavelmente o mais significativo avanço
em 3000 anos de história da criptografiaem 3000 anos de história da criptografia Utiliza Utiliza duas duas chaves - uma pública & uma chaves - uma pública & uma
chave privada chave privada Assimétricas Assimétricas porque as partes porque as partes nãonão são são
iguaisiguais Usa inteligente aplicação de acordo com o Usa inteligente aplicação de acordo com o
conceito da teoria dos números conceito da teoria dos números complementa melhor do que repor a complementa melhor do que repor a
criptografia de chave privada criptografia de chave privada
Por que Criptografia de Chave-Pública?Por que Criptografia de Chave-Pública?
Desenvolvidas para abordar duas questões Desenvolvidas para abordar duas questões fundamentais:fundamentais: Distribuição de chaves – Distribuição de chaves – como ter como ter
comunicações seguras sem ter de confiar uma comunicações seguras sem ter de confiar uma KDC com sua chaveKDC com sua chave
Assinatura digital – Assinatura digital – como verificarcomo verificar se uma se uma mensagem chega intacta ao alegado mensagem chega intacta ao alegado remetenteremetente
Invenção pública de Whitfield Diffie & Martin Invenção pública de Whitfield Diffie & Martin Hellman em 1976Hellman em 1976 known earlier in classified communityknown earlier in classified community conhecida anteriormente classificados na conhecida anteriormente classificados na
comunidade comunidade
Criptografia de Chave-PúblicaCriptografia de Chave-Pública
chave-pública/duas-chaves/assimétricaschave-pública/duas-chaves/assimétricas criptografia envolve o uso de duas chaves: criptografia envolve o uso de duas chaves: Uma chave-pública, que pode ser conhecido por Uma chave-pública, que pode ser conhecido por
qualquer um, e pode ser usada para qualquer um, e pode ser usada para criptografar criptografar mensagensmensagens e verificar assinaturas e verificar assinaturas
Uma chave-privada, conhecida apenas pelo Uma chave-privada, conhecida apenas pelo destinatário, que serve para descriptografar destinatário, que serve para descriptografar mensagens, e assinar (criar) assinaturas mensagens, e assinar (criar) assinaturas
É assimétrica porque:É assimétrica porque: quem criptografar mensagens ou verificar assinaturas quem criptografar mensagens ou verificar assinaturas
não podenão pode decifrar mensagens ou criar assinaturas decifrar mensagens ou criar assinaturas
Criptografia de Chave-PúblicaCriptografia de Chave-Pública
Características da Chave-PúblicaCaracterísticas da Chave-Pública
Algoritmos de Chave-Pública contam com duas Algoritmos de Chave-Pública contam com duas chaves, quando: chaves, quando: é computacionalmente impossível de encontrar a é computacionalmente impossível de encontrar a
chave de decriptografia sabendo apenas o algoritmo chave de decriptografia sabendo apenas o algoritmo & chave de encriptação & chave de encriptação
é computacionalmente fácil (en/des)criptografar as é computacionalmente fácil (en/des)criptografar as mensagens quando os relevantes chaves de mensagens quando os relevantes chaves de (en/decriptação) são conhecidas(en/decriptação) são conhecidas
uma das duas chaves relacionadas podem ser uma das duas chaves relacionadas podem ser utilizados para a criptografia, com as outras utilizadas utilizados para a criptografia, com as outras utilizadas para a descodificação (para alguns algoritmos)para a descodificação (para alguns algoritmos)
Sistemas de Criptografia Sistemas de Criptografia Chave-PúblicaChave-Pública
Aplicações da chave-PúblicaAplicações da chave-Pública
Podemos classificar o uso em 3 categorias: Podemos classificar o uso em 3 categorias:
encriptação / decriptação (fornecer sigilo)encriptação / decriptação (fornecer sigilo) assinaturas digitais (fornecer autenticação) assinaturas digitais (fornecer autenticação) troca de chaves (as chaves de sessão) troca de chaves (as chaves de sessão)
Alguns Algoritimos são adequados para Alguns Algoritimos são adequados para todos os usos, outros são especificos para todos os usos, outros são especificos para umum
Segurança dos Sistemas de chave pública Segurança dos Sistemas de chave pública
Como o esquema de chave privada, exaustiva pesquisa Como o esquema de chave privada, exaustiva pesquisa pequisa de ataque por foça bruta é sempre teoricamente pequisa de ataque por foça bruta é sempre teoricamente possível possível
mas as chaves utilizadas são muito grandes (> 512bits) mas as chaves utilizadas são muito grandes (> 512bits) segurança conta com uma dimensão suficientemente segurança conta com uma dimensão suficientemente
grande diferença de dificuldade entre fáceis (en/decripta) grande diferença de dificuldade entre fáceis (en/decripta) e dificeis (criptoanálise) problemas e dificeis (criptoanálise) problemas
Geralmente o mais difícil do problema é conhecido, mas Geralmente o mais difícil do problema é conhecido, mas é feito difícil o bastante para tornar a solução é feito difícil o bastante para tornar a solução impraticávelimpraticável
exige a utilização de muitos números grandesexige a utilização de muitos números grandes Daí a lentidão, se comparado com sistemas de chave Daí a lentidão, se comparado com sistemas de chave
privada privada
RSARSA Por Rivest, Shamir & Adleman of MIT in 1977 Por Rivest, Shamir & Adleman of MIT in 1977 mais conhecido e amplamente usado sistema de mais conhecido e amplamente usado sistema de
chaves públicas chaves públicas baseado em uma exponenciação um corpo baseado em uma exponenciação um corpo
(Galois) finito, sobre inteiros modulo uma (Galois) finito, sobre inteiros modulo uma privilegiadaprivilegiada
based on exponentiation in a finite (Galois) field based on exponentiation in a finite (Galois) field over integers modulo a prime over integers modulo a prime nb. exponentiation takes O((log n)nb. exponentiation takes O((log n)33) operations (easy) ) operations (easy)
uses large integers (eg. 1024 bits)uses large integers (eg. 1024 bits) security due to cost of factoring large numbers security due to cost of factoring large numbers
nb. factorization takes O(e nb. factorization takes O(e log n log log nlog n log log n) operations (hard) ) operations (hard)
RSA Key SetupRSA Key Setup cada usuário gera uma chave pública / privada par por:cada usuário gera uma chave pública / privada par por: selecionando dois grandes numeros primos selecionando dois grandes numeros primos
aleatoriamente - p, q aleatoriamente - p, q computando seu sistema de modulus computando seu sistema de modulus n = p.q n = p.q
nota ø (n) = (p-1) (q-1) nota ø (n) = (p-1) (q-1) Selecionando aleatoriamente uma chave decriptação eSelecionando aleatoriamente uma chave decriptação e Onde 1 <e <ø (n), gcd (E, O (n)) = 1 Onde 1 <e <ø (n), gcd (E, O (n)) = 1 resolver a seguinte equação para encontrar a chave de resolver a seguinte equação para encontrar a chave de
decriptação decriptação dd Onde 1<e<0 (n), mdc (e,0(n))=1Onde 1<e<0 (n), mdc (e,0(n))=1
Fornecendo sua chave publica de encriptação:Fornecendo sua chave publica de encriptação:PU={e,n} PU={e,n} Mantendo secreta a chave de decripatção: PR={d,n} Mantendo secreta a chave de decripatção: PR={d,n}
Uso do RSAUso do RSA para cifrar uma mensagem M do remetente: para cifrar uma mensagem M do remetente:
obtém a chave pública do destinatário obtém a chave pública do destinatário
PU = {e, n} PU = {e, n} calcula: calcula: C = MC = Mee mod n mod n, onde , onde 00≤≤MM<<nn
para descriptografar o texto encriptado C, o para descriptografar o texto encriptado C, o proprietário:proprietário:
Utiliza sua chave privada Utiliza sua chave privada PR={d,n}PR={d,n} calcula: calcula: M = CM = Cdd mod n mod n
Note que a mensagem M precisa ser Note que a mensagem M precisa ser menor do que o Modulo “n” (bloco se menor do que o Modulo “n” (bloco se necessario) necessario)
Por que trabalhar com RSA Por que trabalhar com RSA
Devido ao Teorema de Euler:Devido ao Teorema de Euler: aaø(n)ø(n)mod n = 1 ondemod n = 1 onde gcd(a,n)=1gcd(a,n)=1
no RSA temos:no RSA temos: n=p.qn=p.q ø(n)=(p-1)(q-1)ø(n)=(p-1)(q-1) Cuidadosamente escolheu Cuidadosamente escolheu ee & & dd para ser inversos ao para ser inversos ao mod ø(n)mod ø(n)
portanto portanto e.d=1+k.ø(n)e.d=1+k.ø(n) para qualquer para qualquer kk Daí:Daí:
CCdd = M = Me.d e.d = M= M1+k.ø(n)1+k.ø(n) = M = M11.(M.(Mø(n)ø(n)))kk = M= M11.(1).(1)kk = M = M11 = M mod n = M mod n
Exemplo do RSA Exemplo do RSA Configuração de ChaveConfiguração de Chave
1.1. Selecionar primos: Selecionar primos: pp=17 & =17 & qq=11=112.2. CalcularCalcular n n = = pq pq =17=17 x x 11=18711=1873.3. CalcularCalcular ø( ø(nn)=()=(p–p–1)(1)(q-q-1)=161)=16 x x 10=16010=1604.4. Selecionar Selecionar ee:: gcd(e,160)=1; gcd(e,160)=1; escolher escolher ee=7=75.5. Determinar Determinar dd:: de=de=1 mod 1601 mod 160 e e d d < 160< 160
Valor é Valor é d=23d=23 desdeq desdeq 2323xx7=161= 107=161= 10xx160+1160+16.6. Publicar a chave pública Publicar a chave pública PU={7,187}PU={7,187}7.7. Manter secreta a chave privada Manter secreta a chave privada PR={23,PR={23,187}187}
Exemplo: Exemplo: RSA - En/DecriptaçãoRSA - En/Decriptação
amostra RSA encriptação/decriptação é: amostra RSA encriptação/decriptação é: Dada a mensagem Dada a mensagem M = 88M = 88 ( ( 88<18788<187)) EncriptaçãoEncriptaçãoC = 88C = 8877 mod 187 = 11 mod 187 = 11 Decriptação:Decriptação:M = 11M = 112323 mod 187 = 88 mod 187 = 88
ExponenciaçãoExponenciação
can use the Square and Multiply Algorithmcan use the Square and Multiply Algorithm a fast, efficient algorithm for exponentiation a fast, efficient algorithm for exponentiation concept is based on repeatedly squaring base concept is based on repeatedly squaring base e multiplicando os que nos são necessárias para e multiplicando os que nos são necessárias para
calcular o resultado calcular o resultado olhar para a representação binária do exponenteolhar para a representação binária do exponente Só pega O(logSó pega O(log22 n) multiplos para o numero n n) multiplos para o numero n
eg. eg. 7755 = 7 = 744.7.711 = 3.7 = 10 mod 11 = 3.7 = 10 mod 11 eg. eg. 33129129 = 3 = 3128128.3.311 = 5.3 = 4 mod 11 = 5.3 = 4 mod 11
ExponenciaçãoExponenciação
c = 0; f = 1c = 0; f = 1for i = k downto 0 for i = k downto 0 do c = 2 x cdo c = 2 x c f = (f x f) mod nf = (f x f) mod n
if bif bii == 1 == 1 then then c = c + 1c = c + 1 f = (f x a) mod n f = (f x a) mod n return freturn f
Encriptação EficienteEncriptação Eficiente
usa criptografia exponenciação e ao poder usa criptografia exponenciação e ao poder pequenas e, portanto, se, esta será mais rápida pequenas e, portanto, se, esta será mais rápida frequentemente escolher e = 65537 (216-1) frequentemente escolher e = 65537 (216-1) também ver escolhas de 3 ou E = E = 17 também ver escolhas de 3 ou E = E = 17 mas se e muito pequeno (por exemplo, e = 3) pode atacar mas se e muito pequeno (por exemplo, e = 3) pode atacar utilizando chinês restante teorema & 3 mensagens com utilizando chinês restante teorema & 3 mensagens com diferentes modulii diferentes modulii fixo e se deve garantir gcd (E, O (n)) = 1 fixo e se deve garantir gcd (E, O (n)) = 1 ou seja, rejeitar qualquer p ou q não relativamente privilegiada ou seja, rejeitar qualquer p ou q não relativamente privilegiada para e para e
Efficient DecryptionEfficient Decryption
decryption uses exponentiation to power ddecryption uses exponentiation to power d this is likely large, insecure if notthis is likely large, insecure if not
can use the Chinese Remainder Theorem can use the Chinese Remainder Theorem (CRT) to compute mod p & q separately. (CRT) to compute mod p & q separately. then combine to get desired answerthen combine to get desired answer approx 4 times faster than doing directlyapprox 4 times faster than doing directly
only owner of private key who knows only owner of private key who knows values of p & q can use this technique values of p & q can use this technique
RSA: Geração de ChavesRSA: Geração de Chaves
usuários da RSA precisam:usuários da RSA precisam: determinar 2 numeros primos aleatoriamente determinar 2 numeros primos aleatoriamente
- - p, qp, q Selecionar entre Selecionar entre ee ou ou dd e calcular os outros e calcular os outros
primos primos p,qp,q não devem ser facilmente não devem ser facilmente derivados do moduloderivados do modulo n=p.qn=p.q Meios devem ser suficientemente grandesMeios devem ser suficientemente grandes Tipicamente adivinhar e utilização probabilística testeTipicamente adivinhar e utilização probabilística teste
expoentes expoentes ee, , dd são inversos,então são inversos,então usamos o algoritimo inverso para calcula usamos o algoritimo inverso para calcula um ou outroum ou outro
RSA: SegurançaRSA: Segurança Possíveis abordagens para atacar o RSA são:Possíveis abordagens para atacar o RSA são:
Pesquisa de chave por força bruta (pesquisa Pesquisa de chave por força bruta (pesquisa inviável dada dimensão dos números) inviável dada dimensão dos números)
ataques matemáticos (com base na dificuldade de ataques matemáticos (com base na dificuldade de computação ø (n), pela fatoração do modulo n)computação ø (n), pela fatoração do modulo n)
calendário ataques (em funcionamento de calendário ataques (em funcionamento de descodificação) descodificação)
timing attacks (on running of decryption)timing attacks (on running of decryption) chosen ciphertext attacks (given properties of chosen ciphertext attacks (given properties of
RSA)RSA)
Factoring ProblemFactoring Problem
mathematical approach takes 3 forms:mathematical approach takes 3 forms: factor factor n=p.qn=p.q, hence compute , hence compute ø(n)ø(n) and then d and then d determine determine ø(n)ø(n) directly and directly and compute compute dd find d directlyfind d directly
currently believe all equivalent to factoringcurrently believe all equivalent to factoring have seen slow improvements over the years have seen slow improvements over the years
• as of May-05 best is 200 decimal digits (663) bit with LS as of May-05 best is 200 decimal digits (663) bit with LS biggest improvement comes from improved algorithmbiggest improvement comes from improved algorithm
• cf QS to GHFS to LScf QS to GHFS to LS currently assume 1024-2048 bit RSA is securecurrently assume 1024-2048 bit RSA is secure
• ensure p, q of similar size and matching other constraintsensure p, q of similar size and matching other constraints
Timing AttacksTiming Attacks
developed by Paul Kocher in mid-1990’sdeveloped by Paul Kocher in mid-1990’s exploit timing variations in operationsexploit timing variations in operations
eg. multiplying by small vs large number eg. multiplying by small vs large number or IF's varying which instructions executedor IF's varying which instructions executed
infer operand size based on time taken infer operand size based on time taken RSA exploits time taken in exponentiationRSA exploits time taken in exponentiation countermeasurescountermeasures
use constant exponentiation timeuse constant exponentiation time add random delaysadd random delays blind values used in calculationsblind values used in calculations
Chosen Ciphertext AttacksChosen Ciphertext Attacks
• RSA is vulnerable to a Chosen Ciphertext RSA is vulnerable to a Chosen Ciphertext Attack (CCA)Attack (CCA)
• attackers chooses ciphertexts & gets decrypted attackers chooses ciphertexts & gets decrypted plaintext backplaintext back
• choose ciphertext to exploit properties of RSA choose ciphertext to exploit properties of RSA to provide info to help cryptanalysisto provide info to help cryptanalysis
• can counter with random pad of plaintextcan counter with random pad of plaintext• or use Optimal Asymmetric Encryption or use Optimal Asymmetric Encryption
Padding (OASP)Padding (OASP)
ResumoResumo
Foi apresentado:Foi apresentado: Principios da criptografia de chaves públiasPrincipios da criptografia de chaves públias Algoritimo RSA , implementação e segurançaAlgoritimo RSA , implementação e segurança