Blog‎ > ‎

TLS / SSL (parte I)

postado em 10 de ago de 2011 11:35 por Usuário desconhecido   [ 22 de ago de 2011 05:35 atualizado‎(s)‎ ]
Por Rodrigo Rocha

Quando tratamos de aplicações acessadas ou integradas via rede devemos levar em consideração uma série de variáveis: integridade, acessibilidade, segurança... Dentre elas a segurança sempre será uma das nossas principais preocupações. Dentre todas as medidas preventivas que podem ser adotadas, vamos tratar hoje do protocolo de segurança TLS.

A Origem

O protocolo TLS (Transport Layer Security) é o sucessor do antigo SSL (Secure Sockets Layer). O SSL foi desenvolvido pela Netscape, sua versão mais utilizada foi a SSL 3.0, que foi liberada em meados de 1996, já que as anteriores ou não foram liberadas ao público, ou apresentaram inúmeras falhas,.

Em 1999, o IETF (Internet Engineering Task Force) liberou a especificação do TLS 1.0, que não tinha tantas diferenças para o SSL 3.0. Ao longo dos anos, melhorias foram sendo sugeridas e aos poucos implementadas, sendo que em 2006 foi lançada a versão TLS 1.1 e em 2008 foi lançada a última versão, o TLS 1.2.

Conforme o protocolo foi sendo utilizado, surgiram diversas extensões, devidamente aprovadas e definidas pelo IETF, que vão desde a utilização junto com os protocolos HTTP e FTP, que serão abordados neste trabalho, como também o SMTP, IMAP, POP3, e os conjuntos de cifras, fornecendo maior variedade de opções aos usuários.


O Protocolo TLS

Os objetivos deste protocolo são a segurança (por meio de criptografia), a interoperabilidade, a extensabilidade e a eficiência.

Isso quer dizer que este protocolo é capaz de estabelecer uma conexão segura entre duas entidades e de garantir que dois aplicativos consigam se comunicar ou trocar parâmetros independentemente da forma como foram construídos. É também capaz de abarcar futuras extensões, diminuindo a necessidade de se criar um novo protocolo e impedindo a criação de uma nova biblioteca de segurança. Esses dois últimos pontos são muito importantes, já que a criação de um protocolo ou de métodos de segurança podem trazer novos pontos falhos. A eficiência do protocolo vem do número reduzido de conexões necessárias, uma vez que é utilizado cache para guardar certas informações, poupando também tempo de processamento.

Em muitas aplicações, o TLS é apenas unilateral (situação típica da navegação web), ou seja, apenas um dos lados (o servidor) é autenticado, permanecendo o cliente anônimo ou não-autenticado. Apesar disso é plenamente possível que a autenticação seja bilateral, tendo o cliente, portanto, que possuir também um certificado de autenticidade.

Ao estabelecer uma conexão TLS, cliente e servidor negociam um conjunto de códigos, chamado em inglês de CipherSuite, por meio das primeiras mensagens da comunicação. Dessa forma, ambos os lados sabem que algoritmos criptográficos deverão utilizar para encriptar ou decriptar as mensagens. Pode ser usado chave simétrica ou chave assimétrica no processo de autenticação dos participantes.


Estrutura

O Protocolo TLS se situa entre as camadas de Aplicação e Transporte. Ele encapsula os protocolos de aplicação como o HTTP (Hypertext Transfer Protocol) e o FTP (File Transfer Protocol) e trabalha em cima de um protocolo de transporte como o TCP (Transmission Control Protocol) e o UDP (User Datagram Protocol). Para que a transmissão seja confiável, deve ser utilizado o protocolo TCP, uma vez que o UDP está mais sujeito à perdas de informação, já que é datagrama.

Na figura abaixo, é possível enxergar melhor o posicionamento do TLS, em meio às demais camadas:



O Protocolo TLS é composto também de duas camadas, formadas por 2 tipos de protocolos: os protocolos de Handshaking e o Protocolo de Registro. Essa estrutura pode ser melhor observada na figura abaixo:



Os protocolos de Handshaking são utilizados para autenticar cliente e servidor e para negociar algoritmos de criptografia e chaves criptográficas, antes que o protocolo de aplicação seja de fato transmitido. Uma vez que ambos os lados concordem quanto à autenticidade um do outro e também quanto aos parâmetros de segurança, a transmissão segura pode então começar. Esses protocolos de negociação são encapsulados pelo Protocolo de Registro, e então são enviados.


No próximo post serão mostrados os subprotocolos do TLS e os seus métodos criptográficos.



tags: #protocolo, #segurança, #tsl, #ssl

Fontes:

http://www.gta.ufrj.br/ensino/eel879/trabalhos_vf_2010_2/bernardo/index.html
Dierks, T. and Rescorla, E. "The Transport Layer Security (TLS) Protocol Version 1.2" RFC 5246, IETF 2008.
Rescorla, E. "HTTP over TLS" RFC 2818, IETF 2000.
Ford-Hutchinson, P. "Securing FTP with TLS" RFC 4217, IETF 2005.
http://en.wikipedia.org/wiki/Transport_Layer_Security (acessado em 29/09/2010)

Comments