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".
Após ler este artigo, você será capaz de:
Conteúdo relacionado
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
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.
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.
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.
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, 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:
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?