Professional Documents
Culture Documents
Instituto de Computao
Mestrado Profissional em Computao
2. Semestre / 2003
O Protocolo
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
Cludio Ap. Rocha
RA: 022506
Edson Tessarini Pedroso
RA: 022510
Eduardo Tarciso Soares Junior RA: 015051
1',&(
2EMHWLYR
,QWURGXomR
23URWRFROR66/
Prioridades do Protocolo SSL .................................................................................... 7
Funcionamento ............................................................................................................. 7
Segurana...................................................................................................................... 8
As Vantagens do SSL.................................................................................................. 9
2SURWRFROR2SHQ66/
23URWRFROR7/6
+773VYVV+773
$OJRULWPRVXWLOL]DGRVSHOR66/
3URWRFROR&KDQJH&LSKHU6SHF
3URWRFROR$OHUW
3URWRFROR66/+DQGVKDNH
Mensagens de Hello .................................................................................................. 18
Hello Request.............................................................................................................. 18
Client Hello .................................................................................................................. 18
Server Hello................................................................................................................. 18
Server Certificate ........................................................................................................ 19
Server Key Exchange ................................................................................................ 19
Certificate Request..................................................................................................... 20
Server Hello Done ...................................................................................................... 21
Client Certificate.......................................................................................................... 21
Client Key Exchange.................................................................................................. 21
Certificate Verify.......................................................................................................... 22
Finished........................................................................................................................ 22
3URWRFROR66/5HFRUG
,QIUDHVWUXWXUDGH&KDYH3~EOLFD3XEOLF.H\,QIUDVWUXFWXUH3.,
$XWRULGDGH&HUWLILFDGRUD&HUWLILFDWLRQ$XWKRULW\&$
&HUWLILFDGR'LJLWDO
Formato do Certificado Digital.................................................................................. 26
Imagem de um certificado Digital............................................................................. 27
$SOLFDo}HVTXHXWLOL]DP&HUWLILFDGRV'LJLWDLV
([HPSORVGHHPSUHVDVTXHXWLOL]DPRSURWRFROR66/
$WDTXHVGRFXPHQWDGRV0DQLQWKHPLGGOH0,70
No caso de Man in the Middle em conexes SSL ................................................ 30
Mtodos de Preveno para o Man-in-the-middle................................................ 31
Preveno por parte da corporao.................................................................... 31
Preveno por parte do Usurio .......................................................................... 31
3UHRFXSDo}HVFDXVDGDVSHORXVRGRSURWRFROR66/
)HUUDPHQWDVGHDX[LOLRSDUDDQiOLVHHHQWHQGLPHQWRGRSURWRFROR66/
&RQFOXVmR
%LEOLRJUDILDVHUHIHUrQFLDV
2EMHWLYR
O principal objetivo deste trabalho introduzir os conceitos e mecanismos de
segurana utilizados pelo protocolo SSL, o qual prov uma camada extra de segurana
para aplicaes como, por exemplo, Web, que efetuam transaes on-line. O protocolo
SSL tambm pode ser implementado de diversas maneiras, o nosso trabalho descreve
como seria uma implantao SSL com certificado digital do host servidor utilizando a
Infra-estrutura de Chaves Pblicas (PKI). Outras maneiras de implementar o protocolo
SSL tambm so possveis; tais como, utilizar SecurityID, certificado digital do cliente
(host cliente), SecurityCard, etc..., porm tais implementaes so apenas mencionados
no nosso trabalho por no fazer parte do espoco principal.
,QWURGXomR
O protocolo SSL vem se tornando sinnimo de segurana para aplicaes que
utilizam a internet para efetuarem negcios on-line na Web. O SSL foi concebido
primordialmente pela necessidade de se ter um mecanismo que possibilitasse o sigilo
absoluto dos dados e a garantia de autenticidade dos mesmos nas transaes eletrnicas
on-line. Desde sua concepo, o protocolo SSL vem se tornando padro de fato a cada
dia, porm a implementao do protocolo SSL em sua forma pura; ou seja, utilizando
somente suas tcnicas de criptografias oferecidas por ele j no so suficientes para
garantir uma segurana tolervel nos negcios on-line (h um tpico neste trabalho que
cobre um estudo de caso de implementao SSL na sua forma pura). Sendo assim, novos
mecanismos foram surgindo para adicionar um maior nvel de segurana ao protocolo
SSL. Todos esses mecanismos implementados em conjunto com o protocolo SSL visam
uma maior segurana para as organizaes, por outro lado, outras preocupaes comeam
a surgir justamente pela sua utilizao, tais preocupaes sero esclarecidas
resumidamente em um tpico a parte sobre esse assunto.
A criptografia a arte de empregar certas regras em mensagens ou informaes de
forma a esconder seu verdadeiro contedo. A mensagem ou informao codificada pelo
uso da criptografia, que pode ser transmitida por meios de comunicao considerados
inseguros, pois s o receptor, conhecedor das regras poder reverter o processo e ler o
documento original.
Ao contrrio do que a maioria das pessoas pensam, a criptografia no uma
inveno recente, e tampouco de uso restrito a computadores poderosos. Apesar de a data
da inveno da criptografia no ser exatamente determinada, o seu uso era conhecido h
sculos. O primeiro uso da criptografia de que se tem notcia ocorreu por volta de 1900
a.C., quando um egpcio usou hierglifos para codificar mensagens.
O SSL (6HFXUH 6RFNHWV /D\HU) o protocolo responsvel por estabelecer uma
conexo segura entre o cliente e o servidor atravs de criptografia ou assinatura digital.
Foi desenvolvido pela Netscape a fim de prover segurana de transmisso de dados entre
computadores, o SSL foi proposto ao :RUOG:LGH:HE&RQVRUWLXP (W3C) e ao ,QWHUQHW
(QJLQHHULQJ 7DVN )RUFH (IETF) como um padro de segurana para ZHE EURZVHUV e
servidores ZHE.
Com o SSL, uma conexo estabelecida onde todos os dados trafegam
criptografados pela rede, sem que haja o risco de serem interceptados e decifrados por
algum. Para garantir a integridade dos dados, necessrio um protocolo seguro para
orientar a conexo, como por exemplo, o TCP/IP. O uso do SSL se disseminou por meio
de sua implementao nos EURZVHUV da Netscape, fornecendo aos usurios uma forma
segura de acessar servidores ZHE, permitindo inclusive a execuo de transaes
comerciais. Sua verso mais recente a 3.0.
Seu funcionamento ocorre por meio do sistema de criptografia de chaves pblicas
e privadas desenvolvido por Rivest, Shamir e Adleman, o RSA. O SSL mais usado nos
browsers, como Netscape, Internet Explorer entre outros, no caso o protocolo HTTP, que
mais usado por usurios com menos experincia e que necessitam de maior segurana
para acessar uma pgina de banco, por exemplo.
23URWRFROR66/
O SSL pode usar o mecanismo de criptografia de chave pblica RSA para
implementar transmisso segura. A criptografia de chave pblica uma tcnica que usa
um par de chaves assimtricas (chave pblica e chave privada) para criptografia e
descriptografia. A chave pblica amplamente distribuda, mas a chave privada
mantida pelo originador da mensagem, sem qualquer divulgao. Devido s chaves
assimtricas, os dados criptografados usando a chave privada s podem ser
descriptografados com o uso da chave pblica. De forma inversa, os dados criptografados
usando a chave pblica s podem ser descriptografados com a utilizao da chave
privada.
Quando o browser ("cliente") conecta-se a uma pgina protegida por SSL, o
servidor do SSL envia uma solicitao para iniciar a sesso segura. Se o browser suporta
SSL, ele retorna uma resposta. Durante este "apertar de mos" (KDQGVKDNH) inicial, o
servidor e o browser trocam informaes seguras. A resposta do browser define o ID da
sesso, os algoritmos de criptografia e os mtodos de compactao que suporta. Nas
informaes de segurana fornecidas pelo browser, o servidor faz sua seleo e a
comunica ao browser. O servidor e o browser, em seguida, trocam certificados digitais
utilizando a infra-estrutura de chaves publicas (PKI) e autoridade certificadora (CA)
detalhados a seguir.
O servidor tambm especifica uma chave pblica ("chave de sesso") apropriada
para o algoritmo de criptografia anteriormente selecionado. O browser pode, ento, usar a
chave pblica para criptografar informaes enviadas ao servidor, e o servidor pode usar
sua chave privada para descriptografar essas mensagens. Depois que o servidor e o
browser esto de acordo sobre a organizao da segurana, as informaes podem ser
transmitidas entre os dois, em um modo seguro.
Uma conexo SSL requer que todas as informaes enviadas entre o cliente e o
servidor sejam encriptadas pelo software do emissor e descriptografada pelo software do
receptor, portanto exigindo um alto nvel de confidencialidade.
Confidencialidade importante para ambas s partes para qualquer transao
privada. Alm do mais, todos os dados enviados sobre uma conexo encriptada SSL
protegida por um mecanismo para detectar automaticamente e verificar se os dados foram
alterados em trnsito.
Todo site que quiser usar SSL em conjunto com a infra-estrutura de chaves
publicas (PKI) precisar de um certificado de autenticao "assinado" por uma entidade
certificadora
(Centification
Authoraty
CA),
como
a
Verisign
(http://www.verisign.com/), por exemplo. Se no for de desejo ter um certificado prprio
ou ate mesmo uma PKI local prpria, possvel usar o certificado da RapidSite, isso vai
fazer com que as pginas faam referncia a http://www.rapidsite.net ao invs de fazer
referncia ao nome do domnio que est sendo utilizado.
3ULRULGDGHVGR3URWRFROR66/
)LJXUD&DPDGD66/
)LJXUD)RUPDWRGHXPTXDGURFRP66/
Uma vez que este protocolo garante a integridade dos dados enviados,
necessrio que seja utilizado um protocolo de transporte confivel orientado a conexo,
como o TCP, a fim de garantir que no haja erros de transmisso.
O SSL fornece um servio de comunicao segura entre cliente e servidor,
permitindo autenticao mtua e garantindo integridade dos dados pelo uso de assinaturas
digitais, e privacidade pelo uso de criptografia. O protocolo foi projetado de modo a
suportar diversos algoritmos de criptografia e assinatura digital, permitindo a seleo dos
algoritmos mais convenientes para cada situao, assim como a utilizao de novos
algoritmos, a medida em que estes vo evoluindo. Estas escolhas so negociadas entre o
cliente e o servidor durante o estabelecimento de uma sesso.
O termo VRFNHWV refere-se ao mtodo utilizado para troca de dados entre
programas cliente e um servidor em uma rede ou entre camadas de programas em um
mesmo computador.
&RPRIXQFLRQDRVHUYLGRUFRPSDUWLOKDGR66/existe uma cpia do software SSL
rodando no servidor principal, acrescentado o domnio no arquivo de configurao
como um domnio adicional.
&RPR IXQFLRQD R 66/ SDUD XP VHUYLGRU GHGLFDGR o software SSL na verdade,
funciona em conjunto com um servidor Web que compartilha seu domnio. Isso requer
que seja gerada uma "chave" para o servidor. Esta uma chave geralmente de 128 bits,
que criptografada e assinada digitalmente pela certificadora.
6HJXUDQoD
Existem trs componentes principais para um site Web seguro:
2SURWRFROR2SHQ66/
O projeto OpenSSL disponibiliza um WRRONLW em cdigo livre, que implementa o
protocolo SSL e vrios algoritmos e primitivas criptogrficas de uso comum, incluindo
algoritmos de troca de chaves, funes de hash, algoritmos simtricos e assimtricos. O
toolkit se apresenta na forma de duas bibliotecas e um conjunto de programas que
23URWRFROR7/6
O TLS verso 1.0 e o SSL 3.0 so muito similares, portanto ambos interagem sem
nenhuma dificuldade. O cliente TLS que deseja negociar com o servidor SSL 3.0 deve
enviar ao cliente uma mensagem de KHOOR usando o formato do SSL 3.0 Record e
uma estrutura de cliente-hello enviando {3,1} no campo de verso para dizer que ele ira
responder com uma mensagem hello SSL 3.0.
Uma diferena particular entre eles, a gerao de chaves, o que permite o TLS
ser usado para comunicaes seguras conforme as normas impostas pelo padro FIPS 140
1. O TLS utiliza uma combinao de algoritmos MD5 e SHA1 para gerar chaves
simtricas, ao contrrio do SSL que s utiliza o MD5 para gerar chaves, o que no
aprovado pelo padro FIPS 140 1 ()HGHUDO,QIRUPDWLRQ3URFHVV6WDQGDUG).
O protocolo TLS pode ser aplicado com o protocolo HTTP para produzir o
protocolo hbrido HTTPs normalmente na porta 443. Se ele suportar o TLS, uma
mensagem Hello-TLS ira proceder. Similarmente um servidor TLS que deseja
comunicar-se com um cliente SSL 3.0 deve aceitar a mensagem Hello do cliente e
responder com uma mensagem Hello. Se um cliente SSL 3.0 envia uma mensagem que
contm no campo de verso o dado {3.0}, significa que o cliente no suporta o TLS.
10
+773VYVV+773
Existem duas grandes abordagens para a soluo do problema de segurana no
nvel dos protocolos da camada de aplicao na arquitetura Internet: o HTTPs e o sHTTP.
HTTPs a utilizao do protocolo HTTP (+\SHU7H[W 7UDQVIHU 3URWRFRO) em
conjunto com o protocolo SSL (6HFXUH6RFNHWV/D\HU), que um protocolo proposto por
um grupo liderado pela Netscape Communications, pela Verisign e pela Sun
desenvolvido e especificado para prover uma camada de segurana entre a camada de
transporte (TCP) e os protocolos de aplicao tais como HTTP, TELNET, FTP, NNTP,
SMTP, etc. Este protocolo prov encriptao de dados, autenticao de servidor,
integridade de mensagem e, opcionalmente, autenticao de cliente para uma conexo
TCP/IP.
O sHTTP (secure HTTP) uma extenso do protocolo http proposta pelo EIT no
comeo de 1994 que prov transaes seguras pela incorporao de criptografia,
mecanismos de autenticao no protocolo HTTP permitindo transaes seguras fim-a-fim
entre cliente e servidor WWW.
SSL e sHTTP tem diferentes motivaes: as camadas de segurana SSL ficam sob
os protocolos de aplicao, como HTTP, NNTP e TELNET, enquanto que HTTPs
adiciona segurana baseada nas mensagens especificamente do protocolo HTTP no nvel
da aplicao. Estas duas aplicaes, longe de serem mutuamente exclusivas podem
coexistir perfeitamente de forma complementar com o protocolo HTTPs atuando sobre a
camada SSL.
$OJRULWPRVXWLOL]DGRVSHOR66/
Existem quatro grupos que podem representar o conjunto de algoritmos
criptogrficos utilizados pelo protocolo SSL. So estes:
11
$OJRULWPRV GH FRPSDFWDomR na atual verso do SSL no h nenhuma
especificao para funes de compactao.
Estes algoritmos so escolhidos no protocolo atravs do uso das ciphersuites. As
ciphersuites so combinaes dos algoritmos listados acima e possui a seguinte regra
geral:
PROT_KE_SIGALG_WITH_SIMALG_MAC onde, PROT
especificao o valor SSL; KE o algoritmo de troca de chaves;
na
atual
3URWRFROR&KDQJH&LSKHU6SHF
12
3URWRFROR$OHUW
Abaixo esto listados os alertas que so sempre fatais pela especificao do SSL:
0HQVDJHPBLQHVSHUDGDXQH[SHFWHGBPHVVDJH uma mensagem imprpria foi recebida;
0$&BPDXBJUDYDGREDGBUHFRUGBPDF um MAC incorreto foi recebido;
)DOKDBQDBGHVFRPSUHVVmR GHFRPSUHVVLRQBIDLOXUH a funo responsvel pela
descompresso recebeu uma entrada imprpria. Por exemplo: o resultado da
descompresso seria maior do que o tamanho mximo permitido;
13
3URWRFROR66/+DQGVKDNH
14
)RUPDWRGDPHQVDJHPGRSURWRFROR+DQGVKDNH
O processo de handshake pode ser realizado de diferentes formas dependendo se
h autenticao ou no das partes envolvidas e/ou se uma sesso retomada. A figura que
segue mostra uma possvel execuo do processo de handshake. As mensagens trocadas
esto descritas na seqncia.
([HFXomRGRSURFHVVRKDQGVKDNH
1) Cliente envia um nmero aleatrio e uma lista de cifras e mtodos de compresso que
estaria apto a negociar com o servidor (mensagem CLIENT_HELLO).
2) Servidor retorna seu nmero aleatrio e a cifra e mtodo selecionados (mensagem
SERVER_HELLO).
3) Caso o servidor deva se autenticar (condio j sabida a partir da ciphersuite
negociada), este envia seu certificado, o qual conter sua chave pblica
(SERVER_CERTIFICATE). O tipo de certificado enviado depender da FLSKHUVXLWH
negociada.
4) Caso seja necessria autenticao do cliente, o servidor envia um pedido de
certificado ao cliente (mensagem CERTIFICATE_REQUEST) e sinaliza ao cliente que a
fase de HELLO est finalizada (mensagem SERVER_HELLO_DONE).
15
Para melhor entendimento, estas trocas podem ser interpretadas tendo quatro
)DVH(VWDEHOHFLPHQWRGDV&DSDFLGDGHVGH6HJXUDQoD
)DVH$XWHQWLFDomRGRVHUYLGRUH7URFDGHFKDYH
)DVH$XWHQWLFDomRGRFOLHQWHH7URFDGH&KDYH
)DVH)LQDOL]DomR
16
17
)RUPDWRGDPHQVDJHP&/,(17(B+(//2
6HUYHU+HOOR
Nesta mensagem, o servidor envia a ciphersuite e mtodo de compresso
selecionada de acordo com suas listas de ciphersuites e mtodos de compresso. A
escolha de uma ciphersuite feita da seguinte forma: a primeira ciphersuite do cliente
que coincidir com alguma ciphersuite do servidor a selecionada ( first-choice-first ). O
mesmo processo feito para o mtodo de compresso. Caso nenhuma ciphersuite
coincida, o servidor enviar um alerta handshake_failure para o cliente.
Quando o servidor recebe uma CLIENT_HELLO com o randmico diferente de
vazio, caso deseje, pode realizar uma retomada de sesso. Na tentativa de retomar uma
sesso, o servidor checa em seu cache a existncia de alguma sesso cacheada cujo ID
18
seja igual ao enviado pelo cliente. Caso a encontre e, se assim desejar, ele enviar como
resposta na SERVER_HELLO um ID com o mesmo valor enviado pelo cliente. Porm,
caso no encontre em cache ou no deseje realizar a retomada de sesso, o servidor envia
para o cliente uma SERVER_HELLO com o ID diferente do enviado pelo cliente. O
servidor pode ainda impedir que uma nova sesso seja cacheada. Para isso, ele envia um
ID vazio. O formato desta mensagem mostrado abaixo:
)RUPDWRGDPHQVDJHP6(59(5B+(//2
6HUYHU&HUWLILFDWH
O servidor usa esta mensagem para se autenticar e, dependendo do tipo de
certificado, enviar para o cliente dados pblicos (e confiveis) para a troca de chaves. A
SERVER_CERTIFICATE uma mensagem formada por uma lista de certificados
X.509.v3 onde o primeiro da lista o certificado do servidor e os demais so certificados
de CAs que assinam os certificados imediatamente anteriores a ele na lista. Esta
mensagem extremamente importante durante o processo de handshake. Sem ela, o
servidor dever enviar, em outra mensagem, dados pblicos que possibilitem a troca de
chaves. Neste caso, como no ser possvel assin-los, um intruso poder penetrar na
comunicao e espelhar a troca de mensagens entre as partes envolvidas na comunicao
(ataque por espelhamento).
6HUYHU.H\([FKDQJH
Esta mensagem carrega os dados pblicos do servidor os quais sero usados no
processo de troca de chaves. Ela enviada pelo servidor quando ele no possui um
certificado, possui um certificado somente para assinatura, ou possui um certificado cujos
dados pblicos usados para a troca de chave possuem um tamanho superior ao estipulado
pela ciphersuite negociada. Esta mensagem no deve ser enviada caso o certificado do
servidor contenha parmetros pblicos Diffie-Hellman.
Existem dois tipos de certificados somente para assinatura: certificados DSS e
certificados RSA cujo campo KEYUSAGE possui a flag SignOnly setada.
O contedo desta mensagem depender dos algoritmos de troca de chaves e
assinatura especificadas na ciphersuite selecionada. No caso de uma ciphersuite no
annima, ou seja, uma ciphersuite que possui um algoritmo para assinatura, os valores
pblicos enviados nesta mensagem so assinados.
De acordo com os algoritmos de troca de chaves e assinaturas negociadas, a
SERVER_KEY_EXCHANGE pode ter os seguintes formatos:
19
7URFDGHFKDYHHDVVLQDWXUDXVDQGR56$
7URFDGHFKDYHV'LIILH+HOOPDQHDVVLQDWXUDXVDQGR56$
Valores pblicos Diffie-Hellman;
Assinatura dos valores pblicos. A assinatura feita da mesma forma
descrita acima, salvo o fato de os valores pblicos serem Diffie-Hellman.
7URFDGHFKDYHV'LIILH+HOOPDQDQ{QLPR
Valores pblicos Diffie-Hellman;
NO feita a assinatura dos valores pblicos. Neste caso, o protocolo fica
suscetvel ao ataque de espelhamento, pois um intruso pode se infiltrar na
comunicao e alterar esta mensagem sem que nenhuma das outras partes
envolvidas tenha conhecimento.
Os parmetros Diffie-Hellman enviados nesta mensagem so tambm
denominados parmetros Diffie-Hellman Efmeros pelo fato de serem gerados no
momento do envio da mensagem (no necessariamente toda vez que uma
SERVER_KEY_EXCHANGE enviada). O uso deste tipo de parmetro acrescenta uma
segurana a mais ao protocolo: se uma chave for descoberta ou espelhada, somente uma
sesso ter sido atacada. Alm disso, um outro aspecto importante a ser ressaltado, o
fato de que o tempo de uso dos valores pblicos extremamente reduzido, dificultando a
quebra do valor privado atravs do ataque por cifra.
&HUWLILFDWH5HTXHVW
O servidor envia esta mensagem quando deseja que o cliente se autentique. Ela
composta de uma lista de tipos de certificado que o servidor suporta (que esteja de acordo
com a ciphersuite selecionada) e uma lista de nomes de CAs cujos certificados selfsigned o servidor tenha acesso, conforme representado na figura.
Um servidor annimo no pode solicitar que um cliente se autentique. Caso um
cliente receba uma CERTIFICATE_REQUEST de um servidor annimo, ele deve
responder com um alerta handshake_failure. Segue abaixo o formato desta mensagem.
20
)RUPDWRGHPHQVDJHP&(57,),&$7(B5(48(67
6HUYHU+HOOR'RQH
Esta mensagem possui nenhum campo. O servidor a envia para sinalizar ao cliente
o fim da fase de Hello. O cliente, ao receber esta mensagem, d incio verificao dos
dados enviados pelo servidor durante a fase de Hello. O cliente verifica se o servidor
proveu um certificado aceitvel (se enviado) e se os demais parmetros de Hello so
aceitveis.
&OLHQW&HUWLILFDWH
Esta mensagem enviada pelo cliente, em resposta a CERTIFICATE_REQUEST,
com a funo de autentic-lo. O contedo desta mensagem uma lista de certificados
X.509v3 tal qual a enviada na mensagem SERVER_CERTIFICATE. O tipo dos
certificados enviados pelo cliente depender das opes impostas pela mensagem
CERTIFICATE_REQUEST (tipo de certificado e nome de CA). Caso o cliente no
possua um certificado ou possua um que no atenda s opes, deve enviar um alerta
no_certificate. Certificados Diffie-Hellman enviados pelo cliente devero possuir os
mesmos parmetros Diffie-Hellman contidos no certificado do servidor.
&OLHQW.H\([FKDQJH
O cliente envia esta mensagem para o servidor a fim de fornecer o dado
necessrio criao de um segredo compartilhado. Esta informao recebe o nome de
PreMasterSecret e seu valor dependente do algoritmo de troca de chave especificado na
ciphersuite escolhida. Segue agora uma explicao de como a PreMasterSecret gerada.
7URFDGHFKDYHVXVDQGR56$
Quando o RSA utilizado para a troca de chaves, a PreMasterSecret um nmero
de 48 bytes gerados pelo cliente, formado pela verso do protocolo (2 bytes) e por 46
bytes randmicos. Estes 48 bytes so ento cifrados usando a chave pblica do servidor
(envelope digital) e enviados de forma a garantir que somente os dois tenham
conhecimento do seu valor, veja figura:
7URFDGHFKDYHVXVDQGR56$
21
'HULYDomRGHFKDYHVXVDQGR'LIILH+HOOPDQ
No processo de troca de chaves usando o Diffie-Hellman, o cliente envia para o
servidor o seu valor pblico e ambos executam o processo de derivao de chave. O valor
resultante deste processo a PreMasterSecret. O cliente s envia seu valor pblico nesta
mensagem caso o certificado enviado por ele no o contenha.
Imediatamente aps o cliente enviar esta mensagem e o servidor receb-la, dar-se incio ao processo de gerao da MasterSecret. A MasterSecret um segredo
compartilhado pelas partes envolvidas no handshake e que, posteriormente, usado para
a gerao das chaves de sesso e segredos utilizados no clculo dos MACs.
Logo que a MasterSecret calculada, a PreMasterSecret deve ser destruda da
memria e o processo de gerao do KeyBlock deve ser executado. O KeyBlock um
vetor de bytes resultante de uma seqncia de hashes seguros envolvendo a MasterSecret.
a partir do KeyBlock produzido que o SSL retira os dados que devero ser usados
como chaves de sesso, vetores de inicializao e segredos para os MACs.
A quantidade de hashes que devero ser calculados depender da quantidade de
material randmico necessrio para preencher todos os segredos utilizados pela camada
Record.
Em caso de ciphersuites geradas em implementaes licenciadas para exportao,
os quatros ltimos valores so recalculados.
O segredo que utilizado por uma das partes na escrita utilizado pela outra na
leitura. Por exemplo, o valor da client_write_key usado para cifrar dados no lado cliente
e para decifrar no lado servidor.
&HUWLILFDWH9HULI\
Esta mensagem prov uma forma explicita de o servidor verificar o certificado
enviado pelo cliente. Seu contedo a assinatura digital de dois hashes cuja entrada so
todas as mensagens de handshake enviadas at o momento, desconsiderando-se esta. O
servidor, ao receb-la, executa a verificao da assinatura, tal qual abordado na sesso de
Assinaturas Digitais deste documento. Em caso de erro na verificao da assinatura, o
servidor envia um alerta de handshake_failure.
Clientes que possuem certificados Diffie-Hellman no podem enviar esta
mensagem, pelo motivo bvio de o Diffie-Hellman no poder ser utilizado para
assinaturas digitais.
)LQLVKHG
Esta a primeira mensagem no processo de handshake a ser enviada decifrada.
Ela enviada imediatamente aps a mensagem de CHANGE_CIPHER_SPEC, tanto pelo
22
cliente quanto pelo servidor, com a funo de validar os processos de troca de chaves e
autenticao. Seu contedo so dois hashes (com segredo - MasterSecret), de todas as
mensagens de handshake enviadas at o momento, excluindo-se esta, veja a figura:
)RUPDWRGDPHQVDJHP),1,6+('
A fim de prover uma forma de diferenciar uma mensagem FINISHED enviada
pelo cliente de outra enviada pelo servidor, ambos inserem um conjunto de bytes
denominado Sender, o qual assume valores diferentes para cliente e servidor, junto dos
dados de entrada do hash.
Caso uma mensagem FINISHED seja recebida antes de uma
CHANGE_CIPHER_SPEC, o receptor da mensagem deve enviar um alerta de
handshake_failure. Aps esta mensagem, a troca de mensagens de aplicao atravs do
canal de cifra negociada pelo SSL liberada.
3URWRFROR66/5HFRUG
A camada SSL Record encapsula vrios protocolos de alto nvel, e usa a definio
de estado corrente para, alm de outras coisas, selecionar os algoritmos de compresso e
criptografia apropriados. O estado corrente determinado durante o processo de
handshaking previamente descrito.
Ela age comprimindo os dados, usando o algoritmo de compresso selecionado no
estado corrente. Todos os dados so protegidos usando os algoritmos de criptografia e
MAC definidos no CipherSpec corrente, que parte do estado corrente. O algoritmo
MAC utiliza um Message Authentication Code e uma funo hash para assegurar a
integridade dos dados.
Os processos descritos acima so reversveis na Camada Record, no outro lado do
canal de comunicaes, onde os dados so decodificados, verificados, expandidos e
reunidos antes de serem enviados para clientes em alto nvel.
Para encerrar uma sesso, uma das partes envia uma mensagem comunicando esse
fato (Close Notify). Caso o cliente queira estabelecer nova sesso com o servidor, pode
fornecer seu identificador de sesso em sua mensagem de incio, dando assim
continuidade a sesso estabelecida anteriormente.
SSL.
23
(VWUXWXUD66/
,QIUDHVWUXWXUDGH&KDYH3~EOLFD3XEOLF.H\,QIUDVWUXFWXUH
3.,
Atualmente, quase que na maioria dos portais web na Internet que oferecem
algum tipo de servio on-line ou produtos etc., esto de alguma forma utilizando a Infraestrutura de Chave Pblica (PKI). Isso ocorreu pela necessidade de se criar um
mecanismo ou estrutura organizada que criasse regras e fortalecesse ainda mais os
protocolos SSL e IPSec utilizados para prover segurana. Implementaes dos protocolos
SSL e ate do IPSec geralmente utilizam o PKI para aumentar o grau de segurana nas
transaes on-line, porm no h uma necessidade que os protocolos (SSL, IPSec)
trabalhem em conjunto com o PKI. A implantao do PKI em conjunto com o SSL ou
IPSec fica a critrio do implementador e conforme as necessidades de negcios de cada
empresa.
Uma Infra-estrutura de Chave Pblica tem o objetivo de fornecer e definir regras
tcnicas para instituies pblicas e privadas com relao s transaes de troca de
documentos transmitidos e obtidos eletronicamente. Essas regras tcnicas sero utilizadas
como mecanismos de validao jurdica com o propsito de garantir a autenticidade e
integridade dos documentos em formatos eletrnicos. Um dos mecanismos de validao
do PKI se chama Certificado, que uma espcie de selo eletrnico fornecido por
Autoridades Certificadoras CA definido pela norma X.509v3 (RFC 2459) que a mais
atual.
Empresas que praticam negcios on-line e que implementam o protocolo SSL em
conjunto com o PKI, de tal forma proporcionam mais segurana ao cliente que acessa seu
portal on-line. Com a utilizao do protocolo SSL e o PKI a empresa garante ao cliente
final que o site que ele esta acessando realmente o que ele quer acessar. Esse processo
garantido atravs de certificado que garante alem de autenticidade uma validao jurdica
que para os negcios on-line efetuado pela empresa.
A norma ou formato X.509 que define o certificado teve sua primeira verso
publicada em 1988, a segunda verso saiu em 1993 aps reviso da primeira verso. A
terceira e ltima verso do X.509 foram publicadas em 1997 que resultou na norma
X.509v3 e que define os certificados emitidos por CA atualmente.
24
$XWRULGDGH&HUWLILFDGRUD&HUWLILFDWLRQ$XWKRULW\&$
25
&HUWLILFDGR'LJLWDO
A certificao digital foi maneira encontrada para prover servios de
identificao, autenticao e privacidade para transaes eletrnicas. Talvez ficaria mais
fcil o entendimento se fizermos uma comparao com os mecanismos e servios
tradicionais de identificao, autenticao e privacidade que estamos acostumados a
utilizar. Por exemplo, em transaes fsicas do tipo autenticao de documentos, os
desafios de identificao, autenticao e privacidade so resolvidos com marcas fsicas,
tais como selos e assinaturas providas por uma entidade que confiamos (ex. cartrio). No
entanto, nos casos de transaes eletrnicas, tipo compras on-line, envio de documentos
eletrnicos, e-mail etc., o equivalente ao mecanismo tradicional seria o selo ou
certificado digital que vem codificado na prpria informao e que fornecido
assinado pela Autoridade Certificadora (CA) que faz parte da Infra-estrutura de chaves
publicas (PKI) e segue um padro de certificado X.509, RFC 2459 junto com Normas da
RSA PKCS etc.
Uma vez que o documento recebeu um certificado digital, sua alterao fica quase
que impossvel de no ser detectada. Uma violao de um documento certificado
digitalmente seria facilmente identificada atravs dos mecanismos e algoritmos de
criptografia utilizados para prover as funcionalidades de identificao, autenticao e
privacidade, mesmo que apenas 1 bit seja modificado no documento. Em resumo um
certificado digital uma cadeia de bits que foi gerado atravs de algoritmos
criptogrficos que teve como entrada as informaes que se desejava obter o certificado
digital.
)RUPDWRGR&HUWLILFDGR'LJLWDO
'LDJUDPDVLPSOHVGHXPFHUWLILFDGRGLJLWDO;YQmRLQFOXLQGRDVH[WHQV}HVY
VWDQGDUG,QIRUPDomREiVLFD
)RUPDWRGRFHUWLILFDGR
1GH6pULHGRFHUWLILFDGR
,GHQWLILFDGRUGRDOJRULWPRGHDVVLQDWXUDGD(&
(QGHUHoR;GRHPLVVRU
3HUtRGRGHYDOLGDGH
1RPH;GRXWLOL]DGRU
Verso 3
123456789
RSA com MD5
C=PT, o=EC
Start=01/08/96,
expiry=01/08/98
c=PT,o=organizao,cn=Joo Silva +
.....
Tipo Criticidade Valor Morada, bit off/no crtico, Rua das Codornizes 183
Tipo Criticidade Valor mbito, bit on/crtico, Vlido somente para Assinatura Digital
26
,PDJHPGHXP6HFXULW\:DUQLQJ
Essa mensagem de Security Warning vai aparecer para o usurio somente nos
casos em que o certificado digital recebido no pode ser autenticado pelas CAs j
27
$SOLFDo}HVTXHXWLOL]DP&HUWLILFDGRV'LJLWDLV
$FHVVRUHPRWRGHIXQFLRQiULRVGHXPDRUJDQL]DomRFuncionrios de uma
determinada empresa (vendedores, consultores, diretores etc.) podem se logar
remotamente utilizando mecanismos como SecurityID ou token que possibilita a
certificao dos mesmos junto ao servidor acessado. Isso possibilita acesso a
28
([HPSORVGHHPSUHVDVTXHXWLOL]DPRSURWRFROR66/
diretamente com ela, em tempo real, sem ter que pagar a tarifa por transao. O Payflow
o nico servio de pagamento que no cobra juros e est disponvel para os
comerciantes on-line. A capacidade do Payflow, para processar transaes em tempo real,
permite que a autorizao seja mais rpida que a dos processadores que enviam o
pagamento para a American Express, em lotes, de poucos em poucos minutos.
$WDTXHVGRFXPHQWDGRV0DQLQWKHPLGGOH0,70
(PSUHVDp
5HVSRQViYHOSHOD6HJXUDQoD
&OLHQWHp
5HVSRQViYHOSHOD6HJXUDQoD
UHDGHDWXDomR0,70
&UDFNHU
'16
&OLHQWH
&OLHQWH
,QWHUQHW
5HGH3XEOLFD
!
,QWHUQHW
3URYLGHU
2FUDFNHUXWLOL]DQGRDWpFQLFD
0,70DWWDFNGHVYLDRWUDIHJRGR
FOLHQWHHSDVVDDID]HUSDUWH
GDFRQYHUVDVHPGHL[DUQHQKXP
UDVWURGHLQWUXVmR
)LUHZDOO
6073SUR[\
)LUHZDOO
1RFDVRGH0DQLQWKH0LGGOHHPFRQH[}HV66/
Mesmo as conexes protegidas pelo protocolo SSL esto sujeitas a ataques Man
in the Middle. Vamos descrever passo a passo como seria possvel o ataque Man in the
Middle em conexes SSL.
%URZVHU Solicita uma conexo SSL no servidor desejado &UDFNHU (intercepta a
solicitao de conexo SSL) E Solicita uma conexo SSL ao 6HUYLGRU:HE
6HUYLGRU :HE Envia a chave pblica para o usurio , que passa a ter o Cracker
como intermedirio &UDFNHU(intermedirio da conexo) Envia outra chave (gerada
por ele) para o &OLHQWHRX%URZVHU
30
No caso de uma conexo SSL, o servidor web envia para o cliente a sua chave
pblica, a mesma interceptada por um cracker que envia uma outra chave (gerada por
ele) para o cliente se fazendo passar pelo servidor.
Neste momento o usurio deve prestar muita ateno nos alertas de segurana que
podem vir a aparecer, veja exemplo de mensagem Security Warning demonstrada acima.
Quando efetuada uma conexo SSL, alguns itens so verificados pelo Browser
(Cliente) quando o mesmo recebe a chave pblica junto com o certificado de um servidor,
itens como:
o
'DWD GH 9DOLGDGH GR &HUWLILFDGR 'LJLWDO, o &RPPRQ 1DPH +RVW
'RPtQLR que foi registrado no certificado.
o
Se for o mesmo da 85/ que est sendo acessada.
o
Se o Certificado digital em questo IRL HPLWLGR SRU XPD $XWRULGDGH
&HUWLILFDGRUDGH&RQILDQoD etc.
Caso algum destes itens tenha algum problema, o navegador web (browser) ir
apresentar para o usurio um alerta de segurana onde no mesmo ser descrito o
problema e com a opo do usurio aceitar ou no a conexo SSL. recomendado que a
mesma no seja aceita e que este usurio entre em contato com a respectiva empresa.
Obs. Browsers de verses antigas no verificavam o URL contido no certificado
para confrontar com o URL desejado, o que ocasionava uma facilidade para o mtodo de
ataque man-in-the-middle. As verses mais recentes dos browsers j fazem esse tipo de
verificao apontando os problemas no formato de (Security Warning) para o usurio
tomar a deciso.
0pWRGRVGH3UHYHQomRSDUDR0DQLQWKHPLGGOH
3UHYHQomRSRUSDUWHGDFRUSRUDomR
3UHYHQomRSRUSDUWHGR8VXiULR
31
3UHRFXSDo}HVFDXVDGDVSHORXVRGRSURWRFROR66/
Recentemente as empresas comearam a ficar preocupadas com o crescente
trfego de conexes SSL em suas redes. Isso se deve ao fato de que uma conexo
protegida pelo protocolo SSL no sofre qualquer tipo de filtragem pelo firewall ou
roteador na entrada ou na sada de uma rede, isso ocorre devido ao contedo estar
criptografado. A preocupao com relao a isso est no sentido de que tais transaes
SSL podem estar trazendo para dentro da rede vrus, trojans, contedo pornogrfico ou
at mesmo documentos sigilosos da empresa podem estar sendo enviados para fora em
formato criptografado.
S para despertar interesse nos aficcionados por segurana, em Agosto/2003 uma
empresa lanou um produto que faz a filtragem de conexes criptografadas SSL, ou seja,
a famosa tcnica Man-in-the-middle virou produto comercial com alguns detalhes mais
sofisticados. Aqueles que esto interessados em aprender mais sobre o assunto, visitem a
pgina do fabricante do produto Webwasher (www.webwasher.com). O produto nem
bem foi lanado e j comea a causar polmica devido a quebra de sigilo que o mesmo
proporcionar.
32
Squid - http://www.squid-cache.org/
Ferramenta para linux que funciona como servidor de SSH e SSL.
Dsniff - http://www.monkey.org/~dugsong/dsniff/
Ferramenta que proporciona mecanismo de ataque Man-in-the-middle (MITM).
Procurar tambm por SSLSniff.
SSLScanner www.webwasher.com
Ferramenta comercial que filtra conexes SSL em uma determinada empresa.
Essa ferramenta apenas implementou o ataque MITM em uma de suas ferramentas
(software e hardware). Essa ferramenta recente (Ago/03) e j esta causando polmica
com relao a quebra de sigilo.
Em resumo essas so apenas algumas ferramentas fundamentais para analisar e
entender o funcionamento do protocolo SSL em detalhes. As ferramentas Crypto,
SSLdump e Squid merecem uma ateno especial.
&RQFOXVmR
Percebemos que a troca de informaes sigilosas atravs das transaes on-line
(ex. Internet Banking, compras on-line etc.) sem dvida j fazem parte do nosso dia-adia. Esse o mundo virtual dos negcios conhecido como e-business que cresce quase
que na mesma proporo que os crimes virtuais.
Os protocolos SSL, OpenSSL, TLS, IPSec etc., so alguns dos protocolos mais
utilizados para proporcionar uma camada extra de segurana nas transaes on-line para
evitar crimes virtuais. No entanto, esses protocolos implementados puramente; ou seja,
simplesmente sem utilizar chaves pblicas e privadas (PKI) j no esto oferecendo um
grau aceitvel de segurana. Neste caso empresas que efetuam transaes sigilosas online j esto utilizando Certificao Digital atravs de PKI (chaves pblicas e privadas),
CA etc., bem como solues integradas com PKI como SmartCard, SecurityID, Token
que podem serem implementados conforme necessidade e grau de segurana que se quer
alcanar.
Podemos assim concluir que simplesmente uma implantao pura de um
protocolo para prover sigilo no resolveria a questo de segurana, e sim acrescentaria
uma camada extra de segurana para evitar o crime virtual. No entanto, uma implantao
com varias camada extras de segurana como chaves pblica (PKI), SmarCard, dentre
outros, aumentaria significativamente o grau de confiabilidade; porm, no estaria 100%
segura visto que teoricamente no existe soluo que prov 100% de segurana.
33
%LEOLRJUDILDVHUHIHUrQFLDV
Livros.
http://www.cic.unb.br/docentes/pedro/trabs/hammurabi.htm, novembro de
2003.
34