Geração de Chave

Introdução

No Sistema são utilizadas chaves ECDSA para a assinatura dos JWTs de autenticação. Chaves ECDSA são utilizadas por sua segurança e leveza em relação às chaves RSA tradicionais. Em comparação, uma chave ECDSA de 256 bits é tão segura quanto uma chave RSA de 3084 bits.

Uma chave ECDSA é formada por duas partes: a Chave Privada e a Chave Pública. Cada uma delas tem uma função definida:

  • Chave Privada: A chave privada será utilizada para a assinatura dos seus JWTs, antes de enviá-los ao servidor de autenticação.
  • Chave Pública: A chave pública será utilizada pelo servidor de autenticação para que a origem do token seja verificada como legítima.

Em hipótese alguma exponha sua Chave Privada. Ao expô-la, estará permitindo que um atacante se passe por você e realize ações em seu nome no servidor.

Para a geração de um par de chaves, algum toolkit de criptografia deverá estar instalado na sua máquina. No decorrer deste tutorial, utilizaremos o OpenSSL, uma alternativa Open Source para a geração de chaves criptográficas.

Instalando o OpenSSL

Linux:

O OpenSSL é uma ferramenta nativa na maior parte das distribuições Linux. Não há necessidade de instalá-lo. Utilize o OpenSSL através do comando openssl no terminal.

MacOS:

Na maior parte dos casos, o OpenSSL estará instalado. Caso o comando openssl não exista, instale-o através do Homebrew da seguinte forma:

  1. Com o Homebrew instalado, em um terminal, digite o comando abaixo
brew install openssl@1.1
  1. Após a instalação, utilize o OpenSSL através do comando openssl no terminal.

Windows:

O pacote OpenSSL é uma das dependências da instalação do git para Windows. Após instalar, utilize o OpenSSL através do comando openssl no terminal git.

Gerando chaves ECDSA

Para gerar uma chave privada ECDSA, execute o seguinte comando no OpenSSL:

openssl ecparam -name secp256k1 -genkey -noout -out priv-key.pem

Entendendo o comando:

  • ecparam: Geração de chave por curva elíptica com parâmetros
  • name secp256k1: Nome do algoritmo de geração de chave
  • genkey: Parâmetro utilizado para gerar uma chave
  • noout: Parâmetro utilizado para que o OpenSSL não adicione uma versão codificada dos parâmetros de geração da chave no arquivo .pem
  • out priv-key.pem: Parâmetro utilizado para definir o nome do arquivo onde a chave será salva

Você pode verificar a sua chave recém-criada utilizando o comando cat no arquivo priv-key.pem. A chave deverá se parecer com a chave abaixo:

-----BEGIN EC PRIVATE KEY-----
MHQCAQEEID+WM4WfWmD9ORXXRz5jUjQerHro6CTpeG9M0fDTEAT3oAcGBSuBBAAK
oUQDQgAEalizNT3hu7qU56JQ4L1goFrRL11/c7gvTVBWYvXY52UQgFPUDgIrBtAl
iaRmnJZFmJim7FTzqG8ZZ5eQdEzu2Q==
-----END EC PRIVATE KEY-----

Para derivar a chave pública da chave privada utilizando o OpenSSL, execute:

openssl ec -in priv-key.pem -pubout > pub-key.pem

Entendendo o comando:

  • ec: Análise de curva elíptica
  • -in priv-key.pem: Parâmetro utilizado para indicar a fonte da chave a ser analisada
  • -pubout: Parâmetro utilizado para indicar que a saída deverá ser uma chave pública
  • pub-key.pem: Direcionamento da saída para o arquivo pub-key.pem

Você pode verificar a sua chave recém-criada utilizando o comando cat no arquivo pub-key.pem. A chave pública gerada deverá se parecer com:

-----BEGIN PUBLIC KEY-----
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEalizNT3hu7qU56JQ4L1goFrRL11/c7gv
TVBWYvXY52UQgFPUDgIrBtAliaRmnJZFmJim7FTzqG8ZZ5eQdEzu2Q==
-----END PUBLIC KEY-----

Considerações Finais

A geração e o gerenciamento adequado das chaves ECDSA são fundamentais para a segurança do sistema. Mantenha suas chaves privadas em local seguro e utilize apenas a chave pública para configuração no Sistema.

Etiquetas

ECDSA Criptografia Seguranca JWT ChavesDeAcesso

Leia Também