O protocolo SSL/TLS usa chave pública e 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:
Copiar o link do artigo
Uma chave de sessão é qualquer chave de criptografia usada para criptografar simetricamente 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; futuras conversas 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 SSL/TLS, as duas partes comunicantes (o cliente e o servidor) geram 4 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 "de conclusão", 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.
Na criptografia, uma chave é uma sequência de dados usada para alterar as mensagens para que sejam criptografadas – em outras palavras, para que os dados pareçam aleatórios ou embaralhados. Uma chave também é usada para descriptografar os dados ou traduzi-los de sua forma embaralhada para sua forma original. (Consulte O que é uma chave criptográfica? para saber mais).
Na criptografia simétrica, a mesma chave, exatamente, é usada em ambos os lados de uma conversa, tanto para criptografar quanto para descriptografar. Em uma sessão que usa criptografia simétrica, várias chaves podem ser usadas, mas uma mensagem criptografada com uma chave é descriptografada com essa mesma chave.
Na criptografia assimétrica, existem duas chaves e os dados criptografados com uma chave só podem ser descriptografados com a outra chave ao contrário da criptografia simétrica, quando a mesma chave criptografa e descriptografa. Isso também é conhecido como criptografia de chave pública, porque uma das chaves é compartilhada publicamente.
O HTTPS, que é o HTTP com o protocolo de criptografia TLS, usa os dois tipos de criptografia. Todas as comunicações sobre TLS começam com um handshake TLS. A criptografia assimétrica é essencial para fazer o handshake TLS funcionar.
Durante o curso de um handshake TLS, os dois dispositivos de comunicação estabelecerão as quatro chaves de sessão, e elas serão usadas para criptografia simétrica pelo resto da 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?)
Durante um handshake TLS, tanto o cliente quanto o servidor enviam dados aleatórios um para o outro, que eles usam para fazer cálculos separadamente e, em seguida, derivar as mesmas chaves de sessão. Três tipos de dados gerados aleatoriamente são enviados de um lado para o outro:
O handshake TLS usa criptografia assimétrica para ocultar o servidor aleatoriamente dos invasores (criptografando-o com uma chave privada) ou para permitir que o servidor "assine" digitalmente uma de suas mensagens para que o cliente saiba que o servidor é quem ele afirma ser (assim como uma assinatura ajuda a verificar a identidade de alguém na vida real). O servidor criptografa alguns dados com a chave privada e o cliente usa a chave pública para descriptografá-los, provando que o servidor possui a chave correta e é legítimo.
O segredo mestre é o resultado final da combinação do aleatório do cliente, aleatório do servidor e do segredo pré-mestre por meio de um algoritmo. O cliente e o servidor têm 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 nessa sessão – 4 chaves de sessão, precisamente.
Os 4 tipos de chaves de sessão criadas em cada handshake TLS são:
A chave de gravação do cliente é a chave que o cliente usa para criptografar suas mensagens. A chave de gravação do cliente é uma chave simétrica e tanto o cliente quanto o servidor a possuem. Isso permite que o servidor descriptografe as mensagens do cliente usando a mesma chave.
A chave de gravação do servidor é como a chave de gravação do cliente, exceto no lado do servidor. Para resumir: As mensagens do cliente para o servidor são criptografadas com a chave de gravação do cliente e o servidor usa a chave de gravação do cliente para descriptografá-las. As mensagens do servidor para o cliente são criptografadas com a chave de gravação do servidor e o cliente usa a chave de gravação do servidor para descriptografá-las. (Todo esse processo é tratado pelo dispositivo cliente ou navegador; os próprios usuários não precisam fazer nada dessa criptografia ou descriptografia.)
As chaves MAC, ou código de autenticação de mensagem, são usadas para assinar digitalmente as mensagens. O servidor assina suas mensagens com a chave MAC de gravação do servidor e, quando o cliente recebe a mensagem, ele pode verificar a chave MAC usada em relação ao seu próprio registro da chave MAC do servidor para certificar-se de que é legítima. O cliente assina suas mensagens com a chave MAC de gravação do cliente.
Um conjunto de 4 chaves de sessão completamente novas é criado com cada nova sessão de comunicação e novo handshake TLS. Haverá uma chave de gravação de cliente diferente, chave de gravação de servidor e assim por diante, mas esses 4 tipos de chaves são criados todas as vezes.
Vendas
Sobre SSL/TLS
Navegação no Centro de Aprendizagem