Beruflich Dokumente
Kultur Dokumente
5.4 Kerberos 58
1. Requisio de bilhete de acesso ao TGS. O cliente envia sua identidade (c) e a do TGS
(tgs) ao KDC
C KDC: c, tgs
2. Bilhete de acesso ao TGS. O KDC retorna ao cliente um bilhete de acesso ao TGS
(T
c, tgs
) cifrado com a chave do TGS e uma chave de sesso (k
c, tgs
) cifrada com a
chave secreta (k
c
) do cliente:
KDC C: (k
c
) [k
c, tgs
], (k
tgs
) [T
c, tgs
]
3. Requisio de bilhete de acesso ao servidor. O cliente envia para o TGS um autenticador
(A
c
) cifrado com a chave de sesso (k
c,
tgs
) e o anteriormente recebido bilhete de
acesso ao TGS (T
c, tgs
) cifrado com a chave secreta do TGS, juntamente com a identifi-
cao do servidor (s) a ser acessado:
C TGS: s, (k
tgs
) [T
c, tgs
], (k
c, tgs
)
[A
c
]
4. Aquisio do bilhete de acesso ao servidor. O TGS extrai a chave de sesso (k
c, tgs
) do
bilhete de acesso ao TGS (T
c, tgs
) para decifrar e averiguar o autenticador A
c
(maiores
detalhes na Seo 5.4.1, pgina 59). A chave secreta do servidor (k
s
) usada para cifrar
o bilhete de acesso ao servidor (T
c, s
) e uma nova chave de sesso (k
c, s
) para comuni-
cao entre o cliente e servidor enviada cifrada com a chave de sesso (k
c, tgs
):
TGS C: (k
s
)
[T
c, s
], (k
c, tgs
) [k
c, s
]
5. Cliente apresenta bilhete de acesso ao servidor. O cliente apresenta ao servidor o bilhete
emitido pelo TGS, que se encontra cifrado com a prpria chave secreta do servidor, rece-
bido na mensagem anterior. O cliente tambm envia ao servidor o autenticador (A
c
)
cifrado com a nova chave de sesso (k
c, s
):
C S: (k
s
) [T
c, s
], (k
c, s
)
[A
c
]
6. Autenticao do servidor (opcional). Para servios onde o cliente requer autenticao por
parte do servidor, este deve retornar ao cliente o timestamp recebido no autenticador A
c
acrescido de uma unidade:
S C: (k
c, s
) [ts + 1]
5.4 Kerberos 59
5.4.1 Credenciais de autenticao (bilhete e autenticador)
Os bilhetes tm a funo especial de autenticar o cliente junto ao servidor. Em outras palavras,
garantir que o cliente que esteja usando um bilhete refere-se ao mesmo para o qual este bilhete
fora emitido. A autenticao s pode ser confirmada se o bilhete estiver cifrado com a chave
secreta do servidor, que apenas deveria ser de conhecimento deste e do TGS.
O nome do cliente (C), o endereo IP (IP
c
), o nome do servidor (S), a validade do bilhete
(lt), e a chave de sesso a ser utilizada para cifrar as prximas mensagens entre o cliente e o
servidor so transmitidos ao servidor pelo cliente atravs do bilhete emitido pelo TGS e KDC
para o cliente, conforme ilustrado abaixo:
T
c, s
= S, (K
s
) [C, IP
c
, lt, K
c, s
]
Uma vez obtido um bilhete, este pode ser usado para acessar o servidor (servio) at que a
validade do bilhete tenha se expirado (lifetime). Tanto o cliente como outras entidades na rede
no so capazes de ler ou alterar o bilhete original emitido pelo TGS, pois como j mencionado,
o mesmo encontra-se cifrado com a chave secreta do servidor.
Em contrapartida, um autenticador deve ser gerado toda vez que um cliente desejar acessar
algum servidor (servio). Sua principal funo evitar ataques de repetio de mensagens (envi-
ando um timestamp para todas mensagens enviadas ao servidor) e autenticar o servidor perante
o cliente (mensagem nmero 6). Diferentemente de um bilhete, o autenticador s pode ser usado
uma nica vez, j que pelo menos o timestamp (ts) deve ser incrementado a cada nova mensa-
gem. O autenticador cifrado com a chave de sesso entre o cliente e o servidor, como ilustrado
a seguir:
A
c, s
= (k
c, s
)
[c, ts].
5.4.2 Anlise de segurana
Infelizmente o Kerberos no resolve o problema original de distribuio automtica de chaves
mestras entre TGS, servidores e clientes. Novamente, algum mecanismo inicial deve ser respon-
svel por definir as chaves secretas dos servidores e clientes no TGS. O uso de algoritmos assi-
mtricos uma soluo proposta [13], mas que ainda no se encontra totalmente definida.
Apesar de ser bem mais seguro que os mtodos de autenticao baseados no endereamento
IP e usurio UNIX, o Kerberos apresenta algumas vulnerabilidades prprias [18].
5.5 Certificados pblicos 60
Oponentes que possuam acesso ao meio fsico, podem colecionar os bilhetes em trnsito e
posteriormente implementar ataques de dicionrio (password-guessing attacks) nas chaves
secretas dos clientes e servidores. Quanto maior o nmero de bilhetes coletados, maiores so as
chances de sucesso para este tipo de ataque. Isto porque aumenta a probabilidade de se encon-
trar um bilhete cifrado com alguma senha fraca, isto , contida no dicionrio do oponente.
Apesar de timestamps serem utilizados com intuito de evitar ataques de repetio de mensa-
gens, autenticadores antigos podem ser reutilizados durante a vida til de um bilhete, especial-
mente quando os servidores so incapazes de armazenar todos os bilhetes vlidos que esto em
uso e autenticadores j recebidos. De qualquer maneira, o ataque de repetio de mensagens s
pode ser eliminado caso os relgios das entidades envolvidas (TGS, clientes, servidores) estejam
sincronizados. No entanto, como a maioria dos protocolos de sincronizao so inseguros [23],
torna-se difcil garantir a segurana do protocolo neste sentido.
Contudo, o principal problema refere-se segurana de sistemas pertencentes ao ambiente
Kerberos, em particular em ambientes multi-usurios. Pouca segurana existe quando, por exem-
plo, algum usurio do sistema tiver acesso ao cache onde se encontram armazenadas as chaves
de sesso de terceiros. Fragilidade maior ocorre quando o super usurio no for confivel. Nesta
situao extrema, todo o sistema Kerberos pode ser substitudo por um cavalo de Tria, suplan-
tando toda a segurana do sistema em si.
5.5 Certificados pblicos
A principal vulnerabilidade dos protocolos que utilizam algoritmos assimtricos no processo de
distribuio de chaves decorre da ausncia de uma maneira segura de associar uma entidade
sua chave pblica. O Ataque do n intermedirio, tal como descrito para o algoritmo DH
(Diffie-Hellman Key Agreement), pode nesta circunstncia ser facilmente implementado.
Uma maneira de contornar este problema atravs de certificados pblicos. Estes certifi-
cados nada mais so que uma associao confivel de uma entidade com sua chave pblica atra-
vs de uma assinatura digital efetuada por um terceiro tambm confivel, denominado
autoridade de certificao ou simplesmente CA (Certificate Authority).
Formalmente, todos os certificados devem apresentar pelo menos duas propriedades:
oferecer uma ligao confivel entre um nome, uma entidade e sua chave pblica
5.5 Certificados pblicos 61
prover integridade da chave pblica desta entidade
possvel, ento, dificultar as tentativas de substituir chaves pblicas de uma entidade por
outra. Naturalmente, alguma outra forma segura de obter a chave pblica das CAs deve existir;
provavelmente por algum outro mtodo manual. De qualquer forma, tem-se uma reduo signi-
ficativa na escala do problema, especialmente se considerarmos, como veremos adiante, que tais
certificados podem ser emitidos de maneira hierrquica.
5.5.1 Formatos dos certificados
A arquitetura TCP/IP ainda carece de uma infra-estrutura global para distribuio de certificados
pblicos. Basicamente os esforos tm se concentrado em trs mtodos: servio de diretrio
X.500 [24], DNS Seguro (Secure Domain Name System) [36] e certificados PGP [11]. Na ausncia
de uma estrutura prontamente disponvel, alguns protocolos especficos foram especialmente
definidos para distribuio de certificados [3]. Desta forma, os certificados podem ser obtidos
diretamente da entidade com a qual se queira comunicar, ou atravs de um servidor de dados
central, sem a necessidade de nenhuma grande mudana estrutural.
Infelizmente cada um dos mtodos propostos apresenta uma estrutura diferente. O certifi-
cado X.509 [25] do servio de diretrios citado acima possui a seguinte estrutura de dados:
Version - identifica verso do formato do certificado
Serial Number - nmero seqencial nico para cada certificado emitido por uma CA
Algorithm Id - algoritmo usado para assinar o certificado (p. ex. DSA ou RSA)
algoritmo - nome do algoritmo usado para assinar o certificado
parmetros - parmetros associados ao algoritmo em questo
Issuer - nome (X.509 Distinguished Name) da CA
Validity
data de incio de validade
data de trmino validade
Subject - nome (X.509 Distinguished Name) da entidade cuja chave pblica foi assinada
Subjects Public Key
5.5 Certificados pblicos 62
algoritmo - nome do algoritmo associado chave pblica do proprietrio do certifi-
cado
parmetros - parmetros associados chave pblica em questo
chave pblica - atributos da chave pblica propriamente dita
Signature - assinatura gerada usando a chave pblica da CA sobre os dados acima
5.5.2 Estrutura de certificao
Com o objetivo de reduzir ao mximo a necessidade de definir chaves manualmente, CAs podem
ter tambm seus certificados assinados por uma autoridade de mais alto nvel. Tem-se assim uma
estrutura hierrquica em forma de uma rvore invertida. A raiz desta rvore representa a autori-
dade superior, responsvel por delegar autoridade e assinar os certificados das CAs de nvel ime-
diatamente abaixo, e assim sucessivamente, at chegarmos aos usurios finais nas folhas da
rvore.
Uma srie de questes envolve uma estrutura deste gnero, principalmente em se tratando
de uma rede de grande proporo. Dentre tais questes, podemos destacar algumas de especial
interesse para a estrutura da Internet:
Qual nvel de confiana pode-se ter em uma CA?
A quem ser delegada Autoridade de Certificao (CA) em domnios globais (no locais)?
Qual tipo de formalidade reger a relao dos usurios com a sua CA, e a relao desta
com a CA imediatamente superior?
Haver uma nica raiz? A quem ser delegada tamanha responsabilidade?
A RFC1422 [50], que especifica o gerenciamento de chaves da aplicao de correio eletrnico
PEM (Privacy Enhanced Mail), recomendada como leitura adicional ao leitor interessado neste
tipo de problemtica, bem como em certificados de uma maneira geral.
Podem existir situaes onde uma estrutura hierrquica no desejvel. Notoriamente isto
acontece quando os usurios no querem se submeter estrutura de uma nica raiz, estando
portanto sob custdia de CAs distintas, ou mais ainda, quando no confiarem em nenhuma CA.
Para este tipo de situao deve haver alguma forma de estrutura linear distribuda capaz de
permitir que qualquer entidade certifique a chave pblica de outra. Outra aplicao de correio
eletrnico segura, PGP [38], aborda este problema com o conceito de apresentadores (intro-
5.5 Certificados pblicos 63
ducers). Apresentadores so simplesmente usurios que geraram certificados para outros usu-
rios de sua confiana. Se um usurio confia em um determinado apresentador, este passa ento
a aceitar chaves pblicas assinadas por este. Para que este sistema seja seguro, o apresentador
deve de alguma forma ser capaz de conferir as chaves pblicas das entidades que ele esteja
endossando. Isto pode ser feito de forma manual (via telefone, ou pessoalmente), uma vez que
esperada do apresentador alguma proximidade com as entidades endossadas por este.
Esta cadeia de apresentaes visa estabelecer, na verdade, uma teia de confiana (web of
trust). Por exemplo, o usurio A, ao criar sua chave pblica, envia uma cpia para seus amigos
B e C, que passam ento a ser seus apresentadores. A questo, no entanto, torna-se mais com-
plexa em situaes de apresentadores de apresentadores. Isto , suponhamos que um usurio E
foi apresentado a B por outro usurio D. Neste caso, E deveria confiar nas chaves assinadas
(apresentadas) por B, em especfico em A? natural que na medida em que aumente a cadeia
de apresentaes, maiores sejam as chances de obter certificados no autnticos. O PGP, por
exemplo, tem mecanismos de proteo que permitem estabelecer limites de validade a certifica-
dos, assinados por usurios que por si j foram indiretamente apresentados.
A maior vantagem deste ltimo mecanismo a ausncia de Autoridades de Certificao (CA),
e de todos os inconvenientes que esto agregados a elas, particularmente a necessidade de con-
sidervel infra-estrutura montada. Este talvez seja um dos motivos da maior popularizao do
PGP em relao ao PEM, justamente por este exigir uma estrutura hierrquica rgida.
5.5.3 Revogao de certificados
O gerenciamento de certificados seria bem mais simples caso a validade de uma chave pblica
no precisasse ser alterada, ou melhor, s perdesse a validade conforme o prazo indicado no
seu prprio certificado (data de trmino da validade). Infelizmente pode ser necessrio revogar
um certificado antes deste prazo. Isto porque a chave pblica de algum usurio foi de alguma
forma comprometida, ou ainda porque a CA no deseja mais certificar um determinado usurio,
talvez por este ter transgredido alguma norma imposta pela mesma.
Assim, toda CA deve manter uma lista de certificados revogados (CRL - Certificate Revocation
List). Ao requerer um certificado a uma CA, o usurio deve verificar a CRL e possivelmente
manter um cache local dos certificados revogados obtidos. Mais uma vez, a RFC1422 [50] apre-
senta-se como referncia complementar ao gerenciamento de CRL.
5.5 Certificados pblicos 64
O gerenciamento de CRL torna-se mais complicado para as estruturas distribudas apresenta-
das acima, justamente por estas no possurem nenhum gerenciamento centralizado. De qual-
quer forma, mesmo na presena de CA, existe a possibilidade de abuso deste sistema,
especialmente em situaes de atraso na propagao das CRL, ou quando uma CA estiver indis-
ponvel. Em geral, a revogao de certificados a principal vulnerabilidade apresentada pelos
mecanismos de gerenciamento de chaves baseados em certificados pblicos.
65
Captulo 6
Arquitetura IP segura
Neste captulo sero apresentados os principais protocolos projetados com a preocupao de
segurana, e adotados pela comunidade de desenvolvedores que mantm o TCP/IP. Anlises de
segurana tambm so feitas, na tentativa de qualificar a segurana efetivamente capaz de ser
obtida com o uso de tais protocolos.
6.1 Proteo do enlace fsico
A proteo mais direta e transparente que se pode ter em mente para qualquer sistema de comu-
nicao ter todo o nvel de enlace cifrado (link level encryption). Assim, cada enlace prote-
gido individualmente por equipamentos especficos ou mesmo por um device driver apropriado.
Ou seja, ter o meio de comunicao fisicamente protegido.
Apesar da transparncia, a principal vulnerabilidade deste enfoque est nos ns intermedi-
rios de conexo dos enlaces, em especfico nos roteadores. Para que haja comunicao segura
entre dois pontos quaisquer, necessrio que todos os roteadores entre tais pontos sejam segu-
ros, o que de maneira geral no ocorre.
Por outro lado, como at mesmo o endereo de origem e destino dos pacotes transmitidos
pelos enlaces protegidos so cifrados, no possvel a um inimigo com acesso ao meio fsico
nem mesmo efetuar anlise de trfego. Este tipo de ataque baseia-se na inteligncia de inferir
fatos com base apenas na observao da origem e destino dos pacotes.
Logo, este mtodo aplica-se principalmente na proteo de enlaces especficos e preferenci-
almente em conjunto com outro nvel de ciframento de mais alto nvel (aplicao) para fortalecer
6.2 Opes de segurana do protocolo IPv4 (IPSO) 66
o sistema de criptografia em uso e evitar anlise de trfego. A avaliao detalhada deste tipo de
tcnica e tecnologias empregadas fogem ao escopo deste trabalho.
6.2 Opes de segurana do protocolo IPv4 (IPSO)
As opes de segurana da verso atual do protocolo IP (IPv4) foram a nica iniciativa original
na poca de definio do protocolo com relao segurana do mesmo. Campos do cabealho
IP foram reservados para (IP security labels) etiquetar (labeled) o nvel de sensibilidade (top-
secret, secret, confidential, unclassified) da informao contida no pacote IP [49].
Em linhas gerais um processo no pode escrever em um meio (ou compartimento) com um
nvel de segurana (sensibilidade) inferior, nem ler de um meio que contenha informao mais
altamente classificada. Este tipo de considerao pode ser levada em conta por um roteador para
impedir, por exemplo, que informaes trafeguem por meios de comunicaes no-condizentes
com sua sensibilidade.
No entanto, o IPSO no especifica nenhum mecanismo que implemente os princpios de
segurana definidos anteriormente. Trata-se mais de uma filosofia de compartimentalizao dos
pacotes em nveis de segurana distintos (Multi Level Security - MLS [33] [34]) do que um meca-
nismo de proteo em si.
As opes de segurana do protocolo IP definem uma poltica de segurana em estilo militar,
e so principalmente usadas por instituies militares nos EUA e por algumas poucas implemen-
taes de sistemas operacionais (UNIX VMLS). A estrutura extremamente centralizada e alta-
mente restritiva tornam o uso do IPSO pouco apropriado para o mundo comercial, onde as regras
de segurana so menos severas que nos meios militares, e o controle normalmente descentra-
lizado.
Ainda assim, o conceito de nveis de segurana pode ser construdo na arquitetura IPSec, atri-
buindo um nvel de segurana implcito associao de segurana em questo. Isto dever
desestimular ainda mais o uso das opes de segurana no protocolo IPv4 (IP verso 4).
6.3 Arquitetura IP segura - IPsec 67
6.3 Arquitetura IP segura - IPsec
6.3.1 Introduo
A definio de uma arquitetura segura na camada de rede traz consigo certas vantagens, princi-
palmente no que se refere ao legado de todas as aplicaes j desenvolvidas. O principal objetivo
agregar conceitos de segurana (autenticao e privacidade por exemplo), de maneira trans-
parente, a todas as aplicaes do pacote TCP/IP.
Acrescenta-se tambm o fato desta arquitetura adaptar-se bem, como ser abordado em mai-
ores detalhes adiante, s topologias que fazem uso de firewalls e o seu papel na definio de
redes de permetro virtual (Virtual Perimeter NetworkVPN).
Em contra partida transparncia e generalidade alcanados, o IPsec pode ser alvo de diver-
sos ataques [95]. Apesar de representar um grande avano em relao estrutura convencional,
as vulnerabilidades encontradas sugerem cautela no uso genrico e indiscriminado desta arqui-
tetura.
6.3.2 Descrio geral
Uma das principais caractersticas desta arquitetura o elevado nvel de independncia e modu-
laridade entre os protocolos. Os conceitos de segurana (autenticidade, integridade, privacidade
e no-repdio), os algoritmos de criptografia usados nos protocolos (RSA, DES etc) e tambm os
mecanismos de distribuio de chaves so independentes entre si.
Esta modularidade oferece grande flexibilidade na implementao de vrias polticas de segu-
rana, alm de permitir o aperfeioamento e substituio de novos protocolos e algoritmos, sem
no entanto, comprometer a arquitetura definida. Com o objetivo de garantir interoperabilidade,
um conjunto de algoritmos padres e transformaes foram definidos. Dentre estas especifica-
es destacam-se keyed MD5 [61] e DES CBC [53].
As restries governamentais ao uso de criptografia esto normalmente relacionadas ao uso
de tcnicas de criptografia para obteno de privacidade. As propriedades de autenticao, inte-
gridade e no-repdio em comunicaes no so normalmente proibidas na maioria dos pases.
Neste contexto tm-se a definio de dois mecanismos de segurana. O primeiro, o Authen-
tication Header (AH) [9] que oferece integridade e autenticao sem privacidade. O segundo, o
6.3 Arquitetura IP segura - IPsec 68
Encapsulating Security Payload (ESP) [10] oferece primordialmente privacidade. Natural-
mente, esses mecanismos podem, se necessrio, serem utilizados em conjunto.
Mais uma vez, devido modularidade estrutural, uma srie de protocolos de gerenci-
amento de chaves, tais como Photuris [54] e SKIP [2], puderam ser propostos e aperfeio-
ados, independentemente do mecanismo de segurana utilizado. Como o gerenciamento
eficaz de chaves constitui um dos maiores desafios na implementao de protocolos segu-
ros, ser dada nas sees seguintes especial ateno ao gerenciamento de chaves para a
arquitetura IP.
6.3.3 Associaes de segurana
Uma vez que os protocolos de gerenciamento de chaves e algoritmos de criptografia so
independentes dos mecanismos de segurana propriamente ditos (AH e ESP), alguma
forma de associao deve existir entre os mesmos.
Uma associao de segurana definida pelo algoritmo, modo de operao (transfor-
mao), chave e demais propriedades de segurana (tempo de expirao, nvel de sensi-
bilidade dos dados etc) aplicadas sobre os pacotes processados pelos mecanismos de
segurana em questo.
O parmetro SPI (Secure Parameter Index) do cabealho dos protocolos AH e ESP,
juntamente com o endereo do destinatrio da mensagem, definem unicamente uma asso-
ciao. Para evitar ambigidade foi estabelecido ser de responsabilidade do destinatrio
a definio do valor do SPI a ser usado. Ou seja, para cada origem diferente o destinatrio
deve atribuir um SPI distinto. Formalmente uma associao rene os seguintes parme-
tros:
algoritmo e modo do algoritmo de autenticao, quando AH estiver em uso
(necessrio em todas implementaes AH)
chaves utilizadas no algoritmo de autenticao (necessrio em todas implementa-
es AH)
algoritmo de ciframento e modo de operao, quando o ESP estiver em uso.
(necessrio em todas implementaes ESP)
6.3 Arquitetura IP segura - IPsec 69
chaves utilizadas no algoritmo de ciframento (necessrio em todas implementaes ESP)
vetor de inicializao (IV), quando requerido pelo modo de operao do algoritmo de
ciframento (necessrio em todas implementaes ESP)
chaves a serem usadas no algoritmo de autenticao de uma transformao ESP, caso esta
transformao a requeira (recomendado para todas implementaes ESP). O ESP pode
tambm ser usado para autenticao em determinadas transformaes
tempo de expirao das chaves utilizadas (recomendado para todas implementaes)
tempo de expirao da associao (recomendado para todas implementaes)
endereo de origem da associao, pode ser um conjunto de endereos se mais de um
sistema compartilha a mesma associao com um determinado destino (recomendado
em todas implementaes)
nvel de sensibilidade (secret, classified etc.) dos dados protegidos. Portanto, uma associa-
o define implicitamente o nvel de segurana dos dados, ao contrrio do IPSO que a
define de maneira explcita no cabealho IP (necessrio para todos sistemas que pos-
suam multi-nveis de segurana e recomendado para todos os outros sistemas)
As associaes so normalmente unidirecionais. Sesses de comunicao entre duas mqui-
nas tero normalmente um SPI para cada direo de trfego.
6.3.4 Firewalls e Virtual Perimeter NetworkVPN
Uma das vantagens de se definir uma arquitetura segura para o nvel IP a facilidade que se tem
em integra-l ao contexto de um firewall, em especial queles implementados em nvel de rede
[91]. Esta certamente a principal aplicao a ser derivada da especificao do IPsec.
Filtros de pacotes, como so conhecidas estas implementaes de firewalls, precisam ser
capazes de atuar sobre o mesmo nvel que os mecanismos descritos anteriormente, isto , sobre
os drivers da interface de rede. Desta forma quase intuitivo imaginar que um mecanismo possa
ser agregado ao outro em uma nica implementao. Estar-se-ia associando arquitetura segura
a capacidade de efetuar filtragem de pacotes, o que sem dvida bastante conveniente.
Tal implementao pode ser efetuada basicamente de trs maneiras, dependendo de como
as associaes com o firewall so abordadas. Isto equivale a dizer se existe ou no associaes
de segurana entre o firewall e a origem dos pacotes processados por este.
6.3 Arquitetura IP segura - IPsec 70
Quando o firewall no participa de nenhuma associao, este incapaz de efetuar qualquer
verificao relativa criptografia sobre os pacotes processados. Os dados usados para efetuar o
controle de acesso (origem, destino, protocolo de transporte, porta de origem e destino) sobre
os pacotes no podem, portanto, ser verificados (autenticados via AH). A propagao (proxing)
de mensagens SSL
1
um bom exemplo da situao descrita acima.
Uma topologia interessante pode ser construda quando o firewall passa a efetuar as associ-
aes em nome das mquinas protegidas por este. Quando em uso com o AH, os dados utiliza-
dos no processo de controle de acesso e filtragem podem ser autenticados de maneira segura.
Isto confere muito mais credibilidade ao processo de filtragem no firewall.
Organizaes que possuem dois ou mais firewalls conectando redes fisicamente isoladas
atravs da Internet podem fazer uso do ESP em cada ponto de interconexo para criar um tnel
IP cifrado entre as mquinas da mesma organizao. Em termos gerais, esta topologia imple-
menta o conceito de rede de permetro virtual (VPN).
A principal desvantagem desta topologia est justamente no papel centralizador do firewall.
As mquinas internas ficam sujeitas credibilidade do administrador do mesmo e segurana
da estrutura de comunicao interna (roteadores e meio fsico), isto tudo sem levar em conta a
prpria segurana do firewall.
Para eliminar o problema da centralizao de confiana no firewall, pode ser desejvel que
mltiplas averiguaes de criptografia sejam efetuadas entre a origem e o destino de um pacote.
Seria portanto necessrio que associaes fossem definidas em locais distintos, provavelmente
uma no firewall e outra no destino final.
Obviamente mais de um firewall pode estar presente no caminho entre uma origem e um
destino qualquer. Assim, o nmero de associaes estabelecidas pode ser to grande quanto
possa tratar a escalabilidade do protocolo de gerenciamento de chaves utilizado.
1. Protocolo Secure Socket Layer, descrito em detalhes no Captulo 7.
6.4 AH (IP Authentication Header) 71
6.4 AH (IP Authentication Header)
6.4.1 Objetivo
O objetivo do AH oferecer autenticao e integridade aos datagramas IP. Dependendo, no
entanto, dos algoritmos de criptografia utilizados, pode ser possvel obter tambm o conceito de
no repdio. O AH foi propositalmente definido para no oferecer privacidade, evitando assim
possveis restries ao seu uso em pases que probam tal prtica.
6.4.2 Clculo do MAC
1
6.4.2.1 Algoritmo de autenticao
Algoritmos de criptografia fracos, tais como CRC-16, no devem de maneira alguma ser utilizados
pelo AH. Ao invs disto, recomenda-se o uso de funes de hashing matematicamente seguras
(MD5, SHA etc). Para manter a interoperabilidade exigido que toda implementao do proto-
colo AH implemente a funo MD5.
Independentemente do algoritmo utilizado, o MAC da mensagem calculado sobre todo o
datagrama IP. Isto inclui no apenas o cabealho IP, mas tambm todos os demais cabealhos
de outros protocolos e os dados sendo transportados. Os campos e opes do cabealho IP, que
podem ser modificados ao longo do caminho entre sua origem e destino, so preenchidos com
zeros para efeito de clculo pelo algoritmo.
6.4.2.2 Protocolo IPv4
Para o protocolo IPv4 apenas os campos time to live e header checksum precisam ser tratados
de forma especial no clculo do MAC da mensagem AH. Todos os demais campos, incluindo os
referentes ao processo de desfragmentao IP [83] (identification, flags e fragment offset), so
processados normalmente em funo de seus valores originais. Desta forma, mandatrio que
o processo de remontagem dos fragmentos IP acontea antes do processamento local do AH.
Como os pacotes podem estar sujeitos autenticao intermediria (em firewalls, por exem-
plo), sugerido que implementaes do IPv4 faam uso do protocolo Path MTU Discovery
1. Message Authentication Code definido na Seo 4.4.1, pgina 42.
6.4 AH (IP Authentication Header) 72
quando o AH estiver em uso [58], evitando fragmentao ao longo do percurso a ser percorrido
pelo pacote.
6.4.3 Formato do AH (Authentication Header)
O AH deve estar localizado logo aps os cabealhos que so examinados por cada roteador
intermedirio entre uma origem e um destino qualquer, ou seja, aps o prprio cabealho do
protocolo IPv4, como mostram as figuras seguintes:
Next Header (8 bits) - identifica o protocolo que segue o AH. O valor para cada proto-
colo definido em RFC pela IANA (Internet Assigned Number Authority) [82]
Payload Length (8 bits) - comprimento em palavras de 32 bits do MAC
Reserved (16 bits) - campos reservados para uso futuro; devem estar sempre preenchi-
dos com zeros
Security Parameters Index (SPI) - nmero de 32 bits que identifica a associao de
segurana juntamente com o endereo IP de destino
Figura 6.1: Localizao do AH.
Figura 6.2: Descrio do AH.
Cabealho IP A. H. (TCP, UDP etc)
Next Header Reserved Length
Security Parameters Index - SPI
Authentication Data
(Elemento de Autenticao em palavras de 32 bits)
6.5 ESP (IP Encapsulating Security Payload) 73
Authentication Data (n palavras de 32 bits) - MAC, que resultado do algoritmo de
autenticao aplicado sobre o cabealho e os dados do datagrama IP. Naturalmente, o
contedo deste campo depende do algoritmo de autenticao usado pela associao em
questo. Se o resultado do algoritmo no for mltiplo de 32 bits, alguma forma de preen-
chimento (padding) deve ser usada.
6.5 ESP (IP Encapsulating Security Payload)
6.5.1 Objetivo
O objetivo primordial do ESP oferecer privacidade ao contedo dos dados encapsulados em
um datagrama IP. Dependendo do algoritmo e o seu modo de operao (transformao), auten-
ticao e integridade tambm podem ser oferecidos. No entanto, ser mostrado adiante que tais
transformaes no so necessariamente seguras. Portanto, sempre que for requerido autentica-
o e/ou integridade, o AH deve ser utilizado em conjunto com o ESP.
6.5.2 Encapsulamento dos dados
Existem dois modos de encapsular os dados de um datagrama IP. No primeiro, conhecido como
modo de tunelamento, um datagrama IP completo encapsulado dentro de um cabealho ESP.
J no segundo modo de operao, apenas os dados do datagrama IP so encapsulados. Este
modo conhecido como modo de transporte porque, na maioria das vezes, os dados IP fazem
parte de algum protocolo de transporte (TCP ou UDP). No entanto, nada impede que o ESP seja
usado para encapsular protocolos de mais baixo nvel, como por exemplo o protocolo ICMP
(Internet Control Message Protocol).
Com o objetivo de manter a interoperabilidade na Internet, uma transformao especfica
para o encapsulamento dos dados, envolvendo o algoritmo de ciframento DES em modo CBC
[53], foi formalmente definida. Esta transformao deve conseqentemente fazer parte de qual-
quer implementao do mecanismo ESP.
6.5.2.1 Modo de tunelamento
A Figura 6.3 ilustra o ESP, sendo usado em um tnel IP.
Este modo de funcionamento particularmente interessante na criao de redes de permetro
virtual (VPN). O datagrama IP original, aps ter sido cifrado e encapsulado via ESP, colocado
6.5 ESP (IP Encapsulating Security Payload) 74
novamente em outro datagrama IP. Os endereos de origem e destino do datagrama a ser envi-
ado no precisam ser necessariamente idnticos aos do original. Isto possibilita ter alguma pro-
teo, ainda que trivial, contra anlise de trfego. Os endereos de origem e destino usados neste
datagrama podem, por exemplo, ser os de firewalls envolvidos na criao de uma VPN.
6.5.2.2 Modo de transporte
A Figura 6.4 ilustra o ESP sendo usado em modo de transporte.
O segmento do protocolo de nvel superior (TCP, UDP ou ICMP) extrado do datagrama IP
cifrado e, ento, encapsulado aps o cabealho ESP do datagrama IP original.
6.5.3 Autenticao no mecanismo ESP
Como j observado, em situaes onde os conceitos de autenticao e integridade forem dese-
jados, extremamente recomendado o uso do AH em conjunto com o ESP para obter tais pro-
priedades. Dependendo de quais dados se queira autenticar, se todo o datagrama IP ou apenas
a parte cifrada no ESP, a localizao do AH pode conseqentemente variar.
Para autenticar todo o datagrama IP transportado, o AH deve ser posicionado antes do ESP.
O MAC deve ser calculado sobre tanto os dados cifrados no ESP, como sobre os textos claros
dos campos do prprio cabealho IP. Obviamente, o processo de decifragem dos dados prote-
gidos via ESP s deve ser efetuado caso a autenticao tenha sucesso no destino final do data-
grama.
Figura 6.3: ESP em Modo de Tunelamento.
Figura 6.4: ESP em Modo de Transporte.
Datagrama IP original (cifrado) "Novo Cab. IP AH (opcional) ESP
Prot. Sup. ci frado (TCP, UDP) Cab. lP AH (opci onal ) ESP
6.5 ESP (IP Encapsulating Security Payload) 75
Se apenas os dados protegidos pelo ESP, em modo de tunelamento, devem ser autenticados,
o AH deve estar localizado aps o cabealho IP do datagrama original a ser encapsulado (dentro
do ESP). Naturalmente, o MAC calculado sobre este mesmo datagrama antes deste ser cifrado.
Autenticao adicional pode ser derivada em pontos distintos, caso os dois enfoques descri-
tos acima sejam usados em paralelo. Pode ser interessante autenticar todo o datagrama no fire-
wall e os dados encapsulados no ESP apenas no seu destino final, aps este ter sido decifrado.
Neste caso, dois cabealhos AH seriam processados nos moldes descritos, respectivamente, nos
pargrafos anteriores.
Esta dupla autenticao s seria possvel caso no haja fragmentao IP, j que tanto o AH
como o ESP s podem ser processados aps a completa remontagem dos fragmentos IP.
6.5.4 Formato do ESP (Encapsulating Security Payload)
O ESP deve estar localizado logo aps os demais cabealhos IP, incluindo o prprio AH, con-
forme ilustrado a seguir:
A figura seguinte, por sua vez, ilustra em maiores detalhes o formato do cabealho ESP:
O campo SPI, cuja finalidade a mesma que no mecanismo AH, identifica juntamente com
o endereo de destino a associao responsvel por determinar a transformao a ser aplicada
sobre os dados contidos no campo seguinte.
Alm dos campos mostrados acima, podem existir outros, especficos para uma determinada
transformao. O SPI o nico campo obrigatrio e independente da transformao em uso.
Figura 6.5: Localizao do Cabealho ESP.
Figura 6.6: Cabealho ESP.
Dados cifrados Cabealho lP Outros Cab. lP (AH) ESP
Security Parameters Index (SP) - 32 bits
Dados cifrados (encapsulados) - tamanho varivel
6.6 Anlise de segurana 76
6.6 Anlise de segurana
A definio da arquitetura IPsec representa, sem dvida, um novo patamar de segurana para a
estrutura do conjunto de protocolos TCP/IP. Entretanto, o IPsec est sujeito a uma srie de outras
vulnerabilidades que, porm, so bem mais sutis e sofisticadas.
6.6.1 Algoritmos de criptografia
Deve ficar claro que a segurana dos mecanismos at ento apresentados depende diretamente
i) da qualidade dos algoritmos de criptografia escolhidos; ii) do tamanho e qualidade das chaves
adotadas; iii) da segurana dos protocolos de gerenciamento de chaves em uso; iv) e da correta
implementao e depurao dos elementos mencionados acima.
6.6.2 Sistema operacional
A segurana do sistema operacional e programas de suporte em uso so de crucial importncia
para a segurana de qualquer sistema de criptografia. Isto porque, na maioria das vezes, estes
so responsveis, dentre outras coisas, por manter de maneira segura as chaves de sesso e pri-
vadas em memria.
A importncia da segurana do sistema operacional aumenta em ambientes multi-usurios,
onde sempre podem existir pessoas mal intencionadas, interessadas em quebrar a segurana do
sistema. A existncia de cavalos de Tria e outras ameaas do gnero [101] constituem tambm
uma preocupao constante neste tipo de ambiente.
6.6.3 Ataques baseados em recorte e colagem
Ataques de recorte e colagem sobre o fluxo de dados da arquitetura IP segura conseqncia
das seguintes vulnerabilidades:
propriedades intrnsecas do modo de operao dos algoritmos de criptografia, em espe-
cial as do modo CBC
ausncia de mecanismos especficos para verificao de integridade dos dados transmiti-
dos (AH ausente)
6.6 Anlise de segurana 77
gerenciamento de chaves definido por mquina, ou seja, todos os usurios de uma deter-
minada mquina compartilhando a mesma chave para um mesmo destino; neste caso,
ataques de texto escolhido (chosen plain text attack) podem ser facilmente efetuados por
usurios locais
Quando factvel, este tipo de ataque pode ser usado para decifar o contedo dos pacotes
IPsec e at mesmo para sequestrar sesses de protocolos superiores. Na verdade, uma srie de
outras vulnerabilidades tornam-se tambm expostas [95].
Um ataque de recorte e colagem de mensagem pode ser facilmente implementado se o
gerenciamento de chaves for definido por mquina, ou seja, se todos os usurios compartilham
a mesma chave de sesso, e caso um mecanismo explcito de autenticao (MAC) no esteja
sendo usado.
O intruso deve interceptar uma mensagem legtima e combin-la com uma outra mensagem
enviada por este anteriormente. A idia compor uma terceira mensagem a partir da original e
a montada pelo intruso, preservando as informaes confidenciais da primeira (por exemplo
senha ou cookie de autenticao), e alterando blocos especficos que foram maliciosamente pro-
duzidos na mensagem enviada pelo intruso. Estes blocos podem ser partes da mensagem que
contenham informao cuja alterao beneficie o intruso, como por exemplo o valor de um
depsito bancrio. Esta mesma tcnica pode tambm ser usada para implementar seqestros de
sesso [95].
Note que ambas as mensagens foram cifradas com a mesma chave de sesso, e que neces-
srio ao intruso um conhecimento detalhado da estrutura da mensagem original enviada. Devido
s propriedades auto-regenerativas do modo CBC, somente o primeiro bloco da parte da men-
Figura 6.7: Ataque de Recorte e Colagem.
IP ESP Mensagem OriginaI (t
)
IP ESP Mensagem Enviada peIo Intruso (t
)
IP ESP Mensagem AIterada (t
)
6.6 Anlise de segurana 78
sagem substituda no corretamente decifrado. Os demais dados so prontamente decifrados
com os valores escolhidos (ataque de texto escolhido) pelo intruso em sua mensagem.
No quadro acima supe-se que o AH no esteja em uso. Contudo, mesmo se houver verifi-
cao de integridade e esta for efetuada atravs do resultado de uma funo de hashing cifrado
juntamente com o fluxo de dados, este pode ser tambm vtima de ataques de recorte e colagem.
Logo recomendado o uso de tcnicas, como keyed MD5 [61], para gerao de MACs confiveis.
6.6.4 Repetio de mensagens
Os mecanismos de segurana da arquitetura IP no especificam diretamente nenhuma forma de
proteo contra ataques de repetio de mensagens. Recomenda-se que tal problema seja tratado
pelo mecanismo AH, incluindo-se nmeros seqenciais no clculo do MAC, ou de maneira espe-
cfica pela camada de aplicao.
6.6.5 Protocolos especficos
Um problema particular existe para o protocolo ICMP. possvel que uma mensagem de erro
ICMP seja to grande, que os dados retornados no possam incluir todo o datagrama IP que
gerou tal mensagem. Em tal caso, a mquina alvo da mensagem ICMP no ser capaz de auten-
ticar a poro do datagrama IP enviada dentro do pacote ICMP. Fica ento, a critrio de cada
mquina, aceitar esta poro do datagrama IP no autenticada para processamento do proto-
colo ICMP, correndo o risco desta ser uma fraude, ou rejeitar possivelmente uma mensagem leg-
tima.
Esta falha sugere cautela quanto aplicabilidade genrica e transparente do IPsec para os
protocolos superiores da arquitetura TCP/IP.
6.6.6 Defesas
Via de regra, todo cuidado deve ser tomado no sentido de que todas as especificaes do pro-
tocolo IPsec sejam corretamente implementadas e estejam livres de falhas de software, tais como
estouro de buffer, race conditions etc.
Todos os ataques baseados em recorte e colagem podem ser simplesmente eliminados caso
algum mecanismo de verificao de integridade seja empregado. Neste sentido, o uso do meca-
nismo AH imprescindvel.
6.7 Gerenciamento de chaves na arquitetura IP segura 79
Por outro lado, tanto a criptoanlise diferencial [19] [22] como a maioria das vulnerabilidades
aqui apresentadas so em grande parte devidas facilidade que se tem para efetuar ataques de
texto conhecido e escolhido. A melhor maneira de eliminar esta fraqueza evitar o gerencia-
mento de chaves por mquina. Idealmente, uma nova chave de sesso deveria ser definida para
cada conexo de usurio (processo) aberta.
6.7 Gerenciamento de chaves na arquitetura IP
segura
Uma questo abordada com relao aos mecanismos AH e ESP, dizia respeito ausncia de
especificao para o gerenciamento de chaves na definio da arquitetura IP segura. Os objetivos
deste desacoplamento eram permitir a implementao de diversos tipos de mecanismos de dis-
tribuio de chaves distintos, como tambm a fcil substituio destes por outros mais atuais e
supostamente melhores.
Uma possibilidade ter o estabelecimento de associaes de segurana fora do canal IP de
dados, ou seja, fora da banda de dados (out of band - OOB). As informaes referentes ao esta-
belecimento de chaves seriam transmitidas atravs de algum mecanismo de mais alto nvel, sobre
UDP ou TCP, em uma sesso parte.
O estabelecimento de associaes de segurana fora da banda de dados permite produzir
mecanismos de distribuio de chaves to sofisticados quanto se queira. Por outro lado, deve ser
computado um atraso na comunicao (delay), toda vez que um novo par de chaves tiver que
ser definido. O protocolo Photuris um exemplo de mecanismo, ainda em fase de especificao
por parte da IETF (Internet Engineering Task Force) [54], que segue os conceitos tratados acima.
Outros mecanismos, como o protocolo SKIP [2], utilizam a prpria banda do canal de comu-
nicao do protocolo IP para transportar informaes necessrias ao estabelecimento de associ-
aes de segurana.
6.8 Simple Key Management for Internet Protocols
(SKIP)
Como indica a prpria denominao, trata-se de uma estrutura simples de gerenciamento de cha-
ves. Por ter sido projetada para protocolos orientados a datagramas, como o IP, o gerenciamento
6.8 Simple Key Management for Internet Protocols (SKIP) 80
de chaves ocorre no nvel de pacotes, na prpria banda de dados do protocolo. Isto difere o
SKIP da maioria dos mecanismos de gerenciamento de chaves que so normalmente orientados
sesso.
De fato, o SKIP no requer nenhuma comunicao prvia entre entidades, para o estabele-
cimento de um canal seguro de comunicao atravs dos mecanismos AH e/ou ESP. Isto pro-
porciona uma reduo no atraso de comunicao (delay) s custas de uma deteriorao no uso
da largura de banda, j que todo pacote transmitido deve conter, dentre outras coisas, uma cpia
cifrada da chave de sesso e demais parmetros da sesso em questo.
6.8.1 Descrio geral
O SKIP utiliza basicamente dois conceitos anteriormente abordados: DH Key Agreement Protocol
e certificados assinados (ver Seo 5.5, pgina 60), usados para obter e autenticar os elementos
pblicos (chave pblica) do algoritmo anterior.
O formato dos certificados, bem como sua infra-estrutura de distribuio, podem variar de
acordo com o padro escolhido: certificados X.509, certificados PGP, e DNS Seguro etc. Na
ausncia de uma infra estrutura de distribuio universal, tal como um servio de diretrios
X.500, foi definida uma estrutura prpria atravs da especificao Certificate Discovery Protocol
[3]. Este protocolo destina-se obteno de certificados assinados de um elemento qualquer na
rede. Conforme determina a RFC1825 [8], so definidos tambm procedimentos manuais para o
estabelecimento de chaves pblicas.
Partindo do pressuposto de que cada entidade conhea o elemento pblico DH do destino
ao qual esta queira se comunicar, uma chave mestra de longa durao K
p
pode ser automatica-
mente calculada por este par de entidades. De acordo com o demonstrado na Seo 5.3,
pgina 56:
K
xy
= (g
x
)
y
mod p
onde g
x
mod p e g
y
mod p so os elementos pblicos destes ns.
Finalmente, uma chave de sesso K
s
, gerada aleatoriamente, usada para cifrar o datagrama
IP, de acordo com o especificado pelos mecanismos ESP e/ou AH. A chave de sesso K
s
ento
cifrada com a chave mestra K
xy
. Apesar de cada pacote ter sua prpria chave de sesso, no
6.8 Simple Key Management for Internet Protocols (SKIP) 81
necessrio que estas sejam distintas para cada pacote. As chaves podem ser mudadas de acordo
com o definido na poltica de gerenciamento de chaves.
Ao receber pacotes associados ao protocolo SKIP, o primeiro passo a ser efetuado pelo
receptor do pacote obter e verificar o certificado DH do emissor do pacote. De posse do ele-
mento pblico do originador da mensagem, a chave mestra K
xy
computada e usada para deci-
frar a chave de sesso K
s
. Finalmente a chave de sesso K
s
usada para decifrar o restante do
pacote IP recebido.
A Figura 6.8, ilustra um pacote SKIP/AH/ESP:
6.8.2 Gerao da chave mestra K
xy
Na verdade, a chave K
xy
derivada dos bits de mais baixa ordem da chave secreta definida pelo
algoritmo DH. Isto porque o valor computado pelo algoritmo DH deve ser superior atualmente
a 1024 bits para que o mesmo seja seguro, e as chaves dos sistemas de criptografia simtricos
normalmente no ultrapassam esta cifra. Tipicamente temos o DES com chaves de 64 bits, DES
triplo com trs de 64 bits e IDEA com chaves de 128 bits [79].
Do ponto de vista de segurana do sistema, importante que a chave mestra seja alterada
com uma certa freqncia. Primeiro para dificultar a criptoanlise da chave mestra, diminuindo
sua exposio. Segundo, porque elimina a possibilidade de uso de chaves de sesso comprome-
tidas e ataques de repetio de mensagens.
No entanto, para alterar a chave K
xy
necessrio revogar um certificado ou que o mesmo
tenha sua validade vencida. O conceito de certificados, no entanto, pressupe que estes possuam
uma certa durabilidade. A maneira encontrada para atualizar K
xy
, sem atualizar certificados, foi
atravs da seguinte relao:
K
xyn
= h(K
xy
, n),
onde n um contador e h uma funo de hashing qualquer.
Figura 6.8: Pacote SKIP/AH/ESP.
Dados Cifrados P em Claro
SKP: [K
]K
AH/ESP
Al gori th
Crypto Al g MAC Al g Comp Al g
K
encrypted by K
TCP/P Layer
Aplicaes
7.2 Secure Socket Layer (SSL) 90
7.2.1.1 Camada de transporte (record layer)
A camada de transporte
1
do SSL usada em todas as comunicaes do mesmo, incluindo as men-
sagens de estabelecimento de sesso (handshake), mensagens de erro e transferncia de dados
das aplicaes. De fato, esta camada depende de algum outro protocolo na camada de trans-
porte, como o TCP, para transmisso de dados de maneira confivel.
Os dados a serem transmitidos so fragmentados em blocos de tamanho fixo, opcionalmente
comprimidos e finalmente cifrados, conforme definido na transformao de criptografia vigente
(estado corrente). Esta transformao compreende o clculo do MAC (Message Authentication
Code) do fragmento e o ciframento propriamente dito. Estas operaes so determinadas pelo
conjunto de algoritmos em uso, denominado de CypherSpec, definidos durante a fase de estabe-
lecimento de sesso.
O formato padro das mensagens SSL ilustrado a seguir (Figura 7.2):
Record Type (1 byte) - Indica um dos seguintes tipos de mensagem: Handshake, Alert,
Change CypherSpec ou Data (dados de protocolos superiores encapsulados)
Version (2 bytes) - SSLv2.0 ou SSLv3.0 (atual)
Length (2 bytes) - Tamanho do pacote de dados cifrados em bytes
1. No confundir a camada de transporte do SSL com o conceito de transporte do modelo OSI.
Figura 7.2: Formato de Mensagem SSL.
CipherText
(Length bytes)
MAC
Padding Padding-lgth
Record Type Version Length
7.2 Secure Socket Layer (SSL) 91
CipherText (Length bytes) - Dados cifrados
MAC (0, 16 ou 20 bytes, dependendo da funo de hash em uso) - Message Authentica-
tion Code dos dados enviados
Caso o algoritmo em uso seja um cifrador de blocos, como por exemplo o DES, pode ser
necessrio alguma forma de preenchimento (padding) para que o tamanho dos dados a serem
cifrados seja mltiplo do tamanho do bloco do mesmo. Neste caso, o campo CipherText possuir
tambm os seguintes campos:
Padding (Padding-length bytes) - preenchimento para que o tamanho dos dados seja
mltiplo do tamanho do bloco do algoritmo simtrico em uso
Padding-length (1 byte) - tamanho do padding usado
7.2.1.2 Message Authentication Code (MAC)
O MAC tem a funo crucial de oferecer camada de transporte os princpios de integridade e
autenticao. Evita tambm, no caso especfico do SSL, ataques de repetio de mensagens. Para
tanto o MAC calculado atravs da seguinte frmula:
hash(MAC_write_secret + pad_2 +
hash(MAC_write_secret + pad_1 + pad_1 + seq_num + length + content)),
onde:
MAC_write_secret - derivado do segredo comum estabelecido (ver Seo 7.2.1.3)
Pad_1 e pad_2 - paddings (preenchimento) fixos
Seq_num - nmero seqencial da mensagem em questo
Length e Content - respectivamente o tamanho e contedo da mensagem a ser encapsu-
lada
Hash - funo de hash derivada do CypherSpec corrente
7.2.1.3 Protocolo de estabelecimento de sesso (handshake protocol)
As mensagens SSL so sempre encapsuladas, sobre a camada de transporte SSL, conforme defi-
nido pelo CipherSpec corrente, ou seja, pelo conjunto de algoritmos de criptografia definidos. No
7.2 Secure Socket Layer (SSL) 92
entanto, o CipherSpec inicial , por default, nulo e s ser alterado a partir do prprio protocolo
de estabelecimento de sesso. Em outras palavras, as mensagens iniciais do protocolo so envi-
adas em claro, at que um novo CipherSpec seja definido.
O estabelecimento de sesso dividido nas seguintes fases: fase de HELLO, opcionalmente
fase de autenticao de cliente, estabelecimento de segredo compartilhado (master secret),
mudana de CipherSpec e finalizao. Os pargrafos seguintes descrevem cada fase em maiores
detalhes. Em seguida ilustrado um fluxo de mensagens padro.
O cliente inicia o protocolo atravs da mensagem CLIENT_HELLO seguida de um
SERVER_HELLO por parte do servidor. Estas mensagens estabelecem os seguintes atributos:
verso do protocolo a ser usada (a mais recente comum a ambos), identificador de sesso (ses-
sionID), CipherSuite (CipherSpec mais algoritmo de troca de chaves) e dois valores aleatrios de
28 bytes. Em seguida o servidor envia seu certificado, opcionalmente requer a autenticao do
cliente com a mensagem CERTIFICATE _REQUEST, e finaliza esta fase atravs da mensagem
HELLO_DONE.
Se o cliente tiver recebido a mensagem CERTIFICATE_REQUEST, este deve enviar seu certi-
ficado pblico. Um segredo compartilhado ento estabelecido entre o cliente e o servidor atra-
vs da mensagem CLIENT_KEY_EXCHANGE. O contedo desta mensagem depende do
algoritmo assimtrico definido durante a fase de HELLO. Se a autenticao de cliente foi reque-
rida, este deve tambm ser autenticado atravs da mensagem CERTIFICATE_VERIFY, que digi-
talmente assinada com a chave privada deste.
Uma mensagem de mudana do CipherSpec (CHANGE_CIPHER_SPEC) enviada pelo cliente
ao servidor. O CipherSpec acordado durante a fase de HELLO finalmente estabelecido. O cli-
ente imediatamente envia uma mensagem de finalizao (FINISH), encapsulada pelos novos
algoritmos e chaves estabelecidos anteriormente. Em resposta, o servidor tambm envia as men-
sagens de mudana de CypherSpec e finalizao para o cliente. A partir deste momento, cliente
e servidor podem transferir dados de aplicaes atravs do canal seguro previamente estabele-
cido.
A Figura 7.3, pgina 93, ilustra o fluxo de mensagens no estabelecimento de uma sesso SSL
padro:
7.2 Secure Socket Layer (SSL) 93
Figura 7.3: Estabelecimento de sesso; as mensagens pontilhadas so opcionais.
CLIENT_HELLO:
Verso, Aleatrio e
Algoritmos (CipherSuite)
SERVER_HELLO:
Verso, Aleatrio, Algoritmos
(CipherSuite) e SessionID
SERVER_CERTIFICATE:
Certificado do Servidor
CERTIFICATE_REQUEST
Requisio de Autenticao
do Cliente
SERVER_HELLO_DONE:
Finaliza Fase de helo
CLIENT_CERTIFICATE:
Certificado do Cliente
CLIENT_KEY_EXCHANGE:
Pre-master Key
CLIENT_VERIFY:
Autenticao do Cliente
CHANGE_CIPHER_SPEC:
Mudana de CipherSpec
FINISH:
Finaliza HANDSHAKE
CHANGE_CIPHER_SPEC:
Mudana de CipherSpec
FINISH:
Finaliza HANDSHAKE
7.2 Secure Socket Layer (SSL) 94
7.2.1.4 Restabelecimento de sesso
Caso uma sesso j tenha sido previamente estabelecida, o cliente pode pedir o restabelecimento
desta enviando uma mensagem CLIENT_HELLO com o campo sessionID identificando a mesma.
Para o estabelecimento de novas sesses o sessionID deve ser nulo.
O servidor dever fazer uma busca do sessionID recebido em seu cache de sesses estabele-
cidas. Caso o resultado da busca seja positivo, o servidor pode optar por aceitar o pedido de
restabelecimento de sesso. Neste caso, o servidor retornar ao cliente uma mensagem de
SERVER_HELLO com o mesmo valor do sessionID recebido. Em seguida ambas as partes devem
prosseguir para a fase de finalizao de estabelecimento de sesso, enviando mensagens de
CHANGE_CIPHER_SPEC e FINISH.
7.2.1.5 Mensagens SSL
Segue abaixo uma descrio resumida das principais mensagens SSL.
Client Hello
ClientVersion - verso com a qual o cliente deseja se comunicar; deve ser a mais recente
suportada pelo mesmo
Timestamp - data/hora da gerao da mensagem
Random - aleatrio de 28 bytes gerado pelo cliente
SessionID (opcional) - identificador da sesso corrente, caso uma j tenha sido estabele-
cida previamente
CipherSuite - algoritmo de troca de chaves e lista de CipherSpec (conjunto de algoritmos
de criptografia) suportados pelo cliente; em outras palavras, algoritmos de troca de cha-
ves, autenticao, ciframento e clculo de MACs
Server Hello
ServerVersion - deve ser a maior suportada pelo servidor que seja menor ou igual
requisitada pelo cliente (clientVersion)
Timestamp - data/hora da gerao da mensagem
Random - aleatrio de 28 bytes gerado pelo servidor
7.2 Secure Socket Layer (SSL) 95
SessionID - identificador da sesso corrente; se o sessionID enviado pelo cliente for no
nulo e o mesmo for encontrado no cache do servidor, este pode determinar o prossegui-
mento da sesso (resumed session) atravs dos parmetros anteriormente definidos para
tal sesso; caso contrrio, um novo sessionID definido
CipherSuite - algoritmo de troca de chaves e lista de CipherSpec (conjunto de algoritmos
de criptografia) suportados pelo cliente
Server and Client Certificate
Certificado pblico do servidor. Deve seguir o padro definido pelo CipherSpec escolhido. Tipi-
camente um certificado X.509v3.
Client Key Exchange
O contedo desta mensagem depende do algoritmo de troca de chave escolhido. Tipicamente
um segredo compartilhado (premaster key) gerado aleatoriamente no cliente e transmitido
cifrado pela chave pblica do servidor; ou, atravs de mecanismos especficos de estabeleci-
mento de chaves, tais como o mecanismo Diffie-Hellman Key Agreement Protocol (ver Seo 5.3,
pgina 56).
Certificate Verify
Esta mensagem usada explicitamente para autenticao de clientes. Aps enviar seu certificado
pblico, o cliente, quando requisitada sua autenticao junto ao servidor, deve autenticar-se atra-
vs de sua chave privada. Assim, uma assinatura digital produzida pelo cliente, atravs de sua
chave privada, sobre todas as mensagens da fase de Handshake recebidas e enviadas at o pre-
sente momento.
Finished
Esta a primeira mensagem enviada cifrada atravs dos algoritmos e chaves anteriormente esta-
belecidos. Como as mensagens anteriores da fase de Handshake so enviadas em claro, um ata-
cante pode alterar ou substituir tais mensagens com o intuito de influenciar na escolha dos
algoritmos a serem usados. Provavelmente, por algum algoritmo que este tenha maior facilidade
em atacar.
7.2 Secure Socket Layer (SSL) 96
Alm de verificar se o processo de autenticao e troca de chave ocorreu corretamente, a
mensagem FINISH tm por objetivo detectar o ataque descrito acima. Isto feito calculando o
hash de todas as mensagens da fase de Handshake, conforme descrito abaixo, e comparando-o
com o valor recebido da outra parte (cliente ou servidor) na prpria mensagem FINISH:
hash(master_secret + pad2 + hash(handshake_messages + sender + master_secret +
pad1))
Desta forma, caso alguma mensagem da fase de Handshake seja alterada, as partes envolvidas
sero capazes de identificar a alterao e assim recusar o estabelecimento da sesso em questo.
7.2.1.6 Tratamento de erros
O protocolo SSL possui uma camada especfica, conhecida como Alert Protocol, para o trata-
mento de erros e finalizao de sesso. Existem dois tipos bsicos de mensagens de erros: war-
nings e fatal.
Mensagens do tipo fatal (fatal) implicam na imediata finalizao da sesso corrente. Todos
os parmetros relacionados sesso corrente devem ser eliminados dos caches do cliente e do
servidor. A Tabela 7.1 ilustra as principais mensagens do protocolo de erros (Alert Protocol):
7.2.1.7 Algoritmos oferecidos
Como j mencionado, o SSL independente de algoritmos especficos. Estes podem ser negoci-
ados durante a fase de HELLO atravs dos CipherSuite oferecidos. Um CipherSuite define um
algoritmo de troca de chaves e CipherSpec correspondente (demais algoritmos de criptografia).
mensagem tipo descrio
close_notify closure Finaliza sesso
unexpected_message fatal Mensagem inesperada (fora de ordem) recebida
bad_record_mac fatal MAC incorreto. Mensagem adulterada
handshake_failure fatal Destinatrio foi incapaz de negociar parmetros de segurana
requeridos pelo rementente
no_certificate warning Destinatrio no possui certificado
bad_certificate fatal Certificado corrompido, assinatura no foi verificada corretamente
Tabela 7.1: Mensagens de Erro.
7.2 Secure Socket Layer (SSL) 97
Para o algoritmo de troca de chave baseado no RSA, os seguintes CipherSpecs encontram-se
padronizados e codificados:
CipherSuite SSL_RSA_WITH_NULL_MD5
CipherSuite SSL_RSA_WITH_NULL_SHA
CipherSuite SSL_RSA_EXPORT_WITH_RC4_40_MD5
CipherSuite SSL_RSA_WITH_RC4_128_MD5
CipherSuite SSL_RSA_WITH_RC4_128_SHA
CipherSuite SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
CipherSuite SSL_RSA_WITH_IDEA_CBC_SHA
CipherSuite SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
CipherSuite SSL_RSA_WITH_DES_CBC_SHA
CipherSuite SSL_RSA_WITH_3DES_EDE_CBC_SHA
Note que novos algoritmos podem ser agregados ao protocolo.
7.2.1.8 Chaves de sesso
Durante a fase de HANDSHAKE (mensagem CLIENT_KEY_EXCHANGE) um segredo comparti-
lhado, denominado premaster_secret, estabelecido entre o cliente e o servidor atravs do algo-
ritmo de troca de chave escolhido. A partir deste segredo inicial derivado um segredo mestre
(master secret) do qual so derivadas as chaves de sesso e os segredos para o clculo do MAC
das mensagens.
Finalmente, o seguinte conjunto de chaves gerado: client_write_MAC_secret,
server_write_MAC_secret, client_write_key, server_write_key, client_write_IV, server_write_IV.
Como existe uma chave para escrita e outra para leitura a chave server_write_key equivale a
client_read_key, e server_read_key equivale a client_write_key.
A Figura 7.4, pgina 98, ilustra o fluxo de gerao de chaves e segredos. Abaixo, so especi-
ficadas as principais frmulas de gerao destas:
master_secret =
MD5(pre_master_secret + SHA('A' + pre_master_secret +
ClientHello.random + ServerHello.random)) +
MD5(pre_master_secret + SHA('BB' + pre_master_secret +
ClientHello.random + ServerHello.random)) +
MD5(pre_master_secret + SHA('CCC' + pre_master_secret +
ClientHello.random + ServerHello.random))
7.2 Secure Socket Layer (SSL) 98
onde ClientHello.random e ServerHello.random so aleatrios enviados atravs das mensagens
de HELLO.
Em seguida, os segredos MAC e chaves de sesso so seqencialmente extrados a partir da
varivel key_block:
key_block =
MD5(master_secret + SHA('A' + master_secret + ServerHello.random +
ClientHello.random)) +
MD5(master_secret + SHA('BB' + master_secret + ServerHello.random +
ClientHello.random)) +
MD5(master_secret + SHA('CCC' + master_secret + ServerHello.random +
ClientHello.random)) +
... (continua at que todo o Key_Block seja produzido)
7.2.2 Vulnerabilidades
7.2.2.1 Interface com aplicao
Mesmo sendo previsto pela especificao do SSL, aplicaes que no possuam uma interface de
comunicao direta com o protocolo SSL no so capazes de autenticar requisies de clientes,
atravs dos mecanismos previstos na especificao do mesmo (assinatura digital e certificados
pblicos). Isto ocorre particularmente para aplicaes desenvolvidas sobre o protocolo HTTPS.
Figura 7.4: Fluxo de Gerao de Chaves.
PremasterSecret MasterSecret
ClientMACSecret
ServerMACSecret
ClientKey
ServerKey
Key_Block
TCP/IP Layer
Browser:
HTML, Java, PIugin, ActiveX...
B.5 Link spoofing 153
B.5 Link spoofing
Na arquitetura SSL a autenticao de servidores efetuada atravs de certificados pblicos emi-
tidos por entidades certificadoras (Certificate AuthorityCA), cujos prprios certificados encon-
tram-se estaticamente armazenados nas aplicaes clientes (browsers). Este esquema oferece
uma maneira segura de associar uma URL, por exemplo https://wwws.companiax.com, ao
seu respectivo servidor seguro. Isto se o usurio explicitamente abrir a URL em questo. Neste
caso, um canal seguro de comunicao estabelecido entre o servidor citado na URL e o usurio
que a referenciou.
No entanto, uma prtica extremamente comum na Internet navegar de referncia em re-
ferncia (link) at uma pgina transacional segura obtida atravs do protocolo HTTPS. Como a
pgina que referencia o link seguro transferida atravs do protocolo HTTP, esta est sujeita s
vulnerabilidades do protocolo TCP/IP. Ou seja, a referncia ao link seguro original pode ser al-
terada em trnsito ou atravs de tcnicas de personificao de mquinas descritas em [7]. Assim,
um usurio, ao acessar a referncia adulterada (possivelmente tambm uma referncia HTTPS),
pode ser conduzido a uma outra pgina, provavelmente em outro servidor e possivelmente com
o mesmo aspecto grfico da referncia original.
Se a referncia adulterada for tambm uma referncia HTTPS, ento o indicador de conexo
segura nos browsers comerciais mostrar-se- como o esperado. Neste caso, a nica proteo ofe-
recida ao usurio a visualizao dos atributos de segurana (certificado SSL do servidor) da
URL em questo, o que constitui prtica pouco comum entre a maioria dos usurios.
B.6 Protocolo HTTP-HTML
O HTTP um protocolo simples orientado a mensagens. O cliente estabelece uma conexo TCP
com um servidor, envia um comando, e recebe os dados do servidor. A conexo TCP finalizada
pelo servidor assim que os dados so transmitidos
1
. A mensagem retornada pelo servidor nor-
malmente um documento HTML com referncias (links) para outros documentos HTML, ima-
gens, arquivos PostScript, arquivos texto etc.
1. A verso 1.1 do protocolo HTTP cria o conceito de conexes persistentes, onde vrias mensagens so enviadas
em uma nica conexo TCP [1].
B.7 Componentes ativos 154
Os principais comandos HTTP so os mtodos GET e POST. O mtodo GET retorna qualquer
dado associado URL em questo. O mtodo POST, por sua vez, usado para enviar correio
eletrnico (e-mail), e principalmente formulrios eletrnicos preenchidos interativamente pelos
usurios. Este o nico comando que envia parmetros de requisio.
Os formulrios eletrnicos construdos atravs das linguagens HTML e Java, e de componen-
tes ativos formatam os parmetros em uma sintaxe conhecida informalmente como label-valor.
Nesta estrutura cada parmetro recebe um identificador ao qual o valor, aps ser codificado
1
,
ser associado. O caracter = associa um label a um determinado valor e o caracter & separa
os pares label-valor. O objetivo deste padro disponibilizar um protocolo universal de troca
de dados entre aplicaes cliente-servidor sem estrutura pr-definida.
A interface entre o servidor Web e as aplicaes residentes na mquina servidora feita atra-
vs de componentes conhecidos genericamente como CGIs (Common Gateway Interface). Os
cabealhos HTTP, comando e parmetro (comando POST) so normalmente obtidos atravs de
variveis de ambiente e repassados s aplicaes que interpretam e tratam a estrutura label-valor.
Os CGIs podem ser fisicamente executveis ou extenses dos servidores Web na forma de bibli-
otecas compartilhadas (Microsoft ISAPI e Netscape NS-API), dentre outras tecnologias que fogem
ao escopo deste trabalho.
B.7 Componentes ativos
Entende-se por componentes ativos todo e qualquer cdigo atualizado dinamicamente nos cli-
entes Internet (browsers) que tenha acesso a recursos de sistema, tais como os recursos de
entrada e sada (I/O) e arquivos. Claramente, tais contedos, normalmente embutidos no con-
texto de pginas HTML, podem introduzir vrus, cavalos de Tria e outros elementos nocivos em
seus sistemas hospedeiros. Os componentes ativos mais difundidos so os controles ActiveX
(Microsoft) [8] e Plugins (Netscape) [9].
Normalmente a atualizao/instalao de componentes ativos nos browsers somente per-
mitida se os mesmos forem eletronicamente assinados com a chave pblica de alguma entidade
confivel (Certificate AuthorityCA). No entanto, a exibio do certificado da entidade emissora
do contedo ativo somente prova sua autenticidade, mas no diz a nada a respeito do contedo
1. Por default, o padro normalmente utilizado pelos browsers e aplicaes em geral URL encoding [10].
B.8 Arquitetura de aplicao Web segura 155
em si. Assim a melhor proteo simplesmente desabilitar a execuo de contedos ativos nos
browsers, ou filtr-los nos firewalls quando estes estiverem disponveis.
B.8 Arquitetura de aplicao Web segura
Infelizmente o processo de construo de aplicaes Web seguras menos determinstico do
que aparenta em uma primeira anlise. Entretanto, algumas diretrizes bsicas podem tornar este
trabalho mais palpvel no contexto de aplicaes Web, isto , no ambiente HTTPS. A arquitetura,
projeto e programao em um ambiente qualquer influi diretamente na qualidade e segurana
do sistema desenvolvido. De uma maneira geral, o ambiente Web constitudo de uma interface
Web, um servidor de aplicao e os sistemas legados, conforme ilustrado na Figura B.2.
B.8.1 Interface Web
Refere-se a todos os aplicativos e servios acessveis via Internet, tais como o servidor Web pro-
priamente dito, servidor FTP, correio eletrnico etc. Como estes elementos tm contato direto
com o mundo externo e com a rede interna, eles devem estar instalados em mquinas fortificadas
(bastion hosts) e isolados em uma zona desmilitarizada [10].
Desta forma, apenas os servios disponibilizados externamente tero regra de acesso definida
no firewall para as mquinas na zona desmilitarizada, e estas por sua vez acessaro apenas os
servios de aplicao definidos na rede interna. Assim, mesmo que a interface Web seja compro-
metida por falhas de software (bug no servidor Web, por exemplo), os sistemas legados e rede
interna no sero comprometidos. Um firewall que disponha de uma sub-rede exclusiva para os
Figura B.2: Arquitetura de aplicao Web segura em ambiente tpico.
IInternet
Interface Web
Firewall
Aplicao Legado
B.8 Arquitetura de aplicao Web segura 156
bastion hosts, com controle de acesso tanto para a Internet quanto para a rede interna, tecni-
camente denominado de screened subnet [10].
Esta ltima premissa de segurana somente ser verdadeira se uma outra premissa de desen-
volvimento de sistemas for respeitada: se a camada de apresentao, que corresponde na pr-
tica construo de pginas HTML dinmicas, estiver perfeitamente isolada do contexto de
aplicao na interface Web. Isto porque os mecanismos de autenticao e de acesso ao banco
de dados e sistemas legados no devem ser acessveis pela camada de apresentao. Alm disso,
como o processo de alterao de visual muito dinmico e freqente, erros neste processo
poderiam ocasionar falhas de segurana, caso alguma lgica de aplicao estivesse acoplada ao
mesmo.
B.8.2 Servidor de aplicao.
O servio de aplicao deve ser responsvel por disponibilizar e atualizar as informaes reque-
ridas pela Web, assegurando integridade e segurana s mesmas. Novamente, para assegurar o
cumprimento de suas responsabilidades este servio deve, preferencialmente, ser estruturado em
camadas.
De fato, o servio de aplicao pode ser entendido como um servidor transacional que
dever efetuar trs verificaes bsicas: identificar o componente que implementa a funo re-
querida (por exemplo, uma consulta qualquer), verificar as permisses de acesso e instanciar/
executar a funo requerida. Alm disso, servios bsicos podem ser disponibilizados aos com-
ponentes especficos e camada de controle de acesso. Tipicamente temos os servios de ge-
renciamento de sesso, autenticao e camada de acesso ao banco de dados. A Figura B.3 ilustra
esta arquitetura:
Note que nesta arquitetura as funes do sistema somente podero ser executadas atravs do
servidor transacional, que automaticamente cuidar de efetuar as devidas verificaes de segu-
rana e controle de acesso. Desta forma, novas funcionalidades podem ser agregadas automati-
camente sem riscos de falhas de segurana e sem o custo de implementao de mecanismos de
segurana especficos.
B.8 Arquitetura de aplicao Web segura 157
B.8.3 Controle de sesso
Esta camada cria a abstrao de sesso para os protocolos no orientados conexo (tipicamente
HTTP) e comandos assncronos. Associa o contexto de sesso (sessionID) com os parmetros de
autenticao (usurio, mtodo de autenticao, bilhete de acesso), timeout e rea comum de
dados entre aplicaes e mtodos. A camada de controle de acesso utiliza-se diretamente dos
parmetros de autenticao para determinar se uma dada requisio tem permisses de execuo
ou no (Figura B.4).
Figura B.3: Arquitetura de servidor de aplicao.
Figura B.4: Camada de controle de acesso (sesso).
Componentes
Especficos
Apresentao
Consistncia
Controle de Acesso
Aplicao
Servios Bsicos
SessionlD Parmetros de Autenticao
Mtodo de Autenticao
Usurio
Token (> 160 bits) Bilhete de Acesso
Parmetros de Sesso:
Timeout
Timestamp lncio
Timestamp fim
...
Memria
Compatilhada