TLS

Summary

O TLS (Transport Layer Security) é um protocolo criptográfico utilizado para proteger a comunicação entre dois sistemas através de uma rede, como a Internet.

Como funciona?

O TLS estabelece uma ligação segura entre dois sistemas através de um processo chamado TLS Handshake (negociação inicial).

De forma simplificada, funciona assim:

  1. Client Hello: o cliente (por exemplo, um POS ou servidor) inicia a comunicação e apresenta as versões e os algoritmos criptográficos que suporta.
  2. Server Hello: o servidor seleciona os parâmetros criptográficos da ligação.
  3. Autenticação: o servidor apresenta um certificado digital, que permite ao cliente verificar a sua identidade.
  4. Estabelecimento de chaves: os sistemas estabelecem um segredo partilhado, normalmente através de ECDHE.
  5. Comunicação segura: ambos passam a utilizar chaves de sessão para cifrar e autenticar os dados transmitidos.

Para que serve?

O TLS garante três propriedades fundamentais:

  • Confidencialidade: Impede que terceiros leiam os dados transmitidos.
  • Integridade: Permite detetar alterações nos dados durante a transmissão.
  • Autenticação: Permite verificar a identidade do servidor e, opcionalmente, também do cliente.

É utilizado, por exemplo, em:

  • Websites HTTPS.
  • Comunicações entre bancos e processadores de pagamento.
  • Comunicações entre POS e servidores de pagamento.
  • APIs (interfaces de comunicação entre aplicações).
  • Aplicações bancárias e sistemas financeiros.

O que torna o TLS seguro?

A segurança do TLS depende da utilização correta dos seus mecanismos criptográficos.

Alguns dos principais elementos são:

  • Certificados digitais: permitem autenticar a identidade dos sistemas.
  • RSA ou ECDSA: podem ser utilizados para autenticação através de assinaturas digitais.
  • ECDHE: permite estabelecer um segredo partilhado de forma segura.
  • AES-GCM ou ChaCha20-Poly1305: algoritmos utilizados para cifrar e autenticar os dados transmitidos.
  • SHA-256: função de hash utilizada em mecanismos criptográficos do protocolo.