Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Criptografia Prof. Ricardo S. Puttini, MSc Departamento de Engenharia Elétrica Universidade de Brasília mai-04 Criptografia Prof. Ricardo Staciarini Puttini Conteúdo • Princípios de Teoria da Informação • Introdução aos Sistemas Criptográficos • Criptografia Simétrica • Criptografia Assimétrica • Funções de Condensação (Hash Functions) • Infra-estrutura de Chaves Públicas (ICP) 2 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Princípios de Teoria da Informação • O problema da codificação consiste na busca de formas eficientes de representação da informação: – Economia de símbolo utilizados (compressão); – Proteção contra erros (detecção/correção de erros); – Serviços de segurança da informação (criptografia). • Teoria da Informação: construção de modelos matemáticos para linguagem. • Linguagem: conjunto de características da informação que se deseja codificar. mai-04 Criptografia Prof. Ricardo Staciarini Puttini Quantidade de Informação • Teoria de Shannon (1948): modelo probabilístico para a linguagem. • Quantidade de Informação I(E) = -log2 p(E) • A base 2 do logaritmo permite que a quantidade de informação seja medida em bits • Exemplos: – E1 = “o sol nascerá amanhã”; p(E1) = 1 ® I(E1) = 0 – E2 = “ao lançar-se a moeda, obteve-se cara”; p(E2) = 0,5 ® I(E2) = 1 (bit) 3 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Princípios de Teoria da Informação • Exemplo: Considere uma fonte que gere símbolos 0’s e 1’s de forma independente e equiprováveis. Então, a quantidade de informação obtida pelo conhecimento de “n” bits de uma seqüência gerada por essa fonte é: • Isto é, a quantidade de informação contida em uma seqüência de n bits é igual n bits. nSI nn =÷ø ö ç è æ-= 2 1log)( 2 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Entropia • Entropia é a quantidade de informação contida em um evento qualquer, i.e. a quantidade de informação média de um evento típico. • É uma medida da incerteza associada a uma ocorrência de um evento: quanto maior a entropia, maior a incerteza associada ao evento. • Para uma v.a. X, que pode assumir um número finito de valores com probabilidades p1, p2, ..., pn, tem-se a seguinte definição de entropia: å = -= n i ii ppXH 1 2 )(log)( 4 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Entropia • Entropia conjunta de um vetor X = [A,B], onde A e B são v.a. assumindo um número finito de valores: • Note que: å ====-== ji jiji bBaApbBaApBAHXH , 2 ),(log),(),()( )()(),( BHAHBAH +£ mai-04 Criptografia Prof. Ricardo Staciarini Puttini Entropia • Dado duas v.a. X e Y, a incerteza acerca de X, dado que uma ocorrência particular de Y é conhecida pode ser expressa como: • Define-se entropia condicional, H(X/Y), ou equivocação de X dado Y por: • Assim, a entropia condicional representa a incerteza em relação a uma ocorrência de X, quando uma ocorrência de Y é conhecida. å ====-== i ii yYXXpyYXXpyYXH ),(log),()/( 2 å ==-= j jj yYpyYXHYXH )()/()/( 5 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Propriedades da Entropia )(log)(log)( 2 1 2 nppXH n i ii £-= å = )(),()/( )(),()/( XHYXHXYH YHYXHYXH -= -= III) Se X e Y são v.a. independentes: )()(),( )()/( )()/( YHXHYXH YHXYH XHYXH += = = I) II) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Informação Mútua • É a quantidade de informação que a ocorrência de um evento Y = y fornece a respeito da ocorrência de um evento X = x: • O valor esperado de I(x,y) é definido como a informação mútua entre X e Y: • Note que: )]/(log[)(log )/()(),( 22 yYxXpxXp yxIxIyxI ==--=- =-= å === ji jiji yxIyYxXpYXI , ),()/(),( ),()()(),( YXHYHXHYXI -+= 6 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelos de Linguagens e Fontes de Texto • Associa-se um alfabeto de m-letras,A = {a0, a1, an-1}, ao conjunto dos inteiros módulo m: ai « i; i Î Zm = {0,1,..., m} • Conjunto de todos os n-gramas de A, Zmn , forma um novo alfabeto de mn símbolos. • Texto: um n-grama sobre um alfabeto Zm. • Fontes de texto: modelo capaz de produzir textos pertencentes a uma determinada linguagem. mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelos de Linguagens e Fontes de Texto • Fonte de texto de primeira ordem: considera a freqüência relativa dos caracteres de uma linguagem. – Não leva em conta a dependência inter-símbolos. • Fonte de texto de segunda ordem: considera a freqüência relativa de digramas. • Fonte de texto de ordem superior: considera a freqüência relativa de n-gramas. • Fontes Markovianas: considera as probabilidades de transição inter-simbolos. 7 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Distribuição de Probabilidades de 1-gramas em Português mai-04 Criptografia Prof. Ricardo Staciarini Puttini Distribuição de Probabilidades de 2-gramas em Português (1/2) 8 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Distribuição de Probabilidades de 2-gramas em Português (2/2) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Probabilidades de Transição para o Português, em % (1/2) 9 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Probabilidades de Transição para o Português, em % (2/2) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Entropia e Redundância de Fontes de Texto • Uma vez admitido o modelo estatístico de uma linguagem, pode-se calcular a entropia da linguagem – Entropia, usando um modelo de fonte de texto de primeira ordem: – Entropia, usando um modelo de fonte de texto de segunda ordem: bits/letra 53,3),(log),( 2 1 2 , 2 =-=£ å jipjipHH ji portuguesportugues bits/letra 97,3log2 1 =-=£ å i i iportuguesportugues ppHH 10 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Entropia do Inglês (Shannon) mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Dada uma fonte sobre um alfabeto Zm e entropia H, pode-se codificar textos produzidos por essa fonte em um código compacto, onde um n-grama típico pode ser codificado com l(n) letras de Zm. • l(n) é o comprimento médio dos códigos necessário para representar um n-grama. Entropia e Redundância de Fontes de Texto m nHn 2log )( =l 11 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Define-se redundância de uma fonte como a diferença entre o número de símbolos utilizados em um n-grama, obviamente n, e o número médio mínimo de símbolos l(n) que poderiam ser utilizados por uma codificação mais apropriada: • Estima-se normalmente que a redundância da língua inglesa seja de, aproximadamente, 40%. • Shannon mostrou que, considerando-se efeitos mais amplos, a entropia do inglês se reduziria a 1bit por letra, o que equivale a uma redundância de cerca de 75%. Entropia e Redundância de Fontes de Texto m HR 2log 1-= mai-04 Criptografia Prof. Ricardo Staciarini Puttini Introdução aos Sistemas Criptográficos • Criptologia: estudo dos processos criptográficos. • Formada por duas disciplina: – Criptografia: como projetar e construir de sistemas criptográficos – Criptoanálise: como “quebrar” sistemas criptográficos. 12 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Serviços de segurança: – Confidencialidade: confiança em que a mensagem possa ser lida apenas pelo receptor desejado – Autenticação da Origem: garantia sobre quem originou a mensagem – Integridade: confiança em que a mensagem não tenha sido modificada desde o momento da criação – Não-retratação: quem originou a mensagem não pode negar tê-lo feito. Introdução aos Sistemas Criptográficos mai-04 Criptografia Prof. Ricardo StaciariniPuttini Introdução aos Sistemas Criptográficos • Sistema Criptográfico Convencional canal seguro CIFRA DECIFRAM C=EK(M) M=DK(C) canal inseguro KK Criptoanalista 13 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico • Uma mensagem (M) é um n-grama de um alfabeto A • O processo de cifração de m gera um criptograma (C), designado por c = E(M) • Claramente, deve haver D(C) = D (E(M)) = m • O processo de cifração pode ser visto como um conjunto de transformações E={En,1£n<¥}, En:Zmn ® Zmn mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico • Sistemas Criptográficos – Família de transformações criptográficas E={EK,KÎK}, onde cada transformação é indexada por um parâmetro k, denominado chave criptográfica. – Composto de uma tripla (M,K,C) • M: espaço das mensagens • K: espaço das chaves • C: espaço dos criptogramas 14 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico M1 M2 M3 Mn C1 C2 C3 Cn EK1 EK2 EKn cifração decifração mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Criptoanálise – Supõe-se sempre que o criptoanalista conhece • Algoritmo; • Linguagem do texto em claro; • Contexto das mensagens (algumas mensagens são conhecidas). – Ataques contra algoritmos criptográficos • Ataque com mensagem conhecida; • Ataque com mensagem escolhida; • Ataque com criptograma escolhido; • Ataque ao criptograma apenas. – Segurança do algoritmo criptográfico: • No mínimo, deve suportar ataques com mensagens conhecidas. • Em geral, deve suportar ataques com mensagens/criptograma escolhido. Modelo Estatístico de um Sistema Criptográfico 15 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Cifra de César (substituição simples): – Cifração: Ci = E (K,Mi) = (Mi + K) mod m – Decifração: Mi= D(K,Ci) = (Ci - K) mod m • Exemplo: K=7, m = 27 (27 letras + espaço) M = TROPAS C = _YVWHZ • Ataque com mensagem conhecida... • Ataque com mensagem escolhida... Modelo Estatístico de um Sistema Criptográfico mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Substituição mono-alfabética: cada letra do alfabeto da mensagem corresponde a uma letra do alfabeto do criptograma: – chave = correspondência entre letras – Exemplo: ABCDEFGHIJKLMNOPQRSTUVWVXYZ_ HZEVGVAJXK_MPNQFROIUBWSTYCLD • Ataque com mensagem conhecida: qual o tamanho da mensagem para permitir revelar a chave completa? • Ataque com mensagem escolhida... Modelo Estatístico de um Sistema Criptográfico 16 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico • Dado um modelo estatístico para a linguagem que será a fonte de mensagens, as distribuições de probabilidade P(M) e P(K) permitem obter: å = = )(;, )()()( MECKM K KPMPCP å = = )(; )()(),( MECK K KPMPCMP å = = )(; )()(),( MECM K KPMPCKP )()(),( KPMPKMP = )( ),()/( CP CMPCMP = )( ),()/( CP CKPCKP = mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico • Função de Decisão: função que faça d(C) = M, se C = EK(M). • Esta função deverá maximizar p(M/C) 17 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico • Ex1 - Cifra de César: K=7, m = 27 M = TROPAS C = _YVWHZ mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modelo Estatístico de um Sistema Criptográfico • Obs1: o processo não destrói as estatísticas de n-gramas da linguagem do texto claro. • Obs2: o espaço de chaves é pequeno, tornando um ataque por força bruta possível. 18 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Ex2: M = MANDE_TROPAS C = THUKLG_YVWHZ Modelo Estatístico de um Sistema Criptográfico mai-04 Criptografia Prof. Ricardo Staciarini Puttini Segredo Perfeito • Equivocação da chave: H(K|C) (medida de quanto da chave é revelado pelo criptograma): – Para um universo de mensagens M finito e distribuições de probabilidades de M e K independentes: H(K|C)= H(M|C)+H(K|(M,C)) • Segredo perfeito: H(M|C)=H(M) – Assim, p(M|C)=p(M) – Ou, p(C|M)=p(C) 19 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Segredo Perfeito • Uma condição necessária a um sistema criptográfico para ter segredo perfeito é que o espaço de chaves seja pelo menos tão grande quanto o espaço de mensagens – Um sistema com |K|=|M|=|C| tem segredo perfeito sss toda chave é usada com igual probabilidade, e para todo MiÎM e todo CjÎC existe um único KÎK, tal que EK(Mi)= Cj – Ex: one-time pad mai-04 Criptografia Prof. Ricardo Staciarini Puttini Teorema da Equivocação da Chave – H(M,C,K) = H(C) + H(K|C) + H(M|C,K) – H(M,C,K) = H(K) + H(M|K) + H(C|M,K) Mas, H(M|C,K) = H(C|M,K) = 0 e H(M|K) = H(M) Assim: H(K|C)=H(K)+H(M)-H(C) – Se H(K|C) = 0 => código quebrado. – Se H(K|C) > 0 => duas ou mais chaves podem ter sido utilizadas para produzir o criptograma. – As possíveis chaves extras são chamadas de espúrias. 20 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Chaves espúrias • Seja KC o conjunto de chaves para o qual existem textos em claro que fazem sentido para a cifração C=EK(M) • O número esperado de chaves espúrias é: s=åCÎC p(C)| KC |-1 • H(K|C)= åCÎCp(C)H(K|C) • H(K|C)£log2| KC | • Usando a desigualdade de Jensen temos • H(K|C)£log2(s+1) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Distância de Unicidade • A recuperação da mensagem a partir de um dado criptograma é deve ser função da quantidade de criptograma disponível para análise. • Para uma mensagem Mn de tamanho n (n-grama), e um criptograma Cn de tamanho n, tem-se: – H(K|Cn) = H(K) + H(Mn) - H(Cn); – H(M)»nHL=n(1-RL)log2m, onde RL é a redundância da linguagem e HL é a entropia da linguagem (Hport»2,209 bits/letra); – H(K) = log2|K| (chaves são identicamente distribuídas); – H(C)£nlog2m; • Assim: – H(K|C) ³ H(K) - nRLlog2m = log2|K| - nRLlog2m – s ³ |K|/[m^(nRL)]-1 21 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Distância de Unicidade • Na média será possível quebrar o sistema criptográfico quando o número de caracteres interceptados é suficiente para fazer o número médio de chaves espúrias igual a zero: • U = log2|K|/(RLlog2m) – Exemplo: cifra de substituição |K|=26! e RL=75%, estime s para n=25 e encontre a distância de unicidade mai-04 Criptografia Prof. Ricardo Staciarini Puttini Dificuldade Computacional • Algoritmos precisam ser eficientes • Força bruta: tentativa de todas as chaves possíveis • Qualquer sistema (exceto segredo perfeito) pode ser quebrado Þ questão de dinheiro e tempo • Chaves longas Þ maior segurança – Cifração: O(N+1) – Força bruta: O(2N+1) • Ferramentas de criptoanálise: – Hardware especial – Máquinas paralelas – ... 22 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Chave secreta x Algoritmo secreto • Algoritmo secreto Þ dificuldade adicional • Difícil de manter segredo se for largamente utilizado: – Engenharia reversa – Engenharia social • Uso comercial: algoritmos publicados • Uso militar: algoritmo mantido em segredo mai-04 Criptografia Prof. Ricardo Staciarini Puttini Ataques de Força Bruta • Número de cifrações/seg: 1 milhão a 1 bilhão bits/sec • 1999: chave de 56 bits quebrada em 22.5 h com 1800 chips (US$250.000,00) (245x109 chaves/s, veja eff.org); ajudado por distributed.net • 1995: chave de 56 bits quebrada em 1 semana com 120.000 processadores (US$6,7M) • Loteria chinesa: – Com máquinas que testam a uma taxa de um milhão de chaves por segundo, necessita-sede 64 segundos para quebrar o DES com um milhão dessas máquinas rodando em paralelo 23 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Segurança Computacional • Difusão: a estrutura estatística herdada do texto em claro é difundida em uma estrutura estatística envolvendo longas combinações de letras no texto. • Confusão: tem por objetivo fazer a relação entre as estatísticas de C e a descrição do conjunto de chaves muito complexa e intrincada. – É implementada usando um conjunto de equações de cifrações não-lineares e múltiplos elementos de chave. mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia Simétrica canal seguro CIFRA DECIFRAM C M canal inseguro KK 24 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Criptografia com ‘Chave Secreta’ ou ‘Simétrica’ • Mesma chave usada para cifrar e decifrar Criptografia Simétrica mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Cifrador seqüencial – Cifra uma seqüência de dados digitais um bit ou um byte por vez • Cifrador de bloco – Um bloco do texto em claro é tratado como um todo e usado para produzir um bloco cifrado de tamanho igual Criptografia Simétrica 25 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cifradores Seqüenciais (Stream Ciphers) • Modelo geral de um cifrador seqüencial Fonte da mensagem Gerador de chaves K, semente + Cifra c = c1 + c2... m = m1 + m2... k = k1 + k2... One-time-pad: diferentes mensagens são cifradas por diferentes seqüências de chaves mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC4 • É um cifrador seqüencial com operações orientadas a bytes • O algoritmo é baseado no uso de uma permutação pseudo-aleatória da chave • O período do cifrador é aproximadamente 10100 • 8 a 16 operações de máquinas são necessárias por byte (cifrador rápido) • É usado em protocolos de segurança como o SSL e o WEP 26 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Cifrador de cadeia de bytes (byte stream) • Operação XOR aplicada entre uma seqüência pseudo- randômica chaveada e os dados: a mesma para cifrar e decifrar • Tamanho da chave variável: até 2048 bits • Propriedade da RSA, exportável • Tamanho do código = 1/10 de DES • Velocidade = de 40 a 100 vezes DES RC4 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC4 • Operações – O estado interno do RC4 em um tempo t consiste de uma tabela de permutação St de 2n palavras de n bits e de dois ponteiros de n bits it e jt – Estas palavras são usadas a cada estado para indexar a palavras diferentes tabela St, realizando sempre adições módulo 2n 27 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC4 • Ataques ao RC4 – Chave de 40 bits é fraca – Ataque de VI conhecido e escolhido – Ataque de invariância mai-04 Criptografia Prof. Ricardo Staciarini Puttini A5 • A5/1 e A5/2 são cifradores seqüenciais para sigilo de conversações de telefones GSM • Chaves de 64 bits geram seqüências de chaves de 228 bits cada para cifração de um quadro – Utiliza três registradores de deslocamento e uma transformação não-linear para gerar a seqüência de chave 28 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cifradores de bloco • Blocos e chaves de tamanho fixo – Não podem ser muito pequenos Þ segurança comprometida – Não devem ser muito grandes Þ problemas de desempenho – Tamanho típico de bloco: 64 bits • Mensagem deve ser quebrada em blocos • Texto em claro e texto cifrado não devem ter correlação – metade deve permanecer igual e metade diferente – espalhamento de bits mai-04 Criptografia Prof. Ricardo Staciarini Puttini 1 2 3 4 5 6 7 Valor Inicial Chave Hora/ Data Banco Conta MontanteDepositante 1 2 3 4 5 6 7 Hora/ Data Banco Conta MontanteDepositante 1 2 3 4 5 6 7 Hora/ Data Banco Conta MontanteDepositante Cifradores de Bloco 29 mai-04 Criptografia Prof. Ricardo Staciarini Puttini 1 2 3 4 5 6 7 Valor Inicial Chave Hora/ Data Banco Conta MontanteDepositante 1 2 3 4 5 6 7 Hora/ Data Banco Conta MontanteDepositante 1 2 3 4 5 6 7 Hora/ Data Banco Conta MontanteDepositante Cifradores de Bloco mai-04 Criptografia Prof. Ricardo Staciarini Puttini 1 2 3 4 5 6 7 Hora/ Data Banco Conta MontanteDepositante Valor Inicial • Cifragem em blocos, usualmente de 64-bit; • Cifragem de blocos em cadeia (CBC) bastante comum; • Em geral, mais lenta que a cifragem em fluxo. Cifradores de Bloco 30 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cifradores de Bloco • Conceitos gerais: – Substituição (alfabeto permutado): mapeamento de um bloco de k bits em 2k blocos de k bits – Transposição (permutação no bloco): mudança da posição de cada bit no bloco – Round (rodada): combinação de substituição de grupos de bits com permutação, de tal forma que um bit da entrada possa afetar todos os bits da saída mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cifração de bloco 64 bits de entrada 8 bits 8 bits 8 bits 8 bits S1 S2 S3 S8 8 bits 8 bits 8 bits 8 bits 64 bits intermediários 64 bits de saída Permutação Substituiçãoro da da 31 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rede Feistel • Objetivos: – Difusão • Refere-se ao remanejamento dos bits na mensagem tal que qualquer redundância do texto em claro é espalhada sobre o criptograma • Uma transposição em uma rodada é dita adicionar difusão – Confusão • Visa tornar o relacionamento entre a chave e o criptograma tão complexo quanto possível • Uma substituição em uma rodada é dita adicionar confusão mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rede Feistel • Parâmetros: – tamanho do bloco – tamanho da chave – número de rodadas – algoritmo de geração de subchaves – função de rodada 32 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Texto em claro (2w bits) + F K1 + F K2 E0 D0 E1 D1 Criptograma (2w bits) En+1 Dn+1 w bits w bits Rede Feistel mai-04 Criptografia Prof. Ricardo Staciarini Puttini DES • Publicado em 1977 pelo National Bureau of Standards • Desenvolvido pela IBM (Lucifer) • Chaves de 56 bits com paridade • Blocos de 64 bits • Fácil de implementar em hardware, lento em software (na época) • Throughput superior a 20 Mbps em máquinas típicas 33 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Visão Geral do DES • Permutação inicial • Chave de 56 bits Þ 16 chaves por round de 48 bits • 16 rodadas: 64 bits de entrada + 48 bits de chave ® 64 bits de saída • Permutação final (inversa da inicial) • Decifração: execução ao contrário com a chave na ordem inversa mai-04 Criptografia Prof. Ricardo Staciarini Puttini DES: geração das chaves de rodadas • Bits 8, 16, ..., 64 são de paridade • Permutação inicial dos 56 bits válidos • Divisão em dois grupos de 28 bits • A cada rodada a chave é deslocada um ou dois bits à esquerda • Permutação entre as metades esquerda e direita da chave • Descarte de 8 bits por rodada 34 mai-04 Criptografia Prof. Ricardo Staciarini Puttini DES mai-04 Criptografia Prof. Ricardo Staciarini Puttini Uma Rodada DES 35 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Função F entrada (32 bits) S1E S2E S3E S4E S5E S6E S7E S8E E 48 bits S1K S2K S3K S4K S5K S6K S7K S8K subchave 48 bits S1 S2 S3 S4 S5 S6 S7 S8 S1I S2I S3I S5IS4I S6I S7I S8I S1O S2O S3O S4O S5O S6O S7O S8O P saída (32 bits) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Ataques ao DES • Força bruta: 0,5 MMY • É necessário saber alguma informação sobre o texto em claro (ASCII, GIF, ...) • Quebras documentadas usando hardwarededicado (custom chip ou lógica programável) – www.eff.org – distributed.net • Pode-se usar cifrações repetidas para melhorar segurança 36 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Ataques ao DES • criptoanálise diferencial – Biham e Shamir, 92 – ataque de mensagem escolhida – baseada em propagação de diferenças conhecidas nas mensagems em claro – no caso do DES: são necessários 247 pares de mensagens em claro e criptogramas mai-04 Criptografia Prof. Ricardo Staciarini Puttini Ataques ao DES • criptoanálise linear – Matsui, 93 – ataque de mensagem conhecida – procura encontrar expressões lineares para as caixas-S, estendendo estas expressões para a cifra inteira. – no caso do DES: são necessários 247 pares de mensagens em claro e criptogramas 37 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modos de Operação do DES • Electronic Code Book (ECB) – Cada bloco de 64 bits de texto aberto é codificado independentemente, usando a mesma chave – Transmissão segura de valores únicos (por exemplo, uma chave de criptografia) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Electronic Code Book (ECB) 38 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modos de Operação do DES • Cipher Block Chaining (CBC) – A entrada para o algoritmo de criptografia é o resultado da operação XOR do próximo bloco de 64 bits de texto aberto e o bloco precedente de 64 bits de texto cifrado – Transmissão orientada a blocos de propósito geral – Autenticação mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cipher Block Chaining (CBC) 39 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modos de Operação do DES • Cipher Feedback (CFB) – Processa-se j bits de cada vez. O texto cifrado precedente é usado como entrada para o algoritmo de criptografia para produzir uma saída pseudo-aleatória, que é, então, operada usando XOR com o texto em claro para produzir a próxima unidade de texto cifrado. – Transmissão orientada a cadeias de propósito geral mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cipher Feedback (CFB) 40 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Cipher Feedback (CFB) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Modos de Operação do DES • Output Feedback (OFB) – Similar ao CFB, exceto que a entrada para o algoritmo de criptografia é a saída DES precedente – Transmissão orientada a cadeias sob canal ruidoso (por exemplo, comunicação por satélite) 41 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Output Feedback (OFB) mai-04 Criptografia Prof. Ricardo Staciarini Puttini Output Feedback (OFB) 42 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Geração de MICs • Message Integrity Code – Enviar somente o último bloco do CBC (resíduo CBC) – Qualquer modificação no texto em claro modifica o resíduo CBC mai-04 Criptografia Prof. Ricardo Staciarini Puttini 3-DES • Cifração-decifração-cifração (EDE): – Duas chaves: K1, K2 K1 K2 K1 M E D E C – Decifração K1 K2 K1 C D E D M 43 mai-04 Criptografia Prof. Ricardo Staciarini Puttini 3-DES • Ataque – encontro-no-meio (meet-in-the-middle) • Decifra-se o resultado da segunda cifra e armazena- se todas as possíveis entradas • Cifra-se todos os textos em claro com a primeira cifra e compara-se com a tabela • As coincidências são armazenadas como possíveis pares corretos de chaves mai-04 Criptografia Prof. Ricardo Staciarini Puttini IDEA • International Data Encryption Algorithm (originalmente IPES) • Autores: Lai e Massey da ETH Zurich, 1991 • Blocos de 64 bits • Chaves de 128 bits 44 mai-04 Criptografia Prof. Ricardo Staciarini Puttini IDEA mai-04 Criptografia Prof. Ricardo Staciarini Puttini IDEA • Operações primitivas – Å – + mod 216 – Ä mod 216+1: • Inversível: x Ä y = 1 mod 216+1 • Razão: 216+1 é primo • Trata 0 como código para 216 45 mai-04 Criptografia Prof. Ricardo Staciarini Puttini IDEA • Expansão da chave: – Chave de 128 bits ® 52 chaves de 16 bits – Cifração e decifração usam chaves diferentes – Geração da chave • Divide-se os 128 bits em o subchaves de 16 bits • Começando no bit 25, toma-se mais 8 chaves de 16 bits • Deslocamento de 25 bits e repetição da operação mai-04 Criptografia Prof. Ricardo Staciarini Puttini IDEA • 17 rodadas: – Pares e ímpares – 64 bits ® 4 entradas de 16 bits: Xa, Xb, Xc, Xd – Saídas: Xa´, Xb´, Xc´, Xd´ – Rounds ímpares usam quatros chaves de entrada: Ka, Kb, Kc, Kd – Rounds pares usam somente 2 chaves: Ke, Kf 46 mai-04 Criptografia Prof. Ricardo Staciarini Puttini IDEA Uma rodada mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 • Características: – Tamanho de palavra variável (w) • valores permitidos: 16, 32, 64 – Número variável de rodadas (r) • valores permitidos: 0, 1, …, 255 – Chave de tamanho variável (b) • número de bytes permitidos: 0, 1, …, 255 – Exemplo: RC5-32/12/16 47 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 • Operações – Expansão de chave: t=2r+2 • S[0], S[1], …, S[t-1] – Cifração • adição módulo 2w • ou exclusivo • rotação circular à esquerda mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 - Expansão da Chave 48 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 Texto em claro (2w bits) + + A B Å Å <<< <<< + + LE0 RE0 S[0] S[1] S[2] S[3] LE1 RE1 Rodada 1 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 + + Å Å <<< <<< + + LEr-1 REr-1 S[2r-2] S[2r-1] S[2r] S[2r+1] LEr REr Rodada r Texto cifrado (2w bits) 49 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 • Modos de operação – RC5 block cipher • semelhante ao ECB – RC5-CBC – RC5-CBC-Pad – RC5-CTS (ciphertext stealing mode) mai-04 Criptografia Prof. Ricardo Staciarini Puttini RC5 - stealing mode 50 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael • Características – operações realizadas no nível de byte – tamanhos de chaves: 128, 192, 256 bits – tamanhos de blocos: 128, 192, 256 bits – número de rodadas: 9, 11, 13 (além de uma rodada extra no final) – cada rodada composta de quatro passos: substituição de bytes, deslocamento de linhas, mistura de colunas, soma da sub-chave de rodada mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael 51 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael - Substituição de Bytes • Transformação definida por mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael - Substituição de Bytes • Efeito da substituição de bytes 52 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael – Deslocamento de Linhas • Deslocamentos definidos pela tabela abaixo, conforme o tamanho do bloco Nb mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Efeito do deslocamento de linhas Rijndael – Deslocamento de Linhas 53 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael – Mistura de Colunas • Transformação sobre as colunas mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael – Mistura de Colunas • Efeito da mistura de colunas 54 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael – Soma de Sub-Chave de Rodada • Operação XOR mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael • última rodada – igual às anteriores sem a mistura de colunas • geração das sub-chaves de rodada – chave original expandida e seleção da chave de rodada – expansão baseada • em rotação • caixas-S da substituiçãode bytes • XOR com constante da rodada 55 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael • Modos de operação – CTR (Counter mode): modificação do OFB – OCB (Offset Codebook): permite autenticação • Ataques – Pouco susceptível às criptoanálises diferencial e linear – Há dúvidas sobre sua resistência a ataques algébricos mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael • OCB 56 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Rijndael • Counter Mode mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia Simétrica – Vantagens e Desvantagens • Vantagens – Relativamente Segura – Amplamente utilizada – Rápida • Desvantagens – Requer compartilhamento da chave secreta – Chaves devem ser guardadas com segurança – Grande número de chaves – Administração complexa – Não permite a não-retratação 57 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Funções de Autenticação • Três classes de autenticadores – cifração de mensagens • o criptograma da mensagem inteira serve como autenticador – código de autenticação de mensagem (MAC) • função da mensagem e de uma chave secreta que produz um valor de comprimento fixo – funções de condensação • função que mapeia uma mensagem de qualquer comprimento em um valor resumo de tamanho fixo mai-04 Criptografia Prof. Ricardo Staciarini Puttini Funções Hash • Funções hash ou de condensação são funções unidirecionais: d = h(m), mas não é tratável m = h-1(d). – Levam mensagens de tamanho arbitrário em resumos (hash) de tamanho fixo • Funções hash tem como premissa: – evitar que se encontre a mensagem dado o resumo – evitar que se encontre m1, m2 tal que d1=d2 – dado m1, evitar que se encontre m2 com mesmo resumo 58 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Aleatoriedade: – Distribuição uniforme • para muitas entradas, as saídas devem ser ‘1’ na metade do tempo • cada saída deve ter 50% de bits ‘1’ – Independência • entradas parecidas devem levar a saídas não relacionadas (metade dos bits deve diferir na saída) Funções Hash mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Muitas mensagens podem levar ao mesmo resumo: – Suponha resumos de 128 bits e mensagens com 1000 bits de comprimento – Na média, existem 2872 mensagens que mapeiam para o mesmo resumo – Mas, na média, são necessárias 2128 tentativas para se encontrar duas tais mensagens Funções Hash 59 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Paradoxo do aniversário: – quantas pessoas deve haver numa sala para que se tenha 50% de chances de se encontrar duas pessoas que possuam a mesma data de aniversário? – Seja n a quantidade de entradas – Sejam k = 365 as possíveis saídas – Há no total n(n-1)/2 pares de entrada – Probabilidade de não haver colisão: p=(1/k)n(n-1)/2 – Por exemplo, se n=23, ptodosdiferentes=0,49 Funções Hash mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Paradoxo do Aniversário – Para m bits, são necessários cerca de 2m/2 mensagens para que se encontre uma colisão – Lembrando que este problema é diferente de pegar h e encontrar o m relativo – Exemplo: • Alex, cuja secretária é Bia quer demitir Melo • Bia é amiga de Melo • Bia compõe duas mensagens com o mesmo hash: uma para ser lida por Alex e outra para ser enviada para Melo Funções Hash 60 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Funções Hash • Exemplos: – RFC: www.normos.org, www.rfc-editor.org Nome Inventor Documentação Objeto Hash MD2 Ron Rivest RFC1319 bytes 128 MD4 Ron Rivest RFC1320 32-bits 128 MD5 Ron Rivest RFC1321 32-bits 128 SHA-1 NIST FIPS PUB 180 32-bits 160 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Autenticação usando MAC=MD[Ks|m1] Alex Bia ra MD(Ks,ra) rb MD(Ks,rb) Funções Hash 61 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Cifração: one-time pad – b1=MD[Ks|IV] – b2=MD[Ks|b1] – bi=MD[Ks|bi-1] – b é usado como one-time pad Funções Hash mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Cifração: misturando no texto em claro – similar ao CFB – quebra a mensagem em grupos de comprimento do resumo pi – b1=MD[Ks|IV], c1=p1Åb1 – b2=MD[Ks|c1], c2=p2Åb2 – bi=MD[Ks|ci-1], ci=piÅbi Funções Hash 62 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD2 • Características – resumo de 128 bits – pad para múltiplo de 16 bytes – anexa MD2 checksum no final – processa mensagens inteiras mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD2 • Checksum MD2 – mnk: byte nk da mensagem – cn=p(mnk Åcn-1) – p: tabela de substituição • 0®41 • 1 ®46 • ... 63 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD2 • Passagem final – opera em grupos de 16 bytes – quantidade q de 48 bytes: • (resumo corrente|grupo|resumo Ågrupo) – 18 passagens sobre q – cn= cn Å p(cn-1) para n=1...47, c-1=0 – após 17 passagens usa os primeiros 16 bytes como o novo resumo mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD2 • Passagem final bloco de 16 bytes intermediário bloco msg Å byte nbyte n-1 byte 47 0 substituição p Å para n de 0 até 47+ passagem # (0 a 17) para próximo bloco msg resumo final valor inicial=0 descartado 64 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD4 • Características: – qualquer número de bits – opera sobre quantidades de 32 bits – faz pad para múltiplos de 512 bits – resumo=f(blocos de 512 bits, resumo anterior) mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD4 100…0 comprimento da mensagem (k mod 264) padding (1 a 512 bits) mensagem k bits Lx512 bits=Nx32 bits ... ...Y0 Y1 Yq YL-1 HMD4 512 128 VI HMD4 128 512 CV1 HMD4 128 512 CVq HMD4 128 512 CVL-1 128 65 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD4 • Operações – ëxû – ~: complemento de bit – xÙy – xÚy – adição módulo 232 – rotação à esquerda por y bits mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD4 • Passagem 1: seleção – função de seleção: F(x,y,z)=(xÙy)Ú(~xÙz) • Passagem 2: majoração – função de majoração: G(x,y,z)=(xÙy)Ú(xÙz)Ú(yÙz) • Passagem 3: xor – função: H(x,y,z)=xÅyÅz • Obs – A cada um dos 16 passos de cada passagem, é feita uma rotação à direita com A, B, C, D (descritos no esquema seguinte), passando as 3 últimas palavras a assumir os papéis de x, y e z 66 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD4 F, X[i], 16 passos G,5A82799916, X[i], 16 passos H, 6ED9EBA116, X[i], 16 passos A B C D A B C D A B C D CVq 128 + + + + CVq+1 Yq 512 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD5 • Características: – mesmo padding do MD4 – MD5: 4 passagens 67 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD5 100…0 comprimento da mensagem (k mod 264) padding (1 a 512 bits) mensagem k bits Lx512 bits=Nx32 bits ... ...Y0 Y1 Yq YL-1 HMD5 512 128 VI HMD5 128 512 CV1 HMD5 128 512 CVq HMD5 128 512 CVL-1 128 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD5 • Passagem 1 e 3: – como em MD4 • Passagem 2: – função G(x,y,z)=(xÙz)Ú(yÙ~z) • Passagem 4: – I(x,y,z)=yÅ(xÚ~z) • Obs – A cada um dos 16 passos de cada passagem, é feita uma rotação à direita com A, B, C, D (descritos no esquema seguinte), passando as 3 últimas palavras a assumir os papéis de x, y e z 68 mai-04 Criptografia Prof. Ricardo Staciarini Puttini MD5 CVq+1 F, T[1…16], X[i], 16 passos G,T[17…32], X[i], 16 passos H, T[33…48], X[i], 16passos A B C D A B C D A B C D CVq 128 + + + + Yq 512 A B C D I, T[49…64], X[i], 16 passos mai-04 Criptografia Prof. Ricardo Staciarini Puttini SHA-1 • Características: – 64 bits para 160 bits – similar ao MD4 – 5 passagens – Resumo: • CV0=IV • CVq+1=SOMA32(CVq,ABCDEq) • MD=CVL • onde – ABCDEq= saída do último round de processamento do q-ésimo bloco – L=número de blocos da mensagem – SOMA32= soma módulo 32 69 mai-04 Criptografia Prof. Ricardo Staciarini Puttini SHA-1 • Passagem 1: seleção – função f1(x,y,z)=(xÙy)Ú(~xÙz) • Passagem 2: – função f2(x,y,z)= xÅyÅz(xÙz)Ú(yÙ~z) • Passagem 3: Xor – função f3(x,y,z)=(xÙy)Ú(xÙz)Ú(yÙz) • Passagem 4: – função f4(x,y,z)= xÅyÅz mai-04 Criptografia Prof. Ricardo Staciarini Puttini SHA-1 f1, K, W[0…19] A B C D A B C D A B C D CVq 160 + + + + CVq+1 Yq 512 A B C D + E E E E f2, K, W[20…39] f3, K, W[40…59] f4, K, W[60…79] 70 mai-04 Criptografia Prof. Ricardo Staciarini Puttini HMAC • Objetivos de projeto RFC 2104 – usar, sem modificações, funções de condensação disponíveis – permitir fácil substituição da fção condens. – preservar desempenho original da fção condens. – usar e manipular chaves de forma simples – permitir análise criptográfica de sua força mai-04 Criptografia Prof. Ricardo Staciarini Puttini HMAC • Operação – HMACK=H[(K+Åopad)||H[(K+ Åipad)||M]] • H: fção condens. • M: msg • Yi: i-ésimo bloco de M • L: nr de blocos em M • b: número de bits num bloco • n: comprimento do resumo • K: chave secreta • K+: K preenchida com zeros à esq até b bits de compr. • ipad: 00110110 repetido b/8 vezes • opad: 01011010 repetido b/8 vezes 71 mai-04 Criptografia Prof. Ricardo Staciarini Puttini HMAC Si Y0 Y1 Å K+ ipad b bits YL-1... HashVI n bits n bits H(Si||M)Å K+ opad So Y0 HashVI n bits n bits HMACK(M) mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Problemas da criptografia convencional – na distribuição de chaves os comunicantes devem • já compartilhar a chave • ter um centro de distribuição de chaves – não possibilita assinatura digital Criptografia Assimétrica 72 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Algoritmos de chave pública baseiam-se em uma chave para cifração e outra para decifração – Deve ser computacionalmente intratável determinar a chave de decifração dado somente conhecer o algoritmo de criptografia e a chave de cifração – Em alguns algoritmos as chaves relacionadas podem ser usadas para cifração, com a outra sendo usada para decifração Criptografia Assimétrica mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Os passos essenciais de um processo de cifração de chave pública – Cada sistema final numa rede gera um par de chaves – Cada sistema publica sua chave de cifração colocando-a em um registro ou arquivo público – Se Alex deseja enviar uma mensagem para Bia, ele envia a mensagem usando a chave pública de Bia – Quando Bia recebe a mensagem, ela a decifra usando sua chave privada Criptografia Assimétrica 73 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia Assimétrica Chave Pública (KU) canal inseguro Chave Secreta (KR) CIFRA DECIFRAM C M canal inseguro mai-04 Criptografia Prof. Ricardo Staciarini Puttini – Confidencialidade fonte da mensagem algoritmo de cifração algoritmo de decifração destino fonte do par de chaves criptanalista X KRb ^ ^ KRb KUb X Y X Criptografia Assimétrica 74 mai-04 Criptografia Prof. Ricardo Staciarini Puttini – Autenticação fonte da mensagem algoritmo de cifração algoritmo de decifração destino fonte do par de chaves criptanalista KRa ^ KRa KUa X Y X Criptografia Assimétrica mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Categorias de algoritmos de chave pública: – Cifração/decifração • Ex: RSA – Assinatura digital • Ex: RSA, DSS – Troca de chaves • Ex: RSA, Diffie-Hellman Criptografia Assimétrica 75 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Condições dos algoritmos de chave pública – fácil de gerar o par KU e KR – fácil de computar C=EKU(M) – fácil de computar M=DKR(C) – difícil de determinar KR a partir de KU – difícil de computar M, dado KU e C – M=EKU[DKR(M)] Criptografia Assimétrica mai-04 Criptografia Prof. Ricardo Staciarini Puttini Básico de Teoria dos Números • Divisibilidade – símbolo “|” significa divide • a|b: a divide b ou b é divisível por a – propriedades • se a|1, então a=±1 • se a|b e b|a, então a=±b • todo b¹0 divide 0 • se b|g e b|h, então b|(mg+nh) para m e n inteiros arbitrários • ex: 7|(3x14+2x63), pois 7\7(3x2+2x9) 76 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Básico de Teoria dos Números • Inteiros relativamente primos – a e b são relativamente primos se mdc(a,b)=1 • Aritmética modular – a=qn+r, 0£r<n; q=ëa/nû – propriedades • aºb mod n se n|(a-b) • se (a mod n)=(b mod n), então aºb mod n • se aºb mod n, então bºa mod n • se aºb mod n e bºc mod n, então aºc mod n mai-04 Criptografia Prof. Ricardo Staciarini Puttini Básico de Teoria dos Números • Aritmética modular (cont) – operações • [(a mod n)+(b mod n)] mod n = (a+b) mod n • [(a mod n)-(b mod n)]mod n = (a-b) mod n • [(a mod n)*(b mod n)]mod n = (a*b) mod n • Função tociente de Euler – f(n) é o número de inteiros menores que n e relativamente primos a n – para p primo, f(p)=p-1 • se n=pq, p¹q, então f(n)=(p-1)(q-1) 77 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Básico de Teoria dos Números • Teorema de Euler – para todo a, n relativamente primos, af(n)º1 mod n – para p primo apºa mod n • Cálculo do inverso modular aºb-1mod n – algoritmo estendido de euclides • se mdc(n,a)=1, então o algoritmo estendido de Euclides proporciona o inverso modular de a mod n mai-04 Criptografia Prof. Ricardo Staciarini Puttini Básico de Teoria dos Números • Algoritmo estendido de Euclides – Exemplo: mdc(13,5) – o número em negrito é o inverso modular de 5 mod 13, ou seja 5º-5-1 mod 13º8 mod 13 i r q s t -1 13 1 0 0 5 0 1 1 3 2 1 -2 2 2 1 -1 3 3 1 1 2 -5 4 0 2 78 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA • Criado em 1977 por Rivest, Shamir e Adleman • Bases matemáticas – dificuldade de fatorar o produto de dois números primos – inversibilidade da exponenciação em módulo, se usados determinados pares de números primos como expoentes • Chave pública e chave privada • Velocidade: 100 vezes mais lento que DES mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA • Encontrar 2 fatores primos do número 77 • Encontrar 2 fatores primos do número 34.812.398.461.263.861.234.861.324.986.123.846. 198.234.674.365.874.223.487.129.867.356.512.390. 348.723.487.231.785.345.987.234.586.234.230.476. 897.234.634.598.734.587.987.235.879.823.458.789. 234.589.789.342.683 • Tempo de fatoração de um simples módulo de 200 dígitos RSA é maior que70,000,000 MIPS-years • Mesmo nas máquinas mais rápidas, a vantagem é sempre do cifrador, pois chaves maiores podem ser usadas com maior eficiência do que a dos métodos de fatoração 79 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA • Chave pública – n produto de dois números primos, p and q – e primo relativo de (p-1) x (q-1) • Chave privada – n = p x q – d =e-1(mod (p-1) x (q-1)) • Cifração (usando a chave pública) – c=me(mod n) – e vale tipicamente 65536 (216) • Decifração (usando a chave privada) – m=cd(mod n) – d vale de 2510 a 2512 para módulo de 512-bits – Operação mais demorada que a cifraçãomai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA – Texto em claro é cifrado em blocos • cada bloco deve ter tamanho menor que log2n, para algum inteiro n • na prática, o tamanho do bloco é 2k, 2k<n£ 2k+1 – Forma da cifração e decifração: • C=Memod n • M=Cdmod n = (Me)dmod n = Medmod n 80 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA – Cálculo do par de chaves • Seja F(n) a função tociente de Euler (número de inteiros positivos menores que n e relativamente primos a n • Se n=pq, então F(n)=(p-1)(q-1) • Pelo teorema de Euler: dados p e q primos, n e m inteiros, tq n=pq e 0<m<n, e um inteiro arbitrário k: mkF(n)+1=mk(p-1)(q-1)+1ºm mod n • Assim, ed=kF(n)+1 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA – Esquema RSA: • p, q dois números primos (privado, escolhido) • n=pq (público, calculado) • e, com mdc(F(n),e)=1; 1<e<F(n) (público, escolhido) • dºe-1mod F(n) (privado, calculado) – Assim, • KU={e,n} e KR={d,n} 81 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA • Segurança do RSA – Possibilidades de ataques: • força bruta • ataques matemáticos – fatorar n em seus dois fatores primos – determinar F(n) diretamente – determinar d diretamente • ataques de temporização mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA • Progresso na fatoração • RSA Challenge: http://www.rsasecurity.com/rsalabs/challenges/factoring/ numbers.html Nº dígitos decimais Data MIPS-ano Método 100 1991 7 MPQS 110 1992 75 MPQS 120 1993 830 MPQS 129 1994 5000 MPQS 130 1996 500 NFS 140 1999 2000 NFS 155 1999 8000 NFS 82 mai-04 Criptografia Prof. Ricardo Staciarini Puttini RSA • Ataques de temporização – Baseado em diferenças de tempo no cálculo de uma operação (por exemplo: exponenciação modular) com operandos diferentes – Formas de se evitar: • tempo de exponenciação constante • atrasos aleatórios • cegueira: multiplicação por um aleatório r mai-04 Criptografia Prof. Ricardo Staciarini Puttini -10 -8 -6 -4 -2 0 2 4 6 8 10 -4 -3 -2 -1 0 1 2 3 4 5 6 P Q -R R=P+Q Criptografia de Curva Elíptica – CE no corpo dos reais: Forma de Weierstrass: y2+a1xy+a3y=x3+a2x2+a4x+a6 83 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia de Curva Elíptica – A curva elíptica E é composta por todos os pontos (x,y), x e y Î K, que satisfazem a definição da curva, juntamente com o ponto no infinito O. mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia de Curva Elíptica – Regras de adição: P+O=O+P=P (x,y)+(x,-y)=O P=(x1,y1) e Q=(x2,y2). Então, P+Q=(x3,y3), onde: • x3=l2-x1-x2 • y3= l(x3-x1)+y1 • l=(y2-y1)/(x2-x1), se P¹Q • l=(3x12+a)/2y1, se P=Q – Regra de multiplicação: refere-se ao produto entre um escalar k e um ponto sobre a curva P • Q=kP 84 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia de Curva Elíptica • Cifração e decifração – embutir dados na curva • PA=kAG • PB=kBG • Alex envia Cm={kG,Pm+kPB} • Bia calcula (Pm+kPB)-kB(kG)=Pm+k(kBG)-kB(kG)=Pm mai-04 Criptografia Prof. Ricardo Staciarini Puttini Criptografia de Curva Elíptica •Alex •Bia Comum Tamanho do corpo Ponto Base G Privado Alex Público Alex Curva E Público Bia Privado Bia Chave privada kA Chave pública PA=kAG Base matemática Chave pública PB=kBG Chave privada kB 85 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Combinações: Envelope Digital Chave Randômica DES “Envelope Digital ” hghsdhghsd nbhsdbh jhjsdhjsdhj jhjsd hgsdd hghghs uhwefsd mnsdf u hweuqhuwedhu Chave Pública do Receptor Chave Randômica DES mai-04 Criptografia Prof. Ricardo Staciarini Puttini Combinações: Assinatura Digital DigeridoMD5 Chave Privada do Assinado Digerido Cifrado Assinatura 86 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Combinações: Assinatura Digital MD5 Digerido Recalculado Chave Pública do Assinado Digerido Recebido =? Verificação mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Requisitos: – depende da mensagem – utiliza informação única da fonte – fácil de produzir – fácil de reconhecer – intratável de forjar – armazenamento prático Combinações: Assinatura Digital 87 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Abordagens – assinatura direta – assinatura arbitrada • usando criptografia simétrica – (1) X®A: M || EKXA[IDX || H(M)] – (2) A®Y: EKXB[IDX || M || EKXA[IDX || H(M)] || T] • chave secreta compartilhada previamente entre X e Y – (1) X®A: IDX || EKXY[M] || EKXA[IDX || H(EKXY[M])] – (2) A®Y: EKAY[ IDX || EKXY[M] || EKXA[IDX || H(EKXY[M]) || T] • usando criptografia assimétrica – (1) X®A: IDX || EKRX[IDX || EKUY(EKRX[M])] – (2) A®Y: EKRA[IDX || EKUY(EKRX[M]) || T] Combinações: Assinatura Digital mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Digital Signature Standard (DSS) M H Sig || M s r H KUG KUA compara Combinações: Assinatura Digital 88 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Gerenciamento de Chaves • Chaves privadas – Muito grandes, não permitem memorização – Necessidade de proteção para mantê-las privadas • Chaves Públicas – Devem ser amplamente divulgadas – Conveniente ligá-las a um nome • Dilema da incerteza sobre identidade do dono de uma chave – Qualquer um pode gerar um par de chaves pública/privada – Qualquer um pode dar um nome a uma chave pública – Qualquer um pode divulgar uma chave pública em um diretório público – Dilema: Como saber com certeza que o nome em uma chave pública representa realmente o receptor com quem se quer comunicar? – Solução: Certificados Digitais mai-04 Criptografia Prof. Ricardo Staciarini Puttini Gerenciamento de Chaves • Considerações: – distribuição de chaves públicas – uso de criptografia de chave pública para distribuição de chaves secretas (key exchange) 89 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Gerenciamento de Chaves • Distribuição de chaves públicas – Esquemas • anúncio público (ex: PGP) • diretório disponível publicamente • autoridade de chave pública • certificados de chave pública mai-04 Criptografia Prof. Ricardo Staciarini Puttini Gerenciamento de Chaves • Distribuição de chaves secretas – Esquemas • Distribuição simples de chave secreta – Alex gera par de chaves – Bia cifra segredo com chave pública de Alex – Alex decifra • Distribuição com confidencialidade e autenticação • Esquema Híbrido – Uso de um KDC (key distribution center) 90 mai-04 Criptografia Prof. Ricardo Staciarini Puttini • Problema comum a DES, RC2, RC4: acordo prévio entre emissor e receptor quanto à chave de criptografia • Algoritmo Diffie-Hellman – permite aos dois lados derivar uma chave sem necessidade de trocar nenhuma informação secreta – tem base na dificuldade de calcular logaritmos discretos – troca de chave simétrica – vulnerabilidade man-in-the-middle • Troca de chave através de um canal não-seguro – Confidencialidade garantida – Autentificação não garantida Diffie-Hellman mai-04 Criptografia Prof. Ricardo Staciarini Puttini Diffie-Hellman – Baseado na dificuldade de se calcular logaritmos discretos – A Função Logaritmo Discreto é inversa da função exponenciação modular, definida como y=gx mod p, onde p é primo e g é um gerador de Z/pZ 91 mai-04 Criptografia Prof. Ricardo Staciarini Puttini A B p,g p,g1. p = número primo, g = base do logaritmo y1=gx1 mod p y2=gx2 mod p2. x1 = valor privado da 1a. parte x2 = valor privado da 2a. parte Diffie-Hellman mai-04 Criptografia Prof. Ricardo Staciarini Puttini A B p,g p,gy1=gx1 mod p y2=gx2 mod p y1y2 1. 2. 3. y1 = valor público da 1a. parte y2 = valor público da 2a. parte K=y2x1 mod p K=y1x2 mod p4. K = chave secreta Diffie-Hellman 92 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Gerenciamento de Chaves • Autoridade de chave pública autoridade de chave pública Alex Bia pedido|tempo1 EKRaut[KUb|pedido|tempo1] EKUb[IDA|N1] EKUa[N1|N2] EKUb[N2] pedido|tempo2 EKRaut[KUa|pedido|tempo2] mai-04 Criptografia Prof. Ricardo Staciarini Puttini Gerenciamento de Chaves • Certificados de chave pública autoridade certificadora Alex Bia KUa CA=EKRaut[tempo1,IDA,KUa] CA CB KUb CB=EKRaut[tempo2,IDA,KUb] 93 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Certificados Digitais • Características – Como uma carteira de identidade eletrônica, um Certificado Digital assegura que alguma autoridade fez checagens razoáveis da identidade do portador – Um Certificado Digital notariza a ligação entre uma chave pública e um Emissor, assim como o R.G. prova a identidade de alguém mai-04 Criptografia Prof. Ricardo Staciarini Puttini Certificados Digitais Nome, Organização, Endereço Chave Pública do Portador Datas de Validade do Certificado Número de Série Assinatura Digital da Autoridade Certificadora Documento Assinatura Digital Certificado Digital 94 mai-04 Criptografia Prof. Ricardo Staciarini Puttini Autoridades Certificadoras • São o equivalente eletrônico dos cartórios (notários): "terceira parte confiável" • Emitem, autenticam e gerenciam certificados digitais • Serviço contínuo, confiável, operando 24 horas por dia, 7 dias por semana, e acessíveis globalmente pelos clientes • Recursos tecnológicos – protocolos e padrões de segurança – sistema de mensagens seguro – infraestrutura adequada: instalações seguras, banco de dados, home-page – serviço de suporte ao cliente • Conjunto de práticas: – normas e procedimentos de utilização dos serviços pelos clientes – resolução de disputas mai-04 Criptografia Prof. Ricardo Staciarini Puttini Infra-Estrutura de Chave Pública Autoridade Raiz Autoridade Nomeadora Repositório CA Primária Classe 2 CA Primária Classe 3 CA Primária Classe 1 CA Classe 1 CA Classe 1 CA Classe 2 CA Classe 2 CA Classe 3 CA Classe 3 CA Subordinada Classe 2 CA Subordinada Classe 3
Compartilhar