<< Modelo de Camadas Perguntas e Respostas >> 

5. Implementando

5.1. Bibliotecas Disponíveis

Atualmente existem implementações de TLS / SSL para praticamente todas as plataformas disponíveis no mercado. Porém toolkits para desenvolvimento de aplicações que utilizem SSL / TLS não suportam muitas linguagens de programação.

Uma das soluções mais utilizadas na implementação de sistemas que utilizam SSL / TLS é o toolkit OpenSSL (baseada na biblioteca SSLeay), criado para ambientes C/C++, suporta SSLv1,SSLv2,SSLv3 e TLSv1, possui funções para manipular certificados padrão x509, PKCS12, PKCS7, etc; o OpenSSL é multiplataforma(Unix, Linux, Windows, outros) e OpenSource.

A GNU vem desenvolvendo sua biblioteca de suporte a TLS, gnuTLS, mas a versão final ainda não foi lançada.

Outra solução gratuita é a implementação da SUN para java, incorporada no JDK1.4 e disponível separadamente como a biblioteca JSSE.

5.2. Modelo de Programação

A maior parte das implementações de TLS / SSL disponíveis no mercado tratam o modelo de programação de forma relativamente parecida. O modelo é baseado na criação de dois objetos básicos, um objeto de conexão e um objeto de contexto. O objeto de contexto deve ser configurado antes da inicialização do objeto de conexão, ele funciona como um banco de dados que guarda todas as características que devem ou podem ser configuradas para a conexão TLS.

É nesse objeto de contexto que configura-se se o aplicativo é um cliente ou servidor, onde se alocam os certificados a serem passados ao outro nó, onde se guardam as chaves privadas dos certificados, onde se configura quais algoritmos criptográficos se quer utilizar na conexão, etc. Uma terminada a configuração do contexto, pode-se criar objetos de conexão TLS, que são vinculados ao contexto anteriormente criado. Podem ser criados quantos objetos de conexão necessários, utilizando-se apenas um objeto de contexto, sabendo que as características de todas as conexões obedecerão aos mesmos parâmetros.

Uma vez instanciado um objeto de conexão, é necessário preparar a camada inferior de transporte para controlar a conexão. Então, no caso de um servidor, inicializa-se objetos de socket para escutar em uma determinada porta, e assim que um cliente se conectar nela, é executado o accept em TCP/IP, e o descriptor do socket é associado a um objeto de conexão TLS, em seguida, é executado o accept do TLS, quando é realizado o handshake. A partir daí, todas as funções de escrita e leitura na conexão são realizadas através de funções fornecidas pela implementação TLS.

 

 << Modelo de Camadas Perguntas e Respostas >>