Codificação de Informação 2010/2011
Sumário:
• Criptografia de chave pública
Tipos de chave: cifras simétricas
• Chave comum à operação de cifrar e de decifrar
• Chave secreta
P mensagem em claro, C mensagem cifrada K chave usada para cifrar e decifar
f função usada para cifrar f
‐1função usada para decifrar
C = f ( K, P)
P = f
‐1( K,C)
Tipos de chave: Cifras assimétricas
Dept. InformáGca / FCT 16 Novembro 2010 3
• Kp Chave pública para cifrar
• Ks Chave privada para decifrar
• Estas chaves estão ligadas a uma determinada enGdade com a qual se quer comunicar
Kp diferente de Ks
f função para cifrar f‐1 função para decifrar
Estas funções exigem normalmente tempos de execução muito mais longos do que as funções usadas nas chaves simétricas
C = f (K
p, P)
P = f
‐1(K
s, C)
Criptografia de chave secreta
• A criptografia de chave secreta/única usa apenas uma chave
• ParGlhada pelo emissor e pelo receptor
• Se a chave é descoberta as comunicações estão compromeGdas
• É simétrica, os intervenientes são pares
• Assim, não protege o emissor no caso em que um
intruso forja uma mensagem e declara que esta
provém do emissor
Desvantagens chave simétrica
• Problema de distribuição de chaves
• Chave deve ser alterada com uma certa frequência
• Algoritmos de assinatura digital que uGlizam chaves simétricas necessitam de chaves grandes o que complica ainda mais o problema da distribuição de chaves.
Dept. InformáGca / FCT 16 Novembro 2010 5
Criptografia de chave pública
• Provavelmente o avanço mais significaGvo em 3000 anos de criptografia
• NSA (US): 1960’s (?)
• CESG (UK): 1970
• James Ellis, relatório classificado
• CESG não viu as potencialidades
• Diffie & Hellman: 1976
• RSA: 1978 (1ª realização práGca)
• Usa duas chaves – uma pública e outra privada
• Assimétrica porque os parGcipantes não têm o mesmo papel
• Não subsGtui mas complementa a criptografia de chave secreta
Dept. InformáGca / FCT 16 Novembro 2010 7
Criptografia de chave pública
• A criptografia de chave pública/duas‐chaves/
assimétrica envolve o uso de duas chaves:
• a chave‐pública, que é conhecida de todos, e pode ser usada para cifrar mensagens, e verificar assinaturas
• a chave‐privada, conhecida só pelo receptor, usada para decifrar mensagens, e assinar (criar) assinaturas
Criptografia de chave pública
• É assimétrica porque:
Aqueles que podem cifrar mensagens e
verificar assinaturas não podem decifrar
mensagens e criar assinaturas
Dept. InformáGca / FCT 16 Novembro 2010 9
Criptografia de chave pública
Porquê a criptografia de chave pública?
• Desenvolvida para resolver duas questões:
• Distribuição de chaves – como ter comunicações seguras sem ter que trocar a chave na rede
• Assinaturas digitais – como verificar que uma mensagem chegou intacta do emissor, e que este é quem diz ser
CaracterisGcas da criptografia de chave pública
Dept. InformáGca / FCT 16 Novembro 2010 11
• Depende de duas chaves que devem ter as seguintes caracterísGcas:
• Computacionalmente impossível conhecer a chave para decifrar sabendo apenas o algoritmo e a chave usada para cifrar
• Computacionalmente fácil cifrar/decifrar mensagens quando a chave correcta é conhecida
• O papel das duas chaves pode ser trocado
Segurança de sistemas com chave pública
• Ataques de força bruta por procura exaus@va são teoricamente possíveis
• Mas as chaves são demasiado grandes (>512bits)
• Segurança baseia‐se numa suficientemente grande diferença entre a facilidade em cifrar/decifrar e a dificuldade em fazer a cripto‐análise
• Obter a chave privada a parGr da chave pública é possível
teoricamente, mas demasiadamente pesado computacionalmente para ser possível na práGca
• Os métodos conhecidos para cifrar e decifrar mensagens são computacionalmente bastantes pesado. Assim sendo, são lentos quando comparados com os métodos de chave secreta
Cifra assimétrica
• Comunicação Alice para Bob
• Bob calcula o par (KP
B, KS
B)
– KSB é manGdo secreto, KPB é publicado (por exemplo na página web do Bob)
• Alice
– Obtém a chave pública KPB de Bob e,
– cifra a mensagem P com a chave KPB do Bob C= cifra_assimétrica_E(KPB,P)
• Bob
– Usa a chave privada KSB do Bob para decifrar C:
P = cifra_assimétrica_D(KSB,P)
Dept. InformáGca / FCT 16 Novembro 2010 13
Aplicação à assinatura digital
• Procedimento:
• Alice
• Gera um resumo (digest ou hash) h=h(m) da mensagem
• Calcula uma assinatura s para m usando a sua chave privada KPA: s = RSA_D(KSA,h)
• Envia m e s a Bob
• Bob
• Calcula h=h(m) a parGr de m
• Decifra h’=RSA_E(KPA,h) usando a chave pública de Alice
• Verifica se h e h’ são iguais
• GaranGda a autenGcidade do emissor e a integridade da mensagem
Escolha do algoritmo
Dept. InformáGca / FCT 16 Novembro 2010 15
• Tempo de execução de um algoritmo
• Depende da dimensão do problema
• Exemplo: Ordenar 10 números leva menos tempo que ordenar 10000 números
• Para alguns problemas sabe‐se o número de passos que qualquer algoritmo leva a resolver um problema com n elementos
• Ordenar n números leva n log n passos
Escolha do algoritmo
• É necessário um problema que necessite de pelo menos um número exponencial de passos
• São conhecidos problemas em que as soluções conhecidas levam tempo (sub)exponencial
• Factorizar primos
• Calcular o logaritmo discreto
• ...
Troca de chaves de Diffie Helman
Dept. InformáGca / FCT 16 Novembro 2010 17
• Inventado por Diffie & Helman em 1976
• Primeira publicação sobre criptografia de chave pública
• Método permite que dois uGlizadores concordem numa chave simétrica de forma segura. Essa chave é depois usada para cifrar/decifrar as mensagens
• Só para troca de chaves
• Não uGlizado para cifrar/assinar
• Chaves de 1024 bits
• Baseado na dificuldade de calcular o logaritmo discreto
Logaritmos discretos
• Em aritméGca módulo p:
• a raiz primi0va de um número primo p é o valor a tal que as suas potências geram todos os inteiros de 1 a p‐1
• Se a é raiz primiGva de p, os números a mod p, a2 mod p, …, a p‐1 mod p são disGntos e correspondem a uma
permutação dos números de 1 a p‐1
• Para qualquer inteiro b e uma raiz primiGva a de um número primo p, pode‐se encontrar um i tal que
• b = ai mod p (em que 0 <= i <= p – 1)
• b é o logaritmo discreto módulo p para a base a
Logaritmo discreto
Dept. InformáGca / FCT 16 Novembro 2010 19
• Computação módulo n
• Exemplo módulo 13
1 7 10 5
9 11 12 6
3 8 4 2
12 11 10 9
8 7 6 5 4 3 2 i 1
2 é raiz primiGva de 13 (módulo 13)
b = 2
imod 13
b = a
imod 13
b
Método de Diffie Hellman
• Todos os uGlizadores concordam nos seguintes valores:
• Um número primo q muito grande
• α é uma raiz primiGva de q (em módulo q)
• Cada uGlizador (eg. A) gera a sua chave
• Escolhe uma chave secreta (número): x
A< q
• Calcula a sua chave pública: y
A= α
xAmod q
• Cada uGlizador publica a sua chave pública y
AChaves de Diffie Hellman
Dept. InformáGca / FCT 16 Novembro 2010 21
Elementos globais q, α
Geração de chave Seleccionar XA<q Calcular YA=αXA mod q
K = (YB)XA mod q
Geração de chave Seleccionar XB<q Calcular YB=αXB mod q
K = (YA)XB mod q
UGl. A UGl. B
YA YB
Chaves de Diffie Hellman
Troca de chaves de Diffie Hellman
Dept. InformáGca / FCT 16 Novembro 2010 23
• A chave parGlhada para uma sessão dos uGlizadores A & B é KAB:
• K
AB= α
xA.xBmod q
• = y
AxBmod q (que B pode calcular)
• = y
BxAmod q (que A pode calcular)
• KAB é usada como chave de sessão numa comunicação entre Alice e Bob
• KAB pode ser usada noutras sessões entre Alice e Bob
• Um intruso necessita um dos x; para isso tem de calcular um logaritmo discreto, o que é computacionalmente muito di|cil
Porque é que D‐H funciona?
K = (Yb)
xamod q =
= (a
xbmod q)
xamod q =
= a
xb.xamod q =
= (a
xamod q)
xbmod q=
= (Ya)
xbmod q
Exemplo de Diffie Helman
Dept. InformáGca / FCT 16 Novembro 2010 25
• Os uGlizadores Alice e Bob querem trocar chaves:
• Concordam no primo q=353 e α=3
• Seleccionam ao acaso as chaves secretas:
• A escolhe xA=97, B escolhe xB=233
• Calculam as chaves públicas:
• yA=397 mod 353 = 40 (Alice)
• yB=3233 mod 353 = 248 (Bob)
• Calculam a chave de sessão :
• KAB= yBxA mod 353 = 24897 = 160 (Alice)
• KAB= yAxB mod 353 = 40233 = 160 (Bob)
Segurança de Diffie Hellman
• X
Ae X
Bsão privadas; o intruso conhece q, α, Y
A, Y
B• Para furar a cifra é preciso calcular o logaritmo discreto
X
B= logaritmo discreto
α,q(Y
B)
• É fácil calcular exponenciais módulo p, mas é muito
di|cil calcular logaritmos discretos
RSA
Dept. InformáGca / FCT 16 Novembro 2010 27
• Rivest, Shamir & Adleman do MIT em 1977
• Esquema de chave pública mais bem conhecido e mais uGlizado
RSA
• Baseado em exponenciação de inteiros usando aritméGca modular
Exponenciação leva O((log n)
3) operações (fácil cifrar/decifrar)
• Usa inteiros muito grandes (eg. 1024 bits)
• Segurança devida à dificuldade em factorizar números primos muito grandes
Factorização leva O(e
log n log log n) operações (muito
di|cil obter a chave privada a parGr da chave
pública)
Geração de chaves RSA
Dept. InformáGca / FCT 16 Novembro 2010 29
• Cada uGlizador calcula um par chave pública/chave privada
• Selecciona 2 números primos aleatoriamente ‐ p, q
• Calcula N = p.q
ø(N)=(p-1)(q-1)
• Selecciona a chave de cifra e que deve cumprir:
1<e<ø(N), gcd(e,ø(N))=1
• Resolve a equação seguinte para determinar a chave d (e.d)mod ø(N)=1 e 0≤d≤N
• Publica a sua chave pública: KP={e,N}
• Mantém secreta a sua chave privada: KS={d,N}
Uso do RSA
• Para cifrar a mensagem M, o emissor:
Obtém a chave pública do receptor K
P={e,N}
Calcula: C=M
emod N, em que 0≤M<N
• Para decifrar o texto cifrado C o desGnatário:
usa a sua chave privada K
S={d,N}
calcula: M=C
dmod N
• Note‐se que M tem de ser menor que o módulo N
(divide‐se o texto em blocos de x bits, tal que 2
x<N e
o maior possível)
Porque é que o RSA funciona?
Dept. InformáGca / FCT 16 Novembro 2010 31
• Teorema de Euler: aø(n)mod N = 1
• em que gcd(a,N)=1
• No RSA temos:
• 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éGca mod N )
Cd mod N = (Me)d mod N = M1+k.ø(N) mod N = M1.(Mø(N))k mod N = M1.(1)k mod N =
M1 mod N = M
Exemplo RSA
• Seleccionar primos: p=17 & q=11
• Calcular n = pq =17×11=187
• Calcular ø(n)=(p–1)(q-1)=16×10=160
• Seleccionar e : gcd(e,160)=1; escolher e=7
• Determinar d: de=1 mod 160 e d < 160; d=23 uma vez que 23×7=161
• Publicar a chave pública KU={7,187}
• Guardar a chave privada KR={23,187}
Dept. InformáGca / FCT 16 Novembro 2010 33
Exemplo RSA
• Exemplo da fase de cifrar/decifrar do RSA:
• Dada a mensagem M = 88
(note‐se que 88<187)• Cifrar:
C = 88
7mod 187 = 11
• Decifrar:
M = 11
23mod 187 = 88
Outro exemplo não realista
Dept. InformáGca / FCT 16 Novembro 2010 35
Exemplo mais realista (1)
p e q têm 512 bits a que corresponde cerca de 160 dígitos decimais;
n e Φ têm 309 dígitos
Exemplo mais realista (2)
p e q têm 512 bits a que corresponde cerca de 160 dígitos decimais; n e Φ têm 309 dígitos
THIS IS A TEST passa a
C = P
emod n
THIS IS A TEST
P = C
dmod n
Aspectos computacionais do RSA
Dept. InformáGca / FCT 16 Novembro 2010 37
• Geração da chave
• Exponenciação
• P
ee C
dpodem produzir resultados intermédios gigantescos
• Propriedades da aritméGca modular
[(a mod n) * (b mod n)] mod n = (a * b) mod n
• Podem‐se produzir resultados intermédios
Geração da chave RSA
• Os uGlizadores do RSA têm de:
• determinar dois primos ao acaso p, q
• Seleccionar e ou d e calcular o outro
• Os primos p,q não podem ser determinados facilmente a parGr de N=p.q
• Têm de ser suficientemente grandes
• Não há métodos directos para determinar primos muito grandes; Gpicamente usam‐se números aleatórios e testes de “primalidade”. Esses testes não garantem que o
número seja primo
Geração da chave RSA – algoritmo Miller‐Rabin
Dept. InformáGca / FCT 16 Novembro 2010 39
1. Obter um número ímpar n ao acaso
2. Obter outro número inteiro ao acaso (1< a < n)
3. Aplicar a a e n um teste; se o teste falha, rejeitar o número e ir para 1
4. Se n passou o teste 3 para um nº suficientemente grande de tentaGvas aceitar n
5. A teoria dos números diz que os números primos perto de X estão espaçados de ln X; logo para determinar um primo serão necessárias ln(N)/2 tentaGvas
Algoritmo para o teste de primalidade probabilisGca de Miller‐Rabin
Miller-Rabin(n,t)
INPUT: An odd integer n > 1 and a positive security parameter t
OUTPUT: the answer "COMPOSITE" or "PRIME"
Write n - 1 = 2sr such that r is odd Repeat from 1 to t
Choose a random integer a which satisfies 1 < a < n - 1 Compute y = ar mod n
IF y <> 1 and y <> n-1 then DO j := 1
WHILE j < s and y <> n - 1 then DO y := y2 mod n
IF y = 1 THEN return("COMPOSITE") j := j + 1
IF y <> n - 1 THEN return("COMPOSITE") return("PRIME")
Segurança do RSA
Dept. InformáGca / FCT 16 Novembro 2010 41
• Três abordagens para atacar o RSA:
• Força bruta sobre a chave (impossível dado o número de bits da chave)
• Baseados na teoria dos números (tentaGva de factorizar o módulo N)
• Por medida do tempo que demora a correr o algoritmo para decifrar
Problema da factorização
• Três formas :
• factorizar N=p.q, encontrar ø(N) e depois d
• determinar ø(N)ou d directamente
• Pensa‐se que todos eles são equivalentes a factorizar:
• Melhorias lentas ao longo dos anos
• Em Agosto de 1999 conseguiu‐se furar o RSA com 130 dígitos decimais (512 bits) usando o algoritmo
“Generalized Number Field Sieve”
• Hoje em dia a segurança é garanGda usando chaves entre os 1024 e 2048 bits