Segurança de aplicação - S/MIME
Jaime Dias
FEUP > DEEC > MRSC > Segurança em Sistemas e Redes
v1
Componentes de um sistema de e-mail
• Interface com o utilizador (leitor de e-mails)
ƒ Escrita e leitura de e-mails
• Transporte de e-mails
ƒ MUA (Mail User Agent) e MTA (Mail Transfer Agent)
ƒ SMTP, POP3 e IMAP
• Mensagens de e-mails (RFC 822, MIME)
MRSC > SSR > seg_aplicação_smime_v1
2
1
RFC 822
• Define as mensagens em duas partes: o cabeçalho e o corpo.
Ambos em texto ASCII.
• O cabeçalho é separado do cortpo através de uma linha em branco.
• O cabeçalho é composto por linha de cabeçalho:
ƒ To:
ƒ Subject:
ƒ Date:
ƒ From:
ƒ Received:
ƒ…
MRSC > SSR > seg_aplicação_smime_v1
3
Exemplo de uma mensagem RFC 822
Date: Mon, 3 Apr 2006 20:15:18 +0100
From: [email protected]
To: Jaime Dias <[email protected]>
Subject: Mensagem de e-mail
blablabla
MRSC > SSR > seg_aplicação_smime_v1
4
2
Limitações do formato RFC822
• Só suporta texto.
• Mapa de caracteres Î exclusivamente ASCII
• Problemas de transmissão com:
ƒ Executáveis ou outros ficheiros binários (ex: imagens jpeg)
ƒ Mapa de caracteres diferentes de ASCII
ƒ Mensagens demasiado grandes
ƒ Conversão ASCII para EBCDIC
ƒ Linhas muito longas
MRSC > SSR > seg_aplicação_smime_v1
5
Solução
• Complementar o RFC822 com extensões Î MIME
• Permite que uma mensagem de e-mail possa transportar diversos
tipos de dados: áudio, vídeo, imagens, documentos do Word, etc.
• MIME (Multipurpose Internet Mail Extensions):
ƒ Colecção de 5 novas linhas de cabeçalho
ƒ Definição de tipos de conteúdo
ƒ Mecanismos de codificação dos diferentes tipos de dados de forma a
poderem ser transportados em ASCII numa mensagem RFC822
MRSC > SSR > seg_aplicação_smime_v1
6
3
MIME
Campos de cabeçalho
• MIME-Version: tem de ser “1.0”
• Content-Type: o tipo dos dados contidos na mensagem
• Content-Transfer-Encoding: indica o tipo de codificação
utilizada para representar o corpo da mensagem num formato que
possa ser entendido pelas entidades de transporte (ex.: radix-64)
• Content-ID: string para identificação únivoca de uma entidade
MIME em múltiplos contextos (opcional)
• Content Description: útil quando os dados não são texto legível
(ex.: mpeg) (opcional)
MRSC > SSR > seg_aplicação_smime_v1
7
MRSC > SSR > seg_aplicação_smime_v1
8
Content-Type
4
Content-Type
• Tipo Multipart tem 4 subtipos
• O mais importante é o Multipart/mixed
ƒ Indica que o corpo contém múltiplas partes
• Cada parte pode ser separada como uma mensagem (entidade)
MIME Î encapsulamento de entidades MIME
• Cada parte é separada por uma string delimitadora (boundary)
definida no campo Content-Type.
MRSC > SSR > seg_aplicação_smime_v1
9
Content-Transfer-Encoding
•quoted-printable
ƒ quando a maioria dos dados são caracteres ASCII
ƒ Exemplo: “isto é um teste” Î “isto =E9 um teste”
•base64 (também conhecido como radix-64)
ƒ mapeamento de três bytes de dados binários em quatro ASCII
ƒ Exemplo: “isto é um teste” Î “aXN0byDpIHVtIHRlc3Rl”
MRSC > SSR > seg_aplicação_smime_v1
10
5
Exemplo de uma mensagem MIME
Date: Mon, 3 Apr 2006 20:15:18 +0100
From: [email protected]
To: Jaime Dias <[email protected]>
Subject: Mensagem de e-mail
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="---next part"
------next part
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
This is a test. Regards, Jaime
------next part
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
VGhpcyBpcyBhIHRlc3QuIFJlZ2FyZHMsIEphaW1lDQo=
------next part--
MRSC > SSR > seg_aplicação_smime_v1
11
S/MIME
• Secure/Multipurpose Internet Mail Extension
• Adiciona extensões de segurança ao MIME
• Baseado em tecnologia da RSA Security
MRSC > SSR > seg_aplicação_smime_v1
12
6
Serviços S/MIME
• enveloped data (application/pkcs7-mime;
smime-type = enveloped-data)
ƒ cifragem dos dados Æ confidencialidade
• signed data (application/pkcs7-mime;
smime-type = signed-data)
ƒ assinatura dos dados Æ integridade, autenticidade e não repúdio
ƒ dados + assinatura são codificados em base64
• clear-signed data (multipart/signed)
ƒ assinatura dos dados Æ integridade, autenticidade e não repúdio
ƒ só a assinatura é codificada em base64
ƒ destinatários sem suporte para S/MIME consegue ler a mensagem
mas não consegue verificar a assinatura
• signed e enveloped data
ƒ encapsulamento de uma entidade noutra. A ordem pode ser qualquer
uma.
ƒ Æconfidencialidade, integridade, autenticidade e não repúdio
MRSC > SSR > seg_aplicação_smime_v1
13
Algoritmos criptográficos
• Resumos de mensagens
ƒ obrigatório: SHA-1
ƒ opcional (receptor): MD5 (compatibilidade com sistemas “antigos”)
• Assinaturas
ƒ obrigatório: DSS
ƒ opcional : RSA
• Cifragem com chaves públicas
ƒ obrigatório: ElGamal
ƒ opcional : RSA (512-1024 bits)
• Cifragem com chaves simétricas
ƒ emissor:
o
opcional: 3DES, RC2/40
ƒ receptor:
o
obrigatório: 3DES
o
opcional: RC2/40
MRSC > SSR > seg_aplicação_smime_v1
14
7
Content-Type (S/MIME)
MRSC > SSR > seg_aplicação_smime_v1
15
Processamento S/MIME
• Pode ser feito através de assinatura e/ou cifragem
• Pode ser aplicado a toda a mensagem ou apenas a uma parte
(Multipart)
• O S/MIME processa a entidade MIME e os dados de segurança
associados (IDs de algoritmos, certificatos, CRL) e produz um
objecto PKCS (Public Key Cryptography Standards)
ƒ PKCS #7: Cryptographic Message Syntax Standard
• Como o PKCS é binário é necessário convertê-lo para ASCII
através da codificação base64
• O resultado é uma entidade MIME do tipo pkcs (entidade
S/MIME)
MRSC > SSR > seg_aplicação_smime_v1
16
8
Processamento S/MIME (emissor)
Entidade
MIME
Objecto
PKCS
Entidade
S/MIME
codificação
base64
processamento
S/MIME
MRSC > SSR > seg_aplicação_smime_v1
17
Processamento S/MIME (receptor)
Entidade
S/MIME
Objecto
PKCS
descodificação
base64
Entidade
MIME
processamento
S/MIME
• O receptor faz o processo inverso
• Descodifica o objecto PKCS
• No processamento S/MIME é conhecida a informação necessária para
determinar quais as operações criptográficas a aplicar de modo a obter a
entidade MIME original.
• A entidade MIME final também pode ainda ser do tipo S/MIME,
necessitando de um processamento adicional.
MRSC > SSR > seg_aplicação_smime_v1
18
9
EnvelopedData
• É gerada uma chave de sessão RC2 ou 3DES
• Os dados da mensagem são cifrados com a chave de sessão
• A chave de sessão é cifrada com a chave pública do destinatário
(ex: RSA)
• É preparado o bloco RecipientInfo (ID do certificado do
destinatário, ID do algoritmo, chave de sessão cifrada)
• O EnvelopedData é igual à concatenação do bloco
RecipientInfo com os dados cifrados (EncryptedContent)
MRSC > SSR > seg_aplicação_smime_v1
19
EnvelopedData
objecto PKCS
chave
Chave
pública do
de
sessão receptor
cabeçalho S/MIME
EnvelopedData
RecipientInfo
E
corpo S/MIME:
cod.
base64
objecto PKCS
codificado em
base64
EncryptedContent
E
entidade
MIME
MRSC > SSR > seg_aplicação_smime_v1
20
10
EnvelopedData - Múltiplos receptores
• São suportados múltiplos receptores: um bloco RecipientInfo
para cada um.
• Dados são cifrados apenas uma vez
• Chave de sessão é cifrada com a chave pública de cada receptor
• O receptor obtém a chave de sessão através da sua chave privada e
depois decifra EncryptedContent; os algoritmos necessários
estão especificados no bloco RecipientInfo.
MRSC > SSR > seg_aplicação_smime_v1
21
EnvelopedData - Múltiplos receptores
Entidade MIME
Chave de
sessão
cifragem dos dados
Entidade MIME cifrada
Chave pub
#1
Chave pub
#2
Chave pub
#n
chave de
sessão cifrada
#1
chave de
sessão cifrada
#2
chave de
sessão cifrada
#n
MRSC > SSR > seg_aplicação_smime_v1
22
11
EnvelopedData
Exemplo
Content-Type: application/pkcs7-mime;
smime-type=enveloped-data; name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition:attachment;filename=smime.p7m
rfvbnj756tbBghyHhHUujhJhjH77n8HHGT9HG4VQpfyF467GI
7n8HHGghyHhHUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jHd
f8HHGTrfvhJhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHh6
MRSC > SSR > seg_aplicação_smime_v1
23
SignedData
• Selecciona um algoritmo de resumo (SHA, MD5)
• Calcula o resumo dos dados que se pretende assinar
• Cifra o resumo com a chave privada do “assinante”
ƒ a norma S/MIME não obriga a que o emissor e o assinante sejam a
mesma entidade
• Prepara o bloco SignerInfo (ID do certificado do assinante,
eventualmente CRL, ID do algoritmo de resumo, ID do algoritmo
de chave pública, assinatura)
•SignedData é o resultado da concatenação da mensagem
assinada e do bloco SignerInfo
MRSC > SSR > seg_aplicação_smime_v1
24
12
SignedData
Objecto PKCS
Entidade
MIME
Chave
privada do
assinante
cabeçalho S/MIME
SignedData
SignerInfo
Hash
corpo S/MIME:
cod.
base64
E
objecto PKCS
codificado em
base64
Entidade
MIME
MRSC > SSR > seg_aplicação_smime_v1
25
SignedData – Múltiplas assinaturas
• São suportados múltiplos assinantes: um bloco
SignedData para cada um.
MRSC > SSR > seg_aplicação_smime_v1
26
13
SignedData – Múltiplas assinaturas
Entidade MIME
Algoritmo de
resumo
#1
Algoritmo de
resumo
#2
Algoritmo de
resumo
#n
Chave privada
#1
Chave privada
#2
Chave privada
#n
Assinatura
#1
Assinatura
#2
Assinatura
#n
MRSC > SSR > seg_aplicação_smime_v1
27
SignedData
Exemplo
Content-Type: application/pkcs7-mime;
smime-type=signed-data; name=smime.p7m
Content-Transfer-Encoding: base64
Content-Disposition:attachment;filename=smime.p7m
567GhIGfHfYT6ghyHhHUujpfyF4f8HHGTrfvhJhjH776tbB97
7n8HHGT9HG4VQpfyF467GhIGfHfYT6rfvbnj756tbBghyHhHU
HUujhJh4VQpfyF467GhIGfHfYGTrfvbnjT6jH7756tbB9H7n8
MRSC > SSR > seg_aplicação_smime_v1
28
14
ClearSigning
• É utilizada uma mensagem do tipo
multipart/signed:
ƒ A primeira parte pode ser um tipo MIME qualquer
ƒ A segunda parte é a assinatura
• Os receptores que suportam MIME mas não S/MIME
conseguem ler os dados da mensagem
• Os receptores que suportam S/MIME usam a primeira
parte como sendo a entidade MIME sobre a qual deve
ser verificada a assinatura
MRSC > SSR > seg_aplicação_smime_v1
29
S/MIME Clear Signing
Content-Type: multipart/signed;
protocol="application/pkcs7-signature"; micalg=sha1;
boundary=boundary42
--boundary42
Content-Type: text/plain
This is a clear-signed message.
--boundary42
Content-Type: application/pkcs7-signature; name=smime.p7s
Content-Transfer-Encoding: base64
Content-Disposition:attachment;filename=smime.p7s
ghyHhHUujhJhjH77n8HHGTrfvbnj756tbB9HG4VQpfyF4674VQpfyF467G
hIGfHfYT6jH77n8HHGghyHhHUujhJh756tb6
--boundary42--
MRSC > SSR > seg_aplicação_smime_v1
30
15
Download

Segurança de aplicação