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):
- ClientHello: O cliente envia uma lista de versões TLS suportadas, conjuntos de cifras e outros parâmetros.
- ServerHello: O servidor escolhe os parâmetros ótimos entre os propostos pelo cliente.
- Certificate: O servidor envia seu certificado.
- ServerKeyExchange (opcional): Troca de chaves de criptografia.
- CertificateRequest (opcional): O servidor pode solicitar um certificado do cliente para autenticação mútua.
- ServerHelloDone: O servidor indica que terminou sua parte do Handshake.
- Certificate (opcional): O cliente envia seu certificado.
- 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.
- CertificateVerify (opcional): O cliente verifica a assinatura do servidor.
- ChangeCipherSpec: O cliente e o servidor indicam que irão usar as chaves de sessão negociadas.
- 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.