View
1
Download
0
Category
Preview:
Citation preview
Segurança de aplicação - S/MIME
Jaime Dias
FEUP > DEEC > MRSC > Segurança em Sistemas e Redes
v1
MRSC > SSR > seg_aplicação_smime_v1 2
Componentes de um sistema de e-mail
• Interface com o utilizador (leitor de e-mails)Escrita e leitura de e-mails
• Transporte de e-mailsMUA (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 3
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 4
Exemplo de uma mensagem RFC 822
Date: Mon, 3 Apr 2006 20:15:18 +0100
From: jaime.dias@fe.up.pt
To: Jaime Dias <jdias@inescporto.pt>
Subject: Mensagem de e-mail
blablabla
MRSC > SSR > seg_aplicação_smime_v1 5
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 6
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 7
MIMECampos 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 8
Content-Type
MRSC > SSR > seg_aplicação_smime_v1 9
Content-Type
• Tipo Multipart tem 4 subtipos
• O mais importante é o Multipart/mixedIndica 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 10
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 11
Exemplo de uma mensagem MIMEDate: Mon, 3 Apr 2006 20:15:18 +0100
From: jaime.dias@fe.up.pt
To: Jaime Dias <jdias@inescporto.pt>
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 12
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 13
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údiodados + assinatura são codificados em base64
• clear-signed data (multipart/signed)assinatura dos dados integridade, autenticidade e não repúdiosó a assinatura é codificada em base64destinatários sem suporte para S/MIME consegue ler a mensagemmas não consegue verificar a assinatura
• signed e enveloped dataencapsulamento de uma entidade noutra. A ordem pode ser qualqueruma.
confidencialidade, integridade, autenticidade e não repúdio
MRSC > SSR > seg_aplicação_smime_v1 14
Algoritmos criptográficos• Resumos de mensagens
obrigatório: SHA-1
opcional (receptor): MD5 (compatibilidade com sistemas “antigos”)
• Assinaturasobrigatório: DSS
opcional : RSA
• Cifragem com chaves públicasobrigatório: ElGamal
opcional : RSA (512-1024 bits)
• Cifragem com chaves simétricasemissor:
o opcional: 3DES, RC2/40receptor:
o obrigatório: 3DESo opcional: RC2/40
MRSC > SSR > seg_aplicação_smime_v1 15
Content-Type (S/MIME)
MRSC > SSR > seg_aplicação_smime_v1 16
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 17
Processamento S/MIME (emissor)
Entidade
MIME
ObjectoPKCS
processamentoS/MIME
codificaçãobase64
EntidadeS/MIME
MRSC > SSR > seg_aplicação_smime_v1 18
Processamento S/MIME (receptor)
• 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.
Entidade
S/MIME
Objecto PKCS
descodificaçãobase64
processamentoS/MIME
EntidadeMIME
MRSC > SSR > seg_aplicação_smime_v1 19
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 20
EnvelopedData
chave pública do receptor
Chave de
sessão
entidade MIME
E
E
RecipientInfo
objecto PKCS codificado em
base64
cod. base64
objecto PKCS
EnvelopedDatacabeçalho S/MIME
corpo S/MIME:
EncryptedContent
MRSC > SSR > seg_aplicação_smime_v1 21
EnvelopedData - Múltiplos receptores
• São suportados múltiplos receptores: um bloco RecipientInfopara 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 22
EnvelopedData - Múltiplos receptores
Entidade MIME
Chave de sessão cifragem dos dados
Entidade MIME cifrada
chave de sessão cifrada
#n
Chave pub #n
chave de sessão cifrada
#2
Chave pub #2
chave de sessão cifrada
#1
Chave pub#1
MRSC > SSR > seg_aplicação_smime_v1 23
EnvelopedDataExemplo
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 24
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 25
SignedData
Chaveprivada do assinante
E
EntidadeMIME
SignerInfo
objecto PKCS codificado em
base64
cod. base64
Objecto PKCSSignedData
cabeçalho S/MIME
corpo S/MIME:
Hash
EntidadeMIME
MRSC > SSR > seg_aplicação_smime_v1 26
SignedData – Múltiplas assinaturas
• São suportados múltiplos assinantes: um blocoSignedData para cada um.
MRSC > SSR > seg_aplicação_smime_v1 27
SignedData – Múltiplas assinaturas
Entidade MIME
Algoritmo de resumo
#1
Assinatura#1
Chave privada#1
Algoritmo de resumo
#2
Assinatura #2
Chave privada #2
Algoritmo de resumo
#n
Assinatura #n
Chave privada #n
MRSC > SSR > seg_aplicação_smime_v1 28
SignedDataExemplo
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 29
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 30
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 ghyHhHUujhJhjH77n8HHGTrfvbnj756tbB9HG4VQpfyF4674VQpfyF467GhIGfHfYT6jH77n8HHGghyHhHUujhJh756tb6
--boundary42--
Recommended