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

Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Jaime Dias

FEUP > DEEC > MRSC > Segurança em Sistemas e Redes

v1

Page 2: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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)

Page 3: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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:

Page 4: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

MRSC > SSR > seg_aplicação_smime_v1 4

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

Page 5: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 6: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 7: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato 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)

Page 8: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

MRSC > SSR > seg_aplicação_smime_v1 8

Content-Type

Page 9: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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.

Page 10: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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”

Page 11: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

MRSC > SSR > seg_aplicação_smime_v1 11

Exemplo de uma mensagem MIMEDate: 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--

Page 12: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 13: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 14: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 15: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

MRSC > SSR > seg_aplicação_smime_v1 15

Content-Type (S/MIME)

Page 16: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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)

Page 17: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

MRSC > SSR > seg_aplicação_smime_v1 17

Processamento S/MIME (emissor)

Entidade

MIME

ObjectoPKCS

processamentoS/MIME

codificaçãobase64

EntidadeS/MIME

Page 18: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 19: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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)

Page 20: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 21: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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.

Page 22: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 23: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 24: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 25: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 26: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

MRSC > SSR > seg_aplicação_smime_v1 26

SignedData – Múltiplas assinaturas

• São suportados múltiplos assinantes: um blocoSignedData para cada um.

Page 27: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 28: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 29: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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

Page 30: Segurança de aplicação - S/MIMEjaime/0506/SSR/seg_aplicacao_smime... · 2009. 12. 21. · blablabla. MRSC > SSR > seg_aplicação_smime_v1 5 Limitações do formato RFC822 •

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--