Uma chave pública é a metade partilhável de um par de chaves criptográficas: pode ser distribuída livremente a qualquer pessoa, enquanto a chave privada correspondente permanece secreta. Serve para cifrar dados destinados ao dono da chave privada e para verificar assinaturas digitais que só a chave privada consegue criar. Para um programador, a ideia central é simples: a chave pública foi feita para ser pública, por isso partilhá-la ou incorporá-la numa aplicação é seguro por design, ao contrário da chave privada ou de um segredo de API, que nunca devem sair do servidor. Confundir as duas é o erro mais comum e também o mais perigoso.
Resposta rápida
Uma chave pública é a parte de um par de chaves que pode ser divulgada a qualquer pessoa sem risco. Na criptografia assimétrica, o que é cifrado com a chave pública só é decifrado com a chave privada, e uma assinatura criada com a chave privada é verificada com a chave pública, como descreve a Cloudflare. Por isso a chave pública é segura para partilhar; a chave privada é que tem de permanecer secreta.
O que é uma chave pública
Uma chave pública faz parte da criptografia assimétrica, também chamada criptografia de chave pública, em que existem sempre duas chaves ligadas entre si: uma pública e uma privada. As duas são geradas em conjunto como um par e têm uma relação matemática, mas não é possível deduzir a chave privada a partir da pública. Essa é a propriedade que torna todo o sistema útil: pode entregar a chave pública ao mundo inteiro sem revelar a privada.
A relação entre as duas é de sentido único e complementar. O que uma chave faz, só a outra do mesmo par consegue reverter. Se cifrar uma mensagem com a chave pública de alguém, apenas a chave privada dessa pessoa a decifra. Se essa pessoa assinar um dado com a chave privada, qualquer pessoa com a chave pública confirma que a assinatura é autêntica. Assim, a chave pública resolve dois problemas ao mesmo tempo: confidencialidade, ao cifrar para um destinatário, e autenticidade, ao verificar quem assinou.
Chave pública contra chave privada
A distinção prática entre as duas resume-se a quem as pode ver. A chave privada é um segredo que vive num único sítio seguro, normalmente um servidor, um módulo de hardware ou o keystore do sistema, e nunca deve ser copiada, enviada por email nem incluída no código de uma aplicação. A chave pública é o oposto: existe precisamente para ser distribuída, publicada em certificados, colocada em ficheiros de configuração ou incorporada em clientes.
Os papéis também são opostos e complementares. Na cifragem, a chave pública cifra e a privada decifra. Nas assinaturas digitais, a privada assina e a pública verifica. Repare que a chave privada aparece sempre do lado que precisa de ser protegido: é ela que decifra os dados sensíveis e é ela que prova a identidade ao assinar. A chave pública fica sempre do lado aberto. Por isso, quando ouve que uma chave foi exposta, a pergunta decisiva é qual das duas: uma chave pública exposta é normal e esperado, enquanto uma chave privada exposta é um incidente grave.
Onde os programadores encontram chaves públicas
Chaves públicas estão em quase todo o lado no desenvolvimento moderno, muitas vezes sem que se note. No HTTPS e no TLS, o certificado de um servidor contém a sua chave pública, que o navegador ou a app usa para estabelecer uma ligação segura e confirmar que fala com o servidor certo. Nos tokens JWT assinados com algoritmos como RS256 ou ES256, o servidor assina o token com a chave privada e qualquer serviço verifica a assinatura com a chave pública correspondente, o que permite validar tokens sem partilhar segredos.
Há mais exemplos do dia a dia. Na autenticação SSH, coloca a sua chave pública no servidor e mantém a privada na sua máquina. Na assinatura de aplicações Android, existe um par de chaves cujo certificado público identifica a origem da app, enquanto a chave de assinatura fica protegida. E na fixação de certificados, ou certificate pinning, uma app guarda a chave pública esperada do servidor para rejeitar ligações que não correspondam. Em todos estes casos, a chave pública é o elemento que pode ser distribuído, e a segurança depende de manter a privada em segredo.
É seguro incorporar uma chave pública numa app?
Sim, e este é o ponto que gera mais confusão. Incorporar uma chave pública dentro de uma aplicação móvel ou de um cliente é seguro por design, porque uma chave pública não concede acesso a nada por si só. Com ela, ninguém consegue decifrar dados destinados ao dono da chave privada nem forjar assinaturas em nome dele. É exatamente para isso que serve o certificate pinning: a app transporta a chave pública do servidor para a poder comparar, e não há problema em que essa chave seja legível dentro do pacote da app.
O contraste é o que importa reter. Uma chave privada, uma chave de API secreta ou um segredo de cliente nunca devem ser incorporados num app, porque qualquer pessoa consegue extraí-los de um pacote instalável e usá-los para se fazer passar pelo serviço ou aceder a dados. A regra prática é direta: se o valor é público por natureza, como uma chave pública ou um identificador de projeto, incorporá-lo é aceitável; se é secreto, tem de ficar no servidor. O erro perigoso é tratar um segredo como se fosse uma chave pública e enviá-lo dentro da app.
Chave pública e privada lado a lado
Ver as duas em paralelo esclarece qual é qual e o que cada uma pode fazer. A tabela seguinte resume as diferenças.
| Aspeto | Chave pública | Chave privada |
|---|---|---|
| Quem a pode ver | Qualquer pessoa | Apenas o dono |
| Onde vive | Certificados, apps, configuração | Servidor ou hardware seguro |
| Cifragem | Cifra os dados | Decifra os dados |
| Assinaturas | Verifica a assinatura | Cria a assinatura |
| Exposição | Normal e esperada | Incidente de segurança |
| Incorporar num app | Seguro por design | Nunca fazer |
Leia a última linha como a regra de ouro: a chave pública pode viajar dentro da app, a privada nunca.
Erros comuns a verificar
Antes de publicar, vale a pena confirmar que as chaves estão do lado certo. A lista abaixo cobre as verificações essenciais.
| Verificação | Ação | Feito? |
|---|---|---|
| Nenhuma chave privada no código | Procurar ficheiros .pem ou blocos PRIVATE KEY | [ ] |
| Segredos fora do cliente | Mover chaves de API secretas para o servidor | [ ] |
| Chave pública correta no pinning | Confirmar que fixa a chave pública, não a privada | [ ] |
| JWT verificado com chave pública | Usar a pública para validar, nunca a privada no cliente | [ ] |
| Chave de assinatura protegida | Guardar o keystore fora do repositório | [ ] |
| Rotação planeada | Ter um processo para trocar chaves comprometidas | [ ] |
A verificação que as equipas mais esquecem é a primeira: uma chave privada esquecida no código-fonte ou no pacote é a falha que transforma um sistema seguro num sistema exposto.
Onde entra a análise de segurança
Perceber a diferença entre as duas chaves é conhecimento; confirmar que a app respeita essa diferença é uma tarefa de verificação, e é aí que uma análise ajuda.
Um scanner como o PTKD.com analisa o pacote de uma app Android ou iOS e sinaliza quando um segredo que devia ficar no servidor, como uma chave privada ou uma chave de API secreta, foi incorporado no cliente, mapeando o achado para o OWASP MASVS. Para ser claro quanto ao limite: encontrar uma chave pública dentro da app não é um problema e não deve ser tratado como tal, porque é seguro por design. O que o scanner procura é o oposto, o segredo que escapou para o lado público, e por isso uma análise é o momento certo para confirmar que só a chave pública viajou dentro da app.
O que reter
- Uma chave pública é a metade partilhável de um par de chaves; a chave privada correspondente é a metade secreta, e não é possível deduzir a privada a partir da pública.
- O que é cifrado com a chave pública só se decifra com a privada, e uma assinatura feita com a privada verifica-se com a pública, o que garante confidencialidade e autenticidade.
- Chaves públicas aparecem no TLS, nos JWT assinados, no SSH, na assinatura de apps e no certificate pinning; em todos, a segurança vem de manter a privada em segredo.
- Incorporar uma chave pública num app é seguro por design, mas uma chave privada ou um segredo de API nunca devem ser incluídos no cliente.
- Confirme sempre que nenhum segredo escapou para o lado público, e use uma ferramenta como o PTKD.com para verificar que só a chave pública viajou dentro da app.




