O que é uma chave de sessão? Chaves de sessão e handshakes TLS

O protocolo TLS (historicamente conhecido como "SSL") utiliza tanto a chave assimétrica/pública quanto a criptografia simétrica e novas chaves para criptografia simétrica devem ser geradas para cada sessão de comunicação. Essas chaves são chamadas de "chaves de sessão".

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Saber o que é uma sessão, o que é uma chave e quando novas chaves de sessão devem ser criadas
  • Entender a diferença entre criptografia assimétrica e simétrica
  • Saber como o protocolo de criptografia SSL/TLS usa os dois tipos de criptografia

Conteúdo relacionado


Quer saber mais?

Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.

Consulte a política de privacidade da Cloudflare para saber como coletamos e processamos seus dados pessoais.

Copiar o link do artigo

O que é uma chave de sessão?

Uma chave de sessão é qualquer chave de criptografia simétrica usada para criptografar apenas uma sessão de comunicação.Em outras palavras, é uma chave temporária que é usada apenas uma vez, durante um período de tempo, para criptografar e descriptografar dados entre duas partes; as conversas futuras entre as duas partes seriam criptografadas com chaves de sessão diferentes.Uma chave de sessão é como uma senha que alguém redefine toda vez que faz login.

Em TLS (historicamente conhecido como "SSL" ), as duas partes comunicantes (o cliente e o servidor) geram chaves de sessão no início de qualquer sessão de comunicação, durante o handshake TLS. A RFC na TLS oficial não chama essas chaves de "chaves de sessão", mas funcionalmente é exatamente isso que elas são.

O que é uma sessão?

Uma sessão é essencialmente uma conversa. Uma sessão ocorre em uma rede e começa quando dois dispositivos se reconhecem e abrem uma conexão virtual. Ela termina quando os dois dispositivos obtêm as informações de que precisam um do outro e enviam mensagens "close_notify", encerrando a conexão, como se duas pessoas estivessem trocando mensagens de texto e encerram a conversa dizendo: "Falo com você mais tarde". A conexão também pode expirar devido à inatividade, como se duas pessoas estivessem enviando mensagens de texto e simplesmente parassem de responder uma à outra.

Chaves de sessão - uma nova chave para cada três sessões

Uma sessão pode ser um período de tempo definido ou pode durar enquanto as duas partes estiverem se comunicando. No primeiro caso, a sessão expirará após um determinado período de tempo; no contexto da criptografia TLS, os dois dispositivos teriam então que trocar informações e gerar novas chaves de sessão para reabrir a conexão.

O que é uma chave criptográfica?

Em criptografia, é comum falar sobre chaves (geralmente um dado pequeno) para se referir a entradas especiais de um algoritmo de criptografia. As chaves mais comuns são aquelas usadas para criptografia de dados; no entanto, existem outros tipos de chaves para finalidades diferentes.

Um algoritmo de criptografia de dados usa uma chave (secreta) para converter uma mensagem em um texto cifrado — ou seja, uma versão embaralhada e ilegível da mensagem. É possível recuperar a mensagem original do texto criptografado usando uma chave de descriptografia.

Em um algoritmo de criptografia simétrica, as chaves de criptografia e de descriptografia são as mesmas. Assim, qualquer pessoa que possua a chave secreta pode criptografar e descriptografar dados e é por isso que o termo chaves simétricas é frequentemente usado.

Ao contrário, em um algoritmo de criptografia assimétrica, também conhecida como criptografia de chave pública, existem duas chaves: uma é pública e só pode ser usada para criptografar dados, enquanto a outra permanece privada e é usada apenas para descriptografar textos cifrados.

O HTTPS usa criptografia simétrica ou assimétrica?

O HTTPS, que é o HTTP combinado com o protocolo TLS, utiliza ambos os tipos de criptografia.Todas as comunicações sobre TLS começam com um handshke TLS.A criptografia assimétrica é crucial para que o handshake TLS funcione.

Durante o curso de um handshake TLS, os dois dispositivos de comunicação estabelecerão as chaves de sessão e elas serão usadas para criptografia simétrica pelo resto da sessão (a menos que os dispositivos escolham atualizar suas chaves durante a sessão). Normalmente, os dois dispositivos de comunicação são um cliente, ou um dispositivo de usuário, como um notebook ou um smartphone, e um servidor, que é qualquer servidor web que hospeda um site. (Para saber mais, consulte O que é o modelo cliente-servidor?)

No handshake TLS, o cliente e o servidor também:

  • Negociam quais algoritmos de criptografia usar (fazendo isso com segurança por meio de criptografia assimétrica)
  • Autenticam a identidade do servidor em relação ao certificado TLS (usando criptografia assimétrica)

Qual é o "segredo mestre" em um handshake TLS? Como ele se relaciona com as chaves de sessão?

O segredo mestre é o resultado da combinação de uma sequência de dados aleatórios enviados pelo cliente, dados aleatórios enviados pelo servidor, e outra sequência de dados chamada de "segredo pré-mestre" através de um algoritmo. O cliente e o servidor têm, cada um, essas três mensagens, portanto, devem chegar ao mesmo resultado para o segredo mestre.

O cliente e o servidor então usam o segredo mestre para calcular várias chaves de sessão para uso apenas naquela sessão. Eles devem terminar com as mesmas chaves de sessão.

Saiba mais sobre como funciona o TLS: O que acontece em um handshake TLS?