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