1
resposta

Uso de chave privada no HTTPS

Na criptografia assimétrica, que é o método aplicado para cifrar no HTTPS, o cliente não possui ima chave privada ? Notando o handshake, percebo que há sim um par público/privado que é gerado a cada conexão e usado para transmitir a chave assimétrica. Então como levar isso em consideração no item que fala que somente o servidor possui uma chave privada?

1 resposta

Fala Izequiel!

Não sei se pesquei muito bem a sua dúvida mas vou tentar te ajudar!

Quando algum cliente se conecta a um servidor usando internet, essa conexão é indireta. Esse cliente envia uma "mensagem" que passa por diversos nós (outros servidores/provedores) até que realmente chegue no servidor destino. Nem sempre sabemos o caminho exato que os pacotes irão fazer e nem podemos garantir que a comunicação seja confidencial (ninguém no meio veja), integra (ninguém altere) e autentica (servidor de destino correto e não alguém se passando por esse servidor)

A cada conexão é gerada um novo par de chaves público/privado (simétrica) que é utilizado para transmitir a chave assimétrica. Um chave "cifradora de chaves" (key encryption key" ou KEK).

Mas como esse par de chaves é usada para garantir autenticidade?

Inicialmente, o servidor envia para o cliente a sua chave pública. Eventualmente ele assina algo com sua chave privada de forma a provar para o cliente que ele é realmente o "dono" da chave pública.

Mas como o cliente pode ter certeza de que a chave que ele recebeu dizendo vir do servidor destino realmente veio desse servidor destino?

Se o cliente já conhece a chave pública do servidor (tem salvo no pc associada a identidade utilizada) então ocorre normalmente, mas se não tiver, será necessário alguém de confiança para intermediar essa comunicação (como o cliente verifica a assinatura do servidor se não tem nada para comparar?). Isso é feito através do certificado digital.

O certificado digital nada mais é que:

Uma chave pública ... associada a uma identidade (nome) ... e o par assinado por alguém de confiança Existem mais de uma maneira de se fazer isso, Autoridades Certificadoras (CA), Redes de Confiança (Web of Trust), Notários, etc. O mais comum é o uso de Autoridades Certificadoras.

A grosso modo, essas autoridades são um conjunto de empresas cuja chave pública já vem embutida no software. Por exemplo firefox (pago)

Concluindo, a entrega e verificação do certificado é um processo relativamente lento quando o certificado não está em cache. Após isso é necessário confirmar a identidade do cliente (pode ser feito via certificado), mas é mais comum omitir essa parte (uso de usuário e senha diz ao site quem é aquele cliente). Após a autenticação de ambos os lados, usa-se a criptografia simétrica, bem mais rápida, para comunicação normal.

Espero ter ajudado!

Abraços meu amigo!