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:
- Com o Homebrew instalado, em um terminal, digite o comando abaixo
brew install openssl@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