SSL e TLS
SSL e TLS são dois protocolos usados para criptografar dados das mensagens trocadas entre o cliente e o servidor. SSL é um acrônimo para Secure Socket Layer e TLS é um acrônimo para Transport Layer Security. TLS é uma evolução do protocolo SSL. Os dois servem para o mesmo propósito. Sem eles, não há garantias de que a comunicação ocorre de forma criptografada. Na verdade, geralmente, quando esses protocolos não são usados, a comunicação é feita em texto plano. Assim, se alguém interceptar essa informação antes que ela chegue ao seu destino, poderá adulterá-la.
Criptografar os dados tem várias vantagens: uma delas é a integridade dos dados. Se alguém interceptar os dados, não vai conseguir adulterá-los sem que o destinatário perceba, pois o atacante não tem como saber como ele deve alterar os dados porque não tem acesso ao algoritmo de criptografia. Isso garante a integridade dos dados. Outra vantagem é a privacidade: como os dados são criptografados, eles chegam em um formato que não pode ser compreendido por um atacante.
Criptografia simétrica e assimétrica
A criptografia feita pode ser classificada em simétrica ou assimétrica. Vamos ver como cada uma delas funciona.
- Criptografia simétrica
- Usa apenas uma chave. Ela é usada tanto para criptografar os dados, como também para descriptografá-los. Assim, tanto o remetente como o destinatário devem ter a mesma chave. Essa chave é enviada pela rede. Isso é um problema sério, que torna o processo pouco confiável. Uma das soluções para o problema é usar um canal de comunicação seguro e criptografado. A vantagem desse meio de criptografia é que ele é mais rápido do que a criptografia assimétrica. Porém, a criptografia assimétrica é muito mais segura.
- Criptografia assimétrica
-
Como o nome indica, usa chaves diferentes. Esse tipo de criptografia também é chamado de criptografia de chave pública, exatamente porque uma das chaves é chamada de chave pública, enquanto a outra é chamada de chave privada. Como o nome indica, apenas a chave privada é confidencial. Nesse tipo de criptografia, o destinatário envia a sua chave pública para o remetente. O remetente, por sua vez, criptografa a mensagem com a chave pública que ele recebeu do destinatário e a envia para ele.
Só o destinatário sabe como descriptografar a mensagem, porque só ele tem a chave privada, e só ela descriptografa a mensagem. Esse tipo de criptografia pode ser usado em um canal de comunicação inseguro, porque a mensagem é enviada de forma criptografada e a chave para descriptografar a mensagem não trafega pela rede.
Uma prática que às vezes ocorre é usar a criptografia assimétrica apenas para criptografar a chave usada na criptografia simétrica (assim ela trafega pela rede criptografada), e então usar a criptografia simétrica para criptografar as mensagens. Como a chave da criptografia simétrica é criptografada, esse método torna a comunicação segura, mesmo que seja feito em um canal de comunicação inseguro. Ele é usado por causa do alto custo de desempenho da criptografia assimétrica.
Vale lembrar que a criptografia assimétrica usa ainda um recurso de segurança para proteger a mensagem caso a chave privada caia em mãos erradas: é o PFS (Perfect Forward Secrecy / Sigilo Encaminhado Perfeito). Ele renova as chaves privadas a cada sessão. Assim, cada sessão tem uma chave privada diferente, o que faz com que o atacante não consiga descriptografar mensagens de sessões anteriores, nem de sessões futuras.
Criptografia e protocolos
Agora que você já sabe quais os perigos de trocar mensagens de forma descriptografada e quais as vantagens que a criptografia proporciona, é importante saber de que forma os protocolos SSL e TLS são usados nos protocolos TCP/IP.
Na verdade, os protocolos que suportam SSL ou TLS geralmente tem uma versão que usa comunicação sem criptografia e uma versão separada, que usa criptografia. Essas versões são independentes, sendo inclusive acessadas em portas padrões separadas. Exemplos: HTTP (porta 80) e HTTPS (porta 443); SMTP (porta 25) e SMTPS (porta 465). Uma dica é sempre procurar uma versão do protocolo com suporte a SSL ou TLS.