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 1 função usada para decifrar C = f ( K, P) P = f 1 ( K,C) Dept. InformáGca / FCT 16 Novembro 2010 2 1
Tipos de chave: Cifras assimétricas K p Chave pública para cifrar K s Chave privada para decifrar Estas chaves estão ligadas a uma determinada engdade com a qual se quer comunicar K p diferente de K s 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) Dept. InformáGca / FCT 16 Novembro 2010 3 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 Dept. InformáGca / FCT 16 Novembro 2010 4 2
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 6 3
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 Dept. InformáGca / FCT 16 Novembro 2010 7 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 8 4
Criptografia de chave pública Dept. InformáGca / FCT 16 Novembro 2010 9 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 Dept. InformáGca / FCT 16 Novembro 2010 10 5
CaracterisGcas da criptografia de chave pública 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 Dept. InformáGca / FCT 16 Novembro 2010 11 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 Dept. InformáGca / FCT 16 Novembro 2010 12 6
Cifra assimétrica Comunicação Alice para Bob Bob calcula o par (KP B, KS B ) KS B é mangdo secreto, KP B é publicado (por exemplo na página web do Bob) Alice Obtém a chave pública KP B de Bob e, cifra a mensagem P com a chave KP B do Bob C= cifra_assimétrica_e(kp B,P) Bob Usa a chave privada KS B do Bob para decifrar C: P = cifra_assimétrica_d(ks B,P) Dept. InformáGca / FCT 16 Novembro 2010 13 Aplicação à assinatura digital Procedimento: Alice Bob Gera um resumo (digest ou hash) h=h(m) da mensagem Calcula uma assinatura s para m usando a sua chave privada KP A : s = RSA_D(KS A,h) Envia m e s a Bob Calcula h=h(m) a pargr de m Decifra h =RSA_E(KP A,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 Dept. InformáGca / FCT 16 Novembro 2010 14 7
Escolha do algoritmo 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 Dept. InformáGca / FCT 16 Novembro 2010 15 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... Dept. InformáGca / FCT 16 Novembro 2010 16 8
Troca de chaves de Diffie Helman 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 Dept. InformáGca / FCT 16 Novembro 2010 17 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, a 2 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 = a i mod p (em que 0 <= i <= p 1) b é o logaritmo discreto módulo p para a base a Dept. InformáGca / FCT 16 Novembro 2010 18 9
Logaritmo discreto Computação módulo n Exemplo módulo 13 b = a i mod 13 i 1 2 3 4 5 6 7 8 9 10 11 12 b 2 4 8 3 6 12 11 9 5 10 7 1 b = 2 i mod 13 2 é raiz primigva de 13 (módulo 13) Dept. InformáGca / FCT 16 Novembro 2010 19 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 = α x A mod q Cada uglizador publica a sua chave pública y A Dept. InformáGca / FCT 16 Novembro 2010 20 10
Chaves de Diffie Hellman Elementos globais q, α UGl. A Geração de chave Seleccionar X A <q Calcular Y A =α XA mod q Y A Y B UGl. B Geração de chave Seleccionar X B <q Calcular Y B =α XB mod q K = (Y B ) XA mod q K = (Y A ) XB mod q Dept. InformáGca / FCT 16 Novembro 2010 21 Chaves de Diffie Hellman Dept. InformáGca / FCT 16 Novembro 2010 22 11
Troca de chaves de Diffie Hellman A chave parglhada para uma sessão dos uglizadores A & B é K AB : K AB = α x A. xb = y A x B = y B x A mod q mod q (que B pode calcular) mod q (que A pode calcular) K AB é usada como chave de sessão numa comunicação entre Alice e Bob K AB 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 Dept. InformáGca / FCT 16 Novembro 2010 23 Porque é que D H funciona? K = (Yb) xa mod q = = (a xb mod q) xa mod q = = a xb.xa mod q = = (a xa mod q) xb mod q= = (Ya) xb mod q Dept. InformáGca / FCT 16 Novembro 2010 24 12
Exemplo de Diffie Helman Os uglizadores Alice e Bob querem trocar chaves: Concordam no primo q=353 e α=3 Seleccionam ao acaso as chaves secretas: A escolhe x A =97, B escolhe x B =233 Calculam as chaves públicas: y A =3 97 mod 353 = 40 (Alice) y B =3 233 mod 353 = 248 (Bob) Calculam a chave de sessão : K AB = y B x A mod 353 = 248 97 = 160 (Alice) K AB = y A x B mod 353 = 40 233 = 160 (Bob) Dept. InformáGca / FCT 16 Novembro 2010 25 Segurança de Diffie Hellman X A e X B sã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 Dept. InformáGca / FCT 16 Novembro 2010 26 13
RSA Rivest, Shamir & Adleman do MIT em 1977 Esquema de chave pública mais bem conhecido e mais uglizado Dept. InformáGca / FCT 16 Novembro 2010 27 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) Dept. InformáGca / FCT 16 Novembro 2010 28 14
Geração de chaves RSA 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: K P ={e,n} Mantém secreta a sua chave privada: K S ={d,n} Dept. InformáGca / FCT 16 Novembro 2010 29 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 e mod 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 d mod 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) Dept. InformáGca / FCT 16 Novembro 2010 30 15
Porque é que o RSA funciona? 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 ) C d mod N = (M e ) d mod N = M 1+k.ø(N) mod N = M 1.(M ø(n) ) k mod N = M 1.(1) k mod N = M 1 mod N = M Dept. InformáGca / FCT 16 Novembro 2010 31 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 32 16
Exemplo RSA Exemplo da fase de cifrar/decifrar do RSA: Dada a mensagem M = 88 (note se que 88<187) Cifrar: C = 88 7 mod 187 = 11 Decifrar: M = 11 23 mod 187 = 88 Dept. InformáGca / FCT 16 Novembro 2010 33 Outro exemplo não realista Dept. InformáGca / FCT 16 Novembro 2010 34 17
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 Dept. InformáGca / FCT 16 Novembro 2010 35 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 e mod n P = C d mod n THIS IS A TEST Dept. InformáGca / FCT 16 Novembro 2010 36 18
Aspectos computacionais do RSA Geração da chave Exponenciação P e e C d podem 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 Dept. InformáGca / FCT 16 Novembro 2010 37 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 Dept. InformáGca / FCT 16 Novembro 2010 38 19
Geração da chave RSA algoritmo Miller Rabin 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 Dept. InformáGca / FCT 16 Novembro 2010 39 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 = 2 s r such that r is odd Repeat from 1 to t Choose a random integer a which satisfies 1 < a < n - 1 Compute y = a r mod n IF y <> 1 and y <> n-1 then DO j := 1 WHILE j < s and y <> n - 1 then DO y := y 2 mod n IF y = 1 THEN return("composite") j := j + 1 IF y <> n - 1 THEN return("composite") return("prime") Dept. InformáGca / FCT 16 Novembro 2010 40 20
Segurança do RSA 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 Dept. InformáGca / FCT 16 Novembro 2010 41 Três formas : Problema da factorização 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 Dept. InformáGca / FCT 16 Novembro 2010 42 21