A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa

Apresentações semelhantes


Apresentação em tema: "UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa"— Transcrição da apresentação:

1 UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/SD2006 Aula 37-38: Segurança (Parte IV – Algoritmos de Criptografia)

2 Instituto de Informática - UFG Algoritmos criptográficos ● Simétricos (chave secreta) E(K, M) = {M} K D(K, E(K, M)) = M Mesma chave para E (função de encriptação) e D (função de decriptação) M deve ser difícil (não factível) de se computar se K não for conhecida. A forma usual de ataque é por força bruta: tentar todos os valores de chave possíveis para um dado par M, {M} K. Pode-se resistir a este ataque tornando K suficientemente grande ~ 128 bits ● Assimétricos (chave pública) Chaves separadas para encriptação e decriptação: K e, K d D(K d, E(K e, M)) = M Depende do uso de uma “função trap-door” para se criar chaves. E tem alto custo computacional. Usa chaves muito grandes > 512 bits ● Protocolos Híbridos – usado em SSL (também conhecido como TLS) Usa criptografia assimétrica para transmitir a chave simétrica que é então usada para encriptar os dados transmitidos em uma sessão. * Mensagem M, chave K, funções de criptografia publicadas E, D

3 Instituto de Informática - UFG Cifras de bloco, encadeamento de cifras de bloco, e cifras de fluxo n n+3n+2n+1 XOR E(K, M) n-1n-2 n-3 plaintext blocks ciphertext blocks Figure 7.5 Cipher block chaining (CBC) XOR E(K, M) number generator n+3n+2n+1 plaintext stream ciphertext stream buffer keystream Figure 7.7 Stream cipher Cifras de bloco: operam sobre blocos de 64 bits. Cifras de bloco único: um bloco criptografado não depende dos demais Fraqueza de cifras de único bloco: padrões repetidos podem ser detectados. *

4 Instituto de Informática - UFG Algoritmos de criptografia simétricos Todos estes são programas que realizam operações de confusão e difusão sobre blocos de dados binários TEA: um algoritmo simples mas efetivo desenvolvido na U. Cambridge (1994) com finalidade de ensino e explanação de conceitos. Chave de 128 bits, 23.8 Mbytes/s. DES: Data Encryption Standard (EUA, 1977). Atualmente, não é seguro em sua forma original. Chave de 56 bits, 21.3 Mbytes/s. Triple-DES: aplica DES três vezes, com duas chaves diferentes. Chaves de 112 bits, 9.8 Mbytes/s. IDEA: International Data Encryption Algorithm (1990). Parecido com TEA. Chave de 128 bits, 18.9 Mbytes/s. AES: Advanced Encryption Standard (proposto nos EUA, 1997). Chaves de 128 (61 Mbytes/s) e 256 bits (48.2 Mbytes/s). Há muitos outros algoritmos efetivos. Veja Schneier [1996]. As taxas de dados acima foram medidas em um processador Pentium 4 2.1 Ghz. (Fonte: www.cryptopp.com) *

5 Instituto de Informática - UFG TEA: Função de encriptação void encrypt(unsigned long k[], unsigned long text[]) { unsigned long y = text[0], z = text[1]; unsigned long delta = 0x9E3779B9, sum = 0; int n; for (n= 0; n < 32; n++) { sum += delta; y += ((z > 5) + k[1]);5 z += ((y > 5) + k[3]);6 } text[0] = y; text[1] = z; } ● Linhas 5 & 6 realizam a confusão (XOR do texto deslocado) e difusão (deslocamento e troca de valor, entre y e z) * Figure 7.7 key 4 x 32 bits plaintext and result 2 x 32 Exclusive OR logical shift

6 Instituto de Informática - UFG TEA: Função de decriptação void decrypt(unsigned long k[], unsigned long text[]) { unsigned long y = text[0], z = text[1]; unsigned long delta = 0x9e3779b9, sum = delta << 5; int n; for (n= 0; n < 32; n++) { z -= ((y > 5) + k[3]); y -= ((z > 5) + k[1]); sum -= delta; } text[0] = y; text[1] = z; } Figure 7.8 *  O inverso da função de encriptação

7 Instituto de Informática - UFG TEA in use void tea(char mode, FILE *infile, FILE *outfile, unsigned long k[]) { /* mode is ’e’ for encrypt, ’d’ for decrypt, k[] is the key.*/ char ch, Text[8]; int i; while(!feof(infile)) { i = fread(Text, 1, 8, infile);/* read 8 bytes from infile into Text */ if (i <= 0) break; while (i < 8) { Text[i++] = ' ';}/* pad last block with spaces */ switch (mode) { case 'e': encrypt(k, (unsigned long*) Text); break; case 'd': decrypt(k, (unsigned long*) Text); break; } fwrite(Text, 1, 8, outfile);/* write 8 bytes from Text to outfile */ } Figure 7.9 *

8 Instituto de Informática - UFG Algoritmos de criptografia assimétricos RSA: O primeiro algoritmo prático (Rivest, Shamir and Adelman 1978) e até hoje o de uso mais freqüente. Tamanho de chave variável: 512-2048 bits. Velocidade entre 1 e 7 kbytes/s. (Processador PII 350 MHz) Curva elíptica: Um método recentemente desenvolvido, usa chaves mais curtas e mais rápidas. Algoritmos assimétricos são cerca de 1000 x mais lentos e, portanto, não são práticos para encriptação de grandes quantidades de dados, mas suas outras propriedades os tornam ideais para distribuição de chaves e para autenticação. Uma trapdoor provê uma entrada secreta para uma sala. Uma vez dentro, a saída é óbvia, mas se estiver de fora, necessita-se saber o segredo para entrar. Todos dependem do uso de funções do tipo trap-door Uma função trap-door é uma função apenas de entrada (oneway), com uma saída secreta – ex.: produto de dois números grandes; fácil de multiplicar, muito difícil (não factível) de se fatorar. * Veja a seção 7.3.2 para uma descrição e exemplo do algoritmo RSA.

9 Instituto de Informática - UFG Encriptação com RSA - 1 Para encontrar um par de chaves e, d: 1. Escolha dois números primos grandes, P e Q (cada um maior que 10 100 ), e forme: N = P * Q Z = (P–1) * (Q–1) 2. Para d escolha qualquer número que seja primo relativo com Z (isto é, tal que d não tenha fatores comuns com Z). Ilustramos as computações envolvidas usando valores pequenos para P e Q: P = 13, Q = 17 –> N = 221, Z = 192 d = 5 3.Para encontrar e resolva a equação: e * d = 1 mod Z Isto é, e x d é o menor elemento divisível por d na série Z+1, 2Z+1, 3Z+1,.... e x d = 1 mod 192 = 1, 193, 385,... 385 é divisível por d e = 385/5 = 77

10 Instituto de Informática - UFG Encriptação com RSA - 2 Para encriptar texto usando o método RSA, o plaintext é dividido em blocos iguais de tamanho k bits, onde 2 k < N (isto é, tal que o valor numérico de um bloco é sempre menor que N; em aplicações práticas, k está usualmente na faixa de 512 a 1024). k = 7, uma vez que 2 7 = 128 A função para encriptar um único bloco de plaintext M é: E'(e,N,M) = M e mod N para uma mensagem M, o texto cifrado é M 77 mod 221 A função para decriptar um bloco de texto cifrado c para produzir o bloco de plaintext original é: D'(d,N,c) = c d mod N Rivest, Shamir e Adelman provaram que E' e D' são mutuamente inversas (isto é, E'(D'(x)) = D'(E'(x)) = x) para todos os valores de P na faixa 0 ≤ P ≤ N. Os dois parâmetros e,N podem ser considerados como uma chave para a função de encriptação; similarmente d,N representam uma chave para a função de decriptação. Desta forma, podemos escrever K e = e K d =, podendo obter a função de encriptação: E(K e, M) ={M} K (a notação indica que a mensagem encriptada pode ser decriptada apenas pelo detentor da chave privada K d ) e D(K d, ={M} K ) = M.

11 Instituto de Informática - UFG Assinaturas digitais Requisito: – Autenticação de documentos armazenados e mensagens – Proteção contra assinaturas forjadas – Prevenir que o assinante repudie um documento por ele assinado (negando sua responsabilidade) A encriptação de um documento com uma chave constitui uma assinatura -impossível para outros realizarem a assinatura sem conhecimento da chave -autenticação forte de documentos -proteção forte contra falsificações -fraca contra repúdio (assinante pode dizer que a chave foi comprometida) *

12 Instituto de Informática - UFG Funções de digest seguro -O documento inteiro encriptado é uma assinatura impraticavelmente longa -sendo assim, encripta-se apenas um digest (resumo) do documento -Uma função de digest seguro computa um hash de tamanho fixo H(M) que caracteriza o documento M -H(M) deve ser: -rápido de se computar -difícil de inverter - difícil de computar M dado H(M) -difícil de derrotar em quaisquer variantes do Birthday Attack -MD5: Desenvolvido por Rivest (1992). Computa um digest de 128 bit. Taxa de 216.6 Mbytes/s. - SHA-1: (1995) baseado no MD4 de Rivest, mas tornado mais seguro através da produção de um digest de 160 bits. Taxa: 67.9 Mbytes/s - Qualquer algoritmo de criptografia assimétrico pode ser usado em CBC (cipher block chaining). O último bloco na cadeia é H(M) *

13 Instituto de Informática - UFG Assinaturas digitais com chaves públicas Assinatura h H(doc) D(K pub,{h}) h' h = h'?authentic:forged Verificação M H(M) 128 bits h E(K pri, h) {h} Kpri M signed doc M {h} Kpri *

14 Instituto de Informática - UFG MACs: Assinaturas de baixo custo com chave privada Assinatura Verificação M K M K h = h'?authentic:forged h M signed doc H(M+K) h h' H(M+K) * Assinante e verificador compartilham a chave privada K MAC: Message Authentication Code

15 Instituto de Informática - UFG Estudo de caso: O protocolo Needham - Schroeder Nos primeiros sistemas distribuídos (1974-84) era difícil proteger os servidores – Ex.: contra ataques de mascaramento sobre um servidor de arquivos – porque não havia mecanismos para autenticar a origem das requisições – criptografia de chave pública ainda não era disponível ou prática  computadores eram muito lentos para calcular funções trap-door  o Algoritmo RSA não estava disponível até 1978 Needham e Schroeder desenvolveram um protocolo de autenticação e distribuição de chaves para uso em uma rede local – Um primeiro exemplo do tipo de cuidado necessário para se projetar um algoritmo efetivamente seguro – Introduziu várias idéias de projeto, incluindo o uso de “nonces” – Baseado em um servidor de autenticação, como aquele visto anteriormente *

16 Instituto de Informática - UFG HeaderMessageNotes 1. A->S: A, B, N A A requests that S provides a key for Communication with B. 2. S->A:{N A, B, K AB, {K AB, A} K B } K A S returns a message encrypted in A’s secret key, containing a newly generated key K AB and a ‘ticket’ encrypted in B’s secret key. The nonce N A demonstrates that the message was sent in response to the preceding one. A believes that S sent the message because only S knows A’s secret key. 3. A->B: A sends the ‘ticket’ to B. 4. B->A: B decrypts the ticket and uses the new key K AB to encrypt another nonce N B. 5. A->B: A demonstrates to B that it was the sender of the previous message by returning an agreed transformation of N B. {K AB, A} K B {N B } K AB {N B - 1} K AB Ticket O protocolo de autenticação com chave secreta de Needham–Schroeder N A é um nonce. Nonces são inteiros que são adicionados a mensagens para demonstrar a originalidade da transação. Eles são geradas pelo processo remetente sempre que necessário, por exemplo incrementando um contador ou lendo o relógio do sistema (com precisão de milissegundos). * Ponto fraco: A msg 3 pode não ser “fresca” – e K AB pode ter sido comprometida enquanto armazenada no computador de A. Kerberos (a seguir) contempla isto adicionando um timestamp, ou nonce, à msg 3.

17 Instituto de Informática - UFG Estudo de caso: Kerberos – serviço de autenticação e distribuição de chaves ● Torna segura a comunicação com servidores em uma LAN – Desenvolvido no MIT nos anos 1980 para prover segurança em uma rede de campus com mais de 5000 usuários – baseado no protocolo de Needham - Schroeder ● Padronizado e agora incluído em sistemas operacionais – Internet RFC 1510, OSF DCE – BSD UNIX, Linux, Windows 2000, NT, XP, etc. – Disponível no sítio do MIT ● O servidor Kerberos cria uma chave secreta compartilhada para cada servidor que necessite de uma e a envia (encriptada) para o computador do usuário ● A senha do usuário é o segredo original compartilhado com Kerberos *

18 Instituto de Informática - UFG Server Client Do Operation Authentication database Login session setup Ticket- granting service T Kerberos Key Distribution Center Server session setup Authen- tication service A Service function Arquitetura de sistema de Kerberos 3. Request for server ticket 4. Server ticket Step B 5. Service request Request encrypted with session key Reply encrypted with session key Step C 1. A->S: A, B, N A 2. S->A:{N A, B, K AB, {K AB, A} K B } K A 3. A->B: 4. B->A: {K AB, A} K B {N B } K AB Protocolo Needham - Schroeder 5. A->B: {N B - 1} K AB Step B once per server session Step C once per server transaction * Figure 7.16 Step A once per login session 1. Request for TGS ticket 2. TGS ticket Step A TGS: Ticket-granting service

19 Instituto de Informática - UFG Kerberized NFS ● O protocolo Kerberos é muito caro para ser aplicado a cada operação do NFS ● Kerberos é usado no serviço de montagem (mount): – para autenticar a identidade do usuário – O UserID e GroupID do usuário são armazenados no servidor com o endereço IP do cliente ● Para cada requisição de arquivo: – O UserID e GroupID são enviados encriptados na chave de sessão compartilhada (ao invés e encriptar a requisição e a resposta) – O UserID e GroupID devem ser iguais àqueles armazenados no servidor – Os endereços IP também devem ser idênticos ● Esta abordagem tem alguns problemas – não consegue acomodar múltiplos usuários compartilhando o mesmo computador cliente (Por que?) – todos os sistemas de arquivos remotos devem ser montados a cada login do usuário (pois é o único ponto onde a autenticação é feita) *

20 Instituto de Informática - UFG Estuto de caso: Secure Socket Layer (SSL) ● Distribuição de chaves e canais seguros para comércio na Internet – Protocolo híbrido; depende de criptografia de chave pública – Originalmente desenvolvido pela Netscape Corporation (1994) – Estendido e adotado como um padrão da Internet com o nome de Transport Level Security (TLS) – Provê segurança em todos os servidores Web e navegadores e em versões seguras de Telnet, FTP e outras aplicações de rede ● Requisitos de projeto – Comunicação segura sem negociação de chaves ou ajuda de terceiros – Escolha livre dos algoritmos de criptografia por clientes e servidores – A comunicação em cada direção pode ser autenticada e/ou encriptada

21 Instituto de Informática - UFG A pilha de protocolos SSL SSL Handshake protocol SSL Change Cipher Spec SSL Alert Protocol Transport layer (usually TCP) Network layer (usually IP) SSL Record Protocol HTTPTelnet SSL protocols:Other protocols: * negotiates cipher suite, exchanges certificates and key masters changes the secure channel to a new spec implements the secure channel

22 Instituto de Informática - UFG Client A Server B ClientHello ServerHello SSL handshake protocol Estabelece a versão do protocolo, o ID da sessão, cipher suite, método de compressão, troca de valores de inicialização aleatórios Certificate Certificate Request ServerHelloDone Envia o certificado do servidor e requisita o certificado do cliente (opcional) Certificate Certificate Verify Envia resposta com o certificado do cliente se requisitado Change Cipher Spec Finished Change Cipher Spec Finished Muda a cipher suite e finaliza o handshake * Inclui a troca da chave mestra. A chave mestra é usada por A e B para gerar: 2 chaves de sessão2 chaves MAC K AB M AB K BA M BA ComponenteDescriçãoExemplo Método de troca de chaves o método a ser usado para troca da chave de sessão RSA com certificados de chave pública Cifra para transf. de dados a cifra de bloco ou stream a ser usada para dados IDEA Fução de digest de mensagens para criação de códigos de autenticação de msgs. (MACs) SHA Cipher suite

23 Instituto de Informática - UFG SSL: opções de configuração do handshake * ComponenteDescriçãoExemplo Método de troca de chaves o método a ser usado para troca da chave de sessão RSA com certificados de chave pública Cifra para transf. de dados a cifra de bloco ou stream a ser usada para dados IDEA Fução para digest de mensagens para criação de códigos de autenticação de msgs. (MACs) SHA

24 Instituto de Informática - UFG SSL record protocol Application data abcdefghi abcdefghi Record protocol units Fragment/combine Compressed units Compress MAC Hash Encrypted Encrypt TCP packet Transmit *

25 Instituto de Informática - UFG Sumário ● É essencial proteger contra ataques os recursos, canais de comunicação e as interfaces de sistemas e aplicações distribuídos. ● Isto é obtido com o uso de mecanismos de controle de acesso e canais seguros. ● Criptografia de chave pública e secreta provê a base para autenticação e comunicação segura. ● Kerberos e SSL são componentes de sistema largamente utilizados que oferecem suporte a comunicação segura e autenticada. *

26 Instituto de Informática - UFG Suposições de pior caso e linhas mestras para o projeto ● As interfaces são expostas ● As redes são inseguras  Limitar o tempo de vida e o escopo de cada segredo ● Os algoritmos e código de programa são disponíveis aos intrusos ● Os intrusos podem ter acesso a vastos recursos  Minimizar a base de confiança

27 Instituto de Informática - UFG From Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4 © Pearson Education 2005


Carregar ppt "UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Ciência da Computação 2o. Semestre / 2006 Prof. Fábio M. Costa"

Apresentações semelhantes


Anúncios Google