Conceitos básicos de criptografia

Documentos relacionados
Criptografia. Conceitos básicos de criptografia. Criptografia Conceitos. Criptografia Segurança Total vs Prática

Conceitos básicos de criptografia

Conceitos básicos de criptografia

Autorização. Controlo de direitos de acesso

Criptografia. Conceitos básicos de criptografia. Criptografia Conceitos. Criptografia Segurança Total vs Prática

Conceitos básicos de criptografia

Segurança de Sistemas de Informação

Sistemas e Plataformas Seguras

Segurança Informática em Redes e Sistemas

Segurança conceitos básicos. Sistemas Distribuídos

Capítulo 8. Segurança de redes

Mecanismos Criptográficos Esquemas

Segurança de Sistemas de Informação

Integridade. Segurança Engenharia de Software Ricardo Couto A. da Rocha

Engloba os criptossistemas clássicos. Outros nomes: (Criptografia...)

INE5680 SEGURANÇA DA INFORMAÇÃO E DE REDES Prova 1 04/10/2013 Turmas A e B Prova A NOME : MATRÍCULA :

Segurança Sistemas Distribuídos. junho de 2017

Tópicos de Ambiente Web Segurança

Entendendo a criptografia e como ela pode ser usada na prática. Italo Valcy Universidade Federal da Bahia CERT.

Desenvolvimento de Aplicações Distribuídas

Segurança da Informação Aula 7 Assinaturas Digitais e HASH.

Prof. M.Sc. Charles Christian Miers

Nome: Nº de aluno: Exame 1ª chamada (perguntas impar) / Repescagem 1º teste / Repescagem 2º teste SRC /07/04 1º teste

Segurança em Sistemas Informáticos

Autenticação por par de. chaves assimétricas. Bruno Follmann

Exercícios de Revisão Redes de Computadores Edgard Jamhour. TLS/SSL, VPN PPTP e IPsec

SEGURANÇA CRIPTOGRAFIA E SEGURANÇA DE DADOS. As funções de cifra são consideradas totalmente seguras se:

Número: Nome: Página 1 de 8

Criptografia. Aula 4: Autenticação de mensagens e canais seguros. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Redes de Computadores

Criptografia Simétrica e Assimétrica, Hash, e Assinatura Digital

Auxilio a Resolução da Lista de Exercícios

4 ÍNDICE Exemplo de redundância e distância de unicidade... 41

Segurança e Auditoria de Sistemas. Confiança Mútua Assinatura Digital Certificado Digital

Criptografia Assimétrica e Funções de Síntese

AULA 08 CRIPTOGRAFIA E SEGURANÇA DE DADOS CRIPTOGRAFIA ASSIMÉTRICA CHAVES E ALGORITMOS 03/03/2016 PROF. FABIANO TAGUCHI

M3D4 - Certificados Digitais Aula 2 Certificado Digital e suas aplicações

Gestão de chaves assimétricas

Segurança da Informação Aula 6 Principais Algoritmos Simétricos. Criptografia Assimétrica.

PLANO DE DISCIPLINA DISCIPLINA: Segurança da Informação

Exercícios de Revisão Redes de Computadores Edgard Jamhour. SSL, VPN PPTP e IPsec

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Criptografia, VPN, IPsec Protocolos de Roteamento

Técnicas de criptografia. Funções Hash Criptografia com chave secreta Criptografia com chave pública Assinatura digital Protocolos

Codificação de Informação 2010/2011

NOÇÕES DE INFORMÁTICA. Segurança da Informação Certificação Digital Parte 1

Resumo. Segurança em Redes de Computadores 04/08/2017. Capítulo 7 Segurança WEB. Considerações de Segurança WEB Ameaças

Segurança em Redes de Computadores

Segurança em Redes Aula 7 Luiz Fernando Rust INMETRO Tel. (021)

Execícios de Revisão Redes e Sistemas Distribuídos II Edgard Jamhour. Filtros de Pacotes Criptografia, Certificados Digitais VPN

Exemplo da (in)segurança de um site sem HTTPS

Resumo Segurança em Redes de Computadores

Segurança em Redes de Computadores

PTC Aula 20. (Kurose, p ) (Peterson, p ) 14/06/ Princípios de criptografia

Segurança da Informação Aula 8 Certificação Digital

Segurança em Redes de Computadores

Criptografia Assimétrica. Jiyan Yari

Geração de um certificado SSL (Secure Socket Layer) em RV120W e em RV220W

Criptografia Aplicada LESI / LMCC

Segurança em Redes - 3

PTC Aula Autenticação do ponto final 5.5 Exemplo de aplicação: tornando o seguro. (Kurose, p ) (Peterson, p.

AULA 08 CRIPTOGRAFIA E SEGURANÇA DE DADOS CRIPTOGRAFIA ASSIMÉTRICA CHAVES E ALGORITMOS 23/04/2016 PROF. FABIANO TAGUCHI

Implementação de Protocolos Criptográficos. Manuel DI Universidade do Minho Setembro de

Gestão de chaves assimétricas

Resumo. Segurança em Redes de Computadores. Autenticação. Preocupações de segurança 14/07/2017. Capítulo 4 Aplicações de Autenticação

Modelos para Autenticação e. Mecanismos para Autenticação

Segurança em Sistemas Operacionais

Segurança e Auditoria de Sistemas. Professor Emiliano S. Monteiro

Antivirus Antimalware

Abordagens para a. Distribuição de Chaves

Agenda. Criptografia e Segurança Certificado Digital Assinatura Digital

Informática. Segurança da Informação

Criptografia. Criptografia de Chave Pública. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Criptografia. Criptografia de Chave Pública. Manuel Barbosa (mbb at dcc.fc.up.pt) 2018/2019

Segurança de aplicação - S/MIME

Segurança de aplicação - S/MIME. Jaime Dias FEUP > DEEC > MRSC > Segurança em Sistemas e Redes v1

Campos de estudo Algoritmos Aplicações e praticas de privacidade

quem utiliza esse processo para envio de s, por exemplo, está bem protegido de fraudes.

Virtual Private Network (VPN)

Sistemas Operacionais II

LEIC/LERC 2010/11 2º Teste de Sistemas Distribuídos

Protocolo Kerberos. JML

Transcrição:

Conceitos básicos de criptografia Sistemas Distribuídos 2012/13 sem1

Cryptex: Invenção de Leonardo Da Vinci Departamento de Engenharia Informática

Criptografia A base da criptografia é conseguir que um grupo de pessoas transmita informação entre elas que seja ininteligível para todas as outras Uma solução: ter um dialecto próprio não é escalável, nem seguro. Melhor solução: algoritmo que cifra a informação que é conhecido e uma chave que parametriza o algoritmo, Algoritmo público, chave é segredo Análogo às fechaduras físicas...

Criptografia - Conceitos Objectivo: criar algoritmos em que um atacante a partir de informação cifrada tenha uma probabilidade muito reduzida de deduzir a chave em tempo útil É vulgar distinguir entre vários graus de dificuldade no ataque ao mecanismo de cifra. A partir exclusivamente de mensagens cifradas mais difícil A partir de amostras de um texto em claro e cifrado a partir de qualquer texto original e do correspondente cifrado mais fácil

Criptografia Segurança Total vs Prática As funções de cifra são consideradas totalmente seguras se: independentemente do tempo e do poder computacional envolvido, a chave não puder ser descoberta. Normalmente são praticamente seguras o valor da informação não justifica o investimento computacional (em máquinas especiais) temporalmente limitada a sua validade e muito inferior ao tempo necessário para decifrá-la com a tecnologia existente.

Criptografia Conceitos Departamento de Engenharia Informática Algoritmo de cifra Função injectivas Parametrizadas por uma chave Algoritmo de decifra As cifras são reversíveis apenas por quem possuir o algoritmo inverso Parametrizado por chave inversa Nomenclatura M à {M} K1 : cifra da mensagem M com a chave K1 é gerado um criptograma

Comunicação Cifrada (Modelo) {P} K

Criptografia - Conceitos Admitindo que o algoritmo de cifra não permite ataques simples a forma de tentar obter a informação é por teste sistemático das chaves ataque de força bruta (brute force) A dimensão da chave é decisiva uma chave de pequena dimensão pode ser facilmente encontrada por teste sistemático

Criptografia: Classificação das cifras Departamento de Engenharia Informática Segundo as chaves Simétricas (ou de chave secreta) A chave que permite decifrar é igual à que permite cifrar Só os interlocutores legítimos a conhecem Assimétricas (ou de chave pública) Usam-se pares de chaves relacionadas: Privada (apenas conhecida por uma entidade) Pública (conhecida por todos)

Criptografia: Aspectos operacionais Cifras simétricas Normalmente usam técnicas de substituição e difusão São normalmente muito mais rápidas que as assimétricas Cifras assimétricas Normalmente usam operações matemáticas A sua segurança baseia-se na complexidade de certas operações matemáticas Logaritmo modular Y = a X mod b; Dados a, b e Y, calcular X Factorização de grandes números Y = ab, a e b primos; Dado Y, calcular a ou b

Criptografia Simétrica Departamento de Engenharia Informática

Cifra simétrica Substituição Mono-alfabética Poli-alfabética Exemplo Mono-alfabético Chave troia Problema? ABCDEFGHIJLMNOPQRSTUVXZ TROIABCDEFGHJLMNPQSUVXZ

Transcrição do livro O Codex 632 Departamento de Engenharia Informática

Cifra Simétrica Poli-alfabético Procura que as distribuições sejam combinadas de forma a que não existam caracteres que sejam mais frequentes Exemplos: Enigma (WWII) Tabelas de Vigenère

Sistemas Distribuídos 2010/11 Departamento de Engenharia Informática

Exemplo de Cifra com a Tabela de Vigenère Vamos, supor que se pretende cifrar uma mensagem em claro (plaintext) : ATTACKATDAWN O cifrador escolhe a chave e repete-a até que tenha o tamanho da mensagem Vamos usar "LEMON": LEMONLEMONLE A primeira letra da mensagem, A, é cifrada usando o alfabeto na linha L, que é a primeira letra da chave. Na tabela de Vigenère corresponde à linha L e à coluna A. Da mesma forma para a segunda letra da mensagem: a linha E e a coluna T resulta X. A restante mensagem é cifrada da mesma forma Mensagem: ATTACKATDAWN Chave: LEMONLEMONLE Mensagem Cifrada LXFOPVEFRNHR

One-time pads Substituição poli-alfabética Chave de grande dimensão não repetida O emissor usa a parte da chave que necessita para cifrar a mensagem e o receptor usa a mesma parte da chave estando ambos sincronizados sobre que parte já utilizaram Totalmente seguro, mas... como distribuir a chave? Uma aproximação a one-time pads nos computadores são geradores de números aleatórios Que funcionam a partir de chave (limitada) distribuída inicialmente

Exemplo de cifra simétrica: TEA Algoritmo académico, pouco usado na prática Muito simples Razoavelmente rápido

Exemplo de cifra simétrica: TEA void encrypt(unsigned long k[], unsigned long text[]) { unsigned long y = text[0], z = text[1]; 1 unsigned long delta = 0x9e3779b9, sum = 0; int n; 2 for (n= 0; n < 32; n++) { 3 sum += delta; 4 y += ((z << 4) + k[0]) ^ (z+sum) ^ ((z >> 5) + k[1]); 5 z += ((y << 4) + k[2]) ^ (y+sum) ^ ((y >> 5) + k[3]); 6 } text[0] = y; text[1] = z; 7 } 32 etapas. Técnicas base: shift de bits, XOR, soma, dependentes da chave k

Exemplo de cifra simétrica: TEA 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 << 4) + k[2]) ^ (y + sum) ^ ((y >> 5) + k[3]); y -= ((z << 4) + k[0]) ^ (z + sum) ^ ((z >> 5) + k[1]); sum -= delta; } text[0] = y; text[1] = z; }

Data Encription Standard - DES 1970 - O National Bureau of Standards (NBS) dos EUA reconheceu a necessidade de um algoritmo padrão para cifra na sociedade civil 1972 O NBS abriu um concurso para uma novo algoritmo que devia ter várias características, entre elas: Alto nível de segurança Completamente especificado e fácil de perceber O algoritmo devia ser público, a sua segurança não vinha de ser secreto Adaptável a diversas utilizações Fácil de realizar em dispositivos electrónico 1974 - Os primeiros resultados foram desencorajadores e houve um segundo concurso Desta vez foi considerada aceitável a proposta do algoritmo de cifra Lucifer desenvolvido pela IBM 1976 depois de análise pelo DoD em particular pela NSA foi aceite como standard nos EUA

Data Encription Standard - DES Blocos de 64 bits Aplica funções de permutação e substituição a cada bloco 16 etapas e duas permutações totais Chave de 56 bits, desdobrada em chaves de 48 bits para cada etapa Pode ser realizado em software ou em hardware

Ri K (56) Algoritmo do DES Substituição, Permutação, Compressão e Expansão E + P ß [i] ß [i] C + P Entrada 64 bit Permutação Chave de 56 bit S-Box i P-box Detalhes das funções e das etapas são conhecidos. Etapa 1 48-bit k1 Li - l Ri - l Etapa 2 48-bit k2 Li - l F ( Ri - l, Ki) Etapa 16 64 bit saída Permutação 48-bit k16 A chave de 56 bits é usada para criar as chaves de 48 bits utilizadas em cada etapa 32 bits 32 bits Li Ri

Chave do DES Só há registos de quebra por teste sistemático da chave Desde a sua publicação que a chave de 56 bits é considerada insuficiente, permitindo que o sistema seja alvo de ataques sistemáticos. Com o rápido aumento do desempenho das máquinas, esta questão torna-se cada vez mais preocupante. [Kaufman95] considera que as chaves deveriam crescer 1 bit cada dois anos. Se admitirmos que 56 bits era adequado em 79, este valor deveria ser 64 em 93 e 128 em 2121.

Chave do DES Em 2006 um computador dedicado designado de COPACOBANA construído por $10,000 quebrou o DES com ataques de força bruta em 8,7 dias Em 2009 conseguia-se o mesmo em apenas 6 dias.

DES Triplo - O DES Triplo permite usar 3 chaves diferentes (K1, K2 e K3), resultando numa chave equivalente de 168 bits. Porquê EDE em vez de EEE?

DES Triplo - Com 3 chaves de 56 bits diferentes, DES triplo consegue segurança efectiva de 112 bits (< 168 bits)

Algoritmos de Cifra Simétrica DES Triple DES RC4 RC5 IDEA Blowfish AES Advanced Encription Standard norma dos EUA com chaves de 128, 196 e 256 bits

Criptografia Assimétrica Departamento de Engenharia Informática

Algoritmos de cifra assimétrica Diffie Hellman RSA DSS baseado ElGamal Curvas elípticas

RSA - Rivest Shamir Adleman Algoritmo de cifra de chave pública mais divulgado Patente expirou recentemente Enquanto era válida, os autores permitiram aos browsers utilizar o algoritmo sem pagar desde que reconhecessem a sua empresa (VeriSign) como autoridade para gerar certificados

Fundamento do RSA P,Q números primos da ordem de 10 100 N = P*Q Z = (P-1)*(Q-1) Kp e Ks são coprimos com Z tais que Kp*Ks = 1 mod Z

Exemplo do cálculo das Chaves 1- Escolhem-se dois números primos P e Q e calcula-se N e Z, Vamos supor P = 13, Q = 17: N = P * Q = 13 x 17 = 221 Z = (P - 1)*(Q - 1) = 12 x 16 = 192 2 - A chave K p é um número co-primo com Z. Neste caso, Z = 2*2*2*2*2*2*3, pelo que podemos escolher K p = 5 3 - Para calcular K s é necessário resolver a equação K p * K s = 1 mod Z, K s *5= 1 mod 192 K s * 5 = 1, 193, 385, K s = 385:5 = 77

Chaves São trocados N e Kp que constituem a chave pública N e Ks são a chave privada

Cifra/Decifra em RSA Cifra por blocos de dimensão k, em que 2 k < N No nosso exemplo, k=7 Para cifrar mensagem em claro M: {M} Kp = M Kp mod N Para decifrar mensagem cifrada C: {C} Ks = C Ks mod N

Quebrar a chave privada sabendo a chave pública? Se atacante sabe Kp e N, como consegue descobrir a chave privada? Para saber Ks é preciso saber Z (ver slides de geração de chaves) Para saber Z é preciso saber os dois números primos P e Q tal que PxQ=N Este problema é considerado demasiado difícil Se N > 10 100, demora cerca de um milhão de anos com melhores algoritmos actuais

Segurança do RSA Actualmente, chaves são normalmente de 1024-2048 bits Recomendação é de 2048 bits, pelo menos Chaves de 256 bits quebradas em poucas horas com PC Em 1999, chave de 512 bits foi quebrada por sistema distribuído de centenas de computadores Alguns peritos acreditam que 1024 bits será quebrável a curtoprazo Computador quântico (se algum dia vier a existir) quebra chave RSA facilmente (tempo polinomial) Usando Algoritmo de Shor

Considerações genéricas sobre utilização de algoritmos de criptografia

Métodos genéricos de ataque a funções de cifra Departamento de Engenharia Informática Dependem de em que situação o atacante está a) Só tem acesso a mensagens cifradas b) Tem acesso a amostras de um texto em claro e cifrado c) A partir de qualquer texto original, pode gerar o cifrado Nos dois últimos, ataque exaustivo (brute-force) é sempre possível Atacante itera todas as chaves possíveis até que cifra do texto original resulte no cifrado Em c), caso a mensagem cifrada seja pequena, é também possível o chosen plaintext attack Quando mensagem cifrada C é pequena, itera-se todas as mensagens M até se obter C Em qual se encontra cifra assimétrica? Como prevenir? Como prevenir?

Cifra híbrida (ou mista) Os algoritmos de cifra assimétrica são computacionalmente mais complexos que cifra simétrica 100 a 1000 vezes mais lentos Mas a distribuição da chave pública é mais prática que a chave secreta Como conseguir o melhor dos dois mundos? Cifras híbridas Gera-se chave secreta, chamada chave de sessão Usa-se cifra assimétrica para trocar apenas uma chave secreta Usa-se cifra simétrica e a chave secreta para os restantes dados

Criptografia: Classificação das cifras Departamento de Engenharia Informática Segundo o modelo de operação Por blocos (todas as que vimos até agora excepto One-time Pad) Facilita a análise P EK C DK P Contínuas e stream cipher Cifra de um bloco depende dos blocos anteriores Necessita mecanismo de inicialização

Por Blocos versus Contínuas: Exemplo Original Cifra Por Bloco Cifra Contínua Fonte: Wikipedia

Modos de cifra Inicialmente apresentados para o DES ECB (Electronic Code Book) CBC (Cipher Block Chaining) Stream Cipher Podem ser usados por outras cifras por blocos

Modos de cifra: ECB vs CBC CBC também pode ser usado com cifra assimétrica Electronic Code Book C i = E K (T i ) T i = D K (C i ) Cipher Block Chaining C i = E K (T i C i-1 ) T i = D K (C i ) C i-1 Se C i se perde na rede, consegue decifrar C i+1? T 1 T 2 T n T 1 T 2 T n-1 T n E K E K E K E K IV E K E K E K E K E K C 1 C 2 C n C 1 C 2 C n-1 C n D K D K D K D K IV D K D K D K D K D K T 1 T 2 T n T 1 T 2 T n-1 T n

CBC (outra maneira de o entender) plaintext blocks n+3 n+2 n+1 XOR E(K, M) ciphertext blocks n-3 n-2 n-1 n

Modos de cifra: Stream Cipher Departamento de Engenharia Informática Semelhança com outro algoritmo de Cifra? keystream number generator n+3 n+2 n+1 E(K, M) buffer XOR plaintext stream ciphertext stream Stream Cipher não pode ser usado com cifra assimétrica. Porquê?

Representação de dados binários em texto Codificação de base 64 Usa um sub-conjunto de 64 caracteres do ASCII que são os caracteres mais "universais", ou seja, caracteres que são iguais em practicamente todos os códigos: A-Z, a-z, 0-9, +, / Caracter = usado no final para identificar quantidade de padding requerido Aumenta tamanho do conteúdo. Qual o overhead?

Assinatura Digital Autenticação e Integridade da Informação

Assinaturas digitais Identificar inequivocamente o autor de um texto (autenticidade) Impedir alterações do texto (integridade) Impedir que o autor repudie o conteúdo a posteriori (não-repudiação) As assinaturas não fazem sentido isoladas; só junto do texto a que se referem

Assinatura Digital M signed doc Signing H(M) h E(K pri, h) {h} Kpri 128 bits M {h} Kpri D(K pub,{h}) h' Verifying M h = h'? H(doc) h

Assinaturas digitais Técnica base de Autenticação Assinatura de T por A {T} Kprivada A Validação da assinatura: T == {assinatura} Kpública A Como é evidente, o sistema de cifra tem de ser de chave assimétrica senão não havia possibilidade de garantir que a assinatura não era forjada Problemas?

Funções de Resumo ou Dispersão (Digest/Hash) Função H que recebe um texto (possivelmente longo) e devolve uma sequência de bits de comprimento fixo (e.g., 160 bits) Propriedades: Eficiente dado P é fácil calcular H(P) Não-invertível dado H(P) é difícil determinar P tal que H(P ) = H(P) Difícil encontrar P1, P2 tais que H(P1) = H(P2) Esta situação é chamada uma colisão

Porque é que deve ser difícil encontrar colisões? Se não, seria fácil forjar assinaturas digitais. Como?

Paradoxo do Aniversário Quantas operações são necessárias para encontrar uma colisão num resumo de m bits? Qual a probabilidade de duas pessoas na aula terem o mesmo aniv.? Para n>=23, p>50% Numero de pares de aniversários = C(23,2) = 22 * 23 / 2 = 253 pares Resposta à pergunta inicial: 2 m/2 (muito menos do que 2 m )

Funções de Hash não invertíveis As funções de hash não invertíveis têm como objectivo criar um resumo único semelhante a uma impressão digital de um conteúdo digital muito mais extenso As funções produzem um resumo de algumas dezenas de bytes a partir dos dados originais São não invertíveis porque é computacionalmente impossível reconstruir o conteúdo original a partir do resumo. A probabilidade de colisão (dois textos diferentes produzirem a mesma assinatura) deve ser mínima. Mudanças pequenas no texto devem produzir resumo muito diferentes (valores de hash estão distribuídos uniformemente)

Funções Resumo (Digest) A função MD5 [Rivest92]. A informação é processada em blocos de 512 bits (16 palavras de 32 bits) e o valor do resumo é uma palavra de 128 bits. Em cada etapa é calculado um novo valor de resumo baseado no valor anterior e no bloco seguinte de 512 bits da mensagem. A função SHA-1: resumo de 160 bits A mais recente função SHA-2 produz um resumo de 256 a 516 bits Message I need a raise of $10,000. I need a raise of $100,000. I need a raise of $1,000,000. MD5 Digest 9i5nud5r2a9idskjs2tbuop2ildax 8m4ikijuelaidsfg8asyfnasdfgll 4M9i2t8c7h4361712t1h4e1d1otg7

MACs: Assinaturas low-cost Funções de hash muito mais rápidas que as funções de cifra Interessante ter método semelhante a assinatura digital que não implicasse cifra Como? Assumindo que interlocutores partilham segredo K é possível Por exemplo, K pode ser chave de sessão em cifra híbrida

MACs: Assinaturas low-cost M signed doc Signing H(M+K) h M K M h Verifying h = h'? K H(M+K) h'

MACs: Discussão Quem pode validar mensagens assinadas? Que requisitos são assegurados? Autenticidade e Integridade apenas

MAC (Código de autenticação de mensagem) Emissor envia <m, HMAC(m)> Receptor calcula HMAC da mensagem recebida, e compara com HMAC recebido Se são iguais, há garantia de integridade e que foi produzida pelo (outro) detentor de K AB Propriedade das assinaturas digitais não oferecida? Porquê?

Distribuição e gestão de chaves Departamento de Engenharia Informática

Distribuição e gestão de chaves Distribuição das chaves é problema de difícil resolução Cifras simétricas Há que divulgar um valor secreto a universos limitados de interlocutores legítimos Que o devem manter secreto Cifras assimétricas Há que garantir que a chave privada apenas é conhecida pela entidade a que pertence Há que garantir que a chave pública é verdadeira e que não foi modificada para induzir um agente a trocar informação com um atacante Ataque man in the middle Autoridades de certificação

Diffie-Hellman O objectivo deste protocolo é criar uma chave simétrica a partir da troca de valores em claro entre os dois interlocutores O algoritmo baseia-se na dificuldade computacional de efectuar logaritmos de grandes números.

Diffie-Hellman 1. A e B escolhem números primos de 512 bits n e g e trocam-nos abertamente na rede. 2. Cada um escolhe agora aleatoriamente um número de 512 bits e mantém-no secreto (designemo-los por x e y). Calculam respectivamente: 1. TA = g x mod n 2. TB = g y mod n 3. TA e TB são trocados entre os dois interlocutores. 4. A calcula TB x mod n e B calcula TA y mod n. 5. Estes valores são a chave secreta a utilizar pelos interlocutores. Os valores são idênticos, porque: TB x mod n = (g y ) x mod n = g x.y mod n = (g x ) y mod n = TA y mod n Propriedade de aritmética modular

Man-in-the-Middle Departamento de Engenharia Informática

Certificados de chaves públicas Validação de assinaturas digitais Sensível à correcção das chaves públicas respectivas Têm de ser as correctas Têm que estar ainda em uso Certificados de chaves públicas Documento que associa uma chave pública a: Um dono (nome, e-mail, etc.) Datas (de emissão, de validade) Outra informação assinado por uma autoridade de certificação Institucional ou não A norma X.509 é a mais utilizada para formato de certificados

Formato do Certificado X509 Subject Distinguished Name, Public Key Issuer Distinguished Name, Signature Period of validity Not Before Date, Not After Date Administrative information Version, Serial Number Extended information

Autoridades de certificação: Sistemas ad-hoc ou hierárquicos Departamento de Engenharia Informática Certificação ad-hoc Cada utilizador escolhe em quem confia como autoridade de certificação (ex. PGP) Certificação hierárquica Existe uma hierarquia de certificação (institucional) Árvore de Certification Authorities (CAs) Cada CA emite certificados de chave publica assinados com a chave privada da CA Cuja chave publica correspondente é distribuída em certificados assinados pela CA acima na hierarquia A chave pública da raiz é bem conhecida (configurada manualmente, e.g., os browsers reconhecem a VeriSign) Funções de uma CA Emissão e distribuição de certificados Gestão e distribuição de listas de certificados revogados

Public Key Infrastructure (PKI) Infra-estrutura de apoio ao sistema de Chavespúblicas Criação segura de pares de chaves assimétricas Criação e distribuição de certificados de chavespúblicas Definição e uso das cadeias de certificação Actualização, publicação e consulta da lista de certificados revogados Revogação de certificados: qual o compromisso?

Funcionamento PKI Sistemas Distribuídos 2010/11

Autorização Departamento de Engenharia Informática

Controlo de direitos de acesso Modelo conceptual Os objectos são protegidos por um monitor de controlo de referências Cada agente, antes de poder efectuar um acção sobre um objecto, tem que pedir autorização ao monitor O monitor verifica se o agente está ou não autorizado através de uma matriz de direitos acesso

Controlo dos Direitos de Acesso Um Monitor de Controlo de Referências valida quando uma operação é efectuada se o agente tem direito de a executar. Os objectos só podem ser acedidos através do monitor de controlo de referências; Os objectos têm de ser univocamente identificados e o identificador não pode ser reutilizado sem precauções adicionais. Num sistema multiprogramado a informação relativa à matriz é mantida dentro do espaço de isolamento do núcleo. Esta situação é, obviamente, diferente numa rede Os ataques a esta política visam essencialmente subverter o isolamento entre os agentes mais que procurar alterar a matriz ou eliminar o controlo do monitor de controlo de referências.

Matriz de direitos de acesso Objectos Agentes O1 O2 O3 O4 A1 R RW RX --- A2 RX --- RW R Decomposição da tabela Listas de controlo de acesso (Access Control Lists, ACLs) Guardadas junto de cada objecto Capacidades (capabilities) Guardadas junto de cada agente A autenticação dos agentes é fulcral Para determinar a parcela da ACL que lhe é aplicável Para distribuir as capacidades correctas

ACLs vs Capacidades Capacidades permitem descentralizar autorização Servidor analisa a capacidade enviada no pedido para determinar se cliente tem direito ao que pede Não é necessário contactar nenhuma entidade centralizada que armazena ACLs Também suportam delegação facilmente Capacidade análoga a uma chave do mundo real E tem limitações análogas: Pode ser roubada Revogar acesso a alguém que tem a chave é difícil Como lidar com isto?

Autenticação Departamento de Engenharia Informática

Autenticação A autenticação baseia-se sempre em o sistema apresentar um desafio que o agente deve saber responder. O desafio pode ser: Fornecer um informação que deve ser secreta, Senha Apresentar um identificador físico Cartão, Chave física Fornecer informação biométrica Impressões digitais, estrutura da íris

Autenticação em sistemas distribuídos: Aproximações Uso do mecanismo local de autenticação Autenticação por cada ligação TCP/IP telnet, ftp, http Envio em claro de pares (nome, senha)

Protocolo Simples de Autenticação 1) C ->S: Iniciar Sessão 2) S ->C: D 3) C ->S: {D} Kcs O segredo neste caso é a chave K cs O protocolo tem vários problemas: Não é recíproco, só autentica o cliente; O valor de D tem de variar senão pode ser reutilizado; É necessário estabelecer a chave secreta entre o cliente e o servidor.

Protocolo de Needham-Schroeder criptografia simétrica C S S aut C, S, N c C S K cs {N c,s, K cs, {K cs, C} Ks } Kc S aut S aut K c K s C {K cs, C} Ks {N s } Kcs S {N s -1} Kcs Pode ser alvo de Replay Attack se atacante descobrir K CS e enviar esta mensagem para S

Autenticação : Kerberos (Simplificado) C login C, S, n {K c,s, n} Kc, ticket c,s S aut C S C S S aut K c,s S aut K c K S Timestamps reais para evitar reutilização de tickets antigos (implica relógios sincronizados) ticket c,s, auth c,s, pedido, T req ticket x,y = {x, y, T 1, T 2, K x,y } Ky acesso a S {T req, resposta} Kc,s S auth x,y = {x, T req } Kx,y Autenticador: e evita re-envio de pedidos antigos (implica relógios sincronizados)

Arquitectura Kerberos (completo) Kerberos Key Distribution Centre Step A 1. Request for TGS ticket Authentication service A Authentication database Ticketgranting service T 2. TGS ticket Client C Login session setup Server session setup DoOperation Step B 3. Request for server ticket 4. Server ticket Step C 5. Service request Request encrypted with session key Reply encrypted with session key Service function Server S

Autenticação : Kerberos (V5) C login C, TGS, n {K c,tgs, n } Kc, ticket c,tgs S aut C S C S TGS S aut K c,s pedido de acesso a S ticket c,tgs, auth c,tgs, S, n2 {K c,s, n2 } Kc,tgs, ticket c,s TGS TGS K c,tgs K s S aut K c K tgs acesso a S ticket c,s, auth c,s, pedido, T req {T req, resposta} Kc,s S ticket x,y = {x, y, T 1, T 2, K x,y } Porquê a separação Ky Saut/TGS? auth x,y = {x, T req } Kx,y

Kerberos Escalabilidade Subdivisão em realms Cada realm possui um Saut e um TGS Um realm pode aceitar autenticações feitas por outro Exploração Segurança física dos servidores e das respectivas BDs Saut e TGS Relógios sincronizados Para validar tickets e authenticators

Protocolo de Needham-Schroeder-Lowe criptografia assimétrica C, S {K ps, S} K s Saut S aut { N C, C } K PS C S,C {N C, N S, S} K PC S aut {K pc, C} K s Saut S {N S } K PS

Canal de Comunicação Seguro Departamento de Engenharia Informática

Canais de comunicação seguros: Funcionalidade Departamento de Engenharia Informática Privacidade Dos dados Cifra dos dados enviados Dos fluxos de informação Integridade Das mensagens Adição de valores de controlo não forjáveis Dos fluxos de mensagens Contextos de cifra e/ou controlo Autenticidade Dos interlocutores Cifra de valores pré-combinados e frescos Com uma chave secreta partilhada por emissor e receptor Com a chave privada do emissor Não Repudiação Autorização

Argumento extremo-a-extremo (End-to-end principle) Departamento de Engenharia Informática As funcionalidades dos protocolos de comunicação devem ser implementadas pelos extremos do canal de comunicação (sempre que possível), pois Ao implementar nos níveis mais baixos, obrigam todos os canais a pagar o seu custo, mesmo que não queiram Evitam redundâncias, quando as funcionalidades têm de ser repetidas extremo-a-extremo Princípio de desenho do IP

Nível de Protocolo Nível de protocolo onde realizar o canal seguro Ligação de dados Podia ser eficientemente implementado no hardware do controlador de rede. Não evita o ataque aos comutadores Rede ex.: IPsec para Virtual Private Networks Não vai até ao nível do transporte Interfaces de Transporte Sockets - ex.: SSL Aplicação : ex.: HTTPS, SSH, PGP, PEM, SET, Handlers dos Web Services

Exemplo: Canal seguro e os RPC Se a cifra para garantir o canal seguro for efectuada antes dos stubs perde-se a sua capacidade de tratar a heterogeneidade Uma grande vantagem dos sistemas de RPC é tratar a heterogeneidade automaticamente nas funções de adaptação - stub A cifra tem de ser feita depois Mas convém que seja dentro do mecanismo de RPC para garantir segurança de extremo a extremo, O RPC pode ser baseado num canal SSL mas há limitações importantes Se a mensagem SOAP tiver intermediários estes têm de receber parte da informação mas não necessitam de a receber toda em aberto. Necessidade de cifrar apenas partes da mensagem. Nos Web Services os handlers foram pensados para permitir implementar as funções de segurança na sequência certa

Web Services - Handlers Handler Chain Sequência de handlers executados sobre pedidos e respostas Handler Extende a classe javax.xml.rpc.handler.handler Métodos relevantes handlerequest(messagecontext context) handleresponse(messagecontext context) handlefault(messagecontext context)

Exemplo handler de segurança public boolean handlerequest(messagecontext context) { System.out.println(this + ">\n\t handlerequest(messagecontext=" + context + ")"); try { SOAPMessageContext smc = (SOAPMessageContext) context; SOAPMessage msg = smc.getmessage(); SOAPPart sp = msg.getsoappart(); SOAPEnvelope se = sp.getenvelope(); SOAPBody sb = se.getbody(); SOAPHeader sh = se.getheader(); if (sh == null) {sh = se.addheader(); } // cipher message with symmetric key ByteArrayOutputStream byteout = new ByteArrayOutputStream(); msg.writeto(byteout); Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(cipher.encrypt_mode, KeyManager.getSecretKey()); byte[] cipheredmessage = cipher.dofinal(byteout.tobytearray()); Sistemas Distribuídos 2010/11

Exemplo handler de segurança // encode in base64 BASE64Encoder encoder = new BASE64Encoder(); String encodedmessage = encoder.encode(cipheredmessage); // remove clear text sb.detachnode(); sh.detachnode(); // reinitialize SOAP components sb = se.addbody(); sh = se.addheader(); // store message SOAPBodyElement element = sb.addbodyelement(se.createname("cipherbody")); } element.addtextnode(encodedmessage); } catch (Exception e) { System.out.println(this + ">\n\t Exception caught in handlerequest:\n" + e); return false; } return true; Sistemas Distribuídos 2010/11

Caso de estudo: TLS/SSL (base do HTTPS) Sistemas Distribuídos 2010/11

SSL protocol stack SSL Handshake protocol SSL Change Cipher Spec SSL Alert Protocol HTTP Telnet SSL Record Protocol Transport layer (usually TCP) Network layer (usually IP) SSL protocols: Other protocols: Sistemas Distribuídos 2010/11

TLS handshake protocol ClientHello Serv erhello Establish protocol version, session ID, cipher sui te, compression method, ex change random v alues Certifica te Certifica te Request Serv erhellodone Optionally send server certificate and request client certifi cate Client Certifica te Serv er S end client certificate response if Certifica te Veri fy requested Change Cip her Spec Finished Change cip her suite and finish handshake Change Cip her Spec Finished Sistemas Distribuídos 2010/11

TLS handshake: opções Sistemas Distribuídos 2010/11