SEGURANÇA, CONTROLE E AUDITORIA DE DADOS 8 – Criptografia (2) CRIPTOGRAFIA Aplicações Privacidade, Autenticação: RSA, Curva Elíptica Intercâmbio de chave secreta: Diffie-Hellman Assinatura digital: DSS (DSA) Vantagens Não compartilha segredo Provê autenticação Provê não-repúdio Escalável Desvantagens Lenta (computacionalmente intensiva) Requer autoridade de certificação (chave pública confiável) DIFFIE-HELLMAN É um método para troca segura de chaves Inventado em 1976 O objetivo é permitir a troca de chaves entre duas entidades remotas através de um meio de comunicação não segura É baseado na operação de logaritmos discretos RAIZ PRIMITIVA O logaritmo discreto é uma função unidirecional Logaritmo discreto é baseado na raiz primitiva Raízes primitivas de um número primo p são as potências por todos os inteiros de 1 a p-1 Se a é uma raiz primitiva de p, então a mod p, a2 mod p, ..., ap-1 mod p são distintos e consistem em inteiros de 1 a p-1 LOGARITMOS DISCRETOS Para um inteiro b uma raiz primitiva a de um número primo p é possível encontrar um expoente i tal que: b = ai mod p onde 0 ≤ i ≤ (p-1) O expoente i é chamado de logaritmo discreto de b na base a mod p. Dado a, i e p, é fácil calcular b Dado a, b e p, é difícil calcular i ALGORITMO DIFFIE-HELLMAN O algoritmo gera a mesma senha para dois usuários distintos (Eliza e Bruno), dado p primo e α uma raiz primitiva de p: Eliza Bruno sorteia Xa < p calcula Ya = αXa mod p Ya Yb calcula K = YbXa mod p sorteia Xb < p calcula Yb = αXb mod p calcula K = YaXb mod p ALGORITMO DIFFIE-HELLMAN Temos: Ya = αXa mod p e Yb = αXb mod p KA = YbXa mod p (αXb mod p)Xa mod p (αXb)Xa mod p (αXa)Xb mod p (αXa mod p)Xb mod p YaXb mod p = KB = K ALGORITMO DIFFIE-HELLMAN p = 97, α = 5 Alice sorteia Xa = 36 e Bruno sorteia Xb = 58 Alice calcula Ya = 536 = 50 mod 97 Bruno calcula Yb = 558 = 44 mod 96 Bruno calcula K = (Ya)Xb mod 97 = 5058 = 75 mod 97 Alice calcula K = (Yb)Xa mod 97 = 4436 = 75 mod 97 ALGORITMO DIFFIE-HELLMAN Diffie-Hellman é uma técnica muito usada para troca de chaves SSL (Secure Socket Layer) PGP (Pretty Good Privacy) É eficiente Porém está sujeito ao ataque do homem no meio na troca de valores públicos Y Segurança do Diffie-Hellman: Criptoanálise: conhecidos q, α e Y, é preciso calcular o log discreto para obter K (difícil) ALGORITMO RSA O algoritmo RSA foi desenvolvido em 1977 pelo Ron Rivest, Adi Shamir e Len Adleman RSA é um algoritmo de chave pública É baseado em logaritmos discretos As senhas são geradas com base em dois números primos grandes (mais de 100 dígitos) A segurança é baseada na dificuldade de fatoração de números inteiros ALGORITMO RSA Geração do par de chaves (pública/privada) Selecionar p e q , ambos números primos Calcular n = p × q Calcular φ(n) = (p - 1)(q - 1) [quociente de Euler] Selecionar inteiro e , primo relativo a φ(n) Calcular d = e-1 mod φ(n) [ ou de = 1 mod φ(n) ] Chave Pública: KU = {e, n} Chave Privada: KR = {d, n} Encriptação: C = Me mod n, M < n Decriptação: M = Cd mod n ALGORITMO RSA Para criptografar a mensagem M: C = Me mod n Para decriptografar a mensagem cifrada C: M = Cd mod n = (Me)d mod n = Med mod n Ambos os lados deve conhecer n A senha pública KU é formada por {e, n} A senha secreta KR é formada por {d, n} O algoritmo funciona porque Med = M mod n quando ed = 1 mod φ(n) ALGORITMO RSA ALGORITMO RSA Primos p = 7 e q = 19. n = p.q = 119, φ(n) = 6×18 =108 Senha pública do destinatário: {e, n} = {5, 119} Senha secreta do destinatário: {d, n} = {77, 119} Mensagem M: 19 Mensagem cifrada C: 66 ALGORITMO RSA Criptoanálise: conhecendo e e n, é preciso fazer a fatoração de n, para obter os dois primos p e q e calcular d Fatoração é uma tarefa demorada Pentium 200Mhz é uma máquina de 50 MIPS ALGORITMO RSA O algoritmo RSA pode ser usado para assinar digitalmente um documento A assinatura garante a autenticidade A assinatura é gerada com base na senha secreta do assinante Desta forma um documento assinado só poderia ter sido gerado pelo dono da senha ALGORITMO RSA CRIPTOGRAFIA E ASSINATURA DIGITAL Com o RSA é possível ainda criptografar e assinar digitalmente Assim a autenticidade e a confidencialidade são garantidas simultaneamente Duas operações de criptografia são executadas em seqüência no documento original: Uma com a senha secreta do assinante Outra com a senha pública do destinatário CRIPTOGRAFIA E ASSINATURA DIGITAL CRIPTOGRAFIA E ASSINATURA DIGITAL A distribuição de chaves é um possível ponto de falha também em um sistema de chave pública Um usuário C pode gerar uma par KR/KU em nome de B e enviar a chave pública para A A, ao gerar uma mensagem pensando que é para B, está gerando uma mensagem que na verdade somente C tem a chave para ler CRIPTOGRAFIA E ASSINATURA DIGITAL Autoridades de certificação são usadas para distribuir chaves públicas garantindo a sua autenticidade A CA (Certificate Authority) é uma entidade confiável e reconhecida (VeriSign, Thawte, ValiCert, GlobalSign, Entrust, BelSign) A CA emite certificado digital que inclui a chave pública de uma entidade, com dados para identificação confiável desta e assinado digitalmente com a chave privada da CA CRIPTOGRAFIA E ASSINATURA DIGITAL A chave pública da CA deve ser muito bem conhecida e amplamente disponível, pois é usada por quem recebe um certificado vindo da CA, para validá-lo (autenticar assinatura) Exemplo de conteúdo de Certificado Digital: Nome do indivíduo e/ou organização Chave pública do detentor Data de validade do certificado Numeração de controle do certificado Identificação da CA Assinatura digital da CA CERTIFICADO X.509 Padrão ITU-T para certificado: X.509 Usado em S/MIME, IPSec, SSL/TLS, SET V1 Versão Número serial do certificado Identificação do algoritmo de assinatura Nome do emitente: CA que assina o certificado Período de validade do certificado (início e fim) Nome do assunto: usuário que o certificado identifica Chave pública do assunto Identificação única do emitente Identificação única do assunto Extensões: Outros dados Assinatura da CA V 2/3 AUTENTICAÇÃO DE MENSAGEM Criptografia do conteúdo protege mensagens contra interceptação (ataque passivo) Criptografia e técnicas similares podem ser usadas para autenticação de mensagens: garantir e validar sua integridade contra falsificação (ataque ativo) Autenticação simples de mensagem na criptografia convencional: Incluir na mensagem informações de código de correção de erro e controle de seqüência e tempo AUTENTICAÇÃO DE MENSAGEM Técnicas de autenticação de criptografar toda a mensagem: mensagem sem Message Authentication Code (MAC) Função de Hash Unidirecional MAC Uso de uma chave secreta KAB para gerar um pequeno bloco de dados conhecido como código de autenticação da mensagem, anexado a esta MACM = F(KAB, M) O receptor gera o mesmo código e compara AUTENTICAÇÃO DE MENSAGEM AUTENTICAÇÃO DE MENSAGEM Algoritmo Hash Unidirecional: Toma uma mensagem arbitrária M e gera uma compilação da mensagem (message digest) de tamanho fixo H(M) como saída (como nos MACs) O algoritmo não precisa ser reversível Diferente do MAC, a função hash não usa uma chave secreta como parâmetro A autenticação da mensagem passa a ser baseada na autenticação segura do digest: Adicionar de um valor secreto a M antes de gerar H(M) Criptografia convecional do message digest Assinatura do digest com a chave privada do emissor AUTENTICAÇÃO DE MENSAGEM AUTENTICAÇÃO DE MENSAGEM Exemplo de um hash simples de n bits: Tomar a mensagem em blocos de n bits Fazer XOR do bit i (de 1 a n) de todos os blocos Ci = bi1 ⊕ bi2 ⊕ ... ⊕ bin AUTENTICAÇÃO DE MENSAGEM Algoritmos Hash Seguros SHA-1, Secure Hash Algorithm-1: desenvolvido pelo NIST (National Institute of Standards and Technology), EUA Digest de 160 bits Propriedade principal: todo bit do código hash é função de todos os bits da mensagem de entrada MD4 e MD5, Message Digest Algorithm #4, #5: desenvolvido pela RSA (128 bits) RIPEMD, RACE Integrity Primitives Evaluation (RIPE) MD: projeto europeu RIPE. RIPEMD-160, RIPEMD-256 (hash de 160 e 256 bits) AUTENTICAÇÃO DE MENSAGEM MAC a partir de uma função hash Idéia: desenvolver um MAC derivado de um hash unidirecional, introduzindo uma chave secreta Padrão mais aceito é o HMAC. Princípios: Usar uma função hash existente (ex: SHA-1), sem modificações (como se fosse uma “caixa preta”) Deixar a função hash facilmente substituível, caso se deseje usar outra função mais conveniente Preservar o desempenho original da função hash, sem introduzir degradação significante Tratar de forma simples a chave secreta usada AUTENTICAÇÃO DE MENSAGEM AUTENTICAÇÃO DE USUÁRIO Kerberos Parte do Projeto Athena, do MIT Problema: em um ambiente distribuído aberto, é necessário autenticar requisições e restringir acesso a usuários autorizados Idéia do Kerberos: é difícil garantir a segurança de muitos servidores em uma rede, mas é viável garantir alta segurança de um único servidor Kerberos: servidor de autenticação central que contém e valida a senha (chave) e autorizações de todos os usuários e servidores da rede Baseado em criptografia convencional AUTENTICAÇÃO DE USUÁRIO SEGURANÇA DE E-MAIL O e-mail é hoje um meio de comunicação tão comum quanto o telefone e segue crescendo Gerenciamento, monitoramento e segurança de e-mail têm importância cada vez maior O e-mail é muito inseguro, pois pode atravessar várias redes até chegar ao destino E-mail é vulnerável a: Interceptação e quebra de privacidade Replicação, adulteração, falsificação de conteúdo Falsificação de identidade SEGURANÇA DE E-MAIL Privacidade de conteúdo Integridade da mensagem Algoritmo de hash / message digest ou MAC Verificação de remetente Tecnologia de criptografia para codificação Assinatura digital Verificação de destinatário Criptografia com chave-pública SEGURANÇA DE E-MAIL Padrões PGP - Pretty Good Privacy & OpenPGP S/MIME - Secure Multipurpose Internet Mail Extension (MIME) PEM - Privacy-Enhanced Mail MOSS - MIME Object Security Service MSP - Message Security Protocol (uso militar) Padrões competidores não inter-operáveis dificultam sua popularização Mais difundidos: PGP e S/MIME SEGURANÇA DE E-MAIL PGP Mais popular ferramenta de privacidade e autenticação, principalmente para uso pessoal Esforço pessoal de Philip R. Zimmermann Essência do trabalho: Selecionados os melhores algoritmos de criptografia como componentes Algoritmos integrados em aplicação de uso geral e fácil O produto, sua documentação e todo o código fonte disponibilizados publicamente na Internet Acordo com uma empresa (Viacrypt, agora NAI) para disponibilização de uma versão comercial SEGURANÇA DE E-MAIL Histórico do PGP Versão pública inicial do PGP: Junho de 1991 PGPi 5.0: 1997 1ª versão legalmente disponível fora dos EUA/Canadá Exportado como código fonte em livros impressos e remontado a partir de digitalização/OCR Network Associates: versão comercial Dez/1997 OpenPGP: Padrão aberto IETF RFC 2440 GnuPG: implementação freeware do OpenPGP, sem o algoritmo patenteado IDEA (patente RSA expirou 2000) OpenPGP Alliance: promove interoperabilidade entre implementações do padrão OpenPGP SEGURANÇA DE E-MAIL Sucesso do PGP Disponibilidade gratuita e versões para muitas plataformas, com ferramentas para fácil utilização Distribuição pública do código permitiu amplo estudo e garante credibilidade (certeza de não haver back doors) e amadurecimento (depuração) Uso de algoritmos considerados muito seguros Aplicável na segurança de e-mail, arquivos, VPN Não desenvolvido ou totalmente controlado por nenhuma organização governamental ou privada SEGURANÇA DE E-MAIL SEGURANÇA DE E-MAIL SEGURANÇA DE E-MAIL SEGURANÇA DE E-MAIL Assinatura digital: Obtida por uma sinopse (digest) da mensagem criptografada com a chave privada do remetente Confidencialidade: Encriptação usa criptografia convencional, que é em geral bem mais rápida que a de chave pública Chave de sessão: uma chave secreta é gerada aleatoriamente para uso uma única vez, i.e., uma nova chave para cada mensagem cifrada A chave da sessão vai junto com a mensagem, protegida pela chave pública do destinatário SEGURANÇA DE E-MAIL Compactação ZIP: Reduz o tamanho a armazenar ou transmitir Realizada depois da assinatura e antes da criptografia convencional da mensagem Depois da assinatura: validação da mensagem s/depender de comprimir antes e do algoritmo ZIP Antes da criptografia: reduz redundância (padrões) na mensagem original, aumentando a segurança Compatibilidade com e-mail: Codificação do resultado em ASCII com Radix64 Possibilidade de segmentar resultado, se grande SEGURANÇA DE E-MAIL Private key ring (Chaveiro de chave privada) Existe uma chave mestre associada ao usuário, define sua identificação e é usada para assinatura Podem ser definidas chaves alternativas para codificação, que podem ter validade ou ter a chave pública revogada em caso de problema A chave privada é armazenada codificada por criptografia convencional. A chave secreta é hash da senha (frase-passe) escolhida pelo usuário SEGURANÇA DE E-MAIL SEGURANÇA DE E-MAIL Public key ring (Chaveiro de chaves públicas) As chaves públicas podem ser assinadas digitalmente por usuários que atestem sua legitimidade Para o usuário atestar/aceitar a validade de uma chave pública em seu chaveiro, deve assiná-la e associar um nível de confiança A legitimidade de uma chave pública é dada pelo conjunto dos níveis de confiança dos assinantes SEGURANÇA DE E-MAIL S/MIME Secure/Multipurpose Internet Mail Extension Baseado em tecnologia da RSA Security Embora tanto PGP quanto S/MIME sejam definidos como padrões pela IETF, S/MIME surge mais como padrão de indústria para uso comercial e organizacional, enquanto PGP é mais escolhido em segurança pessoal de e-mail Essencialmente, tem as mesmas funções de autenticação e confidencialidade do PGP, embutidas no padrão MIME de conteúdo SEGURANÇA DE E-MAIL Nomeclatura das funções S/MIME: Enveloped data: conteúdo (de qualquer tipo) criptografado, com chave de sessão criptografada para um ou mais destinatários Signed data: é feita uma assinatura digital do conteúdo por uma message digest cifrada com a chave privada do assinante. Tanto o conteúdo quanto a assinatura são codificados em base64 Clear-signed data: é formada uma assinatura digital do conteúdo, mas apenas a assinatura é depois codificada em base64 (conteúdo intacto) Signed and enveloped data: assinatura + cifra SEGURANÇA DE E-MAIL Chaves públicas Distribuídas em certificados X.509v3 assinados Autoridade de Certificação (CA) por Certificados Chave-Pública S/MIME Verisign Vários classes de segurança, de acordo com a forma de confirmação de identidade Classe 1: validação automática do nome e e-mail (envio de um PIN e ID digital para o e-mail) Classe 2: Classe 1 + validações automatizadas no cadastro de pagamento e sobre o endereço postal Classe 3: Classe 2 + identificação pessoalmente