Sobes.tech
Junior

O que é TLS?

sobes.tech IA

Resposta da IA

TLS (Transport Layer Security) é um protocolo criptográfico que garante comunicações seguras na rede, por exemplo, entre um navegador web e um servidor.

Funções principais:

  • Autenticação: Verificação da identidade das partes (geralmente usando certificados X.509).
  • Confidencialidade: Criptografia dos dados transmitidos para evitar acessos não autorizados.
  • Integridade: Verificação de que os dados não foram alterados durante a transmissão.

O protocolo TLS funciona na camada de transporte do modelo OSI (ou superior, dependendo da implementação e do contexto). Substituiu o SSL (Secure Sockets Layer). As versões atuais são TLS 1.2 e TLS 1.3.

No contexto do Go, TLS é usado na biblioteca padrão net/http para suportar HTTPS.

package main

import (
	"crypto/tls"
	"net/http"
	"log"
)

func main() {
	// Exemplo de configuração de um servidor HTTP com suporte a TLS
	// São necessários arquivos de certificado e chave privada
	certFile := "server.crt"
	keyFile := "server.key"

	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("Olá, mundo seguro!"))
	})

	// Iniciar servidor HTTPS
	log.Fatal(http.ListenAndServeTLS(":8443", certFile, keyFile, nil))
}

A interação ocorre em várias etapas (Handshake):

  1. ClientHello: O cliente envia uma lista de versões TLS suportadas, conjuntos de cifras e outros parâmetros.
  2. ServerHello: O servidor escolhe os parâmetros ótimos entre os propostos pelo cliente.
  3. Certificate: O servidor envia seu certificado.
  4. ServerKeyExchange (opcional): Troca de chaves de criptografia.
  5. CertificateRequest (opcional): O servidor pode solicitar um certificado do cliente para autenticação mútua.
  6. ServerHelloDone: O servidor indica que terminou sua parte do Handshake.
  7. Certificate (opcional): O cliente envia seu certificado.
  8. ClientKeyExchange: O cliente envia um segredo pré- mestre criptografado com a chave pública do servidor, que é usado para gerar as chaves de sessão.
  9. CertificateVerify (opcional): O cliente verifica a assinatura do servidor.
  10. ChangeCipherSpec: O cliente e o servidor indicam que irão usar as chaves de sessão negociadas.
  11. Finished: Finalização do Handshake com a troca de mensagens criptografadas com as novas chaves, para verificar o sucesso do procedimento.

O TLS fornece um nível confiável de segurança para comunicações de rede, sendo um padrão para HTTPS e outros protocolos que requerem proteção de dados.